Chromium Code Reviews| Index: third_party/WebKit/Source/core/fetch/MockResourceClients.cpp |
| diff --git a/third_party/WebKit/Source/core/fetch/MockResourceClients.cpp b/third_party/WebKit/Source/core/fetch/MockResourceClients.cpp |
| index ffe8072ed1123d786cc1cb8a2cc0441e1bac604d..463c6ea2502f97a9fc2dcadf57f303174edacee5 100644 |
| --- a/third_party/WebKit/Source/core/fetch/MockResourceClients.cpp |
| +++ b/third_party/WebKit/Source/core/fetch/MockResourceClients.cpp |
| @@ -13,14 +13,12 @@ MockResourceClient::MockResourceClient(Resource* resource) |
| : m_resource(resource) |
| , m_notifyFinishedCalled(false) |
| { |
| + ThreadState::current()->registerPreFinalizer(this); |
| m_resource->addClient(this); |
| } |
| -MockResourceClient::~MockResourceClient() |
| -{ |
| - if (m_resource) |
| - m_resource->removeClient(this); |
| -} |
| +MockResourceClient::~MockResourceClient() {} |
| + |
| void MockResourceClient::notifyFinished(Resource*) |
| { |
| ASSERT_FALSE(m_notifyFinishedCalled); |
| @@ -33,6 +31,19 @@ void MockResourceClient::removeAsClient() |
| m_resource = nullptr; |
| } |
| +void MockResourceClient::dispose() |
| +{ |
| + if (m_resource) { |
| + m_resource->removeClient(this); |
| + m_resource = nullptr; |
| + } |
| +} |
| + |
| +DEFINE_TRACE(MockResourceClient) |
| +{ |
| + visitor->trace(m_resource); |
| +} |
| + |
| MockImageResourceClient::MockImageResourceClient(ImageResource* resource) |
| : MockResourceClient(resource) |
| , m_imageChangedCount(0) |
| @@ -41,11 +52,7 @@ MockImageResourceClient::MockImageResourceClient(ImageResource* resource) |
| toImageResource(m_resource.get())->addObserver(this); |
| } |
| -MockImageResourceClient::~MockImageResourceClient() |
| -{ |
| - if (m_resource) |
| - toImageResource(m_resource.get())->removeObserver(this); |
| -} |
| +MockImageResourceClient::~MockImageResourceClient() {} |
| void MockImageResourceClient::removeAsClient() |
| { |
| @@ -53,6 +60,13 @@ void MockImageResourceClient::removeAsClient() |
| MockResourceClient::removeAsClient(); |
| } |
| +void MockImageResourceClient::dispose() |
| +{ |
| + if (m_resource) |
| + toImageResource(m_resource.get())->removeObserver(this); |
|
haraken
2016/05/20 07:37:38
Not related to this CL, we might want to move Imag
yhirano
2016/05/20 07:45:45
LayoutObject inherits ImageResourceObserver and ac
|
| + MockResourceClient::dispose(); |
| +} |
| + |
| void MockImageResourceClient::imageChanged(ImageResource*, const IntRect*) |
| { |
| m_imageChangedCount++; |