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

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

Issue 281833003: BrowserPluginHostTest: Rewrite 3 focus related tests and 1 visibility test to browser_tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sync Created 6 years, 7 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: chrome/browser/apps/web_view_interactive_browsertest.cc
diff --git a/chrome/browser/apps/web_view_interactive_browsertest.cc b/chrome/browser/apps/web_view_interactive_browsertest.cc
index e2fec4b26f936ed87d135798c30e6ae353ee709a..1fc55f9303db5fad0d0d1f9a025a0e4117180098 100644
--- a/chrome/browser/apps/web_view_interactive_browsertest.cc
+++ b/chrome/browser/apps/web_view_interactive_browsertest.cc
@@ -502,12 +502,78 @@ IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, PointerLock) {
#endif // defined(OS_LINUX) && !defined(USE_AURA)
+// Tests that if a <webview> is focused before navigation then the guest starts
+// off focused.
+IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, Focus_FocusBeforeNavigation) {
+ TestHelper("testFocusBeforeNavigation", "web_view/focus", NO_TEST_SERVER);
+}
+
// Tests that setting focus on the <webview> sets focus on the guest.
IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, Focus_FocusEvent) {
TestHelper("testFocusEvent", "web_view/focus", NO_TEST_SERVER);
}
-// Tests that setting focus on the <webview> sets focus on the guest.
+IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, Focus_FocusTracksEmbedder) {
+ content::WebContents* embedder_web_contents = NULL;
+
+ scoped_ptr<ExtensionTestMessageListener> done_listener(
+ RunAppHelper("testFocusTracksEmbedder", "web_view/focus", NO_TEST_SERVER,
+ &embedder_web_contents));
+ done_listener->WaitUntilSatisfied();
+
+ ExtensionTestMessageListener post_test_listener("POST_TEST_PASSED", false);
+ post_test_listener.set_failure_message("POST_TEST_FAILED");
+ EXPECT_TRUE(content::ExecuteScript(
+ embedder_web_contents,
+ "window.runCommand('POST_testFocusTracksEmbedder');"));
+
+ // Blur the embedder.
+ embedder_web_contents->GetRenderViewHost()->Blur();
+ // Ensure that the guest is also blurred.
+ ASSERT_TRUE(post_test_listener.WaitUntilSatisfied());
+}
+
+IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, Focus_AdvanceFocus) {
+ content::WebContents* embedder_web_contents = NULL;
+
+ {
+ scoped_ptr<ExtensionTestMessageListener> done_listener(
+ RunAppHelper("testAdvanceFocus", "web_view/focus", NO_TEST_SERVER,
+ &embedder_web_contents));
+ done_listener->WaitUntilSatisfied();
+ }
+
+ {
+ ExtensionTestMessageListener listener("button1-focused", false);
+ listener.set_failure_message("TEST_FAILED");
+ SimulateRWHMouseClick(embedder_web_contents->GetRenderViewHost(),
+ blink::WebMouseEvent::ButtonLeft, 200, 20);
+ content::SimulateKeyPress(embedder_web_contents, ui::VKEY_TAB,
+ false, false, false, false);
+ EXPECT_TRUE(content::ExecuteScript(
Fady Samuel 2014/05/21 18:02:37 Why do we need this?
lazyboy 2014/05/21 19:19:07 Not needed, removed.
+ embedder_web_contents,
+ "window.runCommand('POST_testAdvanceFocus');"));
+ ASSERT_TRUE(listener.WaitUntilSatisfied());
+ }
+
+ {
+ // Wait for button1 to be focused again, this means we have seen
+ // BrowserPluginGuest::OnTakeFocus.
Fady Samuel 2014/05/21 18:02:37 Let's not mention BrowserPlugin details in this pa
lazyboy 2014/05/21 19:19:07 Done.
+ ExtensionTestMessageListener listener("button1-advance-focus", false);
+ listener.set_failure_message("TEST_FAILED");
+ // TODO(fsamuel): A third Tab key press should not be necessary.
+ // The browser plugin will take keyboard focus but it will not
Fady Samuel 2014/05/21 18:02:37 Let's not mention BrowserPlugin in this patch.
lazyboy 2014/05/21 19:19:07 Done.
+ // focus an initial element. The initial element is dependent
+ // upon tab direction which WebKit does not propagate to the plugin.
+ // See http://crbug.com/147644.
+ SendKeyPressToPlatformApp(ui::VKEY_TAB);
+ SendKeyPressToPlatformApp(ui::VKEY_TAB);
+ SendKeyPressToPlatformApp(ui::VKEY_TAB);
+ ASSERT_TRUE(listener.WaitUntilSatisfied());
+ }
+}
+
+// Tests that blurring <webview> also blurs the guest.
IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, Focus_BlurEvent) {
TestHelper("testBlurEvent", "web_view/focus", NO_TEST_SERVER);
}

Powered by Google App Engine
This is Rietveld 408576698