Index: third_party/WebKit/Source/core/fetch/ImageResource.cpp |
diff --git a/third_party/WebKit/Source/core/fetch/ImageResource.cpp b/third_party/WebKit/Source/core/fetch/ImageResource.cpp |
index f9b25215b01aee542b3ff782b100b12d8887fa10..b1de57e7388509f74d67a3889f1b257d86b28752 100644 |
--- a/third_party/WebKit/Source/core/fetch/ImageResource.cpp |
+++ b/third_party/WebKit/Source/core/fetch/ImageResource.cpp |
@@ -26,7 +26,6 @@ |
#include "core/fetch/ImageResourceObserver.h" |
#include "core/fetch/MemoryCache.h" |
#include "core/fetch/ResourceClient.h" |
-#include "core/fetch/ResourceClientOrObserverWalker.h" |
#include "core/fetch/ResourceFetcher.h" |
#include "core/fetch/ResourceLoader.h" |
#include "core/fetch/ResourceLoadingLog.h" |
@@ -38,14 +37,14 @@ |
#include "public/platform/Platform.h" |
#include "public/platform/WebCachePolicy.h" |
#include "wtf/CurrentTime.h" |
+#include "wtf/HashCountedSet.h" |
#include "wtf/StdLibExtras.h" |
+#include "wtf/Vector.h" |
#include <memory> |
#include <v8.h> |
namespace blink { |
-using ImageResourceObserverWalker = ResourceClientOrObserverWalker<ImageResourceObserver, ImageResourceObserver>; |
- |
ImageResource* ImageResource::fetch(FetchRequest& request, ResourceFetcher* fetcher) |
{ |
if (request.resourceRequest().requestContext() == WebURLRequest::RequestContextUnspecified) |
@@ -104,11 +103,12 @@ void ImageResource::notifyObserversInternal(MarkFinishedOption markFinishedOptio |
if (isLoading()) |
return; |
- ImageResourceObserverWalker walker(m_observers); |
- while (auto* observer = walker.next()) { |
- if (markFinishedOption == MarkFinishedOption::ShouldMarkFinished) |
- markObserverFinished(observer); |
- observer->imageNotifyFinished(this); |
+ for (auto* observer : m_observers.asVector()) { |
+ if (m_observers.contains(observer)) { |
+ if (markFinishedOption == MarkFinishedOption::ShouldMarkFinished) |
+ markObserverFinished(observer); |
+ observer->imageNotifyFinished(this); |
+ } |
} |
} |
@@ -182,14 +182,13 @@ ResourcePriority ImageResource::priorityFromObservers() |
{ |
ResourcePriority priority; |
- ImageResourceObserverWalker finishedWalker(m_finishedObservers); |
- while (const auto* observer = finishedWalker.next()) { |
- priorityFromObserver(observer, priority); |
+ for (auto* observer : m_finishedObservers.asVector()) { |
+ if (m_finishedObservers.contains(observer)) |
+ priorityFromObserver(observer, priority); |
} |
- |
- ImageResourceObserverWalker walker(m_observers); |
- while (const auto* observer = walker.next()) { |
- priorityFromObserver(observer, priority); |
+ for (auto* observer : m_observers.asVector()) { |
+ if (m_observers.contains(observer)) |
+ priorityFromObserver(observer, priority); |
} |
return priority; |
@@ -327,14 +326,13 @@ LayoutSize ImageResource::imageSize(RespectImageOrientationEnum shouldRespectIma |
void ImageResource::notifyObservers(const IntRect* changeRect) |
{ |
- ImageResourceObserverWalker finishedWalker(m_finishedObservers); |
- while (auto* observer = finishedWalker.next()) { |
- observer->imageChanged(this, changeRect); |
+ for (auto* observer : m_finishedObservers.asVector()) { |
+ if (m_finishedObservers.contains(observer)) |
+ observer->imageChanged(this, changeRect); |
} |
- |
- ImageResourceObserverWalker walker(m_observers); |
- while (auto* observer = walker.next()) { |
- observer->imageChanged(this, changeRect); |
+ for (auto* observer : m_observers.asVector()) { |
+ if (m_observers.contains(observer)) |
+ observer->imageChanged(this, changeRect); |
} |
} |
@@ -484,15 +482,13 @@ bool ImageResource::shouldPauseAnimation(const blink::Image* image) |
if (!image || image != m_image) |
return false; |
- ImageResourceObserverWalker finishedWalker(m_finishedObservers); |
- while (auto* observer = finishedWalker.next()) { |
- if (observer->willRenderImage()) |
+ for (auto* observer : m_finishedObservers.asVector()) { |
+ if (m_finishedObservers.contains(observer) && observer->willRenderImage()) |
return false; |
} |
- ImageResourceObserverWalker walker(m_observers); |
- while (auto* observer = walker.next()) { |
- if (observer->willRenderImage()) |
+ for (auto* observer : m_observers.asVector()) { |
+ if (m_observers.contains(observer) && observer->willRenderImage()) |
return false; |
} |
@@ -512,16 +508,12 @@ void ImageResource::updateImageAnimationPolicy() |
return; |
ImageAnimationPolicy newPolicy = ImageAnimationPolicyAllowed; |
- |
- ImageResourceObserverWalker finishedWalker(m_finishedObservers); |
- while (auto* observer = finishedWalker.next()) { |
- if (observer->getImageAnimationPolicy(newPolicy)) |
+ for (auto* observer : m_finishedObservers.asVector()) { |
+ if (m_finishedObservers.contains(observer) && observer->getImageAnimationPolicy(newPolicy)) |
break; |
} |
- |
- ImageResourceObserverWalker walker(m_observers); |
- while (auto* observer = walker.next()) { |
- if (observer->getImageAnimationPolicy(newPolicy)) |
+ for (auto* observer : m_observers.asVector()) { |
+ if (m_observers.contains(observer) && observer->getImageAnimationPolicy(newPolicy)) |
break; |
} |