Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2400)

Unified Diff: Source/web/WebHitTestResult.cpp

Issue 413903004: Oilpan: Change Persistent<> data members to Member<> in HitTestResult. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698