Replace WTF::move with WTFMove
[WebKit-https.git] / Source / WebCore / inspector / CommandLineAPIHost.cpp
1 /*
2  * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
3  * Copyright (C) 2008 Matt Lilek <webkit@mattlilek.com>
4  * Copyright (C) 2010 Google Inc. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1.  Redistributions of source code must retain the above copyright
11  *     notice, this list of conditions and the following disclaimer.
12  * 2.  Redistributions in binary form must reproduce the above copyright
13  *     notice, this list of conditions and the following disclaimer in the
14  *     documentation and/or other materials provided with the distribution.
15  * 3.  Neither the name of Apple Inc. ("Apple") nor the names of
16  *     its contributors may be used to endorse or promote products derived
17  *     from this software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
20  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
23  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
26  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */
30
31 #include "config.h"
32 #include "CommandLineAPIHost.h"
33
34 #include "Database.h"
35 #include "InspectorDOMAgent.h"
36 #include "InspectorDOMStorageAgent.h"
37 #include "InspectorDatabaseAgent.h"
38 #include "JSCommandLineAPIHost.h"
39 #include "JSDOMGlobalObject.h"
40 #include "Pasteboard.h"
41 #include "Storage.h"
42 #include <bindings/ScriptValue.h>
43 #include <inspector/InspectorValues.h>
44 #include <inspector/agents/InspectorAgent.h>
45 #include <inspector/agents/InspectorConsoleAgent.h>
46 #include <runtime/JSCInlines.h>
47 #include <wtf/RefPtr.h>
48 #include <wtf/StdLibExtras.h>
49
50 using namespace JSC;
51 using namespace Inspector;
52
53 namespace WebCore {
54
55 Ref<CommandLineAPIHost> CommandLineAPIHost::create()
56 {
57     return adoptRef(*new CommandLineAPIHost);
58 }
59
60 CommandLineAPIHost::CommandLineAPIHost()
61     : m_inspectedObject(std::make_unique<InspectableObject>())
62 {
63 }
64
65 CommandLineAPIHost::~CommandLineAPIHost()
66 {
67 }
68
69 void CommandLineAPIHost::disconnect()
70 {
71     m_inspectorAgent = nullptr;
72     m_consoleAgent = nullptr;
73     m_domAgent = nullptr;
74     m_domStorageAgent = nullptr;
75     m_databaseAgent = nullptr;
76 }
77
78 void CommandLineAPIHost::inspectImpl(RefPtr<InspectorValue>&& object, RefPtr<InspectorValue>&& hints)
79 {
80     if (!m_inspectorAgent)
81         return;
82
83     RefPtr<InspectorObject> hintsObject;
84     if (!hints->asObject(hintsObject))
85         return;
86
87     auto remoteObject = BindingTraits<Inspector::Protocol::Runtime::RemoteObject>::runtimeCast(WTFMove(object));
88     m_inspectorAgent->inspect(WTFMove(remoteObject), WTFMove(hintsObject));
89 }
90
91 void CommandLineAPIHost::getEventListenersImpl(Node* node, Vector<EventListenerInfo>& listenersArray)
92 {
93     if (m_domAgent)
94         m_domAgent->getEventListeners(node, listenersArray, false);
95 }
96
97 void CommandLineAPIHost::clearConsoleMessages()
98 {
99     if (m_consoleAgent) {
100         ErrorString unused;
101         m_consoleAgent->clearMessages(unused);
102     }
103 }
104
105 void CommandLineAPIHost::copyText(const String& text)
106 {
107     Pasteboard::createForCopyAndPaste()->writePlainText(text, Pasteboard::CannotSmartReplace);
108 }
109
110 Deprecated::ScriptValue CommandLineAPIHost::InspectableObject::get(JSC::ExecState*)
111 {
112     return Deprecated::ScriptValue();
113 }
114
115 void CommandLineAPIHost::addInspectedObject(std::unique_ptr<CommandLineAPIHost::InspectableObject> object)
116 {
117     m_inspectedObject = WTFMove(object);
118 }
119
120 CommandLineAPIHost::InspectableObject* CommandLineAPIHost::inspectedObject()
121 {
122     return m_inspectedObject.get();
123 }
124
125 String CommandLineAPIHost::databaseIdImpl(Database* database)
126 {
127     if (m_databaseAgent)
128         return m_databaseAgent->databaseId(database);
129     return String();
130 }
131
132 String CommandLineAPIHost::storageIdImpl(Storage* storage)
133 {
134     if (m_domStorageAgent)
135         return m_domStorageAgent->storageId(storage);
136     return String();
137 }
138
139 JSValue CommandLineAPIHost::wrapper(ExecState* exec, JSDOMGlobalObject* globalObject)
140 {
141     JSValue value = m_wrappers.getWrapper(globalObject);
142     if (value)
143         return value;
144
145     JSObject* prototype = JSCommandLineAPIHost::createPrototype(exec->vm(), globalObject);
146     Structure* structure = JSCommandLineAPIHost::createStructure(exec->vm(), globalObject, prototype);
147     JSCommandLineAPIHost* commandLineAPIHost = JSCommandLineAPIHost::create(structure, globalObject, Ref<CommandLineAPIHost>(*this));
148     m_wrappers.addWrapper(globalObject, commandLineAPIHost);
149
150     return commandLineAPIHost;
151 }
152
153 void CommandLineAPIHost::clearAllWrappers()
154 {
155     m_wrappers.clearAllWrappers();
156     m_inspectedObject = std::make_unique<InspectableObject>();
157 }
158
159 } // namespace WebCore