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

Unified Diff: chrome/browser/apps/app_window_interactive_uitest.cc

Issue 116023002: Enable all ESC-Fullscreen tests (Chrome Apps) for all platforms. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: cleaned up Created 7 years 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: chrome/browser/apps/app_window_interactive_uitest.cc
diff --git a/chrome/browser/apps/app_window_interactive_uitest.cc b/chrome/browser/apps/app_window_interactive_uitest.cc
index fd802640f582424cbe2b9f2c7e5697d54a23296e..a4d58aff4353d9c97caa62862fc78a67584a68e5 100644
--- a/chrome/browser/apps/app_window_interactive_uitest.cc
+++ b/chrome/browser/apps/app_window_interactive_uitest.cc
@@ -7,7 +7,7 @@
#include "chrome/browser/extensions/extension_test_message_listener.h"
#include "chrome/test/base/interactive_test_utils.h"
-using namespace apps;
+using apps::NativeAppWindow;
// Helper class that has to be created in the stack to check if the fullscreen
// setting of a NativeWindow has changed since the creation of the object.
@@ -18,7 +18,7 @@ class FullscreenChangeWaiter {
initial_fullscreen_state_(window_->IsFullscreen()) {}
void Wait() {
- while (initial_fullscreen_state_ != window_->IsFullscreen())
+ while (initial_fullscreen_state_ == window_->IsFullscreen())
content::RunAllPendingInMessageLoop();
}
@@ -59,38 +59,27 @@ class AppWindowInteractiveTest : public extensions::PlatformAppBrowserTest {
false,
false);
}
-};
-#if defined(OS_LINUX) && defined(USE_AURA)
-// These tests do not work on Linux Aura because when the window is raised, the
-// content is not focused thus do not get the key events.
-// See http://crbug.com/324346
-#define MAYBE_ESCDoesNotLeaveFullscreenWindow \
- DISABLED_ESCDoesNotLeaveFullscreenWindow
-#define MAYBE_ESCDoesNotLeaveFullscreenDOM DISABLED_ESCDoesNotLeaveFullscreenDOM
-// These tests are failing on Linux Aura for unknown reasons.
-#define MAYBE_ESCLeavesFullscreenWindow DISABLED_ESCLeavesFullscreenWindow
-#define MAYBE_ESCLeavesFullscreenDOM DISABLED_ESCLeavesFullscreenDOM
-#elif defined(OS_MACOSX)
-// These tests are highly flaky on MacOS.
-#define MAYBE_ESCLeavesFullscreenWindow DISABLED_ESCLeavesFullscreenWindow
-#define MAYBE_ESCLeavesFullscreenDOM DISABLED_ESCLeavesFullscreenDOM
-#define MAYBE_ESCDoesNotLeaveFullscreenWindow \
- DISABLED_ESCDoesNotLeaveFullscreenWindow
-#define MAYBE_ESCDoesNotLeaveFullscreenDOM DISABLED_ESCDoesNotLeaveFullscreenDOM
-#else
-#define MAYBE_ESCLeavesFullscreenWindow ESCLeavesFullscreenWindow
-#define MAYBE_ESCLeavesFullscreenDOM ESCLeavesFullscreenDOM
-#define MAYBE_ESCDoesNotLeaveFullscreenWindow ESCDoesNotLeaveFullscreenWindow
-#define MAYBE_ESCDoesNotLeaveFullscreenDOM ESCDoesNotLeaveFullscreenDOM
-#endif
+ // This method will wait until the application is able to ack a key event.
+ void WaitUntilKeyFocus() {
+ ExtensionTestMessageListener key_listener("KEY_RECEIVED", false);
-IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
- MAYBE_ESCLeavesFullscreenWindow) {
+ while (!key_listener.was_satisfied()) {
+ ASSERT_TRUE(SimulateKeyPress(ui::VKEY_Z));
+ content::RunAllPendingInMessageLoop();
+ }
+ }
+};
+
+IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, ESCLeavesFullscreenWindow) {
ExtensionTestMessageListener launched_listener("Launched", true);
LoadAndLaunchPlatformApp("leave_fullscreen");
ASSERT_TRUE(launched_listener.WaitUntilSatisfied());
+ // We start by making sure the window is actually focused.
+ ASSERT_TRUE(ui_test_utils::ShowAndFocusNativeWindow(
+ GetFirstShellWindow()->GetNativeWindow()));
koz (OOO until 15th September) 2014/01/08 23:29:25 nit: I think the second line should be indented 4
mlamouri (slow - plz ping) 2014/01/09 17:08:46 Done.
+
// When receiving the reply, the application will try to go fullscreen using
// the Window API but there is no synchronous way to know if that actually
// succeeded. Also, failure will not be notified. A failure case will only be
@@ -103,6 +92,12 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
fs_changed.Wait();
}
+ // Depending on the platform, going fullscreen might create an animation.
+ // We want to make sure that the ESC key we will send next is actually going
+ // to be received and the application might not receive key events during the
+ // animation so we should wait for the key focus to be back.
+ WaitUntilKeyFocus();
+
// Same idea as above but for leaving fullscreen. Fullscreen mode should be
// left when ESC is received.
{
@@ -114,11 +109,15 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
}
}
-IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, MAYBE_ESCLeavesFullscreenDOM) {
+IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, ESCLeavesFullscreenDOM) {
ExtensionTestMessageListener launched_listener("Launched", true);
LoadAndLaunchPlatformApp("leave_fullscreen");
ASSERT_TRUE(launched_listener.WaitUntilSatisfied());
+ // We start by making sure the window is actually focused.
+ ASSERT_TRUE(ui_test_utils::ShowAndFocusNativeWindow(
+ GetFirstShellWindow()->GetNativeWindow()));
+
launched_listener.Reply("dom");
// Because the DOM way to go fullscreen requires user gesture, we simulate a
@@ -137,6 +136,12 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, MAYBE_ESCLeavesFullscreenDOM) {
fs_changed.Wait();
}
+ // Depending on the platform, going fullscreen might create an animation.
+ // We want to make sure that the ESC key we will send next is actually going
+ // to be received and the application might not receive key events during the
+ // animation so we should wait for the key focus to be back.
+ WaitUntilKeyFocus();
+
// Same idea as above but for leaving fullscreen. Fullscreen mode should be
// left when ESC is received.
{
@@ -149,11 +154,15 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, MAYBE_ESCLeavesFullscreenDOM) {
}
IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
- MAYBE_ESCDoesNotLeaveFullscreenWindow) {
+ ESCDoesNotLeaveFullscreenWindow) {
ExtensionTestMessageListener launched_listener("Launched", true);
LoadAndLaunchPlatformApp("prevent_leave_fullscreen");
ASSERT_TRUE(launched_listener.WaitUntilSatisfied());
+ // We start by making sure the window is actually focused.
+ ASSERT_TRUE(ui_test_utils::ShowAndFocusNativeWindow(
+ GetFirstShellWindow()->GetNativeWindow()));
+
// When receiving the reply, the application will try to go fullscreen using
// the Window API but there is no synchronous way to know if that actually
// succeeded. Also, failure will not be notified. A failure case will only be
@@ -166,6 +175,12 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
fs_changed.Wait();
}
+ // Depending on the platform, going fullscreen might create an animation.
+ // We want to make sure that the ESC key we will send next is actually going
+ // to be received and the application might not receive key events during the
+ // animation so we should wait for the key focus to be back.
+ WaitUntilKeyFocus();
+
ASSERT_TRUE(SimulateKeyPress(ui::VKEY_ESCAPE));
ExtensionTestMessageListener second_key_listener("B_KEY_RECEIVED", false);
@@ -182,11 +197,15 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
}
IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
- MAYBE_ESCDoesNotLeaveFullscreenDOM) {
+ ESCDoesNotLeaveFullscreenDOM) {
ExtensionTestMessageListener launched_listener("Launched", true);
LoadAndLaunchPlatformApp("prevent_leave_fullscreen");
ASSERT_TRUE(launched_listener.WaitUntilSatisfied());
+ // We start by making sure the window is actually focused.
+ ASSERT_TRUE(ui_test_utils::ShowAndFocusNativeWindow(
+ GetFirstShellWindow()->GetNativeWindow()));
+
launched_listener.Reply("dom");
// Because the DOM way to go fullscreen requires user gesture, we simulate a
@@ -205,6 +224,12 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
fs_changed.Wait();
}
+ // Depending on the platform, going fullscreen might create an animation.
+ // We want to make sure that the ESC key we will send next is actually going
+ // to be received and the application might not receive key events during the
+ // animation so we should wait for the key focus to be back.
+ WaitUntilKeyFocus();
koz (OOO until 15th September) 2014/01/08 23:29:25 It might make sense to name this WaitForFullscreen
mlamouri (slow - plz ping) 2014/01/09 17:08:46 But we might want to re-use that logic for other t
+
ASSERT_TRUE(SimulateKeyPress(ui::VKEY_ESCAPE));
ExtensionTestMessageListener second_key_listener("B_KEY_RECEIVED", false);

Powered by Google App Engine
This is Rietveld 408576698