| Index: chrome/browser/extensions/webstore_reinstaller.cc
|
| diff --git a/chrome/browser/extensions/webstore_reinstaller.cc b/chrome/browser/extensions/webstore_reinstaller.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..340fc2df684560b1e8f2746070c4dbdc11ec066a
|
| --- /dev/null
|
| +++ b/chrome/browser/extensions/webstore_reinstaller.cc
|
| @@ -0,0 +1,106 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chrome/browser/extensions/webstore_reinstaller.h"
|
| +
|
| +#include "base/memory/ref_counted.h"
|
| +#include "chrome/browser/extensions/extension_install_prompt.h"
|
| +#include "chrome/browser/extensions/extension_service.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| +#include "content/public/browser/web_contents.h"
|
| +#include "extensions/browser/extension_system.h"
|
| +
|
| +namespace extensions {
|
| +
|
| +namespace {
|
| +const char kCouldNotUninstallExtension[] = "Failed to uninstall the extension.";
|
| +const char kTabClosed[] = "Tab was closed.";
|
| +}
|
| +
|
| +WebstoreReinstaller::WebstoreReinstaller(
|
| + content::WebContents* web_contents,
|
| + const std::string& extension_id,
|
| + const WebstoreStandaloneInstaller::Callback& callback)
|
| + : WebstoreStandaloneInstaller(
|
| + extension_id,
|
| + Profile::FromBrowserContext(web_contents->GetBrowserContext()),
|
| + callback),
|
| + content::WebContentsObserver(web_contents) {
|
| +}
|
| +
|
| +WebstoreReinstaller::~WebstoreReinstaller() {
|
| +}
|
| +
|
| +void WebstoreReinstaller::BeginReinstall() {
|
| + WebstoreStandaloneInstaller::BeginInstall();
|
| +}
|
| +
|
| +bool WebstoreReinstaller::CheckRequestorAlive() const {
|
| + return web_contents() != NULL;
|
| +}
|
| +
|
| +const GURL& WebstoreReinstaller::GetRequestorURL() const {
|
| + return GURL::EmptyGURL();
|
| +}
|
| +
|
| +scoped_refptr<ExtensionInstallPrompt::Prompt>
|
| +WebstoreReinstaller::CreateInstallPrompt() const {
|
| + scoped_refptr<ExtensionInstallPrompt::Prompt> prompt(
|
| + new ExtensionInstallPrompt::Prompt(
|
| + ExtensionInstallPrompt::REPAIR_PROMPT));
|
| + prompt->SetWebstoreData(localized_user_count(),
|
| + show_user_count(),
|
| + average_rating(),
|
| + rating_count());
|
| + return prompt;
|
| +}
|
| +
|
| +bool WebstoreReinstaller::ShouldShowPostInstallUI() const {
|
| + return false;
|
| +}
|
| +
|
| +bool WebstoreReinstaller::ShouldShowAppInstalledBubble() const {
|
| + return false;
|
| +}
|
| +
|
| +content::WebContents* WebstoreReinstaller::GetWebContents() const {
|
| + return web_contents();
|
| +}
|
| +
|
| +bool WebstoreReinstaller::CheckInlineInstallPermitted(
|
| + const base::DictionaryValue& webstore_data,
|
| + std::string* error) const {
|
| + return true;
|
| +}
|
| +
|
| +bool WebstoreReinstaller::CheckRequestorPermitted(
|
| + const base::DictionaryValue& webstore_data,
|
| + std::string* error) const {
|
| + return true;
|
| +}
|
| +
|
| +void WebstoreReinstaller::WebContentsDestroyed() {
|
| + // Run the callback now, because AbortInstall() doesn't do it.
|
| + RunCallback(false, kTabClosed, webstore_install::ABORTED);
|
| + AbortInstall();
|
| +}
|
| +
|
| +void WebstoreReinstaller::InstallUIProceed() {
|
| + if (!ExtensionSystem::Get(profile())->extension_service()->UninstallExtension(
|
| + id(),
|
| + UNINSTALL_REASON_REINSTALL,
|
| + base::Bind(&WebstoreReinstaller::OnDeletionDone, this),
|
| + NULL)) {
|
| + // Run the callback now, because AbortInstall() doesn't do it.
|
| + RunCallback(
|
| + false, kCouldNotUninstallExtension, webstore_install::OTHER_ERROR);
|
| + AbortInstall();
|
| + }
|
| +}
|
| +
|
| +void WebstoreReinstaller::OnDeletionDone() {
|
| + WebstoreStandaloneInstaller::InstallUIProceed();
|
| +}
|
| +
|
| +} // namespace extensions
|
|
|