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); |
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) |
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 |