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

Side by Side Diff: content/common/power_monitor_message_broadcaster_unittest.cc

Issue 17074009: Created multi-process-friendly PowerMonitor interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed message export for unit tests Created 7 years, 5 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/power_monitor/power_monitor_test_base.h"
6 #include "content/common/power_monitor_message_broadcaster.h"
7 #include "content/common/power_monitor_messages.h"
8 #include "ipc/ipc_sender.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 namespace content {
12
13 class PowerMonitorMessageSender : public IPC::Sender {
14 public:
15 PowerMonitorMessageSender()
16 : power_state_changes_(0),
17 suspends_(0),
18 resumes_(0) {
19 }
20 virtual ~PowerMonitorMessageSender() {}
21
22 // Sends the given IPC message. The implementor takes ownership of the
23 // given Message regardless of whether or not this method succeeds. This
24 // is done to make this method easier to use. Returns true on success and
25 // false otherwise.
26 virtual bool Send(IPC::Message* msg) OVERRIDE {
27 switch (msg->type()) {
28 case PowerMonitorMsg_Suspend::ID:
29 suspends_++;
30 break;
31 case PowerMonitorMsg_Resume::ID:
32 resumes_++;
33 break;
34 case PowerMonitorMsg_PowerStateChange::ID:
35 power_state_changes_++;
36 break;
37 }
piman 2013/07/12 21:09:58 nit: delete msg
38 return false;
piman 2013/07/12 21:09:58 nit: true?
39 };
40
41 // Test status counts.
42 int power_state_changes() { return power_state_changes_; }
43 int suspends() { return suspends_; }
44 int resumes() { return resumes_; }
45
46 private:
47 int power_state_changes_; // Count of OnPowerStateChange notifications.
48 int suspends_; // Count of OnSuspend notifications.
49 int resumes_; // Count of OnResume notifications.
50 };
51
52 class PowerMonitorMessageBroadcasterTest : public testing::Test {
53 protected:
54 PowerMonitorMessageBroadcasterTest() {
55 power_monitor_source_ = new base::PowerMonitorTestSource();
56 power_monitor_.reset(new base::PowerMonitor(power_monitor_source_));
57 }
58 virtual ~PowerMonitorMessageBroadcasterTest() {};
59
60 base::PowerMonitorTestSource* source() { return power_monitor_source_; }
61 base::PowerMonitor* monitor() { return power_monitor_.get(); }
62
63 private:
64 base::PowerMonitorTestSource* power_monitor_source_;
65 scoped_ptr<base::PowerMonitor> power_monitor_;
66
67 DISALLOW_COPY_AND_ASSIGN(PowerMonitorMessageBroadcasterTest);
68 };
69
70 TEST_F(PowerMonitorMessageBroadcasterTest, PowerMessageBroadcast) {
71 PowerMonitorMessageSender sender;
72 PowerMonitorMessageBroadcaster broadcaster(&sender);
73
74 // Sending resume when not suspended should have no effect.
75 source()->GenerateResumeEvent();
76 EXPECT_EQ(sender.resumes(), 0);
77
78 // Pretend we suspended.
79 source()->GenerateSuspendEvent();
80 EXPECT_EQ(sender.suspends(), 1);
81
82 // Send a second suspend notification. This should be suppressed.
83 source()->GenerateSuspendEvent();
84 EXPECT_EQ(sender.suspends(), 1);
85
86 // Pretend we were awakened.
87 source()->GenerateResumeEvent();
88 EXPECT_EQ(sender.resumes(), 1);
89
90 // Send a duplicate resume notification. This should be suppressed.
91 source()->GenerateResumeEvent();
92 EXPECT_EQ(sender.resumes(), 1);
93
94 // Pretend the device has gone on battery power
95 source()->GeneratePowerStateEvent(true);
96 EXPECT_EQ(sender.power_state_changes(), 1);
97
98 // Repeated indications the device is on battery power should be suppressed.
99 source()->GeneratePowerStateEvent(true);
100 EXPECT_EQ(sender.power_state_changes(), 1);
101
102 // Pretend the device has gone off battery power
103 source()->GeneratePowerStateEvent(false);
104 EXPECT_EQ(sender.power_state_changes(), 2);
105
106 // Repeated indications the device is off battery power should be suppressed.
107 source()->GeneratePowerStateEvent(false);
108 EXPECT_EQ(sender.power_state_changes(), 2);
109 }
110
111 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698