Chromium Code Reviews| 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; |
| } |