• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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