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 |