1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef InspectorResourceContentLoader_h 6 #define InspectorResourceContentLoader_h 7 8 #include "core/fetch/ResourcePtr.h" 9 #include "wtf/HashSet.h" 10 #include "wtf/Noncopyable.h" 11 #include "wtf/Vector.h" 12 13 namespace blink { 14 15 class Page; 16 class Resource; 17 class VoidCallback; 18 19 class InspectorResourceContentLoader FINAL : public NoBaseWillBeGarbageCollectedFinalized<InspectorResourceContentLoader> { 20 WTF_MAKE_NONCOPYABLE(InspectorResourceContentLoader); 21 WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED; 22 public: 23 explicit InspectorResourceContentLoader(Page*); 24 void ensureResourcesContentLoaded(VoidCallback*); 25 ~InspectorResourceContentLoader(); 26 void trace(Visitor*); 27 void dispose(); 28 bool hasFinished(); 29 void stop(); 30 31 private: 32 class ResourceClient; 33 34 void resourceFinished(ResourceClient*); 35 void checkDone(); 36 void start(); 37 38 PersistentHeapVectorWillBeHeapVector<Member<VoidCallback> > m_callbacks; 39 bool m_allRequestsStarted; 40 bool m_started; 41 RawPtrWillBeMember<Page> m_page; 42 HashSet<ResourceClient*> m_pendingResourceClients; 43 Vector<ResourcePtr<Resource> > m_resources; 44 45 friend class ResourceClient; 46 }; 47 48 } // namespace blink 49 50 51 #endif // !defined(InspectorResourceContentLoader_h) 52