Chromium Code Reviews| Index: third_party/WebKit/Source/core/loader/DocumentThreadableLoader.h |
| diff --git a/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.h b/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.h |
| index 124db54f2dfb93e8f185dc556c7ab57434c3e541..7907c2e936d3c8e4eb51d06a5b43d95d30844f24 100644 |
| --- a/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.h |
| +++ b/third_party/WebKit/Source/core/loader/DocumentThreadableLoader.h |
| @@ -53,7 +53,7 @@ class ResourceRequest; |
| class SecurityOrigin; |
| class ThreadableLoaderClient; |
| -class CORE_EXPORT DocumentThreadableLoader final : public ThreadableLoader, private ResourceOwner<RawResource> { |
| +class CORE_EXPORT DocumentThreadableLoader final : public ThreadableLoader, private RawResourceClient { |
| USING_FAST_MALLOC(DocumentThreadableLoader); |
| public: |
| static void loadResourceSynchronously(Document&, const ResourceRequest&, ThreadableLoaderClient&, const ThreadableLoaderOptions&, const ResourceLoaderOptions&); |
| @@ -146,6 +146,31 @@ class CORE_EXPORT DocumentThreadableLoader final : public ThreadableLoader, priv |
| // returns allowCredentials value of m_resourceLoaderOptions. |
| StoredCredentials effectiveAllowCredentials() const; |
| + // TODO(oilpan): DocumentThreadableLoader used to be a ResourceOwner, |
| + // but ResourceOwner was moved onto the oilpan heap before |
| + // DocumentThreadableLoader was ready. When DocumentThreadableLoader |
| + // moves onto the oilpan heap, make it a ResourceOwner again and remove |
| + // this re-implementation of ResourceOwner. |
| + RawResource* resource() const { return m_resource.get(); } |
| + void clearResource() { setResource(nullptr); } |
| + void setResource(const ResourcePtr<RawResource>& newResource) |
| + { |
| + if (newResource == m_resource) |
| + return; |
| + |
| + if (ResourcePtr<RawResource> oldResource = m_resource) { |
|
haraken
2016/01/14 04:26:43
ResourcePtr<RawResource> oldResource = m_resource.
Nate Chapin
2016/01/14 22:54:01
ResourcePtr<> doesn't have release(), and if we're
|
| + m_resource.clear(); |
| + oldResource->removeClient(this); |
| + } |
| + |
| + if (newResource) { |
| + m_resource = newResource; |
| + m_resource->addClient(this); |
| + } |
| + } |
| + ResourcePtr<RawResource> m_resource; |
| + // End of ResourceOwner re-implementation, see above. |
| + |
| SecurityOrigin* securityOrigin() const; |
| Document& document() const; |