1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/status/power_menu_button.h"
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/cros/cros_in_process_browser_test.h"
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/cros/mock_power_library.h"
9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/frame/browser_view.h"
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/status/status_area_view.h"
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/chromeos/view_ids.h"
124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/ui/browser.h"
134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch#include "chrome/browser/ui/browser_window.h"
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "grit/theme_resources.h"
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace chromeos {
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing ::testing::AnyNumber;
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing ::testing::InvokeWithoutArgs;
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing ::testing::Return;
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing ::testing::ReturnRef;
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing ::testing::_;
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass PowerMenuButtonTest : public CrosInProcessBrowserTest {
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected:
253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  MockPowerLibrary *mock_power_library_;
263345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick
273345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  PowerMenuButtonTest() : CrosInProcessBrowserTest(),
283345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick                          mock_power_library_(NULL) {
293345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  }
30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual void SetUpInProcessBrowserTestFixture() {
323345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    cros_mock_->InitStatusAreaMocks();
333345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    cros_mock_->SetStatusAreaMocksExpectations();
343345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick    mock_power_library_ = cros_mock_->mock_power_library();
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  PowerMenuButton* GetPowerMenuButton() {
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    BrowserView* view = static_cast<BrowserView*>(browser()->window());
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    PowerMenuButton* power = static_cast<StatusAreaView*>(view->
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch        GetViewByID(VIEW_ID_STATUS_AREA))->power_view();
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return power;
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  int CallPowerChangedAndGetIconId() {
45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    PowerMenuButton* power = GetPowerMenuButton();
46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    power->PowerChanged(mock_power_library_);
47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    return power->icon_id();
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(PowerMenuButtonTest, BatteryMissingTest) {
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_CALL(*mock_power_library_, battery_is_present())
533345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillOnce((Return(false)))  // no battery
543345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
553345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(*mock_power_library_, battery_percentage())
563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillOnce((Return(42.0)))
573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(*mock_power_library_, battery_fully_charged())
593345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillOnce((Return(false)))
603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
613345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(*mock_power_library_, line_power_on())
623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillOnce((Return(false)))
633345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
643345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(*mock_power_library_, battery_time_to_empty())
653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillOnce((Return(base::TimeDelta::FromMinutes(42))))
663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
673345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(*mock_power_library_, battery_time_to_full())
683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillOnce((Return(base::TimeDelta::FromMinutes(24))))
693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(IDR_STATUSBAR_BATTERY_MISSING, CallPowerChangedAndGetIconId());
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(PowerMenuButtonTest, BatteryChargedTest) {
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_CALL(*mock_power_library_, battery_is_present())
753345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillOnce((Return(true)))
763345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
773345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(*mock_power_library_, battery_percentage())
783345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillOnce((Return(42.0)))
793345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_CALL(*mock_power_library_, battery_fully_charged())
813345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillOnce((Return(true)))  // fully charged
823345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_CALL(*mock_power_library_, line_power_on())
843345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillOnce((Return(true)))  // plugged in
853345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
863345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(*mock_power_library_, battery_time_to_empty())
873345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillOnce((Return(base::TimeDelta::FromMinutes(42))))
883345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
893345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(*mock_power_library_, battery_time_to_full())
903345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillOnce((Return(base::TimeDelta::FromMinutes(0))))
913345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_EQ(IDR_STATUSBAR_BATTERY_CHARGED, CallPowerChangedAndGetIconId());
93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
95c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(PowerMenuButtonTest, BatteryChargingTest) {
96ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const int NUM_TIMES = 19;
97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_CALL(*mock_power_library_, battery_is_present())
983345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .Times(NUM_TIMES)
993345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillRepeatedly((Return(true)))
1003345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_CALL(*mock_power_library_, battery_fully_charged())
1023345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .Times(NUM_TIMES)
1033345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillRepeatedly((Return(false)))
1043345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_CALL(*mock_power_library_, line_power_on())
1063345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .Times(NUM_TIMES)
1073345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillRepeatedly((Return(true)))  // plugged in
1083345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
1093345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(*mock_power_library_, battery_time_to_empty())
1103345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .Times(NUM_TIMES)
1113345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillRepeatedly((Return(base::TimeDelta::FromMinutes(42))))
1123345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
1133345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(*mock_power_library_, battery_time_to_full())
1143345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .Times(NUM_TIMES)
1153345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillRepeatedly((Return(base::TimeDelta::FromMinutes(24))))
1163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
118513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  // Test the 16 battery charging states.
119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // NOTE: Use an array rather than just calculating a resource number to avoid
120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // creating implicit ordering dependencies on the resource values.
121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static const int kChargingImages[] = {
122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_1,
123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_2,
124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_3,
125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_4,
126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_5,
127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_6,
128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_7,
129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_8,
130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_9,
131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_10,
132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_11,
133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_12,
134513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_13,
135513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_14,
136513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_15,
137513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch    IDR_STATUSBAR_BATTERY_CHARGING_16,
138ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    IDR_STATUSBAR_BATTERY_CHARGING_17,
139ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    IDR_STATUSBAR_BATTERY_CHARGING_18,
140ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    IDR_STATUSBAR_BATTERY_CHARGING_19,
141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  };
142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  size_t id = 0;
143ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  for (float percent = 5.0; percent < 100.0; percent += 5.0) {
144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    EXPECT_CALL(*mock_power_library_, battery_percentage())
1453345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick        .WillOnce((Return(percent)))
1463345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick        .RetiresOnSaturation();
147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ASSERT_LT(id, arraysize(kChargingImages));
148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    EXPECT_EQ(kChargingImages[id], CallPowerChangedAndGetIconId());
149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    id++;
150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
153c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochIN_PROC_BROWSER_TEST_F(PowerMenuButtonTest, BatteryDischargingTest) {
154ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  const int NUM_TIMES = 19;
155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_CALL(*mock_power_library_, battery_is_present())
1563345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .Times(NUM_TIMES)
1573345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillRepeatedly((Return(true)))
1583345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_CALL(*mock_power_library_, battery_fully_charged())
1603345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .Times(NUM_TIMES)
1613345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillRepeatedly((Return(false)))
1623345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  EXPECT_CALL(*mock_power_library_, line_power_on())
1643345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .Times(NUM_TIMES)
1653345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillRepeatedly((Return(false)))
1663345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
1673345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(*mock_power_library_, battery_time_to_empty())
1683345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .Times(NUM_TIMES)
1693345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillRepeatedly((Return(base::TimeDelta::FromMinutes(42))))
1703345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
1713345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick  EXPECT_CALL(*mock_power_library_, battery_time_to_full())
1723345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .Times(NUM_TIMES)
1733345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .WillRepeatedly((Return(base::TimeDelta::FromMinutes(24))))
1743345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick      .RetiresOnSaturation();
175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
176513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  // Test the 16 battery discharing states.
177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // NOTE: Use an array rather than just calculating a resource number to avoid
178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // creating implicit ordering dependencies on the resource values.
179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  static const int kDischargingImages[] = {
180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_1,
181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_2,
182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_3,
183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_4,
184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_5,
185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_6,
186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_7,
187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_8,
188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_9,
189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_10,
190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_11,
191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_12,
192513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_13,
193513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_14,
194513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_15,
195513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch    IDR_STATUSBAR_BATTERY_DISCHARGING_16,
196ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    IDR_STATUSBAR_BATTERY_DISCHARGING_17,
197ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    IDR_STATUSBAR_BATTERY_DISCHARGING_18,
198ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    IDR_STATUSBAR_BATTERY_DISCHARGING_19,
199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  };
200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  size_t id = 0;
201ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  for (float percent = 5.0; percent < 100.0; percent += 5.0) {
202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    EXPECT_CALL(*mock_power_library_, battery_percentage())
2033345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick        .WillOnce((Return(percent)))
2043345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick        .RetiresOnSaturation();
205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    ASSERT_LT(id, arraysize(kDischargingImages));
206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    EXPECT_EQ(kDischargingImages[id], CallPowerChangedAndGetIconId());
207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch    id++;
208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  }
209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}
210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace chromeos
212