e4acaa1731a594aba6212d20316c5f09b897fe0d
[WebKit-https.git] / Source / WebCore / inspector / InspectorApplicationCacheAgent.h
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 #if ENABLE(INSPECTOR)
29
30 #include "ApplicationCacheHost.h"
31 #include "InspectorWebAgentBase.h"
32 #include "InspectorWebBackendDispatchers.h"
33 #include "InspectorWebFrontendDispatchers.h"
34 #include <wtf/Noncopyable.h>
35 #include <wtf/PassOwnPtr.h>
36
37 namespace Inspector {
38 class InspectorApplicationCacheFrontendDispatcher;
39 class InspectorObject;
40 class InspectorValue;
41 }
42
43 namespace WebCore {
44
45 class Frame;
46 class InspectorPageAgent;
47 class InstrumentingAgents;
48 class Page;
49 class ResourceResponse;
50
51 typedef String ErrorString;
52
53 class InspectorApplicationCacheAgent : public InspectorAgentBase, public Inspector::InspectorApplicationCacheBackendDispatcherHandler {
54     WTF_MAKE_NONCOPYABLE(InspectorApplicationCacheAgent); WTF_MAKE_FAST_ALLOCATED;
55 public:
56     InspectorApplicationCacheAgent(InstrumentingAgents*, InspectorPageAgent*);
57     ~InspectorApplicationCacheAgent() { }
58
59     virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) override;
60     virtual void willDestroyFrontendAndBackend() override;
61
62     void updateApplicationCacheStatus(Frame*);
63     void networkStateChanged();
64
65     virtual void enable(ErrorString*);
66     virtual void getFramesWithManifests(ErrorString*, RefPtr<Inspector::TypeBuilder::Array<Inspector::TypeBuilder::ApplicationCache::FrameWithManifest>>& result);
67     virtual void getManifestForFrame(ErrorString*, const String& frameId, String* manifestURL);
68     virtual void getApplicationCacheForFrame(ErrorString*, const String& frameId, RefPtr<Inspector::TypeBuilder::ApplicationCache::ApplicationCache>&);
69
70 private:
71     PassRefPtr<Inspector::TypeBuilder::ApplicationCache::ApplicationCache> buildObjectForApplicationCache(const ApplicationCacheHost::ResourceInfoList&, const ApplicationCacheHost::CacheInfo&);
72     PassRefPtr<Inspector::TypeBuilder::Array<Inspector::TypeBuilder::ApplicationCache::ApplicationCacheResource>> buildArrayForApplicationCacheResources(const ApplicationCacheHost::ResourceInfoList&);
73     PassRefPtr<Inspector::TypeBuilder::ApplicationCache::ApplicationCacheResource> buildObjectForApplicationCacheResource(const ApplicationCacheHost::ResourceInfo&);
74
75     DocumentLoader* assertFrameWithDocumentLoader(ErrorString*, String frameId);
76
77     InspectorPageAgent* m_pageAgent;
78     std::unique_ptr<Inspector::InspectorApplicationCacheFrontendDispatcher> m_frontendDispatcher;
79     RefPtr<Inspector::InspectorApplicationCacheBackendDispatcher> m_backendDispatcher;
80 };
81
82 } // namespace WebCore
83
84 #endif // ENABLE(INSPECTOR)
85 #endif // InspectorApplicationCacheAgent_h