OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/site_per_process_browsertest.h" | 5 #include "content/browser/site_per_process_browsertest.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 } | 162 } |
163 | 163 |
164 // Helper function to generate a click on the given RenderWidgetHost. The | 164 // Helper function to generate a click on the given RenderWidgetHost. The |
165 // mouse event is forwarded directly to the RenderWidgetHost without any | 165 // mouse event is forwarded directly to the RenderWidgetHost without any |
166 // hit-testing. | 166 // hit-testing. |
167 void SimulateMouseClick(RenderWidgetHost* rwh, int x, int y) { | 167 void SimulateMouseClick(RenderWidgetHost* rwh, int x, int y) { |
168 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseDown, | 168 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseDown, |
169 blink::WebInputEvent::NoModifiers, | 169 blink::WebInputEvent::NoModifiers, |
170 blink::WebInputEvent::TimeStampForTesting); | 170 blink::WebInputEvent::TimeStampForTesting); |
171 mouse_event.button = blink::WebPointerProperties::Button::Left; | 171 mouse_event.button = blink::WebPointerProperties::Button::Left; |
172 mouse_event.x = x; | 172 mouse_event.setPositionInWidget(x, y); |
173 mouse_event.y = y; | |
174 rwh->ForwardMouseEvent(mouse_event); | 173 rwh->ForwardMouseEvent(mouse_event); |
175 } | 174 } |
176 | 175 |
177 // Retrieve document.origin for the frame |ftn|. | 176 // Retrieve document.origin for the frame |ftn|. |
178 std::string GetDocumentOrigin(FrameTreeNode* ftn) { | 177 std::string GetDocumentOrigin(FrameTreeNode* ftn) { |
179 std::string origin; | 178 std::string origin; |
180 EXPECT_TRUE(ExecuteScriptAndExtractString( | 179 EXPECT_TRUE(ExecuteScriptAndExtractString( |
181 ftn, "domAutomationController.send(document.origin)", &origin)); | 180 ftn, "domAutomationController.send(document.origin)", &origin)); |
182 return origin; | 181 return origin; |
183 } | 182 } |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
302 // Get the view bounds of the child iframe, which should account for the | 301 // Get the view bounds of the child iframe, which should account for the |
303 // relative offset of its direct parent within the root frame, for use in | 302 // relative offset of its direct parent within the root frame, for use in |
304 // targeting the input event. | 303 // targeting the input event. |
305 gfx::Rect bounds = rwhv_child->GetViewBounds(); | 304 gfx::Rect bounds = rwhv_child->GetViewBounds(); |
306 | 305 |
307 // Target input event to child frame. | 306 // Target input event to child frame. |
308 blink::WebMouseEvent child_event(blink::WebInputEvent::MouseDown, | 307 blink::WebMouseEvent child_event(blink::WebInputEvent::MouseDown, |
309 blink::WebInputEvent::NoModifiers, | 308 blink::WebInputEvent::NoModifiers, |
310 blink::WebInputEvent::TimeStampForTesting); | 309 blink::WebInputEvent::TimeStampForTesting); |
311 child_event.button = blink::WebPointerProperties::Button::Left; | 310 child_event.button = blink::WebPointerProperties::Button::Left; |
312 child_event.x = | 311 child_event.setPositionInWidget( |
313 gfx::ToCeiledInt((bounds.x() - root_view->GetViewBounds().x()) / | 312 gfx::ToCeiledInt((bounds.x() - root_view->GetViewBounds().x()) / |
314 scale_factor) + | 313 scale_factor) + |
315 3; | 314 3, |
316 child_event.y = | |
317 gfx::ToCeiledInt((bounds.y() - root_view->GetViewBounds().y()) / | 315 gfx::ToCeiledInt((bounds.y() - root_view->GetViewBounds().y()) / |
318 scale_factor) + | 316 scale_factor) + |
319 3; | 317 3); |
320 child_event.clickCount = 1; | 318 child_event.clickCount = 1; |
321 main_frame_monitor.ResetEventReceived(); | 319 main_frame_monitor.ResetEventReceived(); |
322 child_frame_monitor.ResetEventReceived(); | 320 child_frame_monitor.ResetEventReceived(); |
323 router->RouteMouseEvent(root_view, &child_event, ui::LatencyInfo()); | 321 router->RouteMouseEvent(root_view, &child_event, ui::LatencyInfo()); |
324 | 322 |
325 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); | 323 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); |
326 // The expected result coordinates are (3, 3), but can get slightly | 324 // The expected result coordinates are (3, 3), but can get slightly |
327 // different results due to rounding error with some device scale factors. | 325 // different results due to rounding error with some device scale factors. |
328 EXPECT_TRUE(child_frame_monitor.event().x <= 5 && | 326 EXPECT_TRUE(child_frame_monitor.event().positionInWidget().x <= 5 && |
329 child_frame_monitor.event().x >= 1) | 327 child_frame_monitor.event().positionInWidget().x >= 1) |
330 << " actual event.x: " << child_frame_monitor.event().x; | 328 << " actual event.positionInWidget().x: " |
331 EXPECT_TRUE(child_frame_monitor.event().y <= 5 && | 329 << child_frame_monitor.event().positionInWidget().x; |
332 child_frame_monitor.event().y >= 1) | 330 EXPECT_TRUE(child_frame_monitor.event().positionInWidget().y <= 5 && |
333 << " actual event.y: " << child_frame_monitor.event().y; | 331 child_frame_monitor.event().positionInWidget().y >= 1) |
| 332 << " actual event.positionInWidget().y: " |
| 333 << child_frame_monitor.event().positionInWidget().y; |
334 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); | 334 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); |
335 | 335 |
336 child_frame_monitor.ResetEventReceived(); | 336 child_frame_monitor.ResetEventReceived(); |
337 main_frame_monitor.ResetEventReceived(); | 337 main_frame_monitor.ResetEventReceived(); |
338 | 338 |
339 // Target input event to main frame. | 339 // Target input event to main frame. |
340 blink::WebMouseEvent main_event(blink::WebInputEvent::MouseDown, | 340 blink::WebMouseEvent main_event(blink::WebInputEvent::MouseDown, |
341 blink::WebInputEvent::NoModifiers, | 341 blink::WebInputEvent::NoModifiers, |
342 blink::WebInputEvent::TimeStampForTesting); | 342 blink::WebInputEvent::TimeStampForTesting); |
343 main_event.button = blink::WebPointerProperties::Button::Left; | 343 main_event.button = blink::WebPointerProperties::Button::Left; |
344 main_event.x = 1; | 344 main_event.setPositionInWidget(1, 1); |
345 main_event.y = 1; | |
346 main_event.clickCount = 1; | 345 main_event.clickCount = 1; |
347 // Ladies and gentlemen, THIS is the main_event! | 346 // Ladies and gentlemen, THIS is the main_event! |
348 router->RouteMouseEvent(root_view, &main_event, ui::LatencyInfo()); | 347 router->RouteMouseEvent(root_view, &main_event, ui::LatencyInfo()); |
349 | 348 |
350 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); | 349 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); |
351 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); | 350 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); |
352 EXPECT_EQ(1, main_frame_monitor.event().x); | 351 EXPECT_EQ(1, main_frame_monitor.event().positionInWidget().x); |
353 EXPECT_EQ(1, main_frame_monitor.event().y); | 352 EXPECT_EQ(1, main_frame_monitor.event().positionInWidget().y); |
354 } | 353 } |
355 | 354 |
356 class RedirectNotificationObserver : public NotificationObserver { | 355 class RedirectNotificationObserver : public NotificationObserver { |
357 public: | 356 public: |
358 // Register to listen for notifications of the given type from either a | 357 // Register to listen for notifications of the given type from either a |
359 // specific source, or from all sources if |source| is | 358 // specific source, or from all sources if |source| is |
360 // NotificationService::AllSources(). | 359 // NotificationService::AllSources(). |
361 RedirectNotificationObserver(int notification_type, | 360 RedirectNotificationObserver(int notification_type, |
362 const NotificationSource& source); | 361 const NotificationSource& source); |
363 ~RedirectNotificationObserver() override; | 362 ~RedirectNotificationObserver() override; |
(...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1064 scoped_refptr<FrameRectChangedMessageFilter> filter = | 1063 scoped_refptr<FrameRectChangedMessageFilter> filter = |
1065 new FrameRectChangedMessageFilter(); | 1064 new FrameRectChangedMessageFilter(); |
1066 root->current_frame_host()->GetProcess()->AddFilter(filter.get()); | 1065 root->current_frame_host()->GetProcess()->AddFilter(filter.get()); |
1067 | 1066 |
1068 // Scroll the parent frame downward to verify that the child rect gets updated | 1067 // Scroll the parent frame downward to verify that the child rect gets updated |
1069 // correctly. | 1068 // correctly. |
1070 blink::WebMouseWheelEvent scroll_event( | 1069 blink::WebMouseWheelEvent scroll_event( |
1071 blink::WebInputEvent::MouseWheel, blink::WebInputEvent::NoModifiers, | 1070 blink::WebInputEvent::MouseWheel, blink::WebInputEvent::NoModifiers, |
1072 blink::WebInputEvent::TimeStampForTesting); | 1071 blink::WebInputEvent::TimeStampForTesting); |
1073 | 1072 |
1074 scroll_event.x = gfx::ToFlooredInt( | 1073 scroll_event.setPositionInWidget( |
1075 (bounds.x() - rwhv_root->GetViewBounds().x() - 5) / scale_factor); | 1074 gfx::ToFlooredInt((bounds.x() - rwhv_root->GetViewBounds().x() - 5) / |
1076 scroll_event.y = gfx::ToFlooredInt( | 1075 scale_factor), |
1077 (bounds.y() - rwhv_root->GetViewBounds().y() - 5) / scale_factor); | 1076 gfx::ToFlooredInt((bounds.y() - rwhv_root->GetViewBounds().y() - 5) / |
| 1077 scale_factor)); |
1078 scroll_event.deltaX = 0.0f; | 1078 scroll_event.deltaX = 0.0f; |
1079 scroll_event.deltaY = -30.0f; | 1079 scroll_event.deltaY = -30.0f; |
1080 rwhv_root->ProcessMouseWheelEvent(scroll_event, ui::LatencyInfo()); | 1080 rwhv_root->ProcessMouseWheelEvent(scroll_event, ui::LatencyInfo()); |
1081 | 1081 |
1082 filter->Wait(); | 1082 filter->Wait(); |
1083 | 1083 |
1084 // The precise amount of scroll for the first view position update is not | 1084 // The precise amount of scroll for the first view position update is not |
1085 // deterministic, so this simply verifies that the OOPIF moved from its | 1085 // deterministic, so this simply verifies that the OOPIF moved from its |
1086 // earlier position. | 1086 // earlier position. |
1087 gfx::Rect update_rect = filter->last_rect(); | 1087 gfx::Rect update_rect = filter->last_rect(); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1150 // Save the original offset as a point of reference. | 1150 // Save the original offset as a point of reference. |
1151 filter->Wait(); | 1151 filter->Wait(); |
1152 gfx::Rect update_rect = filter->last_rect(); | 1152 gfx::Rect update_rect = filter->last_rect(); |
1153 int initial_y = update_rect.y(); | 1153 int initial_y = update_rect.y(); |
1154 filter->Reset(); | 1154 filter->Reset(); |
1155 | 1155 |
1156 // Scroll the parent frame downward. | 1156 // Scroll the parent frame downward. |
1157 blink::WebMouseWheelEvent scroll_event( | 1157 blink::WebMouseWheelEvent scroll_event( |
1158 blink::WebInputEvent::MouseWheel, blink::WebInputEvent::NoModifiers, | 1158 blink::WebInputEvent::MouseWheel, blink::WebInputEvent::NoModifiers, |
1159 blink::WebInputEvent::TimeStampForTesting); | 1159 blink::WebInputEvent::TimeStampForTesting); |
1160 scroll_event.x = 1; | 1160 scroll_event.setPositionInWidget(1, 1); |
1161 scroll_event.y = 1; | |
1162 scroll_event.deltaX = 0.0f; | 1161 scroll_event.deltaX = 0.0f; |
1163 scroll_event.deltaY = -5.0f; | 1162 scroll_event.deltaY = -5.0f; |
1164 rwhv_parent->ProcessMouseWheelEvent(scroll_event, ui::LatencyInfo()); | 1163 rwhv_parent->ProcessMouseWheelEvent(scroll_event, ui::LatencyInfo()); |
1165 | 1164 |
1166 // Ensure that the view position is propagated to the child properly. | 1165 // Ensure that the view position is propagated to the child properly. |
1167 filter->Wait(); | 1166 filter->Wait(); |
1168 update_rect = filter->last_rect(); | 1167 update_rect = filter->last_rect(); |
1169 EXPECT_LT(update_rect.y(), initial_y); | 1168 EXPECT_LT(update_rect.y(), initial_y); |
1170 filter->Reset(); | 1169 filter->Reset(); |
1171 | 1170 |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1390 // Get the view bounds of the nested iframe, which should account for the | 1389 // Get the view bounds of the nested iframe, which should account for the |
1391 // relative offset of its direct parent within the root frame, for use in | 1390 // relative offset of its direct parent within the root frame, for use in |
1392 // targeting the input event. | 1391 // targeting the input event. |
1393 gfx::Rect bounds = rwhv_nested->GetViewBounds(); | 1392 gfx::Rect bounds = rwhv_nested->GetViewBounds(); |
1394 | 1393 |
1395 // Target input event to nested frame. | 1394 // Target input event to nested frame. |
1396 blink::WebMouseEvent nested_event(blink::WebInputEvent::MouseDown, | 1395 blink::WebMouseEvent nested_event(blink::WebInputEvent::MouseDown, |
1397 blink::WebInputEvent::NoModifiers, | 1396 blink::WebInputEvent::NoModifiers, |
1398 blink::WebInputEvent::TimeStampForTesting); | 1397 blink::WebInputEvent::TimeStampForTesting); |
1399 nested_event.button = blink::WebPointerProperties::Button::Left; | 1398 nested_event.button = blink::WebPointerProperties::Button::Left; |
1400 nested_event.x = | 1399 nested_event.setPositionInWidget( |
1401 gfx::ToCeiledInt((bounds.x() - root_view->GetViewBounds().x()) / | 1400 gfx::ToCeiledInt((bounds.x() - root_view->GetViewBounds().x()) / |
1402 scale_factor) + | 1401 scale_factor) + |
1403 5; | 1402 5, |
1404 nested_event.y = | |
1405 gfx::ToCeiledInt((bounds.y() - root_view->GetViewBounds().y()) / | 1403 gfx::ToCeiledInt((bounds.y() - root_view->GetViewBounds().y()) / |
1406 scale_factor) + | 1404 scale_factor) + |
1407 5; | 1405 5); |
1408 nested_event.clickCount = 1; | 1406 nested_event.clickCount = 1; |
1409 nested_frame_monitor.ResetEventReceived(); | 1407 nested_frame_monitor.ResetEventReceived(); |
1410 main_frame_monitor.ResetEventReceived(); | 1408 main_frame_monitor.ResetEventReceived(); |
1411 router->RouteMouseEvent(root_view, &nested_event, ui::LatencyInfo()); | 1409 router->RouteMouseEvent(root_view, &nested_event, ui::LatencyInfo()); |
1412 | 1410 |
1413 EXPECT_TRUE(nested_frame_monitor.EventWasReceived()); | 1411 EXPECT_TRUE(nested_frame_monitor.EventWasReceived()); |
1414 // The expected result coordinates are (5, 5), but can get slightly | 1412 // The expected result coordinates are (5, 5), but can get slightly |
1415 // different results due to rounding error with some device scale factors. | 1413 // different results due to rounding error with some device scale factors. |
1416 EXPECT_TRUE(nested_frame_monitor.event().x <= 6 && | 1414 EXPECT_TRUE(nested_frame_monitor.event().positionInWidget().x <= 6 && |
1417 nested_frame_monitor.event().x >= 4) | 1415 nested_frame_monitor.event().positionInWidget().x >= 4) |
1418 << " actual event.x: " << nested_frame_monitor.event().x; | 1416 << " actual event.positionInWidget().x: " |
1419 EXPECT_TRUE(nested_frame_monitor.event().y <= 6 && | 1417 << nested_frame_monitor.event().positionInWidget().x; |
1420 nested_frame_monitor.event().y >= 4) | 1418 EXPECT_TRUE(nested_frame_monitor.event().positionInWidget().y <= 6 && |
1421 << " actual event.y: " << nested_frame_monitor.event().y; | 1419 nested_frame_monitor.event().positionInWidget().y >= 4) |
| 1420 << " actual event.positionInWidget().y: " |
| 1421 << nested_frame_monitor.event().positionInWidget().y; |
1422 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); | 1422 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); |
1423 } | 1423 } |
1424 | 1424 |
1425 // This test tests that browser process hittesting ignores frames with | 1425 // This test tests that browser process hittesting ignores frames with |
1426 // pointer-events: none. | 1426 // pointer-events: none. |
1427 #if defined(OS_ANDROID) | 1427 #if defined(OS_ANDROID) |
1428 // Test failing on some Android builders, due to inaccurate coordinates on | 1428 // Test failing on some Android builders, due to inaccurate coordinates on |
1429 // some devices. See: https://crbug.com/700007. | 1429 // some devices. See: https://crbug.com/700007. |
1430 #define MAYBE_SurfaceHitTestPointerEventsNone \ | 1430 #define MAYBE_SurfaceHitTestPointerEventsNone \ |
1431 DISABLED_SurfaceHitTestPointerEventsNone | 1431 DISABLED_SurfaceHitTestPointerEventsNone |
(...skipping 28 matching lines...) Expand all Loading... |
1460 RenderWidgetHostViewBase* root_view = static_cast<RenderWidgetHostViewBase*>( | 1460 RenderWidgetHostViewBase* root_view = static_cast<RenderWidgetHostViewBase*>( |
1461 root->current_frame_host()->GetRenderWidgetHost()->GetView()); | 1461 root->current_frame_host()->GetRenderWidgetHost()->GetView()); |
1462 | 1462 |
1463 WaitForChildFrameSurfaceReady(child_node->current_frame_host()); | 1463 WaitForChildFrameSurfaceReady(child_node->current_frame_host()); |
1464 | 1464 |
1465 // Target input event to child frame. | 1465 // Target input event to child frame. |
1466 blink::WebMouseEvent child_event(blink::WebInputEvent::MouseDown, | 1466 blink::WebMouseEvent child_event(blink::WebInputEvent::MouseDown, |
1467 blink::WebInputEvent::NoModifiers, | 1467 blink::WebInputEvent::NoModifiers, |
1468 blink::WebInputEvent::TimeStampForTesting); | 1468 blink::WebInputEvent::TimeStampForTesting); |
1469 child_event.button = blink::WebPointerProperties::Button::Left; | 1469 child_event.button = blink::WebPointerProperties::Button::Left; |
1470 child_event.x = 75; | 1470 child_event.setPositionInWidget(75, 75); |
1471 child_event.y = 75; | |
1472 child_event.clickCount = 1; | 1471 child_event.clickCount = 1; |
1473 main_frame_monitor.ResetEventReceived(); | 1472 main_frame_monitor.ResetEventReceived(); |
1474 child_frame_monitor.ResetEventReceived(); | 1473 child_frame_monitor.ResetEventReceived(); |
1475 router->RouteMouseEvent(root_view, &child_event, ui::LatencyInfo()); | 1474 router->RouteMouseEvent(root_view, &child_event, ui::LatencyInfo()); |
1476 | 1475 |
1477 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); | 1476 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); |
1478 EXPECT_EQ(75, main_frame_monitor.event().x); | 1477 EXPECT_EQ(75, main_frame_monitor.event().positionInWidget().x); |
1479 EXPECT_EQ(75, main_frame_monitor.event().y); | 1478 EXPECT_EQ(75, main_frame_monitor.event().positionInWidget().y); |
1480 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); | 1479 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); |
1481 } | 1480 } |
1482 | 1481 |
1483 // This test verifies that MouseEnter and MouseLeave events fire correctly | 1482 // This test verifies that MouseEnter and MouseLeave events fire correctly |
1484 // when the mouse cursor moves between processes. | 1483 // when the mouse cursor moves between processes. |
1485 #if defined(OS_ANDROID) | 1484 #if defined(OS_ANDROID) |
1486 // Test failing on some Android builders, due to inaccurate coordinates on | 1485 // Test failing on some Android builders, due to inaccurate coordinates on |
1487 // some devices. See: https://crbug.com/700007. | 1486 // some devices. See: https://crbug.com/700007. |
1488 #define MAYBE_CrossProcessMouseEnterAndLeaveTest \ | 1487 #define MAYBE_CrossProcessMouseEnterAndLeaveTest \ |
1489 DISABLED_CrossProcessMouseEnterAndLeaveTest | 1488 DISABLED_CrossProcessMouseEnterAndLeaveTest |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1555 gfx::Point point_in_b_frame( | 1554 gfx::Point point_in_b_frame( |
1556 gfx::ToCeiledInt((b_bounds.x() - a_bounds.x()) / scale_factor) + 25, | 1555 gfx::ToCeiledInt((b_bounds.x() - a_bounds.x()) / scale_factor) + 25, |
1557 gfx::ToCeiledInt((b_bounds.y() - a_bounds.y()) / scale_factor) + 25); | 1556 gfx::ToCeiledInt((b_bounds.y() - a_bounds.y()) / scale_factor) + 25); |
1558 gfx::Point point_in_d_frame( | 1557 gfx::Point point_in_d_frame( |
1559 gfx::ToCeiledInt((d_bounds.x() - a_bounds.x()) / scale_factor) + 25, | 1558 gfx::ToCeiledInt((d_bounds.x() - a_bounds.x()) / scale_factor) + 25, |
1560 gfx::ToCeiledInt((d_bounds.y() - a_bounds.y()) / scale_factor) + 25); | 1559 gfx::ToCeiledInt((d_bounds.y() - a_bounds.y()) / scale_factor) + 25); |
1561 | 1560 |
1562 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseMove, | 1561 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseMove, |
1563 blink::WebInputEvent::NoModifiers, | 1562 blink::WebInputEvent::NoModifiers, |
1564 blink::WebInputEvent::TimeStampForTesting); | 1563 blink::WebInputEvent::TimeStampForTesting); |
1565 mouse_event.x = point_in_a_frame.x(); | 1564 mouse_event.setPositionInWidget(point_in_a_frame.x(), point_in_a_frame.y()); |
1566 mouse_event.y = point_in_a_frame.y(); | |
1567 | 1565 |
1568 // Send an initial MouseMove to the root view, which shouldn't affect the | 1566 // Send an initial MouseMove to the root view, which shouldn't affect the |
1569 // other renderers. | 1567 // other renderers. |
1570 web_contents()->GetInputEventRouter()->RouteMouseEvent(rwhv_a, &mouse_event, | 1568 web_contents()->GetInputEventRouter()->RouteMouseEvent(rwhv_a, &mouse_event, |
1571 ui::LatencyInfo()); | 1569 ui::LatencyInfo()); |
1572 EXPECT_TRUE(a_frame_monitor.EventWasReceived()); | 1570 EXPECT_TRUE(a_frame_monitor.EventWasReceived()); |
1573 a_frame_monitor.ResetEventReceived(); | 1571 a_frame_monitor.ResetEventReceived(); |
1574 EXPECT_FALSE(b_frame_monitor.EventWasReceived()); | 1572 EXPECT_FALSE(b_frame_monitor.EventWasReceived()); |
1575 EXPECT_FALSE(c_frame_monitor.EventWasReceived()); | 1573 EXPECT_FALSE(c_frame_monitor.EventWasReceived()); |
1576 EXPECT_FALSE(d_frame_monitor.EventWasReceived()); | 1574 EXPECT_FALSE(d_frame_monitor.EventWasReceived()); |
1577 | 1575 |
1578 // Next send a MouseMove to B frame, which shouldn't affect C or D but | 1576 // Next send a MouseMove to B frame, which shouldn't affect C or D but |
1579 // A should receive a MouseMove event. | 1577 // A should receive a MouseMove event. |
1580 mouse_event.x = point_in_b_frame.x(); | 1578 mouse_event.setPositionInWidget(point_in_b_frame.x(), point_in_b_frame.y()); |
1581 mouse_event.y = point_in_b_frame.y(); | |
1582 web_contents()->GetInputEventRouter()->RouteMouseEvent(rwhv_a, &mouse_event, | 1579 web_contents()->GetInputEventRouter()->RouteMouseEvent(rwhv_a, &mouse_event, |
1583 ui::LatencyInfo()); | 1580 ui::LatencyInfo()); |
1584 EXPECT_TRUE(a_frame_monitor.EventWasReceived()); | 1581 EXPECT_TRUE(a_frame_monitor.EventWasReceived()); |
1585 EXPECT_EQ(a_frame_monitor.event().type(), blink::WebInputEvent::MouseMove); | 1582 EXPECT_EQ(a_frame_monitor.event().type(), blink::WebInputEvent::MouseMove); |
1586 a_frame_monitor.ResetEventReceived(); | 1583 a_frame_monitor.ResetEventReceived(); |
1587 EXPECT_TRUE(b_frame_monitor.EventWasReceived()); | 1584 EXPECT_TRUE(b_frame_monitor.EventWasReceived()); |
1588 b_frame_monitor.ResetEventReceived(); | 1585 b_frame_monitor.ResetEventReceived(); |
1589 EXPECT_FALSE(c_frame_monitor.EventWasReceived()); | 1586 EXPECT_FALSE(c_frame_monitor.EventWasReceived()); |
1590 EXPECT_FALSE(d_frame_monitor.EventWasReceived()); | 1587 EXPECT_FALSE(d_frame_monitor.EventWasReceived()); |
1591 | 1588 |
1592 // Next send a MouseMove to D frame, which should have side effects in every | 1589 // Next send a MouseMove to D frame, which should have side effects in every |
1593 // other RenderWidgetHostView. | 1590 // other RenderWidgetHostView. |
1594 mouse_event.x = point_in_d_frame.x(); | 1591 mouse_event.setPositionInWidget(point_in_d_frame.x(), point_in_d_frame.y()); |
1595 mouse_event.y = point_in_d_frame.y(); | |
1596 web_contents()->GetInputEventRouter()->RouteMouseEvent(rwhv_a, &mouse_event, | 1592 web_contents()->GetInputEventRouter()->RouteMouseEvent(rwhv_a, &mouse_event, |
1597 ui::LatencyInfo()); | 1593 ui::LatencyInfo()); |
1598 EXPECT_TRUE(a_frame_monitor.EventWasReceived()); | 1594 EXPECT_TRUE(a_frame_monitor.EventWasReceived()); |
1599 EXPECT_EQ(a_frame_monitor.event().type(), blink::WebInputEvent::MouseMove); | 1595 EXPECT_EQ(a_frame_monitor.event().type(), blink::WebInputEvent::MouseMove); |
1600 EXPECT_TRUE(b_frame_monitor.EventWasReceived()); | 1596 EXPECT_TRUE(b_frame_monitor.EventWasReceived()); |
1601 EXPECT_EQ(b_frame_monitor.event().type(), blink::WebInputEvent::MouseLeave); | 1597 EXPECT_EQ(b_frame_monitor.event().type(), blink::WebInputEvent::MouseLeave); |
1602 EXPECT_TRUE(c_frame_monitor.EventWasReceived()); | 1598 EXPECT_TRUE(c_frame_monitor.EventWasReceived()); |
1603 EXPECT_EQ(c_frame_monitor.event().type(), blink::WebInputEvent::MouseMove); | 1599 EXPECT_EQ(c_frame_monitor.event().type(), blink::WebInputEvent::MouseMove); |
1604 EXPECT_TRUE(d_frame_monitor.EventWasReceived()); | 1600 EXPECT_TRUE(d_frame_monitor.EventWasReceived()); |
1605 } | 1601 } |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1659 int child_frame_target_y = | 1655 int child_frame_target_y = |
1660 gfx::ToCeiledInt((bounds.y() - root_view->GetViewBounds().y()) / | 1656 gfx::ToCeiledInt((bounds.y() - root_view->GetViewBounds().y()) / |
1661 scale_factor) + | 1657 scale_factor) + |
1662 5; | 1658 5; |
1663 | 1659 |
1664 // Target MouseDown to child frame. | 1660 // Target MouseDown to child frame. |
1665 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseDown, | 1661 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseDown, |
1666 blink::WebInputEvent::NoModifiers, | 1662 blink::WebInputEvent::NoModifiers, |
1667 blink::WebInputEvent::TimeStampForTesting); | 1663 blink::WebInputEvent::TimeStampForTesting); |
1668 mouse_event.button = blink::WebPointerProperties::Button::Left; | 1664 mouse_event.button = blink::WebPointerProperties::Button::Left; |
1669 mouse_event.x = child_frame_target_x; | 1665 mouse_event.setPositionInWidget(child_frame_target_x, child_frame_target_y); |
1670 mouse_event.y = child_frame_target_y; | |
1671 mouse_event.clickCount = 1; | 1666 mouse_event.clickCount = 1; |
1672 main_frame_monitor.ResetEventReceived(); | 1667 main_frame_monitor.ResetEventReceived(); |
1673 child_frame_monitor.ResetEventReceived(); | 1668 child_frame_monitor.ResetEventReceived(); |
1674 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1669 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
1675 | 1670 |
1676 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); | 1671 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); |
1677 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); | 1672 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); |
1678 | 1673 |
1679 // Target MouseMove to main frame. This should still be routed to the | 1674 // Target MouseMove to main frame. This should still be routed to the |
1680 // child frame because it is now capturing mouse input. | 1675 // child frame because it is now capturing mouse input. |
1681 mouse_event.setType(blink::WebInputEvent::MouseMove); | 1676 mouse_event.setType(blink::WebInputEvent::MouseMove); |
1682 mouse_event.setModifiers(blink::WebInputEvent::LeftButtonDown); | 1677 mouse_event.setModifiers(blink::WebInputEvent::LeftButtonDown); |
1683 mouse_event.x = 1; | 1678 mouse_event.setPositionInWidget(1, 1); |
1684 mouse_event.y = 1; | |
1685 // Note that this event is sent twice, with the monitors cleared after | 1679 // Note that this event is sent twice, with the monitors cleared after |
1686 // the first time, because the first MouseMove to the child frame | 1680 // the first time, because the first MouseMove to the child frame |
1687 // causes a MouseMove to be sent to the main frame also, which we | 1681 // causes a MouseMove to be sent to the main frame also, which we |
1688 // need to ignore. | 1682 // need to ignore. |
1689 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1683 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
1690 main_frame_monitor.ResetEventReceived(); | 1684 main_frame_monitor.ResetEventReceived(); |
1691 child_frame_monitor.ResetEventReceived(); | 1685 child_frame_monitor.ResetEventReceived(); |
1692 mouse_event.x = 1; | 1686 mouse_event.setPositionInWidget(1, 2); |
1693 mouse_event.y = 2; | |
1694 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1687 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
1695 | 1688 |
1696 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); | 1689 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); |
1697 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); | 1690 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); |
1698 | 1691 |
1699 // A MouseUp to the child frame should cancel the mouse capture. | 1692 // A MouseUp to the child frame should cancel the mouse capture. |
1700 mouse_event.setType(blink::WebInputEvent::MouseUp); | 1693 mouse_event.setType(blink::WebInputEvent::MouseUp); |
1701 mouse_event.setModifiers(blink::WebInputEvent::NoModifiers); | 1694 mouse_event.setModifiers(blink::WebInputEvent::NoModifiers); |
1702 mouse_event.x = child_frame_target_x; | 1695 mouse_event.setPositionInWidget(child_frame_target_x, child_frame_target_y); |
1703 mouse_event.y = child_frame_target_y; | |
1704 main_frame_monitor.ResetEventReceived(); | 1696 main_frame_monitor.ResetEventReceived(); |
1705 child_frame_monitor.ResetEventReceived(); | 1697 child_frame_monitor.ResetEventReceived(); |
1706 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1698 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
1707 | 1699 |
1708 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); | 1700 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); |
1709 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); | 1701 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); |
1710 | 1702 |
1711 // Subsequent MouseMove events targeted to the main frame should be routed | 1703 // Subsequent MouseMove events targeted to the main frame should be routed |
1712 // to that frame. | 1704 // to that frame. |
1713 mouse_event.setType(blink::WebInputEvent::MouseMove); | 1705 mouse_event.setType(blink::WebInputEvent::MouseMove); |
1714 mouse_event.x = 1; | 1706 mouse_event.setPositionInWidget(1, 3); |
1715 mouse_event.y = 3; | |
1716 // Sending the MouseMove twice for the same reason as above. | 1707 // Sending the MouseMove twice for the same reason as above. |
1717 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1708 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
1718 main_frame_monitor.ResetEventReceived(); | 1709 main_frame_monitor.ResetEventReceived(); |
1719 child_frame_monitor.ResetEventReceived(); | 1710 child_frame_monitor.ResetEventReceived(); |
1720 mouse_event.x = 1; | 1711 mouse_event.setPositionInWidget(1, 4); |
1721 mouse_event.y = 4; | |
1722 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1712 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
1723 | 1713 |
1724 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); | 1714 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); |
1725 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); | 1715 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); |
1726 | 1716 |
1727 // Target MouseDown to the main frame to cause it to capture input. | 1717 // Target MouseDown to the main frame to cause it to capture input. |
1728 mouse_event.setType(blink::WebInputEvent::MouseDown); | 1718 mouse_event.setType(blink::WebInputEvent::MouseDown); |
1729 mouse_event.x = 1; | 1719 mouse_event.setPositionInWidget(1, 1); |
1730 mouse_event.y = 1; | |
1731 main_frame_monitor.ResetEventReceived(); | 1720 main_frame_monitor.ResetEventReceived(); |
1732 child_frame_monitor.ResetEventReceived(); | 1721 child_frame_monitor.ResetEventReceived(); |
1733 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1722 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
1734 | 1723 |
1735 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); | 1724 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); |
1736 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); | 1725 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); |
1737 | 1726 |
1738 // Sending a MouseMove to the child frame should still result in the main | 1727 // Sending a MouseMove to the child frame should still result in the main |
1739 // frame receiving the event. | 1728 // frame receiving the event. |
1740 mouse_event.setType(blink::WebInputEvent::MouseMove); | 1729 mouse_event.setType(blink::WebInputEvent::MouseMove); |
1741 mouse_event.setModifiers(blink::WebInputEvent::LeftButtonDown); | 1730 mouse_event.setModifiers(blink::WebInputEvent::LeftButtonDown); |
1742 mouse_event.x = child_frame_target_x; | 1731 mouse_event.setPositionInWidget(child_frame_target_x, child_frame_target_y); |
1743 mouse_event.y = child_frame_target_y; | |
1744 main_frame_monitor.ResetEventReceived(); | 1732 main_frame_monitor.ResetEventReceived(); |
1745 child_frame_monitor.ResetEventReceived(); | 1733 child_frame_monitor.ResetEventReceived(); |
1746 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1734 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
1747 | 1735 |
1748 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); | 1736 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); |
1749 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); | 1737 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); |
1750 } | 1738 } |
1751 | 1739 |
1752 // Tests OOPIF rendering by checking that the RWH of the iframe generates | 1740 // Tests OOPIF rendering by checking that the RWH of the iframe generates |
1753 // OnSwapCompositorFrame message. | 1741 // OnSwapCompositorFrame message. |
(...skipping 3658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5412 child_node->current_frame_host()->GetSiteInstance()); | 5400 child_node->current_frame_host()->GetSiteInstance()); |
5413 | 5401 |
5414 scoped_refptr<CursorMessageFilter> filter = new CursorMessageFilter(); | 5402 scoped_refptr<CursorMessageFilter> filter = new CursorMessageFilter(); |
5415 child_node->current_frame_host()->GetProcess()->AddFilter(filter.get()); | 5403 child_node->current_frame_host()->GetProcess()->AddFilter(filter.get()); |
5416 | 5404 |
5417 // Send a MouseMove to the subframe. The frame contains text, and moving the | 5405 // Send a MouseMove to the subframe. The frame contains text, and moving the |
5418 // mouse over it should cause the renderer to send a mouse cursor update. | 5406 // mouse over it should cause the renderer to send a mouse cursor update. |
5419 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseMove, | 5407 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseMove, |
5420 blink::WebInputEvent::NoModifiers, | 5408 blink::WebInputEvent::NoModifiers, |
5421 blink::WebInputEvent::TimeStampForTesting); | 5409 blink::WebInputEvent::TimeStampForTesting); |
5422 mouse_event.x = 60; | 5410 mouse_event.setPositionInWidget(60, 60); |
5423 mouse_event.y = 60; | |
5424 RenderWidgetHost* rwh_child = | 5411 RenderWidgetHost* rwh_child = |
5425 root->child_at(0)->current_frame_host()->GetRenderWidgetHost(); | 5412 root->child_at(0)->current_frame_host()->GetRenderWidgetHost(); |
5426 RenderWidgetHostViewBase* root_view = static_cast<RenderWidgetHostViewBase*>( | 5413 RenderWidgetHostViewBase* root_view = static_cast<RenderWidgetHostViewBase*>( |
5427 root->current_frame_host()->GetRenderWidgetHost()->GetView()); | 5414 root->current_frame_host()->GetRenderWidgetHost()->GetView()); |
5428 web_contents()->GetInputEventRouter()->RouteMouseEvent( | 5415 web_contents()->GetInputEventRouter()->RouteMouseEvent( |
5429 root_view, &mouse_event, ui::LatencyInfo()); | 5416 root_view, &mouse_event, ui::LatencyInfo()); |
5430 | 5417 |
5431 // CursorMessageFilter::Wait() implicitly tests whether we receive a | 5418 // CursorMessageFilter::Wait() implicitly tests whether we receive a |
5432 // ViewHostMsg_SetCursor message from the renderer process, because it does | 5419 // ViewHostMsg_SetCursor message from the renderer process, because it does |
5433 // does not return otherwise. | 5420 // does not return otherwise. |
(...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6194 | 6181 |
6195 gfx::Point point( | 6182 gfx::Point point( |
6196 gfx::ToCeiledInt((bounds.x() - root_bounds.x()) / scale_factor) + 10, | 6183 gfx::ToCeiledInt((bounds.x() - root_bounds.x()) / scale_factor) + 10, |
6197 gfx::ToCeiledInt((bounds.y() - root_bounds.y()) / scale_factor) + 10); | 6184 gfx::ToCeiledInt((bounds.y() - root_bounds.y()) / scale_factor) + 10); |
6198 | 6185 |
6199 // Target right-click event to child frame. | 6186 // Target right-click event to child frame. |
6200 blink::WebMouseEvent click_event(blink::WebInputEvent::MouseDown, | 6187 blink::WebMouseEvent click_event(blink::WebInputEvent::MouseDown, |
6201 blink::WebInputEvent::NoModifiers, | 6188 blink::WebInputEvent::NoModifiers, |
6202 blink::WebInputEvent::TimeStampForTesting); | 6189 blink::WebInputEvent::TimeStampForTesting); |
6203 click_event.button = blink::WebPointerProperties::Button::Right; | 6190 click_event.button = blink::WebPointerProperties::Button::Right; |
6204 click_event.x = point.x(); | 6191 click_event.setPositionInWidget(point.x(), point.y()); |
6205 click_event.y = point.y(); | |
6206 click_event.clickCount = 1; | 6192 click_event.clickCount = 1; |
6207 router->RouteMouseEvent(root_view, &click_event, ui::LatencyInfo()); | 6193 router->RouteMouseEvent(root_view, &click_event, ui::LatencyInfo()); |
6208 | 6194 |
6209 // We also need a MouseUp event, needed by Windows. | 6195 // We also need a MouseUp event, needed by Windows. |
6210 click_event.setType(blink::WebInputEvent::MouseUp); | 6196 click_event.setType(blink::WebInputEvent::MouseUp); |
6211 click_event.x = point.x(); | 6197 click_event.setPositionInWidget(point.x(), point.y()); |
6212 click_event.y = point.y(); | |
6213 router->RouteMouseEvent(root_view, &click_event, ui::LatencyInfo()); | 6198 router->RouteMouseEvent(root_view, &click_event, ui::LatencyInfo()); |
6214 | 6199 |
6215 context_menu_delegate.Wait(); | 6200 context_menu_delegate.Wait(); |
6216 | 6201 |
6217 ContextMenuParams params = context_menu_delegate.getParams(); | 6202 ContextMenuParams params = context_menu_delegate.getParams(); |
6218 | 6203 |
6219 EXPECT_EQ(point.x(), params.x); | 6204 EXPECT_EQ(point.x(), params.x); |
6220 EXPECT_EQ(point.y(), params.y); | 6205 EXPECT_EQ(point.y(), params.y); |
6221 } | 6206 } |
6222 | 6207 |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6348 child_node->current_frame_host()->GetSiteInstance()); | 6333 child_node->current_frame_host()->GetSiteInstance()); |
6349 | 6334 |
6350 scoped_refptr<ShowWidgetMessageFilter> filter = new ShowWidgetMessageFilter(); | 6335 scoped_refptr<ShowWidgetMessageFilter> filter = new ShowWidgetMessageFilter(); |
6351 child_node->current_frame_host()->GetProcess()->AddFilter(filter.get()); | 6336 child_node->current_frame_host()->GetProcess()->AddFilter(filter.get()); |
6352 | 6337 |
6353 // Target left-click event to child frame. | 6338 // Target left-click event to child frame. |
6354 blink::WebMouseEvent click_event(blink::WebInputEvent::MouseDown, | 6339 blink::WebMouseEvent click_event(blink::WebInputEvent::MouseDown, |
6355 blink::WebInputEvent::NoModifiers, | 6340 blink::WebInputEvent::NoModifiers, |
6356 blink::WebInputEvent::TimeStampForTesting); | 6341 blink::WebInputEvent::TimeStampForTesting); |
6357 click_event.button = blink::WebPointerProperties::Button::Left; | 6342 click_event.button = blink::WebPointerProperties::Button::Left; |
6358 click_event.x = 15; | 6343 click_event.setPositionInWidget(15, 15); |
6359 click_event.y = 15; | |
6360 click_event.clickCount = 1; | 6344 click_event.clickCount = 1; |
6361 rwhv_child->ProcessMouseEvent(click_event, ui::LatencyInfo()); | 6345 rwhv_child->ProcessMouseEvent(click_event, ui::LatencyInfo()); |
6362 | 6346 |
6363 // Dismiss the popup. | 6347 // Dismiss the popup. |
6364 click_event.x = 1; | 6348 click_event.setPositionInWidget(1, 1); |
6365 click_event.y = 1; | |
6366 rwhv_child->ProcessMouseEvent(click_event, ui::LatencyInfo()); | 6349 rwhv_child->ProcessMouseEvent(click_event, ui::LatencyInfo()); |
6367 | 6350 |
6368 filter->Wait(); | 6351 filter->Wait(); |
6369 gfx::Rect popup_rect = filter->last_initial_rect(); | 6352 gfx::Rect popup_rect = filter->last_initial_rect(); |
6370 #if defined(OS_MACOSX) || defined(OS_ANDROID) | 6353 #if defined(OS_MACOSX) || defined(OS_ANDROID) |
6371 // On Mac and Android we receive the coordinates before they are transformed, | 6354 // On Mac and Android we receive the coordinates before they are transformed, |
6372 // so they are still relative to the out-of-process iframe origin. | 6355 // so they are still relative to the out-of-process iframe origin. |
6373 EXPECT_EQ(popup_rect.x(), 9); | 6356 EXPECT_EQ(popup_rect.x(), 9); |
6374 EXPECT_EQ(popup_rect.y(), 9); | 6357 EXPECT_EQ(popup_rect.y(), 9); |
6375 #else | 6358 #else |
6376 EXPECT_EQ(popup_rect.x() - rwhv_root->GetViewBounds().x(), 354); | 6359 EXPECT_EQ(popup_rect.x() - rwhv_root->GetViewBounds().x(), 354); |
6377 EXPECT_EQ(popup_rect.y() - rwhv_root->GetViewBounds().y(), 94); | 6360 EXPECT_EQ(popup_rect.y() - rwhv_root->GetViewBounds().y(), 94); |
6378 #endif | 6361 #endif |
6379 | 6362 |
6380 #if defined(OS_LINUX) | 6363 #if defined(OS_LINUX) |
6381 // Verify click-and-drag selection of popups still works on Linux with | 6364 // Verify click-and-drag selection of popups still works on Linux with |
6382 // OOPIFs enabled. This is only necessary to test on Aura because Mac and | 6365 // OOPIFs enabled. This is only necessary to test on Aura because Mac and |
6383 // Android use native widgets. Windows does not support this as UI | 6366 // Android use native widgets. Windows does not support this as UI |
6384 // convention (it requires separate clicks to open the menu and select an | 6367 // convention (it requires separate clicks to open the menu and select an |
6385 // option). See https://crbug.com/703191. | 6368 // option). See https://crbug.com/703191. |
6386 int process_id = child_node->current_frame_host()->GetProcess()->GetID(); | 6369 int process_id = child_node->current_frame_host()->GetProcess()->GetID(); |
6387 filter->Reset(); | 6370 filter->Reset(); |
6388 RenderWidgetHostInputEventRouter* router = | 6371 RenderWidgetHostInputEventRouter* router = |
6389 static_cast<WebContentsImpl*>(shell()->web_contents()) | 6372 static_cast<WebContentsImpl*>(shell()->web_contents()) |
6390 ->GetInputEventRouter(); | 6373 ->GetInputEventRouter(); |
6391 // Re-open the select element. | 6374 // Re-open the select element. |
6392 click_event.x = 360; | 6375 click_event.setPositionInWidget(360, 90); |
6393 click_event.y = 90; | |
6394 click_event.clickCount = 1; | 6376 click_event.clickCount = 1; |
6395 router->RouteMouseEvent(rwhv_root, &click_event, ui::LatencyInfo()); | 6377 router->RouteMouseEvent(rwhv_root, &click_event, ui::LatencyInfo()); |
6396 | 6378 |
6397 filter->Wait(); | 6379 filter->Wait(); |
6398 | 6380 |
6399 RenderWidgetHostView* popup_view = | 6381 RenderWidgetHostView* popup_view = |
6400 RenderWidgetHost::FromID(process_id, filter->last_routing_id()) | 6382 RenderWidgetHost::FromID(process_id, filter->last_routing_id()) |
6401 ->GetView(); | 6383 ->GetView(); |
6402 | 6384 |
6403 RenderWidgetHostMouseEventMonitor popup_monitor( | 6385 RenderWidgetHostMouseEventMonitor popup_monitor( |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6465 c_node->current_frame_host()->GetSiteInstance()); | 6447 c_node->current_frame_host()->GetSiteInstance()); |
6466 | 6448 |
6467 scoped_refptr<ShowWidgetMessageFilter> filter = new ShowWidgetMessageFilter(); | 6449 scoped_refptr<ShowWidgetMessageFilter> filter = new ShowWidgetMessageFilter(); |
6468 c_node->current_frame_host()->GetProcess()->AddFilter(filter.get()); | 6450 c_node->current_frame_host()->GetProcess()->AddFilter(filter.get()); |
6469 | 6451 |
6470 // Target left-click event to child frame. | 6452 // Target left-click event to child frame. |
6471 blink::WebMouseEvent click_event(blink::WebInputEvent::MouseDown, | 6453 blink::WebMouseEvent click_event(blink::WebInputEvent::MouseDown, |
6472 blink::WebInputEvent::NoModifiers, | 6454 blink::WebInputEvent::NoModifiers, |
6473 blink::WebInputEvent::TimeStampForTesting); | 6455 blink::WebInputEvent::TimeStampForTesting); |
6474 click_event.button = blink::WebPointerProperties::Button::Left; | 6456 click_event.button = blink::WebPointerProperties::Button::Left; |
6475 click_event.x = 15; | 6457 click_event.setPositionInWidget(15, 15); |
6476 click_event.y = 15; | |
6477 click_event.clickCount = 1; | 6458 click_event.clickCount = 1; |
6478 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); | 6459 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); |
6479 | 6460 |
6480 // Prompt the WebContents to dismiss the popup by clicking elsewhere. | 6461 // Prompt the WebContents to dismiss the popup by clicking elsewhere. |
6481 click_event.x = 1; | 6462 click_event.setPositionInWidget(1, 1); |
6482 click_event.y = 1; | |
6483 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); | 6463 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); |
6484 | 6464 |
6485 filter->Wait(); | 6465 filter->Wait(); |
6486 | 6466 |
6487 gfx::Rect popup_rect = filter->last_initial_rect(); | 6467 gfx::Rect popup_rect = filter->last_initial_rect(); |
6488 | 6468 |
6489 #if defined(OS_MACOSX) | 6469 #if defined(OS_MACOSX) |
6490 EXPECT_EQ(popup_rect.x(), 9); | 6470 EXPECT_EQ(popup_rect.x(), 9); |
6491 EXPECT_EQ(popup_rect.y(), 9); | 6471 EXPECT_EQ(popup_rect.y(), 9); |
6492 #else | 6472 #else |
(...skipping 22 matching lines...) Expand all Loading... |
6515 b_node->current_frame_host()->GetView()->GetViewBounds().x() && | 6495 b_node->current_frame_host()->GetView()->GetViewBounds().x() && |
6516 last_b_node_bounds_rect.y() == | 6496 last_b_node_bounds_rect.y() == |
6517 b_node->current_frame_host()->GetView()->GetViewBounds().y()) { | 6497 b_node->current_frame_host()->GetView()->GetViewBounds().y()) { |
6518 base::RunLoop run_loop; | 6498 base::RunLoop run_loop; |
6519 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 6499 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
6520 FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout()); | 6500 FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout()); |
6521 run_loop.Run(); | 6501 run_loop.Run(); |
6522 } | 6502 } |
6523 | 6503 |
6524 click_event.button = blink::WebPointerProperties::Button::Left; | 6504 click_event.button = blink::WebPointerProperties::Button::Left; |
6525 click_event.x = 15; | 6505 click_event.setPositionInWidget(15, 15); |
6526 click_event.y = 15; | |
6527 click_event.clickCount = 1; | 6506 click_event.clickCount = 1; |
6528 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); | 6507 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); |
6529 | 6508 |
6530 click_event.x = 1; | 6509 click_event.setPositionInWidget(1, 1); |
6531 click_event.y = 1; | |
6532 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); | 6510 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); |
6533 | 6511 |
6534 filter->Wait(); | 6512 filter->Wait(); |
6535 | 6513 |
6536 popup_rect = filter->last_initial_rect(); | 6514 popup_rect = filter->last_initial_rect(); |
6537 | 6515 |
6538 #if defined(OS_MACOSX) | 6516 #if defined(OS_MACOSX) |
6539 EXPECT_EQ(popup_rect.x(), 9); | 6517 EXPECT_EQ(popup_rect.x(), 9); |
6540 EXPECT_EQ(popup_rect.y(), 9); | 6518 EXPECT_EQ(popup_rect.y(), 9); |
6541 #else | 6519 #else |
(...skipping 2812 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9354 ->GetInputEventRouter(); | 9332 ->GetInputEventRouter(); |
9355 | 9333 |
9356 // Create listener for input events. | 9334 // Create listener for input events. |
9357 RenderWidgetHostMouseEventMonitor event_monitor( | 9335 RenderWidgetHostMouseEventMonitor event_monitor( |
9358 root->current_frame_host()->GetRenderWidgetHost()); | 9336 root->current_frame_host()->GetRenderWidgetHost()); |
9359 | 9337 |
9360 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseDown, | 9338 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseDown, |
9361 blink::WebInputEvent::NoModifiers, | 9339 blink::WebInputEvent::NoModifiers, |
9362 blink::WebInputEvent::TimeStampForTesting); | 9340 blink::WebInputEvent::TimeStampForTesting); |
9363 mouse_event.button = blink::WebPointerProperties::Button::Left; | 9341 mouse_event.button = blink::WebPointerProperties::Button::Left; |
9364 mouse_event.x = 75; | 9342 mouse_event.setPositionInWidget(75, 75); |
9365 mouse_event.y = 75; | |
9366 mouse_event.clickCount = 1; | 9343 mouse_event.clickCount = 1; |
9367 event_monitor.ResetEventReceived(); | 9344 event_monitor.ResetEventReceived(); |
9368 router->RouteMouseEvent(rwhv, &mouse_event, ui::LatencyInfo()); | 9345 router->RouteMouseEvent(rwhv, &mouse_event, ui::LatencyInfo()); |
9369 | 9346 |
9370 EXPECT_TRUE(event_monitor.EventWasReceived()); | 9347 EXPECT_TRUE(event_monitor.EventWasReceived()); |
9371 gfx::Point mouse_down_coords = | 9348 gfx::Point mouse_down_coords = |
9372 gfx::Point(event_monitor.event().x, event_monitor.event().y); | 9349 gfx::Point(event_monitor.event().positionInWidget().x, |
| 9350 event_monitor.event().positionInWidget().y); |
9373 event_monitor.ResetEventReceived(); | 9351 event_monitor.ResetEventReceived(); |
9374 | 9352 |
9375 mouse_event.setType(blink::WebInputEvent::MouseUp); | 9353 mouse_event.setType(blink::WebInputEvent::MouseUp); |
9376 mouse_event.x = 75; | 9354 mouse_event.setPositionInWidget(75, 75); |
9377 mouse_event.y = 75; | |
9378 router->RouteMouseEvent(rwhv, &mouse_event, ui::LatencyInfo()); | 9355 router->RouteMouseEvent(rwhv, &mouse_event, ui::LatencyInfo()); |
9379 | 9356 |
9380 EXPECT_TRUE(event_monitor.EventWasReceived()); | 9357 EXPECT_TRUE(event_monitor.EventWasReceived()); |
9381 EXPECT_EQ(mouse_down_coords, | 9358 EXPECT_EQ(mouse_down_coords, |
9382 gfx::Point(event_monitor.event().x, event_monitor.event().y)); | 9359 gfx::Point(event_monitor.event().positionInWidget().x, |
| 9360 event_monitor.event().positionInWidget().y)); |
9383 } | 9361 } |
9384 | 9362 |
9385 // Verify that a remote-to-local navigation in a crashed subframe works. See | 9363 // Verify that a remote-to-local navigation in a crashed subframe works. See |
9386 // https://crbug.com/487872. | 9364 // https://crbug.com/487872. |
9387 IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, | 9365 IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, |
9388 RemoteToLocalNavigationInCrashedSubframe) { | 9366 RemoteToLocalNavigationInCrashedSubframe) { |
9389 GURL main_url(embedded_test_server()->GetURL( | 9367 GURL main_url(embedded_test_server()->GetURL( |
9390 "a.com", "/cross_site_iframe_factory.html?a(b)")); | 9368 "a.com", "/cross_site_iframe_factory.html?a(b)")); |
9391 EXPECT_TRUE(NavigateToURL(shell(), main_url)); | 9369 EXPECT_TRUE(NavigateToURL(shell(), main_url)); |
9392 | 9370 |
(...skipping 486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9879 names.insert(root->children[0]->frame_entry->frame_unique_name()); | 9857 names.insert(root->children[0]->frame_entry->frame_unique_name()); |
9880 } | 9858 } |
9881 | 9859 |
9882 // More than one entry in the set means that the subframe frame navigation | 9860 // More than one entry in the set means that the subframe frame navigation |
9883 // entries didn't have a consistent unique name. This will break history | 9861 // entries didn't have a consistent unique name. This will break history |
9884 // navigations =( | 9862 // navigations =( |
9885 EXPECT_THAT(names, SizeIs(1)) << "Mismatched names for subframe!"; | 9863 EXPECT_THAT(names, SizeIs(1)) << "Mismatched names for subframe!"; |
9886 } | 9864 } |
9887 | 9865 |
9888 } // namespace content | 9866 } // namespace content |
OLD | NEW |