| 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 df3d048322be9021d74e4b275bba27ecddf8a884..1461823ba2a3968a10d69d5bd84175a9a11df4f2 100644
|
| --- a/chrome/browser/chromeos/status/network_menu.cc
|
| +++ b/chrome/browser/chromeos/status/network_menu.cc
|
| @@ -78,6 +78,8 @@ const int NetworkMenu::kBarsImagesVLowData[kNumWifiImages] = {
|
|
|
| NetworkMenu::NetworkMenu()
|
| : min_width_(-1) {
|
| + use_settings_ui_ = CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kEnableTabbedOptions);
|
| network_menu_.reset(NetworkMenuUI::CreateMenu2(this));
|
| }
|
|
|
| @@ -110,10 +112,8 @@ bool NetworkMenu::GetNetworkAt(int index, NetworkInfo* info) const {
|
| 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();
|
| + IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING);
|
| } else if (wifi.state() == STATE_FAILURE) {
|
| info->status = kNetworkStatusError;
|
| info->message = wifi.GetErrorString();
|
| @@ -217,8 +217,12 @@ bool NetworkMenu::ConnectToNetworkAt(int index,
|
| // Show the wifi settings/dialog to load/select a certificate.
|
| ShowWifi(wifi, true);
|
| } else {
|
| - cros->ConnectToWifiNetwork(wifi, passphrase, std::string(),
|
| - std::string());
|
| + if (MenuUI::IsEnabled()) {
|
| + cros->ConnectToWifiNetwork(wifi, passphrase, std::string(),
|
| + std::string());
|
| + } else {
|
| + ShowWifi(wifi, true);
|
| + }
|
| }
|
| } else {
|
| cros->ConnectToWifiNetwork(wifi, std::string(), std::string(),
|
| @@ -324,6 +328,8 @@ void NetworkMenu::ActivatedAt(int index) {
|
| // If we are attempting to connect to a network that no longer exists,
|
| // display a notification.
|
| // TODO(stevenjb): Show notification.
|
| + } else if (cellular.activation_state() != ACTIVATION_STATE_ACTIVATED) {
|
| + ActivateCellular(cellular);
|
| } else if (cellular.service_path() ==
|
| cros->cellular_network().service_path()) {
|
| // Show the config settings for the cellular network.
|
| @@ -423,75 +429,143 @@ void NetworkMenu::InitMenuItems() {
|
| NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary();
|
| ResourceBundle& rb = ResourceBundle::GetSharedInstance();
|
|
|
| + bool no_networks = true;
|
| + string16 label;
|
| +
|
| // 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 = ethernet_connecting || ethernet_connected ?
|
| - SkBitmap() : *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED);
|
| - int flag = FLAG_ETHERNET;
|
| - if (ethernet_connecting || ethernet_connected)
|
| - flag |= FLAG_ASSOCIATED;
|
| - 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 WifiNetwork& active_wifi = cros->wifi_network();
|
| - // 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 = FLAG_WIFI;
|
| - if (wifi_networks[i].service_path() == active_wifi.service_path())
|
| + bool ethernet_available = cros->ethernet_available();
|
| + if (ethernet_available) {
|
| + no_networks = false;
|
| + bool ethernet_connected = cros->ethernet_connected();
|
| + bool ethernet_connecting = cros->ethernet_connecting();
|
| +
|
| + if (ethernet_connecting) {
|
| + label = l10n_util::GetStringFUTF16(
|
| + IDS_STATUSBAR_NETWORK_DEVICE_STATUS,
|
| + l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET),
|
| + l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING));
|
| + } else {
|
| + label = l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET);
|
| + }
|
| + SkBitmap icon = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK);
|
| + SkBitmap badge = ethernet_connecting || ethernet_connected ?
|
| + SkBitmap() : *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED);
|
| + int flag = FLAG_ETHERNET;
|
| + if (ethernet_connecting || ethernet_connected)
|
| flag |= FLAG_ASSOCIATED;
|
| - menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
|
| - IconForDisplay(icon, badge), wifi_networks[i].service_path(), flag));
|
| + menu_items_.push_back(
|
| + MenuItem(menus::MenuModel::TYPE_COMMAND, label,
|
| + IconForDisplay(icon, badge), std::string(), flag));
|
| }
|
|
|
| - // Cellular
|
| - const CellularNetworkVector& cell_networks = cros->cellular_networks();
|
| - const CellularNetwork& active_cellular = cros->cellular_network();
|
| - // Cellular networks ssids.
|
| - for (size_t i = 0; i < cell_networks.size(); ++i) {
|
| - label = ASCIIToUTF16(cell_networks[i].name());
|
| - SkBitmap icon = IconForNetworkStrength(cell_networks[i].strength(), true);
|
| - // TODO(chocobo): Check cellular network 3g/edge.
|
| - SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G);
|
| -// SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE);
|
| - flag = FLAG_CELLULAR;
|
| - if (cell_networks[i].service_path() == active_cellular.service_path())
|
| - flag |= FLAG_ASSOCIATED;
|
| - menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
|
| - IconForDisplay(icon, badge), cell_networks[i].service_path(), flag));
|
| + // Wifi Networks
|
| + bool wifi_available = cros->wifi_available();
|
| + if (wifi_available) {
|
| + const WifiNetworkVector& wifi_networks = cros->wifi_networks();
|
| + const WifiNetwork& active_wifi = cros->wifi_network();
|
| +
|
| + if (wifi_networks.size() > 0) {
|
| + no_networks = false;
|
| + // Separator
|
| + menu_items_.push_back(MenuItem());
|
| + }
|
| + // List Wifi networks.
|
| + for (size_t i = 0; i < wifi_networks.size(); ++i) {
|
| + if (wifi_networks[i].connecting()) {
|
| + label = l10n_util::GetStringFUTF16(
|
| + IDS_STATUSBAR_NETWORK_DEVICE_STATUS,
|
| + ASCIIToUTF16(wifi_networks[i].name()),
|
| + l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING));
|
| + } else {
|
| + 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();
|
| + int flag = FLAG_WIFI;
|
| + if (wifi_networks[i].service_path() == active_wifi.service_path())
|
| + flag |= FLAG_ASSOCIATED;
|
| + menu_items_.push_back(
|
| + MenuItem(menus::MenuModel::TYPE_COMMAND, label,
|
| + IconForDisplay(icon, badge),
|
| + wifi_networks[i].service_path(), flag));
|
| + }
|
| + }
|
| +
|
| + // Cellular Networks
|
| + bool cellular_available = cros->cellular_available();
|
| + if (cellular_available) {
|
| + const CellularNetworkVector& cell_networks = cros->cellular_networks();
|
| + const CellularNetwork& active_cellular = cros->cellular_network();
|
| +
|
| + if (cell_networks.size() > 0) {
|
| + no_networks = false;
|
| + // Separator
|
| + menu_items_.push_back(MenuItem());
|
| + }
|
| + // List Cellular networks.
|
| + for (size_t i = 0; i < cell_networks.size(); ++i) {
|
| + chromeos::ActivationState activation_state =
|
| + cell_networks[i].activation_state();
|
| + if (activation_state == ACTIVATION_STATE_NOT_ACTIVATED) {
|
| + label = l10n_util::GetStringFUTF16(
|
| + IDS_STATUSBAR_NETWORK_DEVICE_ACTIVATE,
|
| + ASCIIToUTF16(cell_networks[i].name()));
|
| + } else if (activation_state == ACTIVATION_STATE_PARTIALLY_ACTIVATED ||
|
| + activation_state == ACTIVATION_STATE_ACTIVATING) {
|
| + label = l10n_util::GetStringFUTF16(
|
| + IDS_STATUSBAR_NETWORK_DEVICE_STATUS,
|
| + ASCIIToUTF16(cell_networks[i].name()),
|
| + l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ACTIVATING));
|
| + } else if (cell_networks[i].connecting()) {
|
| + label = l10n_util::GetStringFUTF16(
|
| + IDS_STATUSBAR_NETWORK_DEVICE_STATUS,
|
| + ASCIIToUTF16(cell_networks[i].name()),
|
| + l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING));
|
| + } else {
|
| + label = ASCIIToUTF16(cell_networks[i].name());
|
| + }
|
| + SkBitmap icon = IconForNetworkStrength(cell_networks[i].strength(), true);
|
| + // TODO(chocobo): Check cellular network 3g/edge.
|
| + SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G);
|
| + // SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE);
|
| + int flag = FLAG_CELLULAR;
|
| + if (cell_networks[i].service_path() == active_cellular.service_path() &&
|
| + (cell_networks[i].connecting() || cell_networks[i].connected()))
|
| + flag |= FLAG_ASSOCIATED;
|
| + menu_items_.push_back(
|
| + MenuItem(menus::MenuModel::TYPE_COMMAND, label,
|
| + IconForDisplay(icon, badge),
|
| + cell_networks[i].service_path(), flag));
|
| + }
|
| }
|
|
|
| // No networks available message.
|
| - if (wifi_networks.empty() && cell_networks.empty()) {
|
| + if (no_networks) {
|
| 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(), std::string(), FLAG_DISABLED));
|
| }
|
|
|
| - // Other networks
|
| - menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND,
|
| - l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_OTHER_NETWORKS),
|
| - IconForDisplay(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0_BLACK),
|
| - SkBitmap()),
|
| - std::string(), FLAG_OTHER_NETWORK));
|
| + // Add network.
|
| + if (wifi_available) {
|
| + // Separator
|
| + menu_items_.push_back(MenuItem());
|
|
|
| - bool wifi_available = cros->wifi_available();
|
| - bool cellular_available = cros->cellular_available();
|
| + menu_items_.push_back(MenuItem(
|
| + menus::MenuModel::TYPE_COMMAND,
|
| + l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_OTHER_NETWORKS),
|
| + IconForDisplay(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0_BLACK),
|
| + SkBitmap()),
|
| + std::string(), FLAG_OTHER_NETWORK));
|
| + }
|
| +
|
| + // Enable / disable wireless.
|
| if (wifi_available || cellular_available) {
|
| - // Separator.
|
| + // Separator
|
| menu_items_.push_back(MenuItem());
|
|
|
| - // Turn Wifi Off. (only if wifi available)
|
| if (wifi_available) {
|
| int id = cros->wifi_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE :
|
| IDS_STATUSBAR_NETWORK_DEVICE_ENABLE;
|
| @@ -501,10 +575,9 @@ void NetworkMenu::InitMenuItems() {
|
| SkBitmap(), std::string(), FLAG_TOGGLE_WIFI));
|
| }
|
|
|
| - // Turn Cellular Off. (only if cellular available)
|
| if (cellular_available) {
|
| int id = cros->cellular_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE :
|
| - IDS_STATUSBAR_NETWORK_DEVICE_ENABLE;
|
| + IDS_STATUSBAR_NETWORK_DEVICE_ENABLE;
|
| label = l10n_util::GetStringFUTF16(id,
|
| l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR));
|
| menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
|
| @@ -512,24 +585,22 @@ void NetworkMenu::InitMenuItems() {
|
| }
|
| }
|
|
|
| - // TODO(chocobo): Uncomment once we figure out how to do offline mode.
|
| // Offline mode.
|
| -// 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(), std::string(), FLAG_TOGGLE_OFFLINE));
|
| + // TODO(chocobo): Uncomment once we figure out how to do offline mode.
|
| + // 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(), std::string(), FLAG_TOGGLE_OFFLINE));
|
|
|
| - if (cros->Connected() || ShouldOpenButtonOptions()) {
|
| + // Network settings.
|
| + if (ShouldOpenButtonOptions()) {
|
| // Separator.
|
| menu_items_.push_back(MenuItem());
|
|
|
| - // Network settings.
|
| - if (ShouldOpenButtonOptions()) {
|
| - label =
|
| - l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG);
|
| - menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
|
| - SkBitmap(), std::string(), FLAG_OPTIONS));
|
| - }
|
| + label =
|
| + l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG);
|
| + menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
|
| + SkBitmap(), std::string(), FLAG_OPTIONS));
|
| }
|
| }
|
|
|
| @@ -544,8 +615,10 @@ void NetworkMenu::ShowTabbedNetworkSettings(const Network& network) const {
|
| browser->ShowOptionsTab(page);
|
| }
|
|
|
| -// TODO(stevenjb): deprecate this once we've committed to the embedded
|
| -// menu UI and fully deprecated NetworkConfigView.
|
| +// TODO(stevenjb): deprecate this once we've committed to tabbed settings
|
| +// and the embedded menu UI (and fully deprecated NetworkConfigView).
|
| +// Meanwhile, if MenuUI::IsEnabled() is true, always show the settings UI,
|
| +// otherwise show NetworkConfigView only to get passwords when not connected.
|
| void NetworkMenu::ShowNetworkConfigView(NetworkConfigView* view,
|
| bool focus_login) const {
|
| view->set_browser_mode(IsBrowserMode());
|
| @@ -558,8 +631,8 @@ void NetworkMenu::ShowNetworkConfigView(NetworkConfigView* view,
|
| }
|
|
|
| void NetworkMenu::ShowWifi(const WifiNetwork& wifi, bool focus_login) const{
|
| - if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kEnableTabbedOptions)) {
|
| + if (use_settings_ui_ &&
|
| + (MenuUI::IsEnabled() || wifi.connected() || wifi.connecting())) {
|
| ShowTabbedNetworkSettings(wifi);
|
| } else {
|
| ShowNetworkConfigView(new NetworkConfigView(wifi, true), focus_login);
|
| @@ -568,17 +641,23 @@ void NetworkMenu::ShowWifi(const WifiNetwork& wifi, bool focus_login) const{
|
|
|
| void NetworkMenu::ShowCellular(const CellularNetwork& cellular,
|
| bool focus_login) const {
|
| - if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kEnableTabbedOptions)) {
|
| + if (use_settings_ui_ &&
|
| + (MenuUI::IsEnabled() || cellular.connected() || cellular.connecting())) {
|
| ShowTabbedNetworkSettings(cellular);
|
| } else {
|
| ShowNetworkConfigView(new NetworkConfigView(cellular), focus_login);
|
| }
|
| }
|
|
|
| +void NetworkMenu::ActivateCellular(const CellularNetwork& cellular) const {
|
| + Browser* browser = BrowserList::GetLastActive();
|
| + // TODO?(stevenjb) : specify which service to activate.
|
| + browser->ShowSingletonTab(GURL(chrome::kChromeUIMobileSetupURL));
|
| +}
|
| +
|
| void NetworkMenu::ShowEthernet(const EthernetNetwork& ethernet) const {
|
| - if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kEnableTabbedOptions)) {
|
| + if (use_settings_ui_ &&
|
| + (MenuUI::IsEnabled() || ethernet.connected() || ethernet.connecting())) {
|
| ShowTabbedNetworkSettings(ethernet);
|
| } else {
|
| ShowNetworkConfigView(new NetworkConfigView(ethernet), false);
|
| @@ -586,8 +665,7 @@ void NetworkMenu::ShowEthernet(const EthernetNetwork& ethernet) const {
|
| }
|
|
|
| void NetworkMenu::ShowOther() const {
|
| - if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| - switches::kEnableTabbedOptions)) {
|
| + if (use_settings_ui_ && MenuUI::IsEnabled()) {
|
| Browser* browser = BrowserList::GetLastActive();
|
| if (browser) {
|
| std::string page = StringPrintf("%s?networkType=%d",
|
|
|