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