ITMLKit Inspector: Data Bindings / Associated Data for nodes
[WebKit-https.git] / Source / WebCore / inspector / InstrumentingAgents.h
1 /*
2  * Copyright (C) 2011 Google Inc. All rights reserved.
3  * Copyright (C) 2014, 2015 Apple Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  *     * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *     * Redistributions in binary form must reproduce the above
12  * copyright notice, this list of conditions and the following disclaimer
13  * in the documentation and/or other materials provided with the
14  * distribution.
15  *     * Neither the name of Google Inc. nor the names of its
16  * contributors may be used to endorse or promote products derived from
17  * this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30  */
31
32 #pragma once
33
34 #include <JavaScriptCore/InspectorEnvironment.h>
35 #include <wtf/FastMalloc.h>
36 #include <wtf/Noncopyable.h>
37 #include <wtf/RefCounted.h>
38
39 namespace Inspector {
40 class InspectorAgent;
41 class InspectorDebuggerAgent;
42 }
43
44 namespace WebCore {
45
46 class InspectorApplicationCacheAgent;
47 class InspectorCPUProfilerAgent;
48 class InspectorCSSAgent;
49 class InspectorCanvasAgent;
50 class InspectorDOMAgent;
51 class InspectorDOMDebuggerAgent;
52 class InspectorDOMStorageAgent;
53 class InspectorDatabaseAgent;
54 class InspectorLayerTreeAgent;
55 class InspectorMemoryAgent;
56 class InspectorNetworkAgent;
57 class InspectorPageAgent;
58 class InspectorTimelineAgent;
59 class InspectorWorkerAgent;
60 class Page;
61 class PageDebuggerAgent;
62 class PageHeapAgent;
63 class PageRuntimeAgent;
64 class WebConsoleAgent;
65
66 class InstrumentingAgents : public RefCounted<InstrumentingAgents> {
67     WTF_MAKE_NONCOPYABLE(InstrumentingAgents);
68     WTF_MAKE_FAST_ALLOCATED;
69 public:
70     // FIXME: InstrumentingAgents could be uniquely owned by InspectorController if instrumentation
71     // cookies kept only a weak reference to InstrumentingAgents. Then, reset() would be unnecessary.
72     static Ref<InstrumentingAgents> create(Inspector::InspectorEnvironment& environment)
73     {
74         return adoptRef(*new InstrumentingAgents(environment));
75     }
76     ~InstrumentingAgents() = default;
77     void reset();
78
79     Inspector::InspectorEnvironment& inspectorEnvironment() const { return m_environment; }
80
81     Inspector::InspectorAgent* inspectorAgent() const { return m_inspectorAgent; }
82     void setInspectorAgent(Inspector::InspectorAgent* agent) { m_inspectorAgent = agent; }
83
84     InspectorPageAgent* inspectorPageAgent() const { return m_inspectorPageAgent; }
85     void setInspectorPageAgent(InspectorPageAgent* agent) { m_inspectorPageAgent = agent; }
86
87     InspectorCanvasAgent* inspectorCanvasAgent() const { return m_inspectorCanvasAgent; }
88     void setInspectorCanvasAgent(InspectorCanvasAgent* agent) { m_inspectorCanvasAgent = agent; }
89
90     InspectorCSSAgent* inspectorCSSAgent() const { return m_inspectorCSSAgent; }
91     void setInspectorCSSAgent(InspectorCSSAgent* agent) { m_inspectorCSSAgent = agent; }
92
93     WebConsoleAgent* webConsoleAgent() const { return m_webConsoleAgent; }
94     void setWebConsoleAgent(WebConsoleAgent* agent) { m_webConsoleAgent = agent; }
95
96     InspectorDOMAgent* inspectorDOMAgent() const { return m_inspectorDOMAgent; }
97     void setInspectorDOMAgent(InspectorDOMAgent* agent) { m_inspectorDOMAgent = agent; }
98
99     InspectorNetworkAgent* inspectorNetworkAgent() const { return m_inspectorNetworkAgent; }
100     void setInspectorNetworkAgent(InspectorNetworkAgent* agent) { m_inspectorNetworkAgent = agent; }
101
102     PageRuntimeAgent* pageRuntimeAgent() const { return m_pageRuntimeAgent; }
103     void setPageRuntimeAgent(PageRuntimeAgent* agent) { m_pageRuntimeAgent = agent; }
104
105     InspectorTimelineAgent* inspectorTimelineAgent() const { return m_inspectorTimelineAgent; }
106     void setInspectorTimelineAgent(InspectorTimelineAgent* agent) { m_inspectorTimelineAgent = agent; }
107
108     InspectorTimelineAgent* persistentInspectorTimelineAgent() const { return m_persistentInspectorTimelineAgent; }
109     void setPersistentInspectorTimelineAgent(InspectorTimelineAgent* agent) { m_persistentInspectorTimelineAgent = agent; }
110
111     InspectorDOMStorageAgent* inspectorDOMStorageAgent() const { return m_inspectorDOMStorageAgent; }
112     void setInspectorDOMStorageAgent(InspectorDOMStorageAgent* agent) { m_inspectorDOMStorageAgent = agent; }
113
114 #if ENABLE(RESOURCE_USAGE)
115     InspectorCPUProfilerAgent* inspectorCPUProfilerAgent() const { return m_inspectorCPUProfilerAgent; }
116     void setInspectorCPUProfilerAgent(InspectorCPUProfilerAgent* agent) { m_inspectorCPUProfilerAgent = agent; }
117
118     InspectorMemoryAgent* inspectorMemoryAgent() const { return m_inspectorMemoryAgent; }
119     void setInspectorMemoryAgent(InspectorMemoryAgent* agent) { m_inspectorMemoryAgent = agent; }
120 #endif
121
122     InspectorDatabaseAgent* inspectorDatabaseAgent() const { return m_inspectorDatabaseAgent; }
123     void setInspectorDatabaseAgent(InspectorDatabaseAgent* agent) { m_inspectorDatabaseAgent = agent; }
124
125     InspectorApplicationCacheAgent* inspectorApplicationCacheAgent() const { return m_inspectorApplicationCacheAgent; }
126     void setInspectorApplicationCacheAgent(InspectorApplicationCacheAgent* agent) { m_inspectorApplicationCacheAgent = agent; }
127
128     Inspector::InspectorDebuggerAgent* inspectorDebuggerAgent() const { return m_inspectorDebuggerAgent; }
129     void setInspectorDebuggerAgent(Inspector::InspectorDebuggerAgent* agent) { m_inspectorDebuggerAgent = agent; }
130
131     PageDebuggerAgent* pageDebuggerAgent() const { return m_pageDebuggerAgent; }
132     void setPageDebuggerAgent(PageDebuggerAgent* agent) { m_pageDebuggerAgent = agent; }
133
134     PageHeapAgent* pageHeapAgent() const { return m_pageHeapAgent; }
135     void setPageHeapAgent(PageHeapAgent* agent) { m_pageHeapAgent = agent; }
136
137     InspectorDOMDebuggerAgent* inspectorDOMDebuggerAgent() const { return m_inspectorDOMDebuggerAgent; }
138     void setInspectorDOMDebuggerAgent(InspectorDOMDebuggerAgent* agent) { m_inspectorDOMDebuggerAgent = agent; }
139
140     InspectorLayerTreeAgent* inspectorLayerTreeAgent() const { return m_inspectorLayerTreeAgent; }
141     void setInspectorLayerTreeAgent(InspectorLayerTreeAgent* agent) { m_inspectorLayerTreeAgent = agent; }
142
143     InspectorWorkerAgent* inspectorWorkerAgent() const { return m_inspectorWorkerAgent; }
144     void setInspectorWorkerAgent(InspectorWorkerAgent* agent) { m_inspectorWorkerAgent = agent; }
145
146 private:
147     InstrumentingAgents(Inspector::InspectorEnvironment&);
148
149     Inspector::InspectorEnvironment& m_environment;
150
151     Inspector::InspectorAgent* m_inspectorAgent { nullptr };
152     InspectorPageAgent* m_inspectorPageAgent { nullptr };
153     InspectorCSSAgent* m_inspectorCSSAgent { nullptr };
154     InspectorLayerTreeAgent* m_inspectorLayerTreeAgent { nullptr };
155     InspectorWorkerAgent* m_inspectorWorkerAgent { nullptr };
156     WebConsoleAgent* m_webConsoleAgent { nullptr };
157     InspectorDOMAgent* m_inspectorDOMAgent { nullptr };
158     InspectorNetworkAgent* m_inspectorNetworkAgent { nullptr };
159     PageRuntimeAgent* m_pageRuntimeAgent { nullptr };
160     InspectorTimelineAgent* m_inspectorTimelineAgent { nullptr };
161     InspectorTimelineAgent* m_persistentInspectorTimelineAgent { nullptr };
162     InspectorDOMStorageAgent* m_inspectorDOMStorageAgent { nullptr };
163 #if ENABLE(RESOURCE_USAGE)
164     InspectorCPUProfilerAgent* m_inspectorCPUProfilerAgent { nullptr };
165     InspectorMemoryAgent* m_inspectorMemoryAgent { nullptr };
166 #endif
167     InspectorDatabaseAgent* m_inspectorDatabaseAgent { nullptr };
168     InspectorApplicationCacheAgent* m_inspectorApplicationCacheAgent { nullptr };
169     Inspector::InspectorDebuggerAgent* m_inspectorDebuggerAgent { nullptr };
170     PageDebuggerAgent* m_pageDebuggerAgent { nullptr };
171     PageHeapAgent* m_pageHeapAgent { nullptr };
172     InspectorDOMDebuggerAgent* m_inspectorDOMDebuggerAgent { nullptr };
173     InspectorCanvasAgent* m_inspectorCanvasAgent { nullptr };
174 };
175
176 } // namespace WebCore