OLD | NEW |
---|---|
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/location.h" | 5 #include "base/location.h" |
6 #include "base/single_thread_task_runner.h" | 6 #include "base/single_thread_task_runner.h" |
7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "base/thread_task_runner_handle.h" | 9 #include "base/thread_task_runner_handle.h" |
10 #include "chrome/app/chrome_command_ids.h" | 10 #include "chrome/app/chrome_command_ids.h" |
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
280 | 280 |
281 void SimulateRWHMouseClick(content::RenderWidgetHost* rwh, | 281 void SimulateRWHMouseClick(content::RenderWidgetHost* rwh, |
282 blink::WebMouseEvent::Button button, | 282 blink::WebMouseEvent::Button button, |
283 int x, | 283 int x, |
284 int y) { | 284 int y) { |
285 blink::WebMouseEvent mouse_event; | 285 blink::WebMouseEvent mouse_event; |
286 mouse_event.button = button; | 286 mouse_event.button = button; |
287 mouse_event.x = mouse_event.windowX = x; | 287 mouse_event.x = mouse_event.windowX = x; |
288 mouse_event.y = mouse_event.windowY = y; | 288 mouse_event.y = mouse_event.windowY = y; |
289 mouse_event.modifiers = 0; | 289 mouse_event.modifiers = 0; |
290 // Needed for the WebViewTest.ContextMenuPositionAfterCSSTransforms | |
291 gfx::Rect rect = rwh->GetView()->GetViewBounds(); | |
292 mouse_event.globalX = x + rwh->GetView()->GetViewBounds().x(); | |
lazyboy
2015/09/01 19:45:46
You want to use rect.x() and rect.y() here.
Ehsaan
2015/09/02 15:18:20
Done.
| |
293 mouse_event.globalY = y + rwh->GetView()->GetViewBounds().y(); | |
290 | 294 |
291 mouse_event.type = blink::WebInputEvent::MouseDown; | 295 mouse_event.type = blink::WebInputEvent::MouseDown; |
292 rwh->ForwardMouseEvent(mouse_event); | 296 rwh->ForwardMouseEvent(mouse_event); |
293 mouse_event.type = blink::WebInputEvent::MouseUp; | 297 mouse_event.type = blink::WebInputEvent::MouseUp; |
294 rwh->ForwardMouseEvent(mouse_event); | 298 rwh->ForwardMouseEvent(mouse_event); |
295 } | 299 } |
296 | 300 |
297 class PopupCreatedObserver { | 301 class PopupCreatedObserver { |
298 public: | 302 public: |
299 PopupCreatedObserver() | 303 PopupCreatedObserver() |
(...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
842 | 846 |
843 ContextMenuWaiter menu_observer(content::NotificationService::AllSources()); | 847 ContextMenuWaiter menu_observer(content::NotificationService::AllSources()); |
844 SimulateRWHMouseClick(guest_web_contents()->GetRenderViewHost(), | 848 SimulateRWHMouseClick(guest_web_contents()->GetRenderViewHost(), |
845 blink::WebMouseEvent::ButtonRight, 10, 20); | 849 blink::WebMouseEvent::ButtonRight, 10, 20); |
846 // Wait until the context menu is opened and closed. | 850 // Wait until the context menu is opened and closed. |
847 menu_observer.WaitForMenuOpenAndClose(); | 851 menu_observer.WaitForMenuOpenAndClose(); |
848 ASSERT_EQ(10, menu_observer.params().x); | 852 ASSERT_EQ(10, menu_observer.params().x); |
849 ASSERT_EQ(20, menu_observer.params().y); | 853 ASSERT_EQ(20, menu_observer.params().y); |
850 } | 854 } |
851 | 855 |
856 // Tests whether <webview> context menu sees <webview> local coordinates in its | |
857 // RenderViewContextMenu params, when it is subject to CSS transforms. | |
858 IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, | |
859 ContextMenuParamsAfterCSSTransforms) { | |
860 LoadAndLaunchPlatformApp("web_view/context_menus/coordinates_with_transforms", | |
861 "Launched"); | |
862 | |
863 if (embedder_web_contents_ == nullptr) | |
lazyboy
2015/09/01 19:45:47
nit: if (!embedder_web_contents_)
Ehsaan
2015/09/02 15:18:20
Done.
| |
864 embedder_web_contents_ = GetFirstAppWindowWebContents(); | |
865 EXPECT_TRUE(embedder_web_contents() != nullptr); | |
866 | |
867 if (guest_web_contents_ == nullptr) | |
868 guest_web_contents_ = GetGuestViewManager()->WaitForSingleGuestCreated(); | |
869 EXPECT_TRUE(guest_web_contents()); | |
870 | |
871 // We will send the input event to the embedder rather than the guest. This | |
872 // is a more realistic model of what happens in reality. We need to do this | |
873 // to make sure the MouseDown event is received at the | |
874 // RenderWidgetHostViewGuest for the embedder so that the | |
lazyboy
2015/09/01 19:45:47
embedder shouldn't have RWHVGuest, you mean just R
Ehsaan
2015/09/02 15:18:20
I mean, the View which takes BrowserPlugin's IPC f
| |
875 // ChromeWebViewGuestDelegate is notified about the potential position of the | |
876 // context menu. | |
877 std::vector<std::string> transforms = {"rotate(20deg)", "scale(1.5, 2.0)", | |
878 "translate(20px, 30px)", "NONE"}; | |
879 for (size_t index = 0; index < transforms.size(); ++index) { | |
880 std::string command = | |
881 base::StringPrintf("setTransform('%s')", transforms[index].c_str()); | |
882 scoped_ptr<ExtensionTestMessageListener> transform_set_listener( | |
lazyboy
2015/09/01 19:45:47
scoped_ptr seems unnecessary here, you can just us
Ehsaan
2015/09/02 15:18:20
Done.
| |
883 new ExtensionTestMessageListener("TRANSFORM_SET", false)); | |
884 EXPECT_TRUE(content::ExecuteScript(embedder_web_contents(), command)); | |
885 ASSERT_TRUE(transform_set_listener->WaitUntilSatisfied()); | |
886 gfx::Rect embedder_view_bounds = | |
887 embedder_web_contents()->GetRenderWidgetHostView()->GetViewBounds(); | |
888 gfx::Rect guest_view_bounds = | |
889 guest_web_contents()->GetRenderWidgetHostView()->GetViewBounds(); | |
890 | |
891 int windowX = 150, windowY = 150; | |
lazyboy
2015/09/01 19:45:46
nit: window_x, window_y, better set it as point gf
Ehsaan
2015/09/02 15:18:20
Done.
| |
892 ContextMenuWaiter menu_observer(content::NotificationService::AllSources()); | |
893 SimulateRWHMouseClick( | |
894 embedder_web_contents()->GetRenderViewHost(), | |
895 blink::WebMouseEvent::ButtonRight, | |
896 /* Using window coordinates for the embedder */ | |
897 windowX + guest_view_bounds.x() - embedder_view_bounds.x(), | |
898 windowY + guest_view_bounds.y() - embedder_view_bounds.y()); | |
899 | |
900 menu_observer.WaitForMenuOpenAndClose(); | |
901 EXPECT_EQ(menu_observer.params().x, windowX); | |
902 EXPECT_EQ(menu_observer.params().y, windowY); | |
903 } | |
904 } | |
905 | |
852 IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, ExecuteCode) { | 906 IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, ExecuteCode) { |
853 ASSERT_TRUE(RunPlatformAppTestWithArg( | 907 ASSERT_TRUE(RunPlatformAppTestWithArg( |
854 "platform_apps/web_view/common", "execute_code")) << message_; | 908 "platform_apps/web_view/common", "execute_code")) << message_; |
855 } | 909 } |
856 | 910 |
857 IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, PopupPositioningBasic) { | 911 IN_PROC_BROWSER_TEST_F(WebViewInteractiveTest, PopupPositioningBasic) { |
858 TestHelper("testBasic", "web_view/popup_positioning", NO_TEST_SERVER); | 912 TestHelper("testBasic", "web_view/popup_positioning", NO_TEST_SERVER); |
859 ASSERT_TRUE(guest_web_contents()); | 913 ASSERT_TRUE(guest_web_contents()); |
860 PopupTestHelper(gfx::Point()); | 914 PopupTestHelper(gfx::Point()); |
861 | 915 |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1151 | 1205 |
1152 // Now verify that the selection text propagates properly to RWHV. | 1206 // Now verify that the selection text propagates properly to RWHV. |
1153 content::RenderWidgetHostView* guest_rwhv = | 1207 content::RenderWidgetHostView* guest_rwhv = |
1154 guest_web_contents()->GetRenderWidgetHostView(); | 1208 guest_web_contents()->GetRenderWidgetHostView(); |
1155 ASSERT_TRUE(guest_rwhv); | 1209 ASSERT_TRUE(guest_rwhv); |
1156 std::string selected_text = base::UTF16ToUTF8(guest_rwhv->GetSelectedText()); | 1210 std::string selected_text = base::UTF16ToUTF8(guest_rwhv->GetSelectedText()); |
1157 ASSERT_TRUE(selected_text.size() >= 10u); | 1211 ASSERT_TRUE(selected_text.size() >= 10u); |
1158 ASSERT_EQ("AAAAAAAAAA", selected_text.substr(0, 10)); | 1212 ASSERT_EQ("AAAAAAAAAA", selected_text.substr(0, 10)); |
1159 } | 1213 } |
1160 #endif | 1214 #endif |
OLD | NEW |