OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/ui/views/extensions/browser_action_overflow_menu_contro
ller.h" | 5 #include "chrome/browser/ui/views/extensions/browser_action_overflow_menu_contro
ller.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "chrome/browser/extensions/extension_action.h" | 9 #include "chrome/browser/extensions/extension_action.h" |
10 #include "chrome/browser/extensions/extension_action_manager.h" | 10 #include "chrome/browser/extensions/extension_action_manager.h" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 size_t command_id = 1; // Menu id 0 is reserved, start with 1. | 80 size_t command_id = 1; // Menu id 0 is reserved, start with 1. |
81 for (size_t i = start_index; i < views_->size(); ++i) { | 81 for (size_t i = start_index; i < views_->size(); ++i) { |
82 BrowserActionView* view = (*views_)[i]; | 82 BrowserActionView* view = (*views_)[i]; |
83 views::MenuItemView* menu_item = menu_->AppendMenuItemWithIcon( | 83 views::MenuItemView* menu_item = menu_->AppendMenuItemWithIcon( |
84 command_id, | 84 command_id, |
85 base::UTF8ToUTF16(view->button()->extension()->name()), | 85 base::UTF8ToUTF16(view->button()->extension()->name()), |
86 view->GetIconWithBadge()); | 86 view->GetIconWithBadge()); |
87 | 87 |
88 // Set the tooltip for this item. | 88 // Set the tooltip for this item. |
89 base::string16 tooltip = base::UTF8ToUTF16( | 89 base::string16 tooltip = base::UTF8ToUTF16( |
90 extensions::ExtensionActionManager::Get(owner_->profile())-> | 90 view->button()->extension_action()->GetTitle( |
91 GetBrowserAction(*view->button()->extension())-> | 91 view->button()->view_controller()->GetCurrentTabId())); |
92 GetTitle(owner_->GetCurrentTabId())); | |
93 menu_->SetTooltip(tooltip, command_id); | 92 menu_->SetTooltip(tooltip, command_id); |
94 | 93 |
95 icon_updaters_.push_back(new IconUpdater(menu_item, view->button())); | 94 icon_updaters_.push_back(new IconUpdater(menu_item, view->button())); |
96 | 95 |
97 ++command_id; | 96 ++command_id; |
98 } | 97 } |
99 } | 98 } |
100 | 99 |
101 BrowserActionOverflowMenuController::~BrowserActionOverflowMenuController() { | 100 BrowserActionOverflowMenuController::~BrowserActionOverflowMenuController() { |
102 if (observer_) | 101 if (observer_) |
(...skipping 21 matching lines...) Expand all Loading... |
124 | 123 |
125 void BrowserActionOverflowMenuController::CancelMenu() { | 124 void BrowserActionOverflowMenuController::CancelMenu() { |
126 menu_->Cancel(); | 125 menu_->Cancel(); |
127 } | 126 } |
128 | 127 |
129 void BrowserActionOverflowMenuController::NotifyBrowserActionViewsDeleting() { | 128 void BrowserActionOverflowMenuController::NotifyBrowserActionViewsDeleting() { |
130 icon_updaters_.clear(); | 129 icon_updaters_.clear(); |
131 } | 130 } |
132 | 131 |
133 bool BrowserActionOverflowMenuController::IsCommandEnabled(int id) const { | 132 bool BrowserActionOverflowMenuController::IsCommandEnabled(int id) const { |
134 BrowserActionView* view = (*views_)[start_index_ + id - 1]; | 133 BrowserActionButton* button = (*views_)[start_index_ + id - 1]->button(); |
135 return view->button()->IsEnabled(owner_->GetCurrentTabId()); | 134 return button->IsEnabled(button->view_controller()->GetCurrentTabId()); |
136 } | 135 } |
137 | 136 |
138 void BrowserActionOverflowMenuController::ExecuteCommand(int id) { | 137 void BrowserActionOverflowMenuController::ExecuteCommand(int id) { |
139 BrowserActionView* view = (*views_)[start_index_ + id - 1]; | 138 BrowserActionView* view = (*views_)[start_index_ + id - 1]; |
140 view->button()->ExecuteBrowserAction(); | 139 view->button()->view_controller()->ExecuteActionByUser(); |
141 } | 140 } |
142 | 141 |
143 bool BrowserActionOverflowMenuController::ShowContextMenu( | 142 bool BrowserActionOverflowMenuController::ShowContextMenu( |
144 views::MenuItemView* source, | 143 views::MenuItemView* source, |
145 int id, | 144 int id, |
146 const gfx::Point& p, | 145 const gfx::Point& p, |
147 ui::MenuSourceType source_type) { | 146 ui::MenuSourceType source_type) { |
148 BrowserActionButton* button = (*views_)[start_index_ + id - 1]->button(); | 147 BrowserActionButton* button = (*views_)[start_index_ + id - 1]->button(); |
149 if (!button->extension()->ShowConfigureContextMenus()) | 148 if (!button->extension()->ShowConfigureContextMenus()) |
150 return false; | 149 return false; |
151 | 150 |
152 scoped_refptr<ExtensionContextMenuModel> context_menu_contents = | 151 scoped_refptr<ExtensionContextMenuModel> context_menu_contents = |
153 new ExtensionContextMenuModel(button->extension(), browser_, button); | 152 new ExtensionContextMenuModel( |
| 153 button->extension(), browser_, button->view_controller()); |
154 views::MenuRunner context_menu_runner(context_menu_contents.get(), | 154 views::MenuRunner context_menu_runner(context_menu_contents.get(), |
155 views::MenuRunner::HAS_MNEMONICS | | 155 views::MenuRunner::HAS_MNEMONICS | |
156 views::MenuRunner::IS_NESTED | | 156 views::MenuRunner::IS_NESTED | |
157 views::MenuRunner::CONTEXT_MENU); | 157 views::MenuRunner::CONTEXT_MENU); |
158 | 158 |
159 // We can ignore the result as we delete ourself. | 159 // We can ignore the result as we delete ourself. |
160 // This blocks until the user choses something or dismisses the menu. | 160 // This blocks until the user choses something or dismisses the menu. |
161 ignore_result(context_menu_runner.RunMenuAt(menu_button_->GetWidget(), | 161 ignore_result(context_menu_runner.RunMenuAt(menu_button_->GetWidget(), |
162 NULL, | 162 NULL, |
163 gfx::Rect(p, gfx::Size()), | 163 gfx::Rect(p, gfx::Size()), |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 | 258 |
259 BrowserActionView* BrowserActionOverflowMenuController::ViewForId( | 259 BrowserActionView* BrowserActionOverflowMenuController::ViewForId( |
260 int id, size_t* index) { | 260 int id, size_t* index) { |
261 // The index of the view being dragged (GetCommand gives a 1-based index into | 261 // The index of the view being dragged (GetCommand gives a 1-based index into |
262 // the overflow menu). | 262 // the overflow menu). |
263 size_t view_index = owner_->VisibleBrowserActions() + id - 1; | 263 size_t view_index = owner_->VisibleBrowserActions() + id - 1; |
264 if (index) | 264 if (index) |
265 *index = view_index; | 265 *index = view_index; |
266 return owner_->GetBrowserActionViewAt(view_index); | 266 return owner_->GetBrowserActionViewAt(view_index); |
267 } | 267 } |
OLD | NEW |