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

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: Created 6 years, 11 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 | « no previous file | chrome/test/data/extensions/platform_apps/leave_fullscreen/main.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 b44bf1412ce31988ac1687e48fdf313e05859cda..406ced9b9952c47be12fe260edbbb312d7662a75 100644
--- a/chrome/browser/apps/app_window_interactive_uitest.cc
+++ b/chrome/browser/apps/app_window_interactive_uitest.cc
@@ -7,7 +7,11 @@
#include "chrome/browser/extensions/extension_test_message_listener.h"
#include "chrome/test/base/interactive_test_utils.h"
-using namespace apps;
+#if defined(OS_MACOSX) && !defined(OS_IOS)
+#include "base/mac/mac_util.h"
+#endif
+
+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 +22,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 +63,33 @@ class AppWindowInteractiveTest : public extensions::PlatformAppBrowserTest {
false,
false);
}
+
+ // This method will wait until the application is able to ack a key event.
+ void WaitUntilKeyFocus() {
+ ExtensionTestMessageListener key_listener("KeyReceived", false);
+
+ while (!key_listener.was_satisfied()) {
+ ASSERT_TRUE(SimulateKeyPress(ui::VKEY_Z));
+ content::RunAllPendingInMessageLoop();
+ }
+ }
};
-#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
+IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, ESCLeavesFullscreenWindow) {
+// This test is flaky on MacOS 10.6.
+#if defined(OS_MACOSX) && !defined(OS_IOS)
+ if (base::mac::IsOSSnowLeopard())
+ return;
#endif
-IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
- MAYBE_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()));
+
// 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 +102,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 +119,21 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
}
}
-IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, MAYBE_ESCLeavesFullscreenDOM) {
+IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, ESCLeavesFullscreenDOM) {
+// This test is flaky on MacOS 10.6.
+#if defined(OS_MACOSX) && !defined(OS_IOS)
+ if (base::mac::IsOSSnowLeopard())
+ return;
+#endif
+
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
@@ -132,11 +147,18 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, MAYBE_ESCLeavesFullscreenDOM) {
{
FullscreenChangeWaiter fs_changed(GetFirstShellWindow()->GetBaseWindow());
+ WaitUntilKeyFocus();
ASSERT_TRUE(SimulateKeyPress(ui::VKEY_A));
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 +171,21 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest, MAYBE_ESCLeavesFullscreenDOM) {
}
IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
- MAYBE_ESCDoesNotLeaveFullscreenWindow) {
+ ESCDoesNotLeaveFullscreenWindow) {
+// This test is flaky on MacOS 10.6.
+#if defined(OS_MACOSX) && !defined(OS_IOS)
+ if (base::mac::IsOSSnowLeopard())
+ return;
+#endif
+
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 +198,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 +220,21 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
}
IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
- MAYBE_ESCDoesNotLeaveFullscreenDOM) {
+ ESCDoesNotLeaveFullscreenDOM) {
+// This test is flaky on MacOS 10.6.
+#if defined(OS_MACOSX) && !defined(OS_IOS)
+ if (base::mac::IsOSSnowLeopard())
+ return;
+#endif
+
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
@@ -200,11 +248,18 @@ IN_PROC_BROWSER_TEST_F(AppWindowInteractiveTest,
{
FullscreenChangeWaiter fs_changed(GetFirstShellWindow()->GetBaseWindow());
+ WaitUntilKeyFocus();
ASSERT_TRUE(SimulateKeyPress(ui::VKEY_A));
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);
« no previous file with comments | « no previous file | chrome/test/data/extensions/platform_apps/leave_fullscreen/main.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698