Index: chrome/browser/chromeos/status/network_menu.cc |
diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc |
index 7fb406016bfc96a2989a9e34a84658570d9c3fc3..4862d390f3398401c4c9062809756a304a84da2d 100644 |
--- a/chrome/browser/chromeos/status/network_menu.cc |
+++ b/chrome/browser/chromeos/status/network_menu.cc |
@@ -146,8 +146,8 @@ class NetworkMenuModel : public views::MenuDelegate { |
// instance by calling PopulateMenuItem() on each one. Subclasses override |
// PopulateMenuItem(), transform command_id into the correct range for |
// the menu, and call the base class PopulateMenuItem(). |
- virtual void PopulateMenu(views::MenuItemView* menu); |
- virtual void PopulateMenuItem(views::MenuItemView* menu, |
+ virtual void PopulateMenu(views::MenuItemInterface* menu); |
+ virtual void PopulateMenuItem(views::MenuItemInterface* menu, |
int index, |
int command_id); |
@@ -217,7 +217,7 @@ class MoreMenuModel : public NetworkMenuModel { |
// NetworkMenuModel implementation. |
virtual void InitMenuItems(bool is_browser_mode, |
bool should_open_button_options) OVERRIDE; |
- virtual void PopulateMenuItem(views::MenuItemView* menu, |
+ virtual void PopulateMenuItem(views::MenuItemInterface* menu, |
int index, |
int command_id) OVERRIDE; |
@@ -233,7 +233,7 @@ class VPNMenuModel : public NetworkMenuModel { |
// NetworkMenuModel implementation. |
virtual void InitMenuItems(bool is_browser_mode, |
bool should_open_button_options) OVERRIDE; |
- virtual void PopulateMenuItem(views::MenuItemView* menu, |
+ virtual void PopulateMenuItem(views::MenuItemInterface* menu, |
int index, |
int command_id) OVERRIDE; |
@@ -253,7 +253,7 @@ class MainMenuModel : public NetworkMenuModel { |
// NetworkMenuModel implementation. |
virtual void InitMenuItems(bool is_browser_mode, |
bool should_open_button_options) OVERRIDE; |
- virtual void PopulateMenuItem(views::MenuItemView* menu, |
+ virtual void PopulateMenuItem(views::MenuItemInterface* menu, |
int index, |
int command_id) OVERRIDE; |
@@ -275,12 +275,8 @@ class MainMenuModel : public NetworkMenuModel { |
//////////////////////////////////////////////////////////////////////////////// |
// NetworkMenuModel, public methods: |
-void NetworkMenuModel::PopulateMenu(views::MenuItemView* menu) { |
- if (menu->HasSubmenu()) { |
- const int old_count = menu->GetSubmenu()->child_count(); |
- for (int i = 0; i < old_count; ++i) |
- menu->RemoveMenuItemAt(0); |
- } |
+void NetworkMenuModel::PopulateMenu(views::MenuItemInterface* menu) { |
+ menu->ClearSubmenu(); |
const int menu_items_count = GetItemCount(); |
for (int i = 0; i < menu_items_count; ++i) |
@@ -288,14 +284,14 @@ void NetworkMenuModel::PopulateMenu(views::MenuItemView* menu) { |
} |
void NetworkMenuModel::PopulateMenuItem( |
- views::MenuItemView* menu, int index, int command_id) { |
+ views::MenuItemInterface* menu, int index, int command_id) { |
DCHECK_GT(GetItemCount(), index); |
switch (GetTypeAt(index)) { |
case ui::MenuModel::TYPE_SEPARATOR: |
menu->AppendSeparator(); |
break; |
case ui::MenuModel::TYPE_COMMAND: { |
- views::MenuItemView* item = NULL; |
+ views::MenuItemInterface* item = NULL; |
SkBitmap icon; |
if (GetIconAt(index, &icon)) { |
item = menu->AppendMenuItemWithIcon(command_id, |
@@ -309,7 +305,7 @@ void NetworkMenuModel::PopulateMenuItem( |
break; |
} |
case ui::MenuModel::TYPE_SUBMENU: { |
- views::MenuItemView* submenu = NULL; |
+ views::MenuItemInterface* submenu = NULL; |
SkBitmap icon; |
if (GetIconAt(index, &icon)) { |
submenu = menu->AppendSubMenuWithIcon(command_id, |
@@ -865,7 +861,7 @@ void MainMenuModel::InitMenuItems(bool is_browser_mode, |
} |
void MainMenuModel::PopulateMenuItem( |
- views::MenuItemView* menu, int index, int command_id) { |
+ views::MenuItemInterface* menu, int index, int command_id) { |
int main_command_id = command_id | kMainIndexMask; |
NetworkMenuModel::PopulateMenuItem(menu, index, main_command_id); |
} |
@@ -975,7 +971,7 @@ void VPNMenuModel::InitMenuItems(bool is_browser_mode, |
} |
void VPNMenuModel::PopulateMenuItem( |
- views::MenuItemView* menu, int index, int command_id) { |
+ views::MenuItemInterface* menu, int index, int command_id) { |
int vpn_command_id = command_id | kVPNIndexMask; |
NetworkMenuModel::PopulateMenuItem(menu, index, vpn_command_id); |
} |
@@ -1060,7 +1056,7 @@ void MoreMenuModel::InitMenuItems( |
} |
void MoreMenuModel::PopulateMenuItem( |
- views::MenuItemView* menu, int index, int command_id) { |
+ views::MenuItemInterface* menu, int index, int command_id) { |
int more_command_id = command_id | kMoreIndexMask; |
NetworkMenuModel::PopulateMenuItem(menu, index, more_command_id); |
} |
@@ -1068,23 +1064,22 @@ void MoreMenuModel::PopulateMenuItem( |
//////////////////////////////////////////////////////////////////////////////// |
// NetworkMenu |
-NetworkMenu::NetworkMenu(Delegate* delegate, bool is_browser_mode) |
- : delegate_(delegate), |
+ |
+NetworkMenu::NetworkMenu(Delegate* delegate, |
+ bool is_browser_mode, |
+ views::MenuItemInterface* menu_item) |
+ : menu_item_(menu_item), |
+ delegate_(delegate), |
is_browser_mode_(is_browser_mode), |
- refreshing_menu_(false), |
- min_width_(kDefaultMinimumWidth) { |
+ refreshing_menu_(false) { |
main_menu_model_.reset(new MainMenuModel(this)); |
- menu_item_view_.reset(new views::MenuItemView(main_menu_model_.get())); |
- menu_item_view_->set_has_icons(true); |
- menu_item_view_->set_menu_position( |
- views::MenuItemView::POSITION_BELOW_BOUNDS); |
} |
NetworkMenu::~NetworkMenu() { |
} |
void NetworkMenu::CancelMenu() { |
- menu_item_view_->Cancel(); |
+ menu_item_->Cancel(); |
} |
void NetworkMenu::UpdateMenu() { |
@@ -1093,26 +1088,11 @@ void NetworkMenu::UpdateMenu() { |
refreshing_menu_ = true; |
main_menu_model_->InitMenuItems( |
is_browser_mode(), delegate_->ShouldOpenButtonOptions()); |
- main_menu_model_->PopulateMenu(menu_item_view_.get()); |
- menu_item_view_->ChildrenChanged(); |
+ main_menu_model_->PopulateMenu(menu_item_.get()); |
+ menu_item_->ChildrenChanged(); |
refreshing_menu_ = false; |
} |
-void NetworkMenu::RunMenu(views::View* source) { |
- NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
- cros->RequestNetworkScan(); |
- |
- UpdateMenu(); |
- |
- gfx::Point screen_location; |
- views::View::ConvertPointToScreen(source, &screen_location); |
- gfx::Rect bounds(screen_location, source->size()); |
- menu_item_view_->GetSubmenu()->set_minimum_preferred_width(min_width_); |
- menu_item_view_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(), |
- delegate_->GetMenuButton(), bounds, |
- views::MenuItemView::TOPRIGHT, true); |
-} |
- |
void NetworkMenu::ShowTabbedNetworkSettings(const Network* network) const { |
DCHECK(network); |
Browser* browser = BrowserList::GetLastActive(); |
@@ -1132,4 +1112,40 @@ void NetworkMenu::ShowTabbedNetworkSettings(const Network* network) const { |
browser->ShowOptionsTab(page); |
} |
+views::MenuDelegate* NetworkMenu::GetMenuDelegate() { |
+ return main_menu_model_.get(); |
+} |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
+// NetworkMenuView |
+ |
+NetworkMenuView::NetworkMenuView(Delegate* delegate, bool is_browser_mode) |
+ : NetworkMenu(delegate, is_browser_mode, NULL), |
+ min_width_(kDefaultMinimumWidth) { |
+ menu_item_view_ = new views::MenuItemView(main_menu_model_.get()); |
+ menu_item_.reset(menu_item_view_); |
+ |
+ menu_item_view_->set_has_icons(true); |
+ menu_item_view_->set_menu_position( |
+ views::MenuItemView::POSITION_BELOW_BOUNDS); |
+} |
+ |
+NetworkMenuView::~NetworkMenuView() { |
+} |
+ |
+void NetworkMenuView::RunMenu(views::View* source) { |
+ NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
+ cros->RequestNetworkScan(); |
+ |
+ UpdateMenu(); |
+ |
+ gfx::Point screen_location; |
+ views::View::ConvertPointToScreen(source, &screen_location); |
+ gfx::Rect bounds(screen_location, source->size()); |
+ menu_item_view_->GetSubmenu()->set_minimum_preferred_width(min_width_); |
+ menu_item_view_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(), |
+ delegate()->GetMenuButton(), bounds, |
+ views::MenuItemView::TOPRIGHT, true); |
+} |
+ |
} // namespace chromeos |