| 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
|
|
|