Use "= default" to denote default constructor or destructor
[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 <inspector/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 InspectorCanvasAgent;
48 class InspectorCSSAgent;
49 class InspectorDOMAgent;
50 class InspectorDOMDebuggerAgent;
51 class InspectorDOMStorageAgent;
52 class InspectorDatabaseAgent;
53 class InspectorLayerTreeAgent;
54 class InspectorWorkerAgent;
55 class InspectorMemoryAgent;
56 class InspectorNetworkAgent;
57 class InspectorPageAgent;
58 class InspectorTimelineAgent;
59 class Page;
60 class PageDebuggerAgent;
61 class PageHeapAgent;
62 class PageRuntimeAgent;
63 class WebConsoleAgent;
64
65 class InstrumentingAgents : public RefCounted<InstrumentingAgents> {
66     WTF_MAKE_NONCOPYABLE(InstrumentingAgents);
67     WTF_MAKE_FAST_ALLOCATED;
68 public:
69     // FIXME: InstrumentingAgents could be uniquely owned by InspectorController if instrumentation
70     // cookies kept only a weak reference to InstrumentingAgents. Then, reset() would be unnecessary.
71     static Ref<InstrumentingAgents> create(Inspector::InspectorEnvironment& environment)
72     {
73         return adoptRef(*new InstrumentingAgents(environment));
74     }
75     ~InstrumentingAgents() = default;
76     void reset();
77
78     Inspector::InspectorEnvironment& inspectorEnvironment() const { return m_environment; }
79
80     Inspector::InspectorAgent* inspectorAgent() const { return m_inspectorAgent; }
81     void setInspectorAgent(Inspector::InspectorAgent* agent) { m_inspectorAgent = agent; }
82
83     InspectorPageAgent* inspectorPageAgent() const { return m_inspectorPageAgent; }
84     void setInspectorPageAgent(InspectorPageAgent* agent) { m_inspectorPageAgent = agent; }
85
86     InspectorCanvasAgent* inspectorCanvasAgent() const { return m_inspectorCanvasAgent; }
87     void setInspectorCanvasAgent(InspectorCanvasAgent* agent) { m_inspectorCanvasAgent = agent; }
88
89     InspectorCSSAgent* inspectorCSSAgent() const { return m_inspectorCSSAgent; }
90     void setInspectorCSSAgent(InspectorCSSAgent* agent) { m_inspectorCSSAgent = agent; }
91
92     WebConsoleAgent* webConsoleAgent() const { return m_webConsoleAgent; }
93     void setWebConsoleAgent(WebConsoleAgent* agent) { m_webConsoleAgent = agent; }
94
95     InspectorDOMAgent* inspectorDOMAgent() const { return m_inspectorDOMAgent; }
96     void setInspectorDOMAgent(InspectorDOMAgent* agent) { m_inspectorDOMAgent = agent; }
97
98     InspectorNetworkAgent* inspectorNetworkAgent() const { return m_inspectorNetworkAgent; }
99     void setInspectorNetworkAgent(InspectorNetworkAgent* agent) { m_inspectorNetworkAgent = agent; }
100
101     PageRuntimeAgent* pageRuntimeAgent() const { return m_pageRuntimeAgent; }
102     void setPageRuntimeAgent(PageRuntimeAgent* agent) { m_pageRuntimeAgent = agent; }
103
104     InspectorTimelineAgent* inspectorTimelineAgent() const { return m_inspectorTimelineAgent; }
105     void setInspectorTimelineAgent(InspectorTimelineAgent* agent) { m_inspectorTimelineAgent = agent; }
106
107     InspectorTimelineAgent* persistentInspectorTimelineAgent() const { return m_persistentInspectorTimelineAgent; }
108     void setPersistentInspectorTimelineAgent(InspectorTimelineAgent* agent) { m_persistentInspectorTimelineAgent = agent; }
109
110     InspectorDOMStorageAgent* inspectorDOMStorageAgent() const { return m_inspectorDOMStorageAgent; }
111     void setInspectorDOMStorageAgent(InspectorDOMStorageAgent* agent) { m_inspectorDOMStorageAgent = agent; }
112
113 #if ENABLE(RESOURCE_USAGE)
114     InspectorMemoryAgent* inspectorMemoryAgent() const { return m_inspectorMemoryAgent; }
115     void setInspectorMemoryAgent(InspectorMemoryAgent* agent) { m_inspectorMemoryAgent = agent; }
116 #endif
117
118     InspectorDatabaseAgent* inspectorDatabaseAgent() const { return m_inspectorDatabaseAgent; }
119     void setInspectorDatabaseAgent(InspectorDatabaseAgent* agent) { m_inspectorDatabaseAgent = agent; }
120
121     InspectorApplicationCacheAgent* inspectorApplicationCacheAgent() const { return m_inspectorApplicationCacheAgent; }
122     void setInspectorApplicationCacheAgent(InspectorApplicationCacheAgent* agent) { m_inspectorApplicationCacheAgent = agent; }
123
124     Inspector::InspectorDebuggerAgent* inspectorDebuggerAgent() const { return m_inspectorDebuggerAgent; }
125     void setInspectorDebuggerAgent(Inspector::InspectorDebuggerAgent* agent) { m_inspectorDebuggerAgent = agent; }
126
127     PageDebuggerAgent* pageDebuggerAgent() const { return m_pageDebuggerAgent; }
128     void setPageDebuggerAgent(PageDebuggerAgent* agent) { m_pageDebuggerAgent = agent; }
129
130     PageHeapAgent* pageHeapAgent() const { return m_pageHeapAgent; }
131     void setPageHeapAgent(PageHeapAgent* agent) { m_pageHeapAgent = agent; }
132
133     InspectorDOMDebuggerAgent* inspectorDOMDebuggerAgent() const { return m_inspectorDOMDebuggerAgent; }
134     void setInspectorDOMDebuggerAgent(InspectorDOMDebuggerAgent* agent) { m_inspectorDOMDebuggerAgent = agent; }
135
136     InspectorLayerTreeAgent* inspectorLayerTreeAgent() const { return m_inspectorLayerTreeAgent; }
137     void setInspectorLayerTreeAgent(InspectorLayerTreeAgent* agent) { m_inspectorLayerTreeAgent = agent; }
138
139     InspectorWorkerAgent* inspectorWorkerAgent() const { return m_inspectorWorkerAgent; }
140     void setInspectorWorkerAgent(InspectorWorkerAgent* agent) { m_inspectorWorkerAgent = agent; }
141
142 private:
143     InstrumentingAgents(Inspector::InspectorEnvironment&);
144
145     Inspector::InspectorEnvironment& m_environment;
146
147     Inspector::InspectorAgent* m_inspectorAgent { nullptr };
148     InspectorPageAgent* m_inspectorPageAgent { nullptr };
149     InspectorCSSAgent* m_inspectorCSSAgent { nullptr };
150     InspectorLayerTreeAgent* m_inspectorLayerTreeAgent { nullptr };
151     InspectorWorkerAgent* m_inspectorWorkerAgent { nullptr };
152     WebConsoleAgent* m_webConsoleAgent { nullptr };
153     InspectorDOMAgent* m_inspectorDOMAgent { nullptr };
154     InspectorNetworkAgent* m_inspectorNetworkAgent { nullptr };
155     PageRuntimeAgent* m_pageRuntimeAgent { nullptr };
156     InspectorTimelineAgent* m_inspectorTimelineAgent { nullptr };
157     InspectorTimelineAgent* m_persistentInspectorTimelineAgent { nullptr };
158     InspectorDOMStorageAgent* m_inspectorDOMStorageAgent { nullptr };
159 #if ENABLE(RESOURCE_USAGE)
160     InspectorMemoryAgent* m_inspectorMemoryAgent { nullptr };
161 #endif
162     InspectorDatabaseAgent* m_inspectorDatabaseAgent { nullptr };
163     InspectorApplicationCacheAgent* m_inspectorApplicationCacheAgent { nullptr };
164     Inspector::InspectorDebuggerAgent* m_inspectorDebuggerAgent { nullptr };
165     PageDebuggerAgent* m_pageDebuggerAgent { nullptr };
166     PageHeapAgent* m_pageHeapAgent { nullptr };
167     InspectorDOMDebuggerAgent* m_inspectorDOMDebuggerAgent { nullptr };
168     InspectorCanvasAgent* m_inspectorCanvasAgent { nullptr };
169 };
170
171 } // namespace WebCore