Index: third_party/WebKit/Source/core/fetch/ResourceOwner.h |
diff --git a/third_party/WebKit/Source/core/fetch/ResourceOwner.h b/third_party/WebKit/Source/core/fetch/ResourceOwner.h |
index 20a464cfb347ff4b3a6d84617f3cd8bc2de6263c..faf0a4ec645cb7a1a89de982d48020797d222dcd 100644 |
--- a/third_party/WebKit/Source/core/fetch/ResourceOwner.h |
+++ b/third_party/WebKit/Source/core/fetch/ResourceOwner.h |
@@ -37,47 +37,24 @@ namespace blink { |
template<class R, class C = typename R::ClientType> |
-class ResourceOwner : public C { |
+class ResourceOwner : public WillBeGarbageCollectedMixin, public C { |
public: |
using ResourceType = R; |
- virtual ~ResourceOwner(); |
+ virtual ~ResourceOwner() { clearResource(); } |
yhirano
2016/01/12 07:54:49
You cannot call clearResource() in the destructor
Nate Chapin
2016/01/13 20:36:33
Done.
|
ResourceType* resource() const { return m_resource.get(); } |
protected: |
- ResourceOwner(); |
- ResourceOwner(const ResourceOwner& other) { setResource(other.resource()); } |
- explicit ResourceOwner(const ResourcePtr<ResourceType>&); |
+ ResourceOwner() {} |
void setResource(const ResourcePtr<ResourceType>&); |
- void clearResource(); |
- |
- ResourceOwner& operator=(const ResourceOwner& other); |
+ void clearResource() { setResource(nullptr); } |
private: |
ResourcePtr<ResourceType> m_resource; |
}; |
template<class R, class C> |
-inline ResourceOwner<R, C>::ResourceOwner() |
-{ |
-} |
- |
-template<class R, class C> |
-inline ResourceOwner<R, C>::~ResourceOwner() |
-{ |
- clearResource(); |
-} |
- |
-template<class R, class C> |
-inline ResourceOwner<R, C>::ResourceOwner(const ResourcePtr<R>& resource) |
- : m_resource(resource) |
-{ |
- if (m_resource) |
- m_resource->addClient(this); |
-} |
- |
-template<class R, class C> |
inline void ResourceOwner<R, C>::setResource(const ResourcePtr<R>& newResource) |
{ |
if (newResource == m_resource) |
@@ -96,21 +73,6 @@ inline void ResourceOwner<R, C>::setResource(const ResourcePtr<R>& newResource) |
} |
} |
-template<class R, class C> |
-inline void ResourceOwner<R, C>::clearResource() |
-{ |
- setResource(0); |
-} |
- |
-template<class R, class C> |
-inline ResourceOwner<R, C>& ResourceOwner<R, C>::operator=(const ResourceOwner<R, C>& other) |
-{ |
- if (this == &other) |
- return *this; |
- setResource(other.resource()); |
- return *this; |
-} |
- |
} // namespace blink |
#endif |