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

Unified Diff: ash/system/network/tray_network.cc

Issue 2817423002: ash: Move "WiFi is turned on." buble to the notification center. (Closed)
Patch Set: Resolve merge conflict. Created 3 years, 8 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 | « ash/system/network/tray_network.h ('k') | ash/system/system_notifier.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/system/network/tray_network.cc
diff --git a/ash/system/network/tray_network.cc b/ash/system/network/tray_network.cc
index 6dc1e43bc696cfb07a4511b46a876af61f1f2d86..3081eea912c9f50663f7dc81b285b6ce80ebe522 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"
@@ -29,28 +30,47 @@
#include "ui/accessibility/ax_node_data.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/gfx/image/image_skia_operations.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"
-#include "ui/views/layout/box_layout.h"
#include "ui/views/widget/widget.h"
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
+ ? 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::GetImageForWiFiEnabledState(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,
@@ -184,64 +204,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 {
- const bool wifi_enabled =
- NetworkHandler::Get()->network_state_handler()->IsTechnologyEnabled(
- NetworkTypePattern::WiFi());
- image_view_->SetImage(
- network_icon::GetImageForWiFiEnabledState(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);
@@ -278,13 +247,8 @@ views::View* TrayNetwork::CreateDetailedView(LoginStatus status) {
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_;
}
@@ -303,17 +267,19 @@ 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)) {
+ message_center->RemoveNotification(tray::kWifiToggleNotificationId, false);
+ }
+ message_center->AddNotification(tray::CreateNotification(!enabled));
}
void TrayNetwork::OnCaptivePortalDetected(const std::string& /* guid */) {
« no previous file with comments | « ash/system/network/tray_network.h ('k') | ash/system/system_notifier.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698