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

Unified Diff: content/browser/wake_lock/wake_lock_browsertest.cc

Issue 1345563002: Revert of Wake Lock API implementation (Chromium part) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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
Index: content/browser/wake_lock/wake_lock_browsertest.cc
diff --git a/content/browser/wake_lock/wake_lock_browsertest.cc b/content/browser/wake_lock/wake_lock_browsertest.cc
deleted file mode 100644
index 2da066242fe42da1eeb33f596c80029d243b49f1..0000000000000000000000000000000000000000
--- a/content/browser/wake_lock/wake_lock_browsertest.cc
+++ /dev/null
@@ -1,374 +0,0 @@
-// Copyright 2015 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 "base/command_line.h"
-#include "base/test/test_timeouts.h"
-#include "content/browser/wake_lock/wake_lock_service_context.h"
-#include "content/browser/web_contents/web_contents_impl.h"
-#include "content/public/common/content_switches.h"
-#include "content/public/test/browser_test_utils.h"
-#include "content/public/test/content_browser_test.h"
-#include "content/public/test/content_browser_test_utils.h"
-#include "content/public/test/test_utils.h"
-#include "content/shell/browser/shell.h"
-#include "content/test/content_browser_test_utils_internal.h"
-#include "net/dns/mock_host_resolver.h"
-#include "net/test/embedded_test_server/embedded_test_server.h"
-
-namespace content {
-
-class WakeLockTest : public ContentBrowserTest {
- public:
- void SetUpCommandLine(base::CommandLine* command_line) override {
- command_line->AppendSwitch(
- switches::kEnableExperimentalWebPlatformFeatures);
- command_line->AppendSwitch(switches::kSitePerProcess);
- }
-
- void SetUpOnMainThread() override {
- host_resolver()->AddRule("*", "127.0.0.1");
- EXPECT_TRUE(embedded_test_server()->InitializeAndWaitUntilReady());
- }
-
- protected:
- WebContents* GetWebContents() {
- return shell()->web_contents();
- }
-
- WebContentsImpl* GetWebContentsImpl() {
- return static_cast<WebContentsImpl*>(GetWebContents());
- }
-
- RenderFrameHost* GetMainFrame() {
- return GetWebContents()->GetMainFrame();
- }
-
- FrameTreeNode* GetNestedFrameNode() {
- FrameTreeNode* root = GetWebContentsImpl()->GetFrameTree()->root();
- CHECK(root->child_count() == 1);
- return root->child_at(0);
- }
-
- RenderFrameHost* GetNestedFrame() {
- return GetNestedFrameNode()->current_frame_host();
- }
-
- WakeLockServiceContext* GetWakeLockServiceContext() {
- return GetWebContentsImpl()->GetWakeLockServiceContext();
- }
-
- bool HasWakeLock() {
- return GetWakeLockServiceContext()->HasWakeLockForTests();
- }
-
- void WaitForPossibleUpdate() {
- // As Mojo channels have no common FIFO order in respect to each other and
- // to the Chromium IPC, we cannot assume that when screen.keepAwake state
- // is changed from within a script, WakeLockService will receive an update
- // request before ExecuteScript() returns. Therefore, some time slack is
- // needed to make sure that WakeLockService has received any possible update
- // requests before checking the resulting wake lock state.
- base::PlatformThread::Sleep(TestTimeouts::tiny_timeout());
- RunAllPendingInMessageLoop();
- }
-
- void ScreenWakeLockInMainFrame() {
- EXPECT_TRUE(ExecuteScript(GetMainFrame(), "screen.keepAwake = true;"));
- WaitForPossibleUpdate();
- EXPECT_TRUE(HasWakeLock());
- }
-
- bool EvaluateAsBool(const ToRenderFrameHost& adapter,
- const std::string& expr) {
- bool result;
- CHECK(ExecuteScriptAndExtractBool(
- adapter,
- "window.domAutomationController.send(" + expr + ");",
- &result));
- return result;
- }
-};
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, WakeLockApiIsPresent) {
- NavigateToURL(shell(), embedded_test_server()->GetURL("/simple_page.html"));
- EXPECT_TRUE(EvaluateAsBool(GetMainFrame(),
- "typeof screen.keepAwake !== undefined"));
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, LockAndUnlockScreenInMainFrame) {
- NavigateToURL(shell(), embedded_test_server()->GetURL("/simple_page.html"));
-
- // Should not have screen wake lock initially.
- EXPECT_FALSE(HasWakeLock());
-
- // Check attribute 'screen.keepAwake' in main frame.
- EXPECT_FALSE(EvaluateAsBool(GetMainFrame(), "screen.keepAwake"));
-
- // Set keep awake flag in main frame.
- EXPECT_TRUE(ExecuteScript(GetMainFrame(), "screen.keepAwake = true;"));
- WaitForPossibleUpdate();
-
- // Keep awake flag should be set in main frame.
- EXPECT_TRUE(EvaluateAsBool(GetMainFrame(), "screen.keepAwake"));
-
- // Should create screen wake lock.
- EXPECT_TRUE(HasWakeLock());
-
- // Reset keep awake flag in main frame.
- EXPECT_TRUE(ExecuteScript(GetMainFrame(), "screen.keepAwake = false;"));
- WaitForPossibleUpdate();
-
- // Keep awake flag should not be set in main frame.
- EXPECT_FALSE(EvaluateAsBool(GetMainFrame(), "screen.keepAwake"));
-
- // Should release screen wake lock.
- EXPECT_FALSE(HasWakeLock());
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, MultipleLockThenUnlock) {
- NavigateToURL(shell(), embedded_test_server()->GetURL("/simple_page.html"));
-
- // Set keep awake flag
- EXPECT_TRUE(ExecuteScript(GetMainFrame(), "screen.keepAwake = true;"));
- WaitForPossibleUpdate();
-
- // Set keep awake flag again.
- EXPECT_TRUE(ExecuteScript(GetMainFrame(), "screen.keepAwake = true;"));
- WaitForPossibleUpdate();
-
- // Screen should still be locked.
- EXPECT_TRUE(HasWakeLock());
-
- // Reset keep awake flag.
- EXPECT_TRUE(ExecuteScript(GetMainFrame(), "screen.keepAwake = false;"));
- WaitForPossibleUpdate();
-
- // Should release screen wake lock.
- EXPECT_FALSE(HasWakeLock());
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, LockInMainFrameAndNestedFrame) {
- NavigateToURL(shell(),
- embedded_test_server()->GetURL("/frame_tree/2-4.html"));
- EXPECT_FALSE(HasWakeLock());
-
- // Lock screen in nested frame.
- EXPECT_TRUE(ExecuteScript(GetNestedFrame(), "screen.keepAwake = true;"));
- WaitForPossibleUpdate();
-
- // Should create screen wake lock.
- EXPECT_TRUE(HasWakeLock());
-
- // screen.keepAwake should be false in the main frame.
- EXPECT_FALSE(EvaluateAsBool(GetMainFrame(), "screen.keepAwake"));
-
- // Lock screen in main frame.
- EXPECT_TRUE(ExecuteScript(GetMainFrame(), "screen.keepAwake = true;"));
- WaitForPossibleUpdate();
-
- // screen.keepAwake should be true in the main frame.
- EXPECT_TRUE(EvaluateAsBool(GetMainFrame(), "screen.keepAwake"));
-
- // Screen wake lock should not change.
- EXPECT_TRUE(HasWakeLock());
-
- // Unlock screen in nested frame.
- EXPECT_TRUE(ExecuteScript(GetNestedFrame(), "screen.keepAwake = false;"));
- WaitForPossibleUpdate();
-
- // Screen wake lock should be present, as the main frame is still requesting
- // it.
- EXPECT_TRUE(HasWakeLock());
-
- // Unlock screen in main frame.
- EXPECT_TRUE(ExecuteScript(GetMainFrame(), "screen.keepAwake = false;"));
- WaitForPossibleUpdate();
-
- // Screen wake lock should be released, as no frames are requesting it.
- EXPECT_FALSE(HasWakeLock());
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, FrameRemoved) {
- NavigateToURL(shell(),
- embedded_test_server()->GetURL("/frame_tree/2-4.html"));
- EXPECT_FALSE(HasWakeLock());
-
- // Lock screen in nested frame.
- EXPECT_TRUE(ExecuteScript(GetNestedFrame(), "screen.keepAwake = true;"));
- WaitForPossibleUpdate();
-
- EXPECT_TRUE(HasWakeLock());
-
- // Remove nested frame.
- EXPECT_TRUE(ExecuteScript(
- GetMainFrame(),
- "var iframe = document.getElementById('3-1-id');"
- "iframe.parentNode.removeChild(iframe);"));
-
- // Screen wake lock should be released.
- EXPECT_FALSE(HasWakeLock());
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, UnlockAfterTabCrashed) {
- NavigateToURL(shell(), embedded_test_server()->GetURL("/simple_page.html"));
- ScreenWakeLockInMainFrame();
-
- // Crash the tab.
- CrashTab(GetWebContents());
-
- // Screen wake lock should be released.
- EXPECT_FALSE(HasWakeLock());
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, UnlockAfterNavigation) {
- NavigateToURL(shell(), embedded_test_server()->GetURL("/simple_page.html"));
- ScreenWakeLockInMainFrame();
-
- // Navigate to a different document.
- NavigateToURL(shell(), embedded_test_server()->GetURL("/title1.html"));
-
- // Screen wake lock should be released after navigation.
- EXPECT_FALSE(HasWakeLock());
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, UnlockAfterNavigationToSelf) {
- NavigateToURL(shell(), embedded_test_server()->GetURL("/simple_page.html"));
- ScreenWakeLockInMainFrame();
-
- // Navigate to the same document.
- NavigateToURL(shell(), embedded_test_server()->GetURL("/simple_page.html"));
-
- // Screen wake lock should be released after navigation to the same URL.
- EXPECT_FALSE(HasWakeLock());
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, KeepLockAfterInPageNavigation) {
- GURL test_url(
- embedded_test_server()->GetURL("/session_history/fragment.html"));
- GURL test_in_page_url(test_url.spec() + "#a");
-
- NavigateToURL(shell(), test_url);
- ScreenWakeLockInMainFrame();
-
- NavigateToURL(shell(), test_in_page_url);
- EXPECT_TRUE(HasWakeLock());
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, UnlockAfterReload) {
- NavigateToURL(shell(), embedded_test_server()->GetURL("/simple_page.html"));
- ScreenWakeLockInMainFrame();
-
- shell()->Reload();
- WaitForLoadStop(GetWebContents());
-
- // Screen wake lock should be released after reload.
- EXPECT_FALSE(HasWakeLock());
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, BrowserInitiatedFrameNavigation) {
- NavigateToURL(shell(),
- embedded_test_server()->GetURL("/frame_tree/2-4.html"));
-
- EXPECT_FALSE(HasWakeLock());
-
- // Lock screen in nested frame.
- EXPECT_TRUE(ExecuteScript(GetNestedFrame(), "screen.keepAwake = true;"));
- WaitForPossibleUpdate();
-
- // Screen wake lock should be present.
- EXPECT_TRUE(HasWakeLock());
-
- // Navigate the nested frame (browser-initiated).
- NavigateFrameToURL(GetNestedFrameNode(),
- embedded_test_server()->GetURL("/simple_page.html"));
- WaitForPossibleUpdate();
-
- // Screen wake lock should be released.
- EXPECT_FALSE(HasWakeLock());
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, RendererInitiatedFrameNavigation) {
- NavigateToURL(shell(),
- embedded_test_server()->GetURL("/frame_tree/2-4.html"));
-
- EXPECT_FALSE(HasWakeLock());
-
- // Lock screen in nested frame.
- EXPECT_TRUE(ExecuteScript(GetNestedFrame(), "screen.keepAwake = true;"));
- WaitForPossibleUpdate();
-
- // Screen wake lock should be present.
- EXPECT_TRUE(HasWakeLock());
-
- // Navigate the nested frame (renderer-initiated).
- NavigateIframeToURL(GetWebContents(),
- "3-1-id",
- embedded_test_server()->GetURL("/simple_page.html"));
- WaitForPossibleUpdate();
-
- // Screen wake lock should be released.
- EXPECT_FALSE(HasWakeLock());
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, OutOfProcessFrame) {
- NavigateToURL(shell(),
- embedded_test_server()->GetURL("a.com",
- "/cross_site_iframe_factory.html?a(a)"));
- EXPECT_FALSE(HasWakeLock());
-
- // Ensure that the nested frame is same-process.
- EXPECT_FALSE(GetNestedFrame()->IsCrossProcessSubframe());
-
- // Lock screen in same-site nested frame.
- EXPECT_TRUE(ExecuteScript(GetNestedFrame(), "screen.keepAwake = true;"));
- WaitForPossibleUpdate();
- EXPECT_TRUE(HasWakeLock());
-
- // Navigate nested frame to a cross-site document.
- NavigateFrameToURL(GetNestedFrameNode(),
- embedded_test_server()->GetURL("b.com",
- "/simple_page.html"));
- WaitForPossibleUpdate();
-
- // Ensure that a new process has been created for the nested frame.
- EXPECT_TRUE(GetNestedFrame()->IsCrossProcessSubframe());
-
- // Screen wake lock should be released.
- EXPECT_FALSE(HasWakeLock());
-
- // Lock screen in the cross-site nested frame.
- EXPECT_TRUE(ExecuteScript(GetNestedFrame(), "screen.keepAwake = true;"));
- WaitForPossibleUpdate();
-
- // Screen wake lock should be created.
- EXPECT_TRUE(HasWakeLock());
-}
-
-IN_PROC_BROWSER_TEST_F(WakeLockTest, UnlockAfterCrashOutOfProcessFrame) {
- // Load a page with cross-site iframe.
- NavigateToURL(shell(),
- embedded_test_server()->GetURL("a.com",
- "/cross_site_iframe_factory.html?a(b)"));
- EXPECT_FALSE(HasWakeLock());
-
- // Ensure that a new process has been created for the nested frame.
- EXPECT_TRUE(GetNestedFrame()->IsCrossProcessSubframe());
-
- // Lock screen in cross-site nested frame.
- EXPECT_TRUE(ExecuteScript(GetNestedFrame(), "screen.keepAwake = true;"));
- WaitForPossibleUpdate();
- EXPECT_TRUE(HasWakeLock());
-
- // Crash process that owns the out-of-process frame.
- RenderProcessHostWatcher watcher(
- GetNestedFrame()->GetProcess(),
- RenderProcessHostWatcher::WATCH_FOR_PROCESS_EXIT);
- GetNestedFrame()->GetProcess()->Shutdown(0, false);
- watcher.Wait();
-
- // Screen wake lock should be released.
- EXPECT_FALSE(HasWakeLock());
-}
-
-} // namespace content
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.cc ('k') | content/browser/wake_lock/wake_lock_service_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698