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

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

Issue 2643713002: Port BatteryMonitor into Device Service (Closed)
Patch Set: Rebase Created 3 years, 9 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/DEPS ('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_monitor_integration_browsertest.cc
diff --git a/content/browser/battery_status/battery_monitor_integration_browsertest.cc b/content/browser/battery_status/battery_monitor_integration_browsertest.cc
deleted file mode 100644
index 5db921f97b1012b34c87a5f9f5ebf902b07c6c91..0000000000000000000000000000000000000000
--- a/content/browser/battery_status/battery_monitor_integration_browsertest.cc
+++ /dev/null
@@ -1,190 +0,0 @@
-// 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 <utility>
-
-#include "base/callback_list.h"
-#include "base/lazy_instance.h"
-#include "base/macros.h"
-#include "base/memory/ptr_util.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "build/build_config.h"
-#include "content/public/browser/content_browser_client.h"
-#include "content/public/browser/web_contents.h"
-#include "content/public/common/content_client.h"
-#include "content/public/test/content_browser_test.h"
-#include "content/public/test/content_browser_test_utils.h"
-#include "content/public/test/test_navigation_observer.h"
-#include "content/public/test/test_utils.h"
-#include "content/shell/browser/shell.h"
-#include "content/shell/browser/shell_content_browser_client.h"
-#include "device/battery/battery_monitor.mojom.h"
-#include "mojo/public/cpp/bindings/strong_binding.h"
-#include "services/service_manager/public/cpp/interface_registry.h"
-
-// These tests run against a dummy implementation of the BatteryMonitor service.
-// That is, they verify that the service implementation is correctly exposed to
-// the renderer, whatever the implementation is.
-
-namespace content {
-
-namespace {
-
-typedef base::CallbackList<void(const device::BatteryStatus&)>
- BatteryUpdateCallbackList;
-typedef BatteryUpdateCallbackList::Subscription BatteryUpdateSubscription;
-
-// Global battery state used in the tests.
-device::BatteryStatus g_battery_status;
-// Global list of test battery monitors to notify when |g_battery_status|
-// changes.
-base::LazyInstance<BatteryUpdateCallbackList>::Leaky g_callback_list =
- LAZY_INSTANCE_INITIALIZER;
-
-// Updates the global battery state and notifies existing test monitors.
-void UpdateBattery(const device::BatteryStatus& battery_status) {
- g_battery_status = battery_status;
- g_callback_list.Get().Notify(battery_status);
-}
-
-class FakeBatteryMonitor : public device::BatteryMonitor {
- public:
- FakeBatteryMonitor() {}
- ~FakeBatteryMonitor() override {}
-
- static void Create(mojo::InterfaceRequest<BatteryMonitor> request) {
- mojo::MakeStrongBinding(base::MakeUnique<FakeBatteryMonitor>(),
- std::move(request));
- }
-
- private:
- void QueryNextStatus(const QueryNextStatusCallback& callback) override {
- // We don't expect overlapped calls to QueryNextStatus.
- DCHECK(callback_.is_null());
-
- callback_ = callback;
-
- if (!subscription_) {
- subscription_ =
- g_callback_list.Get().Add(base::Bind(&FakeBatteryMonitor::DidChange,
- base::Unretained(this)));
- // Report initial value.
- DidChange(g_battery_status);
- }
- }
-
- void DidChange(const device::BatteryStatus& battery_status) {
- if (!callback_.is_null()) {
- callback_.Run(battery_status.Clone());
- callback_.Reset();
- }
- }
-
- std::unique_ptr<BatteryUpdateSubscription> subscription_;
- QueryNextStatusCallback callback_;
-};
-
-// Overrides the default service implementation with the test implementation
-// declared above.
-class TestContentBrowserClient : public ContentBrowserClient {
- public:
- void ExposeInterfacesToRenderer(
- service_manager::InterfaceRegistry* registry,
- RenderProcessHost* render_process_host) override {
- scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner =
- BrowserThread::GetTaskRunnerForThread(BrowserThread::UI);
- registry->AddInterface(base::Bind(&FakeBatteryMonitor::Create),
- ui_task_runner);
- }
-
- void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
- int child_process_id) override {
- // Necessary for passing kIsolateSitesForTesting flag to the renderer.
- ShellContentBrowserClient::Get()->AppendExtraCommandLineSwitches(
- command_line, child_process_id);
- }
-
-#if defined(OS_ANDROID)
- void GetAdditionalMappedFilesForChildProcess(
- const base::CommandLine& command_line,
- int child_process_id,
- FileDescriptorInfo* mappings) override {
- ShellContentBrowserClient::Get()->GetAdditionalMappedFilesForChildProcess(
- command_line, child_process_id, mappings);
- }
-#endif // defined(OS_ANDROID)
-};
-
-class BatteryMonitorIntegrationTest : public ContentBrowserTest {
- public:
- BatteryMonitorIntegrationTest() {}
-
- void SetUpOnMainThread() override {
- old_client_ = SetBrowserClientForTesting(&test_client_);
- }
-
- void TearDownOnMainThread() override {
- SetBrowserClientForTesting(old_client_);
- }
-
- private:
- TestContentBrowserClient test_client_;
- ContentBrowserClient* old_client_;
-
- DISALLOW_COPY_AND_ASSIGN(BatteryMonitorIntegrationTest);
-};
-
-IN_PROC_BROWSER_TEST_F(BatteryMonitorIntegrationTest, DefaultValues) {
- // From JavaScript request a promise for the battery status information and
- // once it resolves check the default values and navigate to #pass.
- UpdateBattery(device::BatteryStatus());
- GURL test_url =
- GetTestUrl("battery_status", "battery_status_default_test.html");
- NavigateToURLBlockUntilNavigationsComplete(shell(), test_url, 2);
- EXPECT_EQ("pass", shell()->web_contents()->GetLastCommittedURL().ref());
-}
-
-IN_PROC_BROWSER_TEST_F(BatteryMonitorIntegrationTest, ResolvePromise) {
- // Set the fake battery monitor to return predefined battery status values.
- // From JavaScript request a promise for the battery status information and
- // once it resolves check the values and navigate to #pass.
- device::BatteryStatus status;
- status.charging = true;
- status.charging_time = 100;
- status.discharging_time = std::numeric_limits<double>::infinity();
- status.level = 0.5;
- UpdateBattery(status);
-
- GURL test_url = GetTestUrl("battery_status",
- "battery_status_promise_resolution_test.html");
- NavigateToURLBlockUntilNavigationsComplete(shell(), test_url, 2);
- EXPECT_EQ("pass", shell()->web_contents()->GetLastCommittedURL().ref());
-}
-
-IN_PROC_BROWSER_TEST_F(BatteryMonitorIntegrationTest, EventListener) {
- // Set the fake battery monitor to return default battery status values.
- // From JavaScript request a promise for the battery status information.
- // Once it resolves add an event listener for battery level change. Set
- // battery level to 0.6 and invoke update. Check that the event listener
- // is invoked with the correct value for level and navigate to #pass.
- device::BatteryStatus status;
- UpdateBattery(status);
-
- TestNavigationObserver same_tab_observer(shell()->web_contents(), 2);
- GURL test_url =
- GetTestUrl("battery_status", "battery_status_event_listener_test.html");
- shell()->LoadURL(test_url);
- same_tab_observer.Wait();
- EXPECT_EQ("resolved", shell()->web_contents()->GetLastCommittedURL().ref());
-
- TestNavigationObserver same_tab_observer2(shell()->web_contents(), 1);
- status.level = 0.6;
- UpdateBattery(status);
- same_tab_observer2.Wait();
- EXPECT_EQ("pass", shell()->web_contents()->GetLastCommittedURL().ref());
-}
-
-} // namespace
-
-} // namespace content
« no previous file with comments | « content/browser/battery_status/DEPS ('k') | content/browser/browser_main_loop.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698