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

Unified Diff: chrome/browser/chromeos/status/network_menu.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/status/network_menu.h ('k') | chrome/browser/dom_ui/dom_ui_factory.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 11b7aedca8a0f2fdc7ff293f5925bcede8aa0714..7e269e91e81d8fb54beb272a13b5e73b4981c3cb 100644
--- a/chrome/browser/chromeos/status/network_menu.cc
+++ b/chrome/browser/chromeos/status/network_menu.cc
@@ -12,6 +12,7 @@
#include "chrome/browser/browser.h"
#include "chrome/browser/browser_list.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
+#include "chrome/browser/chromeos/dom_ui/network_menu_ui.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/url_constants.h"
#include "chrome/browser/views/window.h"
@@ -20,8 +21,22 @@
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
#include "net/base/escape.h"
+#include "views/controls/menu/menu_2.h"
#include "views/window/window.h"
+namespace {
+// Constants passed to Javascript:
+static const char* kNetworkTypeEthernet = "ethernet";
+static const char* kNetworkTypeWifi = "wifi";
+static const char* kNetworkTypeCellular = "cellular";
+static const char* kNetworkTypeOther = "other";
+
+static const char* kNetworkStatusConnected = "connected";
+static const char* kNetworkStatusConnecting = "connecting";
+static const char* kNetworkStatusDisconnected = "disconnected";
+static const char* kNetworkStatusError = "error";
+}
+
namespace chromeos {
////////////////////////////////////////////////////////////////////////////////
@@ -31,13 +46,100 @@ namespace chromeos {
const int NetworkMenu::kNumWifiImages = 9;
NetworkMenu::NetworkMenu()
- : ALLOW_THIS_IN_INITIALIZER_LIST(network_menu_(this)),
- min_width_(-1) {
+ : min_width_(-1) {
+ network_menu_.reset(NetworkMenuUI::CreateMenu2(this));
}
NetworkMenu::~NetworkMenu() {
}
+bool NetworkMenu::GetNetworkAt(int index, NetworkInfo* info) const {
+ DCHECK(info);
+ bool res = true; // True unless a network doesn't exist.
+ int flags = menu_items_[index].flags;
+ NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary();
+ if (flags & FLAG_ETHERNET) {
+ info->network_type = kNetworkTypeEthernet;
+ if (cros->ethernet_connected()) {
+ info->status = kNetworkStatusConnected;
+ info->ip_address = cros->ethernet_network().ip_address();
+ }
+ info->need_passphrase = false;
+ info->remembered = true;
+ } else if (flags & FLAG_WIFI) {
+ WifiNetwork wifi;
+ bool found = cros->FindWifiNetworkByPath(
+ menu_items_[index].wireless_path, &wifi);
+ if (found) {
+ info->network_type = kNetworkTypeWifi;
+ if (wifi.name() == cros->wifi_name()) {
+ if (cros->wifi_connected()) {
+ info->status = kNetworkStatusConnected;
+ info->message = l10n_util::GetStringUTF8(
+ IDS_STATUSBAR_NETWORK_DEVICE_CONNECTED);
+ } else if (cros->wifi_connecting()) {
+ info->status = kNetworkStatusConnecting;
+ // TODO(stevenjb): Eliminate status message, or localize properly.
+ info->message = l10n_util::GetStringUTF8(
+ IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING)
+ + ": " + wifi.GetStateString();
+ } else if (wifi.state() == STATE_FAILURE) {
+ info->status = kNetworkStatusError;
+ info->message = wifi.GetErrorString();
+ } else {
+ info->status = kNetworkStatusDisconnected;
+ info->message = l10n_util::GetStringUTF8(
+ IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED);
+ }
+ }
+ info->ip_address = wifi.ip_address();
+ info->need_passphrase = wifi.encrypted();
+ info->remembered = wifi.favorite();
+ } else {
+ res = false; // Network not found, hide entry.
+ }
+ } else if (flags & FLAG_CELLULAR) {
+ CellularNetwork cellular;
+ bool found = cros->FindCellularNetworkByPath(
+ menu_items_[index].wireless_path, &cellular);
+ if (found) {
+ info->network_type = kNetworkTypeCellular;
+ if (cellular.name() == cros->cellular_name()) {
+ if (cros->cellular_connected()) {
+ info->status = kNetworkStatusConnected;
+ info->message = l10n_util::GetStringUTF8(
+ IDS_STATUSBAR_NETWORK_DEVICE_CONNECTED);
+ } else if (cros->cellular_connecting()) {
+ // TODO(stevenjb): Eliminate status message, or localize properly.
+ info->status = kNetworkStatusConnecting;
+ info->message = l10n_util::GetStringUTF8(
+ IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING)
+ + ": " + cellular.GetStateString();
+ } else if (cellular.state() == STATE_FAILURE) {
+ info->status = kNetworkStatusError;
+ info->message = cellular.GetErrorString();
+ } else {
+ info->status = kNetworkStatusDisconnected;
+ info->message = l10n_util::GetStringUTF8(
+ IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED);
+ }
+ }
+ info->ip_address = cellular.ip_address();
+ info->need_passphrase = false;
+ info->remembered = true;
+ } else {
+ res = false; // Network not found, hide entry.
+ }
+ } else if (flags & FLAG_OTHER_NETWORK) {
+ info->network_type = kNetworkTypeOther;
+ info->need_passphrase = true;
+ info->remembered = true;
+ } else {
+ // Not a network, e.g options, separator.
+ }
+ return res;
+}
+
////////////////////////////////////////////////////////////////////////////////
// NetworkMenu, menus::MenuModel implementation:
@@ -205,11 +307,11 @@ void NetworkMenu::ActivatedAt(int index) {
void NetworkMenu::SetFirstLevelMenuWidth(int width) {
min_width_ = width;
// This actually has no effect since menu is rebuilt before showing.
- network_menu_.SetMinimumWidth(width);
+ network_menu_->SetMinimumWidth(width);
}
void NetworkMenu::CancelMenu() {
- network_menu_.CancelMenu();
+ network_menu_->CancelMenu();
}
// static
@@ -275,15 +377,15 @@ void NetworkMenu::RunMenu(views::View* source, const gfx::Point& pt) {
cros->RequestWifiScan();
cros->UpdateSystemInfo();
InitMenuItems();
- network_menu_.Rebuild();
- network_menu_.UpdateStates();
+ network_menu_->Rebuild();
+ network_menu_->UpdateStates();
// Restore menu width, if it was set up.
// NOTE: width isn't checked for correctness here since all width-related
// logic implemented inside |network_menu_|.
if (min_width_ != -1)
- network_menu_.SetMinimumWidth(min_width_);
+ network_menu_->SetMinimumWidth(min_width_);
refreshing_menu_ = false;
- network_menu_.RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT);
+ network_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT);
}
void NetworkMenu::InitMenuItems() {
@@ -383,13 +485,6 @@ void NetworkMenu::InitMenuItems() {
// Separator.
menu_items_.push_back(MenuItem());
- // IP address
- if (cros->Connected()) {
- menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND,
- ASCIIToUTF16(cros->IPAddress()), SkBitmap(),
- std::string(), FLAG_DISABLED));
- }
-
// Network settings.
if (ShouldOpenButtonOptions()) {
label =
« no previous file with comments | « chrome/browser/chromeos/status/network_menu.h ('k') | chrome/browser/dom_ui/dom_ui_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698