Chromium Code Reviews| Index: ash/system/chromeos/network/network_connect.cc |
| diff --git a/ash/system/chromeos/network/network_connect.cc b/ash/system/chromeos/network/network_connect.cc |
| index 433f9bdef104378635ec91d17c6e0da878ffbbac..b451ea2c95e81e45efebdcceb85201f0a43173a6 100644 |
| --- a/ash/system/chromeos/network/network_connect.cc |
| +++ b/ash/system/chromeos/network/network_connect.cc |
| @@ -5,7 +5,6 @@ |
| #include "ash/system/chromeos/network/network_connect.h" |
| #include "ash/shell.h" |
| -#include "ash/system/chromeos/network/network_observer.h" |
| #include "ash/system/chromeos/network/network_state_notifier.h" |
| #include "ash/system/tray/system_tray_delegate.h" |
| #include "ash/system/tray/system_tray_notifier.h" |
| @@ -28,6 +27,8 @@ |
| #include "third_party/cros_system_api/dbus/service_constants.h" |
| #include "ui/base/l10n/l10n_util.h" |
| #include "ui/base/resource/resource_bundle.h" |
| +#include "ui/message_center/message_center.h" |
| +#include "ui/message_center/notification.h" |
| using chromeos::DeviceState; |
| using chromeos::NetworkConfigurationHandler; |
| @@ -119,8 +120,8 @@ void OnConnectSucceeded(const std::string& service_path) { |
| NET_LOG_USER("Connect Succeeded", service_path); |
| if (!ash::Shell::HasInstance()) |
| return; |
| - ash::Shell::GetInstance()->system_tray_notifier()->NotifyClearNetworkMessage( |
| - NetworkObserver::ERROR_CONNECT_FAILED); |
| + message_center::MessageCenter::Get()->RemoveNotification( |
| + network_connect::kNetworkConnectNotificationId, false /* by_user */); |
| } |
| // If |check_error_state| is true, error state for the network is checked, |
| @@ -133,8 +134,8 @@ void CallConnectToNetwork(const std::string& service_path, |
| gfx::NativeWindow owning_window) { |
| if (!ash::Shell::HasInstance()) |
| return; |
| - ash::Shell::GetInstance()->system_tray_notifier()->NotifyClearNetworkMessage( |
| - NetworkObserver::ERROR_CONNECT_FAILED); |
| + message_center::MessageCenter::Get()->RemoveNotification( |
| + network_connect::kNetworkConnectNotificationId, false /* by_user */); |
| NetworkHandler::Get()->network_connection_handler()->ConnectToNetwork( |
| service_path, |
| @@ -253,9 +254,25 @@ void ConfigureSetProfileSucceeded( |
| namespace network_connect { |
| +const char kNetworkConnectNotificationId[] = |
| + "chrome://settings/internet/connect"; |
| +const char kNetworkActivateNotificationId[] = |
| + "chrome://settings/internet/activate"; |
| + |
| void ConnectToNetwork(const std::string& service_path, |
| gfx::NativeWindow owning_window) { |
| NET_LOG_USER("ConnectToNetwork", service_path); |
| + const NetworkState* network = |
| + NetworkHandler::Get()->network_state_handler()-> |
| + GetNetworkState(service_path); |
| + if (network && !network->error().empty()) { |
| + NET_LOG_USER("Configure: " + network->error(), service_path); |
| + // If the network is in an error state, show the configuration UI |
| + // directly to avoid a spurrious notification. |
| + ash::Shell::GetInstance()->system_tray_delegate()->ConfigureNetwork( |
| + service_path); |
| + return; |
| + } |
| const bool check_error_state = true; |
| CallConnectToNetwork(service_path, check_error_state, owning_window); |
| } |
| @@ -306,20 +323,16 @@ void ShowMobileSetup(const std::string& service_path) { |
| if (cellular->activation_state() != flimflam::kActivationStateActivated && |
| cellular->activate_over_non_cellular_networks() && |
| !handler->DefaultNetwork()) { |
| - std::string technology = cellular->network_technology(); |
| - ash::NetworkObserver::NetworkType network_type = |
| - (technology == flimflam::kNetworkTechnologyLte || |
| - technology == flimflam::kNetworkTechnologyLteAdvanced) |
| - ? ash::NetworkObserver::NETWORK_CELLULAR_LTE |
| - : ash::NetworkObserver::NETWORK_CELLULAR; |
| - ash::Shell::GetInstance()->system_tray_notifier()->NotifySetNetworkMessage( |
| - NULL, |
| - ash::NetworkObserver::ERROR_CONNECT_FAILED, |
| - network_type, |
| - l10n_util::GetStringUTF16(IDS_NETWORK_ACTIVATION_ERROR_TITLE), |
| - l10n_util::GetStringFUTF16(IDS_NETWORK_ACTIVATION_NEEDS_CONNECTION, |
| - UTF8ToUTF16((cellular->name()))), |
| - std::vector<string16>()); |
| + message_center::MessageCenter::Get()->AddNotification( |
| + message_center::Notification::CreateSystemNotification( |
| + ash::network_connect::kNetworkActivateNotificationId, |
| + l10n_util::GetStringUTF16(IDS_NETWORK_ACTIVATION_ERROR_TITLE), |
| + l10n_util::GetStringFUTF16(IDS_NETWORK_ACTIVATION_NEEDS_CONNECTION, |
| + UTF8ToUTF16(cellular->name())), |
| + ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
| + IDR_AURA_UBER_TRAY_CELLULAR_NETWORK_FAILED), |
| + base::Bind(&ash::network_connect::ShowNetworkSettings, |
| + service_path))); |
|
Jun Mukai
2013/08/20 22:25:36
As we discussed on another crbug, the clicked noti
stevenjb
2013/08/20 22:33:15
Yes, it is expected that the notification will be
|
| return; |
| } |
| ash::Shell::GetInstance()->system_tray_delegate()->ShowMobileSetupDialog( |