blob: 3a612ba1522d0f6abeb23e7a1282428a1292e8bc [file] [log] [blame]
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +00001/*
bburg@apple.com84eff9e2015-09-05 16:06:23 +00002 * Copyright (C) 2013, 2015 Apple Inc. All Rights Reserved.
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +00003 * Copyright (C) 2011 Google 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
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
commit-queue@webkit.org35dd3012016-08-15 20:55:16 +000027#pragma once
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000028
joepeck@webkit.orga3198442013-12-11 22:40:23 +000029#include <wtf/text/WTFString.h>
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000030
bburg@apple.comd81c28d2015-09-05 18:52:16 +000031namespace JSC {
32class JSGlobalObject;
33}
34
joepeck@webkit.orga3198442013-12-11 22:40:23 +000035namespace Inspector {
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000036
burg@cs.washington.edu91ba8732015-02-14 23:25:53 +000037class BackendDispatcher;
bburg@apple.com84eff9e2015-09-05 16:06:23 +000038class FrontendRouter;
bburg@apple.comd81c28d2015-09-05 18:52:16 +000039class InjectedScriptManager;
40class InspectorEnvironment;
41
42struct AgentContext {
43 InspectorEnvironment& environment;
44 InjectedScriptManager& injectedScriptManager;
45 FrontendRouter& frontendRouter;
46 BackendDispatcher& backendDispatcher;
47};
48
49struct JSAgentContext : public AgentContext {
50 JSAgentContext(AgentContext& context, JSC::JSGlobalObject& globalObject)
51 : AgentContext(context)
52 , inspectedGlobalObject(globalObject)
53 {
54 }
55
56 JSC::JSGlobalObject& inspectedGlobalObject;
57};
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000058
burg@cs.washington.edu91ba8732015-02-14 23:25:53 +000059enum class DisconnectReason {
joepeck@webkit.orgd1e21aa2014-01-24 02:38:08 +000060 InspectedTargetDestroyed,
61 InspectorDestroyed
62};
63
joepeck@webkit.orga3198442013-12-11 22:40:23 +000064class InspectorAgentBase {
akling@apple.com38854492016-01-22 05:22:29 +000065 WTF_MAKE_FAST_ALLOCATED;
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000066public:
joepeck@webkit.orga3198442013-12-11 22:40:23 +000067 virtual ~InspectorAgentBase() { }
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000068
joepeck@webkit.org0d18c2f2014-11-03 19:36:14 +000069 String domainName() const { return m_name; }
70
bburg@apple.com84eff9e2015-09-05 16:06:23 +000071 virtual void didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*) = 0;
burg@cs.washington.edu91ba8732015-02-14 23:25:53 +000072 virtual void willDestroyFrontendAndBackend(DisconnectReason) = 0;
joepeck@webkit.orga3198442013-12-11 22:40:23 +000073 virtual void discardAgent() { }
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000074
joepeck@webkit.orga3198442013-12-11 22:40:23 +000075protected:
76 InspectorAgentBase(const String& name)
77 : m_name(name)
78 {
79 }
80
81 String m_name;
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000082};
burg@cs.washington.edu91ba8732015-02-14 23:25:53 +000083
joepeck@webkit.orga3198442013-12-11 22:40:23 +000084} // namespace Inspector