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

Unified Diff: content/browser/battery_status/battery_status_service_unittest.cc

Issue 676953005: Revert of Replace Chrome IPC with Mojo IPC for querying BatteryStatus service (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/battery_status/battery_status_service.cc ('k') | content/browser/browser_main_loop.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/battery_status/battery_status_service_unittest.cc
diff --git a/content/browser/battery_status/battery_status_service_unittest.cc b/content/browser/battery_status/battery_status_service_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..25a54cba4e03e40254b28ae7c5ba8b81808f9ffa
--- /dev/null
+++ b/content/browser/battery_status/battery_status_service_unittest.cc
@@ -0,0 +1,189 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/browser/battery_status/battery_status_service.h"
+
+#include "base/bind.h"
+#include "base/run_loop.h"
+#include "content/browser/battery_status/battery_status_manager.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+
+namespace content {
+
+namespace {
+
+class FakeBatteryManager : public BatteryStatusManager {
+ public:
+ explicit FakeBatteryManager(
+ const BatteryStatusService::BatteryUpdateCallback& callback)
+ : callback_(callback), start_invoked_count_(0), stop_invoked_count_(0) {}
+ ~FakeBatteryManager() override {}
+
+ // Methods from Battery Status Manager
+ bool StartListeningBatteryChange() override {
+ start_invoked_count_++;
+ return true;
+ }
+
+ void StopListeningBatteryChange() override { stop_invoked_count_++; }
+
+ void InvokeUpdateCallback(const blink::WebBatteryStatus& status) {
+ callback_.Run(status);
+ }
+
+ int start_invoked_count() const { return start_invoked_count_; }
+ int stop_invoked_count() const { return stop_invoked_count_; }
+
+ private:
+ BatteryStatusService::BatteryUpdateCallback callback_;
+ int start_invoked_count_;
+ int stop_invoked_count_;
+
+ DISALLOW_COPY_AND_ASSIGN(FakeBatteryManager);
+};
+
+class BatteryStatusServiceTest : public testing::Test {
+ public:
+ BatteryStatusServiceTest()
+ : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP),
+ battery_service_(0),
+ battery_manager_(0),
+ callback1_invoked_count_(0),
+ callback2_invoked_count_(0) {
+ }
+ virtual ~BatteryStatusServiceTest() { }
+
+ protected:
+ typedef BatteryStatusService::BatteryUpdateSubscription BatterySubscription;
+
+ virtual void SetUp() override {
+ callback1_ = base::Bind(&BatteryStatusServiceTest::Callback1,
+ base::Unretained(this));
+ callback2_ = base::Bind(&BatteryStatusServiceTest::Callback2,
+ base::Unretained(this));
+ battery_service_ = BatteryStatusService::GetInstance();
+ battery_manager_ = new FakeBatteryManager(
+ battery_service_->GetUpdateCallbackForTesting());
+ battery_service_->SetBatteryManagerForTesting(battery_manager_);
+ }
+
+ virtual void TearDown() override {
+ base::RunLoop().RunUntilIdle();
+ battery_service_->SetBatteryManagerForTesting(0);
+ }
+
+ FakeBatteryManager* battery_manager() {
+ return battery_manager_;
+ }
+
+ scoped_ptr<BatterySubscription> AddCallback(
+ const BatteryStatusService::BatteryUpdateCallback& callback) {
+ return battery_service_->AddCallback(callback);
+ }
+
+ int callback1_invoked_count() const {
+ return callback1_invoked_count_;
+ }
+
+ int callback2_invoked_count() const {
+ return callback2_invoked_count_;
+ }
+
+ const blink::WebBatteryStatus& battery_status() const {
+ return battery_status_;
+ }
+
+ const BatteryStatusService::BatteryUpdateCallback& callback1() const {
+ return callback1_;
+ }
+
+ const BatteryStatusService::BatteryUpdateCallback& callback2() const {
+ return callback2_;
+ }
+
+ private:
+ void Callback1(const blink::WebBatteryStatus& status) {
+ callback1_invoked_count_++;
+ battery_status_ = status;
+ }
+
+ void Callback2(const blink::WebBatteryStatus& status) {
+ callback2_invoked_count_++;
+ battery_status_ = status;
+ }
+
+ content::TestBrowserThreadBundle thread_bundle_;
+ BatteryStatusService* battery_service_;
+ FakeBatteryManager* battery_manager_;
+ BatteryStatusService::BatteryUpdateCallback callback1_;
+ BatteryStatusService::BatteryUpdateCallback callback2_;
+ int callback1_invoked_count_;
+ int callback2_invoked_count_;
+ blink::WebBatteryStatus battery_status_;
+
+ DISALLOW_COPY_AND_ASSIGN(BatteryStatusServiceTest);
+};
+
+TEST_F(BatteryStatusServiceTest, AddFirstCallback) {
+ scoped_ptr<BatterySubscription> subscription1 = AddCallback(callback1());
+ EXPECT_EQ(1, battery_manager()->start_invoked_count());
+ EXPECT_EQ(0, battery_manager()->stop_invoked_count());
+ subscription1.reset();
+ EXPECT_EQ(1, battery_manager()->start_invoked_count());
+ EXPECT_EQ(1, battery_manager()->stop_invoked_count());
+}
+
+TEST_F(BatteryStatusServiceTest, AddCallbackAfterUpdate) {
+ scoped_ptr<BatterySubscription> subscription1 = AddCallback(callback1());
+ blink::WebBatteryStatus status;
+ battery_manager()->InvokeUpdateCallback(status);
+ base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(1, callback1_invoked_count());
+ EXPECT_EQ(0, callback2_invoked_count());
+
+ scoped_ptr<BatterySubscription> subscription2 = AddCallback(callback2());
+ EXPECT_EQ(1, callback1_invoked_count());
+ EXPECT_EQ(1, callback2_invoked_count());
+}
+
+TEST_F(BatteryStatusServiceTest, TwoCallbacksUpdate) {
+ scoped_ptr<BatterySubscription> subscription1 = AddCallback(callback1());
+ scoped_ptr<BatterySubscription> subscription2 = AddCallback(callback2());
+
+ blink::WebBatteryStatus status;
+ status.charging = true;
+ status.chargingTime = 100;
+ status.dischargingTime = 200;
+ status.level = 0.5;
+ battery_manager()->InvokeUpdateCallback(status);
+ base::RunLoop().RunUntilIdle();
+
+ EXPECT_EQ(1, callback1_invoked_count());
+ EXPECT_EQ(1, callback2_invoked_count());
+ EXPECT_EQ(status.charging, battery_status().charging);
+ EXPECT_EQ(status.chargingTime, battery_status().chargingTime);
+ EXPECT_EQ(status.dischargingTime, battery_status().dischargingTime);
+ EXPECT_EQ(status.level, battery_status().level);
+}
+
+TEST_F(BatteryStatusServiceTest, RemoveOneCallback) {
+ scoped_ptr<BatterySubscription> subscription1 = AddCallback(callback1());
+ scoped_ptr<BatterySubscription> subscription2 = AddCallback(callback2());
+
+ blink::WebBatteryStatus status;
+ battery_manager()->InvokeUpdateCallback(status);
+ base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(1, callback1_invoked_count());
+ EXPECT_EQ(1, callback2_invoked_count());
+
+ subscription1.reset();
+ battery_manager()->InvokeUpdateCallback(status);
+ base::RunLoop().RunUntilIdle();
+ EXPECT_EQ(1, callback1_invoked_count());
+ EXPECT_EQ(2, callback2_invoked_count());
+}
+
+} // namespace
+
+} // namespace content
« no previous file with comments | « content/browser/battery_status/battery_status_service.cc ('k') | content/browser/browser_main_loop.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698