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 13namespace blink { 14 15class Page; 16class Resource; 17class VoidCallback; 18 19class InspectorResourceContentLoader FINAL : public NoBaseWillBeGarbageCollectedFinalized<InspectorResourceContentLoader> { 20 WTF_MAKE_NONCOPYABLE(InspectorResourceContentLoader); 21 WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED; 22public: 23 explicit InspectorResourceContentLoader(Page*); 24 void ensureResourcesContentLoaded(VoidCallback*); 25 ~InspectorResourceContentLoader(); 26 void trace(Visitor*); 27 void dispose(); 28 bool hasFinished(); 29 void stop(); 30 31private: 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