| Index: chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
|
| diff --git a/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc b/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
|
| index 7e06ba942d10ee8553cb9ff1aa9387569e9f62b0..b51ff41d68c62e25942cb3bece0a2839fdae1bc2 100644
|
| --- a/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
|
| +++ b/chrome/browser/ui/views/extensions/extension_installed_bubble_view.cc
|
| @@ -9,8 +9,6 @@
|
|
|
| #include "base/i18n/rtl.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| -#include "chrome/browser/chrome_notification_types.h"
|
| -#include "chrome/browser/extensions/api/commands/command_service.h"
|
| #include "chrome/browser/extensions/extension_action.h"
|
| #include "chrome/browser/extensions/extension_action_manager.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| @@ -28,7 +26,6 @@
|
| #include "chrome/browser/ui/views/toolbar/toolbar_action_view.h"
|
| #include "chrome/browser/ui/views/toolbar/toolbar_view.h"
|
| #include "chrome/browser/ui/views/toolbar/wrench_toolbar_button.h"
|
| -#include "chrome/common/extensions/api/omnibox/omnibox_handler.h"
|
| #include "chrome/common/extensions/sync_helper.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "chrome/grit/chromium_strings.h"
|
| @@ -89,10 +86,8 @@ class InstalledBubbleContent : public views::View,
|
| public views::ButtonListener,
|
| public views::LinkListener {
|
| public:
|
| - InstalledBubbleContent(Browser* browser,
|
| - const Extension* extension,
|
| - ExtensionInstalledBubble::BubbleType type,
|
| - const SkBitmap* icon);
|
| + InstalledBubbleContent(const ExtensionInstalledBubble& bubble,
|
| + Browser* browser);
|
|
|
| // Overridden from views::ButtonListener.
|
| void ButtonPressed(views::Button* sender, const ui::Event& event) override;
|
| @@ -109,9 +104,6 @@ class InstalledBubbleContent : public views::View,
|
| SIGN_IN_PROMO = 1 << 3,
|
| };
|
|
|
| - bool GetKeybinding(extensions::Command* command);
|
| - base::string16 GetHowToUseDescription(const base::string16& key);
|
| -
|
| // Layout the signin promo at coordinates |offset_x| and |offset_y|. Returns
|
| // the height (in pixels) of the promo UI.
|
| int LayoutSigninPromo(int offset_x, int offset_y);
|
| @@ -124,9 +116,6 @@ class InstalledBubbleContent : public views::View,
|
| // The browser we're associated with.
|
| Browser* browser_;
|
|
|
| - // The id of the extension just installed.
|
| - const std::string extension_id_;
|
| -
|
| // The string that contains the link text at the beginning of the sign-in
|
| // promo text.
|
| base::string16 signin_promo_link_text_;
|
| @@ -138,9 +127,6 @@ class InstalledBubbleContent : public views::View,
|
| // whited out so the link can be drawn in its place.
|
| ScopedVector<gfx::RenderText> sign_in_promo_lines_;
|
|
|
| - // The type of the bubble to show (Browser Action, Omnibox keyword, etc).
|
| - ExtensionInstalledBubble::BubbleType type_;
|
| -
|
| // A bitmask containing the various flavors of bubble sections to show.
|
| int flavors_;
|
|
|
| @@ -159,13 +145,9 @@ class InstalledBubbleContent : public views::View,
|
| };
|
|
|
| InstalledBubbleContent::InstalledBubbleContent(
|
| - Browser* browser,
|
| - const Extension* extension,
|
| - ExtensionInstalledBubble::BubbleType type,
|
| - const SkBitmap* icon)
|
| + const ExtensionInstalledBubble& bubble,
|
| + Browser* browser)
|
| : browser_(browser),
|
| - extension_id_(extension->id()),
|
| - type_(type),
|
| flavors_(NONE),
|
| height_of_signin_promo_(0u),
|
| how_to_use_(NULL),
|
| @@ -189,23 +171,18 @@ InstalledBubbleContent::InstalledBubbleContent(
|
| // or a link to configure the keybinding shortcut (if one exists).
|
| // Extra info can include a promo for signing into sync.
|
|
|
| - // First figure out the keybinding situation.
|
| - extensions::Command command;
|
| - bool has_keybinding = GetKeybinding(&command);
|
| - base::string16 key; // Keyboard shortcut or keyword to display in bubble.
|
| -
|
| + const Extension* extension = bubble.extension();
|
| if (extensions::sync_helper::IsSyncableExtension(extension) &&
|
| SyncPromoUI::ShouldShowSyncPromo(browser->profile()))
|
| flavors_ |= SIGN_IN_PROMO;
|
|
|
| // Determine the bubble flavor we want, based on the extension type.
|
| - switch (type_) {
|
| + switch (bubble.type()) {
|
| case ExtensionInstalledBubble::BROWSER_ACTION:
|
| - case ExtensionInstalledBubble::PAGE_ACTION: {
|
| + case ExtensionInstalledBubble::PAGE_ACTION:
|
| flavors_ |= HOW_TO_USE;
|
| - if (has_keybinding) {
|
| + if (bubble.has_command_keybinding()) {
|
| flavors_ |= SHOW_KEYBINDING;
|
| - key = command.accelerator().GetShortcutText();
|
| } else {
|
| // The How-To-Use text makes the bubble seem a little crowded when the
|
| // extension has a keybinding, so the How-To-Manage text is not shown
|
| @@ -213,36 +190,32 @@ InstalledBubbleContent::InstalledBubbleContent(
|
| flavors_ |= HOW_TO_MANAGE;
|
| }
|
| break;
|
| - }
|
| - case ExtensionInstalledBubble::OMNIBOX_KEYWORD: {
|
| + case ExtensionInstalledBubble::OMNIBOX_KEYWORD:
|
| flavors_ |= HOW_TO_USE | HOW_TO_MANAGE;
|
| - key = base::UTF8ToUTF16(extensions::OmniboxInfo::GetKeyword(extension));
|
| break;
|
| - }
|
| - case ExtensionInstalledBubble::GENERIC: {
|
| + case ExtensionInstalledBubble::GENERIC:
|
| break;
|
| - }
|
| - default: {
|
| + default:
|
| // When adding a new bubble type, the flavor needs to be set.
|
| static_assert(ExtensionInstalledBubble::GENERIC == 3,
|
| "kBubbleType enum has changed, this switch statement must "
|
| "be updateed");
|
| break;
|
| - }
|
| }
|
|
|
| ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
| const gfx::FontList& font_list =
|
| rb.GetFontList(ui::ResourceBundle::BaseFont);
|
|
|
| + const SkBitmap& icon = bubble.icon();
|
| // Add the icon (for all flavors).
|
| // Scale down to 43x43, but allow smaller icons (don't scale up).
|
| - gfx::Size size(icon->width(), icon->height());
|
| + gfx::Size size(icon.width(), icon.height());
|
| if (size.width() > kIconSize || size.height() > kIconSize)
|
| size = gfx::Size(kIconSize, kIconSize);
|
| icon_ = new views::ImageView();
|
| icon_->SetImageSize(size);
|
| - icon_->SetImage(gfx::ImageSkia::CreateFrom1xBitmap(*icon));
|
| + icon_->SetImage(gfx::ImageSkia::CreateFrom1xBitmap(icon));
|
| AddChildView(icon_);
|
|
|
| // Add the heading (for all flavors).
|
| @@ -256,7 +229,7 @@ InstalledBubbleContent::InstalledBubbleContent(
|
| AddChildView(heading_);
|
|
|
| if (flavors_ & HOW_TO_USE) {
|
| - how_to_use_ = new views::Label(GetHowToUseDescription(key));
|
| + how_to_use_ = new views::Label(bubble.GetHowToUseDescription());
|
| how_to_use_->SetFontList(font_list);
|
| how_to_use_->SetMultiLine(true);
|
| how_to_use_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| @@ -326,58 +299,6 @@ void InstalledBubbleContent::LinkClicked(views::Link* source, int event_flags) {
|
| chrome::Navigate(¶ms);
|
| }
|
|
|
| -bool InstalledBubbleContent::GetKeybinding(extensions::Command* command) {
|
| - extensions::CommandService* command_service =
|
| - extensions::CommandService::Get(browser_->profile());
|
| - if (type_ == ExtensionInstalledBubble::BROWSER_ACTION) {
|
| - return command_service->GetBrowserActionCommand(
|
| - extension_id_,
|
| - extensions::CommandService::ACTIVE,
|
| - command,
|
| - NULL);
|
| - } else if (type_ == ExtensionInstalledBubble::PAGE_ACTION) {
|
| - return command_service->GetPageActionCommand(
|
| - extension_id_,
|
| - extensions::CommandService::ACTIVE,
|
| - command,
|
| - NULL);
|
| - } else {
|
| - return false;
|
| - }
|
| -}
|
| -
|
| -base::string16 InstalledBubbleContent::GetHowToUseDescription(
|
| - const base::string16& key) {
|
| - switch (type_) {
|
| - case ExtensionInstalledBubble::BROWSER_ACTION:
|
| - if (!key.empty()) {
|
| - return l10n_util::GetStringFUTF16(
|
| - IDS_EXTENSION_INSTALLED_BROWSER_ACTION_INFO_WITH_SHORTCUT, key);
|
| - } else {
|
| - return l10n_util::GetStringUTF16(
|
| - IDS_EXTENSION_INSTALLED_BROWSER_ACTION_INFO);
|
| - }
|
| - break;
|
| - case ExtensionInstalledBubble::PAGE_ACTION:
|
| - if (!key.empty()) {
|
| - return l10n_util::GetStringFUTF16(
|
| - IDS_EXTENSION_INSTALLED_PAGE_ACTION_INFO_WITH_SHORTCUT, key);
|
| - } else {
|
| - return l10n_util::GetStringUTF16(
|
| - IDS_EXTENSION_INSTALLED_PAGE_ACTION_INFO);
|
| - }
|
| - break;
|
| - case ExtensionInstalledBubble::OMNIBOX_KEYWORD:
|
| - return l10n_util::GetStringFUTF16(
|
| - IDS_EXTENSION_INSTALLED_OMNIBOX_KEYWORD_INFO, key);
|
| - break;
|
| - default:
|
| - NOTREACHED();
|
| - break;
|
| - }
|
| - return base::string16();
|
| -}
|
| -
|
| int InstalledBubbleContent::LayoutSigninPromo(int offset_x, int offset_y) {
|
| sign_in_promo_lines_.clear();
|
| int height = 0;
|
| @@ -589,9 +510,7 @@ bool ExtensionInstalledBubbleView::MaybeShowNow() {
|
| views::BubbleBorder::TOP_LEFT :
|
| views::BubbleBorder::TOP_RIGHT);
|
| SetLayoutManager(new views::FillLayout());
|
| - AddChildView(new InstalledBubbleContent(
|
| - bubble_.browser(), bubble_.extension(), bubble_.type(),
|
| - &bubble_.icon()));
|
| + AddChildView(new InstalledBubbleContent(bubble_, bubble_.browser()));
|
|
|
| views::BubbleDelegateView::CreateBubble(this)->Show();
|
|
|
|
|