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 6dd509093db71a9d4420a0a9352366f97443c136..2985bbee2200cf524275e1e0b584bd5e8a150ea8 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/svg/graphics/SVGImage.h" |
@@ -38,12 +37,24 @@ |
#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> |
namespace blink { |
-using ImageResourceObserverWalker = ResourceClientOrObserverWalker<ImageResourceObserver, ImageResourceObserver>; |
+namespace { |
+ |
+template <typename T> |
+Vector<T*> asVector(const HashCountedSet<T*>& set) |
haraken
2016/08/12 10:45:20
I'd move this helper function to HashCountedSet.
yhirano
2016/08/16 08:57:24
Done.
|
+{ |
+ Vector<T*> vector; |
+ copyToVector(set, vector); |
+ return vector; |
+} |
+ |
+} // namespace |
ImageResource* ImageResource::fetch(FetchRequest& request, ResourceFetcher* fetcher) |
{ |
@@ -97,9 +108,9 @@ void ImageResource::checkNotify() |
if (isLoading()) |
return; |
- ImageResourceObserverWalker walker(m_observers); |
- while (auto* observer = walker.next()) { |
- observer->imageNotifyFinished(this); |
+ for (auto* observer : asVector(m_observers)) { |
+ if (m_observers.contains(observer)) |
+ observer->imageNotifyFinished(this); |
} |
Resource::checkNotify(); |
@@ -180,14 +191,13 @@ ResourcePriority ImageResource::priorityFromObservers() |
{ |
ResourcePriority priority; |
- ImageResourceObserverWalker finishedWalker(m_finishedObservers); |
- while (const auto* observer = finishedWalker.next()) { |
- priorityFromObserver(observer, priority); |
+ for (auto* observer : asVector(m_finishedObservers)) { |
+ if (m_finishedObservers.contains(observer)) |
+ priorityFromObserver(observer, priority); |
} |
- |
- ImageResourceObserverWalker walker(m_observers); |
- while (const auto* observer = walker.next()) { |
- priorityFromObserver(observer, priority); |
+ for (auto* observer : asVector(m_observers)) { |
+ if (m_observers.contains(observer)) |
+ priorityFromObserver(observer, priority); |
} |
return priority; |
@@ -334,14 +344,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 : asVector(m_finishedObservers)) { |
+ 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 : asVector(m_observers)) { |
+ if (m_observers.contains(observer)) |
+ observer->imageChanged(this, changeRect); |
} |
} |
@@ -489,15 +498,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 : asVector(m_finishedObservers)) { |
+ if (m_finishedObservers.contains(observer) && observer->willRenderImage()) |
return false; |
} |
- ImageResourceObserverWalker walker(m_observers); |
- while (auto* observer = walker.next()) { |
- if (observer->willRenderImage()) |
+ for (auto* observer : asVector(m_observers)) { |
+ if (m_observers.contains(observer) && observer->willRenderImage()) |
return false; |
} |
@@ -517,16 +524,12 @@ void ImageResource::updateImageAnimationPolicy() |
return; |
ImageAnimationPolicy newPolicy = ImageAnimationPolicyAllowed; |
- |
- ImageResourceObserverWalker finishedWalker(m_finishedObservers); |
- while (auto* observer = finishedWalker.next()) { |
- if (observer->getImageAnimationPolicy(newPolicy)) |
+ for (auto* observer : asVector(m_finishedObservers)) { |
+ 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 : asVector(m_observers)) { |
+ if (m_observers.contains(observer) && observer->getImageAnimationPolicy(newPolicy)) |
break; |
} |