| Index: third_party/WebKit/Source/core/fetch/ResourceClientOrObserverWalker.h
|
| diff --git a/third_party/WebKit/Source/core/fetch/ResourceClientWalker.h b/third_party/WebKit/Source/core/fetch/ResourceClientOrObserverWalker.h
|
| similarity index 70%
|
| rename from third_party/WebKit/Source/core/fetch/ResourceClientWalker.h
|
| rename to third_party/WebKit/Source/core/fetch/ResourceClientOrObserverWalker.h
|
| index 0dbbc23dbedd750551390b670a5f455a970c9661..24f55046ea33c88d02641156630106a080d0a197 100644
|
| --- a/third_party/WebKit/Source/core/fetch/ResourceClientWalker.h
|
| +++ b/third_party/WebKit/Source/core/fetch/ResourceClientOrObserverWalker.h
|
| @@ -22,8 +22,8 @@
|
| pages from the web. It has a memory cache for these objects.
|
| */
|
|
|
| -#ifndef ResourceClientWalker_h
|
| -#define ResourceClientWalker_h
|
| +#ifndef ResourceClientOrObserverWalker_h
|
| +#define ResourceClientOrObserverWalker_h
|
|
|
| #include "core/fetch/ResourceClient.h"
|
| #include "wtf/Allocator.h"
|
| @@ -34,10 +34,13 @@ namespace blink {
|
|
|
| // Call this "walker" instead of iterator so people won't expect Qt or STL-style iterator interface.
|
| // Just keep calling next() on this. It's safe from deletions of items.
|
| -template<typename T> class ResourceClientWalker {
|
| +// ClientOrObserver is either ResourceClient or ImageResourceObserver, so that
|
| +// this walker can be used both for ResourceClient and ImageResourceObserver.
|
| +template<typename ClientOrObserver, typename T>
|
| +class ResourceClientOrObserverWalker {
|
| STACK_ALLOCATED();
|
| public:
|
| - ResourceClientWalker(const HashCountedSet<ResourceClient*>& set)
|
| + explicit ResourceClientOrObserverWalker(const HashCountedSet<ClientOrObserver*>& set)
|
| : m_clientSet(set), m_clientVector(set.size()), m_index(0)
|
| {
|
| size_t clientIndex = 0;
|
| @@ -49,7 +52,7 @@ public:
|
| {
|
| size_t size = m_clientVector.size();
|
| while (m_index < size) {
|
| - ResourceClient* next = m_clientVector[m_index++];
|
| + ClientOrObserver* next = m_clientVector[m_index++];
|
| if (m_clientSet.contains(next)) {
|
| ASSERT(T::isExpectedType(next));
|
| return static_cast<T*>(next);
|
| @@ -59,11 +62,18 @@ public:
|
| return 0;
|
| }
|
| private:
|
| - const HashCountedSet<ResourceClient*>& m_clientSet;
|
| - Vector<ResourceClient*> m_clientVector;
|
| + const HashCountedSet<ClientOrObserver*>& m_clientSet;
|
| + Vector<ClientOrObserver*> m_clientVector;
|
| size_t m_index;
|
| };
|
|
|
| +template<typename T>
|
| +struct ResourceClientWalker : public ResourceClientOrObserverWalker<ResourceClient, T> {
|
| +public:
|
| + explicit ResourceClientWalker(const HashCountedSet<ResourceClient*>& set)
|
| + : ResourceClientOrObserverWalker<ResourceClient, T>(set) { }
|
| +};
|
| +
|
| } // namespace blink
|
|
|
| #endif
|
|
|