Index: chrome/browser/chromeos/status/network_menu_button.cc |
=================================================================== |
--- chrome/browser/chromeos/status/network_menu_button.cc (revision 50505) |
+++ chrome/browser/chromeos/status/network_menu_button.cc (working copy) |
@@ -116,18 +116,24 @@ |
window->Show(); |
} |
} else if (flags & FLAG_WIFI) { |
- WifiNetwork wifi = menu_items_[index].wifi_network; |
- |
- // If clicked on a network that we are already connected to or we are |
- // currently trying to connect to, then open config dialog. |
- if (wifi.name() == cros->wifi_name()) { |
+ WifiNetwork wifi; |
+ bool wifi_exists = cros->FindWifiNetworkByPath( |
+ menu_items_[index].wireless_path, &wifi); |
+ if (!wifi_exists) { |
+ // If we are attempting to connect to a network that no longer exists, |
+ // display a notification. |
+ // TODO(stevenjb): Show notification. |
+ } else if (wifi.name() == cros->wifi_name()) { |
if (cros->wifi_connected()) { |
+ // If we are already connected, open the config dialog. |
NetworkConfigView* view = new NetworkConfigView(wifi, false); |
view->set_browser_mode(host_->IsBrowserMode()); |
views::Window* window = views::Window::CreateChromeWindow( |
host_->GetNativeWindow(), gfx::Rect(), view); |
window->SetIsAlwaysOnTop(true); |
window->Show(); |
+ } else { |
+ // TODO(stevenjb): Connection in progress. Show dialog? |
} |
} else { |
// If wifi network is not encrypted, then directly connect. |
@@ -145,11 +151,17 @@ |
} |
} |
} else if (flags & FLAG_CELLULAR) { |
- CellularNetwork cellular = menu_items_[index].cellular_network; |
+ CellularNetwork cellular; |
+ bool cellular_exists = cros->FindCellularNetworkByPath( |
+ menu_items_[index].wireless_path, &cellular); |
- // If clicked on a network that we are already connected to or we are |
- // currently trying to connect to, then open config dialog. |
- if (cellular.name() == cros->cellular_name()) { |
+ 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()) { |
NetworkConfigView* view = new NetworkConfigView(cellular); |
view->set_browser_mode(host_->IsBrowserMode()); |
@@ -157,6 +169,8 @@ |
host_->GetNativeWindow(), gfx::Rect(), view); |
window->SetIsAlwaysOnTop(true); |
window->Show(); |
+ } else { |
+ // TODO(stevenjb): Connection in progress. Show dialog? |
} |
} else { |
cros->ConnectToCellularNetwork(cellular); |
@@ -422,7 +436,7 @@ |
int flag = (cros->ethernet_connecting() || cros->ethernet_connected()) ? |
FLAG_ETHERNET | FLAG_ASSOCIATED : FLAG_ETHERNET; |
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
- IconForDisplay(icon, badge), WifiNetwork(), CellularNetwork(), flag)); |
+ IconForDisplay(icon, badge), std::string(), flag)); |
// Wifi |
const WifiNetworkVector& wifi_networks = cros->wifi_networks(); |
@@ -435,8 +449,7 @@ |
flag = (wifi_networks[i].name() == cros->wifi_name()) ? |
FLAG_WIFI | FLAG_ASSOCIATED : FLAG_WIFI; |
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
- IconForDisplay(icon, badge), wifi_networks[i], CellularNetwork(), |
- flag)); |
+ IconForDisplay(icon, badge), wifi_networks[i].service_path(), flag)); |
} |
// Cellular |
@@ -451,7 +464,7 @@ |
flag = (cell_networks[i].name() == cros->cellular_name()) ? |
FLAG_CELLULAR | FLAG_ASSOCIATED : FLAG_CELLULAR; |
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
- IconForDisplay(icon, badge), WifiNetwork(), cell_networks[i], flag)); |
+ IconForDisplay(icon, badge), cell_networks[i].service_path(), flag)); |
} |
// No networks available message. |
@@ -459,7 +472,7 @@ |
label = l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT, |
l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE)); |
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
- SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_DISABLED)); |
+ SkBitmap(), std::string(), FLAG_DISABLED)); |
} |
// Other networks |
@@ -467,7 +480,7 @@ |
l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_OTHER_NETWORKS), |
IconForDisplay(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), |
SkBitmap()), |
- WifiNetwork(), CellularNetwork(), FLAG_OTHER_NETWORK)); |
+ std::string(), FLAG_OTHER_NETWORK)); |
if (cros->wifi_available() || cros->cellular_available()) { |
// Separator. |
@@ -480,7 +493,7 @@ |
label = l10n_util::GetStringFUTF16(id, |
l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI)); |
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
- SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_WIFI)); |
+ SkBitmap(), std::string(), FLAG_TOGGLE_WIFI)); |
} |
// Turn Cellular Off. (only if cellular available) |
@@ -490,7 +503,7 @@ |
label = l10n_util::GetStringFUTF16(id, |
l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR)); |
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
- SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_CELLULAR)); |
+ SkBitmap(), std::string(), FLAG_TOGGLE_CELLULAR)); |
} |
} |
@@ -499,7 +512,7 @@ |
// menu_items_.push_back(MenuItem(cros->offline_mode() ? |
// menus::MenuModel::TYPE_CHECK : menus::MenuModel::TYPE_COMMAND, |
// l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OFFLINE_MODE), |
-// SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_OFFLINE)); |
+// SkBitmap(), std::string(), FLAG_TOGGLE_OFFLINE)); |
if (cros->Connected() || host_->ShouldOpenButtonOptions(this)) { |
// Separator. |
@@ -509,7 +522,7 @@ |
if (cros->Connected()) { |
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, |
ASCIIToUTF16(cros->IPAddress()), SkBitmap(), |
- WifiNetwork(), CellularNetwork(), FLAG_DISABLED)); |
+ std::string(), FLAG_DISABLED)); |
} |
// Network settings. |
@@ -517,7 +530,7 @@ |
label = |
l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG); |
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
- SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_OPTIONS)); |
+ SkBitmap(), std::string(), FLAG_OPTIONS)); |
} |
} |
} |