| 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..33dd33499a0ae82243c39a993361a9fc468d8be7 100644
|
| --- a/chrome/browser/ui/views/toolbar/chevron_menu_button.cc
|
| +++ b/chrome/browser/ui/views/toolbar/chevron_menu_button.cc
|
| @@ -33,31 +33,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 +160,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->GetCurrentTabId()),
|
| + command_id);
|
|
|
| - icon_updaters_.push_back(new IconUpdater(menu_item, view));
|
| + icon_updaters_.push_back(
|
| + new IconUpdater(menu_item, view->GetExtensionActionViewController()));
|
|
|
| ++command_id;
|
| }
|
| @@ -211,7 +214,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->GetCurrentTabId());
|
| }
|
|
|
| void ChevronMenuButton::MenuController::ExecuteCommand(int id) {
|
| @@ -226,13 +229,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 +346,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);
|
| }
|
|
|