summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authortbarzic@chromium.org <tbarzic@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-17 21:22:52 +0000
committertbarzic@chromium.org <tbarzic@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-17 21:22:52 +0000
commitda910fe462244967d8a23e6b9e5532a293800d48 (patch)
tree81df7880df9548399e5f3a4cfd4f74e06d4e564e /chrome/browser
parent532803bf31f84ae6f77f02201d02f29bfb97a2ab (diff)
downloadchromium_src-da910fe462244967d8a23e6b9e5532a293800d48.zip
chromium_src-da910fe462244967d8a23e6b9e5532a293800d48.tar.gz
chromium_src-da910fe462244967d8a23e6b9e5532a293800d48.tar.bz2
Make power button in status view invisible until we are sure battery is supported on device.
BUG=chromium-os:21360 TEST=Verified power button is visible on Cr48 Verified power button is invisible when there is no battery Verified power button is invisible in vm PowerMenuButtonBrowserTest.* Review URL: http://codereview.chromium.org/8536048 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110560 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/chromeos/status/power_menu_button.cc38
-rw-r--r--chrome/browser/chromeos/status/power_menu_button_browsertest.cc24
2 files changed, 41 insertions, 21 deletions
diff --git a/chrome/browser/chromeos/status/power_menu_button.cc b/chrome/browser/chromeos/status/power_menu_button.cc
index b4523e4..bd1782c 100644
--- a/chrome/browser/chromeos/status/power_menu_button.cc
+++ b/chrome/browser/chromeos/status/power_menu_button.cc
@@ -116,10 +116,6 @@ SkBitmap GetImageWithPercentage(ImageSize size, ImageType type,
return GetImage(size, type, battery_index);
}
-SkBitmap GetMissingImage(ImageSize size) {
- return GetImage(size, DISCHARGING, kNumPowerImages);
-}
-
SkBitmap GetUnknownImage(ImageSize size) {
return GetImage(size, CHARGING, kNumPowerImages);
}
@@ -157,12 +153,13 @@ class BatteryIconView : public views::View {
protected:
virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE {
SkBitmap image;
- if (!battery_is_present_) {
- image = GetMissingImage(LARGE);
- } else {
+ if (battery_is_present_) {
image = GetImageWithPercentage(LARGE,
line_power_on_ ? CHARGING : DISCHARGING,
battery_percentage_);
+ } else {
+ NOTREACHED();
+ return;
}
const int image_x = 0;
const int image_y = (height() - image.height()) / 2;
@@ -322,6 +319,13 @@ void PowerMenuButton::UpdateIconAndLabelInfo() {
battery_is_present_ = power_status_.battery_is_present;
line_power_on_ = power_status_.line_power_on;
+ bool should_be_visible = battery_is_present_;
+ if (should_be_visible != IsVisible())
+ SetVisible(should_be_visible);
+
+ if (!should_be_visible)
+ return;
+
// If fully charged, always show 100% even if internal number is a bit less.
if (power_status_.battery_is_full)
battery_percentage_ = 100.0;
@@ -335,19 +339,13 @@ void PowerMenuButton::UpdateIconAndLabelInfo() {
TimeDelta::FromSeconds(
power_status_.battery_seconds_to_empty));
- string16 tooltip_text;
- if (!battery_is_present_) {
- SetIcon(GetMissingImage(SMALL));
- tooltip_text = l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_BATTERY);
- } else {
- SetIcon(GetImageWithPercentage(
- SMALL, line_power_on_ ? CHARGING : DISCHARGING, battery_percentage_));
- const int message_id = line_power_on_ ?
- IDS_STATUSBAR_BATTERY_CHARGING_PERCENTAGE :
- IDS_STATUSBAR_BATTERY_USING_PERCENTAGE;
- tooltip_text = l10n_util::GetStringFUTF16(
- message_id, base::IntToString16(static_cast<int>(battery_percentage_)));
- }
+ SetIcon(GetImageWithPercentage(
+ SMALL, line_power_on_ ? CHARGING : DISCHARGING, battery_percentage_));
+ const int message_id = line_power_on_ ?
+ IDS_STATUSBAR_BATTERY_CHARGING_PERCENTAGE :
+ IDS_STATUSBAR_BATTERY_USING_PERCENTAGE;
+ string16 tooltip_text = l10n_util::GetStringFUTF16(
+ message_id, base::IntToString16(static_cast<int>(battery_percentage_)));
SetTooltipText(tooltip_text);
SetAccessibleName(tooltip_text);
SchedulePaint();
diff --git a/chrome/browser/chromeos/status/power_menu_button_browsertest.cc b/chrome/browser/chromeos/status/power_menu_button_browsertest.cc
index fe476f0..9b485fa 100644
--- a/chrome/browser/chromeos/status/power_menu_button_browsertest.cc
+++ b/chrome/browser/chromeos/status/power_menu_button_browsertest.cc
@@ -28,7 +28,10 @@ class PowerMenuButtonTest : public InProcessBrowserTest {
string16 CallPowerChangedAndGetTooltipText(const PowerSupplyStatus& status) {
PowerMenuButton* power = GetPowerMenuButton();
+
power->PowerChanged(status);
+ EXPECT_TRUE(power->IsVisible());
+
string16 tooltip;
// There is static_cast<StatusAreaButton*> because GetTootipText is also
// declared in MenuDelegate
@@ -58,11 +61,30 @@ IN_PROC_BROWSER_TEST_F(PowerMenuButtonTest, BatteryMissingTest) {
status.battery_is_present = false;
status.battery_percentage = 42.0;
status.battery_is_full = false;
+ status.line_power_on = true;
+ status.battery_seconds_to_empty = 42;
+ status.battery_seconds_to_full = 24;
+
+ PowerMenuButton* power = GetPowerMenuButton();
+ power->PowerChanged(status);
+
+ EXPECT_FALSE(power->IsVisible());
+}
+
+IN_PROC_BROWSER_TEST_F(PowerMenuButtonTest, BatteryNotSupportedTest) {
+ PowerSupplyStatus status;
+ // No battery present.
+ status.battery_is_present = false;
+ status.battery_percentage = 42.0;
+ status.battery_is_full = false;
status.line_power_on = false;
status.battery_seconds_to_empty = 42;
status.battery_seconds_to_full = 24;
- EXPECT_NE(tooltip_before, CallPowerChangedAndGetTooltipText(status));
+ PowerMenuButton* power = GetPowerMenuButton();
+ power->PowerChanged(status);
+
+ EXPECT_FALSE(power->IsVisible());
}
IN_PROC_BROWSER_TEST_F(PowerMenuButtonTest, BatteryChargedTest) {