1/* 2 * Copyright (C) 2010 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 16 * DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY 17 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 18 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 19 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 22 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 */ 24 25#ifndef InspectorApplicationCacheAgent_h 26#define InspectorApplicationCacheAgent_h 27 28#include "core/InspectorFrontend.h" 29#include "core/inspector/InspectorBaseAgent.h" 30#include "core/loader/appcache/ApplicationCacheHost.h" 31#include "wtf/Noncopyable.h" 32#include "wtf/PassOwnPtr.h" 33 34namespace blink { 35 36class LocalFrame; 37class InspectorFrontend; 38class InspectorPageAgent; 39class InstrumentingAgents; 40 41typedef String ErrorString; 42 43class InspectorApplicationCacheAgent FINAL : public InspectorBaseAgent<InspectorApplicationCacheAgent>, public InspectorBackendDispatcher::ApplicationCacheCommandHandler { 44 WTF_MAKE_NONCOPYABLE(InspectorApplicationCacheAgent); 45 WTF_MAKE_FAST_ALLOCATED_WILL_BE_REMOVED; 46public: 47 static PassOwnPtrWillBeRawPtr<InspectorApplicationCacheAgent> create(InspectorPageAgent* pageAgent) 48 { 49 return adoptPtrWillBeNoop(new InspectorApplicationCacheAgent(pageAgent)); 50 } 51 virtual ~InspectorApplicationCacheAgent() { } 52 virtual void trace(Visitor*) OVERRIDE; 53 54 // InspectorBaseAgent 55 virtual void setFrontend(InspectorFrontend*) OVERRIDE; 56 virtual void clearFrontend() OVERRIDE; 57 virtual void restore() OVERRIDE; 58 59 // InspectorInstrumentation API 60 void updateApplicationCacheStatus(LocalFrame*); 61 void networkStateChanged(bool online); 62 63 // ApplicationCache API for InspectorFrontend 64 virtual void enable(ErrorString*) OVERRIDE; 65 virtual void getFramesWithManifests(ErrorString*, RefPtr<TypeBuilder::Array<TypeBuilder::ApplicationCache::FrameWithManifest> >& result) OVERRIDE; 66 virtual void getManifestForFrame(ErrorString*, const String& frameId, String* manifestURL) OVERRIDE; 67 virtual void getApplicationCacheForFrame(ErrorString*, const String& frameId, RefPtr<TypeBuilder::ApplicationCache::ApplicationCache>&) OVERRIDE; 68 69private: 70 InspectorApplicationCacheAgent(InspectorPageAgent*); 71 PassRefPtr<TypeBuilder::ApplicationCache::ApplicationCache> buildObjectForApplicationCache(const ApplicationCacheHost::ResourceInfoList&, const ApplicationCacheHost::CacheInfo&); 72 PassRefPtr<TypeBuilder::Array<TypeBuilder::ApplicationCache::ApplicationCacheResource> > buildArrayForApplicationCacheResources(const ApplicationCacheHost::ResourceInfoList&); 73 PassRefPtr<TypeBuilder::ApplicationCache::ApplicationCacheResource> buildObjectForApplicationCacheResource(const ApplicationCacheHost::ResourceInfo&); 74 75 DocumentLoader* assertFrameWithDocumentLoader(ErrorString*, String frameId); 76 77 RawPtrWillBeMember<InspectorPageAgent> m_pageAgent; 78 InspectorFrontend::ApplicationCache* m_frontend; 79}; 80 81} // namespace blink 82 83#endif // InspectorApplicationCacheAgent_h 84