diff options
author | tbarzic@chromium.org <tbarzic@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-17 21:22:52 +0000 |
---|---|---|
committer | tbarzic@chromium.org <tbarzic@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-17 21:22:52 +0000 |
commit | da910fe462244967d8a23e6b9e5532a293800d48 (patch) | |
tree | 81df7880df9548399e5f3a4cfd4f74e06d4e564e | |
parent | 532803bf31f84ae6f77f02201d02f29bfb97a2ab (diff) | |
download | chromium_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
-rw-r--r-- | chrome/browser/chromeos/status/power_menu_button.cc | 38 | ||||
-rw-r--r-- | chrome/browser/chromeos/status/power_menu_button_browsertest.cc | 24 |
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) { |