Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(113)

Side by Side Diff: chrome/browser/chromeos/status/network_menu.cc

Issue 7720012: Moves ownership of MenuItemView to MenuRunner as well as responbility (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix unit test Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/chromeos/status/network_menu.h" 5 #include "chrome/browser/chromeos/status/network_menu.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 19 matching lines...) Expand all
30 #include "grit/theme_resources.h" 30 #include "grit/theme_resources.h"
31 #include "net/base/escape.h" 31 #include "net/base/escape.h"
32 #include "third_party/skia/include/core/SkBitmap.h" 32 #include "third_party/skia/include/core/SkBitmap.h"
33 #include "ui/base/l10n/l10n_util.h" 33 #include "ui/base/l10n/l10n_util.h"
34 #include "ui/base/models/menu_model.h" 34 #include "ui/base/models/menu_model.h"
35 #include "ui/base/resource/resource_bundle.h" 35 #include "ui/base/resource/resource_bundle.h"
36 #include "ui/gfx/canvas_skia.h" 36 #include "ui/gfx/canvas_skia.h"
37 #include "ui/gfx/skbitmap_operations.h" 37 #include "ui/gfx/skbitmap_operations.h"
38 #include "views/controls/menu/menu_item_view.h" 38 #include "views/controls/menu/menu_item_view.h"
39 #include "views/controls/menu/menu_model_adapter.h" 39 #include "views/controls/menu/menu_model_adapter.h"
40 #include "views/controls/menu/menu_runner.h"
40 #include "views/controls/menu/submenu_view.h" 41 #include "views/controls/menu/submenu_view.h"
41 #include "views/widget/widget.h" 42 #include "views/widget/widget.h"
42 43
43 namespace { 44 namespace {
44 45
45 // Offsets for views menu ids (main menu and submenu ids use the same 46 // Offsets for views menu ids (main menu and submenu ids use the same
46 // namespace). 47 // namespace).
47 const int kMainIndexMask = 0x1000; 48 const int kMainIndexMask = 0x1000;
48 const int kVPNIndexMask = 0x2000; 49 const int kVPNIndexMask = 0x2000;
49 const int kMoreIndexMask = 0x4000; 50 const int kMoreIndexMask = 0x4000;
(...skipping 972 matching lines...) Expand 10 before | Expand all | Expand 10 after
1022 return index + kMoreIndexMask; 1023 return index + kMoreIndexMask;
1023 } 1024 }
1024 1025
1025 //////////////////////////////////////////////////////////////////////////////// 1026 ////////////////////////////////////////////////////////////////////////////////
1026 // NetworkMenu 1027 // NetworkMenu
1027 1028
1028 NetworkMenu::NetworkMenu(Delegate* delegate, bool is_browser_mode) 1029 NetworkMenu::NetworkMenu(Delegate* delegate, bool is_browser_mode)
1029 : delegate_(delegate), 1030 : delegate_(delegate),
1030 is_browser_mode_(is_browser_mode), 1031 is_browser_mode_(is_browser_mode),
1031 refreshing_menu_(false), 1032 refreshing_menu_(false),
1033 menu_item_view_(NULL),
1032 min_width_(kDefaultMinimumWidth) { 1034 min_width_(kDefaultMinimumWidth) {
1033 main_menu_model_.reset(new MainMenuModel(this)); 1035 main_menu_model_.reset(new MainMenuModel(this));
1034 menu_model_adapter_.reset( 1036 menu_model_adapter_.reset(
1035 new views::MenuModelAdapter(main_menu_model_.get())); 1037 new views::MenuModelAdapter(main_menu_model_.get()));
1036 menu_item_view_.reset(new views::MenuItemView(menu_model_adapter_.get())); 1038 menu_item_view_ = new views::MenuItemView(menu_model_adapter_.get());
1037 menu_item_view_->set_has_icons(true); 1039 menu_item_view_->set_has_icons(true);
1038 menu_item_view_->set_menu_position( 1040 menu_item_view_->set_menu_position(
1039 views::MenuItemView::POSITION_BELOW_BOUNDS); 1041 views::MenuItemView::POSITION_BELOW_BOUNDS);
1040 } 1042 }
1041 1043
1042 NetworkMenu::~NetworkMenu() { 1044 NetworkMenu::~NetworkMenu() {
1043 } 1045 }
1044 1046
1045 ui::MenuModel* NetworkMenu::GetMenuModel() { 1047 ui::MenuModel* NetworkMenu::GetMenuModel() {
1046 return main_menu_model_.get(); 1048 return main_menu_model_.get();
1047 } 1049 }
1048 1050
1049 void NetworkMenu::CancelMenu() { 1051 void NetworkMenu::CancelMenu() {
1050 menu_item_view_->Cancel(); 1052 menu_runner_->Cancel();
1051 } 1053 }
1052 1054
1053 void NetworkMenu::UpdateMenu() { 1055 void NetworkMenu::UpdateMenu() {
1054 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1056 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1055 1057
1056 refreshing_menu_ = true; 1058 refreshing_menu_ = true;
1057 main_menu_model_->InitMenuItems( 1059 main_menu_model_->InitMenuItems(
1058 is_browser_mode(), delegate_->ShouldOpenButtonOptions()); 1060 is_browser_mode(), delegate_->ShouldOpenButtonOptions());
1059 1061
1060 menu_model_adapter_->BuildMenu(menu_item_view_.get()); 1062 menu_model_adapter_->BuildMenu(menu_item_view_);
1061 SetMenuMargins(menu_item_view_.get(), kTopMargin, kBottomMargin); 1063 SetMenuMargins(menu_item_view_, kTopMargin, kBottomMargin);
1062 menu_item_view_->ChildrenChanged(); 1064 menu_item_view_->ChildrenChanged();
1063 1065
1064 refreshing_menu_ = false; 1066 refreshing_menu_ = false;
1065 } 1067 }
1066 1068
1067 void NetworkMenu::RunMenu(views::View* source) { 1069 void NetworkMenu::RunMenu(views::View* source) {
1068 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); 1070 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary();
1069 cros->RequestNetworkScan(); 1071 cros->RequestNetworkScan();
1070 1072
1071 UpdateMenu(); 1073 UpdateMenu();
1072 1074
1073 gfx::Point screen_location; 1075 gfx::Point screen_location;
1074 views::View::ConvertPointToScreen(source, &screen_location); 1076 views::View::ConvertPointToScreen(source, &screen_location);
1075 gfx::Rect bounds(screen_location, source->size()); 1077 gfx::Rect bounds(screen_location, source->size());
1076 menu_item_view_->GetSubmenu()->set_minimum_preferred_width(min_width_); 1078 menu_item_view_->GetSubmenu()->set_minimum_preferred_width(min_width_);
1077 menu_item_view_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(), 1079 if (menu_runner_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(),
Dmitry Polukhin 2011/08/25 09:01:45 It looks like menu_runner_ is not set to initializ
1078 delegate_->GetMenuButton(), bounds, 1080 delegate_->GetMenuButton(), bounds, views::MenuItemView::TOPRIGHT,
1079 views::MenuItemView::TOPRIGHT, true); 1081 views::MenuRunner::HAS_MNEMONICS) == views::MenuRunner::MENU_DELETED)
1082 return;
1080 } 1083 }
1081 1084
1082 void NetworkMenu::ShowTabbedNetworkSettings(const Network* network) const { 1085 void NetworkMenu::ShowTabbedNetworkSettings(const Network* network) const {
1083 DCHECK(network); 1086 DCHECK(network);
1084 Browser* browser = BrowserList::GetLastActive(); 1087 Browser* browser = BrowserList::GetLastActive();
1085 if (!browser) 1088 if (!browser)
1086 return; 1089 return;
1087 std::string network_name(network->name()); 1090 std::string network_name(network->name());
1088 if (network_name.empty() && network->type() == chromeos::TYPE_ETHERNET) { 1091 if (network_name.empty() && network->type() == chromeos::TYPE_ETHERNET) {
1089 network_name = l10n_util::GetStringUTF8( 1092 network_name = l10n_util::GetStringUTF8(
1090 IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); 1093 IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET);
1091 } 1094 }
1092 std::string page = StringPrintf( 1095 std::string page = StringPrintf(
1093 "%s?servicePath=%s&networkType=%d&networkName=%s", 1096 "%s?servicePath=%s&networkType=%d&networkName=%s",
1094 chrome::kInternetOptionsSubPage, 1097 chrome::kInternetOptionsSubPage,
1095 EscapeUrlEncodedData(network->service_path(), true).c_str(), 1098 EscapeUrlEncodedData(network->service_path(), true).c_str(),
1096 network->type(), 1099 network->type(),
1097 EscapeUrlEncodedData(network_name, false).c_str()); 1100 EscapeUrlEncodedData(network_name, false).c_str());
1098 browser->ShowOptionsTab(page); 1101 browser->ShowOptionsTab(page);
1099 } 1102 }
1100 1103
1101 } // namespace chromeos 1104 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/status/network_menu.h ('k') | chrome/browser/chromeos/status/power_menu_button.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698