Chromium Code Reviews| Index: ash/system/network/tray_network.cc |
| diff --git a/ash/system/network/tray_network.cc b/ash/system/network/tray_network.cc |
| index 297ee10c5b06384d15be1713580919ff3a95c195..2e5b18580433322d541471c07dc7289e4eab69ea 100644 |
| --- a/ash/system/network/tray_network.cc |
| +++ b/ash/system/network/tray_network.cc |
| @@ -13,6 +13,7 @@ |
| #include "ash/system/network/network_icon_animation_observer.h" |
| #include "ash/system/network/network_state_list_detailed_view.h" |
| #include "ash/system/network/tray_network_state_observer.h" |
| +#include "ash/system/system_notifier.h" |
| #include "ash/system/tray/system_tray.h" |
| #include "ash/system/tray/system_tray_delegate.h" |
| #include "ash/system/tray/system_tray_notifier.h" |
| @@ -28,6 +29,8 @@ |
| #include "third_party/cros_system_api/dbus/service_constants.h" |
| #include "ui/accessibility/ax_node_data.h" |
| #include "ui/base/l10n/l10n_util.h" |
| +#include "ui/message_center/message_center.h" |
| +#include "ui/message_center/notification.h" |
| #include "ui/views/controls/image_view.h" |
| #include "ui/views/controls/link.h" |
| #include "ui/views/controls/link_listener.h" |
| @@ -38,18 +41,36 @@ using chromeos::NetworkHandler; |
| using chromeos::NetworkState; |
| using chromeos::NetworkStateHandler; |
| using chromeos::NetworkTypePattern; |
| +using message_center::Notification; |
| namespace ash { |
| namespace tray { |
| namespace { |
| +constexpr char kWifiToggleNotificationId[] = "wifi-toggle"; |
| + |
| // Returns the connected, non-virtual (aka VPN), network. |
| const NetworkState* GetConnectedNetwork() { |
| NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler(); |
| return handler->ConnectedNetworkByType(NetworkTypePattern::NonVirtual()); |
| } |
| +std::unique_ptr<Notification> CreateNotification(bool wifi_enabled) { |
| + const int string_id = wifi_enabled |
|
tdanderson
2017/04/21 15:25:01
nit: can you run 'git cl format ash' to verify thi
tetsui2
2017/04/24 00:23:00
Done.
|
| + ? IDS_ASH_STATUS_TRAY_NETWORK_WIFI_ENABLED |
| + : IDS_ASH_STATUS_TRAY_NETWORK_WIFI_DISABLED; |
| + std::unique_ptr<Notification> notification(new Notification( |
| + message_center::NOTIFICATION_TYPE_SIMPLE, kWifiToggleNotificationId, |
| + base::string16(), l10n_util::GetStringUTF16(string_id), |
| + gfx::Image(network_icon::GetBasicImageForWiFiNetwork(wifi_enabled)), |
| + base::string16() /* display_source */, GURL(), |
| + message_center::NotifierId(message_center::NotifierId::SYSTEM_COMPONENT, |
| + system_notifier::kNotifierWifiToggle), |
| + message_center::RichNotificationData(), nullptr)); |
| + return notification; |
| +} |
| + |
| } // namespace |
| class NetworkTrayView : public TrayItemView, |
| @@ -173,64 +194,13 @@ class NetworkDefaultView : public TrayItemMore, |
| DISALLOW_COPY_AND_ASSIGN(NetworkDefaultView); |
| }; |
| -class NetworkWifiDetailedView : public NetworkDetailedView { |
| - public: |
| - explicit NetworkWifiDetailedView(SystemTrayItem* owner) |
| - : NetworkDetailedView(owner) {} |
| - |
| - ~NetworkWifiDetailedView() override {} |
| - |
| - // NetworkDetailedView: |
| - void Init() override { |
| - constexpr int kVerticalPadding = 10; |
| - auto* box_layout = new views::BoxLayout( |
| - views::BoxLayout::kHorizontal, kTrayPopupPaddingHorizontal, |
| - kVerticalPadding, kTrayPopupPaddingBetweenItems); |
| - SetLayoutManager(box_layout); |
| - |
| - image_view_ = new views::ImageView; |
| - AddChildView(image_view_); |
| - |
| - label_view_ = new views::Label(); |
| - label_view_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
| - AddChildView(label_view_); |
| - box_layout->SetFlexForView(label_view_, 1); |
| - |
| - Update(); |
| - } |
| - |
| - NetworkDetailedView::DetailedViewType GetViewType() const override { |
| - return NetworkDetailedView::WIFI_VIEW; |
| - } |
| - |
| - void Update() override { |
| - bool wifi_enabled = |
| - NetworkHandler::Get()->network_state_handler()->IsTechnologyEnabled( |
| - NetworkTypePattern::WiFi()); |
| - image_view_->SetImage( |
| - network_icon::GetBasicImageForWiFiNetwork(wifi_enabled)); |
| - |
| - const int string_id = wifi_enabled |
| - ? IDS_ASH_STATUS_TRAY_NETWORK_WIFI_ENABLED |
| - : IDS_ASH_STATUS_TRAY_NETWORK_WIFI_DISABLED; |
| - label_view_->SetText(l10n_util::GetStringUTF16(string_id)); |
| - } |
| - |
| - private: |
| - views::ImageView* image_view_ = nullptr; |
| - views::Label* label_view_ = nullptr; |
| - |
| - DISALLOW_COPY_AND_ASSIGN(NetworkWifiDetailedView); |
| -}; |
| - |
| } // namespace tray |
| TrayNetwork::TrayNetwork(SystemTray* system_tray) |
| : SystemTrayItem(system_tray, UMA_NETWORK), |
| tray_(NULL), |
| default_(NULL), |
| - detailed_(NULL), |
| - request_wifi_view_(false) { |
| + detailed_(NULL) { |
| network_state_observer_.reset(new TrayNetworkStateObserver(this)); |
| SystemTrayNotifier* notifier = Shell::Get()->system_tray_notifier(); |
| notifier->AddNetworkObserver(this); |
| @@ -260,20 +230,14 @@ views::View* TrayNetwork::CreateDefaultView(LoginStatus status) { |
| default_->SetEnabled(status != LoginStatus::LOCKED); |
| return default_; |
| } |
| - |
|
tdanderson
2017/04/21 15:25:02
nit: please restore this blank line
tetsui2
2017/04/24 00:23:00
Done.
|
| views::View* TrayNetwork::CreateDetailedView(LoginStatus status) { |
| CHECK(detailed_ == NULL); |
| ShellPort::Get()->RecordUserMetricsAction( |
| UMA_STATUS_AREA_DETAILED_NETWORK_VIEW); |
| if (!chromeos::NetworkHandler::IsInitialized()) |
| return NULL; |
| - if (request_wifi_view_) { |
| - detailed_ = new tray::NetworkWifiDetailedView(this); |
| - request_wifi_view_ = false; |
| - } else { |
| - detailed_ = new tray::NetworkStateListDetailedView( |
| - this, tray::NetworkStateListDetailedView::LIST_TYPE_NETWORK, status); |
| - } |
| + detailed_ = new tray::NetworkStateListDetailedView( |
| + this, tray::NetworkStateListDetailedView::LIST_TYPE_NETWORK, status); |
| detailed_->Init(); |
| return detailed_; |
| } |
| @@ -292,17 +256,18 @@ void TrayNetwork::DestroyDetailedView() { |
| void TrayNetwork::RequestToggleWifi() { |
| // This will always be triggered by a user action (e.g. keyboard shortcut) |
| - if (!detailed_ || |
| - detailed_->GetViewType() == tray::NetworkDetailedView::WIFI_VIEW) { |
| - request_wifi_view_ = true; |
| - ShowDetailedView(kTrayPopupAutoCloseDelayForTextInSeconds, false); |
| - } |
| NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler(); |
| bool enabled = handler->IsTechnologyEnabled(NetworkTypePattern::WiFi()); |
| ShellPort::Get()->RecordUserMetricsAction( |
| enabled ? UMA_STATUS_AREA_DISABLE_WIFI : UMA_STATUS_AREA_ENABLE_WIFI); |
| handler->SetTechnologyEnabled(NetworkTypePattern::WiFi(), !enabled, |
| chromeos::network_handler::ErrorCallback()); |
| + message_center::MessageCenter* message_center = |
| + message_center::MessageCenter::Get(); |
| + if (message_center->FindVisibleNotificationById( |
| + tray::kWifiToggleNotificationId)) |
|
tdanderson
2017/04/21 15:25:02
nit: since the 'if' condition spans more than a si
tetsui2
2017/04/24 00:23:00
Done.
|
| + message_center->RemoveNotification(tray::kWifiToggleNotificationId, false); |
| + message_center->AddNotification(tray::CreateNotification(!enabled)); |
| } |
| void TrayNetwork::OnCaptivePortalDetected(const std::string& /* guid */) { |