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 22a1fb0851cc4e881cda1a96127a78720c145b05..3a5575216cc354dbf01064dfaf1fe7df7020ea58 100644 |
--- a/chrome/browser/apps/web_view_interactive_browsertest.cc |
+++ b/chrome/browser/apps/web_view_interactive_browsertest.cc |
@@ -6,9 +6,12 @@ |
#include "apps/shell_window_registry.h" |
#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "chrome/app/chrome_command_ids.h" |
#include "chrome/browser/apps/app_browsertest_util.h" |
#include "chrome/browser/extensions/extension_test_message_listener.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/tab_contents/render_view_context_menu_browsertest_util.h" |
+#include "chrome/browser/tab_contents/render_view_context_menu_test_util.h" |
#include "chrome/test/base/interactive_test_utils.h" |
#include "chrome/test/base/test_launcher_utils.h" |
#include "chrome/test/base/ui_test_utils.h" |
@@ -250,9 +253,12 @@ class WebViewInteractiveTest |
return corner_; |
} |
- void SimulateRWHMouseClick(content::RenderWidgetHost* rwh, int x, int y) { |
+ void SimulateRWHMouseClick(content::RenderWidgetHost* rwh, |
+ blink::WebMouseEvent::Button button, |
+ int x, |
+ int y) { |
blink::WebMouseEvent mouse_event; |
- mouse_event.button = blink::WebMouseEvent::ButtonLeft; |
+ mouse_event.button = button; |
mouse_event.x = mouse_event.windowX = x; |
mouse_event.y = mouse_event.windowY = y; |
mouse_event.modifiers = 0; |
@@ -327,7 +333,7 @@ class WebViewInteractiveTest |
gfx::Rect popup_bounds = popup_rwh->GetView()->GetViewBounds(); |
// (2, 2) is expected to lie on the first datalist element. |
- SimulateRWHMouseClick(popup_rwh, 2, 2); |
+ SimulateRWHMouseClick(popup_rwh, blink::WebMouseEvent::ButtonLeft, 2, 2); |
content::RenderViewHost* embedder_rvh = |
GetFirstShellWindowWebContents()->GetRenderViewHost(); |
@@ -763,3 +769,28 @@ IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, |
"web_view/pointerlock", |
NO_TEST_SERVER); |
} |
+ |
+#if defined(OS_MACOSX) |
+IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, TextSelection) { |
+ SetupTest("web_view/text_selection", |
+ "/extensions/platform_apps/web_view/text_selection/guest.html"); |
+ ASSERT_TRUE(guest_web_contents()); |
+ ASSERT_TRUE(ui_test_utils::ShowAndFocusNativeWindow( |
+ GetPlatformAppWindow())); |
+ |
+ // Wait until guest sees a context menu, select an arbitrary item (copy). |
+ ExtensionTestMessageListener ctx_listener("MSG_CONTEXTMENU", false); |
+ ContextMenuNotificationObserver menu_observer(IDC_CONTENT_CONTEXT_COPY); |
+ SimulateRWHMouseClick(guest_web_contents()->GetRenderViewHost(), |
+ blink::WebMouseEvent::ButtonRight, 20, 20); |
+ ASSERT_TRUE(ctx_listener.WaitUntilSatisfied()); |
+ |
+ // Now verify that the selection text propagates properly to RWHV. |
+ content::RenderWidgetHostView* guest_rwhv = |
+ guest_web_contents()->GetRenderWidgetHostView(); |
+ ASSERT_TRUE(guest_rwhv); |
+ std::string selected_text = base::UTF16ToUTF8(guest_rwhv->GetSelectedText()); |
+ ASSERT_TRUE(selected_text.size() >= 10u); |
+ ASSERT_EQ("AAAAAAAAAA", selected_text.substr(0, 10)); |
+} |
+#endif |