| 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.position.x = x; |
| 173 mouse_event.y = y; | 173 mouse_event.position.y = y; |
| 174 rwh->ForwardMouseEvent(mouse_event); | 174 rwh->ForwardMouseEvent(mouse_event); |
| 175 } | 175 } |
| 176 | 176 |
| 177 // Retrieve document.origin for the frame |ftn|. | 177 // Retrieve document.origin for the frame |ftn|. |
| 178 std::string GetDocumentOrigin(FrameTreeNode* ftn) { | 178 std::string GetDocumentOrigin(FrameTreeNode* ftn) { |
| 179 std::string origin; | 179 std::string origin; |
| 180 EXPECT_TRUE(ExecuteScriptAndExtractString( | 180 EXPECT_TRUE(ExecuteScriptAndExtractString( |
| 181 ftn, "domAutomationController.send(document.origin)", &origin)); | 181 ftn, "domAutomationController.send(document.origin)", &origin)); |
| 182 return origin; | 182 return origin; |
| 183 } | 183 } |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 // Get the view bounds of the child iframe, which should account for the | 304 // Get the view bounds of the child iframe, which should account for the |
| 305 // relative offset of its direct parent within the root frame, for use in | 305 // relative offset of its direct parent within the root frame, for use in |
| 306 // targeting the input event. | 306 // targeting the input event. |
| 307 gfx::Rect bounds = rwhv_child->GetViewBounds(); | 307 gfx::Rect bounds = rwhv_child->GetViewBounds(); |
| 308 | 308 |
| 309 // Target input event to child frame. | 309 // Target input event to child frame. |
| 310 blink::WebMouseEvent child_event(blink::WebInputEvent::MouseDown, | 310 blink::WebMouseEvent child_event(blink::WebInputEvent::MouseDown, |
| 311 blink::WebInputEvent::NoModifiers, | 311 blink::WebInputEvent::NoModifiers, |
| 312 blink::WebInputEvent::TimeStampForTesting); | 312 blink::WebInputEvent::TimeStampForTesting); |
| 313 child_event.button = blink::WebPointerProperties::Button::Left; | 313 child_event.button = blink::WebPointerProperties::Button::Left; |
| 314 child_event.x = | 314 child_event.position.x = |
| 315 gfx::ToCeiledInt((bounds.x() - root_view->GetViewBounds().x()) / | 315 gfx::ToCeiledInt((bounds.x() - root_view->GetViewBounds().x()) / |
| 316 scale_factor) + | 316 scale_factor) + |
| 317 3; | 317 3; |
| 318 child_event.y = | 318 child_event.position.y = |
| 319 gfx::ToCeiledInt((bounds.y() - root_view->GetViewBounds().y()) / | 319 gfx::ToCeiledInt((bounds.y() - root_view->GetViewBounds().y()) / |
| 320 scale_factor) + | 320 scale_factor) + |
| 321 3; | 321 3; |
| 322 child_event.clickCount = 1; | 322 child_event.clickCount = 1; |
| 323 main_frame_monitor.ResetEventReceived(); | 323 main_frame_monitor.ResetEventReceived(); |
| 324 child_frame_monitor.ResetEventReceived(); | 324 child_frame_monitor.ResetEventReceived(); |
| 325 router->RouteMouseEvent(root_view, &child_event, ui::LatencyInfo()); | 325 router->RouteMouseEvent(root_view, &child_event, ui::LatencyInfo()); |
| 326 | 326 |
| 327 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); | 327 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); |
| 328 // The expected result coordinates are (3, 3), but can get slightly | 328 // The expected result coordinates are (3, 3), but can get slightly |
| 329 // different results due to rounding error with some device scale factors. | 329 // different results due to rounding error with some device scale factors. |
| 330 EXPECT_TRUE(child_frame_monitor.event().x <= 5 && | 330 EXPECT_TRUE(child_frame_monitor.event().position.x <= 5 && |
| 331 child_frame_monitor.event().x >= 1) | 331 child_frame_monitor.event().position.x >= 1) |
| 332 << " actual event.x: " << child_frame_monitor.event().x; | 332 << " actual event.position.x: " << child_frame_monitor.event().position.x; |
| 333 EXPECT_TRUE(child_frame_monitor.event().y <= 5 && | 333 EXPECT_TRUE(child_frame_monitor.event().position.y <= 5 && |
| 334 child_frame_monitor.event().y >= 1) | 334 child_frame_monitor.event().position.y >= 1) |
| 335 << " actual event.y: " << child_frame_monitor.event().y; | 335 << " actual event.position.y: " << child_frame_monitor.event().position.y; |
| 336 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); | 336 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); |
| 337 | 337 |
| 338 child_frame_monitor.ResetEventReceived(); | 338 child_frame_monitor.ResetEventReceived(); |
| 339 main_frame_monitor.ResetEventReceived(); | 339 main_frame_monitor.ResetEventReceived(); |
| 340 | 340 |
| 341 // Target input event to main frame. | 341 // Target input event to main frame. |
| 342 blink::WebMouseEvent main_event(blink::WebInputEvent::MouseDown, | 342 blink::WebMouseEvent main_event(blink::WebInputEvent::MouseDown, |
| 343 blink::WebInputEvent::NoModifiers, | 343 blink::WebInputEvent::NoModifiers, |
| 344 blink::WebInputEvent::TimeStampForTesting); | 344 blink::WebInputEvent::TimeStampForTesting); |
| 345 main_event.button = blink::WebPointerProperties::Button::Left; | 345 main_event.button = blink::WebPointerProperties::Button::Left; |
| 346 main_event.x = 1; | 346 main_event.position.x = 1; |
| 347 main_event.y = 1; | 347 main_event.position.y = 1; |
| 348 main_event.clickCount = 1; | 348 main_event.clickCount = 1; |
| 349 // Ladies and gentlemen, THIS is the main_event! | 349 // Ladies and gentlemen, THIS is the main_event! |
| 350 router->RouteMouseEvent(root_view, &main_event, ui::LatencyInfo()); | 350 router->RouteMouseEvent(root_view, &main_event, ui::LatencyInfo()); |
| 351 | 351 |
| 352 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); | 352 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); |
| 353 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); | 353 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); |
| 354 EXPECT_EQ(1, main_frame_monitor.event().x); | 354 EXPECT_EQ(1, main_frame_monitor.event().position.x); |
| 355 EXPECT_EQ(1, main_frame_monitor.event().y); | 355 EXPECT_EQ(1, main_frame_monitor.event().position.y); |
| 356 } | 356 } |
| 357 | 357 |
| 358 class RedirectNotificationObserver : public NotificationObserver { | 358 class RedirectNotificationObserver : public NotificationObserver { |
| 359 public: | 359 public: |
| 360 // Register to listen for notifications of the given type from either a | 360 // Register to listen for notifications of the given type from either a |
| 361 // specific source, or from all sources if |source| is | 361 // specific source, or from all sources if |source| is |
| 362 // NotificationService::AllSources(). | 362 // NotificationService::AllSources(). |
| 363 RedirectNotificationObserver(int notification_type, | 363 RedirectNotificationObserver(int notification_type, |
| 364 const NotificationSource& source); | 364 const NotificationSource& source); |
| 365 ~RedirectNotificationObserver() override; | 365 ~RedirectNotificationObserver() override; |
| (...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1068 scoped_refptr<FrameRectChangedMessageFilter> filter = | 1068 scoped_refptr<FrameRectChangedMessageFilter> filter = |
| 1069 new FrameRectChangedMessageFilter(); | 1069 new FrameRectChangedMessageFilter(); |
| 1070 root->current_frame_host()->GetProcess()->AddFilter(filter.get()); | 1070 root->current_frame_host()->GetProcess()->AddFilter(filter.get()); |
| 1071 | 1071 |
| 1072 // Scroll the parent frame downward to verify that the child rect gets updated | 1072 // Scroll the parent frame downward to verify that the child rect gets updated |
| 1073 // correctly. | 1073 // correctly. |
| 1074 blink::WebMouseWheelEvent scroll_event( | 1074 blink::WebMouseWheelEvent scroll_event( |
| 1075 blink::WebInputEvent::MouseWheel, blink::WebInputEvent::NoModifiers, | 1075 blink::WebInputEvent::MouseWheel, blink::WebInputEvent::NoModifiers, |
| 1076 blink::WebInputEvent::TimeStampForTesting); | 1076 blink::WebInputEvent::TimeStampForTesting); |
| 1077 | 1077 |
| 1078 scroll_event.x = gfx::ToFlooredInt( | 1078 scroll_event.position.x = gfx::ToFlooredInt( |
| 1079 (bounds.x() - rwhv_root->GetViewBounds().x() - 5) / scale_factor); | 1079 (bounds.x() - rwhv_root->GetViewBounds().x() - 5) / scale_factor); |
| 1080 scroll_event.y = gfx::ToFlooredInt( | 1080 scroll_event.position.y = gfx::ToFlooredInt( |
| 1081 (bounds.y() - rwhv_root->GetViewBounds().y() - 5) / scale_factor); | 1081 (bounds.y() - rwhv_root->GetViewBounds().y() - 5) / scale_factor); |
| 1082 scroll_event.deltaX = 0.0f; | 1082 scroll_event.deltaX = 0.0f; |
| 1083 scroll_event.deltaY = -30.0f; | 1083 scroll_event.deltaY = -30.0f; |
| 1084 rwhv_root->ProcessMouseWheelEvent(scroll_event, ui::LatencyInfo()); | 1084 rwhv_root->ProcessMouseWheelEvent(scroll_event, ui::LatencyInfo()); |
| 1085 | 1085 |
| 1086 filter->Wait(); | 1086 filter->Wait(); |
| 1087 | 1087 |
| 1088 // The precise amount of scroll for the first view position update is not | 1088 // The precise amount of scroll for the first view position update is not |
| 1089 // deterministic, so this simply verifies that the OOPIF moved from its | 1089 // deterministic, so this simply verifies that the OOPIF moved from its |
| 1090 // earlier position. | 1090 // earlier position. |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1156 // Save the original offset as a point of reference. | 1156 // Save the original offset as a point of reference. |
| 1157 filter->Wait(); | 1157 filter->Wait(); |
| 1158 gfx::Rect update_rect = filter->last_rect(); | 1158 gfx::Rect update_rect = filter->last_rect(); |
| 1159 int initial_y = update_rect.y(); | 1159 int initial_y = update_rect.y(); |
| 1160 filter->Reset(); | 1160 filter->Reset(); |
| 1161 | 1161 |
| 1162 // Scroll the parent frame downward. | 1162 // Scroll the parent frame downward. |
| 1163 blink::WebMouseWheelEvent scroll_event( | 1163 blink::WebMouseWheelEvent scroll_event( |
| 1164 blink::WebInputEvent::MouseWheel, blink::WebInputEvent::NoModifiers, | 1164 blink::WebInputEvent::MouseWheel, blink::WebInputEvent::NoModifiers, |
| 1165 blink::WebInputEvent::TimeStampForTesting); | 1165 blink::WebInputEvent::TimeStampForTesting); |
| 1166 scroll_event.x = 1; | 1166 scroll_event.position.x = 1; |
| 1167 scroll_event.y = 1; | 1167 scroll_event.position.y = 1; |
| 1168 scroll_event.deltaX = 0.0f; | 1168 scroll_event.deltaX = 0.0f; |
| 1169 scroll_event.deltaY = -5.0f; | 1169 scroll_event.deltaY = -5.0f; |
| 1170 rwhv_parent->ProcessMouseWheelEvent(scroll_event, ui::LatencyInfo()); | 1170 rwhv_parent->ProcessMouseWheelEvent(scroll_event, ui::LatencyInfo()); |
| 1171 | 1171 |
| 1172 // Ensure that the view position is propagated to the child properly. | 1172 // Ensure that the view position is propagated to the child properly. |
| 1173 filter->Wait(); | 1173 filter->Wait(); |
| 1174 update_rect = filter->last_rect(); | 1174 update_rect = filter->last_rect(); |
| 1175 EXPECT_LT(update_rect.y(), initial_y); | 1175 EXPECT_LT(update_rect.y(), initial_y); |
| 1176 filter->Reset(); | 1176 filter->Reset(); |
| 1177 | 1177 |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1403 // Get the view bounds of the nested iframe, which should account for the | 1403 // Get the view bounds of the nested iframe, which should account for the |
| 1404 // relative offset of its direct parent within the root frame, for use in | 1404 // relative offset of its direct parent within the root frame, for use in |
| 1405 // targeting the input event. | 1405 // targeting the input event. |
| 1406 gfx::Rect bounds = rwhv_nested->GetViewBounds(); | 1406 gfx::Rect bounds = rwhv_nested->GetViewBounds(); |
| 1407 | 1407 |
| 1408 // Target input event to nested frame. | 1408 // Target input event to nested frame. |
| 1409 blink::WebMouseEvent nested_event(blink::WebInputEvent::MouseDown, | 1409 blink::WebMouseEvent nested_event(blink::WebInputEvent::MouseDown, |
| 1410 blink::WebInputEvent::NoModifiers, | 1410 blink::WebInputEvent::NoModifiers, |
| 1411 blink::WebInputEvent::TimeStampForTesting); | 1411 blink::WebInputEvent::TimeStampForTesting); |
| 1412 nested_event.button = blink::WebPointerProperties::Button::Left; | 1412 nested_event.button = blink::WebPointerProperties::Button::Left; |
| 1413 nested_event.x = | 1413 nested_event.position.x = |
| 1414 gfx::ToCeiledInt((bounds.x() - root_view->GetViewBounds().x()) / | 1414 gfx::ToCeiledInt((bounds.x() - root_view->GetViewBounds().x()) / |
| 1415 scale_factor) + | 1415 scale_factor) + |
| 1416 5; | 1416 5; |
| 1417 nested_event.y = | 1417 nested_event.position.y = |
| 1418 gfx::ToCeiledInt((bounds.y() - root_view->GetViewBounds().y()) / | 1418 gfx::ToCeiledInt((bounds.y() - root_view->GetViewBounds().y()) / |
| 1419 scale_factor) + | 1419 scale_factor) + |
| 1420 5; | 1420 5; |
| 1421 nested_event.clickCount = 1; | 1421 nested_event.clickCount = 1; |
| 1422 nested_frame_monitor.ResetEventReceived(); | 1422 nested_frame_monitor.ResetEventReceived(); |
| 1423 main_frame_monitor.ResetEventReceived(); | 1423 main_frame_monitor.ResetEventReceived(); |
| 1424 router->RouteMouseEvent(root_view, &nested_event, ui::LatencyInfo()); | 1424 router->RouteMouseEvent(root_view, &nested_event, ui::LatencyInfo()); |
| 1425 | 1425 |
| 1426 EXPECT_TRUE(nested_frame_monitor.EventWasReceived()); | 1426 EXPECT_TRUE(nested_frame_monitor.EventWasReceived()); |
| 1427 // The expected result coordinates are (5, 5), but can get slightly | 1427 // The expected result coordinates are (5, 5), but can get slightly |
| 1428 // different results due to rounding error with some device scale factors. | 1428 // different results due to rounding error with some device scale factors. |
| 1429 EXPECT_TRUE(nested_frame_monitor.event().x <= 6 && | 1429 EXPECT_TRUE(nested_frame_monitor.event().position.x <= 6 && |
| 1430 nested_frame_monitor.event().x >= 4) | 1430 nested_frame_monitor.event().position.x >= 4) |
| 1431 << " actual event.x: " << nested_frame_monitor.event().x; | 1431 << " actual event.position.x: " |
| 1432 EXPECT_TRUE(nested_frame_monitor.event().y <= 6 && | 1432 << nested_frame_monitor.event().position.x; |
| 1433 nested_frame_monitor.event().y >= 4) | 1433 EXPECT_TRUE(nested_frame_monitor.event().position.y <= 6 && |
| 1434 << " actual event.y: " << nested_frame_monitor.event().y; | 1434 nested_frame_monitor.event().position.y >= 4) |
| 1435 << " actual event.position.y: " |
| 1436 << nested_frame_monitor.event().position.y; |
| 1435 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); | 1437 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); |
| 1436 } | 1438 } |
| 1437 | 1439 |
| 1438 // This test tests that browser process hittesting ignores frames with | 1440 // This test tests that browser process hittesting ignores frames with |
| 1439 // pointer-events: none. | 1441 // pointer-events: none. |
| 1440 #if defined(OS_ANDROID) | 1442 #if defined(OS_ANDROID) |
| 1441 // Test failing on some Android builders, due to inaccurate coordinates on | 1443 // Test failing on some Android builders, due to inaccurate coordinates on |
| 1442 // some devices. See: https://crbug.com/700007. | 1444 // some devices. See: https://crbug.com/700007. |
| 1443 #define MAYBE_SurfaceHitTestPointerEventsNone \ | 1445 #define MAYBE_SurfaceHitTestPointerEventsNone \ |
| 1444 DISABLED_SurfaceHitTestPointerEventsNone | 1446 DISABLED_SurfaceHitTestPointerEventsNone |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1477 | 1479 |
| 1478 SurfaceHitTestReadyNotifier notifier( | 1480 SurfaceHitTestReadyNotifier notifier( |
| 1479 static_cast<RenderWidgetHostViewChildFrame*>(rwhv_child)); | 1481 static_cast<RenderWidgetHostViewChildFrame*>(rwhv_child)); |
| 1480 notifier.WaitForSurfaceReady(); | 1482 notifier.WaitForSurfaceReady(); |
| 1481 | 1483 |
| 1482 // Target input event to child frame. | 1484 // Target input event to child frame. |
| 1483 blink::WebMouseEvent child_event(blink::WebInputEvent::MouseDown, | 1485 blink::WebMouseEvent child_event(blink::WebInputEvent::MouseDown, |
| 1484 blink::WebInputEvent::NoModifiers, | 1486 blink::WebInputEvent::NoModifiers, |
| 1485 blink::WebInputEvent::TimeStampForTesting); | 1487 blink::WebInputEvent::TimeStampForTesting); |
| 1486 child_event.button = blink::WebPointerProperties::Button::Left; | 1488 child_event.button = blink::WebPointerProperties::Button::Left; |
| 1487 child_event.x = 75; | 1489 child_event.position.x = 75; |
| 1488 child_event.y = 75; | 1490 child_event.position.y = 75; |
| 1489 child_event.clickCount = 1; | 1491 child_event.clickCount = 1; |
| 1490 main_frame_monitor.ResetEventReceived(); | 1492 main_frame_monitor.ResetEventReceived(); |
| 1491 child_frame_monitor.ResetEventReceived(); | 1493 child_frame_monitor.ResetEventReceived(); |
| 1492 router->RouteMouseEvent(root_view, &child_event, ui::LatencyInfo()); | 1494 router->RouteMouseEvent(root_view, &child_event, ui::LatencyInfo()); |
| 1493 | 1495 |
| 1494 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); | 1496 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); |
| 1495 EXPECT_EQ(75, main_frame_monitor.event().x); | 1497 EXPECT_EQ(75, main_frame_monitor.event().position.x); |
| 1496 EXPECT_EQ(75, main_frame_monitor.event().y); | 1498 EXPECT_EQ(75, main_frame_monitor.event().position.y); |
| 1497 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); | 1499 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); |
| 1498 } | 1500 } |
| 1499 | 1501 |
| 1500 // This test verifies that MouseEnter and MouseLeave events fire correctly | 1502 // This test verifies that MouseEnter and MouseLeave events fire correctly |
| 1501 // when the mouse cursor moves between processes. | 1503 // when the mouse cursor moves between processes. |
| 1502 #if defined(OS_ANDROID) | 1504 #if defined(OS_ANDROID) |
| 1503 // Test failing on some Android builders, due to inaccurate coordinates on | 1505 // Test failing on some Android builders, due to inaccurate coordinates on |
| 1504 // some devices. See: https://crbug.com/700007. | 1506 // some devices. See: https://crbug.com/700007. |
| 1505 #define MAYBE_CrossProcessMouseEnterAndLeaveTest \ | 1507 #define MAYBE_CrossProcessMouseEnterAndLeaveTest \ |
| 1506 DISABLED_CrossProcessMouseEnterAndLeaveTest | 1508 DISABLED_CrossProcessMouseEnterAndLeaveTest |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1576 gfx::Point point_in_b_frame( | 1578 gfx::Point point_in_b_frame( |
| 1577 gfx::ToCeiledInt((b_bounds.x() - a_bounds.x()) / scale_factor) + 25, | 1579 gfx::ToCeiledInt((b_bounds.x() - a_bounds.x()) / scale_factor) + 25, |
| 1578 gfx::ToCeiledInt((b_bounds.y() - a_bounds.y()) / scale_factor) + 25); | 1580 gfx::ToCeiledInt((b_bounds.y() - a_bounds.y()) / scale_factor) + 25); |
| 1579 gfx::Point point_in_d_frame( | 1581 gfx::Point point_in_d_frame( |
| 1580 gfx::ToCeiledInt((d_bounds.x() - a_bounds.x()) / scale_factor) + 25, | 1582 gfx::ToCeiledInt((d_bounds.x() - a_bounds.x()) / scale_factor) + 25, |
| 1581 gfx::ToCeiledInt((d_bounds.y() - a_bounds.y()) / scale_factor) + 25); | 1583 gfx::ToCeiledInt((d_bounds.y() - a_bounds.y()) / scale_factor) + 25); |
| 1582 | 1584 |
| 1583 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseMove, | 1585 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseMove, |
| 1584 blink::WebInputEvent::NoModifiers, | 1586 blink::WebInputEvent::NoModifiers, |
| 1585 blink::WebInputEvent::TimeStampForTesting); | 1587 blink::WebInputEvent::TimeStampForTesting); |
| 1586 mouse_event.x = point_in_a_frame.x(); | 1588 mouse_event.position.x = point_in_a_frame.x(); |
| 1587 mouse_event.y = point_in_a_frame.y(); | 1589 mouse_event.position.y = point_in_a_frame.y(); |
| 1588 | 1590 |
| 1589 // Send an initial MouseMove to the root view, which shouldn't affect the | 1591 // Send an initial MouseMove to the root view, which shouldn't affect the |
| 1590 // other renderers. | 1592 // other renderers. |
| 1591 web_contents()->GetInputEventRouter()->RouteMouseEvent(rwhv_a, &mouse_event, | 1593 web_contents()->GetInputEventRouter()->RouteMouseEvent(rwhv_a, &mouse_event, |
| 1592 ui::LatencyInfo()); | 1594 ui::LatencyInfo()); |
| 1593 EXPECT_TRUE(a_frame_monitor.EventWasReceived()); | 1595 EXPECT_TRUE(a_frame_monitor.EventWasReceived()); |
| 1594 a_frame_monitor.ResetEventReceived(); | 1596 a_frame_monitor.ResetEventReceived(); |
| 1595 EXPECT_FALSE(b_frame_monitor.EventWasReceived()); | 1597 EXPECT_FALSE(b_frame_monitor.EventWasReceived()); |
| 1596 EXPECT_FALSE(c_frame_monitor.EventWasReceived()); | 1598 EXPECT_FALSE(c_frame_monitor.EventWasReceived()); |
| 1597 EXPECT_FALSE(d_frame_monitor.EventWasReceived()); | 1599 EXPECT_FALSE(d_frame_monitor.EventWasReceived()); |
| 1598 | 1600 |
| 1599 // Next send a MouseMove to B frame, which shouldn't affect C or D but | 1601 // Next send a MouseMove to B frame, which shouldn't affect C or D but |
| 1600 // A should receive a MouseMove event. | 1602 // A should receive a MouseMove event. |
| 1601 mouse_event.x = point_in_b_frame.x(); | 1603 mouse_event.position.x = point_in_b_frame.x(); |
| 1602 mouse_event.y = point_in_b_frame.y(); | 1604 mouse_event.position.y = point_in_b_frame.y(); |
| 1603 web_contents()->GetInputEventRouter()->RouteMouseEvent(rwhv_a, &mouse_event, | 1605 web_contents()->GetInputEventRouter()->RouteMouseEvent(rwhv_a, &mouse_event, |
| 1604 ui::LatencyInfo()); | 1606 ui::LatencyInfo()); |
| 1605 EXPECT_TRUE(a_frame_monitor.EventWasReceived()); | 1607 EXPECT_TRUE(a_frame_monitor.EventWasReceived()); |
| 1606 EXPECT_EQ(a_frame_monitor.event().type(), blink::WebInputEvent::MouseMove); | 1608 EXPECT_EQ(a_frame_monitor.event().type(), blink::WebInputEvent::MouseMove); |
| 1607 a_frame_monitor.ResetEventReceived(); | 1609 a_frame_monitor.ResetEventReceived(); |
| 1608 EXPECT_TRUE(b_frame_monitor.EventWasReceived()); | 1610 EXPECT_TRUE(b_frame_monitor.EventWasReceived()); |
| 1609 b_frame_monitor.ResetEventReceived(); | 1611 b_frame_monitor.ResetEventReceived(); |
| 1610 EXPECT_FALSE(c_frame_monitor.EventWasReceived()); | 1612 EXPECT_FALSE(c_frame_monitor.EventWasReceived()); |
| 1611 EXPECT_FALSE(d_frame_monitor.EventWasReceived()); | 1613 EXPECT_FALSE(d_frame_monitor.EventWasReceived()); |
| 1612 | 1614 |
| 1613 // Next send a MouseMove to D frame, which should have side effects in every | 1615 // Next send a MouseMove to D frame, which should have side effects in every |
| 1614 // other RenderWidgetHostView. | 1616 // other RenderWidgetHostView. |
| 1615 mouse_event.x = point_in_d_frame.x(); | 1617 mouse_event.position.x = point_in_d_frame.x(); |
| 1616 mouse_event.y = point_in_d_frame.y(); | 1618 mouse_event.position.y = point_in_d_frame.y(); |
| 1617 web_contents()->GetInputEventRouter()->RouteMouseEvent(rwhv_a, &mouse_event, | 1619 web_contents()->GetInputEventRouter()->RouteMouseEvent(rwhv_a, &mouse_event, |
| 1618 ui::LatencyInfo()); | 1620 ui::LatencyInfo()); |
| 1619 EXPECT_TRUE(a_frame_monitor.EventWasReceived()); | 1621 EXPECT_TRUE(a_frame_monitor.EventWasReceived()); |
| 1620 EXPECT_EQ(a_frame_monitor.event().type(), blink::WebInputEvent::MouseMove); | 1622 EXPECT_EQ(a_frame_monitor.event().type(), blink::WebInputEvent::MouseMove); |
| 1621 EXPECT_TRUE(b_frame_monitor.EventWasReceived()); | 1623 EXPECT_TRUE(b_frame_monitor.EventWasReceived()); |
| 1622 EXPECT_EQ(b_frame_monitor.event().type(), blink::WebInputEvent::MouseLeave); | 1624 EXPECT_EQ(b_frame_monitor.event().type(), blink::WebInputEvent::MouseLeave); |
| 1623 EXPECT_TRUE(c_frame_monitor.EventWasReceived()); | 1625 EXPECT_TRUE(c_frame_monitor.EventWasReceived()); |
| 1624 EXPECT_EQ(c_frame_monitor.event().type(), blink::WebInputEvent::MouseMove); | 1626 EXPECT_EQ(c_frame_monitor.event().type(), blink::WebInputEvent::MouseMove); |
| 1625 EXPECT_TRUE(d_frame_monitor.EventWasReceived()); | 1627 EXPECT_TRUE(d_frame_monitor.EventWasReceived()); |
| 1626 } | 1628 } |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1682 int child_frame_target_y = | 1684 int child_frame_target_y = |
| 1683 gfx::ToCeiledInt((bounds.y() - root_view->GetViewBounds().y()) / | 1685 gfx::ToCeiledInt((bounds.y() - root_view->GetViewBounds().y()) / |
| 1684 scale_factor) + | 1686 scale_factor) + |
| 1685 5; | 1687 5; |
| 1686 | 1688 |
| 1687 // Target MouseDown to child frame. | 1689 // Target MouseDown to child frame. |
| 1688 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseDown, | 1690 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseDown, |
| 1689 blink::WebInputEvent::NoModifiers, | 1691 blink::WebInputEvent::NoModifiers, |
| 1690 blink::WebInputEvent::TimeStampForTesting); | 1692 blink::WebInputEvent::TimeStampForTesting); |
| 1691 mouse_event.button = blink::WebPointerProperties::Button::Left; | 1693 mouse_event.button = blink::WebPointerProperties::Button::Left; |
| 1692 mouse_event.x = child_frame_target_x; | 1694 mouse_event.position.x = child_frame_target_x; |
| 1693 mouse_event.y = child_frame_target_y; | 1695 mouse_event.position.y = child_frame_target_y; |
| 1694 mouse_event.clickCount = 1; | 1696 mouse_event.clickCount = 1; |
| 1695 main_frame_monitor.ResetEventReceived(); | 1697 main_frame_monitor.ResetEventReceived(); |
| 1696 child_frame_monitor.ResetEventReceived(); | 1698 child_frame_monitor.ResetEventReceived(); |
| 1697 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1699 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
| 1698 | 1700 |
| 1699 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); | 1701 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); |
| 1700 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); | 1702 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); |
| 1701 | 1703 |
| 1702 // Target MouseMove to main frame. This should still be routed to the | 1704 // Target MouseMove to main frame. This should still be routed to the |
| 1703 // child frame because it is now capturing mouse input. | 1705 // child frame because it is now capturing mouse input. |
| 1704 mouse_event.setType(blink::WebInputEvent::MouseMove); | 1706 mouse_event.setType(blink::WebInputEvent::MouseMove); |
| 1705 mouse_event.setModifiers(blink::WebInputEvent::LeftButtonDown); | 1707 mouse_event.setModifiers(blink::WebInputEvent::LeftButtonDown); |
| 1706 mouse_event.x = 1; | 1708 mouse_event.position.x = 1; |
| 1707 mouse_event.y = 1; | 1709 mouse_event.position.y = 1; |
| 1708 // Note that this event is sent twice, with the monitors cleared after | 1710 // Note that this event is sent twice, with the monitors cleared after |
| 1709 // the first time, because the first MouseMove to the child frame | 1711 // the first time, because the first MouseMove to the child frame |
| 1710 // causes a MouseMove to be sent to the main frame also, which we | 1712 // causes a MouseMove to be sent to the main frame also, which we |
| 1711 // need to ignore. | 1713 // need to ignore. |
| 1712 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1714 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
| 1713 main_frame_monitor.ResetEventReceived(); | 1715 main_frame_monitor.ResetEventReceived(); |
| 1714 child_frame_monitor.ResetEventReceived(); | 1716 child_frame_monitor.ResetEventReceived(); |
| 1715 mouse_event.x = 1; | 1717 mouse_event.position.x = 1; |
| 1716 mouse_event.y = 2; | 1718 mouse_event.position.y = 2; |
| 1717 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1719 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
| 1718 | 1720 |
| 1719 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); | 1721 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); |
| 1720 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); | 1722 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); |
| 1721 | 1723 |
| 1722 // A MouseUp to the child frame should cancel the mouse capture. | 1724 // A MouseUp to the child frame should cancel the mouse capture. |
| 1723 mouse_event.setType(blink::WebInputEvent::MouseUp); | 1725 mouse_event.setType(blink::WebInputEvent::MouseUp); |
| 1724 mouse_event.setModifiers(blink::WebInputEvent::NoModifiers); | 1726 mouse_event.setModifiers(blink::WebInputEvent::NoModifiers); |
| 1725 mouse_event.x = child_frame_target_x; | 1727 mouse_event.position.x = child_frame_target_x; |
| 1726 mouse_event.y = child_frame_target_y; | 1728 mouse_event.position.y = child_frame_target_y; |
| 1727 main_frame_monitor.ResetEventReceived(); | 1729 main_frame_monitor.ResetEventReceived(); |
| 1728 child_frame_monitor.ResetEventReceived(); | 1730 child_frame_monitor.ResetEventReceived(); |
| 1729 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1731 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
| 1730 | 1732 |
| 1731 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); | 1733 EXPECT_FALSE(main_frame_monitor.EventWasReceived()); |
| 1732 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); | 1734 EXPECT_TRUE(child_frame_monitor.EventWasReceived()); |
| 1733 | 1735 |
| 1734 // Subsequent MouseMove events targeted to the main frame should be routed | 1736 // Subsequent MouseMove events targeted to the main frame should be routed |
| 1735 // to that frame. | 1737 // to that frame. |
| 1736 mouse_event.setType(blink::WebInputEvent::MouseMove); | 1738 mouse_event.setType(blink::WebInputEvent::MouseMove); |
| 1737 mouse_event.x = 1; | 1739 mouse_event.position.x = 1; |
| 1738 mouse_event.y = 3; | 1740 mouse_event.position.y = 3; |
| 1739 // Sending the MouseMove twice for the same reason as above. | 1741 // Sending the MouseMove twice for the same reason as above. |
| 1740 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1742 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
| 1741 main_frame_monitor.ResetEventReceived(); | 1743 main_frame_monitor.ResetEventReceived(); |
| 1742 child_frame_monitor.ResetEventReceived(); | 1744 child_frame_monitor.ResetEventReceived(); |
| 1743 mouse_event.x = 1; | 1745 mouse_event.position.x = 1; |
| 1744 mouse_event.y = 4; | 1746 mouse_event.position.y = 4; |
| 1745 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1747 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
| 1746 | 1748 |
| 1747 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); | 1749 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); |
| 1748 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); | 1750 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); |
| 1749 | 1751 |
| 1750 // Target MouseDown to the main frame to cause it to capture input. | 1752 // Target MouseDown to the main frame to cause it to capture input. |
| 1751 mouse_event.setType(blink::WebInputEvent::MouseDown); | 1753 mouse_event.setType(blink::WebInputEvent::MouseDown); |
| 1752 mouse_event.x = 1; | 1754 mouse_event.position.x = 1; |
| 1753 mouse_event.y = 1; | 1755 mouse_event.position.y = 1; |
| 1754 main_frame_monitor.ResetEventReceived(); | 1756 main_frame_monitor.ResetEventReceived(); |
| 1755 child_frame_monitor.ResetEventReceived(); | 1757 child_frame_monitor.ResetEventReceived(); |
| 1756 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1758 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
| 1757 | 1759 |
| 1758 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); | 1760 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); |
| 1759 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); | 1761 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); |
| 1760 | 1762 |
| 1761 // Sending a MouseMove to the child frame should still result in the main | 1763 // Sending a MouseMove to the child frame should still result in the main |
| 1762 // frame receiving the event. | 1764 // frame receiving the event. |
| 1763 mouse_event.setType(blink::WebInputEvent::MouseMove); | 1765 mouse_event.setType(blink::WebInputEvent::MouseMove); |
| 1764 mouse_event.setModifiers(blink::WebInputEvent::LeftButtonDown); | 1766 mouse_event.setModifiers(blink::WebInputEvent::LeftButtonDown); |
| 1765 mouse_event.x = child_frame_target_x; | 1767 mouse_event.position.x = child_frame_target_x; |
| 1766 mouse_event.y = child_frame_target_y; | 1768 mouse_event.position.y = child_frame_target_y; |
| 1767 main_frame_monitor.ResetEventReceived(); | 1769 main_frame_monitor.ResetEventReceived(); |
| 1768 child_frame_monitor.ResetEventReceived(); | 1770 child_frame_monitor.ResetEventReceived(); |
| 1769 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); | 1771 router->RouteMouseEvent(root_view, &mouse_event, ui::LatencyInfo()); |
| 1770 | 1772 |
| 1771 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); | 1773 EXPECT_TRUE(main_frame_monitor.EventWasReceived()); |
| 1772 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); | 1774 EXPECT_FALSE(child_frame_monitor.EventWasReceived()); |
| 1773 } | 1775 } |
| 1774 | 1776 |
| 1775 // Tests OOPIF rendering by checking that the RWH of the iframe generates | 1777 // Tests OOPIF rendering by checking that the RWH of the iframe generates |
| 1776 // OnSwapCompositorFrame message. | 1778 // OnSwapCompositorFrame message. |
| (...skipping 3658 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5435 child_node->current_frame_host()->GetSiteInstance()); | 5437 child_node->current_frame_host()->GetSiteInstance()); |
| 5436 | 5438 |
| 5437 scoped_refptr<CursorMessageFilter> filter = new CursorMessageFilter(); | 5439 scoped_refptr<CursorMessageFilter> filter = new CursorMessageFilter(); |
| 5438 child_node->current_frame_host()->GetProcess()->AddFilter(filter.get()); | 5440 child_node->current_frame_host()->GetProcess()->AddFilter(filter.get()); |
| 5439 | 5441 |
| 5440 // Send a MouseMove to the subframe. The frame contains text, and moving the | 5442 // Send a MouseMove to the subframe. The frame contains text, and moving the |
| 5441 // mouse over it should cause the renderer to send a mouse cursor update. | 5443 // mouse over it should cause the renderer to send a mouse cursor update. |
| 5442 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseMove, | 5444 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseMove, |
| 5443 blink::WebInputEvent::NoModifiers, | 5445 blink::WebInputEvent::NoModifiers, |
| 5444 blink::WebInputEvent::TimeStampForTesting); | 5446 blink::WebInputEvent::TimeStampForTesting); |
| 5445 mouse_event.x = 60; | 5447 mouse_event.position.x = 60; |
| 5446 mouse_event.y = 60; | 5448 mouse_event.position.y = 60; |
| 5447 RenderWidgetHost* rwh_child = | 5449 RenderWidgetHost* rwh_child = |
| 5448 root->child_at(0)->current_frame_host()->GetRenderWidgetHost(); | 5450 root->child_at(0)->current_frame_host()->GetRenderWidgetHost(); |
| 5449 RenderWidgetHostViewBase* root_view = static_cast<RenderWidgetHostViewBase*>( | 5451 RenderWidgetHostViewBase* root_view = static_cast<RenderWidgetHostViewBase*>( |
| 5450 root->current_frame_host()->GetRenderWidgetHost()->GetView()); | 5452 root->current_frame_host()->GetRenderWidgetHost()->GetView()); |
| 5451 web_contents()->GetInputEventRouter()->RouteMouseEvent( | 5453 web_contents()->GetInputEventRouter()->RouteMouseEvent( |
| 5452 root_view, &mouse_event, ui::LatencyInfo()); | 5454 root_view, &mouse_event, ui::LatencyInfo()); |
| 5453 | 5455 |
| 5454 // CursorMessageFilter::Wait() implicitly tests whether we receive a | 5456 // CursorMessageFilter::Wait() implicitly tests whether we receive a |
| 5455 // ViewHostMsg_SetCursor message from the renderer process, because it does | 5457 // ViewHostMsg_SetCursor message from the renderer process, because it does |
| 5456 // does not return otherwise. | 5458 // does not return otherwise. |
| (...skipping 776 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6233 | 6235 |
| 6234 gfx::Point point( | 6236 gfx::Point point( |
| 6235 gfx::ToCeiledInt((bounds.x() - root_bounds.x()) / scale_factor) + 10, | 6237 gfx::ToCeiledInt((bounds.x() - root_bounds.x()) / scale_factor) + 10, |
| 6236 gfx::ToCeiledInt((bounds.y() - root_bounds.y()) / scale_factor) + 10); | 6238 gfx::ToCeiledInt((bounds.y() - root_bounds.y()) / scale_factor) + 10); |
| 6237 | 6239 |
| 6238 // Target right-click event to child frame. | 6240 // Target right-click event to child frame. |
| 6239 blink::WebMouseEvent click_event(blink::WebInputEvent::MouseDown, | 6241 blink::WebMouseEvent click_event(blink::WebInputEvent::MouseDown, |
| 6240 blink::WebInputEvent::NoModifiers, | 6242 blink::WebInputEvent::NoModifiers, |
| 6241 blink::WebInputEvent::TimeStampForTesting); | 6243 blink::WebInputEvent::TimeStampForTesting); |
| 6242 click_event.button = blink::WebPointerProperties::Button::Right; | 6244 click_event.button = blink::WebPointerProperties::Button::Right; |
| 6243 click_event.x = point.x(); | 6245 click_event.position.x = point.x(); |
| 6244 click_event.y = point.y(); | 6246 click_event.position.y = point.y(); |
| 6245 click_event.clickCount = 1; | 6247 click_event.clickCount = 1; |
| 6246 router->RouteMouseEvent(root_view, &click_event, ui::LatencyInfo()); | 6248 router->RouteMouseEvent(root_view, &click_event, ui::LatencyInfo()); |
| 6247 | 6249 |
| 6248 // We also need a MouseUp event, needed by Windows. | 6250 // We also need a MouseUp event, needed by Windows. |
| 6249 click_event.setType(blink::WebInputEvent::MouseUp); | 6251 click_event.setType(blink::WebInputEvent::MouseUp); |
| 6250 click_event.x = point.x(); | 6252 click_event.position.x = point.x(); |
| 6251 click_event.y = point.y(); | 6253 click_event.position.y = point.y(); |
| 6252 router->RouteMouseEvent(root_view, &click_event, ui::LatencyInfo()); | 6254 router->RouteMouseEvent(root_view, &click_event, ui::LatencyInfo()); |
| 6253 | 6255 |
| 6254 context_menu_delegate.Wait(); | 6256 context_menu_delegate.Wait(); |
| 6255 | 6257 |
| 6256 ContextMenuParams params = context_menu_delegate.getParams(); | 6258 ContextMenuParams params = context_menu_delegate.getParams(); |
| 6257 | 6259 |
| 6258 EXPECT_EQ(point.x(), params.x); | 6260 EXPECT_EQ(point.x(), params.x); |
| 6259 EXPECT_EQ(point.y(), params.y); | 6261 EXPECT_EQ(point.y(), params.y); |
| 6260 } | 6262 } |
| 6261 | 6263 |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6387 child_node->current_frame_host()->GetSiteInstance()); | 6389 child_node->current_frame_host()->GetSiteInstance()); |
| 6388 | 6390 |
| 6389 scoped_refptr<ShowWidgetMessageFilter> filter = new ShowWidgetMessageFilter(); | 6391 scoped_refptr<ShowWidgetMessageFilter> filter = new ShowWidgetMessageFilter(); |
| 6390 child_node->current_frame_host()->GetProcess()->AddFilter(filter.get()); | 6392 child_node->current_frame_host()->GetProcess()->AddFilter(filter.get()); |
| 6391 | 6393 |
| 6392 // Target left-click event to child frame. | 6394 // Target left-click event to child frame. |
| 6393 blink::WebMouseEvent click_event(blink::WebInputEvent::MouseDown, | 6395 blink::WebMouseEvent click_event(blink::WebInputEvent::MouseDown, |
| 6394 blink::WebInputEvent::NoModifiers, | 6396 blink::WebInputEvent::NoModifiers, |
| 6395 blink::WebInputEvent::TimeStampForTesting); | 6397 blink::WebInputEvent::TimeStampForTesting); |
| 6396 click_event.button = blink::WebPointerProperties::Button::Left; | 6398 click_event.button = blink::WebPointerProperties::Button::Left; |
| 6397 click_event.x = 15; | 6399 click_event.position.x = 15; |
| 6398 click_event.y = 15; | 6400 click_event.position.y = 15; |
| 6399 click_event.clickCount = 1; | 6401 click_event.clickCount = 1; |
| 6400 rwhv_child->ProcessMouseEvent(click_event, ui::LatencyInfo()); | 6402 rwhv_child->ProcessMouseEvent(click_event, ui::LatencyInfo()); |
| 6401 | 6403 |
| 6402 // Dismiss the popup. | 6404 // Dismiss the popup. |
| 6403 click_event.x = 1; | 6405 click_event.position.x = 1; |
| 6404 click_event.y = 1; | 6406 click_event.position.y = 1; |
| 6405 rwhv_child->ProcessMouseEvent(click_event, ui::LatencyInfo()); | 6407 rwhv_child->ProcessMouseEvent(click_event, ui::LatencyInfo()); |
| 6406 | 6408 |
| 6407 filter->Wait(); | 6409 filter->Wait(); |
| 6408 gfx::Rect popup_rect = filter->last_initial_rect(); | 6410 gfx::Rect popup_rect = filter->last_initial_rect(); |
| 6409 #if defined(OS_MACOSX) || defined(OS_ANDROID) | 6411 #if defined(OS_MACOSX) || defined(OS_ANDROID) |
| 6410 // On Mac and Android we receive the coordinates before they are transformed, | 6412 // On Mac and Android we receive the coordinates before they are transformed, |
| 6411 // so they are still relative to the out-of-process iframe origin. | 6413 // so they are still relative to the out-of-process iframe origin. |
| 6412 EXPECT_EQ(popup_rect.x(), 9); | 6414 EXPECT_EQ(popup_rect.x(), 9); |
| 6413 EXPECT_EQ(popup_rect.y(), 9); | 6415 EXPECT_EQ(popup_rect.y(), 9); |
| 6414 #else | 6416 #else |
| 6415 EXPECT_EQ(popup_rect.x() - rwhv_root->GetViewBounds().x(), 354); | 6417 EXPECT_EQ(popup_rect.x() - rwhv_root->GetViewBounds().x(), 354); |
| 6416 EXPECT_EQ(popup_rect.y() - rwhv_root->GetViewBounds().y(), 94); | 6418 EXPECT_EQ(popup_rect.y() - rwhv_root->GetViewBounds().y(), 94); |
| 6417 #endif | 6419 #endif |
| 6418 | 6420 |
| 6419 #if defined(OS_LINUX) | 6421 #if defined(OS_LINUX) |
| 6420 // Verify click-and-drag selection of popups still works on Linux with | 6422 // Verify click-and-drag selection of popups still works on Linux with |
| 6421 // OOPIFs enabled. This is only necessary to test on Aura because Mac and | 6423 // OOPIFs enabled. This is only necessary to test on Aura because Mac and |
| 6422 // Android use native widgets. Windows does not support this as UI | 6424 // Android use native widgets. Windows does not support this as UI |
| 6423 // convention (it requires separate clicks to open the menu and select an | 6425 // convention (it requires separate clicks to open the menu and select an |
| 6424 // option). See https://crbug.com/703191. | 6426 // option). See https://crbug.com/703191. |
| 6425 int process_id = child_node->current_frame_host()->GetProcess()->GetID(); | 6427 int process_id = child_node->current_frame_host()->GetProcess()->GetID(); |
| 6426 filter->Reset(); | 6428 filter->Reset(); |
| 6427 RenderWidgetHostInputEventRouter* router = | 6429 RenderWidgetHostInputEventRouter* router = |
| 6428 static_cast<WebContentsImpl*>(shell()->web_contents()) | 6430 static_cast<WebContentsImpl*>(shell()->web_contents()) |
| 6429 ->GetInputEventRouter(); | 6431 ->GetInputEventRouter(); |
| 6430 // Re-open the select element. | 6432 // Re-open the select element. |
| 6431 click_event.x = 360; | 6433 click_event.position.x = 360; |
| 6432 click_event.y = 90; | 6434 click_event.position.y = 90; |
| 6433 click_event.clickCount = 1; | 6435 click_event.clickCount = 1; |
| 6434 router->RouteMouseEvent(rwhv_root, &click_event, ui::LatencyInfo()); | 6436 router->RouteMouseEvent(rwhv_root, &click_event, ui::LatencyInfo()); |
| 6435 | 6437 |
| 6436 filter->Wait(); | 6438 filter->Wait(); |
| 6437 | 6439 |
| 6438 RenderWidgetHostView* popup_view = | 6440 RenderWidgetHostView* popup_view = |
| 6439 RenderWidgetHost::FromID(process_id, filter->last_routing_id()) | 6441 RenderWidgetHost::FromID(process_id, filter->last_routing_id()) |
| 6440 ->GetView(); | 6442 ->GetView(); |
| 6441 | 6443 |
| 6442 RenderWidgetHostMouseEventMonitor popup_monitor( | 6444 RenderWidgetHostMouseEventMonitor popup_monitor( |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6504 c_node->current_frame_host()->GetSiteInstance()); | 6506 c_node->current_frame_host()->GetSiteInstance()); |
| 6505 | 6507 |
| 6506 scoped_refptr<ShowWidgetMessageFilter> filter = new ShowWidgetMessageFilter(); | 6508 scoped_refptr<ShowWidgetMessageFilter> filter = new ShowWidgetMessageFilter(); |
| 6507 c_node->current_frame_host()->GetProcess()->AddFilter(filter.get()); | 6509 c_node->current_frame_host()->GetProcess()->AddFilter(filter.get()); |
| 6508 | 6510 |
| 6509 // Target left-click event to child frame. | 6511 // Target left-click event to child frame. |
| 6510 blink::WebMouseEvent click_event(blink::WebInputEvent::MouseDown, | 6512 blink::WebMouseEvent click_event(blink::WebInputEvent::MouseDown, |
| 6511 blink::WebInputEvent::NoModifiers, | 6513 blink::WebInputEvent::NoModifiers, |
| 6512 blink::WebInputEvent::TimeStampForTesting); | 6514 blink::WebInputEvent::TimeStampForTesting); |
| 6513 click_event.button = blink::WebPointerProperties::Button::Left; | 6515 click_event.button = blink::WebPointerProperties::Button::Left; |
| 6514 click_event.x = 15; | 6516 click_event.position.x = 15; |
| 6515 click_event.y = 15; | 6517 click_event.position.y = 15; |
| 6516 click_event.clickCount = 1; | 6518 click_event.clickCount = 1; |
| 6517 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); | 6519 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); |
| 6518 | 6520 |
| 6519 // Prompt the WebContents to dismiss the popup by clicking elsewhere. | 6521 // Prompt the WebContents to dismiss the popup by clicking elsewhere. |
| 6520 click_event.x = 1; | 6522 click_event.position.x = 1; |
| 6521 click_event.y = 1; | 6523 click_event.position.y = 1; |
| 6522 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); | 6524 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); |
| 6523 | 6525 |
| 6524 filter->Wait(); | 6526 filter->Wait(); |
| 6525 | 6527 |
| 6526 gfx::Rect popup_rect = filter->last_initial_rect(); | 6528 gfx::Rect popup_rect = filter->last_initial_rect(); |
| 6527 | 6529 |
| 6528 #if defined(OS_MACOSX) | 6530 #if defined(OS_MACOSX) |
| 6529 EXPECT_EQ(popup_rect.x(), 9); | 6531 EXPECT_EQ(popup_rect.x(), 9); |
| 6530 EXPECT_EQ(popup_rect.y(), 9); | 6532 EXPECT_EQ(popup_rect.y(), 9); |
| 6531 #else | 6533 #else |
| (...skipping 22 matching lines...) Expand all Loading... |
| 6554 b_node->current_frame_host()->GetView()->GetViewBounds().x() && | 6556 b_node->current_frame_host()->GetView()->GetViewBounds().x() && |
| 6555 last_b_node_bounds_rect.y() == | 6557 last_b_node_bounds_rect.y() == |
| 6556 b_node->current_frame_host()->GetView()->GetViewBounds().y()) { | 6558 b_node->current_frame_host()->GetView()->GetViewBounds().y()) { |
| 6557 base::RunLoop run_loop; | 6559 base::RunLoop run_loop; |
| 6558 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( | 6560 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( |
| 6559 FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout()); | 6561 FROM_HERE, run_loop.QuitClosure(), TestTimeouts::tiny_timeout()); |
| 6560 run_loop.Run(); | 6562 run_loop.Run(); |
| 6561 } | 6563 } |
| 6562 | 6564 |
| 6563 click_event.button = blink::WebPointerProperties::Button::Left; | 6565 click_event.button = blink::WebPointerProperties::Button::Left; |
| 6564 click_event.x = 15; | 6566 click_event.position.x = 15; |
| 6565 click_event.y = 15; | 6567 click_event.position.y = 15; |
| 6566 click_event.clickCount = 1; | 6568 click_event.clickCount = 1; |
| 6567 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); | 6569 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); |
| 6568 | 6570 |
| 6569 click_event.x = 1; | 6571 click_event.position.x = 1; |
| 6570 click_event.y = 1; | 6572 click_event.position.y = 1; |
| 6571 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); | 6573 rwhv_c_node->ProcessMouseEvent(click_event, ui::LatencyInfo()); |
| 6572 | 6574 |
| 6573 filter->Wait(); | 6575 filter->Wait(); |
| 6574 | 6576 |
| 6575 popup_rect = filter->last_initial_rect(); | 6577 popup_rect = filter->last_initial_rect(); |
| 6576 | 6578 |
| 6577 #if defined(OS_MACOSX) | 6579 #if defined(OS_MACOSX) |
| 6578 EXPECT_EQ(popup_rect.x(), 9); | 6580 EXPECT_EQ(popup_rect.x(), 9); |
| 6579 EXPECT_EQ(popup_rect.y(), 9); | 6581 EXPECT_EQ(popup_rect.y(), 9); |
| 6580 #else | 6582 #else |
| (...skipping 2814 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9395 ->GetInputEventRouter(); | 9397 ->GetInputEventRouter(); |
| 9396 | 9398 |
| 9397 // Create listener for input events. | 9399 // Create listener for input events. |
| 9398 RenderWidgetHostMouseEventMonitor event_monitor( | 9400 RenderWidgetHostMouseEventMonitor event_monitor( |
| 9399 root->current_frame_host()->GetRenderWidgetHost()); | 9401 root->current_frame_host()->GetRenderWidgetHost()); |
| 9400 | 9402 |
| 9401 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseDown, | 9403 blink::WebMouseEvent mouse_event(blink::WebInputEvent::MouseDown, |
| 9402 blink::WebInputEvent::NoModifiers, | 9404 blink::WebInputEvent::NoModifiers, |
| 9403 blink::WebInputEvent::TimeStampForTesting); | 9405 blink::WebInputEvent::TimeStampForTesting); |
| 9404 mouse_event.button = blink::WebPointerProperties::Button::Left; | 9406 mouse_event.button = blink::WebPointerProperties::Button::Left; |
| 9405 mouse_event.x = 75; | 9407 mouse_event.position.x = 75; |
| 9406 mouse_event.y = 75; | 9408 mouse_event.position.y = 75; |
| 9407 mouse_event.clickCount = 1; | 9409 mouse_event.clickCount = 1; |
| 9408 event_monitor.ResetEventReceived(); | 9410 event_monitor.ResetEventReceived(); |
| 9409 router->RouteMouseEvent(rwhv, &mouse_event, ui::LatencyInfo()); | 9411 router->RouteMouseEvent(rwhv, &mouse_event, ui::LatencyInfo()); |
| 9410 | 9412 |
| 9411 EXPECT_TRUE(event_monitor.EventWasReceived()); | 9413 EXPECT_TRUE(event_monitor.EventWasReceived()); |
| 9412 gfx::Point mouse_down_coords = | 9414 gfx::Point mouse_down_coords = gfx::Point(event_monitor.event().position.x, |
| 9413 gfx::Point(event_monitor.event().x, event_monitor.event().y); | 9415 event_monitor.event().position.y); |
| 9414 event_monitor.ResetEventReceived(); | 9416 event_monitor.ResetEventReceived(); |
| 9415 | 9417 |
| 9416 mouse_event.setType(blink::WebInputEvent::MouseUp); | 9418 mouse_event.setType(blink::WebInputEvent::MouseUp); |
| 9417 mouse_event.x = 75; | 9419 mouse_event.position.x = 75; |
| 9418 mouse_event.y = 75; | 9420 mouse_event.position.y = 75; |
| 9419 router->RouteMouseEvent(rwhv, &mouse_event, ui::LatencyInfo()); | 9421 router->RouteMouseEvent(rwhv, &mouse_event, ui::LatencyInfo()); |
| 9420 | 9422 |
| 9421 EXPECT_TRUE(event_monitor.EventWasReceived()); | 9423 EXPECT_TRUE(event_monitor.EventWasReceived()); |
| 9422 EXPECT_EQ(mouse_down_coords, | 9424 EXPECT_EQ(mouse_down_coords, gfx::Point(event_monitor.event().position.x, |
| 9423 gfx::Point(event_monitor.event().x, event_monitor.event().y)); | 9425 event_monitor.event().position.y)); |
| 9424 } | 9426 } |
| 9425 | 9427 |
| 9426 // This tests that we don't hide the RenderViewHost when reusing the | 9428 // This tests that we don't hide the RenderViewHost when reusing the |
| 9427 // RenderViewHost for a subframe. See https://crbug.com/638375. | 9429 // RenderViewHost for a subframe. See https://crbug.com/638375. |
| 9428 IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, ReusedRenderViewNotHidden) { | 9430 IN_PROC_BROWSER_TEST_F(SitePerProcessBrowserTest, ReusedRenderViewNotHidden) { |
| 9429 GURL a_url(embedded_test_server()->GetURL("a.com", "/title1.html")); | 9431 GURL a_url(embedded_test_server()->GetURL("a.com", "/title1.html")); |
| 9430 GURL b_url_a_subframe(embedded_test_server()->GetURL( | 9432 GURL b_url_a_subframe(embedded_test_server()->GetURL( |
| 9431 "b.com", "/cross_site_iframe_factory.html?b(a)")); | 9433 "b.com", "/cross_site_iframe_factory.html?b(a)")); |
| 9432 | 9434 |
| 9433 EXPECT_TRUE(NavigateToURL(shell(), a_url)); | 9435 EXPECT_TRUE(NavigateToURL(shell(), a_url)); |
| (...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9995 names.insert(root->children[0]->frame_entry->frame_unique_name()); | 9997 names.insert(root->children[0]->frame_entry->frame_unique_name()); |
| 9996 } | 9998 } |
| 9997 | 9999 |
| 9998 // More than one entry in the set means that the subframe frame navigation | 10000 // More than one entry in the set means that the subframe frame navigation |
| 9999 // entries didn't have a consistent unique name. This will break history | 10001 // entries didn't have a consistent unique name. This will break history |
| 10000 // navigations =( | 10002 // navigations =( |
| 10001 EXPECT_THAT(names, SizeIs(1)) << "Mismatched names for subframe!"; | 10003 EXPECT_THAT(names, SizeIs(1)) << "Mismatched names for subframe!"; |
| 10002 } | 10004 } |
| 10003 | 10005 |
| 10004 } // namespace content | 10006 } // namespace content |
| OLD | NEW |