176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)// found in the LICENSE file. 476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#ifndef InspectorResourceContentLoader_h 676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#define InspectorResourceContentLoader_h 776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#include "core/fetch/ResourcePtr.h" 976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#include "wtf/HashSet.h" 1076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#include "wtf/Noncopyable.h" 1176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#include "wtf/Vector.h" 1276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 13c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 1476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 1576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)class Page; 1676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)class Resource; 1776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)class VoidCallback; 1876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass InspectorResourceContentLoader FINAL : public NoBaseWillBeGarbageCollectedFinalized<InspectorResourceContentLoader> { 2076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) WTF_MAKE_NONCOPYABLE(InspectorResourceContentLoader); 217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED; 2276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)public: 237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci explicit InspectorResourceContentLoader(Page*); 247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void ensureResourcesContentLoaded(VoidCallback*); 2576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) ~InspectorResourceContentLoader(); 267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void trace(Visitor*); 277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci void dispose(); 2876c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) bool hasFinished(); 2976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) void stop(); 3076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 3176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)private: 3276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) class ResourceClient; 3376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 3476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) void resourceFinished(ResourceClient*); 3576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) void checkDone(); 36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch void start(); 3776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci PersistentHeapVectorWillBeHeapVector<Member<VoidCallback> > m_callbacks; 3976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) bool m_allRequestsStarted; 40197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch bool m_started; 417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci RawPtrWillBeMember<Page> m_page; 4276c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) HashSet<ResourceClient*> m_pendingResourceClients; 4376c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) Vector<ResourcePtr<Resource> > m_resources; 4476c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 4576c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) friend class ResourceClient; 4676c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)}; 4776c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 48c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 4976c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 5076c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles) 5176c265b59aa821ccbf8c75ab2bb0d036e97d2956Torne (Richard Coles)#endif // !defined(InspectorResourceContentLoader_h) 52