OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2011, 2012 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 | 493 |
494 m_lastMouseDownPoint = WebPoint(event.x, event.y); | 494 m_lastMouseDownPoint = WebPoint(event.x, event.y); |
495 | 495 |
496 // Take capture on a mouse down on a plugin so we can send it mouse events. | 496 // Take capture on a mouse down on a plugin so we can send it mouse events. |
497 // If the hit node is a plugin but a scrollbar is over it don't start mouse | 497 // If the hit node is a plugin but a scrollbar is over it don't start mouse |
498 // capture because it will interfere with the scrollbar receiving events. | 498 // capture because it will interfere with the scrollbar receiving events. |
499 IntPoint point(event.x, event.y); | 499 IntPoint point(event.x, event.y); |
500 if (event.button == WebMouseEvent::ButtonLeft && m_page->mainFrame()->isLoca
lFrame() && !m_page->deprecatedLocalMainFrame()->view()->scrollbarAtPoint(point)
) { | 500 if (event.button == WebMouseEvent::ButtonLeft && m_page->mainFrame()->isLoca
lFrame() && !m_page->deprecatedLocalMainFrame()->view()->scrollbarAtPoint(point)
) { |
501 point = m_page->deprecatedLocalMainFrame()->view()->windowToContents(poi
nt); | 501 point = m_page->deprecatedLocalMainFrame()->view()->windowToContents(poi
nt); |
502 HitTestResult result(m_page->deprecatedLocalMainFrame()->eventHandler().
hitTestResultAtPoint(point)); | 502 HitTestResult result(m_page->deprecatedLocalMainFrame()->eventHandler().
hitTestResultAtPoint(point)); |
| 503 result.setToShadowHostIfInUserAgentShadowRoot(); |
503 Node* hitNode = result.innerNonSharedNode(); | 504 Node* hitNode = result.innerNonSharedNode(); |
504 | 505 |
505 if (!result.scrollbar() && hitNode && hitNode->renderer() && hitNode->re
nderer()->isEmbeddedObject()) { | 506 if (!result.scrollbar() && hitNode && hitNode->renderer() && hitNode->re
nderer()->isEmbeddedObject()) { |
506 m_mouseCaptureNode = hitNode; | 507 m_mouseCaptureNode = hitNode; |
507 TRACE_EVENT_ASYNC_BEGIN0("input", "capturing mouse", this); | 508 TRACE_EVENT_ASYNC_BEGIN0("input", "capturing mouse", this); |
508 } | 509 } |
509 } | 510 } |
510 | 511 |
511 PageWidgetEventHandler::handleMouseDown(mainFrame, event); | 512 PageWidgetEventHandler::handleMouseDown(mainFrame, event); |
512 | 513 |
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1043 | 1044 |
1044 WebRect WebViewImpl::computeBlockBounds(const WebRect& rect, bool ignoreClipping
) | 1045 WebRect WebViewImpl::computeBlockBounds(const WebRect& rect, bool ignoreClipping
) |
1045 { | 1046 { |
1046 if (!mainFrameImpl()) | 1047 if (!mainFrameImpl()) |
1047 return WebRect(); | 1048 return WebRect(); |
1048 | 1049 |
1049 // Use the rect-based hit test to find the node. | 1050 // Use the rect-based hit test to find the node. |
1050 IntPoint point = mainFrameImpl()->frameView()->windowToContents(IntPoint(rec
t.x, rect.y)); | 1051 IntPoint point = mainFrameImpl()->frameView()->windowToContents(IntPoint(rec
t.x, rect.y)); |
1051 HitTestRequest::HitTestRequestType hitType = HitTestRequest::ReadOnly | HitT
estRequest::Active | (ignoreClipping ? HitTestRequest::IgnoreClipping : 0); | 1052 HitTestRequest::HitTestRequestType hitType = HitTestRequest::ReadOnly | HitT
estRequest::Active | (ignoreClipping ? HitTestRequest::IgnoreClipping : 0); |
1052 HitTestResult result = mainFrameImpl()->frame()->eventHandler().hitTestResul
tAtPoint(point, hitType, IntSize(rect.width, rect.height)); | 1053 HitTestResult result = mainFrameImpl()->frame()->eventHandler().hitTestResul
tAtPoint(point, hitType, IntSize(rect.width, rect.height)); |
| 1054 result.setToShadowHostIfInUserAgentShadowRoot(); |
1053 | 1055 |
1054 Node* node = result.innerNonSharedNode(); | 1056 Node* node = result.innerNonSharedNode(); |
1055 if (!node) | 1057 if (!node) |
1056 return WebRect(); | 1058 return WebRect(); |
1057 | 1059 |
1058 // Find the block type node based on the hit node. | 1060 // Find the block type node based on the hit node. |
| 1061 // FIXME: This wants to walk composed tree with NodeRenderingTraversal::pare
nt(). |
1059 while (node && (!node->renderer() || node->renderer()->isInline())) | 1062 while (node && (!node->renderer() || node->renderer()->isInline())) |
1060 node = NodeRenderingTraversal::parent(node); | 1063 node = NodeRenderingTraversal::parent(node); |
1061 | 1064 |
1062 // Return the bounding box in the window coordinate system. | 1065 // Return the bounding box in the window coordinate system. |
1063 if (node) { | 1066 if (node) { |
1064 IntRect rect = node->Node::pixelSnappedBoundingBox(); | 1067 IntRect rect = node->Node::pixelSnappedBoundingBox(); |
1065 LocalFrame* frame = node->document().frame(); | 1068 LocalFrame* frame = node->document().frame(); |
1066 return frame->view()->contentsToWindow(rect); | 1069 return frame->view()->contentsToWindow(rect); |
1067 } | 1070 } |
1068 return WebRect(); | 1071 return WebRect(); |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1204 if (!m_page || !m_page->mainFrame()) | 1207 if (!m_page || !m_page->mainFrame()) |
1205 return 0; | 1208 return 0; |
1206 | 1209 |
1207 // FIXME: Rely on earlier hit test instead of hit testing again. | 1210 // FIXME: Rely on earlier hit test instead of hit testing again. |
1208 GestureEventWithHitTestResults targetedEvent = | 1211 GestureEventWithHitTestResults targetedEvent = |
1209 m_page->deprecatedLocalMainFrame()->eventHandler().targetGestureEvent(ta
pEvent, true); | 1212 m_page->deprecatedLocalMainFrame()->eventHandler().targetGestureEvent(ta
pEvent, true); |
1210 Node* bestTouchNode = targetedEvent.hitTestResult().targetNode(); | 1213 Node* bestTouchNode = targetedEvent.hitTestResult().targetNode(); |
1211 | 1214 |
1212 // We might hit something like an image map that has no renderer on it | 1215 // We might hit something like an image map that has no renderer on it |
1213 // Walk up the tree until we have a node with an attached renderer | 1216 // Walk up the tree until we have a node with an attached renderer |
| 1217 // FIXME: This wants to walk composed tree with NodeRenderingTraversal::pare
nt(). |
1214 while (bestTouchNode && !bestTouchNode->renderer()) | 1218 while (bestTouchNode && !bestTouchNode->renderer()) |
1215 bestTouchNode = NodeRenderingTraversal::parent(bestTouchNode); | 1219 bestTouchNode = NodeRenderingTraversal::parent(bestTouchNode); |
1216 | 1220 |
1217 Node* cursorDefiningAncestor = | 1221 Node* cursorDefiningAncestor = |
1218 findCursorDefiningAncestor(bestTouchNode, m_page->deprecatedLocalMainFra
me()); | 1222 findCursorDefiningAncestor(bestTouchNode, m_page->deprecatedLocalMainFra
me()); |
1219 // We show a highlight on tap only when the current node shows a hand cursor | 1223 // We show a highlight on tap only when the current node shows a hand cursor |
1220 if (!cursorDefiningAncestor || !showsHandCursor(cursorDefiningAncestor, m_pa
ge->deprecatedLocalMainFrame())) { | 1224 if (!cursorDefiningAncestor || !showsHandCursor(cursorDefiningAncestor, m_pa
ge->deprecatedLocalMainFrame())) { |
1221 return 0; | 1225 return 0; |
1222 } | 1226 } |
1223 | 1227 |
(...skipping 2650 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3874 return 0; | 3878 return 0; |
3875 | 3879 |
3876 return document->focusedElement(); | 3880 return document->focusedElement(); |
3877 } | 3881 } |
3878 | 3882 |
3879 HitTestResult WebViewImpl::hitTestResultForWindowPos(const IntPoint& pos) | 3883 HitTestResult WebViewImpl::hitTestResultForWindowPos(const IntPoint& pos) |
3880 { | 3884 { |
3881 if (!m_page->mainFrame()->isLocalFrame()) | 3885 if (!m_page->mainFrame()->isLocalFrame()) |
3882 return HitTestResult(); | 3886 return HitTestResult(); |
3883 IntPoint docPoint(m_page->deprecatedLocalMainFrame()->view()->windowToConten
ts(pos)); | 3887 IntPoint docPoint(m_page->deprecatedLocalMainFrame()->view()->windowToConten
ts(pos)); |
3884 return m_page->deprecatedLocalMainFrame()->eventHandler().hitTestResultAtPoi
nt(docPoint, HitTestRequest::ReadOnly | HitTestRequest::Active); | 3888 HitTestResult result = m_page->deprecatedLocalMainFrame()->eventHandler().hi
tTestResultAtPoint(docPoint, HitTestRequest::ReadOnly | HitTestRequest::Active); |
| 3889 result.setToShadowHostIfInUserAgentShadowRoot(); |
| 3890 return result; |
3885 } | 3891 } |
3886 | 3892 |
3887 void WebViewImpl::setTabsToLinks(bool enable) | 3893 void WebViewImpl::setTabsToLinks(bool enable) |
3888 { | 3894 { |
3889 m_tabsToLinks = enable; | 3895 m_tabsToLinks = enable; |
3890 } | 3896 } |
3891 | 3897 |
3892 bool WebViewImpl::tabsToLinks() const | 3898 bool WebViewImpl::tabsToLinks() const |
3893 { | 3899 { |
3894 return m_tabsToLinks; | 3900 return m_tabsToLinks; |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4268 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi
nedConstraints(); | 4274 const PageScaleConstraints& constraints = m_pageScaleConstraintsSet.pageDefi
nedConstraints(); |
4269 | 4275 |
4270 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) | 4276 if (!mainFrameImpl() || !mainFrameImpl()->frameView()) |
4271 return false; | 4277 return false; |
4272 | 4278 |
4273 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width | 4279 return mainFrameImpl()->frameView()->layoutSize().width() == m_size.width |
4274 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); | 4280 || (constraints.minimumScale == constraints.maximumScale && constraints.
minimumScale != -1); |
4275 } | 4281 } |
4276 | 4282 |
4277 } // namespace blink | 4283 } // namespace blink |
OLD | NEW |