| Index: Source/web/WebHitTestResult.cpp
|
| diff --git a/Source/web/WebHitTestResult.cpp b/Source/web/WebHitTestResult.cpp
|
| index feb094df628b8e9c38fbec020c9189f7c83fa94b..0823dfcc3a97d09c0092344e774583d49b7cc119 100644
|
| --- a/Source/web/WebHitTestResult.cpp
|
| +++ b/Source/web/WebHitTestResult.cpp
|
| @@ -41,52 +41,81 @@ using namespace blink;
|
|
|
| namespace blink {
|
|
|
| +class WebHitTestResultPrivate : public RefCountedWillBeGarbageCollectedFinalized<WebHitTestResultPrivate> {
|
| +public:
|
| + static PassRefPtrWillBeRawPtr<WebHitTestResultPrivate> create(const HitTestResult&);
|
| + static PassRefPtrWillBeRawPtr<WebHitTestResultPrivate> create(const WebHitTestResultPrivate&);
|
| + void trace(Visitor* visitor) { visitor->trace(m_result); }
|
| + const HitTestResult& result() const { return m_result; }
|
| +
|
| +private:
|
| + WebHitTestResultPrivate(const HitTestResult&);
|
| + WebHitTestResultPrivate(const WebHitTestResultPrivate&);
|
| +
|
| + HitTestResult m_result;
|
| +};
|
| +
|
| +inline WebHitTestResultPrivate::WebHitTestResultPrivate(const HitTestResult& result)
|
| + : m_result(result)
|
| +{
|
| +}
|
| +
|
| +inline WebHitTestResultPrivate::WebHitTestResultPrivate(const WebHitTestResultPrivate& result)
|
| + : m_result(result.m_result)
|
| +{
|
| +}
|
| +
|
| +PassRefPtrWillBeRawPtr<WebHitTestResultPrivate> WebHitTestResultPrivate::create(const HitTestResult& result)
|
| +{
|
| + return adoptRefWillBeNoop(new WebHitTestResultPrivate(result));
|
| +}
|
| +
|
| +PassRefPtrWillBeRawPtr<WebHitTestResultPrivate> WebHitTestResultPrivate::create(const WebHitTestResultPrivate& result)
|
| +{
|
| + return adoptRefWillBeNoop(new WebHitTestResultPrivate(result));
|
| +}
|
| +
|
| WebNode WebHitTestResult::node() const
|
| {
|
| - return WebNode(m_private->innerNode());
|
| + return WebNode(m_private->result().innerNode());
|
| }
|
|
|
| WebPoint WebHitTestResult::localPoint() const
|
| {
|
| - return roundedIntPoint(m_private->localPoint());
|
| + return roundedIntPoint(m_private->result().localPoint());
|
| }
|
|
|
| WebElement WebHitTestResult::urlElement() const
|
| {
|
| - return WebElement(m_private->URLElement());
|
| + return WebElement(m_private->result().URLElement());
|
| }
|
|
|
| WebURL WebHitTestResult::absoluteImageURL() const
|
| {
|
| - return m_private->absoluteImageURL();
|
| + return m_private->result().absoluteImageURL();
|
| }
|
|
|
| WebURL WebHitTestResult::absoluteLinkURL() const
|
| {
|
| - return m_private->absoluteLinkURL();
|
| + return m_private->result().absoluteLinkURL();
|
| }
|
|
|
| bool WebHitTestResult::isContentEditable() const
|
| {
|
| - return m_private->isContentEditable();
|
| + return m_private->result().isContentEditable();
|
| }
|
|
|
| WebHitTestResult::WebHitTestResult(const HitTestResult& result)
|
| + : m_private(WebHitTestResultPrivate::create(result))
|
| {
|
| - m_private.reset(new HitTestResult(result));
|
| }
|
|
|
| WebHitTestResult& WebHitTestResult::operator=(const HitTestResult& result)
|
| {
|
| - m_private.reset(new HitTestResult(result));
|
| + m_private = WebHitTestResultPrivate::create(result);
|
| return *this;
|
| }
|
|
|
| -WebHitTestResult::operator HitTestResult() const
|
| -{
|
| - return *m_private.get();
|
| -}
|
| -
|
| bool WebHitTestResult::isNull() const
|
| {
|
| return !m_private.get();
|
| @@ -94,12 +123,15 @@ bool WebHitTestResult::isNull() const
|
|
|
| void WebHitTestResult::assign(const WebHitTestResult& info)
|
| {
|
| - m_private.reset(new HitTestResult(info));
|
| + if (info.isNull())
|
| + m_private.reset();
|
| + else
|
| + m_private = WebHitTestResultPrivate::create(*info.m_private.get());
|
| }
|
|
|
| void WebHitTestResult::reset()
|
| {
|
| - m_private.reset(0);
|
| + m_private.reset();
|
| }
|
|
|
| } // namespace blink
|
|
|