| Index: chrome/browser/extensions/extension_install_ui_default.cc
|
| diff --git a/chrome/browser/extensions/extension_install_ui_default.cc b/chrome/browser/extensions/extension_install_ui_default.cc
|
| deleted file mode 100644
|
| index 6fe870b6e8b374727938cc3788caf3179793f9e8..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/extensions/extension_install_ui_default.cc
|
| +++ /dev/null
|
| @@ -1,271 +0,0 @@
|
| -// Copyright (c) 2012 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/extension_install_ui_default.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/command_line.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/browser/api/infobars/confirm_infobar_delegate.h"
|
| -#include "chrome/browser/api/infobars/infobar_service.h"
|
| -#include "chrome/browser/extensions/app_launcher.h"
|
| -#include "chrome/browser/extensions/extension_install_prompt.h"
|
| -#include "chrome/browser/extensions/theme_installed_infobar_delegate.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| -#include "chrome/browser/themes/theme_service.h"
|
| -#include "chrome/browser/themes/theme_service_factory.h"
|
| -#include "chrome/browser/ui/app_list/app_list_util.h"
|
| -#include "chrome/browser/ui/browser.h"
|
| -#include "chrome/browser/ui/browser_dialogs.h"
|
| -#include "chrome/browser/ui/browser_finder.h"
|
| -#include "chrome/browser/ui/browser_navigator.h"
|
| -#include "chrome/browser/ui/browser_tabstrip.h"
|
| -#include "chrome/browser/ui/browser_window.h"
|
| -#include "chrome/browser/ui/host_desktop.h"
|
| -#include "chrome/browser/ui/simple_message_box.h"
|
| -#include "chrome/browser/ui/singleton_tabs.h"
|
| -#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| -#include "chrome/browser/ui/webui/ntp/new_tab_ui.h"
|
| -#include "chrome/common/chrome_notification_types.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "chrome/common/extensions/extension.h"
|
| -#include "chrome/common/url_constants.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| -#include "content/public/browser/notification_service.h"
|
| -#include "content/public/browser/web_contents.h"
|
| -#include "grit/generated_resources.h"
|
| -#include "grit/theme_resources.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/base/resource/resource_bundle.h"
|
| -
|
| -#if defined(USE_ASH)
|
| -#include "ash/shell.h"
|
| -#endif
|
| -
|
| -using content::BrowserThread;
|
| -using content::WebContents;
|
| -using extensions::Extension;
|
| -
|
| -namespace {
|
| -
|
| -bool disable_failure_ui_for_tests = false;
|
| -
|
| -// Helper class to put up an infobar when installation fails.
|
| -class ErrorInfobarDelegate : public ConfirmInfoBarDelegate {
|
| - public:
|
| - // Creates an error delegate and adds it to |infobar_service|.
|
| - static void Create(InfoBarService* infobar_service,
|
| - Browser* browser,
|
| - const extensions::CrxInstallerError& error);
|
| -
|
| - private:
|
| - ErrorInfobarDelegate(InfoBarService* infobar_service,
|
| - Browser* browser,
|
| - const extensions::CrxInstallerError& error)
|
| - : ConfirmInfoBarDelegate(infobar_service),
|
| - browser_(browser),
|
| - error_(error) {
|
| - }
|
| -
|
| - virtual string16 GetMessageText() const OVERRIDE {
|
| - return error_.message();
|
| - }
|
| -
|
| - virtual int GetButtons() const OVERRIDE {
|
| - return BUTTON_OK;
|
| - }
|
| -
|
| - virtual string16 GetLinkText() const OVERRIDE {
|
| - return error_.type() == extensions::CrxInstallerError::ERROR_OFF_STORE ?
|
| - l10n_util::GetStringUTF16(IDS_LEARN_MORE) : ASCIIToUTF16("");
|
| - }
|
| -
|
| - virtual bool LinkClicked(WindowOpenDisposition disposition) OVERRIDE {
|
| - chrome::NavigateParams params(
|
| - browser_,
|
| - GURL("http://support.google.com/chrome_webstore/?p=crx_warning"),
|
| - content::PAGE_TRANSITION_LINK);
|
| - params.disposition = NEW_FOREGROUND_TAB;
|
| - chrome::Navigate(¶ms);
|
| - return false;
|
| - }
|
| -
|
| - Browser* browser_;
|
| - extensions::CrxInstallerError error_;
|
| -};
|
| -
|
| -// static
|
| -void ErrorInfobarDelegate::Create(InfoBarService* infobar_service,
|
| - Browser* browser,
|
| - const extensions::CrxInstallerError& error) {
|
| - infobar_service->AddInfoBar(scoped_ptr<InfoBarDelegate>(
|
| - new ErrorInfobarDelegate(infobar_service, browser, error)));
|
| -}
|
| -
|
| -void OnAppLauncherEnabledCompleted(const extensions::Extension* extension,
|
| - Browser* browser,
|
| - SkBitmap* icon,
|
| - bool use_bubble,
|
| - bool use_launcher) {
|
| -#if defined(ENABLE_APP_LIST)
|
| - if (use_launcher) {
|
| - chrome::ShowAppList(browser->profile());
|
| -
|
| - content::NotificationService::current()->Notify(
|
| - chrome::NOTIFICATION_APP_INSTALLED_TO_APPLIST,
|
| - content::Source<Profile>(browser->profile()),
|
| - content::Details<const std::string>(&extension->id()));
|
| - return;
|
| - }
|
| -#endif
|
| -
|
| - if (use_bubble) {
|
| - chrome::ShowExtensionInstalledBubble(extension, browser, *icon);
|
| - return;
|
| - }
|
| -
|
| - ExtensionInstallUI::OpenAppInstalledUI(browser, extension->id());
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -ExtensionInstallUIDefault::ExtensionInstallUIDefault(Profile* profile)
|
| - : skip_post_install_ui_(false),
|
| - previous_using_native_theme_(false),
|
| - use_app_installed_bubble_(false) {
|
| - profile_ = profile;
|
| -
|
| - // |profile_| can be NULL during tests.
|
| - if (profile_) {
|
| - // Remember the current theme in case the user presses undo.
|
| - const Extension* previous_theme =
|
| - ThemeServiceFactory::GetThemeForProfile(profile);
|
| - if (previous_theme)
|
| - previous_theme_id_ = previous_theme->id();
|
| - previous_using_native_theme_ =
|
| - ThemeServiceFactory::GetForProfile(profile)->UsingNativeTheme();
|
| - }
|
| -}
|
| -
|
| -ExtensionInstallUIDefault::~ExtensionInstallUIDefault() {
|
| -}
|
| -
|
| -void ExtensionInstallUIDefault::OnInstallSuccess(const Extension* extension,
|
| - SkBitmap* icon) {
|
| - if (skip_post_install_ui_)
|
| - return;
|
| -
|
| - if (!profile_) {
|
| - // TODO(zelidrag): Figure out what exact conditions cause crash
|
| - // http://crbug.com/159437 and write browser test to cover it.
|
| - NOTREACHED();
|
| - return;
|
| - }
|
| -
|
| - if (extension->is_theme()) {
|
| - ThemeInstalledInfoBarDelegate::Create(
|
| - extension, profile_, previous_theme_id_, previous_using_native_theme_);
|
| - return;
|
| - }
|
| -
|
| - // Extensions aren't enabled by default in incognito so we confirm
|
| - // the install in a normal window.
|
| - Profile* current_profile = profile_->GetOriginalProfile();
|
| - Browser* browser =
|
| - chrome::FindOrCreateTabbedBrowser(current_profile,
|
| - chrome::GetActiveDesktop());
|
| - if (browser->tab_strip_model()->count() == 0)
|
| - chrome::AddBlankTabAt(browser, -1, true);
|
| - browser->window()->Show();
|
| -
|
| - if (extension->is_app()) {
|
| - bool use_bubble = false;
|
| -
|
| -#if defined(TOOLKIT_VIEWS) || defined(OS_MACOSX)
|
| - CommandLine* cmdline = CommandLine::ForCurrentProcess();
|
| - use_bubble = (use_app_installed_bubble_ ||
|
| - cmdline->HasSwitch(switches::kAppsNewInstallBubble));
|
| -#endif
|
| -
|
| - extensions::UpdateIsAppLauncherEnabled(
|
| - base::Bind(&OnAppLauncherEnabledCompleted, extension, browser, icon,
|
| - use_bubble));
|
| - return;
|
| - }
|
| -
|
| - chrome::ShowExtensionInstalledBubble(extension, browser, *icon);
|
| -}
|
| -
|
| -void ExtensionInstallUIDefault::OnInstallFailure(
|
| - const extensions::CrxInstallerError& error) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - if (disable_failure_ui_for_tests || skip_post_install_ui_)
|
| - return;
|
| -
|
| - Browser* browser = chrome::FindLastActiveWithProfile(profile_,
|
| - chrome::GetActiveDesktop());
|
| - WebContents* web_contents =
|
| - browser->tab_strip_model()->GetActiveWebContents();
|
| - if (!web_contents)
|
| - return;
|
| - ErrorInfobarDelegate::Create(InfoBarService::FromWebContents(web_contents),
|
| - browser, error);
|
| -}
|
| -
|
| -void ExtensionInstallUIDefault::SetSkipPostInstallUI(bool skip_ui) {
|
| - skip_post_install_ui_ = skip_ui;
|
| -}
|
| -
|
| -void ExtensionInstallUIDefault::SetUseAppInstalledBubble(bool use_bubble) {
|
| - use_app_installed_bubble_ = use_bubble;
|
| -}
|
| -
|
| -// static
|
| -ExtensionInstallUI* ExtensionInstallUI::Create(Profile* profile) {
|
| - return new ExtensionInstallUIDefault(profile);
|
| -}
|
| -
|
| -// static
|
| -void ExtensionInstallUI::OpenAppInstalledUI(Browser* browser,
|
| - const std::string& app_id) {
|
| -#if defined(OS_CHROMEOS)
|
| - chrome::ShowAppList(browser->profile());
|
| -
|
| - content::NotificationService::current()->Notify(
|
| - chrome::NOTIFICATION_APP_INSTALLED_TO_APPLIST,
|
| - content::Source<Profile>(browser->profile()),
|
| - content::Details<const std::string>(&app_id));
|
| -#else
|
| - chrome::NavigateParams params(chrome::GetSingletonTabNavigateParams(
|
| - browser, GURL(chrome::kChromeUINewTabURL)));
|
| - chrome::Navigate(¶ms);
|
| -
|
| - content::NotificationService::current()->Notify(
|
| - chrome::NOTIFICATION_APP_INSTALLED_TO_NTP,
|
| - content::Source<WebContents>(params.target_contents),
|
| - content::Details<const std::string>(&app_id));
|
| -#endif
|
| -}
|
| -
|
| -// static
|
| -void ExtensionInstallUI::DisableFailureUIForTests() {
|
| - disable_failure_ui_for_tests = true;
|
| -}
|
| -
|
| -// static
|
| -ExtensionInstallPrompt* ExtensionInstallUI::CreateInstallPromptWithBrowser(
|
| - Browser* browser) {
|
| - content::WebContents* web_contents = NULL;
|
| - if (browser)
|
| - web_contents = browser->tab_strip_model()->GetActiveWebContents();
|
| - return new ExtensionInstallPrompt(web_contents);
|
| -}
|
| -
|
| -// static
|
| -ExtensionInstallPrompt* ExtensionInstallUI::CreateInstallPromptWithProfile(
|
| - Profile* profile) {
|
| - Browser* browser = chrome::FindLastActiveWithProfile(profile,
|
| - chrome::GetActiveDesktop());
|
| - return CreateInstallPromptWithBrowser(browser);
|
| -}
|
|
|