blob: 61ae9a0ca38f779b19b3e9fcb7b9b1555a997471 [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
27#ifndef InspectorAgentRegistry_h
28#define InspectorAgentRegistry_h
29
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000030#include <wtf/Vector.h>
joepeck@webkit.org0d18c2f2014-11-03 19:36:14 +000031#include <wtf/text/WTFString.h>
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000032
joepeck@webkit.orga3198442013-12-11 22:40:23 +000033namespace Inspector {
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000034
burg@cs.washington.edu91ba8732015-02-14 23:25:53 +000035class BackendDispatcher;
bburg@apple.com84eff9e2015-09-05 16:06:23 +000036class FrontendRouter;
andersca@apple.com50ba2b02014-01-12 02:56:20 +000037class InspectorAgentBase;
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000038
burg@cs.washington.edu91ba8732015-02-14 23:25:53 +000039enum class DisconnectReason;
40
41class JS_EXPORT_PRIVATE AgentRegistry {
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000042public:
burg@cs.washington.edu91ba8732015-02-14 23:25:53 +000043 AgentRegistry();
bburg@apple.com84eff9e2015-09-05 16:06:23 +000044 ~AgentRegistry();
andersca@apple.comfd198c82014-01-12 03:00:51 +000045
andersca@apple.com7313f582014-01-12 00:54:27 +000046 void append(std::unique_ptr<InspectorAgentBase>);
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000047
bburg@apple.com84eff9e2015-09-05 16:06:23 +000048 void didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*);
burg@cs.washington.edu91ba8732015-02-14 23:25:53 +000049 void willDestroyFrontendAndBackend(DisconnectReason);
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000050
joepeck@webkit.org0d18c2f2014-11-03 19:36:14 +000051#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
52 void appendExtraAgent(std::unique_ptr<InspectorAgentBase>);
53 Vector<String> extraDomains() const { return m_extraDomains; }
54#endif
55
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000056private:
andersca@apple.comef4f2fd2014-01-12 03:23:25 +000057 // These are declared here to avoid MSVC from trying to create default iplementations which would
58 // involve generating a copy constructor and copy assignment operator for the Vector of std::unique_ptrs.
burg@cs.washington.edu91ba8732015-02-14 23:25:53 +000059 AgentRegistry(const AgentRegistry&) = delete;
60 AgentRegistry& operator=(const AgentRegistry&) = delete;
andersca@apple.comef4f2fd2014-01-12 03:23:25 +000061
andersca@apple.com7313f582014-01-12 00:54:27 +000062 Vector<std::unique_ptr<InspectorAgentBase>> m_agents;
joepeck@webkit.org0d18c2f2014-11-03 19:36:14 +000063#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
64 Vector<String> m_extraDomains;
65#endif
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000066};
67
joepeck@webkit.orga3198442013-12-11 22:40:23 +000068} // namespace Inspector
commit-queue@webkit.org0af35a62013-11-13 00:53:59 +000069
70#endif // !defined(InspectorAgentRegistry_h)