Home | History | Annotate | Download | only in inspector
      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