Chromium Code Reviews| Index: third_party/WebKit/Source/platform/exported/WebURLResponse.cpp |
| diff --git a/third_party/WebKit/Source/platform/exported/WebURLResponse.cpp b/third_party/WebKit/Source/platform/exported/WebURLResponse.cpp |
| index 2dda37aad69b8a5edba21466de29ddb3327ae1a2..fb712d22e7bec2192ba31a0066342720b0e4b025 100644 |
| --- a/third_party/WebKit/Source/platform/exported/WebURLResponse.cpp |
| +++ b/third_party/WebKit/Source/platform/exported/WebURLResponse.cpp |
| @@ -39,6 +39,7 @@ |
| #include "public/platform/WebURL.h" |
| #include "public/platform/WebURLLoadTiming.h" |
| #include "wtf/Allocator.h" |
| +#include "wtf/Assertions.h" |
| #include "wtf/PtrUtil.h" |
| #include "wtf/RefPtr.h" |
| #include <memory> |
| @@ -76,8 +77,8 @@ public: |
| m_resourceResponse = &m_resourceResponseAllocation; |
| } |
| - WebURLResponsePrivateImpl(const WebURLResponsePrivate* p) |
| - : m_resourceResponseAllocation(*p->m_resourceResponse) |
| + WebURLResponsePrivateImpl(const WebURLResponsePrivate& p) |
| + : m_resourceResponseAllocation(*p.m_resourceResponse) |
| { |
| m_resourceResponse = &m_resourceResponseAllocation; |
| } |
| @@ -90,25 +91,36 @@ private: |
| ResourceResponse m_resourceResponseAllocation; |
| }; |
| -void WebURLResponse::initialize() |
| +WebURLResponse::~WebURLResponse() |
| { |
| - assign(new WebURLResponsePrivateImpl()); |
| + m_private->dispose(); |
| } |
| -void WebURLResponse::reset() |
| +WebURLResponse::WebURLResponse() |
| + : m_private(new WebURLResponsePrivateImpl()) |
| { |
| - assign(0); |
| +} |
| +WebURLResponse::WebURLResponse(const WebURLResponse& r) |
| + : m_private(new WebURLResponsePrivateImpl(*r.m_private)) |
| +{ |
| +} |
| + |
| +WebURLResponse::WebURLResponse(const WebURL& url) |
| + : WebURLResponse() |
| +{ |
| + setURL(url); |
| } |
| -void WebURLResponse::assign(const WebURLResponse& r) |
| +WebURLResponse& WebURLResponse::operator=(const WebURLResponse& r) |
| { |
| if (&r != this) |
| - assign(r.m_private ? new WebURLResponsePrivateImpl(r.m_private) : 0); |
| + assign(new WebURLResponsePrivateImpl(*r.m_private)); |
| + return *this; |
| } |
| bool WebURLResponse::isNull() const |
| { |
| - return !m_private || m_private->m_resourceResponse->isNull(); |
| + return m_private->m_resourceResponse->isNull(); |
| } |
| WebURL WebURLResponse::url() const |
| @@ -338,16 +350,16 @@ void WebURLResponse::setSecurityDetails(const WebSecurityDetails& webSecurityDet |
| ResourceResponse& WebURLResponse::toMutableResourceResponse() |
| { |
| - ASSERT(m_private); |
| - ASSERT(m_private->m_resourceResponse); |
| + DCHECK(m_private); |
|
kinuko
2016/07/05 14:59:44
This DCHECK seems redundant now (here and below)
|
| + DCHECK(m_private->m_resourceResponse); |
| return *m_private->m_resourceResponse; |
| } |
| const ResourceResponse& WebURLResponse::toResourceResponse() const |
| { |
| - ASSERT(m_private); |
| - ASSERT(m_private->m_resourceResponse); |
| + DCHECK(m_private); |
| + DCHECK(m_private->m_resourceResponse); |
| return *m_private->m_resourceResponse; |
| } |
| @@ -507,14 +519,19 @@ void WebURLResponse::setExtraData(WebURLResponse::ExtraData* extraData) |
| m_private->m_resourceResponse->setExtraData(ExtraDataContainer::create(extraData)); |
| } |
| +WebURLResponse::WebURLResponse(WebURLResponsePrivate* p) |
| + : m_private(p) |
| +{ |
| + DCHECK(p); |
| +} |
| + |
| void WebURLResponse::assign(WebURLResponsePrivate* p) |
|
kinuko
2016/07/05 14:59:44
At this point I don't feel having this method's ve
|
| { |
| - // Subclasses may call this directly so a self-assignment check is needed |
| - // here as well as in the public assign method. |
| + DCHECK(p); |
| + // Subclasses may perform self-assignment. |
| if (m_private == p) |
| return; |
| - if (m_private) |
| - m_private->dispose(); |
| + m_private->dispose(); |
| m_private = p; |
| } |