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

Unified Diff: chrome/browser/chromeos/status/network_menu.cc

Issue 3678006: Implement action interface in network_menu.js for 'connect'. (Closed)
Patch Set: Set status for non connected networks. 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
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 7e269e91e81d8fb54beb272a13b5e73b4981c3cb..e73890962e8a68a3c914f29519ccc41b3b766d76 100644
--- a/chrome/browser/chromeos/status/network_menu.cc
+++ b/chrome/browser/chromeos/status/network_menu.cc
@@ -91,6 +91,10 @@ bool NetworkMenu::GetNetworkAt(int index, NetworkInfo* info) const {
info->message = l10n_util::GetStringUTF8(
IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED);
}
+ } 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();
@@ -123,6 +127,10 @@ bool NetworkMenu::GetNetworkAt(int index, NetworkInfo* info) const {
info->message = l10n_util::GetStringUTF8(
IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED);
}
+ } else {
+ info->status = kNetworkStatusDisconnected;
+ info->message = l10n_util::GetStringUTF8(
+ IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED);
}
info->ip_address = cellular.ip_address();
info->need_passphrase = false;
@@ -131,6 +139,9 @@ bool NetworkMenu::GetNetworkAt(int index, NetworkInfo* info) const {
res = false; // Network not found, hide entry.
}
} else if (flags & FLAG_OTHER_NETWORK) {
+ info->status = kNetworkStatusDisconnected;
+ info->message = l10n_util::GetStringUTF8(
+ IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED);
info->network_type = kNetworkTypeOther;
info->need_passphrase = true;
info->remembered = true;
@@ -140,6 +151,47 @@ bool NetworkMenu::GetNetworkAt(int index, NetworkInfo* info) const {
return res;
}
+void NetworkMenu::ConnectToNetworkAt(int index,
+ const std::string& passphrase,
+ const std::string& identity) const {
+ int flags = menu_items_[index].flags;
+ NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary();
+ if (flags & FLAG_WIFI) {
+ WifiNetwork wifi;
+ bool found = cros->FindWifiNetworkByPath(
+ menu_items_[index].wireless_path, &wifi);
+ if (found) {
+ // Connect or reconnect.
+ if (wifi.encrypted()) {
+ if (wifi.IsCertificateLoaded()) {
+ cros->ConnectToWifiNetwork(wifi, std::string(),
+ std::string(), wifi.cert_path());
+ } else {
+ // TODO(stevenjb): use passphrase/identity once provided.
+ // cros->ConnectToWifiNetwork(wifi, passphrase,
+ // identity, menu_items[index].path);
+ const bool kFocusLogin = true;
+ ShowNetworkConfigView(new NetworkConfigView(wifi, true), kFocusLogin);
+ }
+ } else {
+ cros->ConnectToWifiNetwork(wifi, std::string(),
+ std::string(), std::string());
+ }
+ }
+ } else if (flags & FLAG_CELLULAR) {
+ CellularNetwork cellular;
+ bool found = cros->FindCellularNetworkByPath(
+ menu_items_[index].wireless_path, &cellular);
+ if (found) {
+ // Connect or reconnect.
+ cros->ConnectToCellularNetwork(cellular);
+ }
+ } else if (flags & FLAG_OTHER_NETWORK) {
+ const bool kFocusLogin = true;
+ ShowNetworkConfigView(new NetworkConfigView(), kFocusLogin);
+ }
+}
+
////////////////////////////////////////////////////////////////////////////////
// NetworkMenu, menus::MenuModel implementation:
@@ -178,17 +230,6 @@ bool NetworkMenu::IsEnabledAt(int index) const {
return !(menu_items_[index].flags & FLAG_DISABLED);
}
-void NetworkMenu::ShowTabbedNetworkSettings(const Network& network) {
- Browser* browser = BrowserList::GetLastActive();
- if (!browser)
- return;
- std::string page = StringPrintf("%s?servicePath=%s&networkType=%d",
- chrome::kInternetOptionsSubPage,
- EscapeUrlEncodedData(network.service_path()).c_str(),
- network.type());
- browser->ShowOptionsTab(page);
-}
-
void NetworkMenu::ActivatedAt(int index) {
// When we are refreshing the menu, ignore menu item activation.
if (refreshing_menu_)
@@ -207,27 +248,16 @@ void NetworkMenu::ActivatedAt(int index) {
} else if (flags & FLAG_TOGGLE_OFFLINE) {
cros->EnableOfflineMode(!cros->offline_mode());
} else if (flags & FLAG_OTHER_NETWORK) {
- NetworkConfigView* view = new NetworkConfigView();
- view->set_browser_mode(IsBrowserMode());
- views::Window* window = browser::CreateViewsWindow(GetNativeWindow(),
- gfx::Rect(),
- view);
- window->SetIsAlwaysOnTop(true);
- window->Show();
- view->SetLoginTextfieldFocus();
+ const bool kFocusLogin = true;
+ ShowNetworkConfigView(new NetworkConfigView(), kFocusLogin);
} else if (flags & FLAG_ETHERNET) {
if (cros->ethernet_connected()) {
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableTabbedOptions)) {
ShowTabbedNetworkSettings(cros->ethernet_network());
} else {
- NetworkConfigView* view =
- new NetworkConfigView(cros->ethernet_network());
- view->set_browser_mode(IsBrowserMode());
- views::Window* window = browser::CreateViewsWindow(
- GetNativeWindow(), gfx::Rect(), view);
- window->SetIsAlwaysOnTop(true);
- window->Show();
+ ShowNetworkConfigView(
Charlie Lee 2010/10/15 06:34:32 while you are at it, add the const here also
+ new NetworkConfigView(cros->ethernet_network()), false);
}
}
} else if (flags & FLAG_WIFI) {
@@ -240,35 +270,25 @@ void NetworkMenu::ActivatedAt(int index) {
// TODO(stevenjb): Show notification.
} else if (wifi.name() == cros->wifi_name()) {
if (cros->wifi_connected()) {
+ // If we are already connected, show the config settings.
if (CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableTabbedOptions)) {
ShowTabbedNetworkSettings(wifi);
} else {
- // If we are already connected, open the config dialog.
- NetworkConfigView* view = new NetworkConfigView(wifi, false);
- view->set_browser_mode(IsBrowserMode());
- views::Window* window = browser::CreateViewsWindow(
- GetNativeWindow(), gfx::Rect(), view);
- window->SetIsAlwaysOnTop(true);
- window->Show();
+ ShowNetworkConfigView(new NetworkConfigView(wifi, false), false);
Charlie Lee 2010/10/15 06:34:32 and here
}
} else {
// TODO(stevenjb): Connection in progress. Show dialog?
}
} else {
// If wifi network is not encrypted, then directly connect.
- // Otherwise, we open password dialog window.
+ // Otherwise, open the password dialog window.
if (!wifi.encrypted()) {
cros->ConnectToWifiNetwork(wifi, std::string(),
std::string(), std::string());
} else {
- NetworkConfigView* view = new NetworkConfigView(wifi, true);
- view->set_browser_mode(IsBrowserMode());
- views::Window* window = browser::CreateViewsWindow(
- GetNativeWindow(), gfx::Rect(), view);
- window->SetIsAlwaysOnTop(true);
- window->Show();
- view->SetLoginTextfieldFocus();
+ const bool kFocusLogin = true;
+ ShowNetworkConfigView(new NetworkConfigView(wifi, true), kFocusLogin);
}
}
} else if (flags & FLAG_CELLULAR) {
@@ -288,12 +308,7 @@ void NetworkMenu::ActivatedAt(int index) {
switches::kEnableTabbedOptions)) {
ShowTabbedNetworkSettings(cellular);
} else {
- NetworkConfigView* view = new NetworkConfigView(cellular);
- view->set_browser_mode(IsBrowserMode());
- views::Window* window = browser::CreateViewsWindow(
- GetNativeWindow(), gfx::Rect(), view);
- window->SetIsAlwaysOnTop(true);
- window->Show();
+ ShowNetworkConfigView(new NetworkConfigView(cellular), false);
}
} else {
// TODO(stevenjb): Connection in progress. Show dialog?
@@ -314,6 +329,13 @@ void NetworkMenu::CancelMenu() {
network_menu_->CancelMenu();
}
+void NetworkMenu::UpdateMenu() {
+ refreshing_menu_ = true;
+ InitMenuItems();
+ network_menu_->Rebuild();
+ refreshing_menu_ = false;
+}
+
// static
SkBitmap NetworkMenu::IconForNetworkStrength(int strength, bool black) {
// Compose wifi icon by superimposing various icons.
@@ -378,7 +400,6 @@ void NetworkMenu::RunMenu(views::View* source, const gfx::Point& pt) {
cros->UpdateSystemInfo();
InitMenuItems();
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_|.
@@ -389,31 +410,37 @@ void NetworkMenu::RunMenu(views::View* source, const gfx::Point& pt) {
}
void NetworkMenu::InitMenuItems() {
+ // This gets called on initialization, so any changes should be reflected
+ // in CrosMock::SetNetworkLibraryStatusAreaExpectations().
+
menu_items_.clear();
// Populate our MenuItems with the current list of wifi networks.
NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary();
ResourceBundle& rb = ResourceBundle::GetSharedInstance();
// Ethernet
+ bool ethernet_connected = cros->ethernet_connected();
+ bool ethernet_connecting = cros->ethernet_connecting();
string16 label = l10n_util::GetStringUTF16(
IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET);
SkBitmap icon = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK);
- SkBitmap badge = cros->ethernet_connecting() || cros->ethernet_connected() ?
+ SkBitmap badge = ethernet_connecting || ethernet_connected ?
SkBitmap() : *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED);
- int flag = (cros->ethernet_connecting() || cros->ethernet_connected()) ?
+ int flag = (ethernet_connecting || ethernet_connected) ?
FLAG_ETHERNET | FLAG_ASSOCIATED : FLAG_ETHERNET;
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
IconForDisplay(icon, badge), std::string(), flag));
// Wifi
const WifiNetworkVector& wifi_networks = cros->wifi_networks();
+ const std::string& active_wifi_name = cros->wifi_name();
// Wifi networks ssids.
for (size_t i = 0; i < wifi_networks.size(); ++i) {
label = ASCIIToUTF16(wifi_networks[i].name());
SkBitmap icon = IconForNetworkStrength(wifi_networks[i].strength(), true);
SkBitmap badge = wifi_networks[i].encrypted() ?
*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE) : SkBitmap();
- flag = (wifi_networks[i].name() == cros->wifi_name()) ?
+ flag = (wifi_networks[i].name() == active_wifi_name) ?
FLAG_WIFI | FLAG_ASSOCIATED : FLAG_WIFI;
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
IconForDisplay(icon, badge), wifi_networks[i].service_path(), flag));
@@ -421,6 +448,7 @@ void NetworkMenu::InitMenuItems() {
// Cellular
const CellularNetworkVector& cell_networks = cros->cellular_networks();
+ const std::string& active_cellular_name = cros->cellular_name();
// Cellular networks ssids.
for (size_t i = 0; i < cell_networks.size(); ++i) {
label = ASCIIToUTF16(cell_networks[i].name());
@@ -428,7 +456,7 @@ void NetworkMenu::InitMenuItems() {
// TODO(chocobo): Check cellular network 3g/edge.
SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G);
// SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE);
- flag = (cell_networks[i].name() == cros->cellular_name()) ?
+ flag = (cell_networks[i].name() == active_cellular_name) ?
FLAG_CELLULAR | FLAG_ASSOCIATED : FLAG_CELLULAR;
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
IconForDisplay(icon, badge), cell_networks[i].service_path(), flag));
@@ -449,12 +477,14 @@ void NetworkMenu::InitMenuItems() {
SkBitmap()),
std::string(), FLAG_OTHER_NETWORK));
- if (cros->wifi_available() || cros->cellular_available()) {
+ bool wifi_available = cros->wifi_available();
+ bool cellular_available = cros->cellular_available();
+ if (wifi_available || cellular_available) {
// Separator.
menu_items_.push_back(MenuItem());
// Turn Wifi Off. (only if wifi available)
- if (cros->wifi_available()) {
+ if (wifi_available) {
int id = cros->wifi_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE :
IDS_STATUSBAR_NETWORK_DEVICE_ENABLE;
label = l10n_util::GetStringFUTF16(id,
@@ -464,7 +494,7 @@ void NetworkMenu::InitMenuItems() {
}
// Turn Cellular Off. (only if cellular available)
- if (cros->cellular_available()) {
+ if (cellular_available) {
int id = cros->cellular_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE :
IDS_STATUSBAR_NETWORK_DEVICE_ENABLE;
label = l10n_util::GetStringFUTF16(id,
@@ -495,4 +525,27 @@ void NetworkMenu::InitMenuItems() {
}
}
+void NetworkMenu::ShowTabbedNetworkSettings(const Network& network) {
+ Browser* browser = BrowserList::GetLastActive();
+ if (!browser)
+ return;
+ std::string page = StringPrintf("%s?servicePath=%s&networkType=%d",
+ chrome::kInternetOptionsSubPage,
+ EscapeUrlEncodedData(network.service_path()).c_str(),
+ network.type());
+ browser->ShowOptionsTab(page);
+}
+
+// TODO(stevenjb): deprecate this once all of the UI is embedded in the menu.
+void NetworkMenu::ShowNetworkConfigView(NetworkConfigView* view,
+ bool focus_login) const {
+ view->set_browser_mode(IsBrowserMode());
+ views::Window* window = browser::CreateViewsWindow(
+ GetNativeWindow(), gfx::Rect(), view);
+ window->SetIsAlwaysOnTop(true);
+ window->Show();
+ if (focus_login)
+ view->SetLoginTextfieldFocus();
+}
+
} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/status/network_menu.h ('k') | chrome/browser/chromeos/status/network_menu_button.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698