Run clang-modernize and let it add a bunch of missing overrides in WebCore/inspector
[WebKit-https.git] / Source / WebCore / inspector / InspectorConsoleAgent.h
1 /*
2  * Copyright (C) 2011 Google 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 InspectorConsoleAgent_h
26 #define InspectorConsoleAgent_h
27
28 #if ENABLE(INSPECTOR)
29
30 #include "ConsoleAPITypes.h"
31 #include "ConsoleTypes.h"
32 #include "InspectorWebAgentBase.h"
33 #include "InspectorWebBackendDispatchers.h"
34 #include "InspectorWebFrontendDispatchers.h"
35 #include "ScriptState.h"
36 #include <wtf/Forward.h>
37 #include <wtf/HashMap.h>
38 #include <wtf/Noncopyable.h>
39 #include <wtf/Vector.h>
40 #include <wtf/text/StringHash.h>
41
42 namespace WebCore {
43
44 class ConsoleMessage;
45 class DOMWindow;
46 class InstrumentingAgents;
47 class PageInjectedScriptManager;
48 class ResourceError;
49 class ResourceResponse;
50 class ScriptArguments;
51 class ScriptCallStack;
52 class ScriptProfile;
53
54 typedef String ErrorString;
55
56 class InspectorConsoleAgent : public InspectorAgentBase, public Inspector::InspectorConsoleBackendDispatcherHandler {
57     WTF_MAKE_NONCOPYABLE(InspectorConsoleAgent);
58 public:
59     InspectorConsoleAgent(InstrumentingAgents*, PageInjectedScriptManager*);
60     virtual ~InspectorConsoleAgent();
61
62     virtual void enable(ErrorString*) override;
63     virtual void disable(ErrorString*) override;
64     virtual void clearMessages(ErrorString*) override;
65     bool enabled() const { return m_enabled; }
66     void reset();
67
68     virtual void didCreateFrontendAndBackend(Inspector::InspectorFrontendChannel*, Inspector::InspectorBackendDispatcher*) override;
69     virtual void willDestroyFrontendAndBackend() override;
70
71     void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String& message, JSC::ExecState*, PassRefPtr<ScriptArguments>, unsigned long requestIdentifier = 0);
72     void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String& message, const String& scriptID, unsigned lineNumber, unsigned columnNumber, JSC::ExecState* = 0, unsigned long requestIdentifier = 0);
73
74     // FIXME: Remove once we no longer generate stacks outside of Inspector.
75     void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String& message, PassRefPtr<ScriptCallStack>, unsigned long requestIdentifier = 0);
76
77     Vector<unsigned> consoleMessageArgumentCounts();
78
79     void startTiming(const String& title);
80     void stopTiming(const String& title, PassRefPtr<ScriptCallStack>);
81     void count(JSC::ExecState*, PassRefPtr<ScriptArguments>);
82
83     void frameWindowDiscarded(DOMWindow*);
84
85     void didFinishXHRLoading(unsigned long requestIdentifier, const String& url, const String& sendURL, unsigned sendLineNumber, unsigned sendColumnNumber);
86     void didReceiveResponse(unsigned long requestIdentifier, const ResourceResponse&);
87     void didFailLoading(unsigned long requestIdentifier, const ResourceError&);
88 #if ENABLE(JAVASCRIPT_DEBUGGER)
89     void addProfileFinishedMessageToConsole(PassRefPtr<ScriptProfile>, unsigned lineNumber, unsigned columnNumber, const String& sourceURL);
90     void addStartProfilingMessageToConsole(const String& title, unsigned lineNumber, unsigned columnNumber, const String& sourceURL);
91 #endif
92     virtual void setMonitoringXHREnabled(ErrorString*, bool enabled) override;
93     virtual void addInspectedNode(ErrorString*, int nodeId) = 0;
94     virtual void addInspectedHeapObject(ErrorString*, int inspectedHeapObjectId) override;
95
96     virtual bool isWorkerAgent() = 0;
97
98 protected:
99     void addConsoleMessage(PassOwnPtr<ConsoleMessage>);
100
101     PageInjectedScriptManager* m_injectedScriptManager;
102     std::unique_ptr<Inspector::InspectorConsoleFrontendDispatcher> m_frontendDispatcher;
103     RefPtr<Inspector::InspectorConsoleBackendDispatcher> m_backendDispatcher;
104     ConsoleMessage* m_previousMessage;
105     Vector<OwnPtr<ConsoleMessage>> m_consoleMessages;
106     int m_expiredConsoleMessageCount;
107     HashMap<String, unsigned> m_counts;
108     HashMap<String, double> m_times;
109     bool m_enabled;
110     bool m_monitoringXHREnabled;
111 private:
112     static int s_enabledAgentCount;
113 };
114
115 } // namespace WebCore
116
117 #endif // ENABLE(INSPECTOR)
118
119 #endif // !defined(InspectorConsoleAgent_h)