fullscreen_browsertest.cc revision 6e8cce623b6e4fe0c9e4af605d675dd9d0338c38
16f56ab789cb470620554d624c37f488285b3b04eDan Albert// Copyright 2014 The Chromium Authors. All rights reserved. 26f56ab789cb470620554d624c37f488285b3b04eDan Albert// Use of this source code is governed by a BSD-style license that can be 36f56ab789cb470620554d624c37f488285b3b04eDan Albert// found in the LICENSE file. 46f56ab789cb470620554d624c37f488285b3b04eDan Albert 56f56ab789cb470620554d624c37f488285b3b04eDan Albert#include "base/file_util.h" 66f56ab789cb470620554d624c37f488285b3b04eDan Albert#include "base/files/file_path.h" 76f56ab789cb470620554d624c37f488285b3b04eDan Albert#include "chrome/test/remoting/remote_desktop_browsertest.h" 86f56ab789cb470620554d624c37f488285b3b04eDan Albert#include "chrome/test/remoting/waiter.h" 96f56ab789cb470620554d624c37f488285b3b04eDan Albert 106f56ab789cb470620554d624c37f488285b3b04eDan Albertnamespace remoting { 116f56ab789cb470620554d624c37f488285b3b04eDan Albert 126f56ab789cb470620554d624c37f488285b3b04eDan Albertclass FullscreenBrowserTest : public RemoteDesktopBrowserTest { 136f56ab789cb470620554d624c37f488285b3b04eDan Albert protected: 146f56ab789cb470620554d624c37f488285b3b04eDan Albert bool WaitForFullscreenChange(bool expect_fullscreen); 156f56ab789cb470620554d624c37f488285b3b04eDan Albert}; 166f56ab789cb470620554d624c37f488285b3b04eDan Albert 176f56ab789cb470620554d624c37f488285b3b04eDan Albertbool FullscreenBrowserTest::WaitForFullscreenChange(bool expect_fullscreen) { 186f56ab789cb470620554d624c37f488285b3b04eDan Albert std::string javascript = expect_fullscreen ? 196f56ab789cb470620554d624c37f488285b3b04eDan Albert "remoting.fullscreen.isActive()" : 206f56ab789cb470620554d624c37f488285b3b04eDan Albert "!remoting.fullscreen.isActive()"; 216f56ab789cb470620554d624c37f488285b3b04eDan Albert ConditionalTimeoutWaiter waiter( 226f56ab789cb470620554d624c37f488285b3b04eDan Albert base::TimeDelta::FromSeconds(20), 236f56ab789cb470620554d624c37f488285b3b04eDan Albert base::TimeDelta::FromSeconds(1), 246f56ab789cb470620554d624c37f488285b3b04eDan Albert base::Bind(&RemoteDesktopBrowserTest::IsHostActionComplete, 256f56ab789cb470620554d624c37f488285b3b04eDan Albert active_web_contents(), 266f56ab789cb470620554d624c37f488285b3b04eDan Albert javascript)); 276f56ab789cb470620554d624c37f488285b3b04eDan Albert bool result = waiter.Wait(); 286f56ab789cb470620554d624c37f488285b3b04eDan Albert // Entering or leaving full-screen mode causes local and remote desktop 296f56ab789cb470620554d624c37f488285b3b04eDan Albert // reconfigurations that can take a while to settle down, so wait a few 306f56ab789cb470620554d624c37f488285b3b04eDan Albert // seconds before continuing. 316f56ab789cb470620554d624c37f488285b3b04eDan Albert TimeoutWaiter(base::TimeDelta::FromSeconds(10)).Wait(); 326f56ab789cb470620554d624c37f488285b3b04eDan Albert return result; 336f56ab789cb470620554d624c37f488285b3b04eDan Albert} 346f56ab789cb470620554d624c37f488285b3b04eDan Albert 356f56ab789cb470620554d624c37f488285b3b04eDan AlbertIN_PROC_BROWSER_TEST_F(FullscreenBrowserTest, MANUAL_Me2Me_Fullscreen) { 366f56ab789cb470620554d624c37f488285b3b04eDan Albert SetUpTestForMe2Me(); 376f56ab789cb470620554d624c37f488285b3b04eDan Albert ConnectToLocalHost(false); 386f56ab789cb470620554d624c37f488285b3b04eDan Albert 396f56ab789cb470620554d624c37f488285b3b04eDan Albert // Verify that we're initially not full-screen. 406f56ab789cb470620554d624c37f488285b3b04eDan Albert EXPECT_FALSE(ExecuteScriptAndExtractBool( 416f56ab789cb470620554d624c37f488285b3b04eDan Albert "remoting.fullscreen.isActive()")); 426f56ab789cb470620554d624c37f488285b3b04eDan Albert 436f56ab789cb470620554d624c37f488285b3b04eDan Albert // Click the full-screen button and verify that it activates full-screen mode. 446f56ab789cb470620554d624c37f488285b3b04eDan Albert ClickOnControl("toggle-full-screen"); 456f56ab789cb470620554d624c37f488285b3b04eDan Albert EXPECT_TRUE(WaitForFullscreenChange(true)); 466f56ab789cb470620554d624c37f488285b3b04eDan Albert 476f56ab789cb470620554d624c37f488285b3b04eDan Albert // Click the full-screen button again and verify that it deactivates 486f56ab789cb470620554d624c37f488285b3b04eDan Albert // full-screen mode. 496f56ab789cb470620554d624c37f488285b3b04eDan Albert ClickOnControl("toggle-full-screen"); 506f56ab789cb470620554d624c37f488285b3b04eDan Albert EXPECT_TRUE(WaitForFullscreenChange(false)); 516f56ab789cb470620554d624c37f488285b3b04eDan Albert 526f56ab789cb470620554d624c37f488285b3b04eDan Albert // Enter full-screen mode again, then disconnect and verify that full-screen 536f56ab789cb470620554d624c37f488285b3b04eDan Albert // mode is deactivated upon disconnection. 546f56ab789cb470620554d624c37f488285b3b04eDan Albert // TODO(jamiewalch): For the v2 app, activate full-screen mode indirectly by 556f56ab789cb470620554d624c37f488285b3b04eDan Albert // maximizing the window for the second test. 566f56ab789cb470620554d624c37f488285b3b04eDan Albert ClickOnControl("toggle-full-screen"); 576f56ab789cb470620554d624c37f488285b3b04eDan Albert EXPECT_TRUE(WaitForFullscreenChange(true)); 586f56ab789cb470620554d624c37f488285b3b04eDan Albert DisconnectMe2Me(); 596f56ab789cb470620554d624c37f488285b3b04eDan Albert EXPECT_TRUE(WaitForFullscreenChange(false)); 606f56ab789cb470620554d624c37f488285b3b04eDan Albert 616f56ab789cb470620554d624c37f488285b3b04eDan Albert Cleanup(); 626f56ab789cb470620554d624c37f488285b3b04eDan Albert} 636f56ab789cb470620554d624c37f488285b3b04eDan Albert 646f56ab789cb470620554d624c37f488285b3b04eDan AlbertIN_PROC_BROWSER_TEST_F(FullscreenBrowserTest, MANUAL_Me2Me_Bump_Scroll) { 656f56ab789cb470620554d624c37f488285b3b04eDan Albert SetUpTestForMe2Me(); 666f56ab789cb470620554d624c37f488285b3b04eDan Albert 676f56ab789cb470620554d624c37f488285b3b04eDan Albert content::WebContents* content = app_web_content(); 686f56ab789cb470620554d624c37f488285b3b04eDan Albert LoadScript(content, FILE_PATH_LITERAL("bump_scroll_browser_test.js")); 696f56ab789cb470620554d624c37f488285b3b04eDan Albert 706f56ab789cb470620554d624c37f488285b3b04eDan Albert RunJavaScriptTest(content, "Bump_Scroll", "{pin: '" + me2me_pin() + "'}"); 716f56ab789cb470620554d624c37f488285b3b04eDan Albert 726f56ab789cb470620554d624c37f488285b3b04eDan Albert Cleanup(); 736f56ab789cb470620554d624c37f488285b3b04eDan Albert} 746f56ab789cb470620554d624c37f488285b3b04eDan Albert 756f56ab789cb470620554d624c37f488285b3b04eDan Albert} // namespace remoting 766f56ab789cb470620554d624c37f488285b3b04eDan Albert