| Index: third_party/WebKit/Source/core/loader/ImageLoader.cpp
|
| diff --git a/third_party/WebKit/Source/core/loader/ImageLoader.cpp b/third_party/WebKit/Source/core/loader/ImageLoader.cpp
|
| index 7266759fdd76a27b184e5f16796f7e801dc8a2dc..44c00dc0df4d9016c1963855db9b793653453c94 100644
|
| --- a/third_party/WebKit/Source/core/loader/ImageLoader.cpp
|
| +++ b/third_party/WebKit/Source/core/loader/ImageLoader.cpp
|
| @@ -244,10 +244,14 @@ void ImageLoader::setImageWithoutConsideringPendingLoadEvent(ImageResource* newI
|
| m_hasPendingErrorEvent = false;
|
| }
|
| m_imageComplete = true;
|
| - if (newImage)
|
| + if (newImage) {
|
| newImage->addClient(this);
|
| - if (oldImage)
|
| + newImage->addObserver(this);
|
| + }
|
| + if (oldImage) {
|
| oldImage->removeClient(this);
|
| + oldImage->removeObserver(this);
|
| + }
|
| }
|
|
|
| if (LayoutImageResource* imageResource = layoutImageResource())
|
| @@ -390,11 +394,14 @@ void ImageLoader::doUpdateFromElement(BypassMainWorldBehavior bypassBehavior, Up
|
| updateLayoutObject();
|
| // If newImage exists and is cached, addClient() will result in the load event
|
| // being queued to fire. Ensure this happens after beforeload is dispatched.
|
| - if (newImage)
|
| + if (newImage) {
|
| newImage->addClient(this);
|
| -
|
| - if (oldImage)
|
| + newImage->addObserver(this);
|
| + }
|
| + if (oldImage) {
|
| oldImage->removeClient(this);
|
| + oldImage->removeObserver(this);
|
| + }
|
| }
|
|
|
| if (LayoutImageResource* imageResource = layoutImageResource())
|
| @@ -653,7 +660,7 @@ void ImageLoader::removeClient(ImageLoaderClient* client)
|
| m_clients.remove(client);
|
| }
|
|
|
| -bool ImageLoader::getImageAnimationPolicy(ImageResource*, ImageAnimationPolicy& policy)
|
| +bool ImageLoader::getImageAnimationPolicy(ImageAnimationPolicy& policy)
|
| {
|
| if (!element()->document().settings())
|
| return false;
|
|
|