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

Side by Side Diff: chrome/browser/chromeos/webui/network_menu_ui.cc

Issue 6693032: Remove WebUI menu (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: " Created 9 years, 9 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/chromeos/webui/network_menu_ui.h"
6
7 #include "base/string_number_conversions.h"
8 #include "base/string_util.h"
9 #include "base/values.h"
10 #include "chrome/app/chrome_command_ids.h"
11 #include "chrome/browser/chromeos/status/network_menu.h"
12 #include "chrome/browser/chromeos/views/native_menu_webui.h"
13 #include "chrome/browser/chromeos/views/webui_menu_widget.h"
14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/ui/webui/theme_source.h"
16 #include "chrome/common/url_constants.h"
17 #include "content/browser/browser_thread.h"
18 #include "content/browser/tab_contents/tab_contents.h"
19 #include "googleurl/src/gurl.h"
20 #include "grit/browser_resources.h"
21 #include "grit/generated_resources.h"
22 #include "ui/base/l10n/l10n_util.h"
23 #include "views/controls/menu/menu_2.h"
24
25 namespace {
26
27 class NetworkMenuSourceDelegate : public chromeos::MenuSourceDelegate {
28 public:
29 virtual void AddLocalizedStrings(DictionaryValue* localized_strings) const {
30 DCHECK(localized_strings);
31
32 localized_strings->SetString("reconnect", l10n_util::GetStringUTF16(
33 IDS_NETWORK_RECONNECT_TITLE));
34 localized_strings->SetString("auto_connect_this_network",
35 l10n_util::GetStringUTF16(
36 IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_AUTO_CONNECT));
37 localized_strings->SetString("ssid_prompt",
38 l10n_util::GetStringUTF16(IDS_NETWORK_SSID_HINT));
39 localized_strings->SetString("pass_prompt",
40 l10n_util::GetStringUTF16(IDS_NETWORK_PASSWORD_HINT));
41 }
42 };
43
44 ////////////////////////////////////////////////////////////////////////////////
45 //
46 // MenuHandler
47 //
48 ////////////////////////////////////////////////////////////////////////////////
49
50 // The handler for Javascript messages related to the "system" view.
51 class NetworkMenuHandler : public chromeos::MenuHandlerBase,
52 public base::SupportsWeakPtr<NetworkMenuHandler> {
53 public:
54 NetworkMenuHandler();
55 virtual ~NetworkMenuHandler();
56
57 // WebUIMessageHandler implementation.
58 virtual void RegisterMessages();
59
60 private:
61 void HandleAction(const ListValue* values);
62
63 DISALLOW_COPY_AND_ASSIGN(NetworkMenuHandler);
64 };
65
66 void NetworkMenuHandler::RegisterMessages() {
67 web_ui_->RegisterMessageCallback(
68 "action",
69 NewCallback(this,
70 &NetworkMenuHandler::HandleAction));
71 }
72
73 void NetworkMenuHandler::HandleAction(const ListValue* values) {
74 ui::MenuModel* model = GetMenuModel();
75 if (model) {
76 chromeos::NetworkMenuUI* network_menu_ui =
77 static_cast<chromeos::NetworkMenuUI*>(web_ui_);
78 bool close_menu = network_menu_ui->ModelAction(model, values);
79 if (close_menu) {
80 chromeos::WebUIMenuWidget* widget
81 = chromeos::WebUIMenuWidget::FindWebUIMenuWidget(
82 web_ui_->tab_contents()->GetNativeView());
83 if (widget) {
84 chromeos::NativeMenuWebUI* webui_menu = widget->webui_menu();
85 if (webui_menu)
86 webui_menu->Hide();
87 }
88 }
89 }
90 }
91
92 NetworkMenuHandler::NetworkMenuHandler() {
93 }
94
95 NetworkMenuHandler::~NetworkMenuHandler() {
96 }
97
98 } // namespace
99
100 namespace chromeos {
101
102 ////////////////////////////////////////////////////////////////////////////////
103 //
104 // NetworkMenuUI
105 //
106 ////////////////////////////////////////////////////////////////////////////////
107
108 NetworkMenuUI::NetworkMenuUI(TabContents* contents)
109 : chromeos::MenuUI(
110 contents,
111 ALLOW_THIS_IN_INITIALIZER_LIST(
112 CreateMenuUIHTMLSource(new NetworkMenuSourceDelegate(),
113 chrome::kChromeUINetworkMenu,
114 "NetworkMenu",
115 IDR_NETWORK_MENU_JS,
116 IDR_NETWORK_MENU_CSS))) {
117 NetworkMenuHandler* handler = new NetworkMenuHandler();
118 AddMessageHandler((handler)->Attach(this));
119
120 // Set up chrome://theme/ source.
121 ThemeSource* theme = new ThemeSource(contents->profile());
122 contents->profile()->GetChromeURLDataManager()->AddDataSource(theme);
123 }
124
125 bool NetworkMenuUI::ModelAction(const ui::MenuModel* model,
126 const ListValue* values) {
127 const NetworkMenu* network_menu = static_cast<const NetworkMenu*>(model);
128 std::string action;
129 bool success = values->GetString(0, &action);
130 bool close_menu = true;
131 if (!success) {
132 LOG(WARNING) << "ModelAction called with no arguments from: "
133 << chrome::kChromeUINetworkMenu;
134 return close_menu;
135 }
136 int index;
137 std::string index_str;
138 success = values->GetString(1, &index_str);
139 success = success && base::StringToInt(index_str, &index);
140 if (!success) {
141 LOG(WARNING) << "ModelAction called with no index from: "
142 << chrome::kChromeUINetworkMenu;
143 return close_menu;
144 }
145 std::string passphrase;
146 values->GetString(2, &passphrase); // Optional
147 std::string ssid;
148 values->GetString(3, &ssid); // Optional
149 int auto_connect = -1; // -1 indicates default action (auto connect)
150 std::string auto_connect_str;
151 if (values->GetString(4, &auto_connect_str)) // Optional
152 base::StringToInt(auto_connect_str, &auto_connect);
153
154 if (action == "connect" || action == "reconnect") {
155 close_menu = network_menu->ConnectToNetworkAt(index, passphrase, ssid,
156 auto_connect);
157 } else {
158 LOG(WARNING) << "Unrecognized action: " << action
159 << " from: " << chrome::kChromeUINetworkMenu;
160 }
161 return close_menu;
162 }
163
164 DictionaryValue* NetworkMenuUI::CreateMenuItem(const ui::MenuModel* model,
165 int index,
166 const char* type,
167 int* max_icon_width,
168 bool* has_accel) const {
169 // Create a MenuUI menu item, then append network specific values.
170 DictionaryValue* item = MenuUI::CreateMenuItem(model,
171 index,
172 type,
173 max_icon_width,
174 has_accel);
175 // Network menu specific values.
176 const NetworkMenu* network_menu = static_cast<const NetworkMenu*>(model);
177 NetworkMenu::NetworkInfo info;
178 bool found = network_menu->GetNetworkAt(index, &info);
179
180 item->SetBoolean("visible", found);
181 item->SetString("network_type", info.network_type);
182 item->SetString("status", info.status);
183 item->SetString("message", info.message);
184 item->SetString("ip_address", info.ip_address);
185 item->SetString("passphrase", info.passphrase);
186 item->SetBoolean("need_passphrase", info.need_passphrase);
187 item->SetBoolean("remembered", info.remembered);
188 return item;
189 }
190
191 views::Menu2* NetworkMenuUI::CreateMenu2(ui::MenuModel* model) {
192 views::Menu2* menu = new views::Menu2(model);
193 NativeMenuWebUI::SetMenuURL(
194 menu, GURL(StringPrintf("chrome://%s", chrome::kChromeUINetworkMenu)));
195 return menu;
196 }
197
198 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/webui/network_menu_ui.h ('k') | chrome/browser/chromeos/webui/wrench_menu_ui.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698