Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 32 | 32 |
| 33 #include "platform/exported/WebURLResponsePrivate.h" | 33 #include "platform/exported/WebURLResponsePrivate.h" |
| 34 #include "platform/network/ResourceLoadTiming.h" | 34 #include "platform/network/ResourceLoadTiming.h" |
| 35 #include "platform/network/ResourceResponse.h" | 35 #include "platform/network/ResourceResponse.h" |
| 36 #include "public/platform/WebHTTPHeaderVisitor.h" | 36 #include "public/platform/WebHTTPHeaderVisitor.h" |
| 37 #include "public/platform/WebHTTPLoadInfo.h" | 37 #include "public/platform/WebHTTPLoadInfo.h" |
| 38 #include "public/platform/WebString.h" | 38 #include "public/platform/WebString.h" |
| 39 #include "public/platform/WebURL.h" | 39 #include "public/platform/WebURL.h" |
| 40 #include "public/platform/WebURLLoadTiming.h" | 40 #include "public/platform/WebURLLoadTiming.h" |
| 41 #include "wtf/Allocator.h" | 41 #include "wtf/Allocator.h" |
| 42 #include "wtf/Assertions.h" | |
| 42 #include "wtf/PtrUtil.h" | 43 #include "wtf/PtrUtil.h" |
| 43 #include "wtf/RefPtr.h" | 44 #include "wtf/RefPtr.h" |
| 44 #include <memory> | 45 #include <memory> |
| 45 | 46 |
| 46 namespace blink { | 47 namespace blink { |
| 47 | 48 |
| 48 namespace { | 49 namespace { |
| 49 | 50 |
| 50 class ExtraDataContainer : public ResourceResponse::ExtraData { | 51 class ExtraDataContainer : public ResourceResponse::ExtraData { |
| 51 public: | 52 public: |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 69 // The standard implementation of WebURLResponsePrivate, which maintains | 70 // The standard implementation of WebURLResponsePrivate, which maintains |
| 70 // ownership of a ResourceResponse instance. | 71 // ownership of a ResourceResponse instance. |
| 71 class WebURLResponsePrivateImpl final : public WebURLResponsePrivate { | 72 class WebURLResponsePrivateImpl final : public WebURLResponsePrivate { |
| 72 USING_FAST_MALLOC(WebURLResponsePrivateImpl); | 73 USING_FAST_MALLOC(WebURLResponsePrivateImpl); |
| 73 public: | 74 public: |
| 74 WebURLResponsePrivateImpl() | 75 WebURLResponsePrivateImpl() |
| 75 { | 76 { |
| 76 m_resourceResponse = &m_resourceResponseAllocation; | 77 m_resourceResponse = &m_resourceResponseAllocation; |
| 77 } | 78 } |
| 78 | 79 |
| 79 WebURLResponsePrivateImpl(const WebURLResponsePrivate* p) | 80 WebURLResponsePrivateImpl(const WebURLResponsePrivate& p) |
| 80 : m_resourceResponseAllocation(*p->m_resourceResponse) | 81 : m_resourceResponseAllocation(*p.m_resourceResponse) |
| 81 { | 82 { |
| 82 m_resourceResponse = &m_resourceResponseAllocation; | 83 m_resourceResponse = &m_resourceResponseAllocation; |
| 83 } | 84 } |
| 84 | 85 |
| 85 virtual void dispose() { delete this; } | 86 virtual void dispose() { delete this; } |
| 86 | 87 |
| 87 private: | 88 private: |
| 88 virtual ~WebURLResponsePrivateImpl() { } | 89 virtual ~WebURLResponsePrivateImpl() { } |
| 89 | 90 |
| 90 ResourceResponse m_resourceResponseAllocation; | 91 ResourceResponse m_resourceResponseAllocation; |
| 91 }; | 92 }; |
| 92 | 93 |
| 93 void WebURLResponse::initialize() | 94 WebURLResponse::~WebURLResponse() |
| 94 { | 95 { |
| 95 assign(new WebURLResponsePrivateImpl()); | 96 m_private->dispose(); |
| 96 } | 97 } |
| 97 | 98 |
| 98 void WebURLResponse::reset() | 99 WebURLResponse::WebURLResponse() |
| 100 : m_private(new WebURLResponsePrivateImpl()) | |
| 99 { | 101 { |
| 100 assign(0); | 102 } |
| 103 WebURLResponse::WebURLResponse(const WebURLResponse& r) | |
| 104 : m_private(new WebURLResponsePrivateImpl(*r.m_private)) | |
| 105 { | |
| 101 } | 106 } |
| 102 | 107 |
| 103 void WebURLResponse::assign(const WebURLResponse& r) | 108 WebURLResponse::WebURLResponse(const WebURL& url) |
| 109 : WebURLResponse() | |
| 110 { | |
| 111 setURL(url); | |
| 112 } | |
| 113 | |
| 114 WebURLResponse& WebURLResponse::operator=(const WebURLResponse& r) | |
| 104 { | 115 { |
| 105 if (&r != this) | 116 if (&r != this) |
| 106 assign(r.m_private ? new WebURLResponsePrivateImpl(r.m_private) : 0); | 117 assign(new WebURLResponsePrivateImpl(*r.m_private)); |
| 118 return *this; | |
| 107 } | 119 } |
| 108 | 120 |
| 109 bool WebURLResponse::isNull() const | 121 bool WebURLResponse::isNull() const |
| 110 { | 122 { |
| 111 return !m_private || m_private->m_resourceResponse->isNull(); | 123 return m_private->m_resourceResponse->isNull(); |
| 112 } | 124 } |
| 113 | 125 |
| 114 WebURL WebURLResponse::url() const | 126 WebURL WebURLResponse::url() const |
| 115 { | 127 { |
| 116 return m_private->m_resourceResponse->url(); | 128 return m_private->m_resourceResponse->url(); |
| 117 } | 129 } |
| 118 | 130 |
| 119 void WebURLResponse::setURL(const WebURL& url) | 131 void WebURLResponse::setURL(const WebURL& url) |
| 120 { | 132 { |
| 121 m_private->m_resourceResponse->setURL(url); | 133 m_private->m_resourceResponse->setURL(url); |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 331 webSecurityDetails.cipher, | 343 webSecurityDetails.cipher, |
| 332 webSecurityDetails.mac, | 344 webSecurityDetails.mac, |
| 333 webSecurityDetails.certId, | 345 webSecurityDetails.certId, |
| 334 webSecurityDetails.numUnknownScts, | 346 webSecurityDetails.numUnknownScts, |
| 335 webSecurityDetails.numInvalidScts, | 347 webSecurityDetails.numInvalidScts, |
| 336 webSecurityDetails.numValidScts); | 348 webSecurityDetails.numValidScts); |
| 337 } | 349 } |
| 338 | 350 |
| 339 ResourceResponse& WebURLResponse::toMutableResourceResponse() | 351 ResourceResponse& WebURLResponse::toMutableResourceResponse() |
| 340 { | 352 { |
| 341 ASSERT(m_private); | 353 DCHECK(m_private); |
|
kinuko
2016/07/05 14:59:44
This DCHECK seems redundant now (here and below)
| |
| 342 ASSERT(m_private->m_resourceResponse); | 354 DCHECK(m_private->m_resourceResponse); |
| 343 | 355 |
| 344 return *m_private->m_resourceResponse; | 356 return *m_private->m_resourceResponse; |
| 345 } | 357 } |
| 346 | 358 |
| 347 const ResourceResponse& WebURLResponse::toResourceResponse() const | 359 const ResourceResponse& WebURLResponse::toResourceResponse() const |
| 348 { | 360 { |
| 349 ASSERT(m_private); | 361 DCHECK(m_private); |
| 350 ASSERT(m_private->m_resourceResponse); | 362 DCHECK(m_private->m_resourceResponse); |
| 351 | 363 |
| 352 return *m_private->m_resourceResponse; | 364 return *m_private->m_resourceResponse; |
| 353 } | 365 } |
| 354 | 366 |
| 355 bool WebURLResponse::wasCached() const | 367 bool WebURLResponse::wasCached() const |
| 356 { | 368 { |
| 357 return m_private->m_resourceResponse->wasCached(); | 369 return m_private->m_resourceResponse->wasCached(); |
| 358 } | 370 } |
| 359 | 371 |
| 360 void WebURLResponse::setWasCached(bool value) | 372 void WebURLResponse::setWasCached(bool value) |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 500 if (!data) | 512 if (!data) |
| 501 return 0; | 513 return 0; |
| 502 return static_cast<ExtraDataContainer*>(data.get())->getExtraData(); | 514 return static_cast<ExtraDataContainer*>(data.get())->getExtraData(); |
| 503 } | 515 } |
| 504 | 516 |
| 505 void WebURLResponse::setExtraData(WebURLResponse::ExtraData* extraData) | 517 void WebURLResponse::setExtraData(WebURLResponse::ExtraData* extraData) |
| 506 { | 518 { |
| 507 m_private->m_resourceResponse->setExtraData(ExtraDataContainer::create(extra Data)); | 519 m_private->m_resourceResponse->setExtraData(ExtraDataContainer::create(extra Data)); |
| 508 } | 520 } |
| 509 | 521 |
| 522 WebURLResponse::WebURLResponse(WebURLResponsePrivate* p) | |
| 523 : m_private(p) | |
| 524 { | |
| 525 DCHECK(p); | |
| 526 } | |
| 527 | |
| 510 void WebURLResponse::assign(WebURLResponsePrivate* p) | 528 void WebURLResponse::assign(WebURLResponsePrivate* p) |
|
kinuko
2016/07/05 14:59:44
At this point I don't feel having this method's ve
| |
| 511 { | 529 { |
| 512 // Subclasses may call this directly so a self-assignment check is needed | 530 DCHECK(p); |
| 513 // here as well as in the public assign method. | 531 // Subclasses may perform self-assignment. |
| 514 if (m_private == p) | 532 if (m_private == p) |
| 515 return; | 533 return; |
| 516 if (m_private) | 534 m_private->dispose(); |
| 517 m_private->dispose(); | |
| 518 m_private = p; | 535 m_private = p; |
| 519 } | 536 } |
| 520 | 537 |
| 521 } // namespace blink | 538 } // namespace blink |
| OLD | NEW |