HitTestResult should not be a HitTestLocation
authorallan.jensen@digia.com <allan.jensen@digia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 26 Nov 2012 13:54:02 +0000 (13:54 +0000)
committerallan.jensen@digia.com <allan.jensen@digia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 26 Nov 2012 13:54:02 +0000 (13:54 +0000)
https://bugs.webkit.org/show_bug.cgi?id=101590

Reviewed by Sam Weinig.

Change HitTestResult from being a HitTestLocation to having a HitTestLocation.
A result of a test should not be a special case of the location of the test.

No change in functionality. No new tests.

* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::HitTestResult):
(WebCore::HitTestResult::operator=):
(WebCore::HitTestResult::isSelected):
(WebCore::HitTestResult::spellingToolTip):
(WebCore::HitTestResult::replacedString):
* rendering/HitTestResult.h:
(WebCore::HitTestResult::isRectBasedTest):
(WebCore::HitTestResult::pointInInnerNodeFrame):
(WebCore::HitTestResult::hitTestLocation):
(HitTestResult):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@135710 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/rendering/HitTestResult.cpp
Source/WebCore/rendering/HitTestResult.h

index 631aab2..1930da8 100644 (file)
@@ -1,3 +1,27 @@
+2012-11-26  Allan Sandfeld Jensen  <allan.jensen@digia.com>
+
+        HitTestResult should not be a HitTestLocation
+        https://bugs.webkit.org/show_bug.cgi?id=101590
+
+        Reviewed by Sam Weinig.
+
+        Change HitTestResult from being a HitTestLocation to having a HitTestLocation. 
+        A result of a test should not be a special case of the location of the test.
+
+        No change in functionality. No new tests.
+
+        * rendering/HitTestResult.cpp:
+        (WebCore::HitTestResult::HitTestResult):
+        (WebCore::HitTestResult::operator=):
+        (WebCore::HitTestResult::isSelected):
+        (WebCore::HitTestResult::spellingToolTip):
+        (WebCore::HitTestResult::replacedString):
+        * rendering/HitTestResult.h:
+        (WebCore::HitTestResult::isRectBasedTest):
+        (WebCore::HitTestResult::pointInInnerNodeFrame):
+        (WebCore::HitTestResult::hitTestLocation):
+        (HitTestResult):
+
 2012-11-26  Marja Hölttä  <marja@chromium.org>
 
         Circular reference between Document and MediaQueryMatcher.
index 8553d6f..54b8f19 100644 (file)
@@ -192,34 +192,34 @@ IntRect HitTestLocation::rectForPoint(const LayoutPoint& point, unsigned topPadd
     return IntRect(actualPoint, actualPadding);
 }
 
-HitTestResult::HitTestResult() : HitTestLocation()
-    , m_isOverWidget(false)
+HitTestResult::HitTestResult()
+    : m_isOverWidget(false)
 {
 }
 
 HitTestResult::HitTestResult(const LayoutPoint& point)
-    : HitTestLocation(point)
+    : m_hitTestLocation(point)
     , m_pointInMainFrame(point)
     , m_isOverWidget(false)
 {
 }
 
 HitTestResult::HitTestResult(const LayoutPoint& centerPoint, unsigned topPadding, unsigned rightPadding, unsigned bottomPadding, unsigned leftPadding)
-    : HitTestLocation(centerPoint, topPadding, rightPadding, bottomPadding, leftPadding)
+    : m_hitTestLocation(centerPoint, topPadding, rightPadding, bottomPadding, leftPadding)
     , m_pointInMainFrame(centerPoint)
     , m_isOverWidget(false)
 {
 }
 
 HitTestResult::HitTestResult(const HitTestLocation& other)
-    : HitTestLocation(other)
-    , m_pointInMainFrame(point())
+    : m_hitTestLocation(other)
+    , m_pointInMainFrame(m_hitTestLocation.point())
     , m_isOverWidget(false)
 {
 }
 
 HitTestResult::HitTestResult(const HitTestResult& other)
-    : HitTestLocation(other)
+    : m_hitTestLocation(other.m_hitTestLocation)
     , m_innerNode(other.innerNode())
     , m_innerNonSharedNode(other.innerNonSharedNode())
     , m_pointInMainFrame(other.m_pointInMainFrame)
@@ -238,7 +238,7 @@ HitTestResult::~HitTestResult()
 
 HitTestResult& HitTestResult::operator=(const HitTestResult& other)
 {
-    HitTestLocation::operator=(other);
+    m_hitTestLocation = other.m_hitTestLocation;
     m_innerNode = other.innerNode();
     m_innerNonSharedNode = other.innerNonSharedNode();
     m_pointInMainFrame = other.m_pointInMainFrame;
@@ -315,7 +315,7 @@ bool HitTestResult::isSelected() const
     if (!frame)
         return false;
 
-    return frame->selection()->contains(point());
+    return frame->selection()->contains(m_hitTestLocation.point());
 }
 
 String HitTestResult::spellingToolTip(TextDirection& dir) const
@@ -326,7 +326,7 @@ String HitTestResult::spellingToolTip(TextDirection& dir) const
     if (!m_innerNonSharedNode)
         return String();
     
-    DocumentMarker* marker = m_innerNonSharedNode->document()->markers()->markerContainingPoint(point(), DocumentMarker::Grammar);
+    DocumentMarker* marker = m_innerNonSharedNode->document()->markers()->markerContainingPoint(m_hitTestLocation.point(), DocumentMarker::Grammar);
     if (!marker)
         return String();
 
@@ -342,7 +342,7 @@ String HitTestResult::replacedString() const
     if (!m_innerNonSharedNode)
         return String();
     
-    DocumentMarker* marker = m_innerNonSharedNode->document()->markers()->markerContainingPoint(point(), DocumentMarker::Replacement);
+    DocumentMarker* marker = m_innerNonSharedNode->document()->markers()->markerContainingPoint(m_hitTestLocation.point(), DocumentMarker::Replacement);
     if (!marker)
         return String();
     
index b219a97..ecc7e3b 100644 (file)
@@ -45,6 +45,7 @@ class Node;
 class RenderRegion;
 class Scrollbar;
 
+// FIXME: HitTestLocation should be moved to a separate file.
 class HitTestLocation {
 public:
 
@@ -100,8 +101,7 @@ private:
     bool m_isRectilinear;
 };
 
-// FIXME: HitTestResult should not be a HitTestLocation, but instead have a HitTestLocation. See https://bugs.webkit.org/show_bug.cgi?id=101590
-class HitTestResult : protected HitTestLocation {
+class HitTestResult {
 public:
     typedef ListHashSet<RefPtr<Node> > NodeSet;
 
@@ -121,7 +121,7 @@ public:
     bool isOverWidget() const { return m_isOverWidget; }
 
     // Forwarded from HitTestLocation
-    bool isRectBasedTest() const { return HitTestLocation::isRectBasedTest(); }
+    bool isRectBasedTest() const { return m_hitTestLocation.isRectBasedTest(); }
 
     // The hit-tested point in the coordinates of the main frame.
     const LayoutPoint& pointInMainFrame() const { return m_pointInMainFrame; }
@@ -129,7 +129,7 @@ public:
     void setPointInMainFrame(const LayoutPoint& p) { m_pointInMainFrame = p; }
 
     // The hit-tested point in the coordinates of the innerNode frame, the frame containing innerNode.
-    const LayoutPoint& pointInInnerNodeFrame() const { return HitTestLocation::point(); }
+    const LayoutPoint& pointInInnerNodeFrame() const { return m_hitTestLocation.point(); }
     IntPoint roundedPointInInnerNodeFrame() const { return roundedIntPoint(pointInInnerNodeFrame()); }
     Frame* innerNodeFrame() const;
 
@@ -139,7 +139,7 @@ public:
 
     void setToNonShadowAncestor();
 
-    const HitTestLocation& hitTestLocation() const { return *this; }
+    const HitTestLocation& hitTestLocation() const { return m_hitTestLocation; }
 
     void setInnerNode(Node*);
     void setInnerNonSharedNode(Node*);
@@ -198,6 +198,7 @@ private:
 #if ENABLE(VIDEO)
     HTMLMediaElement* mediaElement() const;
 #endif
+    HitTestLocation m_hitTestLocation;
 
     RefPtr<Node> m_innerNode;
     RefPtr<Node> m_innerNonSharedNode;