Chromium Code Reviews| Index: Source/web/WebHitTestResult.cpp |
| diff --git a/Source/web/WebHitTestResult.cpp b/Source/web/WebHitTestResult.cpp |
| index 4210e21dd24b0ca4d89126915667b8034a32950f..6ce2a80152c5e2d25563e9ec433a931fde44685b 100644 |
| --- a/Source/web/WebHitTestResult.cpp |
| +++ b/Source/web/WebHitTestResult.cpp |
| @@ -41,52 +41,80 @@ using namespace WebCore; |
| namespace blink { |
| +class WebHitTestResultPrivate { |
|
sof
2014/06/18 06:36:32
I think it would be better to have a WebPrivateOwn
|
| +public: |
| + WebHitTestResultPrivate(const HitTestResult&); |
| + WebHitTestResultPrivate(const WebHitTestResultPrivate&); |
| + |
| + RefPtrWillBePersistent<Node> innerNode; |
| + RefPtrWillBePersistent<Element> innerURLElement; |
| + LayoutPoint localPoint; |
| + KURL absoluteImageURL; |
| + KURL absoluteLinkURL; |
| + bool isContentEditable; |
| +}; |
| + |
| +inline WebHitTestResultPrivate::WebHitTestResultPrivate(const HitTestResult& result) |
| + : innerNode(result.innerNode()) |
| + , innerURLElement(result.URLElement()) |
| + , localPoint(result.localPoint()) |
| + , absoluteImageURL(result.absoluteImageURL()) |
| + , absoluteLinkURL(result.absoluteLinkURL()) |
| + , isContentEditable(result.isContentEditable()) |
| +{ |
| +} |
| + |
| +inline WebHitTestResultPrivate::WebHitTestResultPrivate(const WebHitTestResultPrivate& result) |
| + : innerNode(result.innerNode) |
| + , innerURLElement(result.innerURLElement) |
| + , localPoint(result.localPoint) |
| + , absoluteImageURL(result.absoluteImageURL) |
| + , absoluteLinkURL(result.absoluteLinkURL) |
| + , isContentEditable(result.isContentEditable) |
| +{ |
| +} |
| + |
| WebNode WebHitTestResult::node() const |
| { |
| - return WebNode(m_private->innerNode()); |
| + return WebNode(m_private->innerNode); |
| } |
| WebPoint WebHitTestResult::localPoint() const |
| { |
| - return roundedIntPoint(m_private->localPoint()); |
| + return roundedIntPoint(m_private->localPoint); |
| } |
| WebElement WebHitTestResult::urlElement() const |
| { |
| - return WebElement(m_private->URLElement()); |
| + return WebElement(m_private->innerURLElement); |
| } |
| WebURL WebHitTestResult::absoluteImageURL() const |
| { |
| - return m_private->absoluteImageURL(); |
| + return m_private->absoluteImageURL; |
| } |
| WebURL WebHitTestResult::absoluteLinkURL() const |
| { |
| - return m_private->absoluteLinkURL(); |
| + return m_private->absoluteLinkURL; |
| } |
| bool WebHitTestResult::isContentEditable() const |
| { |
| - return m_private->isContentEditable(); |
| + return m_private->isContentEditable; |
| } |
| WebHitTestResult::WebHitTestResult(const HitTestResult& result) |
| { |
| - m_private.reset(new HitTestResult(result)); |
| + m_private.reset(new WebHitTestResultPrivate(result)); |
| } |
| WebHitTestResult& WebHitTestResult::operator=(const HitTestResult& result) |
| { |
| - m_private.reset(new HitTestResult(result)); |
| + m_private.reset(new WebHitTestResultPrivate(result)); |
| return *this; |
| } |
| -WebHitTestResult::operator HitTestResult() const |
| -{ |
| - return *m_private.get(); |
| -} |
| - |
| bool WebHitTestResult::isNull() const |
| { |
| return !m_private.get(); |
| @@ -94,7 +122,10 @@ bool WebHitTestResult::isNull() const |
| void WebHitTestResult::assign(const WebHitTestResult& info) |
| { |
| - m_private.reset(new HitTestResult(info)); |
| + if (info.isNull()) |
| + m_private.reset(0); |
| + else |
| + m_private.reset(new WebHitTestResultPrivate(*info.m_private.get())); |
| } |
| void WebHitTestResult::reset() |