summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authordavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-28 19:28:51 +0000
committerdavemoore@chromium.org <davemoore@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-09-28 19:28:51 +0000
commit2cfba442bb1b908b6d5f0977cfde82238fdfc8ae (patch)
tree52f5886faabe357ac04c4753b34ae9926dc3dc89 /chrome
parent4f4bb6f957aa7fb6602be079867aecf23901bbbc (diff)
downloadchromium_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')
-rw-r--r--chrome/app/theme/statusbar_network_arcs0.pngbin620 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_arcs1.pngbin453 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_arcs2.pngbin466 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_arcs3.pngbin484 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_arcs4.pngbin504 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_arcs5.pngbin474 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_arcs6.pngbin469 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_arcs7.pngbin420 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars0.pngbin265 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars1.pngbin278 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars1o.pngbin378 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars2.pngbin303 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars2o.pngbin372 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars3.pngbin296 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars3o.pngbin357 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars4.pngbin264 -> 0 bytes
-rw-r--r--chrome/app/theme/statusbar_network_bars4o.pngbin286 -> 0 bytes
-rw-r--r--chrome/app/theme/theme_resources.grd19
-rw-r--r--chrome/browser/chromeos/status/network_dropdown_button.cc8
-rw-r--r--chrome/browser/chromeos/status/network_menu.cc28
-rw-r--r--chrome/browser/chromeos/status/network_menu_button.cc8
-rw-r--r--chrome/browser/chromeos/status/network_menu_icon.cc175
-rw-r--r--chrome/browser/chromeos/status/network_menu_icon.h27
-rw-r--r--chrome/browser/chromeos/status/network_menu_icon_unittest.cc167
-rw-r--r--chrome/browser/chromeos/status/status_area_button.cc24
-rw-r--r--chrome/browser/chromeos/status/status_area_view.cc2
-rw-r--r--chrome/browser/ui/webui/chromeos/login/network_dropdown.cc5
-rw-r--r--chrome/browser/ui/webui/options/chromeos/internet_options_handler.cc31
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
deleted file mode 100644
index 0ff1514..0000000
--- a/chrome/app/theme/statusbar_network_arcs0.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_arcs1.png b/chrome/app/theme/statusbar_network_arcs1.png
deleted file mode 100644
index 865641a..0000000
--- a/chrome/app/theme/statusbar_network_arcs1.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_arcs2.png b/chrome/app/theme/statusbar_network_arcs2.png
deleted file mode 100644
index 3c14e7d..0000000
--- a/chrome/app/theme/statusbar_network_arcs2.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_arcs3.png b/chrome/app/theme/statusbar_network_arcs3.png
deleted file mode 100644
index 5d82b89..0000000
--- a/chrome/app/theme/statusbar_network_arcs3.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_arcs4.png b/chrome/app/theme/statusbar_network_arcs4.png
deleted file mode 100644
index bfd4464..0000000
--- a/chrome/app/theme/statusbar_network_arcs4.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_arcs5.png b/chrome/app/theme/statusbar_network_arcs5.png
deleted file mode 100644
index b8418b0..0000000
--- a/chrome/app/theme/statusbar_network_arcs5.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_arcs6.png b/chrome/app/theme/statusbar_network_arcs6.png
deleted file mode 100644
index 47499c2..0000000
--- a/chrome/app/theme/statusbar_network_arcs6.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_arcs7.png b/chrome/app/theme/statusbar_network_arcs7.png
deleted file mode 100644
index 77c4989..0000000
--- a/chrome/app/theme/statusbar_network_arcs7.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars0.png b/chrome/app/theme/statusbar_network_bars0.png
deleted file mode 100644
index 3d52cef..0000000
--- a/chrome/app/theme/statusbar_network_bars0.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars1.png b/chrome/app/theme/statusbar_network_bars1.png
deleted file mode 100644
index 9e88cbc..0000000
--- a/chrome/app/theme/statusbar_network_bars1.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars1o.png b/chrome/app/theme/statusbar_network_bars1o.png
deleted file mode 100644
index 38e609f..0000000
--- a/chrome/app/theme/statusbar_network_bars1o.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars2.png b/chrome/app/theme/statusbar_network_bars2.png
deleted file mode 100644
index a40ab2d..0000000
--- a/chrome/app/theme/statusbar_network_bars2.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars2o.png b/chrome/app/theme/statusbar_network_bars2o.png
deleted file mode 100644
index 5d85b05..0000000
--- a/chrome/app/theme/statusbar_network_bars2o.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars3.png b/chrome/app/theme/statusbar_network_bars3.png
deleted file mode 100644
index ca60026..0000000
--- a/chrome/app/theme/statusbar_network_bars3.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars3o.png b/chrome/app/theme/statusbar_network_bars3o.png
deleted file mode 100644
index 95ad708..0000000
--- a/chrome/app/theme/statusbar_network_bars3o.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars4.png b/chrome/app/theme/statusbar_network_bars4.png
deleted file mode 100644
index 047f12e..0000000
--- a/chrome/app/theme/statusbar_network_bars4.png
+++ /dev/null
Binary files differ
diff --git a/chrome/app/theme/statusbar_network_bars4o.png b/chrome/app/theme/statusbar_network_bars4o.png
deleted file mode 100644
index b5a1183..0000000
--- a/chrome/app/theme/statusbar_network_bars4o.png
+++ /dev/null
Binary files differ
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,
- &ethernet_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),
- &ethernet_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, &ethernet_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, &ethernet_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, &ethernet_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, &ethernet_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,