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

Side by Side Diff: ash/system/chromeos/network/tray_network.cc

Issue 14729017: Add NetworkHandler to own network handlers in src/chromeos/network (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix chromeos_unittests Created 7 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/system/chromeos/network/tray_network.h" 5 #include "ash/system/chromeos/network/tray_network.h"
6 6
7 #include "ash/ash_switches.h" 7 #include "ash/ash_switches.h"
8 #include "ash/shell.h" 8 #include "ash/shell.h"
9 #include "ash/system/chromeos/network/network_icon_animation.h" 9 #include "ash/system/chromeos/network/network_icon_animation.h"
10 #include "ash/system/chromeos/network/network_state_list_detailed_view.h" 10 #include "ash/system/chromeos/network/network_state_list_detailed_view.h"
(...skipping 18 matching lines...) Expand all
29 #include "ui/base/l10n/l10n_util.h" 29 #include "ui/base/l10n/l10n_util.h"
30 #include "ui/base/resource/resource_bundle.h" 30 #include "ui/base/resource/resource_bundle.h"
31 #include "ui/views/controls/image_view.h" 31 #include "ui/views/controls/image_view.h"
32 #include "ui/views/controls/link.h" 32 #include "ui/views/controls/link.h"
33 #include "ui/views/controls/link_listener.h" 33 #include "ui/views/controls/link_listener.h"
34 #include "ui/views/layout/box_layout.h" 34 #include "ui/views/layout/box_layout.h"
35 #include "ui/views/widget/widget.h" 35 #include "ui/views/widget/widget.h"
36 36
37 using ash::internal::TrayNetwork; 37 using ash::internal::TrayNetwork;
38 using ash::NetworkObserver; 38 using ash::NetworkObserver;
39 using chromeos::NetworkHandler;
39 using chromeos::NetworkState; 40 using chromeos::NetworkState;
40 using chromeos::NetworkStateHandler; 41 using chromeos::NetworkStateHandler;
41 42
42 namespace { 43 namespace {
43 44
44 int GetMessageIcon(NetworkObserver::MessageType message_type, 45 int GetMessageIcon(NetworkObserver::MessageType message_type,
45 NetworkObserver::NetworkType network_type) { 46 NetworkObserver::NetworkType network_type) {
46 switch(message_type) { 47 switch(message_type) {
47 case NetworkObserver::ERROR_CONNECT_FAILED: 48 case NetworkObserver::ERROR_CONNECT_FAILED:
48 if (NetworkObserver::NETWORK_CELLULAR == network_type) 49 if (NetworkObserver::NETWORK_CELLULAR == network_type)
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 114
114 virtual ~NetworkTrayView() { 115 virtual ~NetworkTrayView() {
115 network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this); 116 network_icon::NetworkIconAnimation::GetInstance()->RemoveObserver(this);
116 } 117 }
117 118
118 virtual const char* GetClassName() const OVERRIDE { 119 virtual const char* GetClassName() const OVERRIDE {
119 return "NetworkTrayView"; 120 return "NetworkTrayView";
120 } 121 }
121 122
122 void UpdateNetworkStateHandlerIcon() { 123 void UpdateNetworkStateHandlerIcon() {
123 NetworkStateHandler* handler = NetworkStateHandler::Get(); 124 NetworkStateHandler* handler =
125 NetworkHandler::Get()->network_state_handler();
124 gfx::ImageSkia image; 126 gfx::ImageSkia image;
125 base::string16 name; 127 base::string16 name;
126 bool animating = false; 128 bool animating = false;
127 network_tray_->GetNetworkStateHandlerImageAndLabel( 129 network_tray_->GetNetworkStateHandlerImageAndLabel(
128 network_icon::ICON_TYPE_TRAY, &image, &name, &animating); 130 network_icon::ICON_TYPE_TRAY, &image, &name, &animating);
129 bool show_in_tray = !image.isNull(); 131 bool show_in_tray = !image.isNull();
130 UpdateIcon(show_in_tray, image); 132 UpdateIcon(show_in_tray, image);
131 if (animating) 133 if (animating)
132 network_icon::NetworkIconAnimation::GetInstance()->AddObserver(this); 134 network_icon::NetworkIconAnimation::GetInstance()->AddObserver(this);
133 else 135 else
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 virtual void NetworkListChanged() OVERRIDE { 260 virtual void NetworkListChanged() OVERRIDE {
259 Update(); 261 Update();
260 } 262 }
261 263
262 virtual void NetworkServiceChanged( 264 virtual void NetworkServiceChanged(
263 const chromeos::NetworkState* network) OVERRIDE { 265 const chromeos::NetworkState* network) OVERRIDE {
264 } 266 }
265 267
266 private: 268 private:
267 void Update() { 269 void Update() {
268 bool wifi_enabled = 270 bool wifi_enabled = NetworkHandler::Get()->network_state_handler()->
269 NetworkStateHandler::Get()->IsTechnologyEnabled(flimflam::kTypeWifi); 271 IsTechnologyEnabled(flimflam::kTypeWifi);
270 const int image_id = wifi_enabled ? 272 const int image_id = wifi_enabled ?
271 IDR_AURA_UBER_TRAY_WIFI_ENABLED : IDR_AURA_UBER_TRAY_WIFI_DISABLED; 273 IDR_AURA_UBER_TRAY_WIFI_ENABLED : IDR_AURA_UBER_TRAY_WIFI_DISABLED;
272 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); 274 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
273 image_view_->SetImage(bundle.GetImageNamed(image_id).ToImageSkia()); 275 image_view_->SetImage(bundle.GetImageNamed(image_id).ToImageSkia());
274 276
275 const int string_id = wifi_enabled ? 277 const int string_id = wifi_enabled ?
276 IDS_ASH_STATUS_TRAY_NETWORK_WIFI_ENABLED : 278 IDS_ASH_STATUS_TRAY_NETWORK_WIFI_ENABLED :
277 IDS_ASH_STATUS_TRAY_NETWORK_WIFI_DISABLED; 279 IDS_ASH_STATUS_TRAY_NETWORK_WIFI_DISABLED;
278 label_view_->SetText(bundle.GetLocalizedString(string_id)); 280 label_view_->SetText(bundle.GetLocalizedString(string_id));
279 } 281 }
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 396
395 TrayNetwork::TrayNetwork(SystemTray* system_tray) 397 TrayNetwork::TrayNetwork(SystemTray* system_tray)
396 : SystemTrayItem(system_tray), 398 : SystemTrayItem(system_tray),
397 tray_(NULL), 399 tray_(NULL),
398 default_(NULL), 400 default_(NULL),
399 detailed_(NULL), 401 detailed_(NULL),
400 notification_(NULL), 402 notification_(NULL),
401 messages_(new tray::NetworkMessages()), 403 messages_(new tray::NetworkMessages()),
402 request_wifi_view_(false) { 404 request_wifi_view_(false) {
403 network_state_observer_.reset(new TrayNetworkStateObserver(this)); 405 network_state_observer_.reset(new TrayNetworkStateObserver(this));
404 if (NetworkStateHandler::IsInitialized()) 406 if (NetworkHandler::IsInitialized())
405 network_state_notifier_.reset(new NetworkStateNotifier()); 407 network_state_notifier_.reset(new NetworkStateNotifier());
406 Shell::GetInstance()->system_tray_notifier()->AddNetworkObserver(this); 408 Shell::GetInstance()->system_tray_notifier()->AddNetworkObserver(this);
407 } 409 }
408 410
409 TrayNetwork::~TrayNetwork() { 411 TrayNetwork::~TrayNetwork() {
410 network_state_notifier_.reset(); 412 network_state_notifier_.reset();
411 Shell::GetInstance()->system_tray_notifier()->RemoveNetworkObserver(this); 413 Shell::GetInstance()->system_tray_notifier()->RemoveNetworkObserver(this);
412 } 414 }
413 415
414 views::View* TrayNetwork::CreateTrayView(user::LoginStatus status) { 416 views::View* TrayNetwork::CreateTrayView(user::LoginStatus status) {
415 CHECK(tray_ == NULL); 417 CHECK(tray_ == NULL);
416 if (!chromeos::NetworkStateHandler::IsInitialized()) 418 if (!chromeos::NetworkHandler::IsInitialized())
417 return NULL; 419 return NULL;
418 tray_ = new tray::NetworkTrayView(this); 420 tray_ = new tray::NetworkTrayView(this);
419 return tray_; 421 return tray_;
420 } 422 }
421 423
422 views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) { 424 views::View* TrayNetwork::CreateDefaultView(user::LoginStatus status) {
423 CHECK(default_ == NULL); 425 CHECK(default_ == NULL);
424 if (!chromeos::NetworkStateHandler::IsInitialized()) 426 if (!chromeos::NetworkHandler::IsInitialized())
425 return NULL; 427 return NULL;
426 CHECK(tray_ != NULL); 428 CHECK(tray_ != NULL);
427 default_ = new tray::NetworkDefaultView( 429 default_ = new tray::NetworkDefaultView(
428 this, status != user::LOGGED_IN_LOCKED); 430 this, status != user::LOGGED_IN_LOCKED);
429 return default_; 431 return default_;
430 } 432 }
431 433
432 views::View* TrayNetwork::CreateDetailedView(user::LoginStatus status) { 434 views::View* TrayNetwork::CreateDetailedView(user::LoginStatus status) {
433 CHECK(detailed_ == NULL); 435 CHECK(detailed_ == NULL);
434 if (!chromeos::NetworkStateHandler::IsInitialized()) 436 if (!chromeos::NetworkHandler::IsInitialized())
435 return NULL; 437 return NULL;
436 // Clear any notifications when showing the detailed view. 438 // Clear any notifications when showing the detailed view.
437 messages_->messages().clear(); 439 messages_->messages().clear();
438 HideNotificationView(); 440 HideNotificationView();
439 if (request_wifi_view_) { 441 if (request_wifi_view_) {
440 detailed_ = new tray::NetworkWifiDetailedView(this); 442 detailed_ = new tray::NetworkWifiDetailedView(this);
441 request_wifi_view_ = false; 443 request_wifi_view_ = false;
442 } else { 444 } else {
443 detailed_ = new tray::NetworkStateListDetailedView( 445 detailed_ = new tray::NetworkStateListDetailedView(
444 this, tray::NetworkStateListDetailedView::LIST_TYPE_NETWORK, status); 446 this, tray::NetworkStateListDetailedView::LIST_TYPE_NETWORK, status);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
507 ShowNotificationView(); 509 ShowNotificationView();
508 } 510 }
509 511
510 void TrayNetwork::RequestToggleWifi() { 512 void TrayNetwork::RequestToggleWifi() {
511 // This will always be triggered by a user action (e.g. keyboard shortcut) 513 // This will always be triggered by a user action (e.g. keyboard shortcut)
512 if (!detailed_ || 514 if (!detailed_ ||
513 detailed_->GetViewType() == tray::NetworkDetailedView::WIFI_VIEW) { 515 detailed_->GetViewType() == tray::NetworkDetailedView::WIFI_VIEW) {
514 request_wifi_view_ = true; 516 request_wifi_view_ = true;
515 PopupDetailedView(kTrayPopupAutoCloseDelayForTextInSeconds, false); 517 PopupDetailedView(kTrayPopupAutoCloseDelayForTextInSeconds, false);
516 } 518 }
517 NetworkStateHandler* handler = NetworkStateHandler::Get(); 519 NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler();
518 bool enabled = handler->IsTechnologyEnabled(flimflam::kTypeWifi); 520 bool enabled = handler->IsTechnologyEnabled(flimflam::kTypeWifi);
519 handler->SetTechnologyEnabled( 521 handler->SetTechnologyEnabled(
520 flimflam::kTypeWifi, !enabled, 522 flimflam::kTypeWifi, !enabled,
521 chromeos::network_handler::ErrorCallback()); 523 chromeos::network_handler::ErrorCallback());
522 } 524 }
523 525
524 void TrayNetwork::NetworkStateChanged(bool list_changed) { 526 void TrayNetwork::NetworkStateChanged(bool list_changed) {
525 if (tray_) 527 if (tray_)
526 tray_->UpdateNetworkStateHandlerIcon(); 528 tray_->UpdateNetworkStateHandlerIcon();
527 if (default_) 529 if (default_)
528 default_->Update(); 530 default_->Update();
529 if (detailed_) { 531 if (detailed_) {
530 if (list_changed) 532 if (list_changed)
531 detailed_->NetworkListChanged(); 533 detailed_->NetworkListChanged();
532 else 534 else
533 detailed_->ManagerChanged(); 535 detailed_->ManagerChanged();
534 } 536 }
535 } 537 }
536 538
537 void TrayNetwork::NetworkServiceChanged(const chromeos::NetworkState* network) { 539 void TrayNetwork::NetworkServiceChanged(const chromeos::NetworkState* network) {
538 if (detailed_) 540 if (detailed_)
539 detailed_->NetworkServiceChanged(network); 541 detailed_->NetworkServiceChanged(network);
540 } 542 }
541 543
542 void TrayNetwork::GetNetworkStateHandlerImageAndLabel( 544 void TrayNetwork::GetNetworkStateHandlerImageAndLabel(
543 network_icon::IconType icon_type, 545 network_icon::IconType icon_type,
544 gfx::ImageSkia* image, 546 gfx::ImageSkia* image,
545 base::string16* label, 547 base::string16* label,
546 bool* animating) { 548 bool* animating) {
547 NetworkStateHandler* handler = NetworkStateHandler::Get(); 549 NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler();
548 const NetworkState* connected_network = handler->ConnectedNetworkByType( 550 const NetworkState* connected_network = handler->ConnectedNetworkByType(
549 NetworkStateHandler::kMatchTypeNonVirtual); 551 NetworkStateHandler::kMatchTypeNonVirtual);
550 const NetworkState* connecting_network = handler->ConnectingNetworkByType( 552 const NetworkState* connecting_network = handler->ConnectingNetworkByType(
551 NetworkStateHandler::kMatchTypeWireless); 553 NetworkStateHandler::kMatchTypeWireless);
552 if (!connecting_network && icon_type == network_icon::ICON_TYPE_TRAY) 554 if (!connecting_network && icon_type == network_icon::ICON_TYPE_TRAY)
553 connecting_network = handler->ConnectingNetworkByType(flimflam::kTypeVPN); 555 connecting_network = handler->ConnectingNetworkByType(flimflam::kTypeVPN);
554 556
555 const NetworkState* network; 557 const NetworkState* network;
556 // If we are connecting to a network, and there is either no connected 558 // If we are connecting to a network, and there is either no connected
557 // network, or the connection was user requested, use the connecting 559 // network, or the connection was user requested, use the connecting
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 613
612 void TrayNetwork::LinkClicked(MessageType message_type, int link_id) { 614 void TrayNetwork::LinkClicked(MessageType message_type, int link_id) {
613 tray::NetworkMessages::MessageMap::const_iterator iter = 615 tray::NetworkMessages::MessageMap::const_iterator iter =
614 messages()->messages().find(message_type); 616 messages()->messages().find(message_type);
615 if (iter != messages()->messages().end() && iter->second.delegate) 617 if (iter != messages()->messages().end() && iter->second.delegate)
616 iter->second.delegate->NotificationLinkClicked(message_type, link_id); 618 iter->second.delegate->NotificationLinkClicked(message_type, link_id);
617 } 619 }
618 620
619 } // namespace internal 621 } // namespace internal
620 } // namespace ash 622 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698