| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 #include "core/inspector/InspectorResourceContentLoader.h" | 6 #include "core/inspector/InspectorResourceContentLoader.h" |
| 7 | 7 |
| 8 #include "core/css/CSSStyleSheet.h" | 8 #include "core/css/CSSStyleSheet.h" |
| 9 #include "core/css/StyleSheetContents.h" | 9 #include "core/css/StyleSheetContents.h" |
| 10 #include "core/dom/Document.h" | 10 #include "core/dom/Document.h" |
| 11 #include "core/fetch/CSSStyleSheetResource.h" | 11 #include "core/fetch/CSSStyleSheetResource.h" |
| 12 #include "core/fetch/FetchInitiatorTypeNames.h" | 12 #include "core/fetch/FetchInitiatorTypeNames.h" |
| 13 #include "core/fetch/RawResource.h" | 13 #include "core/fetch/RawResource.h" |
| 14 #include "core/fetch/Resource.h" | 14 #include "core/fetch/Resource.h" |
| 15 #include "core/fetch/ResourceFetcher.h" | 15 #include "core/fetch/ResourceFetcher.h" |
| 16 #include "core/fetch/ResourcePtr.h" | 16 #include "core/fetch/ResourcePtr.h" |
| 17 #include "core/fetch/StyleSheetResourceClient.h" | 17 #include "core/fetch/StyleSheetResourceClient.h" |
| 18 #include "core/frame/LocalFrame.h" | 18 #include "core/frame/LocalFrame.h" |
| 19 #include "core/inspector/InspectedFrames.h" | 19 #include "core/inspector/InspectedFrames.h" |
| 20 #include "core/inspector/InspectorCSSAgent.h" | 20 #include "core/inspector/InspectorCSSAgent.h" |
| 21 #include "core/inspector/InspectorPageAgent.h" | 21 #include "core/inspector/InspectorPageAgent.h" |
| 22 #include "core/page/Page.h" | 22 #include "core/page/Page.h" |
| 23 #include "public/platform/WebURLRequest.h" | 23 #include "public/platform/WebURLRequest.h" |
| 24 | 24 |
| 25 namespace blink { | 25 namespace blink { |
| 26 | 26 |
| 27 class InspectorResourceContentLoader::ResourceClient final : private RawResource
Client, private StyleSheetResourceClient { | 27 class InspectorResourceContentLoader::ResourceClient final : public NoBaseWillBe
GarbageCollectedFinalized<InspectorResourceContentLoader::ResourceClient>, priva
te RawResourceClient, private StyleSheetResourceClient { |
| 28 public: | 28 public: |
| 29 ResourceClient(InspectorResourceContentLoader* loader) | 29 explicit ResourceClient(InspectorResourceContentLoader* loader) |
| 30 : m_loader(loader) | 30 : m_loader(loader) |
| 31 { | 31 { |
| 32 } | 32 } |
| 33 | 33 |
| 34 void waitForResource(Resource* resource) | 34 void waitForResource(Resource* resource) |
| 35 { | 35 { |
| 36 if (resource->type() == Resource::Raw) | 36 if (resource->type() == Resource::Raw) |
| 37 resource->addClient(static_cast<RawResourceClient*>(this)); | 37 resource->addClient(static_cast<RawResourceClient*>(this)); |
| 38 else | 38 else |
| 39 resource->addClient(static_cast<StyleSheetResourceClient*>(this)); | 39 resource->addClient(static_cast<StyleSheetResourceClient*>(this)); |
| 40 } | 40 } |
| 41 | 41 |
| 42 DEFINE_INLINE_TRACE() |
| 43 { |
| 44 visitor->trace(m_loader); |
| 45 } |
| 46 |
| 42 private: | 47 private: |
| 43 InspectorResourceContentLoader* m_loader; | 48 RawPtrWillBeMember<InspectorResourceContentLoader> m_loader; |
| 44 | 49 |
| 45 void setCSSStyleSheet(const String&, const KURL&, const String&, const CSSSt
yleSheetResource*) override; | 50 void setCSSStyleSheet(const String&, const KURL&, const String&, const CSSSt
yleSheetResource*) override; |
| 46 void notifyFinished(Resource*) override; | 51 void notifyFinished(Resource*) override; |
| 47 String debugName() const override { return "InspectorResourceContentLoader::
ResourceClient"; } | 52 String debugName() const override { return "InspectorResourceContentLoader::
ResourceClient"; } |
| 48 void resourceFinished(Resource*); | 53 void resourceFinished(Resource*); |
| 49 | 54 |
| 50 friend class InspectorResourceContentLoader; | 55 friend class InspectorResourceContentLoader; |
| 51 }; | 56 }; |
| 52 | 57 |
| 53 void InspectorResourceContentLoader::ResourceClient::resourceFinished(Resource*
resource) | 58 void InspectorResourceContentLoader::ResourceClient::resourceFinished(Resource*
resource) |
| 54 { | 59 { |
| 55 if (m_loader) | 60 if (m_loader) |
| 56 m_loader->resourceFinished(this); | 61 m_loader->resourceFinished(this); |
| 57 | 62 |
| 58 if (resource->type() == Resource::Raw) | 63 if (resource->type() == Resource::Raw) |
| 59 resource->removeClient(static_cast<RawResourceClient*>(this)); | 64 resource->removeClient(static_cast<RawResourceClient*>(this)); |
| 60 else | 65 else |
| 61 resource->removeClient(static_cast<StyleSheetResourceClient*>(this)); | 66 resource->removeClient(static_cast<StyleSheetResourceClient*>(this)); |
| 62 | 67 |
| 68 #if !ENABLE(OILPAN) |
| 63 delete this; | 69 delete this; |
| 70 #endif |
| 64 } | 71 } |
| 65 | 72 |
| 66 void InspectorResourceContentLoader::ResourceClient::setCSSStyleSheet(const Stri
ng&, const KURL& url, const String&, const CSSStyleSheetResource* resource) | 73 void InspectorResourceContentLoader::ResourceClient::setCSSStyleSheet(const Stri
ng&, const KURL& url, const String&, const CSSStyleSheetResource* resource) |
| 67 { | 74 { |
| 68 resourceFinished(const_cast<CSSStyleSheetResource*>(resource)); | 75 resourceFinished(const_cast<CSSStyleSheetResource*>(resource)); |
| 69 } | 76 } |
| 70 | 77 |
| 71 void InspectorResourceContentLoader::ResourceClient::notifyFinished(Resource* re
source) | 78 void InspectorResourceContentLoader::ResourceClient::notifyFinished(Resource* re
source) |
| 72 { | 79 { |
| 73 if (resource->type() == Resource::CSSStyleSheet) | 80 if (resource->type() == Resource::CSSStyleSheet) |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 checkDone(); | 158 checkDone(); |
| 152 } | 159 } |
| 153 | 160 |
| 154 InspectorResourceContentLoader::~InspectorResourceContentLoader() | 161 InspectorResourceContentLoader::~InspectorResourceContentLoader() |
| 155 { | 162 { |
| 156 ASSERT(m_resources.isEmpty()); | 163 ASSERT(m_resources.isEmpty()); |
| 157 } | 164 } |
| 158 | 165 |
| 159 DEFINE_TRACE(InspectorResourceContentLoader) | 166 DEFINE_TRACE(InspectorResourceContentLoader) |
| 160 { | 167 { |
| 168 #if ENABLE(OILPAN) |
| 161 visitor->trace(m_inspectedFrame); | 169 visitor->trace(m_inspectedFrame); |
| 170 visitor->trace(m_pendingResourceClients); |
| 171 #endif |
| 162 } | 172 } |
| 163 | 173 |
| 164 void InspectorResourceContentLoader::didCommitLoadForLocalFrame(LocalFrame* fram
e) | 174 void InspectorResourceContentLoader::didCommitLoadForLocalFrame(LocalFrame* fram
e) |
| 165 { | 175 { |
| 166 if (frame == m_inspectedFrame) | 176 if (frame == m_inspectedFrame) |
| 167 stop(); | 177 stop(); |
| 168 } | 178 } |
| 169 | 179 |
| 170 void InspectorResourceContentLoader::dispose() | 180 void InspectorResourceContentLoader::dispose() |
| 171 { | 181 { |
| 172 stop(); | 182 stop(); |
| 173 } | 183 } |
| 174 | 184 |
| 175 void InspectorResourceContentLoader::stop() | 185 void InspectorResourceContentLoader::stop() |
| 176 { | 186 { |
| 177 HashSet<ResourceClient*> pendingResourceClients; | 187 WillBeHeapHashSet<RawPtrWillBeMember<ResourceClient>> pendingResourceClients
; |
| 178 m_pendingResourceClients.swap(pendingResourceClients); | 188 m_pendingResourceClients.swap(pendingResourceClients); |
| 179 for (const auto& client : pendingResourceClients) | 189 for (const auto& client : pendingResourceClients) |
| 180 client->m_loader = nullptr; | 190 client->m_loader = nullptr; |
| 181 m_resources.clear(); | 191 m_resources.clear(); |
| 182 // Make sure all callbacks are called to prevent infinite waiting time. | 192 // Make sure all callbacks are called to prevent infinite waiting time. |
| 183 checkDone(); | 193 checkDone(); |
| 184 m_allRequestsStarted = false; | 194 m_allRequestsStarted = false; |
| 185 m_started = false; | 195 m_started = false; |
| 186 } | 196 } |
| 187 | 197 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 200 (*callback)(); | 210 (*callback)(); |
| 201 } | 211 } |
| 202 | 212 |
| 203 void InspectorResourceContentLoader::resourceFinished(ResourceClient* client) | 213 void InspectorResourceContentLoader::resourceFinished(ResourceClient* client) |
| 204 { | 214 { |
| 205 m_pendingResourceClients.remove(client); | 215 m_pendingResourceClients.remove(client); |
| 206 checkDone(); | 216 checkDone(); |
| 207 } | 217 } |
| 208 | 218 |
| 209 } // namespace blink | 219 } // namespace blink |
| OLD | NEW |