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

Side by Side Diff: ash/common/system/chromeos/network/network_icon.cc

Issue 2435903002: Move tray code from ui/chromeos/network/ (Closed)
Patch Set: Rebase Created 4 years, 1 month 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
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 "ui/chromeos/network/network_icon.h" 5 #include "ash/common/system/chromeos/network/network_icon.h"
6 6
7 #include "ash/common/material_design/material_design_controller.h"
8 #include "ash/common/system/chromeos/network/network_icon_animation.h"
9 #include "ash/common/system/chromeos/network/network_icon_animation_observer.h"
7 #include "base/macros.h" 10 #include "base/macros.h"
8 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
9 #include "chromeos/network/device_state.h" 12 #include "chromeos/network/device_state.h"
10 #include "chromeos/network/network_connection_handler.h" 13 #include "chromeos/network/network_connection_handler.h"
11 #include "chromeos/network/network_state.h" 14 #include "chromeos/network/network_state.h"
12 #include "chromeos/network/network_state_handler.h" 15 #include "chromeos/network/network_state_handler.h"
13 #include "chromeos/network/portal_detector/network_portal_detector.h" 16 #include "chromeos/network/portal_detector/network_portal_detector.h"
14 #include "grit/ui_chromeos_resources.h" 17 #include "grit/ash_resources.h"
15 #include "grit/ui_chromeos_strings.h" 18 #include "grit/ash_strings.h"
16 #include "third_party/cros_system_api/dbus/service_constants.h" 19 #include "third_party/cros_system_api/dbus/service_constants.h"
17 #include "third_party/skia/include/core/SkPaint.h" 20 #include "third_party/skia/include/core/SkPaint.h"
18 #include "third_party/skia/include/core/SkPath.h" 21 #include "third_party/skia/include/core/SkPath.h"
19 #include "ui/base/l10n/l10n_util.h" 22 #include "ui/base/l10n/l10n_util.h"
20 #include "ui/base/resource/resource_bundle.h" 23 #include "ui/base/resource/resource_bundle.h"
21 #include "ui/base/webui/web_ui_util.h" 24 #include "ui/base/webui/web_ui_util.h"
22 #include "ui/chromeos/material_design_icon_controller.h"
23 #include "ui/chromeos/network/network_icon_animation.h"
24 #include "ui/chromeos/network/network_icon_animation_observer.h"
25 #include "ui/gfx/canvas.h" 25 #include "ui/gfx/canvas.h"
26 #include "ui/gfx/color_palette.h" 26 #include "ui/gfx/color_palette.h"
27 #include "ui/gfx/geometry/insets.h" 27 #include "ui/gfx/geometry/insets.h"
28 #include "ui/gfx/geometry/rect.h" 28 #include "ui/gfx/geometry/rect.h"
29 #include "ui/gfx/geometry/size_conversions.h" 29 #include "ui/gfx/geometry/size_conversions.h"
30 #include "ui/gfx/image/canvas_image_source.h" 30 #include "ui/gfx/image/canvas_image_source.h"
31 #include "ui/gfx/image/image_skia_operations.h" 31 #include "ui/gfx/image/image_skia_operations.h"
32 #include "ui/gfx/image/image_skia_source.h" 32 #include "ui/gfx/image/image_skia_source.h"
33 #include "ui/gfx/paint_vector_icon.h" 33 #include "ui/gfx/paint_vector_icon.h"
34 #include "ui/gfx/skia_util.h" 34 #include "ui/gfx/skia_util.h"
35 #include "ui/gfx/vector_icons_public.h" 35 #include "ui/gfx/vector_icons_public.h"
36 36
37 using chromeos::DeviceState; 37 using chromeos::DeviceState;
38 using chromeos::NetworkConnectionHandler; 38 using chromeos::NetworkConnectionHandler;
39 using chromeos::NetworkHandler; 39 using chromeos::NetworkHandler;
40 using chromeos::NetworkPortalDetector; 40 using chromeos::NetworkPortalDetector;
41 using chromeos::NetworkState; 41 using chromeos::NetworkState;
42 using chromeos::NetworkStateHandler; 42 using chromeos::NetworkStateHandler;
43 using chromeos::NetworkTypePattern; 43 using chromeos::NetworkTypePattern;
44 44
45 namespace ui { 45 namespace ash {
46 namespace network_icon { 46 namespace network_icon {
47 47
48 namespace { 48 namespace {
49 49
50 // Constants for offseting the badge displayed on top of the signal strength 50 // Constants for offseting the badge displayed on top of the signal strength
51 // icon. The badge will extend outside of the base icon bounds by these amounts. 51 // icon. The badge will extend outside of the base icon bounds by these amounts.
52 // Only used for MD. All values are in dp. 52 // Only used for MD. All values are in dp.
53 53
54 // The badge offsets are different depending on whether the icon is in the tray 54 // The badge offsets are different depending on whether the icon is in the tray
55 // or menu. 55 // or menu.
56 const int kTrayIconBadgeOffset = 3; 56 const int kTrayIconBadgeOffset = 3;
57 const int kMenuIconBadgeOffset = 2; 57 const int kMenuIconBadgeOffset = 2;
58 58
59 // TODO(estade): use kTrayIconSize. See crbug.com/623987 59 // TODO(estade): use kTrayIconSize. See crbug.com/623987
60 const int kTrayIconSide = 16; 60 const int kTrayIconSide = 16;
61 61
62 bool UseMd() { 62 bool UseMd() {
63 return md_icon_controller::UseMaterialDesignNetworkIcons(); 63 return MaterialDesignController::UseMaterialDesignSystemIcons();
64 } 64 }
65 65
66 //------------------------------------------------------------------------------ 66 //------------------------------------------------------------------------------
67 // Struct to pass icon badges to NetworkIconImageSource. 67 // Struct to pass icon badges to NetworkIconImageSource.
68 struct Badges { 68 struct Badges {
69 gfx::ImageSkia top_left; 69 gfx::ImageSkia top_left;
70 gfx::ImageSkia top_right; 70 gfx::ImageSkia top_right;
71 gfx::ImageSkia bottom_left; 71 gfx::ImageSkia bottom_left;
72 gfx::ImageSkia bottom_right; 72 gfx::ImageSkia bottom_right;
73 }; 73 };
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 NetworkIconMap* GetIconMap(IconType icon_type) { 159 NetworkIconMap* GetIconMap(IconType icon_type) {
160 return GetIconMapInstance(icon_type, true); 160 return GetIconMapInstance(icon_type, true);
161 } 161 }
162 162
163 void PurgeIconMap(IconType icon_type, 163 void PurgeIconMap(IconType icon_type,
164 const std::set<std::string>& network_paths) { 164 const std::set<std::string>& network_paths) {
165 NetworkIconMap* icon_map = GetIconMapInstance(icon_type, false); 165 NetworkIconMap* icon_map = GetIconMapInstance(icon_type, false);
166 if (!icon_map) 166 if (!icon_map)
167 return; 167 return;
168 for (NetworkIconMap::iterator loop_iter = icon_map->begin(); 168 for (NetworkIconMap::iterator loop_iter = icon_map->begin();
169 loop_iter != icon_map->end(); ) { 169 loop_iter != icon_map->end();) {
170 NetworkIconMap::iterator cur_iter = loop_iter++; 170 NetworkIconMap::iterator cur_iter = loop_iter++;
171 if (network_paths.count(cur_iter->first) == 0) { 171 if (network_paths.count(cur_iter->first) == 0) {
172 delete cur_iter->second; 172 delete cur_iter->second;
173 icon_map->erase(cur_iter); 173 icon_map->erase(cur_iter);
174 } 174 }
175 } 175 }
176 } 176 }
177 177
178 //------------------------------------------------------------------------------ 178 //------------------------------------------------------------------------------
179 // Utilities for generating icon images. 179 // Utilities for generating icon images.
180 180
181 // 'NONE' will default to ARCS behavior where appropriate (e.g. no network or 181 // 'NONE' will default to ARCS behavior where appropriate (e.g. no network or
182 // if a new type gets added). 182 // if a new type gets added).
183 enum ImageType { 183 enum ImageType { ARCS, BARS, NONE };
184 ARCS,
185 BARS,
186 NONE
187 };
188 184
189 // Amount to fade icons while connecting. 185 // Amount to fade icons while connecting.
190 const double kConnectingImageAlpha = 0.5; 186 const double kConnectingImageAlpha = 0.5;
191 187
192 // Images for strength arcs for wireless networks or strength bars for cellular 188 // Images for strength arcs for wireless networks or strength bars for cellular
193 // networks. 189 // networks.
194 const int kNumNetworkImages = 5; 190 const int kNumNetworkImages = 5;
195 191
196 // Number of discrete images to use for alpha fade animation 192 // Number of discrete images to use for alpha fade animation
197 const int kNumFadeImages = 10; 193 const int kNumFadeImages = 10;
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 void set_color(SkColor color) { color_ = color; } 325 void set_color(SkColor color) { color_ = color; }
330 326
331 // gfx::CanvasImageSource: 327 // gfx::CanvasImageSource:
332 void Draw(gfx::Canvas* canvas) override { 328 void Draw(gfx::Canvas* canvas) override {
333 if (image_type_ == ARCS) 329 if (image_type_ == ARCS)
334 DrawArcs(canvas); 330 DrawArcs(canvas);
335 else 331 else
336 DrawBars(canvas); 332 DrawBars(canvas);
337 } 333 }
338 334
339 bool HasRepresentationAtAllScales() const override { 335 bool HasRepresentationAtAllScales() const override { return true; }
340 return true;
341 }
342 336
343 private: 337 private:
344 static gfx::Size GetSizeForIconType(IconType icon_type) { 338 static gfx::Size GetSizeForIconType(IconType icon_type) {
345 return icon_type == ICON_TYPE_TRAY 339 return icon_type == ICON_TYPE_TRAY
346 ? gfx::Size(kTrayIconSide, kTrayIconSide) 340 ? gfx::Size(kTrayIconSide, kTrayIconSide)
347 // TODO(estade): use kMenuIconSize instead of 20. 341 // TODO(estade): use kMenuIconSize instead of 20.
348 : gfx::Size(20, 20); 342 : gfx::Size(20, 20);
349 } 343 }
350 344
351 void DrawArcs(gfx::Canvas* canvas) { 345 void DrawArcs(gfx::Canvas* canvas) {
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
477 gfx::CanvasImageSource* source = 471 gfx::CanvasImageSource* source =
478 new SignalStrengthImageSource(image_type, icon_type, index); 472 new SignalStrengthImageSource(image_type, icon_type, index);
479 return gfx::ImageSkia(source, source->size()); 473 return gfx::ImageSkia(source, source->size());
480 } 474 }
481 475
482 if (index < 0 || index >= kNumNetworkImages) 476 if (index < 0 || index >= kNumNetworkImages)
483 return gfx::ImageSkia(); 477 return gfx::ImageSkia();
484 gfx::ImageSkia* images = BaseImageForType(image_type, icon_type); 478 gfx::ImageSkia* images = BaseImageForType(image_type, icon_type);
485 int width = images->width(); 479 int width = images->width();
486 int height = images->height() / kNumNetworkImages; 480 int height = images->height() / kNumNetworkImages;
487 return gfx::ImageSkiaOperations::ExtractSubset(*images, 481 return gfx::ImageSkiaOperations::ExtractSubset(
488 gfx::Rect(0, index * height, width, height)); 482 *images, gfx::Rect(0, index * height, width, height));
489 } 483 }
490 484
491 const gfx::ImageSkia GetDisconnectedImage(IconType icon_type, 485 const gfx::ImageSkia GetDisconnectedImage(IconType icon_type,
492 const std::string& network_type) { 486 const std::string& network_type) {
493 DCHECK_NE(shill::kTypeVPN, network_type); 487 DCHECK_NE(shill::kTypeVPN, network_type);
494 ImageType image_type = ImageTypeForNetworkType(network_type); 488 ImageType image_type = ImageTypeForNetworkType(network_type);
495 const int disconnected_index = 0; 489 const int disconnected_index = 0;
496 return GetImageForIndex(image_type, icon_type, disconnected_index); 490 return GetImageForIndex(image_type, icon_type, disconnected_index);
497 } 491 }
498 492
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 } 671 }
678 672
679 gfx::ImageSkia GetConnectingImage(IconType icon_type, 673 gfx::ImageSkia GetConnectingImage(IconType icon_type,
680 const std::string& network_type) { 674 const std::string& network_type) {
681 if (network_type == shill::kTypeVPN) 675 if (network_type == shill::kTypeVPN)
682 return GetConnectingVpnImage(icon_type); 676 return GetConnectingVpnImage(icon_type);
683 677
684 ImageType image_type = ImageTypeForNetworkType(network_type); 678 ImageType image_type = ImageTypeForNetworkType(network_type);
685 double animation = NetworkIconAnimation::GetInstance()->GetAnimation(); 679 double animation = NetworkIconAnimation::GetInstance()->GetAnimation();
686 680
687 gfx::ImageSkia* icon = ConnectingWirelessImage( 681 gfx::ImageSkia* icon =
688 image_type, icon_type, animation); 682 ConnectingWirelessImage(image_type, icon_type, animation);
689 return UseMd() ? NetworkIconImageSourceMd::CreateImage(*icon, Badges()) 683 return UseMd() ? NetworkIconImageSourceMd::CreateImage(*icon, Badges())
690 : gfx::ImageSkia(new NetworkIconImageSource(*icon, Badges()), 684 : gfx::ImageSkia(new NetworkIconImageSource(*icon, Badges()),
691 icon->size()); 685 icon->size());
692 } 686 }
693 687
694 } // namespace 688 } // namespace
695 689
696 //------------------------------------------------------------------------------ 690 //------------------------------------------------------------------------------
697 // NetworkIconImpl 691 // NetworkIconImpl
698 692
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 state.status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL; 765 state.status == NetworkPortalDetector::CAPTIVE_PORTAL_STATUS_PORTAL;
772 } 766 }
773 767
774 if (behind_captive_portal == behind_captive_portal_) 768 if (behind_captive_portal == behind_captive_portal_)
775 return false; 769 return false;
776 behind_captive_portal_ = behind_captive_portal; 770 behind_captive_portal_ = behind_captive_portal;
777 return true; 771 return true;
778 } 772 }
779 773
780 bool NetworkIconImpl::UpdateVPNBadge() { 774 bool NetworkIconImpl::UpdateVPNBadge() {
781 const NetworkState* vpn = NetworkHandler::Get()->network_state_handler()-> 775 const NetworkState* vpn =
782 ConnectedNetworkByType(NetworkTypePattern::VPN()); 776 NetworkHandler::Get()->network_state_handler()->ConnectedNetworkByType(
777 NetworkTypePattern::VPN());
783 if (vpn && vpn_badge_.isNull()) { 778 if (vpn && vpn_badge_.isNull()) {
784 vpn_badge_ = 779 vpn_badge_ =
785 UseMd() ? gfx::CreateVectorIcon(gfx::VectorIconId::NETWORK_BADGE_VPN, 780 UseMd() ? gfx::CreateVectorIcon(gfx::VectorIconId::NETWORK_BADGE_VPN,
786 GetDefaultColorForIconType(icon_type_)) 781 GetDefaultColorForIconType(icon_type_))
787 : *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( 782 : *ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
788 IDR_AURA_UBER_TRAY_NETWORK_VPN_BADGE); 783 IDR_AURA_UBER_TRAY_NETWORK_VPN_BADGE);
789 return true; 784 return true;
790 } 785 }
791 if (!vpn && !vpn_badge_.isNull()) { 786 if (!vpn && !vpn_badge_.isNull()) {
792 vpn_badge_ = gfx::ImageSkia(); 787 vpn_badge_ = gfx::ImageSkia();
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 } else { 985 } else {
991 return base::UTF8ToUTF16(network->name()); 986 return base::UTF8ToUTF16(network->name());
992 } 987 }
993 } 988 }
994 989
995 int GetCellularUninitializedMsg() { 990 int GetCellularUninitializedMsg() {
996 static base::Time s_uninitialized_state_time; 991 static base::Time s_uninitialized_state_time;
997 static int s_uninitialized_msg(0); 992 static int s_uninitialized_msg(0);
998 993
999 NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler(); 994 NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler();
1000 if (handler->GetTechnologyState(NetworkTypePattern::Mobile()) 995 if (handler->GetTechnologyState(NetworkTypePattern::Mobile()) ==
1001 == NetworkStateHandler::TECHNOLOGY_UNINITIALIZED) { 996 NetworkStateHandler::TECHNOLOGY_UNINITIALIZED) {
1002 s_uninitialized_msg = IDS_ASH_STATUS_TRAY_INITIALIZING_CELLULAR; 997 s_uninitialized_msg = IDS_ASH_STATUS_TRAY_INITIALIZING_CELLULAR;
1003 s_uninitialized_state_time = base::Time::Now(); 998 s_uninitialized_state_time = base::Time::Now();
1004 return s_uninitialized_msg; 999 return s_uninitialized_msg;
1005 } else if (handler->GetScanningByType(NetworkTypePattern::Mobile())) { 1000 } else if (handler->GetScanningByType(NetworkTypePattern::Mobile())) {
1006 s_uninitialized_msg = IDS_ASH_STATUS_TRAY_CELLULAR_SCANNING; 1001 s_uninitialized_msg = IDS_ASH_STATUS_TRAY_CELLULAR_SCANNING;
1007 s_uninitialized_state_time = base::Time::Now(); 1002 s_uninitialized_state_time = base::Time::Now();
1008 return s_uninitialized_msg; 1003 return s_uninitialized_msg;
1009 } 1004 }
1010 // There can be a delay between leaving the Initializing state and when 1005 // There can be a delay between leaving the Initializing state and when
1011 // a Cellular device shows up, so keep showing the initializing 1006 // a Cellular device shows up, so keep showing the initializing
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
1097 for (NetworkStateHandler::NetworkStateList::iterator iter = networks.begin(); 1092 for (NetworkStateHandler::NetworkStateList::iterator iter = networks.begin();
1098 iter != networks.end(); ++iter) { 1093 iter != networks.end(); ++iter) {
1099 network_paths.insert((*iter)->path()); 1094 network_paths.insert((*iter)->path());
1100 } 1095 }
1101 PurgeIconMap(ICON_TYPE_TRAY, network_paths); 1096 PurgeIconMap(ICON_TYPE_TRAY, network_paths);
1102 PurgeIconMap(ICON_TYPE_DEFAULT_VIEW, network_paths); 1097 PurgeIconMap(ICON_TYPE_DEFAULT_VIEW, network_paths);
1103 PurgeIconMap(ICON_TYPE_LIST, network_paths); 1098 PurgeIconMap(ICON_TYPE_LIST, network_paths);
1104 } 1099 }
1105 1100
1106 } // namespace network_icon 1101 } // namespace network_icon
1107 } // namespace ui 1102 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/system/chromeos/network/network_icon.h ('k') | ash/common/system/chromeos/network/network_icon_animation.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698