diff options
author | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-28 19:28:51 +0000 |
---|---|---|
committer | davemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-09-28 19:28:51 +0000 |
commit | 2cfba442bb1b908b6d5f0977cfde82238fdfc8ae (patch) | |
tree | 52f5886faabe357ac04c4753b34ae9926dc3dc89 /chrome | |
parent | 4f4bb6f957aa7fb6602be079867aecf23901bbbc (diff) | |
download | chromium_src-2cfba442bb1b908b6d5f0977cfde82238fdfc8ae.zip chromium_src-2cfba442bb1b908b6d5f0977cfde82238fdfc8ae.tar.gz chromium_src-2cfba442bb1b908b6d5f0977cfde82238fdfc8ae.tar.bz2 |
Implemented support of network icons as image strip instead of separate icon files.
BUG=chromium-os:20600
TEST=NetworkMenuIconTest.*
Review URL: http://codereview.chromium.org/7930001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@103156 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
28 files changed, 246 insertions, 248 deletions
diff --git a/chrome/app/theme/statusbar_network_arcs0.png b/chrome/app/theme/statusbar_network_arcs0.png Binary files differdeleted file mode 100644 index 0ff1514..0000000 --- a/chrome/app/theme/statusbar_network_arcs0.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_arcs1.png b/chrome/app/theme/statusbar_network_arcs1.png Binary files differdeleted file mode 100644 index 865641a..0000000 --- a/chrome/app/theme/statusbar_network_arcs1.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_arcs2.png b/chrome/app/theme/statusbar_network_arcs2.png Binary files differdeleted file mode 100644 index 3c14e7d..0000000 --- a/chrome/app/theme/statusbar_network_arcs2.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_arcs3.png b/chrome/app/theme/statusbar_network_arcs3.png Binary files differdeleted file mode 100644 index 5d82b89..0000000 --- a/chrome/app/theme/statusbar_network_arcs3.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_arcs4.png b/chrome/app/theme/statusbar_network_arcs4.png Binary files differdeleted file mode 100644 index bfd4464..0000000 --- a/chrome/app/theme/statusbar_network_arcs4.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_arcs5.png b/chrome/app/theme/statusbar_network_arcs5.png Binary files differdeleted file mode 100644 index b8418b0..0000000 --- a/chrome/app/theme/statusbar_network_arcs5.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_arcs6.png b/chrome/app/theme/statusbar_network_arcs6.png Binary files differdeleted file mode 100644 index 47499c2..0000000 --- a/chrome/app/theme/statusbar_network_arcs6.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_arcs7.png b/chrome/app/theme/statusbar_network_arcs7.png Binary files differdeleted file mode 100644 index 77c4989..0000000 --- a/chrome/app/theme/statusbar_network_arcs7.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_bars0.png b/chrome/app/theme/statusbar_network_bars0.png Binary files differdeleted file mode 100644 index 3d52cef..0000000 --- a/chrome/app/theme/statusbar_network_bars0.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_bars1.png b/chrome/app/theme/statusbar_network_bars1.png Binary files differdeleted file mode 100644 index 9e88cbc..0000000 --- a/chrome/app/theme/statusbar_network_bars1.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_bars1o.png b/chrome/app/theme/statusbar_network_bars1o.png Binary files differdeleted file mode 100644 index 38e609f..0000000 --- a/chrome/app/theme/statusbar_network_bars1o.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_bars2.png b/chrome/app/theme/statusbar_network_bars2.png Binary files differdeleted file mode 100644 index a40ab2d..0000000 --- a/chrome/app/theme/statusbar_network_bars2.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_bars2o.png b/chrome/app/theme/statusbar_network_bars2o.png Binary files differdeleted file mode 100644 index 5d85b05..0000000 --- a/chrome/app/theme/statusbar_network_bars2o.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_bars3.png b/chrome/app/theme/statusbar_network_bars3.png Binary files differdeleted file mode 100644 index ca60026..0000000 --- a/chrome/app/theme/statusbar_network_bars3.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_bars3o.png b/chrome/app/theme/statusbar_network_bars3o.png Binary files differdeleted file mode 100644 index 95ad708..0000000 --- a/chrome/app/theme/statusbar_network_bars3o.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_bars4.png b/chrome/app/theme/statusbar_network_bars4.png Binary files differdeleted file mode 100644 index 047f12e..0000000 --- a/chrome/app/theme/statusbar_network_bars4.png +++ /dev/null diff --git a/chrome/app/theme/statusbar_network_bars4o.png b/chrome/app/theme/statusbar_network_bars4o.png Binary files differdeleted file mode 100644 index b5a1183..0000000 --- a/chrome/app/theme/statusbar_network_bars4o.png +++ /dev/null diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd index be753a7..56d0d8a 100644 --- a/chrome/app/theme/theme_resources.grd +++ b/chrome/app/theme/theme_resources.grd @@ -487,23 +487,8 @@ <include name="IDR_STATUSBAR_NETWORK_1X_WARN" file="statusbar_network_1x_warn.png" type="BINDATA" /> <include name="IDR_STATUSBAR_NETWORK_1X_ERROR" file="statusbar_network_1x_error.png" type="BINDATA" /> <include name="IDR_STATUSBAR_NETWORK_1X_UNKNOWN" file="statusbar_network_1x_unknown.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_ARCS0" file="statusbar_network_arcs0.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_ARCS1" file="statusbar_network_arcs1.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_ARCS2" file="statusbar_network_arcs2.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_ARCS3" file="statusbar_network_arcs3.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_ARCS4" file="statusbar_network_arcs4.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_ARCS5" file="statusbar_network_arcs5.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_ARCS6" file="statusbar_network_arcs6.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_ARCS7" file="statusbar_network_arcs7.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_BARS0" file="statusbar_network_bars0.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_BARS1" file="statusbar_network_bars1.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_BARS1_ORANGE" file="statusbar_network_bars1o.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_BARS2" file="statusbar_network_bars2.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_BARS2_ORANGE" file="statusbar_network_bars2o.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_BARS3" file="statusbar_network_bars3.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_BARS3_ORANGE" file="statusbar_network_bars3o.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_BARS4" file="statusbar_network_bars4.png" type="BINDATA" /> - <include name="IDR_STATUSBAR_NETWORK_BARS4_ORANGE" file="statusbar_network_bars4o.png" type="BINDATA" /> + <include name="IDR_STATUSBAR_NETWORK_ARCS" file="statusbar_network_arcs.png" type="BINDATA" /> + <include name="IDR_STATUSBAR_NETWORK_BARS" file="statusbar_network_bars.png" type="BINDATA" /> <include name="IDR_STATUSBAR_NETWORK_DISCONNECTED" file="statusbar_network_disconnected.png" type="BINDATA" /> <include name="IDR_STATUSBAR_NETWORK_EDGE" file="statusbar_network_edge.png" type="BINDATA" /> <include name="IDR_STATUSBAR_NETWORK_GPRS" file="statusbar_network_gprs.png" type="BINDATA" /> diff --git a/chrome/browser/chromeos/status/network_dropdown_button.cc b/chrome/browser/chromeos/status/network_dropdown_button.cc index 6f53876..eb45010 100644 --- a/chrome/browser/chromeos/status/network_dropdown_button.cc +++ b/chrome/browser/chromeos/status/network_dropdown_button.cc @@ -111,8 +111,8 @@ void NetworkDropdownButton::OnNetworkManagerChanged(NetworkLibrary* cros) { //////////////////////////////////////////////////////////////////////////////// // NetworkDropdownButton, NetworkMenuIcon::Delegate implementation: void NetworkDropdownButton::NetworkMenuIconChanged() { - const SkBitmap* bitmap = network_icon_->GetIconAndText(NULL); - SetIcon(*bitmap); + const SkBitmap bitmap = network_icon_->GetIconAndText(NULL); + SetIcon(bitmap); SchedulePaint(); } @@ -121,8 +121,8 @@ void NetworkDropdownButton::NetworkMenuIconChanged() { void NetworkDropdownButton::SetNetworkIconAndText() { string16 text; - const SkBitmap* bitmap = network_icon_->GetIconAndText(&text); - SetIcon(*bitmap); + const SkBitmap bitmap = network_icon_->GetIconAndText(&text); + SetIcon(bitmap); SetText(UTF16ToWide(text)); } diff --git a/chrome/browser/chromeos/status/network_menu.cc b/chrome/browser/chromeos/status/network_menu.cc index 5304efd..f620147 100644 --- a/chrome/browser/chromeos/status/network_menu.cc +++ b/chrome/browser/chromeos/status/network_menu.cc @@ -570,14 +570,14 @@ void MainMenuModel::InitMenuItems(bool is_browser_mode, int flag = FLAG_ETHERNET; if (ethernet_connecting || ethernet_connected) flag |= FLAG_ASSOCIATED; - const SkBitmap* icon; + SkBitmap icon; if (cros->ethernet_network()) { icon = NetworkMenuIcon::GetBitmap(cros->ethernet_network()); } else { - icon = rb.GetBitmapNamed(IDR_STATUSBAR_WIRED); + icon = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED); } menu_items_.push_back(MenuItem(ui::MenuModel::TYPE_COMMAND, - label, *icon, std::string(), flag)); + label, icon, std::string(), flag)); } // Wifi Networks @@ -618,17 +618,19 @@ void MainMenuModel::InitMenuItems(bool is_browser_mode, if (active_wifi && wifi_networks[i]->service_path() == active_wifi->service_path()) flag |= FLAG_ASSOCIATED; - const SkBitmap* icon = NetworkMenuIcon::GetBitmap(wifi_networks[i]); + const SkBitmap icon = NetworkMenuIcon::GetBitmap(wifi_networks[i]); menu_items_.push_back( MenuItem(ui::MenuModel::TYPE_COMMAND, - label, *icon, wifi_networks[i]->service_path(), flag)); + label, icon, wifi_networks[i]->service_path(), flag)); } if (!separator_added && !menu_items_.empty()) menu_items_.push_back(MenuItem()); menu_items_.push_back(MenuItem( ui::MenuModel::TYPE_COMMAND, l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_OTHER_WIFI_NETWORKS), - *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_ARCS4), + NetworkMenuIcon::GetBitmap( + NetworkMenuIcon::ARCS, + NetworkMenuIcon::NumBitmaps(NetworkMenuIcon::ARCS)), std::string(), FLAG_ADD_WIFI)); } @@ -687,10 +689,10 @@ void MainMenuModel::InitMenuItems(bool is_browser_mode, active_cellular && active_cellular->SupportsDataPlan(); if (isActive) flag |= FLAG_ASSOCIATED; - const SkBitmap* icon = NetworkMenuIcon::GetBitmap(cell_networks[i]); + const SkBitmap icon = NetworkMenuIcon::GetBitmap(cell_networks[i]); menu_items_.push_back( MenuItem(ui::MenuModel::TYPE_COMMAND, - label, *icon, cell_networks[i]->service_path(), flag)); + label, icon, cell_networks[i]->service_path(), flag)); if (isActive && supports_data_plan) { label.clear(); if (active_cellular->needs_new_plan()) { @@ -742,7 +744,7 @@ void MainMenuModel::InitMenuItems(bool is_browser_mode, ui::MenuModel::TYPE_COMMAND, l10n_util::GetStringUTF16( IDS_OPTIONS_SETTINGS_OTHER_CELLULAR_NETWORKS), - *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), + NetworkMenuIcon::GetDisconnectedBitmap(NetworkMenuIcon::BARS), std::string(), FLAG_ADD_CELLULAR)); } } @@ -761,11 +763,11 @@ void MainMenuModel::InitMenuItems(bool is_browser_mode, if (is_browser_mode) { if (cros->connected_network() || cros->virtual_network_connected()) { menu_items_.push_back(MenuItem()); // Separator - const SkBitmap* icon = NetworkMenuIcon::GetVpnBitmap(); + const SkBitmap icon = NetworkMenuIcon::GetVpnBitmap(); menu_items_.push_back(MenuItem( ui::MenuModel::TYPE_SUBMENU, l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_PRIVATE_NETWORKS), - *icon, vpn_menu_model_.get(), FLAG_NONE)); + icon, vpn_menu_model_.get(), FLAG_NONE)); vpn_menu_model_->InitMenuItems( is_browser_mode, should_open_button_options); } @@ -892,10 +894,10 @@ void VPNMenuModel::InitMenuItems(bool is_browser_mode, flag |= FLAG_DISABLED; if (active_vpn && vpn->service_path() == active_vpn->service_path()) flag |= FLAG_ASSOCIATED; - const SkBitmap* icon = NetworkMenuIcon::GetBitmap(vpn); + const SkBitmap icon = NetworkMenuIcon::GetBitmap(vpn); menu_items_.push_back( MenuItem(ui::MenuModel::TYPE_COMMAND, - label, *icon, vpn->service_path(), flag)); + label, icon, vpn->service_path(), flag)); } // Add option to add/disconnect from vpn. diff --git a/chrome/browser/chromeos/status/network_menu_button.cc b/chrome/browser/chromeos/status/network_menu_button.cc index adc891f..fc247c8 100644 --- a/chrome/browser/chromeos/status/network_menu_button.cc +++ b/chrome/browser/chromeos/status/network_menu_button.cc @@ -220,8 +220,8 @@ void NetworkMenuButton::RunMenu(views::View* source, const gfx::Point& pt) { //////////////////////////////////////////////////////////////////////////////// // NetworkMenuButton, NetworkMenuIcon::Delegate implementation: void NetworkMenuButton::NetworkMenuIconChanged() { - const SkBitmap* bitmap = network_icon_->GetIconAndText(NULL); - SetIcon(*bitmap); + const SkBitmap bitmap = network_icon_->GetIconAndText(NULL); + SetIcon(bitmap); SchedulePaint(); } @@ -311,8 +311,8 @@ const MobileConfig::CarrierDeal* NetworkMenuButton::GetCarrierDeal( void NetworkMenuButton::SetNetworkIcon() { string16 tooltip; - const SkBitmap* bitmap = network_icon_->GetIconAndText(&tooltip); - SetIcon(*bitmap); + const SkBitmap bitmap = network_icon_->GetIconAndText(&tooltip); + SetIcon(bitmap); SetTooltipAndAccessibleName(tooltip); SchedulePaint(); } diff --git a/chrome/browser/chromeos/status/network_menu_icon.cc b/chrome/browser/chromeos/status/network_menu_icon.cc index 546229a..4e85199 100644 --- a/chrome/browser/chromeos/status/network_menu_icon.cc +++ b/chrome/browser/chromeos/status/network_menu_icon.cc @@ -26,39 +26,12 @@ const double kConnectingImageAlpha = 0.5; const int kThrobDurationMs = 750; // Network strength bars images. -const int kNumBarsImages = 4; - -// NOTE: Use an array rather than just calculating a resource number to avoid -// creating implicit ordering dependencies on the resource values. -const int kBarsImages[kNumBarsImages + 1] = { - IDR_STATUSBAR_NETWORK_BARS0, - IDR_STATUSBAR_NETWORK_BARS1, - IDR_STATUSBAR_NETWORK_BARS2, - IDR_STATUSBAR_NETWORK_BARS3, - IDR_STATUSBAR_NETWORK_BARS4, -}; - -// Animation does not include BARS0. -SkBitmap kBarsImagesAnimating[kNumBarsImages]; +const int kNumBarsImages = 5; +SkBitmap kBarsImagesAnimating[kNumBarsImages - 1]; // Network strength arcs images. -const int kNumArcsImages = 7; - -// NOTE: Use an array rather than just calculating a resource number to avoid -// creating implicit ordering dependencies on the resource values. -const int kArcsImages[kNumArcsImages + 1] = { - IDR_STATUSBAR_NETWORK_ARCS0, - IDR_STATUSBAR_NETWORK_ARCS1, - IDR_STATUSBAR_NETWORK_ARCS2, - IDR_STATUSBAR_NETWORK_ARCS3, - IDR_STATUSBAR_NETWORK_ARCS4, - IDR_STATUSBAR_NETWORK_ARCS5, - IDR_STATUSBAR_NETWORK_ARCS6, - IDR_STATUSBAR_NETWORK_ARCS7, -}; - -// Animation does not include BARS0. -SkBitmap kArcsImagesAnimating[kNumArcsImages]; +const int kNumArcsImages = 5; +SkBitmap kArcsImagesAnimating[kNumArcsImages - 1]; // Badge offsets. const int kBadgeLeftX = 0; @@ -83,14 +56,14 @@ int StrengthIndex(int strength, int count) { } int WifiStrengthIndex(const WifiNetwork* wifi) { - return StrengthIndex(wifi->strength(), kNumArcsImages); + return StrengthIndex(wifi->strength(), kNumArcsImages - 1); } int CellularStrengthIndex(const CellularNetwork* cellular) { if (cellular->data_left() == CellularNetwork::DATA_NONE) return 0; else - return StrengthIndex(cellular->strength(), kNumBarsImages); + return StrengthIndex(cellular->strength(), kNumBarsImages - 1); } const SkBitmap* BadgeForNetworkTechnology(const CellularNetwork* cellular) { @@ -174,7 +147,6 @@ class NetworkIcon { NetworkIcon() : state_(STATE_UNKNOWN), strength_index_(-1), - icon_(NULL), top_left_badge_(NULL), top_right_badge_(NULL), bottom_left_badge_(NULL), @@ -187,7 +159,6 @@ class NetworkIcon { : service_path_(service_path), state_(STATE_UNKNOWN), strength_index_(-1), - icon_(NULL), top_left_badge_(NULL), top_right_badge_(NULL), bottom_left_badge_(NULL), @@ -199,7 +170,7 @@ class NetworkIcon { } void ClearIconAndBadges() { - icon_ = NULL; + icon_ = SkBitmap(); top_left_badge_ = NULL; top_right_badge_ = NULL; bottom_left_badge_ = NULL; @@ -258,7 +229,7 @@ class NetworkIcon { switch (network->type()) { case TYPE_ETHERNET: { - icon_ = rb.GetBitmapNamed(IDR_STATUSBAR_WIRED); + icon_ = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED); break; } case TYPE_WIFI: { @@ -266,7 +237,8 @@ class NetworkIcon { static_cast<const WifiNetwork*>(network); if (strength_index_ == -1) strength_index_ = WifiStrengthIndex(wifi); - icon_ = rb.GetBitmapNamed(kArcsImages[strength_index_]); + icon_ = NetworkMenuIcon::GetBitmap( + NetworkMenuIcon::ARCS, strength_index_); break; } case TYPE_CELLULAR: { @@ -274,13 +246,14 @@ class NetworkIcon { static_cast<const CellularNetwork*>(network); if (strength_index_ == -1) strength_index_ = CellularStrengthIndex(cellular); - icon_ = rb.GetBitmapNamed(kBarsImages[strength_index_]); + icon_ = NetworkMenuIcon::GetBitmap( + NetworkMenuIcon::BARS, strength_index_); break; } default: { LOG(WARNING) << "Request for icon for unsupported type: " << network->type(); - icon_ = rb.GetBitmapNamed(IDR_STATUSBAR_WIRED); + icon_ = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED); break; } } @@ -346,7 +319,7 @@ class NetworkIcon { SetBadges(connected_network); } else { // Use the ethernet icon for VPN when not connected. - icon_ = rb.GetBitmapNamed(IDR_STATUSBAR_WIRED); + icon_ = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED); // We can be connected to a VPN, even when there is no connected // underlying network. In that case, for the status bar, show the // disconencted badge. @@ -365,20 +338,19 @@ class NetworkIcon { // Generates the bitmap. Call after setting the icon and badges. void GenerateBitmap() { - if (!icon_) + if (icon_.empty()) return; - NetworkMenuIcon::GenerateBitmapFromComponents( + bitmap_ = NetworkMenuIcon::GenerateBitmapFromComponents( icon_, top_left_badge_, top_right_badge_, bottom_left_badge_, - bottom_right_badge_, - &bitmap_); + bottom_right_badge_); } - const SkBitmap* GetBitmap() const { return &bitmap_; } + const SkBitmap GetBitmap() const { return bitmap_; } - void set_icon(const SkBitmap* icon) { icon_ = icon; } + void set_icon(const SkBitmap& icon) { icon_ = icon; } void set_top_left_badge(const SkBitmap* badge) { top_left_badge_ = badge; } @@ -397,7 +369,7 @@ class NetworkIcon { ConnectionState state_; int strength_index_; SkBitmap bitmap_; - const SkBitmap* icon_; + SkBitmap icon_; const SkBitmap* top_left_badge_; const SkBitmap* top_right_badge_; const SkBitmap* bottom_left_badge_; @@ -437,7 +409,7 @@ NetworkMenuIcon::~NetworkMenuIcon() { // Public methods: -const SkBitmap* NetworkMenuIcon::GetIconAndText(string16* text) { +const SkBitmap NetworkMenuIcon::GetIconAndText(string16* text) { SetIconAndText(text); icon_->GenerateBitmap(); return icon_->GetBitmap(); @@ -483,16 +455,16 @@ double NetworkMenuIcon::GetAnimation() { void NetworkMenuIcon::SetConnectingIcon(const Network* network, double animation) { int image_count; - const int* source_image_ids; + BitmapType bitmap_type; SkBitmap* images; if (network->type() == TYPE_WIFI) { - image_count = kNumArcsImages; - source_image_ids = kArcsImages; + image_count = kNumArcsImages - 1; + bitmap_type = ARCS; images = kArcsImagesAnimating; } else { - image_count = kNumBarsImages; - source_image_ids = kBarsImages; + image_count = kNumBarsImages - 1; + bitmap_type = BARS; images = kBarsImagesAnimating; } int index = static_cast<int>( @@ -501,11 +473,10 @@ void NetworkMenuIcon::SetConnectingIcon(const Network* network, // Lazily cache images. if (images[index].empty()) { - ResourceBundle& rb = ResourceBundle::GetSharedInstance(); - SkBitmap* source = rb.GetBitmapNamed(source_image_ids[1 + index]); - NetworkMenuIcon::GenerateConnectingBitmap(source, &images[index]); + SkBitmap source = GetBitmap(bitmap_type, index + 1); + images[index] = NetworkMenuIcon::GenerateConnectingBitmap(source); } - icon_->set_icon(&images[index]); + icon_->set_icon(images[index]); } // Sets up the icon and badges for GenerateBitmap(). @@ -517,7 +488,7 @@ void NetworkMenuIcon::SetIconAndText(string16* text) { // Display warning badge if cros is not loaded. if (!cros || !CrosLibrary::Get()->EnsureLoaded()) { - icon_->set_icon(rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); + icon_->set_icon(GetBitmap(BARS, 0)); icon_->set_bottom_right_badge( rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_WARNING)); if (text) { @@ -609,16 +580,16 @@ void NetworkMenuIcon::SetIconAndText(string16* text) { // No connecting, connected, or active network. switch (last_network_type_) { case TYPE_ETHERNET: - icon_->set_icon(rb.GetBitmapNamed(IDR_STATUSBAR_WIRED)); + icon_->set_icon(*rb.GetBitmapNamed(IDR_STATUSBAR_WIRED)); icon_->set_bottom_right_badge( rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED)); break; case TYPE_WIFI: - icon_->set_icon(rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_ARCS0)); + icon_->set_icon(GetBitmap(ARCS, 0)); break; case TYPE_CELLULAR: default: - icon_->set_icon(rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0)); + icon_->set_icon(GetBitmap(BARS, 0)); icon_->set_bottom_right_badge( rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED)); break; @@ -636,17 +607,15 @@ void NetworkMenuIcon::SetIconAndText(string16* text) { // Static functions for generating network icon bitmaps: // This defines how we assemble a network icon. -void NetworkMenuIcon::GenerateBitmapFromComponents( - const SkBitmap* icon, +const SkBitmap NetworkMenuIcon::GenerateBitmapFromComponents( + const SkBitmap& icon, const SkBitmap* top_left_badge, const SkBitmap* top_right_badge, const SkBitmap* bottom_left_badge, - const SkBitmap* bottom_right_badge, - SkBitmap* result) { - DCHECK(icon); - DCHECK(result); - gfx::CanvasSkia canvas(icon->width(), icon->height(), false); - canvas.DrawBitmapInt(*icon, 0, 0); + const SkBitmap* bottom_right_badge) { + DCHECK(!icon.empty()); + gfx::CanvasSkia canvas(icon.width(), icon.height(), false); + canvas.DrawBitmapInt(icon, 0, 0); if (top_left_badge) { canvas.DrawBitmapInt( @@ -665,27 +634,27 @@ void NetworkMenuIcon::GenerateBitmapFromComponents( *bottom_right_badge, kBadgeRightX, kBadgeBottomY); } - *result = canvas.ExtractBitmap(); + return canvas.ExtractBitmap(); } // We blend connecting icons with a black image to generate a faded icon. -void NetworkMenuIcon::GenerateConnectingBitmap( - const SkBitmap* source, SkBitmap* image) { +const SkBitmap NetworkMenuIcon::GenerateConnectingBitmap( + const SkBitmap& source) { static SkBitmap empty_badge; if (empty_badge.empty()) { empty_badge.setConfig(SkBitmap::kARGB_8888_Config, - source->width(), source->height(), 0); + source.width(), source.height(), 0); empty_badge.allocPixels(); empty_badge.eraseARGB(0, 0, 0, 0); } - DCHECK(empty_badge.width() == source->width()); - DCHECK(empty_badge.height() == source->height()); - *image = SkBitmapOperations::CreateBlendedBitmap( - empty_badge, *source, kConnectingImageAlpha); + DCHECK(empty_badge.width() == source.width()); + DCHECK(empty_badge.height() == source.height()); + return SkBitmapOperations::CreateBlendedBitmap( + empty_badge, source, kConnectingImageAlpha); } // Generates and caches an icon bitmap for a network's current state. -const SkBitmap* NetworkMenuIcon::GetBitmap(const Network* network) { +const SkBitmap NetworkMenuIcon::GetBitmap(const Network* network) { DCHECK(network); // Maintain a static (global) icon map. Note: Icons are never destroyed; // it is assumed that a finite and reasonable number of network icons will be @@ -709,7 +678,7 @@ const SkBitmap* NetworkMenuIcon::GetBitmap(const Network* network) { } // Returns an icon for a disconnected VPN. -const SkBitmap* NetworkMenuIcon::GetVpnBitmap() { +const SkBitmap NetworkMenuIcon::GetVpnBitmap() { static SkBitmap* vpn_bitmap = NULL; if (vpn_bitmap == NULL) { // Set the disconencted vpn icon (ethernet + VPN) for GetVpnIcon(). @@ -722,7 +691,51 @@ const SkBitmap* NetworkMenuIcon::GetVpnBitmap() { canvas.DrawBitmapInt(*vpn_badge, kBadgeLeftX, kBadgeBottomY); vpn_bitmap = new SkBitmap(canvas.ExtractBitmap()); } - return vpn_bitmap; + return *vpn_bitmap; +} + +const SkBitmap NetworkMenuIcon::GetBitmap(BitmapType type, int index) { + static int arcs_width = 0, arcs_height = 0, bars_width = 0, bars_height = 0; + int width, height; + SkBitmap* images; + if (type == ARCS) { + if (index >= kNumArcsImages) + return SkBitmap(); + + images = ResourceBundle::GetSharedInstance().GetBitmapNamed( + IDR_STATUSBAR_NETWORK_ARCS); + if (arcs_width == 0) + arcs_width = images->width(); + if (arcs_height == 0) + arcs_height = images->height() / kNumArcsImages; + width = arcs_width; + height = arcs_height; + } else { + if (index >= kNumBarsImages) + return SkBitmap(); + + images = ResourceBundle::GetSharedInstance().GetBitmapNamed( + IDR_STATUSBAR_NETWORK_BARS); + if (bars_width == 0) + bars_width = images->width(); + if (bars_height == 0) + bars_height = images->height() / kNumBarsImages; + width = bars_width; + height = bars_height; + } + + SkIRect subset = SkIRect::MakeXYWH(0, index * height, width, height); + SkBitmap image; + images->extractSubset(&image, subset); + return image; +} + +const SkBitmap NetworkMenuIcon::GetDisconnectedBitmap(BitmapType type) { + return GetBitmap(type, 0); +} + +int NetworkMenuIcon::NumBitmaps(BitmapType type) { + return (type == ARCS) ? kNumArcsImages : kNumBarsImages; } } // chromeos diff --git a/chrome/browser/chromeos/status/network_menu_icon.h b/chrome/browser/chromeos/status/network_menu_icon.h index 35b2685..bcb1907 100644 --- a/chrome/browser/chromeos/status/network_menu_icon.h +++ b/chrome/browser/chromeos/status/network_menu_icon.h @@ -28,6 +28,12 @@ class NetworkMenuIcon : public ui::AnimationDelegate { DROPDOWN_MODE, // Prioritizes connected networks and sets display text. }; + // Used for calls to GetBitmap() and GetNumBitmaps() below. + enum BitmapType { + ARCS = 0, + BARS + }; + class Delegate { public: // Called when the bitmap has changed due to animation. Callback should @@ -40,7 +46,7 @@ class NetworkMenuIcon : public ui::AnimationDelegate { // Generates and returns the icon bitmap. This will never return NULL. // Also sets |text| if not NULL. Behavior varies depending on |mode_|. - const SkBitmap* GetIconAndText(string16* text); + const SkBitmap GetIconAndText(string16* text); // ui::AnimationDelegate implementation. virtual void AnimationProgressed(const ui::Animation* animation) OVERRIDE; @@ -48,22 +54,27 @@ class NetworkMenuIcon : public ui::AnimationDelegate { // Static functions for generating network icon bitmaps: // Composites the bitmaps to generate a network icon. - static void GenerateBitmapFromComponents( - const SkBitmap* icon, + static const SkBitmap GenerateBitmapFromComponents( + const SkBitmap& icon, const SkBitmap* top_left_badge, const SkBitmap* top_right_badge, const SkBitmap* bottom_left_badge, - const SkBitmap* bottom_right_badge, - SkBitmap* result); + const SkBitmap* bottom_right_badge); // Sets a blended bitmap for connecting images. - static void GenerateConnectingBitmap(const SkBitmap* source, SkBitmap* image); + static const SkBitmap GenerateConnectingBitmap(const SkBitmap& source); // Returns a bitmap associated with |network|, reflecting its current state. - static const SkBitmap* GetBitmap(const Network* network); + static const SkBitmap GetBitmap(const Network* network); // Returns a bitmap representing an unconnected VPN. - static const SkBitmap* GetVpnBitmap(); + static const SkBitmap GetVpnBitmap(); + + // Access a specific bitmap. If index is out of range an empty bitmap + // will be returned. + static const SkBitmap GetBitmap(BitmapType type, int index); + static const SkBitmap GetDisconnectedBitmap(BitmapType type); + static int NumBitmaps(BitmapType type); protected: // Virtual for testing. diff --git a/chrome/browser/chromeos/status/network_menu_icon_unittest.cc b/chrome/browser/chromeos/status/network_menu_icon_unittest.cc index f53d029..19f8657 100644 --- a/chrome/browser/chromeos/status/network_menu_icon_unittest.cc +++ b/chrome/browser/chromeos/status/network_menu_icon_unittest.cc @@ -12,19 +12,19 @@ namespace { -bool CompareBitmaps(const SkBitmap* a, const SkBitmap* b) { - CHECK(a); - CHECK(b); - if (a->getSize() != b->getSize()) { +bool CompareBitmaps(const SkBitmap& a, const SkBitmap& b) { + CHECK(!a.empty()); + CHECK(!b.empty()); + if (a.getSize() != b.getSize()) { LOG(WARNING) << "Mistmatched size: " - << a->getSize() << " != " << b->getSize(); + << a.getSize() << " != " << b.getSize(); return false; } - size_t bytes = a->getSize(); - SkAutoLockPixels locka(*a); - SkAutoLockPixels lockb(*b); - const char* pixa = static_cast<const char*>(a->getPixels()); - const char* pixb = static_cast<const char*>(b->getPixels()); + size_t bytes = a.getSize(); + SkAutoLockPixels locka(a); + SkAutoLockPixels lockb(b); + const char* pixa = static_cast<const char*>(a.getPixels()); + const char* pixb = static_cast<const char*>(b.getPixels()); if (!pixa || !pixb) { if (!pixa) LOG(WARNING) << "getPixels() returned NULL for LHS"; @@ -32,16 +32,16 @@ bool CompareBitmaps(const SkBitmap* a, const SkBitmap* b) { LOG(WARNING) << "getPixels() returned NULL for RHS"; return false; } - size_t width = a->width(); - size_t height = a->height(); - size_t bpp = a->bytesPerPixel(); + size_t width = a.width(); + size_t height = a.height(); + size_t bpp = a.bytesPerPixel(); if (width * height * bpp != bytes) { LOG(WARNING) << "Width: " << width << " x Height: " << height << " x bpp: " << bpp << " != Size: " << bytes; return false; } - for (int y=0; y<a->height(); ++y) { - for (int x=0; x<a->width(); ++x) { + for (int y=0; y<a.height(); ++y) { + for (int x=0; x<a.width(); ++x) { for (size_t i = 0; i<bpp; ++i) { if (*pixa++ != *pixb++) { LOG(WARNING) << "Icon: " << width << " x " << height << " x " << bpp @@ -66,55 +66,52 @@ class NetworkMenuIconTest : public testing::Test { virtual void SetUp() OVERRIDE { cros_ = CrosLibrary::Get()->GetNetworkLibrary(); // Ethernet connected = WIRED icon, no badges. - NetworkMenuIcon::GenerateBitmapFromComponents( - rb_.GetBitmapNamed(IDR_STATUSBAR_WIRED), - NULL, NULL, NULL, NULL, - ðernet_connected_bitmap_); + ethernet_connected_bitmap_ = NetworkMenuIcon::GenerateBitmapFromComponents( + *rb_.GetBitmapNamed(IDR_STATUSBAR_WIRED), + NULL, NULL, NULL, NULL); // Ethernet disonnected = WIRED icon + DISCONNECTED badge. - NetworkMenuIcon::GenerateBitmapFromComponents( - rb_.GetBitmapNamed(IDR_STATUSBAR_WIRED), - NULL, NULL, NULL, - rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED), - ðernet_disconnected_bitmap_); - // Wifi connected, strength = 100% = ARCS7 icon, no badges. - NetworkMenuIcon::GenerateBitmapFromComponents( - rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_ARCS7), - NULL, NULL, NULL, NULL, - &wifi_connected_100_bitmap_); - // Wifi connected, strength = 50%, encrypted = ARCS4 icon + SECURE badge. - NetworkMenuIcon::GenerateBitmapFromComponents( - rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_ARCS4), - NULL, NULL, NULL, rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE), - &wifi_encrypted_50_bitmap_); + ethernet_disconnected_bitmap_ = + NetworkMenuIcon::GenerateBitmapFromComponents( + *rb_.GetBitmapNamed(IDR_STATUSBAR_WIRED), + NULL, NULL, NULL, + rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED)); + // Wifi connected, strength = 100% = ARCS4 icon, no badges. + wifi_connected_100_bitmap_ = NetworkMenuIcon::GenerateBitmapFromComponents( + NetworkMenuIcon::GetBitmap( + NetworkMenuIcon::ARCS, + NetworkMenuIcon::NumBitmaps(NetworkMenuIcon::ARCS) - 1), + NULL, NULL, NULL, NULL); + // Wifi connected, strength = 50%, encrypted = ARCS2 icon + SECURE badge. + wifi_encrypted_50_bitmap_ = NetworkMenuIcon::GenerateBitmapFromComponents( + NetworkMenuIcon::GetBitmap(NetworkMenuIcon::ARCS, 3), + NULL, NULL, NULL, rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE)); // Wifi disconnected (strength = 0%) = ARCS0 icon. - NetworkMenuIcon::GenerateBitmapFromComponents( - rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_ARCS0), - NULL, NULL, NULL, NULL, - &wifi_disconnected_bitmap_); + wifi_disconnected_bitmap_ = NetworkMenuIcon::GenerateBitmapFromComponents( + NetworkMenuIcon::GetBitmap(NetworkMenuIcon::ARCS, 0), + NULL, NULL, NULL, NULL); // Wifi connecting = IDR_STATUSBAR_NETWORK_ARCS1 (faded). - NetworkMenuIcon::GenerateConnectingBitmap( - rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_ARCS1), - &wifi_connecting_bitmap_); + wifi_connecting_bitmap_ = NetworkMenuIcon::GenerateConnectingBitmap( + NetworkMenuIcon::GetBitmap(NetworkMenuIcon::ARCS, 1)); // 3G connected, strength = 100% = BARS4 icon + 3G badge. - NetworkMenuIcon::GenerateBitmapFromComponents( - rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS4), - NULL, NULL, NULL, rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G), - &cellular_connected_100_bitmap_); + cellular_connected_100_bitmap_ = + NetworkMenuIcon::GenerateBitmapFromComponents( + NetworkMenuIcon::GetBitmap( + NetworkMenuIcon::BARS, + NetworkMenuIcon::NumBitmaps(NetworkMenuIcon::BARS) - 1), + NULL, NULL, NULL, rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G)); // 3G connected, strength = 50%, roaming = BARS2 icon + roaming & 3G badges. - NetworkMenuIcon::GenerateBitmapFromComponents( - rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS3), + cellular_roaming_50_bitmap_ = NetworkMenuIcon::GenerateBitmapFromComponents( + NetworkMenuIcon::GetBitmap(NetworkMenuIcon::BARS, 3), rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_ROAMING), NULL, - NULL, rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G), - &cellular_roaming_50_bitmap_); + NULL, rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G)); // 3G disconnected (strength = 0%) = BARS0 icon + 3G badge. - NetworkMenuIcon::GenerateBitmapFromComponents( - rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), - NULL, NULL, NULL, rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G), - &cellular_disconnected_bitmap_); + cellular_disconnected_bitmap_ = + NetworkMenuIcon::GenerateBitmapFromComponents( + NetworkMenuIcon::GetBitmap(NetworkMenuIcon::BARS, 0), + NULL, NULL, NULL, rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G)); // 3G connecting = IDR_STATUSBAR_NETWORK_BARS1 (faded). - NetworkMenuIcon::GenerateConnectingBitmap( - rb_.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS1), - &cellular_connecting_bitmap_); + cellular_connecting_bitmap_ = NetworkMenuIcon::GenerateConnectingBitmap( + NetworkMenuIcon::GetBitmap(NetworkMenuIcon::BARS, 1)); } virtual void TearDown() OVERRIDE { } @@ -158,55 +155,35 @@ class NetworkMenuIconTest : public testing::Test { SkBitmap cellular_connecting_bitmap_; }; -// Test icon cache consistency. -TEST_F(NetworkMenuIconTest, NetworkIconCache) { - Network* network1 = cros_->FindNetworkByPath("wifi1"); // connected - Network* network2 = cros_->FindNetworkByPath("wifi2"); // connecting - ASSERT_NE(static_cast<const Network*>(NULL), network1); - ASSERT_NE(static_cast<const Network*>(NULL), network2); - // Different network paths should return different icons. - const SkBitmap* icon1 = NetworkMenuIcon::GetBitmap(network1); - const SkBitmap* icon2 = NetworkMenuIcon::GetBitmap(network2); - EXPECT_NE(icon1, icon2); - // Same network paths should return the same icon. - const SkBitmap* icon1b = NetworkMenuIcon::GetBitmap(network1); - EXPECT_EQ(icon1, icon1b); - // Changing properties of a network should update the icon, but not change - // the returned pointer. - SetConnected(network2, false); - const SkBitmap* icon2b = NetworkMenuIcon::GetBitmap(network2); - EXPECT_EQ(icon2, icon2b); -} - // Compare icon cache results against expected results fron SetUp(). TEST_F(NetworkMenuIconTest, EthernetIcon) { Network* network = cros_->FindNetworkByPath("eth1"); ASSERT_NE(static_cast<const Network*>(NULL), network); SetConnected(network, true); - const SkBitmap* icon = NetworkMenuIcon::GetBitmap(network); - EXPECT_TRUE(CompareBitmaps(icon, ðernet_connected_bitmap_)); + SkBitmap icon = NetworkMenuIcon::GetBitmap(network); + EXPECT_TRUE(CompareBitmaps(icon, ethernet_connected_bitmap_)); SetConnected(network, false); icon = NetworkMenuIcon::GetBitmap(network); - EXPECT_TRUE(CompareBitmaps(icon, ðernet_disconnected_bitmap_)); + EXPECT_TRUE(CompareBitmaps(icon, ethernet_disconnected_bitmap_)); } TEST_F(NetworkMenuIconTest, WifiIcon) { WifiNetwork* network = cros_->FindWifiNetworkByPath("wifi1"); ASSERT_NE(static_cast<const Network*>(NULL), network); - const SkBitmap* icon = NetworkMenuIcon::GetBitmap(network); - EXPECT_TRUE(CompareBitmaps(icon, &wifi_connected_100_bitmap_)); + SkBitmap icon = NetworkMenuIcon::GetBitmap(network); + EXPECT_TRUE(CompareBitmaps(icon, wifi_connected_100_bitmap_)); SetStrength(network, 50); SetEncryption(network, SECURITY_RSN); icon = NetworkMenuIcon::GetBitmap(network); - EXPECT_TRUE(CompareBitmaps(icon, &wifi_encrypted_50_bitmap_)); + EXPECT_TRUE(CompareBitmaps(icon, wifi_encrypted_50_bitmap_)); SetConnected(network, false); SetStrength(network, 0); SetEncryption(network, SECURITY_NONE); icon = NetworkMenuIcon::GetBitmap(network); - EXPECT_TRUE(CompareBitmaps(icon, &wifi_disconnected_bitmap_)); + EXPECT_TRUE(CompareBitmaps(icon, wifi_disconnected_bitmap_)); } TEST_F(NetworkMenuIconTest, CellularIcon) { @@ -215,19 +192,19 @@ TEST_F(NetworkMenuIconTest, CellularIcon) { SetConnected(network, true); SetStrength(network, 100); SetRoamingState(network, ROAMING_STATE_HOME); - const SkBitmap* icon = NetworkMenuIcon::GetBitmap(network); - EXPECT_TRUE(CompareBitmaps(icon, &cellular_connected_100_bitmap_)); + SkBitmap icon = NetworkMenuIcon::GetBitmap(network); + EXPECT_TRUE(CompareBitmaps(icon, cellular_connected_100_bitmap_)); SetStrength(network, 50); SetRoamingState(network, ROAMING_STATE_ROAMING); icon = NetworkMenuIcon::GetBitmap(network); - EXPECT_TRUE(CompareBitmaps(icon, &cellular_roaming_50_bitmap_)); + EXPECT_TRUE(CompareBitmaps(icon, cellular_roaming_50_bitmap_)); SetConnected(network, false); SetStrength(network, 0); SetRoamingState(network, ROAMING_STATE_HOME); icon = NetworkMenuIcon::GetBitmap(network); - EXPECT_TRUE(CompareBitmaps(icon, &cellular_disconnected_bitmap_)); + EXPECT_TRUE(CompareBitmaps(icon, cellular_disconnected_bitmap_)); } namespace { @@ -275,7 +252,7 @@ class TestNetworkMenuIcon : public NetworkMenuIcon { TEST_F(NetworkMenuIconTest, StatusIconMenuMode) { TestNetworkMenuIcon menu_icon(NetworkMenuIcon::MENU_MODE); - const SkBitmap* icon; + SkBitmap icon; // Set up the initial network state. CellularNetwork* cellular1 = cros_->FindCellularNetworkByPath("cellular1"); @@ -284,12 +261,12 @@ TEST_F(NetworkMenuIconTest, StatusIconMenuMode) { // For MENU_MODE, we always display the connecting icon (cellular1). icon = menu_icon.GetIconAndText(NULL); - EXPECT_TRUE(CompareBitmaps(icon, &cellular_connecting_bitmap_)); + EXPECT_TRUE(CompareBitmaps(icon, cellular_connecting_bitmap_)); // Set cellular1 to connected; ethernet icon should be shown. SetConnected(cellular1, true); icon = menu_icon.GetIconAndText(NULL); - EXPECT_TRUE(CompareBitmaps(icon, ðernet_connected_bitmap_)); + EXPECT_TRUE(CompareBitmaps(icon, ethernet_connected_bitmap_)); // Set ethernet to inactive/disconnected; wifi icon should be shown. Network* eth1 = cros_->FindNetworkByPath("eth1"); @@ -297,18 +274,18 @@ TEST_F(NetworkMenuIconTest, StatusIconMenuMode) { SetActive(eth1, false); SetConnected(eth1, false); icon = menu_icon.GetIconAndText(NULL); - EXPECT_TRUE(CompareBitmaps(icon, &wifi_connected_100_bitmap_)); + EXPECT_TRUE(CompareBitmaps(icon, wifi_connected_100_bitmap_)); } TEST_F(NetworkMenuIconTest, StatusIconDropdownMode) { TestNetworkMenuIcon menu_icon(NetworkMenuIcon::DROPDOWN_MODE); - const SkBitmap* icon; + SkBitmap icon; // Start with the default stub network state. // For DROPDOWN_MODE, we prioritize the connected network (ethernet). icon = menu_icon.GetIconAndText(NULL); - EXPECT_TRUE(CompareBitmaps(icon, ðernet_connected_bitmap_)); + EXPECT_TRUE(CompareBitmaps(icon, ethernet_connected_bitmap_)); // Set ethernet to disconnected+inactive; wifi icon should be shown. Network* ethernet = cros_->FindNetworkByPath("eth1"); @@ -317,7 +294,7 @@ TEST_F(NetworkMenuIconTest, StatusIconDropdownMode) { SetConnected(ethernet, false); icon = menu_icon.GetIconAndText(NULL); - EXPECT_TRUE(CompareBitmaps(icon, &wifi_connected_100_bitmap_)); + EXPECT_TRUE(CompareBitmaps(icon, wifi_connected_100_bitmap_)); // Set wifi2 to active; wifi connecting icon should be shown. WifiNetwork* wifi1 = cros_->FindWifiNetworkByPath("wifi1"); @@ -327,7 +304,7 @@ TEST_F(NetworkMenuIconTest, StatusIconDropdownMode) { SetActive(wifi2, true); icon = menu_icon.GetIconAndText(NULL); - EXPECT_TRUE(CompareBitmaps(icon, &wifi_connecting_bitmap_)); + EXPECT_TRUE(CompareBitmaps(icon, wifi_connecting_bitmap_)); } } // namespace chromeos diff --git a/chrome/browser/chromeos/status/status_area_button.cc b/chrome/browser/chromeos/status/status_area_button.cc index 3d02f91..07b82f1 100644 --- a/chrome/browser/chromeos/status/status_area_button.cc +++ b/chrome/browser/chromeos/status/status_area_button.cc @@ -12,19 +12,26 @@ #include "views/border.h" #include "views/view.h" -namespace chromeos { +namespace { // Colors for different text styles. -static const SkColor kWhitePlainTextColor = 0x99ffffff; -static const SkColor kGrayPlainTextColor = 0x99666666; -static const SkColor kWhiteHaloedTextColor = 0xb3ffffff; -static const SkColor kWhiteHaloedHaloColor = 0xb3000000; -static const SkColor kGrayEmbossedTextColor = 0xff4c4c4c; -static const SkColor kGrayEmbossedShadowColor = 0x80ffffff; +const SkColor kWhitePlainTextColor = 0x99ffffff; +const SkColor kGrayPlainTextColor = 0x99666666; +const SkColor kWhiteHaloedTextColor = 0xb3ffffff; +const SkColor kWhiteHaloedHaloColor = 0xb3000000; +const SkColor kGrayEmbossedTextColor = 0xff4c4c4c; +const SkColor kGrayEmbossedShadowColor = 0x80ffffff; // Status area font is bigger. const int kFontSizeDelta = 3; +// Pad for status icons. +const int kIconHorizontalPad = 2; + +} + +namespace chromeos { + //////////////////////////////////////////////////////////////////////////////// // StatusAreaButton @@ -47,7 +54,8 @@ StatusAreaButton::StatusAreaButton(StatusAreaHost* host, SetShowMultipleIconStates(false); set_alignment(TextButton::ALIGN_CENTER); - set_border(NULL); + set_border(views::Border::CreateEmptyBorder( + 0, kIconHorizontalPad, 0, kIconHorizontalPad)); // Use an offset that is top aligned with toolbar. set_menu_offset(0, 4); diff --git a/chrome/browser/chromeos/status/status_area_view.cc b/chrome/browser/chromeos/status/status_area_view.cc index 39db7c8..09efef9 100644 --- a/chrome/browser/chromeos/status/status_area_view.cc +++ b/chrome/browser/chromeos/status/status_area_view.cc @@ -29,7 +29,7 @@ namespace chromeos { #if defined(TOUCH_UI) const int kSeparation = 25; #else -const int kSeparation = 5; +const int kSeparation = 0; #endif StatusAreaView::StatusAreaView(StatusAreaHost* host) diff --git a/chrome/browser/ui/webui/chromeos/login/network_dropdown.cc b/chrome/browser/ui/webui/chromeos/login/network_dropdown.cc index 918a4b6..7fc6eb8 100644 --- a/chrome/browser/ui/webui/chromeos/login/network_dropdown.cc +++ b/chrome/browser/ui/webui/chromeos/login/network_dropdown.cc @@ -149,9 +149,10 @@ void NetworkDropdown::NetworkMenuIconChanged() { void NetworkDropdown::SetNetworkIconAndText() { string16 text; - const SkBitmap* icon_bitmap = network_icon_->GetIconAndText(&text); + const SkBitmap icon_bitmap = network_icon_->GetIconAndText(&text); std::string icon_str = - icon_bitmap ? web_ui_util::GetImageDataUrl(*icon_bitmap) : std::string(); + icon_bitmap.empty() ? + std::string() : web_ui_util::GetImageDataUrl(icon_bitmap); base::StringValue title(text); base::StringValue icon(icon_str); web_ui_->CallJavascriptFunction("cr.ui.DropDown.updateNetworkTitle", diff --git a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc index 0158407..e008814 100644 --- a/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc +++ b/chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc @@ -1124,11 +1124,11 @@ ListValue* InternetOptionsHandler::GetWiredList() { const chromeos::EthernetNetwork* ethernet_network = cros_->ethernet_network(); if (ethernet_network) { - const SkBitmap* icon = + const SkBitmap icon = chromeos::NetworkMenuIcon::GetBitmap(ethernet_network); list->Append(GetNetwork( ethernet_network->service_path(), - *icon, + icon, l10n_util::GetStringUTF8(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET), ethernet_network->connecting(), ethernet_network->connected(), @@ -1144,16 +1144,15 @@ ListValue* InternetOptionsHandler::GetWiredList() { } ListValue* InternetOptionsHandler::GetWirelessList() { - ResourceBundle& rb = ResourceBundle::GetSharedInstance(); ListValue* list = new ListValue(); const chromeos::WifiNetworkVector& wifi_networks = cros_->wifi_networks(); for (chromeos::WifiNetworkVector::const_iterator it = wifi_networks.begin(); it != wifi_networks.end(); ++it) { - const SkBitmap* icon = chromeos::NetworkMenuIcon::GetBitmap(*it); + const SkBitmap icon = chromeos::NetworkMenuIcon::GetBitmap(*it); list->Append(GetNetwork( (*it)->service_path(), - *icon, + icon, (*it)->name(), (*it)->connecting(), (*it)->connected(), @@ -1169,7 +1168,8 @@ ListValue* InternetOptionsHandler::GetWirelessList() { if (cros_->wifi_enabled()) { list->Append(GetNetwork( kOtherNetworksFakePath, - *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), + chromeos::NetworkMenuIcon::GetBitmap( + chromeos::NetworkMenuIcon::ARCS, 1), l10n_util::GetStringUTF8(IDS_OPTIONS_SETTINGS_OTHER_WIFI_NETWORKS), false, false, @@ -1185,10 +1185,10 @@ ListValue* InternetOptionsHandler::GetWirelessList() { cros_->cellular_networks(); for (chromeos::CellularNetworkVector::const_iterator it = cellular_networks.begin(); it != cellular_networks.end(); ++it) { - const SkBitmap* icon = chromeos::NetworkMenuIcon::GetBitmap(*it); + const SkBitmap icon = chromeos::NetworkMenuIcon::GetBitmap(*it); list->Append(GetNetwork( (*it)->service_path(), - *icon, + icon, (*it)->name(), (*it)->connecting(), (*it)->connected(), @@ -1205,7 +1205,8 @@ ListValue* InternetOptionsHandler::GetWirelessList() { cros_->cellular_enabled()) { list->Append(GetNetwork( kOtherNetworksFakePath, - *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), + chromeos::NetworkMenuIcon::GetDisconnectedBitmap( + chromeos::NetworkMenuIcon::BARS), l10n_util::GetStringUTF8(IDS_OPTIONS_SETTINGS_OTHER_CELLULAR_NETWORKS), false, false, @@ -1227,10 +1228,10 @@ ListValue* InternetOptionsHandler::GetVPNList() { cros_->virtual_networks(); for (chromeos::VirtualNetworkVector::const_iterator it = virtual_networks.begin(); it != virtual_networks.end(); ++it) { - const SkBitmap* icon = chromeos::NetworkMenuIcon::GetBitmap(*it); + const SkBitmap icon = chromeos::NetworkMenuIcon::GetBitmap(*it); list->Append(GetNetwork( (*it)->service_path(), - *icon, + icon, (*it)->name(), (*it)->connecting(), (*it)->connected(), @@ -1258,11 +1259,11 @@ ListValue* InternetOptionsHandler::GetRememberedList() { // Set in_active_profile. bool shared = remembered->profile_type() == chromeos::PROFILE_SHARED; - const SkBitmap* icon = + const SkBitmap icon = chromeos::NetworkMenuIcon::GetBitmap(wifi ? wifi : remembered); list->Append(GetNetwork( remembered->service_path(), - *icon, + icon, remembered->name(), wifi ? wifi->connecting() : false, wifi ? wifi->connected() : false, @@ -1284,11 +1285,11 @@ ListValue* InternetOptionsHandler::GetRememberedList() { // Set in_active_profile. bool shared = remembered->profile_type() == chromeos::PROFILE_SHARED; - const SkBitmap* icon = + const SkBitmap icon = chromeos::NetworkMenuIcon::GetBitmap(vpn ? vpn : remembered); list->Append(GetNetwork( remembered->service_path(), - *icon, + icon, remembered->name(), vpn ? vpn->connecting() : false, vpn ? vpn->connected() : false, |