Index: third_party/WebKit/Source/core/layout/HitTestResult.h |
diff --git a/third_party/WebKit/Source/core/layout/HitTestResult.h b/third_party/WebKit/Source/core/layout/HitTestResult.h |
index 156f2fda6e0bf6c983b3c989ea2d1ff5018c9ea8..ebae7fde9710a1a938cf64cf1210be752f82ae18 100644 |
--- a/third_party/WebKit/Source/core/layout/HitTestResult.h |
+++ b/third_party/WebKit/Source/core/layout/HitTestResult.h |
@@ -28,7 +28,6 @@ |
#include "core/layout/HitTestRequest.h" |
#include "platform/geometry/FloatQuad.h" |
#include "platform/geometry/FloatRect.h" |
-#include "platform/geometry/LayoutRect.h" |
#include "platform/heap/Handle.h" |
#include "platform/text/TextDirection.h" |
#include "wtf/Forward.h" |
@@ -47,11 +46,19 @@ class Image; |
class KURL; |
class Node; |
class LayoutObject; |
+class Region; |
class Scrollbar; |
+// List-based hit test testing can continue even after a hit has been found. |
+// This is used to support fuzzy matching with rect-based hit tests as well as |
+// penetrating tests which collect all nodes (see: HitTestRequest::RequestType). |
+enum ListBasedHitTestBehavior { |
+ ContinueHitTesting, |
+ StopHitTesting |
+}; |
+ |
class CORE_EXPORT HitTestResult { |
DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); |
- |
public: |
typedef WillBeHeapListHashSet<RefPtrWillBeMember<Node>> NodeSet; |
@@ -137,8 +144,13 @@ public: |
bool isCacheable() const { return m_cacheable; } |
void setCacheable(bool cacheable) { m_cacheable = cacheable; } |
- // Return true if the test is a list-based test and we should continue testing. |
- bool addNodeToListBasedTestResult(Node*, const HitTestLocation& pointInContainer, const LayoutRect& = LayoutRect()); |
+ // TODO(pdr): When using the default rect argument, this function does not |
+ // check if the tapped area is entirely contained by the HitTestLocation's |
+ // bounding box. Callers should pass a LayoutRect as the third parameter so |
+ // hit testing can early-out when a tapped area is covered. |
+ ListBasedHitTestBehavior addNodeToListBasedTestResult(Node*, const HitTestLocation&, const LayoutRect& = LayoutRect()); |
+ ListBasedHitTestBehavior addNodeToListBasedTestResult(Node*, const HitTestLocation&, const Region&); |
+ |
void append(const HitTestResult&); |
// If m_listBasedTestResult is 0 then set it to a new NodeSet. Return *m_listBasedTestResult. Lazy allocation makes |