Index: chrome/browser/ui/views/toolbar/chevron_menu_button.cc |
diff --git a/chrome/browser/ui/views/toolbar/chevron_menu_button.cc b/chrome/browser/ui/views/toolbar/chevron_menu_button.cc |
index 207bcf6b7a24f9a70391bba6ee8d8203265e45de..5e7db13f264029b7bdeefcae814deb28e5cd7122 100644 |
--- a/chrome/browser/ui/views/toolbar/chevron_menu_button.cc |
+++ b/chrome/browser/ui/views/toolbar/chevron_menu_button.cc |
@@ -8,11 +8,13 @@ |
#include "base/message_loop/message_loop.h" |
#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/extensions/extension_action.h" |
+#include "chrome/browser/extensions/extension_action_icon_factory.h" |
#include "chrome/browser/extensions/extension_context_menu_model.h" |
#include "chrome/browser/extensions/extension_toolbar_model.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/views/extensions/browser_action_drag_data.h" |
+#include "chrome/browser/ui/views/extensions/extension_action_view_controller.h" |
#include "chrome/browser/ui/views/toolbar/browser_action_view.h" |
#include "chrome/browser/ui/views/toolbar/browser_actions_container.h" |
#include "extensions/browser/extension_registry.h" |
@@ -33,31 +35,32 @@ namespace { |
// is read from file system in another thread. |
// The IconUpdater will update the menu item view's icon when the browser |
// action's icon has been updated. |
-class IconUpdater : public BrowserActionView::IconObserver { |
+class IconUpdater : public ExtensionActionIconFactory::Observer { |
public: |
- IconUpdater(views::MenuItemView* menu_item_view, BrowserActionView* view) |
+ IconUpdater(views::MenuItemView* menu_item_view, |
+ ExtensionActionViewController* view_controller) |
: menu_item_view_(menu_item_view), |
- view_(view) { |
+ view_controller_(view_controller) { |
DCHECK(menu_item_view); |
- DCHECK(view); |
- view->set_icon_observer(this); |
+ DCHECK(view_controller); |
+ view_controller->set_icon_observer(this); |
} |
virtual ~IconUpdater() { |
- view_->set_icon_observer(NULL); |
+ view_controller_->set_icon_observer(NULL); |
} |
// BrowserActionView::IconObserver: |
- virtual void OnIconUpdated(const gfx::ImageSkia& icon) override { |
- menu_item_view_->SetIcon(icon); |
+ virtual void OnIconUpdated() override { |
+ menu_item_view_->SetIcon(view_controller_->GetIconWithBadge()); |
} |
private: |
// The menu item view whose icon might be updated. |
views::MenuItemView* menu_item_view_; |
- // The view to be observed. When its icon changes, update the corresponding |
- // menu item view's icon. |
- BrowserActionView* view_; |
+ // The view controller to be observed. When its icon changes, update the |
+ // corresponding menu item view's icon. |
+ ExtensionActionViewController* view_controller_; |
DISALLOW_COPY_AND_ASSIGN(IconUpdater); |
}; |
@@ -159,18 +162,20 @@ ChevronMenuButton::MenuController::MenuController( |
i < browser_actions_container_->num_browser_actions(); ++i) { |
BrowserActionView* view = |
browser_actions_container_->GetBrowserActionViewAt(i); |
+ ExtensionActionViewController* view_controller = |
+ view->GetExtensionActionViewController(); |
views::MenuItemView* menu_item = menu_->AppendMenuItemWithIcon( |
command_id, |
- base::UTF8ToUTF16(view->extension()->name()), |
- view->GetIconWithBadge()); |
+ base::UTF8ToUTF16(view_controller->extension()->name()), |
+ view_controller->GetIconWithBadge()); |
// Set the tooltip for this item. |
- base::string16 tooltip = base::UTF8ToUTF16( |
- view->extension_action()->GetTitle( |
- view->view_controller()->GetCurrentTabId())); |
- menu_->SetTooltip(tooltip, command_id); |
+ menu_->SetTooltip( |
+ view_controller->GetTooltip(view->GetCurrentWebContents()), |
+ command_id); |
- icon_updaters_.push_back(new IconUpdater(menu_item, view)); |
+ icon_updaters_.push_back( |
+ new IconUpdater(menu_item, view->GetExtensionActionViewController())); |
Finnur
2014/10/17 09:57:02
nit: s/view->GetExtensionActionViewController()/vi
Devlin
2014/10/17 16:33:33
Done.
|
++command_id; |
} |
@@ -211,7 +216,7 @@ void ChevronMenuButton::MenuController::CloseMenu() { |
bool ChevronMenuButton::MenuController::IsCommandEnabled(int id) const { |
BrowserActionView* view = |
browser_actions_container_->GetBrowserActionViewAt(start_index_ + id - 1); |
- return view->IsEnabled(view->view_controller()->GetCurrentTabId()); |
+ return view->view_controller()->IsEnabled(view->GetCurrentWebContents()); |
} |
void ChevronMenuButton::MenuController::ExecuteCommand(int id) { |
@@ -226,13 +231,15 @@ bool ChevronMenuButton::MenuController::ShowContextMenu( |
ui::MenuSourceType source_type) { |
BrowserActionView* view = browser_actions_container_->GetBrowserActionViewAt( |
start_index_ + id - 1); |
- if (!view->extension()->ShowConfigureContextMenus()) |
+ ExtensionActionViewController* view_controller = |
+ view->GetExtensionActionViewController(); |
+ if (!view_controller->extension()->ShowConfigureContextMenus()) |
return false; |
scoped_refptr<ExtensionContextMenuModel> context_menu_contents = |
- new ExtensionContextMenuModel(view->extension(), |
- view->view_controller()->browser(), |
- view->view_controller()); |
+ new ExtensionContextMenuModel(view_controller->extension(), |
+ view->browser(), |
+ view_controller); |
views::MenuRunner context_menu_runner(context_menu_contents.get(), |
views::MenuRunner::HAS_MNEMONICS | |
views::MenuRunner::IS_NESTED | |
@@ -341,8 +348,7 @@ void ChevronMenuButton::MenuController::WriteDragData( |
views::MenuItemView* sender, OSExchangeData* data) { |
size_t drag_index = IndexForId(sender->GetCommand()); |
const extensions::Extension* extension = |
- browser_actions_container_->GetBrowserActionViewAt(drag_index)-> |
- extension(); |
+ browser_actions_container_->GetExtensionAt(drag_index); |
BrowserActionDragData drag_data(extension->id(), drag_index); |
drag_data.Write(browser_actions_container_->profile(), data); |
} |