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

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

Issue 3796008: Fixed some logic bugs in the Network Menu DOM UI (7343) (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') | no next file » | 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 e73890962e8a68a3c914f29519ccc41b3b766d76..149721c505f285e0e9d79090d5b2660af1f88320 100644
--- a/chrome/browser/chromeos/status/network_menu.cc
+++ b/chrome/browser/chromeos/status/network_menu.cc
@@ -96,8 +96,17 @@ bool NetworkMenu::GetNetworkAt(int index, NetworkInfo* info) const {
info->message = l10n_util::GetStringUTF8(
IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED);
}
+ if (wifi.encrypted()) {
+ if (wifi.IsCertificateLoaded() ||
+ wifi.encryption() == SECURITY_8021X) {
+ info->need_passphrase = false;
+ } else {
+ info->need_passphrase = true;
+ }
+ } else {
+ info->need_passphrase = false;
+ }
info->ip_address = wifi.ip_address();
- info->need_passphrase = wifi.encrypted();
info->remembered = wifi.favorite();
} else {
res = false; // Network not found, hide entry.
@@ -151,9 +160,10 @@ bool NetworkMenu::GetNetworkAt(int index, NetworkInfo* info) const {
return res;
}
-void NetworkMenu::ConnectToNetworkAt(int index,
+bool NetworkMenu::ConnectToNetworkAt(int index,
const std::string& passphrase,
- const std::string& identity) const {
+ const std::string& ssid,
+ int remember) const {
int flags = menu_items_[index].flags;
NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary();
if (flags & FLAG_WIFI) {
@@ -162,20 +172,22 @@ void NetworkMenu::ConnectToNetworkAt(int index,
menu_items_[index].wireless_path, &wifi);
if (found) {
// Connect or reconnect.
+ if (remember >= 0)
+ wifi.set_favorite(remember ? true : false);
if (wifi.encrypted()) {
if (wifi.IsCertificateLoaded()) {
- cros->ConnectToWifiNetwork(wifi, std::string(),
- std::string(), wifi.cert_path());
+ cros->ConnectToWifiNetwork(wifi, std::string(), std::string(),
+ wifi.cert_path());
+ } else if (wifi.encryption() == SECURITY_8021X) {
+ // Show the wifi settings/dialog to load/select a certificate.
+ ShowWifi(wifi, true);
} 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);
+ cros->ConnectToWifiNetwork(wifi, passphrase, std::string(),
+ std::string());
}
} else {
- cros->ConnectToWifiNetwork(wifi, std::string(),
- std::string(), std::string());
+ cros->ConnectToWifiNetwork(wifi, std::string(), std::string(),
+ std::string());
}
}
} else if (flags & FLAG_CELLULAR) {
@@ -187,9 +199,11 @@ void NetworkMenu::ConnectToNetworkAt(int index,
cros->ConnectToCellularNetwork(cellular);
}
} else if (flags & FLAG_OTHER_NETWORK) {
- const bool kFocusLogin = true;
- ShowNetworkConfigView(new NetworkConfigView(), kFocusLogin);
+ bool favorite = remember == 0 ? false : true; // default is true
+ cros->ConnectToWifiNetwork(ssid, passphrase, std::string(), std::string(),
+ favorite);
}
+ return true;
}
////////////////////////////////////////////////////////////////////////////////
@@ -248,17 +262,10 @@ void NetworkMenu::ActivatedAt(int index) {
} else if (flags & FLAG_TOGGLE_OFFLINE) {
cros->EnableOfflineMode(!cros->offline_mode());
} else if (flags & FLAG_OTHER_NETWORK) {
- const bool kFocusLogin = true;
- ShowNetworkConfigView(new NetworkConfigView(), kFocusLogin);
+ ShowOther();
} else if (flags & FLAG_ETHERNET) {
if (cros->ethernet_connected()) {
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableTabbedOptions)) {
- ShowTabbedNetworkSettings(cros->ethernet_network());
- } else {
- ShowNetworkConfigView(
- new NetworkConfigView(cros->ethernet_network()), false);
- }
+ ShowEthernet(cros->ethernet_network());
}
} else if (flags & FLAG_WIFI) {
WifiNetwork wifi;
@@ -269,52 +276,24 @@ void NetworkMenu::ActivatedAt(int index) {
// display a notification.
// 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 {
- ShowNetworkConfigView(new NetworkConfigView(wifi, false), false);
- }
- } else {
- // TODO(stevenjb): Connection in progress. Show dialog?
- }
+ // Show the config settings for the active network.
+ ShowWifi(wifi, false);
} else {
- // If wifi network is not encrypted, then directly connect.
- // Otherwise, open the password dialog window.
- if (!wifi.encrypted()) {
- cros->ConnectToWifiNetwork(wifi, std::string(),
- std::string(), std::string());
- } else {
- const bool kFocusLogin = true;
- ShowNetworkConfigView(new NetworkConfigView(wifi, true), kFocusLogin);
- }
+ ConnectToNetworkAt(index, std::string(), std::string(), -1);
}
} else if (flags & FLAG_CELLULAR) {
CellularNetwork cellular;
bool cellular_exists = cros->FindCellularNetworkByPath(
menu_items_[index].wireless_path, &cellular);
-
if (!cellular_exists) {
// If we are attempting to connect to a network that no longer exists,
// display a notification.
// TODO(stevenjb): Show notification.
} else if (cellular.name() == cros->cellular_name()) {
- // If clicked on a network that we are already connected to or we are
- // currently trying to connect to, then open config dialog.
- if (cros->cellular_connected()) {
- if (CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableTabbedOptions)) {
- ShowTabbedNetworkSettings(cellular);
- } else {
- ShowNetworkConfigView(new NetworkConfigView(cellular), false);
- }
- } else {
- // TODO(stevenjb): Connection in progress. Show dialog?
- }
+ // Show the config settings for the cellular network.
+ ShowCellular(cellular, false);
} else {
- cros->ConnectToCellularNetwork(cellular);
+ ConnectToNetworkAt(index, std::string(), std::string(), -1);
}
}
}
@@ -525,7 +504,7 @@ void NetworkMenu::InitMenuItems() {
}
}
-void NetworkMenu::ShowTabbedNetworkSettings(const Network& network) {
+void NetworkMenu::ShowTabbedNetworkSettings(const Network& network) const {
Browser* browser = BrowserList::GetLastActive();
if (!browser)
return;
@@ -536,7 +515,8 @@ void NetworkMenu::ShowTabbedNetworkSettings(const Network& network) {
browser->ShowOptionsTab(page);
}
-// TODO(stevenjb): deprecate this once all of the UI is embedded in the menu.
+// TODO(stevenjb): deprecate this once we've committed to the embedded
+// menu UI and fully deprecated NetworkConfigView.
void NetworkMenu::ShowNetworkConfigView(NetworkConfigView* view,
bool focus_login) const {
view->set_browser_mode(IsBrowserMode());
@@ -548,4 +528,48 @@ void NetworkMenu::ShowNetworkConfigView(NetworkConfigView* view,
view->SetLoginTextfieldFocus();
}
+void NetworkMenu::ShowWifi(const WifiNetwork& wifi, bool focus_login) const{
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableTabbedOptions)) {
+ ShowTabbedNetworkSettings(wifi);
+ } else {
+ ShowNetworkConfigView(new NetworkConfigView(wifi, true), focus_login);
+ }
+}
+
+void NetworkMenu::ShowCellular(const CellularNetwork& cellular,
+ bool focus_login) const {
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableTabbedOptions)) {
+ ShowTabbedNetworkSettings(cellular);
+ } else {
+ ShowNetworkConfigView(new NetworkConfigView(cellular), focus_login);
+ }
+}
+
+void NetworkMenu::ShowEthernet(const EthernetNetwork& ethernet) const {
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableTabbedOptions)) {
+ ShowTabbedNetworkSettings(ethernet);
+ } else {
+ ShowNetworkConfigView(new NetworkConfigView(ethernet), false);
+ }
+}
+
+void NetworkMenu::ShowOther() const {
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableTabbedOptions)) {
+ Browser* browser = BrowserList::GetLastActive();
+ if (browser) {
+ std::string page = StringPrintf("%s?networkType=%d",
+ chrome::kInternetOptionsSubPage,
+ chromeos::TYPE_WIFI);
+ browser->ShowOptionsTab(page);
+ }
+ } else {
+ const bool kFocusLogin = true;
+ ShowNetworkConfigView(new NetworkConfigView(), kFocusLogin);
+ }
+}
+
} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/status/network_menu.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698