Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(222)

Side by Side Diff: ash/common/system/chromeos/power/power_status_view_unittest.cc

Issue 2692663002: Gut ash::MaterialDesignController, and remove the about:flags entry. (Closed)
Patch Set: yet another rebase Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/common/system/chromeos/power/power_status_view.h" 5 #include "ash/common/system/chromeos/power/power_status_view.h"
6 6
7 #include "ash/common/material_design/material_design_controller.h"
8 #include "ash/common/system/chromeos/power/power_status.h" 7 #include "ash/common/system/chromeos/power/power_status.h"
9 #include "ash/test/ash_md_test_base.h" 8 #include "ash/test/ash_test_base.h"
10 #include "chromeos/dbus/power_manager/power_supply_properties.pb.h" 9 #include "chromeos/dbus/power_manager/power_supply_properties.pb.h"
11 #include "grit/ash_strings.h" 10 #include "grit/ash_strings.h"
12 #include "ui/base/l10n/l10n_util.h" 11 #include "ui/base/l10n/l10n_util.h"
13 #include "ui/base/l10n/time_format.h" 12 #include "ui/base/l10n/time_format.h"
14 #include "ui/gfx/image/image_skia.h" 13 #include "ui/gfx/image/image_skia.h"
15 #include "ui/views/controls/image_view.h" 14 #include "ui/views/controls/image_view.h"
16 #include "ui/views/controls/label.h" 15 #include "ui/views/controls/label.h"
17 16
18 using power_manager::PowerSupplyProperties; 17 using power_manager::PowerSupplyProperties;
19 18
20 namespace ash { 19 namespace ash {
21 20
22 class PowerStatusViewTest : public test::AshMDTestBase { 21 class PowerStatusViewTest : public test::AshTestBase {
23 public: 22 public:
24 PowerStatusViewTest() {} 23 PowerStatusViewTest() {}
25 ~PowerStatusViewTest() override {} 24 ~PowerStatusViewTest() override {}
26 25
27 // Overridden from testing::Test: 26 // Overridden from testing::Test:
28 void SetUp() override { 27 void SetUp() override {
29 test::AshMDTestBase::SetUp(); 28 test::AshTestBase::SetUp();
30 view_.reset(new PowerStatusView(false)); 29 view_.reset(new PowerStatusView(false));
31 } 30 }
32 31
33 void TearDown() override { 32 void TearDown() override {
34 view_.reset(); 33 view_.reset();
35 test::AshMDTestBase::TearDown(); 34 test::AshTestBase::TearDown();
36 } 35 }
37 36
38 protected: 37 protected:
39 void UpdatePowerStatus(const power_manager::PowerSupplyProperties& proto) { 38 void UpdatePowerStatus(const power_manager::PowerSupplyProperties& proto) {
40 PowerStatus::Get()->SetProtoForTesting(proto); 39 PowerStatus::Get()->SetProtoForTesting(proto);
41 view_->OnPowerStatusChanged(); 40 view_->OnPowerStatusChanged();
42 } 41 }
43 42
44 bool IsPercentageVisible() const { 43 bool IsPercentageVisible() const {
45 return view_->percentage_label_->visible(); 44 return view_->percentage_label_->visible();
46 } 45 }
47 46
48 bool IsTimeStatusVisible() const { 47 bool IsTimeStatusVisible() const {
49 return view_->time_status_label_->visible(); 48 return view_->time_status_label_->visible();
50 } 49 }
51 50
52 base::string16 RemainingTimeInView() const { 51 base::string16 RemainingTimeInView() const {
53 return view_->time_status_label_->text(); 52 return view_->time_status_label_->text();
54 } 53 }
55 54
56 gfx::ImageSkia GetBatteryImage() const { return view_->icon_->GetImage(); } 55 gfx::ImageSkia GetBatteryImage() const { return view_->icon_->GetImage(); }
57 56
58 private: 57 private:
59 std::unique_ptr<PowerStatusView> view_; 58 std::unique_ptr<PowerStatusView> view_;
60 59
61 DISALLOW_COPY_AND_ASSIGN(PowerStatusViewTest); 60 DISALLOW_COPY_AND_ASSIGN(PowerStatusViewTest);
62 }; 61 };
63 62
64 INSTANTIATE_TEST_CASE_P( 63 TEST_F(PowerStatusViewTest, Basic) {
65 /* prefix intentionally left blank due to only one parameterization */,
66 PowerStatusViewTest,
67 testing::Values(MaterialDesignController::NON_MATERIAL,
68 MaterialDesignController::MATERIAL_NORMAL,
69 MaterialDesignController::MATERIAL_EXPERIMENTAL));
70
71 TEST_P(PowerStatusViewTest, Basic) {
72 EXPECT_FALSE(IsPercentageVisible()); 64 EXPECT_FALSE(IsPercentageVisible());
73 EXPECT_TRUE(IsTimeStatusVisible()); 65 EXPECT_TRUE(IsTimeStatusVisible());
74 66
75 // Disconnect the power. 67 // Disconnect the power.
76 PowerSupplyProperties prop; 68 PowerSupplyProperties prop;
77 prop.set_external_power(PowerSupplyProperties::DISCONNECTED); 69 prop.set_external_power(PowerSupplyProperties::DISCONNECTED);
78 prop.set_battery_state(PowerSupplyProperties::DISCHARGING); 70 prop.set_battery_state(PowerSupplyProperties::DISCHARGING);
79 prop.set_battery_percent(99.0); 71 prop.set_battery_percent(99.0);
80 prop.set_battery_time_to_empty_sec(120); 72 prop.set_battery_time_to_empty_sec(120);
81 prop.set_is_calculating_battery_time(true); 73 prop.set_is_calculating_battery_time(true);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 // Tricky -- connected to non-USB but still discharging. Not likely happening 109 // Tricky -- connected to non-USB but still discharging. Not likely happening
118 // on production though. 110 // on production though.
119 prop.set_external_power(PowerSupplyProperties::AC); 111 prop.set_external_power(PowerSupplyProperties::AC);
120 prop.set_battery_state(PowerSupplyProperties::DISCHARGING); 112 prop.set_battery_state(PowerSupplyProperties::DISCHARGING);
121 prop.set_battery_time_to_full_sec(120); 113 prop.set_battery_time_to_full_sec(120);
122 UpdatePowerStatus(prop); 114 UpdatePowerStatus(prop);
123 EXPECT_TRUE(IsPercentageVisible()); 115 EXPECT_TRUE(IsPercentageVisible());
124 EXPECT_FALSE(IsTimeStatusVisible()); 116 EXPECT_FALSE(IsTimeStatusVisible());
125 } 117 }
126 118
127 TEST_P(PowerStatusViewTest, AvoidNeedlessBatteryImageUpdates) {
128 // No battery icon is shown in the material design system menu.
129 if (ash::MaterialDesignController::UseMaterialDesignSystemIcons())
130 return;
131
132 PowerSupplyProperties prop;
133 prop.set_external_power(PowerSupplyProperties::AC);
134 prop.set_battery_state(PowerSupplyProperties::CHARGING);
135 prop.set_battery_percent(50.0);
136 UpdatePowerStatus(prop);
137
138 // Create a copy of the view's ImageSkia (backed by the same bitmap). We hang
139 // onto this to ensure that the original bitmap's memory doesn't get recycled
140 // for a new bitmap, ensuring that we can safely compare bitmap addresses
141 // later to check if the image that's being displayed has changed.
142 const gfx::ImageSkia original_image = GetBatteryImage();
143
144 // Send a no-op update. The old image should still be used.
145 UpdatePowerStatus(prop);
146 EXPECT_EQ(original_image.bitmap(), GetBatteryImage().bitmap());
147
148 // Make a big change to the percentage and check that a new image is used.
149 prop.set_battery_percent(100.0);
150 UpdatePowerStatus(prop);
151 EXPECT_NE(original_image.bitmap(), GetBatteryImage().bitmap());
152 }
153
154 } // namespace ash 119 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/system/chromeos/power/power_status_unittest.cc ('k') | ash/common/system/date/system_info_default_view_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698