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

Unified Diff: chrome/browser/chromeos/dom_ui/network_menu_ui.cc

Issue 3675002: Add network_menu_ui.cc and network_menu.js (Closed)
Patch Set: . Created 10 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chromeos/dom_ui/network_menu_ui.h ('k') | chrome/browser/chromeos/status/network_menu.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/dom_ui/network_menu_ui.cc
diff --git a/chrome/browser/chromeos/dom_ui/network_menu_ui.cc b/chrome/browser/chromeos/dom_ui/network_menu_ui.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b7905faa10742897b67e161a92db46a9c42de559
--- /dev/null
+++ b/chrome/browser/chromeos/dom_ui/network_menu_ui.cc
@@ -0,0 +1,125 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/dom_ui/network_menu_ui.h"
+
+#include "base/values.h"
+#include "base/string_util.h"
+#include "chrome/app/chrome_dll_resource.h"
+#include "chrome/browser/chromeos/status/network_menu.h"
+#include "chrome/browser/chromeos/views/native_menu_domui.h"
+#include "chrome/common/url_constants.h"
+#include "googleurl/src/gurl.h"
+#include "grit/browser_resources.h"
+#include "views/controls/menu/menu_2.h"
+
+namespace {
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// MenuHandler
+//
+////////////////////////////////////////////////////////////////////////////////
+
+// The handler for Javascript messages related to the "system" view.
+class NetworkMenuHandler : public chromeos::MenuHandlerBase,
+ public base::SupportsWeakPtr<NetworkMenuHandler> {
+ public:
+ NetworkMenuHandler();
+ virtual ~NetworkMenuHandler();
+
+ // DOMMessageHandler implementation.
+ virtual void RegisterMessages();
+
+ private:
+ void HandleAction(const ListValue* values);
+
+ DISALLOW_COPY_AND_ASSIGN(NetworkMenuHandler);
+};
+
+void NetworkMenuHandler::RegisterMessages() {
+ dom_ui_->RegisterMessageCallback(
+ "action",
+ NewCallback(this,
+ &NetworkMenuHandler::HandleAction));
+}
+
+void NetworkMenuHandler::HandleAction(const ListValue* values) {
+ menus::MenuModel* model = GetMenuModel();
+ if (model)
+ static_cast<chromeos::NetworkMenuUI*>(dom_ui_)->ModelAction(model, values);
+}
+
+NetworkMenuHandler::NetworkMenuHandler() {
+}
+
+NetworkMenuHandler::~NetworkMenuHandler() {
+}
+
+} // namespace
+
+namespace chromeos {
+
+////////////////////////////////////////////////////////////////////////////////
+//
+// NetworkMenuUI
+//
+////////////////////////////////////////////////////////////////////////////////
+
+NetworkMenuUI::NetworkMenuUI(TabContents* contents)
+ : chromeos::MenuUI(
+ contents,
+ ALLOW_THIS_IN_INITIALIZER_LIST(
+ CreateMenuUIHTMLSource(*this,
+ chrome::kChromeUINetworkMenu,
+ "NetworkMenu",
+ IDR_NETWORK_MENU_JS,
+ -1))) {
+ NetworkMenuHandler* handler = new NetworkMenuHandler();
+ AddMessageHandler((handler)->Attach(this));
+}
+
+void NetworkMenuUI::AddCustomConfigValues(DictionaryValue* config) const {
+}
+
+void NetworkMenuUI::ModelAction(const menus::MenuModel* model,
+ const ListValue* values) {
+ //const NetworkMenu* network_menu = static_cast<const NetworkMenu*>(model);
+ // Invoke model methods here.
+}
+
+DictionaryValue* NetworkMenuUI::CreateMenuItem(const menus::MenuModel* model,
+ int index,
+ const char* type,
+ int* max_icon_width,
+ bool* has_accel) const {
+ // Create a MenuUI menu item, then append network specific values.
+ DictionaryValue* item = MenuUI::CreateMenuItem(model,
+ index,
+ type,
+ max_icon_width,
+ has_accel);
+ // Network menu specific values.
+ const NetworkMenu* network_menu = static_cast<const NetworkMenu*>(model);
+ NetworkMenu::NetworkInfo info;
+ bool found = network_menu->GetNetworkAt(index, &info);
+
+ item->SetBoolean("visible", found);
+ item->SetString("network_type", info.network_type);
+ item->SetString("status", info.status);
+ item->SetString("message", info.message);
+ item->SetString("ip_address", info.ip_address);
+ item->SetBoolean("need_passphrase", info.need_passphrase);
+ item->SetBoolean("remembered", info.remembered);
+ return item;
+}
+
+views::Menu2* NetworkMenuUI::CreateMenu2(menus::MenuModel* model) {
+ views::Menu2* menu = new views::Menu2(model);
+ NativeMenuDOMUI::SetMenuURL(
+ menu, GURL(StringPrintf("chrome://%s", chrome::kChromeUINetworkMenu)));
+ return menu;
+}
+
+} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/dom_ui/network_menu_ui.h ('k') | chrome/browser/chromeos/status/network_menu.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698