| Index: ash/system/chromeos/network/tray_network.cc
|
| diff --git a/ash/system/chromeos/network/tray_network.cc b/ash/system/chromeos/network/tray_network.cc
|
| index b5731ad3f5372b954a860b8b89a002c930d23abe..333a263df6e0974bb76056a50bd52ca0d9c7aab6 100644
|
| --- a/ash/system/chromeos/network/tray_network.cc
|
| +++ b/ash/system/chromeos/network/tray_network.cc
|
| @@ -7,8 +7,6 @@
|
| #include "ash/ash_switches.h"
|
| #include "ash/shell.h"
|
| #include "ash/system/chromeos/network/network_icon_animation.h"
|
| -#include "ash/system/chromeos/network/network_list_detailed_view.h"
|
| -#include "ash/system/chromeos/network/network_list_detailed_view_base.h"
|
| #include "ash/system/chromeos/network/network_state_list_detailed_view.h"
|
| #include "ash/system/chromeos/network/network_state_notifier.h"
|
| #include "ash/system/chromeos/network/network_tray_delegate.h"
|
| @@ -62,12 +60,6 @@ int GetMessageIcon(NetworkObserver::MessageType message_type,
|
| return 0;
|
| }
|
|
|
| -bool UseNewNetworkHandlers() {
|
| - return !CommandLine::ForCurrentProcess()->HasSwitch(
|
| - ash::switches::kAshDisableNewNetworkStatusArea) &&
|
| - NetworkStateHandler::IsInitialized();
|
| -}
|
| -
|
| } // namespace
|
|
|
| namespace ash {
|
| @@ -116,34 +108,18 @@ class NetworkTrayView : public TrayItemView,
|
| image_view_ = new views::ImageView;
|
| AddChildView(image_view_);
|
|
|
| - NetworkIconInfo info;
|
| - if (UseNewNetworkHandlers()) {
|
| - UpdateNetworkStateHandlerIcon();
|
| - } else {
|
| - Shell::GetInstance()->system_tray_delegate()->
|
| - GetMostRelevantNetworkIcon(&info, false);
|
| - UpdateIcon(info.tray_icon_visible, info.image);
|
| - }
|
| + UpdateNetworkStateHandlerIcon();
|
| }
|
|
|
| virtual ~NetworkTrayView() {
|
| - if (UseNewNetworkHandlers())
|
| - network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
|
| + network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
|
| }
|
|
|
| virtual const char* GetClassName() const OVERRIDE {
|
| return "NetworkTrayView";
|
| }
|
|
|
| - void Update(const NetworkIconInfo& info) {
|
| - if (UseNewNetworkHandlers())
|
| - return;
|
| - UpdateIcon(info.tray_icon_visible, info.image);
|
| - UpdateConnectionStatus(info.name, info.connected);
|
| - }
|
| -
|
| void UpdateNetworkStateHandlerIcon() {
|
| - DCHECK(UseNewNetworkHandlers());
|
| NetworkStateHandler* handler = NetworkStateHandler::Get();
|
| gfx::ImageSkia image;
|
| base::string16 name;
|
| @@ -173,8 +149,7 @@ class NetworkTrayView : public TrayItemView,
|
|
|
| // network_icon::AnimationObserver
|
| virtual void NetworkIconChanged() OVERRIDE {
|
| - if (UseNewNetworkHandlers())
|
| - UpdateNetworkStateHandlerIcon();
|
| + UpdateNetworkStateHandlerIcon();
|
| }
|
|
|
| private:
|
| @@ -216,32 +191,22 @@ class NetworkDefaultView : public TrayItemMore,
|
| }
|
|
|
| virtual ~NetworkDefaultView() {
|
| - if (UseNewNetworkHandlers())
|
| - network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
|
| + network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
|
| }
|
|
|
| void Update() {
|
| - if (UseNewNetworkHandlers()) {
|
| - gfx::ImageSkia image;
|
| - base::string16 label;
|
| - bool animating = false;
|
| - network_tray_->GetNetworkStateHandlerImageAndLabel(
|
| - network_icon::ICON_TYPE_DEFAULT_VIEW, &image, &label, &animating);
|
| - if (animating)
|
| - network_icon::NetworkIconAnimation::GetInstance()->AddObserver(this);
|
| - else
|
| - network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
|
| - SetImage(&image);
|
| - SetLabel(label);
|
| - SetAccessibleName(label);
|
| - } else {
|
| - NetworkIconInfo info;
|
| - Shell::GetInstance()->system_tray_delegate()->
|
| - GetMostRelevantNetworkIcon(&info, true);
|
| - SetImage(&info.image);
|
| - SetLabel(info.description);
|
| - SetAccessibleName(info.description);
|
| - }
|
| + gfx::ImageSkia image;
|
| + base::string16 label;
|
| + bool animating = false;
|
| + network_tray_->GetNetworkStateHandlerImageAndLabel(
|
| + network_icon::ICON_TYPE_DEFAULT_VIEW, &image, &label, &animating);
|
| + if (animating)
|
| + network_icon::NetworkIconAnimation::GetInstance()->AddObserver(this);
|
| + else
|
| + network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
|
| + SetImage(&image);
|
| + SetLabel(label);
|
| + SetAccessibleName(label);
|
| }
|
|
|
| // network_icon::AnimationObserver
|
| @@ -257,30 +222,25 @@ class NetworkDefaultView : public TrayItemMore,
|
|
|
| class NetworkWifiDetailedView : public NetworkDetailedView {
|
| public:
|
| - NetworkWifiDetailedView(SystemTrayItem* owner, bool wifi_enabled)
|
| + explicit NetworkWifiDetailedView(SystemTrayItem* owner)
|
| : NetworkDetailedView(owner) {
|
| SetLayoutManager(new views::BoxLayout(views::BoxLayout::kHorizontal,
|
| kTrayPopupPaddingHorizontal,
|
| 10,
|
| kTrayPopupPaddingBetweenItems));
|
| - ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
|
| - views::ImageView* image = new views::ImageView;
|
| - const int image_id = wifi_enabled ?
|
| - IDR_AURA_UBER_TRAY_WIFI_ENABLED : IDR_AURA_UBER_TRAY_WIFI_DISABLED;
|
| - image->SetImage(bundle.GetImageNamed(image_id).ToImageSkia());
|
| - AddChildView(image);
|
| + image_view_ = new views::ImageView;
|
| + AddChildView(image_view_);
|
|
|
| - const int string_id = wifi_enabled ?
|
| - IDS_ASH_STATUS_TRAY_NETWORK_WIFI_ENABLED:
|
| - IDS_ASH_STATUS_TRAY_NETWORK_WIFI_DISABLED;
|
| - views::Label* label =
|
| - new views::Label(bundle.GetLocalizedString(string_id));
|
| - label->SetMultiLine(true);
|
| - label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - AddChildView(label);
|
| + label_view_ = new views::Label();
|
| + label_view_->SetMultiLine(true);
|
| + label_view_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| + AddChildView(label_view_);
|
| +
|
| + Update();
|
| }
|
|
|
| - virtual ~NetworkWifiDetailedView() {}
|
| + virtual ~NetworkWifiDetailedView() {
|
| + }
|
|
|
| // Overridden from NetworkDetailedView:
|
|
|
| @@ -292,9 +252,11 @@ class NetworkWifiDetailedView : public NetworkDetailedView {
|
| }
|
|
|
| virtual void ManagerChanged() OVERRIDE {
|
| + Update();
|
| }
|
|
|
| virtual void NetworkListChanged() OVERRIDE {
|
| + Update();
|
| }
|
|
|
| virtual void NetworkServiceChanged(
|
| @@ -302,6 +264,23 @@ class NetworkWifiDetailedView : public NetworkDetailedView {
|
| }
|
|
|
| private:
|
| + void Update() {
|
| + bool wifi_enabled =
|
| + NetworkStateHandler::Get()->IsTechnologyEnabled(flimflam::kTypeWifi);
|
| + const int image_id = wifi_enabled ?
|
| + IDR_AURA_UBER_TRAY_WIFI_ENABLED : IDR_AURA_UBER_TRAY_WIFI_DISABLED;
|
| + ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
|
| + image_view_->SetImage(bundle.GetImageNamed(image_id).ToImageSkia());
|
| +
|
| + const int string_id = wifi_enabled ?
|
| + IDS_ASH_STATUS_TRAY_NETWORK_WIFI_ENABLED :
|
| + IDS_ASH_STATUS_TRAY_NETWORK_WIFI_DISABLED;
|
| + label_view_->SetText(bundle.GetLocalizedString(string_id));
|
| + }
|
| +
|
| + views::ImageView* image_view_;
|
| + views::Label* label_view_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(NetworkWifiDetailedView);
|
| };
|
|
|
| @@ -421,8 +400,7 @@ TrayNetwork::TrayNetwork(SystemTray* system_tray)
|
| notification_(NULL),
|
| messages_(new tray::NetworkMessages()),
|
| request_wifi_view_(false) {
|
| - if (UseNewNetworkHandlers())
|
| - network_state_observer_.reset(new TrayNetworkStateObserver(this));
|
| + network_state_observer_.reset(new TrayNetworkStateObserver(this));
|
| if (NetworkStateHandler::IsInitialized())
|
| network_state_notifier_.reset(new NetworkStateNotifier());
|
| Shell::GetInstance()->system_tray_notifier()->AddNetworkObserver(this);
|
| @@ -435,12 +413,16 @@ TrayNetwork::~TrayNetwork() {
|
|
|
| views::View* TrayNetwork::CreateTrayView(user::LoginStatus status) {
|
| CHECK(tray_ == NULL);
|
| + if (!chromeos::NetworkStateHandler::IsInitialized())
|
| + return NULL;
|
| tray_ = new tray::NetworkTrayView(this);
|
| return tray_;
|
| }
|
|
|
| views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) {
|
| CHECK(default_ == NULL);
|
| + if (!chromeos::NetworkStateHandler::IsInitialized())
|
| + return NULL;
|
| CHECK(tray_ != NULL);
|
| default_ = new tray::NetworkDefaultView(
|
| this, status != user::LOGGED_IN_LOCKED);
|
| @@ -449,23 +431,17 @@ views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) {
|
|
|
| views::View* TrayNetwork::CreateDetailedView(user::LoginStatus status) {
|
| CHECK(detailed_ == NULL);
|
| + if (!chromeos::NetworkStateHandler::IsInitialized())
|
| + return NULL;
|
| // Clear any notifications when showing the detailed view.
|
| messages_->messages().clear();
|
| HideNotificationView();
|
| if (request_wifi_view_) {
|
| - SystemTrayDelegate* delegate = Shell::GetInstance()->system_tray_delegate();
|
| - // The Wi-Fi state is not toggled yet at this point.
|
| - detailed_ = new tray::NetworkWifiDetailedView(this,
|
| - !delegate->GetWifiEnabled());
|
| + detailed_ = new tray::NetworkWifiDetailedView(this);
|
| request_wifi_view_ = false;
|
| } else {
|
| - if (UseNewNetworkHandlers()) {
|
| - detailed_ = new tray::NetworkStateListDetailedView(
|
| - this, tray::NetworkStateListDetailedView::LIST_TYPE_NETWORK, status);
|
| - } else {
|
| - detailed_ = new tray::NetworkListDetailedView(
|
| - this, status, IDS_ASH_STATUS_TRAY_NETWORK);
|
| - }
|
| + detailed_ = new tray::NetworkStateListDetailedView(
|
| + this, tray::NetworkStateListDetailedView::LIST_TYPE_NETWORK, status);
|
| detailed_->Init();
|
| }
|
| return detailed_;
|
| @@ -499,16 +475,8 @@ void TrayNetwork::UpdateAfterLoginStatusChange(user::LoginStatus status) {
|
| }
|
|
|
| void TrayNetwork::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) {
|
| - SetTrayImageItemBorder(tray_, alignment);
|
| -}
|
| -
|
| -void TrayNetwork::OnNetworkRefresh(const NetworkIconInfo& info) {
|
| if (tray_)
|
| - tray_->Update(info);
|
| - if (default_)
|
| - default_->Update();
|
| - if (detailed_)
|
| - detailed_->ManagerChanged();
|
| + SetTrayImageItemBorder(tray_, alignment);
|
| }
|
|
|
| void TrayNetwork::SetNetworkMessage(NetworkTrayDelegate* delegate,
|
| @@ -539,17 +507,22 @@ void TrayNetwork::ClearNetworkMessage(MessageType message_type) {
|
| ShowNotificationView();
|
| }
|
|
|
| -void TrayNetwork::OnWillToggleWifi() {
|
| - // Triggered by a user action (e.g. keyboard shortcut)
|
| +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;
|
| PopupDetailedView(kTrayPopupAutoCloseDelayForTextInSeconds, false);
|
| }
|
| + NetworkStateHandler* handler = NetworkStateHandler::Get();
|
| + bool enabled = handler->IsTechnologyEnabled(flimflam::kTypeWifi);
|
| + handler->SetTechnologyEnabled(
|
| + flimflam::kTypeWifi, !enabled,
|
| + chromeos::network_handler::ErrorCallback());
|
| }
|
|
|
| void TrayNetwork::NetworkStateChanged(bool list_changed) {
|
| - if (tray_ && UseNewNetworkHandlers())
|
| + if (tray_)
|
| tray_->UpdateNetworkStateHandlerIcon();
|
| if (default_)
|
| default_->Update();
|
|
|