diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebInspectorUI/UserInterface/Protocol | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebInspectorUI/UserInterface/Protocol')
35 files changed, 5414 insertions, 0 deletions
diff --git a/Source/WebInspectorUI/UserInterface/Protocol/ApplicationCacheObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/ApplicationCacheObserver.js new file mode 100644 index 000000000..d803853c3 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/ApplicationCacheObserver.js @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.ApplicationCacheObserver = class ApplicationCacheObserver +{ + // Events defined by the "ApplicationCache" domain. + + applicationCacheStatusUpdated(frameId, manifestURL, status) + { + WebInspector.applicationCacheManager.applicationCacheStatusUpdated(frameId, manifestURL, status); + } + + networkStateUpdated(isNowOnline) + { + WebInspector.applicationCacheManager.networkStateUpdated(isNowOnline); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/CSSObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/CSSObserver.js new file mode 100644 index 000000000..f8e0570dd --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/CSSObserver.js @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.CSSObserver = class CSSObserver +{ + // Events defined by the "CSS" domain. + + mediaQueryResultChanged() + { + WebInspector.cssStyleManager.mediaQueryResultChanged(); + } + + styleSheetChanged(styleSheetId) + { + WebInspector.cssStyleManager.styleSheetChanged(styleSheetId); + } + + styleSheetAdded(styleSheetInfo) + { + WebInspector.cssStyleManager.styleSheetAdded(styleSheetInfo); + } + + styleSheetRemoved(id) + { + WebInspector.cssStyleManager.styleSheetRemoved(id); + } + + namedFlowCreated(namedFlow) + { + WebInspector.domTreeManager.namedFlowCreated(namedFlow); + } + + namedFlowRemoved(documentNodeId, flowName) + { + WebInspector.domTreeManager.namedFlowRemoved(documentNodeId, flowName); + } + + // COMPATIBILITY (iOS 7): regionLayoutUpdated was removed and replaced by regionOversetChanged. + regionLayoutUpdated(namedFlow) + { + this.regionOversetChanged(namedFlow); + } + + regionOversetChanged(namedFlow) + { + WebInspector.domTreeManager.regionOversetChanged(namedFlow); + } + + registeredNamedFlowContentElement(documentNodeId, flowName, contentNodeId, nextContentElementNodeId) + { + WebInspector.domTreeManager.registeredNamedFlowContentElement(documentNodeId, flowName, contentNodeId, nextContentElementNodeId); + } + + unregisteredNamedFlowContentElement(documentNodeId, flowName, contentNodeId) + { + WebInspector.domTreeManager.unregisteredNamedFlowContentElement(documentNodeId, flowName, contentNodeId); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/Connection.js b/Source/WebInspectorUI/UserInterface/Protocol/Connection.js new file mode 100644 index 000000000..df059c163 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/Connection.js @@ -0,0 +1,315 @@ +/* + * Copyright (C) 2011 Google Inc. All rights reserved. + * Copyright (C) 2013-2016 Apple Inc. All rights reserved. + * Copyright (C) 2014 University of Washington. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +InspectorBackend.Connection = class InspectorBackendConnection +{ + constructor() + { + this._lastSequenceId = 1; + this._pendingResponses = new Map; + this._agents = {}; + this._deferredScripts = []; + this._target = null; + } + + // Public + + get target() + { + return this._target; + } + + set target(target) + { + console.assert(!this._target); + + this._target = target; + + for (let domain in this._agents) { + let dispatcher = this._agents[domain].dispatcher; + if (dispatcher) + dispatcher.target = target; + } + } + + dispatch(message) + { + let messageObject = (typeof message === "string") ? JSON.parse(message) : message; + + if ("id" in messageObject) + this._dispatchResponse(messageObject); + else + this._dispatchEvent(messageObject); + } + + runAfterPendingDispatches(script) + { + console.assert(typeof script === "function"); + + if (!this._pendingResponses.size) + script.call(this); + else + this._deferredScripts.push(script); + } + + // Protected + + sendMessageToBackend(message) + { + throw new Error("Should be implemented by a InspectorBackend.Connection subclass"); + } + + // Private + + _dispatchResponse(messageObject) + { + console.assert(this._pendingResponses.size >= 0); + + if (messageObject["error"]) { + if (messageObject["error"].code !== -32000) + console.error("Request with id = " + messageObject["id"] + " failed. " + JSON.stringify(messageObject["error"])); + } + + let sequenceId = messageObject["id"]; + console.assert(this._pendingResponses.has(sequenceId), sequenceId, this._pendingResponses); + + let responseData = this._pendingResponses.take(sequenceId) || {}; + let {request, command, callback, promise} = responseData; + + let processingStartTimestamp = timestamp(); + for (let tracer of InspectorBackend.activeTracers) + tracer.logWillHandleResponse(messageObject); + + InspectorBackend.currentDispatchState.request = request; + InspectorBackend.currentDispatchState.response = messageObject; + + if (typeof callback === "function") + this._dispatchResponseToCallback(command, request, messageObject, callback); + else if (typeof promise === "object") + this._dispatchResponseToPromise(command, messageObject, promise); + else + console.error("Received a command response without a corresponding callback or promise.", messageObject, command); + + InspectorBackend.currentDispatchState.request = null; + InspectorBackend.currentDispatchState.response = null; + + let processingTime = (timestamp() - processingStartTimestamp).toFixed(3); + let roundTripTime = (processingStartTimestamp - responseData.sendRequestTimestamp).toFixed(3); + + for (let tracer of InspectorBackend.activeTracers) + tracer.logDidHandleResponse(messageObject, {rtt: roundTripTime, dispatch: processingTime}); + + if (this._deferredScripts.length && !this._pendingResponses.size) + this._flushPendingScripts(); + } + + _dispatchResponseToCallback(command, requestObject, responseObject, callback) + { + let callbackArguments = []; + callbackArguments.push(responseObject["error"] ? responseObject["error"].message : null); + + if (responseObject["result"]) { + for (let parameterName of command.replySignature) + callbackArguments.push(responseObject["result"][parameterName]); + } + + try { + callback.apply(null, callbackArguments); + } catch (e) { + WebInspector.reportInternalError(e, {"cause": `An uncaught exception was thrown while dispatching response callback for command ${command.qualifiedName}.`}); + } + } + + _dispatchResponseToPromise(command, messageObject, promise) + { + let {resolve, reject} = promise; + if (messageObject["error"]) + reject(new Error(messageObject["error"].message)); + else + resolve(messageObject["result"]); + } + + _dispatchEvent(messageObject) + { + let qualifiedName = messageObject["method"]; + let [domainName, eventName] = qualifiedName.split("."); + if (!(domainName in this._agents)) { + console.error("Protocol Error: Attempted to dispatch method '" + eventName + "' for non-existing domain '" + domainName + "'"); + return; + } + + let agent = this._agents[domainName]; + if (!agent.active) { + console.error("Protocol Error: Attempted to dispatch method for domain '" + domainName + "' which exists but is not active."); + return; + } + + let event = agent.getEvent(eventName); + if (!event) { + console.error("Protocol Error: Attempted to dispatch an unspecified method '" + qualifiedName + "'"); + return; + } + + let eventArguments = []; + if (messageObject["params"]) + eventArguments = event.parameterNames.map((name) => messageObject["params"][name]); + + let processingStartTimestamp = timestamp(); + for (let tracer of InspectorBackend.activeTracers) + tracer.logWillHandleEvent(messageObject); + + InspectorBackend.currentDispatchState.event = messageObject; + + try { + agent.dispatchEvent(eventName, eventArguments); + } catch (e) { + for (let tracer of InspectorBackend.activeTracers) + tracer.logFrontendException(messageObject, e); + + WebInspector.reportInternalError(e, {"cause": `An uncaught exception was thrown while handling event: ${qualifiedName}`}); + } + + InspectorBackend.currentDispatchState.event = null; + + let processingDuration = (timestamp() - processingStartTimestamp).toFixed(3); + for (let tracer of InspectorBackend.activeTracers) + tracer.logDidHandleEvent(messageObject, {dispatch: processingDuration}); + } + + _sendCommandToBackendWithCallback(command, parameters, callback) + { + let sequenceId = this._lastSequenceId++; + + let messageObject = { + "id": sequenceId, + "method": command.qualifiedName, + }; + + if (!isEmptyObject(parameters)) + messageObject["params"] = parameters; + + let responseData = {command, request: messageObject, callback}; + + if (InspectorBackend.activeTracer) + responseData.sendRequestTimestamp = timestamp(); + + this._pendingResponses.set(sequenceId, responseData); + this._sendMessageToBackend(messageObject); + } + + _sendCommandToBackendExpectingPromise(command, parameters) + { + let sequenceId = this._lastSequenceId++; + + let messageObject = { + "id": sequenceId, + "method": command.qualifiedName, + }; + + if (!isEmptyObject(parameters)) + messageObject["params"] = parameters; + + let responseData = {command, request: messageObject}; + + if (InspectorBackend.activeTracer) + responseData.sendRequestTimestamp = timestamp(); + + let responsePromise = new Promise(function(resolve, reject) { + responseData.promise = {resolve, reject}; + }); + + this._pendingResponses.set(sequenceId, responseData); + this._sendMessageToBackend(messageObject); + + return responsePromise; + } + + _sendMessageToBackend(messageObject) + { + for (let tracer of InspectorBackend.activeTracers) + tracer.logFrontendRequest(messageObject); + + this.sendMessageToBackend(JSON.stringify(messageObject)); + } + + _flushPendingScripts() + { + console.assert(this._pendingResponses.size === 0); + + let scriptsToRun = this._deferredScripts; + this._deferredScripts = []; + for (let script of scriptsToRun) + script.call(this); + } +}; + +InspectorBackend.MainConnection = class InspectorBackendPageConnection extends InspectorBackend.Connection +{ + constructor() + { + super(); + + this._agents = InspectorBackend._agents; + } + + sendMessageToBackend(message) + { + InspectorFrontendHost.sendMessageToBackend(message); + } +}; + +InspectorBackend.WorkerConnection = class InspectorBackendWorkerConnection extends InspectorBackend.Connection +{ + constructor(workerId) + { + super(); + + this._workerId = workerId; + + const workerDomains = InspectorBackend.workerSupportedDomains; + + for (let domain of workerDomains) { + let agent = InspectorBackend._agents[domain]; + let clone = Object.create(InspectorBackend._agents[domain]); + clone.connection = this; + clone.dispatcher = new agent.dispatcher.constructor; + this._agents[domain] = clone; + } + } + + sendMessageToBackend(message) + { + WorkerAgent.sendMessageToWorker(this._workerId, message); + } +}; + +InspectorBackend.mainConnection = new InspectorBackend.MainConnection; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/ConsoleObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/ConsoleObserver.js new file mode 100644 index 000000000..1dff61961 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/ConsoleObserver.js @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.ConsoleObserver = class ConsoleObserver +{ + // Events defined by the "Console" domain. + + messageAdded(message) + { + if (message.source === "console-api" && message.type === "clear") + return; + + if (message.type === "assert" && !message.text) + message.text = WebInspector.UIString("Assertion"); + + WebInspector.logManager.messageWasAdded(this.target, message.source, message.level, message.text, message.type, message.url, message.line, message.column || 0, message.repeatCount, message.parameters, message.stackTrace, message.networkRequestId); + } + + messageRepeatCountUpdated(count) + { + WebInspector.logManager.messageRepeatCountUpdated(count); + } + + messagesCleared() + { + WebInspector.logManager.messagesCleared(); + } + + heapSnapshot(timestamp, snapshotStringData, title) + { + let workerProxy = WebInspector.HeapSnapshotWorkerProxy.singleton(); + workerProxy.createSnapshot(snapshotStringData, title || null, ({objectId, snapshot: serializedSnapshot}) => { + let snapshot = WebInspector.HeapSnapshotProxy.deserialize(objectId, serializedSnapshot); + WebInspector.timelineManager.heapSnapshotAdded(timestamp, snapshot); + }); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/DOMObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/DOMObserver.js new file mode 100644 index 000000000..40a997716 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/DOMObserver.js @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.DOMObserver = class DOMObserver +{ + // Events defined by the "DOM" domain. + + documentUpdated() + { + WebInspector.domTreeManager._documentUpdated(); + } + + setChildNodes(parentId, payloads) + { + WebInspector.domTreeManager._setChildNodes(parentId, payloads); + } + + attributeModified(nodeId, name, value) + { + WebInspector.domTreeManager._attributeModified(nodeId, name, value); + } + + attributeRemoved(nodeId, name) + { + WebInspector.domTreeManager._attributeRemoved(nodeId, name); + } + + inlineStyleInvalidated(nodeIds) + { + WebInspector.domTreeManager._inlineStyleInvalidated(nodeIds); + } + + characterDataModified(nodeId, characterData) + { + WebInspector.domTreeManager._characterDataModified(nodeId, characterData); + } + + childNodeCountUpdated(nodeId, childNodeCount) + { + WebInspector.domTreeManager._childNodeCountUpdated(nodeId, childNodeCount); + } + + childNodeInserted(parentNodeId, previousNodeId, payload) + { + WebInspector.domTreeManager._childNodeInserted(parentNodeId, previousNodeId, payload); + } + + childNodeRemoved(parentNodeId, nodeId) + { + WebInspector.domTreeManager._childNodeRemoved(parentNodeId, nodeId); + } + + shadowRootPushed(parentNodeId, nodeId) + { + WebInspector.domTreeManager._childNodeInserted(parentNodeId, 0, nodeId); + } + + shadowRootPopped(parentNodeId, nodeId) + { + WebInspector.domTreeManager._childNodeRemoved(parentNodeId, nodeId); + } + + customElementStateChanged(nodeId, customElementState) + { + WebInspector.domTreeManager._customElementStateChanged(nodeId, customElementState); + } + + pseudoElementAdded(parentNodeId, pseudoElement) + { + WebInspector.domTreeManager._pseudoElementAdded(parentNodeId, pseudoElement); + } + + pseudoElementRemoved(parentNodeId, pseudoElementId) + { + WebInspector.domTreeManager._pseudoElementRemoved(parentNodeId, pseudoElementId); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/DOMStorageObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/DOMStorageObserver.js new file mode 100644 index 000000000..57da70f7f --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/DOMStorageObserver.js @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2013 Apple Inc. All rights reserved. + * Copyright (C) 2013 Samsung Electronics. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.DOMStorageObserver = class DOMStorageObserver +{ + // Events defined by the "DOMStorage" domain. + + domStorageItemsCleared(storageId) + { + WebInspector.storageManager.itemsCleared(storageId); + } + + domStorageItemRemoved(storageId, key) + { + WebInspector.storageManager.itemRemoved(storageId, key); + } + + domStorageItemAdded(storageId, key, value) + { + WebInspector.storageManager.itemAdded(storageId, key, value); + } + + domStorageItemUpdated(storageId, key, oldValue, value) + { + WebInspector.storageManager.itemUpdated(storageId, key, oldValue, value); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/DatabaseObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/DatabaseObserver.js new file mode 100644 index 000000000..2efd6e9e2 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/DatabaseObserver.js @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.DatabaseObserver = class DatabaseObserver +{ + // Events defined by the "Database" domain. + + addDatabase(database) + { + WebInspector.storageManager.databaseWasAdded(database.id, database.domain, database.name, database.version); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/DebuggerObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/DebuggerObserver.js new file mode 100644 index 000000000..8dbd536cb --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/DebuggerObserver.js @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.DebuggerObserver = class DebuggerObserver +{ + constructor() + { + this._legacyScriptParsed = DebuggerAgent.hasEventParameter("scriptParsed", "hasSourceURL"); + } + + // Events defined by the "Debugger" domain. + + globalObjectCleared() + { + WebInspector.debuggerManager.reset(); + } + + scriptParsed(scriptId, url, startLine, startColumn, endLine, endColumn, isContentScript, sourceURL, sourceMapURL, isModule) + { + if (this._legacyScriptParsed) { + // COMPATIBILITY (iOS 9): Debugger.scriptParsed had slightly different arguments. + // Debugger.scriptParsed: (scriptId, url, startLine, startColumn, endLine, endColumn, isContentScript, sourceMapURL, hasSourceURL) + // Note that in this legacy version, url could be the sourceURL name, and the resource URL could be lost. + let legacySourceMapURL = arguments[7]; + let hasSourceURL = arguments[8]; + let legacySourceURL = hasSourceURL ? url : undefined; + WebInspector.debuggerManager.scriptDidParse(this.target, scriptId, url, startLine, startColumn, endLine, endColumn, isModule, isContentScript, legacySourceURL, legacySourceMapURL); + return; + } + + WebInspector.debuggerManager.scriptDidParse(this.target, scriptId, url, startLine, startColumn, endLine, endColumn, isModule, isContentScript, sourceURL, sourceMapURL); + } + + scriptFailedToParse(url, scriptSource, startLine, errorLine, errorMessage) + { + // FIXME: Not implemented. + } + + breakpointResolved(breakpointId, location) + { + WebInspector.debuggerManager.breakpointResolved(this.target, breakpointId, location); + } + + paused(callFrames, reason, data, asyncStackTrace) + { + WebInspector.debuggerManager.debuggerDidPause(this.target, callFrames, reason, data, asyncStackTrace); + } + + resumed() + { + WebInspector.debuggerManager.debuggerDidResume(this.target); + } + + playBreakpointActionSound(breakpointActionIdentifier) + { + WebInspector.debuggerManager.playBreakpointActionSound(breakpointActionIdentifier); + } + + didSampleProbe(sample) + { + WebInspector.probeManager.didSampleProbe(this.target, sample); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/HeapObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/HeapObserver.js new file mode 100644 index 000000000..dab307605 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/HeapObserver.js @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.HeapObserver = class HeapObserver +{ + // Events defined by the "Heap" domain. + + garbageCollected(collection) + { + WebInspector.heapManager.garbageCollected(this.target, collection); + } + + trackingStart(timestamp, snapshotStringData) + { + let workerProxy = WebInspector.HeapSnapshotWorkerProxy.singleton(); + workerProxy.createSnapshot(snapshotStringData, ({objectId, snapshot: serializedSnapshot}) => { + let snapshot = WebInspector.HeapSnapshotProxy.deserialize(objectId, serializedSnapshot); + WebInspector.timelineManager.heapTrackingStarted(timestamp, snapshot); + }); + } + + trackingComplete(timestamp, snapshotStringData) + { + let workerProxy = WebInspector.HeapSnapshotWorkerProxy.singleton(); + workerProxy.createSnapshot(snapshotStringData, ({objectId, snapshot: serializedSnapshot}) => { + let snapshot = WebInspector.HeapSnapshotProxy.deserialize(objectId, serializedSnapshot); + WebInspector.timelineManager.heapTrackingCompleted(timestamp, snapshot); + }); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js b/Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js new file mode 100644 index 000000000..7fdc39ceb --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js @@ -0,0 +1,432 @@ +/* + * Copyright (C) 2011 Google Inc. All rights reserved. + * Copyright (C) 2013, 2015, 2016 Apple Inc. All rights reserved. + * Copyright (C) 2014 University of Washington. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +InspectorBackendClass = class InspectorBackendClass +{ + constructor() + { + this._agents = {}; + + this._customTracer = null; + this._defaultTracer = new WebInspector.LoggingProtocolTracer; + this._activeTracers = [this._defaultTracer]; + + this._dumpInspectorTimeStats = false; + this._workerSupportedDomains = []; + + let setting = WebInspector.autoLogProtocolMessagesSetting = new WebInspector.Setting("auto-collect-protocol-messages", false); + setting.addEventListener(WebInspector.Setting.Event.Changed, this._startOrStopAutomaticTracing.bind(this)); + this._startOrStopAutomaticTracing(); + + this.currentDispatchState = { + event: null, + request: null, + response: null, + }; + } + + // Public + + get workerSupportedDomains() { return this._workerSupportedDomains; } + + // It's still possible to set this flag on InspectorBackend to just + // dump protocol traffic as it happens. For more complex uses of + // protocol data, install a subclass of WebInspector.ProtocolTracer. + set dumpInspectorProtocolMessages(value) + { + // Implicitly cause automatic logging to start if it's allowed. + let setting = WebInspector.autoLogProtocolMessagesSetting; + setting.value = value; + + this._defaultTracer.dumpMessagesToConsole = value; + } + + get dumpInspectorProtocolMessages() + { + return WebInspector.autoLogProtocolMessagesSetting.value; + } + + set dumpInspectorTimeStats(value) + { + this._dumpInspectorTimeStats = !!value; + + if (!this.dumpInspectorProtocolMessages) + this.dumpInspectorProtocolMessages = true; + + this._defaultTracer.dumpTimingDataToConsole = value; + } + + get dumpInspectorTimeStats() + { + return this._dumpInspectorTimeStats; + } + + set customTracer(tracer) + { + console.assert(!tracer || tracer instanceof WebInspector.ProtocolTracer, tracer); + console.assert(!tracer || tracer !== this._defaultTracer, tracer); + + // Bail early if no state change is to be made. + if (!tracer && !this._customTracer) + return; + + if (tracer === this._customTracer) + return; + + if (tracer === this._defaultTracer) + return; + + if (this._customTracer) + this._customTracer.logFinished(); + + this._customTracer = tracer; + this._activeTracers = [this._defaultTracer]; + + if (this._customTracer) { + this._customTracer.logStarted(); + this._activeTracers.push(this._customTracer); + } + } + + get activeTracers() + { + return this._activeTracers; + } + + registerCommand(qualifiedName, callSignature, replySignature) + { + var [domainName, commandName] = qualifiedName.split("."); + var agent = this._agentForDomain(domainName); + agent.addCommand(InspectorBackend.Command.create(agent, qualifiedName, callSignature, replySignature)); + } + + registerEnum(qualifiedName, enumValues) + { + var [domainName, enumName] = qualifiedName.split("."); + var agent = this._agentForDomain(domainName); + agent.addEnum(enumName, enumValues); + } + + registerEvent(qualifiedName, signature) + { + var [domainName, eventName] = qualifiedName.split("."); + var agent = this._agentForDomain(domainName); + agent.addEvent(new InspectorBackend.Event(eventName, signature)); + } + + registerDomainDispatcher(domainName, dispatcher) + { + var agent = this._agentForDomain(domainName); + agent.dispatcher = dispatcher; + } + + dispatch(message) + { + InspectorBackend.mainConnection.dispatch(message); + } + + runAfterPendingDispatches(script) + { + // FIXME: Should this respect pending dispatches in all connections? + InspectorBackend.mainConnection.runAfterPendingDispatches(script); + } + + activateDomain(domainName, activationDebuggableType) + { + if (!activationDebuggableType || InspectorFrontendHost.debuggableType() === activationDebuggableType) { + var agent = this._agents[domainName]; + agent.activate(); + return agent; + } + + return null; + } + + workerSupportedDomain(domainName) + { + this._workerSupportedDomains.push(domainName); + } + + // Private + + _startOrStopAutomaticTracing() + { + this._defaultTracer.dumpMessagesToConsole = this.dumpInspectorProtocolMessages; + this._defaultTracer.dumpTimingDataToConsole = this.dumpTimingDataToConsole; + } + + _agentForDomain(domainName) + { + if (this._agents[domainName]) + return this._agents[domainName]; + + var agent = new InspectorBackend.Agent(domainName); + this._agents[domainName] = agent; + return agent; + } +}; + +InspectorBackend = new InspectorBackendClass; + +InspectorBackend.Agent = class InspectorBackendAgent +{ + constructor(domainName) + { + this._domainName = domainName; + + // Default connection is the main connection. + this._connection = InspectorBackend.mainConnection; + this._dispatcher = null; + + // Agents are always created, but are only useable after they are activated. + this._active = false; + + // Commands are stored directly on the Agent instance using their unqualified + // method name as the property. Thus, callers can write: FooAgent.methodName(). + // Enums are stored similarly based on the unqualified type name. + this._events = {}; + } + + // Public + + get domainName() + { + return this._domainName; + } + + get active() + { + return this._active; + } + + get connection() + { + return this._connection; + } + + set connection(connection) + { + this._connection = connection; + } + + get dispatcher() + { + return this._dispatcher; + } + + set dispatcher(value) + { + this._dispatcher = value; + } + + addEnum(enumName, enumValues) + { + this[enumName] = enumValues; + } + + addCommand(command) + { + this[command.commandName] = command; + } + + addEvent(event) + { + this._events[event.eventName] = event; + } + + getEvent(eventName) + { + return this._events[eventName]; + } + + hasEvent(eventName) + { + return eventName in this._events; + } + + hasEventParameter(eventName, eventParameterName) + { + let event = this._events[eventName]; + return event && event.parameterNames.includes(eventParameterName); + } + + activate() + { + this._active = true; + window[this._domainName + "Agent"] = this; + } + + dispatchEvent(eventName, eventArguments) + { + if (!(eventName in this._dispatcher)) { + console.error("Protocol Error: Attempted to dispatch an unimplemented method '" + this._domainName + "." + eventName + "'"); + return false; + } + + this._dispatcher[eventName].apply(this._dispatcher, eventArguments); + return true; + } +}; + +// InspectorBackend.Command can't use ES6 classes because of its trampoline nature. +// But we can use strict mode to get stricter handling of the code inside its functions. +InspectorBackend.Command = function(agent, qualifiedName, callSignature, replySignature) +{ + "use strict"; + + this._agent = agent; + this._instance = this; + + let [domainName, commandName] = qualifiedName.split("."); + this._qualifiedName = qualifiedName; + this._commandName = commandName; + this._callSignature = callSignature || []; + this._replySignature = replySignature || []; +}; + +InspectorBackend.Command.create = function(agent, commandName, callSignature, replySignature) +{ + "use strict"; + + let instance = new InspectorBackend.Command(agent, commandName, callSignature, replySignature); + + function callable() { + console.assert(this instanceof InspectorBackend.Agent); + return instance._invokeWithArguments.call(instance, this, Array.from(arguments)); + } + + callable._instance = instance; + Object.setPrototypeOf(callable, InspectorBackend.Command.prototype); + + return callable; +}; + +// As part of the workaround to make commands callable, these functions use |this._instance|. +// |this| could refer to the callable trampoline, or the InspectorBackend.Command instance. +InspectorBackend.Command.prototype = { + __proto__: Function.prototype, + + // Public + + get qualifiedName() + { + return this._instance._qualifiedName; + }, + + get commandName() + { + return this._instance._commandName; + }, + + get callSignature() + { + return this._instance._callSignature; + }, + + get replySignature() + { + return this._instance._replySignature; + }, + + invoke(commandArguments, callback, agent) + { + "use strict"; + + agent = agent || this._instance._agent; + + if (typeof callback === "function") + agent._connection._sendCommandToBackendWithCallback(this._instance, commandArguments, callback); + else + return agent._connection._sendCommandToBackendExpectingPromise(this._instance, commandArguments); + }, + + supports(parameterName) + { + "use strict"; + + return this._instance.callSignature.some((parameter) => parameter["name"] === parameterName); + }, + + // Private + + _invokeWithArguments(agent, commandArguments) + { + "use strict"; + + let instance = this._instance; + let callback = typeof commandArguments.lastValue === "function" ? commandArguments.pop() : null; + + function deliverFailure(message) { + console.error(`Protocol Error: ${message}`); + if (callback) + setTimeout(callback.bind(null, message), 0); + else + return Promise.reject(new Error(message)); + } + + let parameters = {}; + for (let parameter of instance.callSignature) { + let parameterName = parameter["name"]; + let typeName = parameter["type"]; + let optionalFlag = parameter["optional"]; + + if (!commandArguments.length && !optionalFlag) + return deliverFailure(`Invalid number of arguments for command '${instance.qualifiedName}'.`); + + let value = commandArguments.shift(); + if (optionalFlag && value === undefined) + continue; + + if (typeof value !== typeName) + return deliverFailure(`Invalid type of argument '${parameterName}' for command '${instance.qualifiedName}' call. It must be '${typeName}' but it is '${typeof value}'.`); + + parameters[parameterName] = value; + } + + if (!callback && commandArguments.length === 1 && commandArguments[0] !== undefined) + return deliverFailure(`Protocol Error: Optional callback argument for command '${instance.qualifiedName}' call must be a function but its type is '${typeof commandArguments[0]}'.`); + + if (callback) + agent._connection._sendCommandToBackendWithCallback(instance, parameters, callback); + else + return agent._connection._sendCommandToBackendExpectingPromise(instance, parameters); + } +}; + +InspectorBackend.Event = class Event +{ + constructor(eventName, parameterNames) + { + this.eventName = eventName; + this.parameterNames = parameterNames; + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js b/Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js new file mode 100644 index 000000000..99ef37215 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendAPI.js @@ -0,0 +1,163 @@ +/* + * Copyright (C) 2013, 2016 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +InspectorFrontendAPI = { + _loaded: false, + _pendingCommands: [], + + savedURL: function(url) + { + // Not used yet. + }, + + appendedToURL: function(url) + { + // Not used yet. + }, + + isTimelineProfilingEnabled: function() + { + return WebInspector.timelineManager.isCapturing(); + }, + + setTimelineProfilingEnabled: function(enabled) + { + if (WebInspector.timelineManager.isCapturing() === enabled) + return; + + if (enabled) + WebInspector.timelineManager.startCapturing(); + else + WebInspector.timelineManager.stopCapturing(); + }, + + setElementSelectionEnabled: function(enabled) + { + WebInspector.domTreeManager.inspectModeEnabled = enabled; + }, + + setDockingUnavailable: function(unavailable) + { + WebInspector.updateDockingAvailability(!unavailable); + }, + + setDockSide: function(side) + { + WebInspector.updateDockedState(side); + }, + + setIsVisible: function(visible) + { + WebInspector.updateVisibilityState(visible); + }, + + showConsole: function() + { + WebInspector.showConsoleTab(); + + WebInspector.quickConsole.prompt.focus(); + + // If the page is still loading, focus the quick console again after tabindex autofocus. + if (document.readyState !== "complete") + document.addEventListener("readystatechange", this); + if (document.visibilityState !== "visible") + document.addEventListener("visibilitychange", this); + }, + + handleEvent: function(event) + { + console.assert(event.type === "readystatechange" || event.type === "visibilitychange"); + + if (document.readyState === "complete" && document.visibilityState === "visible") { + WebInspector.quickConsole.prompt.focus(); + document.removeEventListener("readystatechange", this); + document.removeEventListener("visibilitychange", this); + } + }, + + showResources: function() + { + WebInspector.showResourcesTab(); + }, + + showTimelines: function() + { + WebInspector.showTimelineTab(); + }, + + showMainResourceForFrame: function(frameIdentifier) + { + WebInspector.showSourceCodeForFrame(frameIdentifier); + }, + + contextMenuItemSelected: function(id) + { + try { + WebInspector.ContextMenu.contextMenuItemSelected(id); + } catch (e) { + console.error("Uncaught exception in inspector page under contextMenuItemSelected", e); + } + }, + + contextMenuCleared: function() + { + WebInspector.ContextMenu.contextMenuCleared(); + }, + + dispatchMessageAsync: function(messageObject) + { + WebInspector.dispatchMessageFromBackend(messageObject); + }, + + dispatchMessage: function(messageObject) + { + InspectorBackend.dispatch(messageObject); + }, + + dispatch: function(signature) + { + if (!InspectorFrontendAPI._loaded) { + InspectorFrontendAPI._pendingCommands.push(signature); + return null; + } + + var methodName = signature.shift(); + console.assert(InspectorFrontendAPI[methodName], "Unexpected InspectorFrontendAPI method name: " + methodName); + if (!InspectorFrontendAPI[methodName]) + return null; + + return InspectorFrontendAPI[methodName].apply(InspectorFrontendAPI, signature); + }, + + loadCompleted: function() + { + InspectorFrontendAPI._loaded = true; + + for (var i = 0; i < InspectorFrontendAPI._pendingCommands.length; ++i) + InspectorFrontendAPI.dispatch(InspectorFrontendAPI._pendingCommands[i]); + + delete InspectorFrontendAPI._pendingCommands; + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/InspectorObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/InspectorObserver.js new file mode 100644 index 000000000..59fd62dff --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/InspectorObserver.js @@ -0,0 +1,65 @@ +/* + * Copyright (C) 2013-2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.InspectorObserver = class InspectorObserver +{ + // Events defined by the "Inspector" domain. + + evaluateForTestInFrontend(script) + { + if (!InspectorFrontendHost.isUnderTest()) + return; + + InspectorBackend.runAfterPendingDispatches(function() { + window.eval(script); + }); + } + + inspect(payload, hints) + { + var remoteObject = WebInspector.RemoteObject.fromPayload(payload, WebInspector.mainTarget); + if (remoteObject.subtype === "node") { + WebInspector.domTreeManager.inspectNodeObject(remoteObject); + return; + } + + if (hints.databaseId) + WebInspector.storageManager.inspectDatabase(hints.databaseId); + else if (hints.domStorageId) + WebInspector.storageManager.inspectDOMStorage(hints.domStorageId); + + remoteObject.release(); + } + + detached(reason) + { + // FIXME: Not implemented. + } + + activateExtraDomains(domains) + { + WebInspector.activateExtraDomains(domains); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/LayerTreeObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/LayerTreeObserver.js new file mode 100644 index 000000000..0ac671bdd --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/LayerTreeObserver.js @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OdF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.LayerTreeObserver = class LayerTreeObserver +{ + // Events defined by the "LayerTree" domain. + + layerTreeDidChange() + { + if (WebInspector.layerTreeManager.supported) + WebInspector.layerTreeManager.layerTreeDidChange(); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js b/Source/WebInspectorUI/UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js new file mode 100644 index 000000000..2a6da81f7 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js @@ -0,0 +1,397 @@ +/* + * Copyright (C) 2013 Google Inc. All rights reserved. + * Copyright (C) 2013-2016 Apple Inc. All rights reserved. + * Copyright (C) 2014 University of Washington. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +// DO NOT EDIT THIS FILE. It is automatically generated from Inspector-iOS-10.0.json +// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py + +// ApplicationCache. +InspectorBackend.registerApplicationCacheDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "ApplicationCache"); +InspectorBackend.registerEvent("ApplicationCache.applicationCacheStatusUpdated", ["frameId", "manifestURL", "status"]); +InspectorBackend.registerEvent("ApplicationCache.networkStateUpdated", ["isNowOnline"]); +InspectorBackend.registerCommand("ApplicationCache.getFramesWithManifests", [], ["frameIds"]); +InspectorBackend.registerCommand("ApplicationCache.enable", [], []); +InspectorBackend.registerCommand("ApplicationCache.getManifestForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["manifestURL"]); +InspectorBackend.registerCommand("ApplicationCache.getApplicationCacheForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["applicationCache"]); +InspectorBackend.activateDomain("ApplicationCache", "web"); + +// CSS. +InspectorBackend.registerCSSDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "CSS"); +InspectorBackend.registerEnum("CSS.StyleSheetOrigin", {User: "user", UserAgent: "user-agent", Inspector: "inspector", Regular: "regular"}); +InspectorBackend.registerEnum("CSS.CSSPropertyStatus", {Active: "active", Inactive: "inactive", Disabled: "disabled", Style: "style"}); +InspectorBackend.registerEnum("CSS.CSSMediaSource", {MediaRule: "mediaRule", ImportRule: "importRule", LinkedSheet: "linkedSheet", InlineSheet: "inlineSheet"}); +InspectorBackend.registerEnum("CSS.RegionRegionOverset", {Overset: "overset", Fit: "fit", Empty: "empty"}); +InspectorBackend.registerEvent("CSS.mediaQueryResultChanged", []); +InspectorBackend.registerEvent("CSS.styleSheetChanged", ["styleSheetId"]); +InspectorBackend.registerEvent("CSS.styleSheetAdded", ["header"]); +InspectorBackend.registerEvent("CSS.styleSheetRemoved", ["styleSheetId"]); +InspectorBackend.registerEvent("CSS.namedFlowCreated", ["namedFlow"]); +InspectorBackend.registerEvent("CSS.namedFlowRemoved", ["documentNodeId", "flowName"]); +InspectorBackend.registerEvent("CSS.regionOversetChanged", ["namedFlow"]); +InspectorBackend.registerEvent("CSS.registeredNamedFlowContentElement", ["documentNodeId", "flowName", "contentNodeId", "nextContentNodeId"]); +InspectorBackend.registerEvent("CSS.unregisteredNamedFlowContentElement", ["documentNodeId", "flowName", "contentNodeId"]); +InspectorBackend.registerCommand("CSS.enable", [], []); +InspectorBackend.registerCommand("CSS.disable", [], []); +InspectorBackend.registerCommand("CSS.getMatchedStylesForNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "includePseudo", "type": "boolean", "optional": true}, {"name": "includeInherited", "type": "boolean", "optional": true}], ["matchedCSSRules", "pseudoElements", "inherited"]); +InspectorBackend.registerCommand("CSS.getInlineStylesForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["inlineStyle", "attributesStyle"]); +InspectorBackend.registerCommand("CSS.getComputedStyleForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["computedStyle"]); +InspectorBackend.registerCommand("CSS.getAllStyleSheets", [], ["headers"]); +InspectorBackend.registerCommand("CSS.getStyleSheet", [{"name": "styleSheetId", "type": "string", "optional": false}], ["styleSheet"]); +InspectorBackend.registerCommand("CSS.getStyleSheetText", [{"name": "styleSheetId", "type": "string", "optional": false}], ["text"]); +InspectorBackend.registerCommand("CSS.setStyleSheetText", [{"name": "styleSheetId", "type": "string", "optional": false}, {"name": "text", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("CSS.setStyleText", [{"name": "styleId", "type": "object", "optional": false}, {"name": "text", "type": "string", "optional": false}], ["style"]); +InspectorBackend.registerCommand("CSS.setRuleSelector", [{"name": "ruleId", "type": "object", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["rule"]); +InspectorBackend.registerCommand("CSS.createStyleSheet", [{"name": "frameId", "type": "string", "optional": false}], ["styleSheetId"]); +InspectorBackend.registerCommand("CSS.addRule", [{"name": "styleSheetId", "type": "string", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["rule"]); +InspectorBackend.registerCommand("CSS.getSupportedCSSProperties", [], ["cssProperties"]); +InspectorBackend.registerCommand("CSS.getSupportedSystemFontFamilyNames", [], ["fontFamilyNames"]); +InspectorBackend.registerCommand("CSS.forcePseudoState", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "forcedPseudoClasses", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("CSS.getNamedFlowCollection", [{"name": "documentNodeId", "type": "number", "optional": false}], ["namedFlows"]); +InspectorBackend.activateDomain("CSS", "web"); + +// Console. +InspectorBackend.registerConsoleDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Console"); +InspectorBackend.registerEnum("Console.ConsoleMessageSource", {XML: "xml", Javascript: "javascript", Network: "network", ConsoleAPI: "console-api", Storage: "storage", Appcache: "appcache", Rendering: "rendering", CSS: "css", Security: "security", ContentBlocker: "content-blocker", Other: "other"}); +InspectorBackend.registerEnum("Console.ConsoleMessageLevel", {Log: "log", Info: "info", Warning: "warning", Error: "error", Debug: "debug"}); +InspectorBackend.registerEnum("Console.ConsoleMessageType", {Log: "log", Dir: "dir", DirXML: "dirxml", Table: "table", Trace: "trace", Clear: "clear", StartGroup: "startGroup", StartGroupCollapsed: "startGroupCollapsed", EndGroup: "endGroup", Assert: "assert", Timing: "timing", Profile: "profile", ProfileEnd: "profileEnd"}); +InspectorBackend.registerEvent("Console.messageAdded", ["message"]); +InspectorBackend.registerEvent("Console.messageRepeatCountUpdated", ["count"]); +InspectorBackend.registerEvent("Console.messagesCleared", []); +InspectorBackend.registerEvent("Console.heapSnapshot", ["timestamp", "snapshotData", "title"]); +InspectorBackend.registerCommand("Console.enable", [], []); +InspectorBackend.registerCommand("Console.disable", [], []); +InspectorBackend.registerCommand("Console.clearMessages", [], []); +InspectorBackend.registerCommand("Console.setMonitoringXHREnabled", [{"name": "enabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Console.addInspectedNode", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.activateDomain("Console"); + +// DOM. +InspectorBackend.registerDOMDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOM"); +InspectorBackend.registerEnum("DOM.PseudoType", {Before: "before", After: "after"}); +InspectorBackend.registerEnum("DOM.ShadowRootType", {UserAgent: "user-agent", Open: "open", Closed: "closed"}); +InspectorBackend.registerEnum("DOM.LiveRegionRelevant", {Additions: "additions", Removals: "removals", Text: "text"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesChecked", {True: "true", False: "false", Mixed: "mixed"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesCurrent", {True: "true", False: "false", Page: "page", Step: "step", Location: "location", Date: "date", Time: "time"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesInvalid", {True: "true", False: "false", Grammar: "grammar", Spelling: "spelling"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesLiveRegionStatus", {Assertive: "assertive", Polite: "polite", Off: "off"}); +InspectorBackend.registerEvent("DOM.documentUpdated", []); +InspectorBackend.registerEvent("DOM.setChildNodes", ["parentId", "nodes"]); +InspectorBackend.registerEvent("DOM.attributeModified", ["nodeId", "name", "value"]); +InspectorBackend.registerEvent("DOM.attributeRemoved", ["nodeId", "name"]); +InspectorBackend.registerEvent("DOM.inlineStyleInvalidated", ["nodeIds"]); +InspectorBackend.registerEvent("DOM.characterDataModified", ["nodeId", "characterData"]); +InspectorBackend.registerEvent("DOM.childNodeCountUpdated", ["nodeId", "childNodeCount"]); +InspectorBackend.registerEvent("DOM.childNodeInserted", ["parentNodeId", "previousNodeId", "node"]); +InspectorBackend.registerEvent("DOM.childNodeRemoved", ["parentNodeId", "nodeId"]); +InspectorBackend.registerEvent("DOM.shadowRootPushed", ["hostId", "root"]); +InspectorBackend.registerEvent("DOM.shadowRootPopped", ["hostId", "rootId"]); +InspectorBackend.registerEvent("DOM.pseudoElementAdded", ["parentId", "pseudoElement"]); +InspectorBackend.registerEvent("DOM.pseudoElementRemoved", ["parentId", "pseudoElementId"]); +InspectorBackend.registerCommand("DOM.getDocument", [], ["root"]); +InspectorBackend.registerCommand("DOM.requestChildNodes", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "depth", "type": "number", "optional": true}], []); +InspectorBackend.registerCommand("DOM.querySelector", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.querySelectorAll", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["nodeIds"]); +InspectorBackend.registerCommand("DOM.setNodeName", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.setNodeValue", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.removeNode", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.registerCommand("DOM.setAttributeValue", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.setAttributesAsText", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "text", "type": "string", "optional": false}, {"name": "name", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.removeAttribute", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.getEventListenersForNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["listeners"]); +InspectorBackend.registerCommand("DOM.getAccessibilityPropertiesForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["properties"]); +InspectorBackend.registerCommand("DOM.getOuterHTML", [{"name": "nodeId", "type": "number", "optional": false}], ["outerHTML"]); +InspectorBackend.registerCommand("DOM.setOuterHTML", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "outerHTML", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.performSearch", [{"name": "query", "type": "string", "optional": false}, {"name": "nodeIds", "type": "object", "optional": true}], ["searchId", "resultCount"]); +InspectorBackend.registerCommand("DOM.getSearchResults", [{"name": "searchId", "type": "string", "optional": false}, {"name": "fromIndex", "type": "number", "optional": false}, {"name": "toIndex", "type": "number", "optional": false}], ["nodeIds"]); +InspectorBackend.registerCommand("DOM.discardSearchResults", [{"name": "searchId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.requestNode", [{"name": "objectId", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.setInspectModeEnabled", [{"name": "enabled", "type": "boolean", "optional": false}, {"name": "highlightConfig", "type": "object", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightRect", [{"name": "x", "type": "number", "optional": false}, {"name": "y", "type": "number", "optional": false}, {"name": "width", "type": "number", "optional": false}, {"name": "height", "type": "number", "optional": false}, {"name": "color", "type": "object", "optional": true}, {"name": "outlineColor", "type": "object", "optional": true}, {"name": "usePageCoordinates", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightQuad", [{"name": "quad", "type": "object", "optional": false}, {"name": "color", "type": "object", "optional": true}, {"name": "outlineColor", "type": "object", "optional": true}, {"name": "usePageCoordinates", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightSelector", [{"name": "highlightConfig", "type": "object", "optional": false}, {"name": "selectorString", "type": "string", "optional": false}, {"name": "frameId", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightNode", [{"name": "highlightConfig", "type": "object", "optional": false}, {"name": "nodeId", "type": "number", "optional": true}, {"name": "objectId", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.hideHighlight", [], []); +InspectorBackend.registerCommand("DOM.highlightFrame", [{"name": "frameId", "type": "string", "optional": false}, {"name": "contentColor", "type": "object", "optional": true}, {"name": "contentOutlineColor", "type": "object", "optional": true}], []); +InspectorBackend.registerCommand("DOM.pushNodeByPathToFrontend", [{"name": "path", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.pushNodeByBackendIdToFrontend", [{"name": "backendNodeId", "type": "number", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.releaseBackendNodeIds", [{"name": "nodeGroup", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.resolveNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["object"]); +InspectorBackend.registerCommand("DOM.getAttributes", [{"name": "nodeId", "type": "number", "optional": false}], ["attributes"]); +InspectorBackend.registerCommand("DOM.moveTo", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "targetNodeId", "type": "number", "optional": false}, {"name": "insertBeforeNodeId", "type": "number", "optional": true}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.undo", [], []); +InspectorBackend.registerCommand("DOM.redo", [], []); +InspectorBackend.registerCommand("DOM.markUndoableState", [], []); +InspectorBackend.registerCommand("DOM.focus", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.activateDomain("DOM", "web"); + +// DOMDebugger. +InspectorBackend.registerEnum("DOMDebugger.DOMBreakpointType", {SubtreeModified: "subtree-modified", AttributeModified: "attribute-modified", NodeRemoved: "node-removed"}); +InspectorBackend.registerCommand("DOMDebugger.setDOMBreakpoint", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "type", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeDOMBreakpoint", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "type", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setEventListenerBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeEventListenerBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setInstrumentationBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeInstrumentationBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setXHRBreakpoint", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeXHRBreakpoint", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("DOMDebugger", "web"); + +// DOMStorage. +InspectorBackend.registerDOMStorageDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOMStorage"); +InspectorBackend.registerEvent("DOMStorage.domStorageItemsCleared", ["storageId"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemRemoved", ["storageId", "key"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemAdded", ["storageId", "key", "newValue"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemUpdated", ["storageId", "key", "oldValue", "newValue"]); +InspectorBackend.registerCommand("DOMStorage.enable", [], []); +InspectorBackend.registerCommand("DOMStorage.disable", [], []); +InspectorBackend.registerCommand("DOMStorage.getDOMStorageItems", [{"name": "storageId", "type": "object", "optional": false}], ["entries"]); +InspectorBackend.registerCommand("DOMStorage.setDOMStorageItem", [{"name": "storageId", "type": "object", "optional": false}, {"name": "key", "type": "string", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMStorage.removeDOMStorageItem", [{"name": "storageId", "type": "object", "optional": false}, {"name": "key", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("DOMStorage", "web"); + +// Database. +InspectorBackend.registerDatabaseDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Database"); +InspectorBackend.registerEvent("Database.addDatabase", ["database"]); +InspectorBackend.registerCommand("Database.enable", [], []); +InspectorBackend.registerCommand("Database.disable", [], []); +InspectorBackend.registerCommand("Database.getDatabaseTableNames", [{"name": "databaseId", "type": "string", "optional": false}], ["tableNames"]); +InspectorBackend.registerCommand("Database.executeSQL", [{"name": "databaseId", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}], ["columnNames", "values", "sqlError"]); +InspectorBackend.activateDomain("Database", "web"); + +// Debugger. +InspectorBackend.registerDebuggerDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Debugger"); +InspectorBackend.registerEnum("Debugger.BreakpointActionType", {Log: "log", Evaluate: "evaluate", Sound: "sound", Probe: "probe"}); +InspectorBackend.registerEnum("Debugger.ScopeType", {Global: "global", With: "with", Closure: "closure", Catch: "catch", FunctionName: "functionName", GlobalLexicalEnvironment: "globalLexicalEnvironment", NestedLexical: "nestedLexical"}); +InspectorBackend.registerEvent("Debugger.globalObjectCleared", []); +InspectorBackend.registerEvent("Debugger.scriptParsed", ["scriptId", "url", "startLine", "startColumn", "endLine", "endColumn", "isContentScript", "sourceURL", "sourceMapURL"]); +InspectorBackend.registerEvent("Debugger.scriptFailedToParse", ["url", "scriptSource", "startLine", "errorLine", "errorMessage"]); +InspectorBackend.registerEvent("Debugger.breakpointResolved", ["breakpointId", "location"]); +InspectorBackend.registerEnum("Debugger.PausedReason", {XHR: "XHR", DOM: "DOM", EventListener: "EventListener", Exception: "exception", Assert: "assert", CSPViolation: "CSPViolation", DebuggerStatement: "DebuggerStatement", Breakpoint: "Breakpoint", PauseOnNextStatement: "PauseOnNextStatement", Other: "other"}); +InspectorBackend.registerEvent("Debugger.paused", ["callFrames", "reason", "data"]); +InspectorBackend.registerEvent("Debugger.resumed", []); +InspectorBackend.registerEvent("Debugger.didSampleProbe", ["sample"]); +InspectorBackend.registerEvent("Debugger.playBreakpointActionSound", ["breakpointActionId"]); +InspectorBackend.registerCommand("Debugger.enable", [], []); +InspectorBackend.registerCommand("Debugger.disable", [], []); +InspectorBackend.registerCommand("Debugger.setBreakpointsActive", [{"name": "active", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.setBreakpointByUrl", [{"name": "lineNumber", "type": "number", "optional": false}, {"name": "url", "type": "string", "optional": true}, {"name": "urlRegex", "type": "string", "optional": true}, {"name": "columnNumber", "type": "number", "optional": true}, {"name": "options", "type": "object", "optional": true}], ["breakpointId", "locations"]); +InspectorBackend.registerCommand("Debugger.setBreakpoint", [{"name": "location", "type": "object", "optional": false}, {"name": "options", "type": "object", "optional": true}], ["breakpointId", "actualLocation"]); +InspectorBackend.registerCommand("Debugger.removeBreakpoint", [{"name": "breakpointId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.continueToLocation", [{"name": "location", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.stepOver", [], []); +InspectorBackend.registerCommand("Debugger.stepInto", [], []); +InspectorBackend.registerCommand("Debugger.stepOut", [], []); +InspectorBackend.registerCommand("Debugger.pause", [], []); +InspectorBackend.registerCommand("Debugger.resume", [], []); +InspectorBackend.registerCommand("Debugger.searchInContent", [{"name": "scriptId", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Debugger.getScriptSource", [{"name": "scriptId", "type": "string", "optional": false}], ["scriptSource"]); +InspectorBackend.registerCommand("Debugger.getFunctionDetails", [{"name": "functionId", "type": "string", "optional": false}], ["details"]); +InspectorBackend.registerCommand("Debugger.setPauseOnExceptions", [{"name": "state", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.evaluateOnCallFrame", [{"name": "callFrameId", "type": "string", "optional": false}, {"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}, {"name": "saveResult", "type": "boolean", "optional": true}], ["result", "wasThrown", "savedResultIndex"]); +InspectorBackend.registerCommand("Debugger.setOverlayMessage", [{"name": "message", "type": "string", "optional": true}], []); +InspectorBackend.activateDomain("Debugger"); + +// Heap. +InspectorBackend.registerHeapDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Heap"); +InspectorBackend.registerEnum("Heap.GarbageCollectionType", {Full: "full", Partial: "partial"}); +InspectorBackend.registerEvent("Heap.garbageCollected", ["collection"]); +InspectorBackend.registerEvent("Heap.trackingStart", ["timestamp", "snapshotData"]); +InspectorBackend.registerEvent("Heap.trackingComplete", ["timestamp", "snapshotData"]); +InspectorBackend.registerCommand("Heap.enable", [], []); +InspectorBackend.registerCommand("Heap.disable", [], []); +InspectorBackend.registerCommand("Heap.gc", [], []); +InspectorBackend.registerCommand("Heap.snapshot", [], ["timestamp", "snapshotData"]); +InspectorBackend.registerCommand("Heap.startTracking", [], []); +InspectorBackend.registerCommand("Heap.stopTracking", [], []); +InspectorBackend.registerCommand("Heap.getPreview", [{"name": "heapObjectId", "type": "number", "optional": false}], ["string", "functionDetails", "preview"]); +InspectorBackend.registerCommand("Heap.getRemoteObject", [{"name": "heapObjectId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["result"]); +InspectorBackend.activateDomain("Heap"); + +// IndexedDB. +InspectorBackend.registerIndexedDBDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "IndexedDB"); +InspectorBackend.registerEnum("IndexedDB.KeyType", {Number: "number", String: "string", Date: "date", Array: "array"}); +InspectorBackend.registerEnum("IndexedDB.KeyPathType", {Null: "null", String: "string", Array: "array"}); +InspectorBackend.registerCommand("IndexedDB.enable", [], []); +InspectorBackend.registerCommand("IndexedDB.disable", [], []); +InspectorBackend.registerCommand("IndexedDB.requestDatabaseNames", [{"name": "securityOrigin", "type": "string", "optional": false}], ["databaseNames"]); +InspectorBackend.registerCommand("IndexedDB.requestDatabase", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}], ["databaseWithObjectStores"]); +InspectorBackend.registerCommand("IndexedDB.requestData", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}, {"name": "objectStoreName", "type": "string", "optional": false}, {"name": "indexName", "type": "string", "optional": false}, {"name": "skipCount", "type": "number", "optional": false}, {"name": "pageSize", "type": "number", "optional": false}, {"name": "keyRange", "type": "object", "optional": true}], ["objectStoreDataEntries", "hasMore"]); +InspectorBackend.registerCommand("IndexedDB.clearObjectStore", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}, {"name": "objectStoreName", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("IndexedDB", "web"); + +// Inspector. +InspectorBackend.registerInspectorDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Inspector"); +InspectorBackend.registerEvent("Inspector.evaluateForTestInFrontend", ["script"]); +InspectorBackend.registerEvent("Inspector.inspect", ["object", "hints"]); +InspectorBackend.registerEvent("Inspector.detached", ["reason"]); +InspectorBackend.registerEvent("Inspector.activateExtraDomains", ["domains"]); +InspectorBackend.registerEvent("Inspector.targetCrashed", []); +InspectorBackend.registerCommand("Inspector.enable", [], []); +InspectorBackend.registerCommand("Inspector.disable", [], []); +InspectorBackend.registerCommand("Inspector.initialized", [], []); +InspectorBackend.activateDomain("Inspector"); + +// LayerTree. +InspectorBackend.registerLayerTreeDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "LayerTree"); +InspectorBackend.registerEvent("LayerTree.layerTreeDidChange", []); +InspectorBackend.registerCommand("LayerTree.enable", [], []); +InspectorBackend.registerCommand("LayerTree.disable", [], []); +InspectorBackend.registerCommand("LayerTree.layersForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["layers"]); +InspectorBackend.registerCommand("LayerTree.reasonsForCompositingLayer", [{"name": "layerId", "type": "string", "optional": false}], ["compositingReasons"]); +InspectorBackend.activateDomain("LayerTree", "web"); + +// Memory. +InspectorBackend.registerMemoryDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Memory"); +InspectorBackend.registerEnum("Memory.CategoryDataType", {Javascript: "javascript", JIT: "jit", Images: "images", Layers: "layers", Page: "page", Other: "other"}); +InspectorBackend.registerEnum("Memory.MemoryPressureSeverity", {Critical: "critical", NonCritical: "non-critical"}); +InspectorBackend.registerEvent("Memory.memoryPressure", ["timestamp", "severity"]); +InspectorBackend.registerEvent("Memory.trackingStart", ["timestamp"]); +InspectorBackend.registerEvent("Memory.trackingUpdate", ["event"]); +InspectorBackend.registerEvent("Memory.trackingComplete", []); +InspectorBackend.registerCommand("Memory.enable", [], []); +InspectorBackend.registerCommand("Memory.disable", [], []); +InspectorBackend.registerCommand("Memory.startTracking", [], []); +InspectorBackend.registerCommand("Memory.stopTracking", [], []); +InspectorBackend.activateDomain("Memory", "web"); + +// Network. +InspectorBackend.registerNetworkDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Network"); +InspectorBackend.registerEnum("Network.InitiatorType", {Parser: "parser", Script: "script", Other: "other"}); +InspectorBackend.registerEvent("Network.requestWillBeSent", ["requestId", "frameId", "loaderId", "documentURL", "request", "timestamp", "initiator", "redirectResponse", "type"]); +InspectorBackend.registerEvent("Network.requestServedFromCache", ["requestId"]); +InspectorBackend.registerEvent("Network.responseReceived", ["requestId", "frameId", "loaderId", "timestamp", "type", "response"]); +InspectorBackend.registerEvent("Network.dataReceived", ["requestId", "timestamp", "dataLength", "encodedDataLength"]); +InspectorBackend.registerEvent("Network.loadingFinished", ["requestId", "timestamp", "sourceMapURL"]); +InspectorBackend.registerEvent("Network.loadingFailed", ["requestId", "timestamp", "errorText", "canceled"]); +InspectorBackend.registerEvent("Network.requestServedFromMemoryCache", ["requestId", "frameId", "loaderId", "documentURL", "timestamp", "initiator", "resource"]); +InspectorBackend.registerEvent("Network.webSocketWillSendHandshakeRequest", ["requestId", "timestamp", "request"]); +InspectorBackend.registerEvent("Network.webSocketHandshakeResponseReceived", ["requestId", "timestamp", "response"]); +InspectorBackend.registerEvent("Network.webSocketCreated", ["requestId", "url"]); +InspectorBackend.registerEvent("Network.webSocketClosed", ["requestId", "timestamp"]); +InspectorBackend.registerEvent("Network.webSocketFrameReceived", ["requestId", "timestamp", "response"]); +InspectorBackend.registerEvent("Network.webSocketFrameError", ["requestId", "timestamp", "errorMessage"]); +InspectorBackend.registerEvent("Network.webSocketFrameSent", ["requestId", "timestamp", "response"]); +InspectorBackend.registerCommand("Network.enable", [], []); +InspectorBackend.registerCommand("Network.disable", [], []); +InspectorBackend.registerCommand("Network.setExtraHTTPHeaders", [{"name": "headers", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Network.getResponseBody", [{"name": "requestId", "type": "string", "optional": false}], ["body", "base64Encoded"]); +InspectorBackend.registerCommand("Network.setCacheDisabled", [{"name": "cacheDisabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Network.loadResource", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], ["content", "mimeType", "status"]); +InspectorBackend.activateDomain("Network", "web"); + +// Page. +InspectorBackend.registerPageDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Page"); +InspectorBackend.registerEnum("Page.ResourceType", {Document: "Document", Stylesheet: "Stylesheet", Image: "Image", Font: "Font", Script: "Script", XHR: "XHR", WebSocket: "WebSocket", Other: "Other"}); +InspectorBackend.registerEnum("Page.CoordinateSystem", {Viewport: "Viewport", Page: "Page"}); +InspectorBackend.registerEvent("Page.domContentEventFired", ["timestamp"]); +InspectorBackend.registerEvent("Page.loadEventFired", ["timestamp"]); +InspectorBackend.registerEvent("Page.frameNavigated", ["frame"]); +InspectorBackend.registerEvent("Page.frameDetached", ["frameId"]); +InspectorBackend.registerEvent("Page.frameStartedLoading", ["frameId"]); +InspectorBackend.registerEvent("Page.frameStoppedLoading", ["frameId"]); +InspectorBackend.registerEvent("Page.frameScheduledNavigation", ["frameId", "delay"]); +InspectorBackend.registerEvent("Page.frameClearedScheduledNavigation", ["frameId"]); +InspectorBackend.registerEvent("Page.javascriptDialogOpening", ["message"]); +InspectorBackend.registerEvent("Page.javascriptDialogClosed", []); +InspectorBackend.registerEvent("Page.scriptsEnabled", ["isEnabled"]); +InspectorBackend.registerCommand("Page.enable", [], []); +InspectorBackend.registerCommand("Page.disable", [], []); +InspectorBackend.registerCommand("Page.addScriptToEvaluateOnLoad", [{"name": "scriptSource", "type": "string", "optional": false}], ["identifier"]); +InspectorBackend.registerCommand("Page.removeScriptToEvaluateOnLoad", [{"name": "identifier", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.reload", [{"name": "ignoreCache", "type": "boolean", "optional": true}, {"name": "scriptToEvaluateOnLoad", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("Page.navigate", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getCookies", [], ["cookies"]); +InspectorBackend.registerCommand("Page.deleteCookie", [{"name": "cookieName", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getResourceTree", [], ["frameTree"]); +InspectorBackend.registerCommand("Page.getResourceContent", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], ["content", "base64Encoded"]); +InspectorBackend.registerCommand("Page.searchInResource", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}, {"name": "requestId", "type": "string", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Page.searchInResources", [{"name": "text", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Page.setDocumentContent", [{"name": "frameId", "type": "string", "optional": false}, {"name": "html", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.setShowPaintRects", [{"name": "result", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.getScriptExecutionStatus", [], ["result"]); +InspectorBackend.registerCommand("Page.setScriptExecutionDisabled", [{"name": "value", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.setEmulatedMedia", [{"name": "media", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getCompositingBordersVisible", [], ["result"]); +InspectorBackend.registerCommand("Page.setCompositingBordersVisible", [{"name": "visible", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.snapshotNode", [{"name": "nodeId", "type": "number", "optional": false}], ["dataURL"]); +InspectorBackend.registerCommand("Page.snapshotRect", [{"name": "x", "type": "number", "optional": false}, {"name": "y", "type": "number", "optional": false}, {"name": "width", "type": "number", "optional": false}, {"name": "height", "type": "number", "optional": false}, {"name": "coordinateSystem", "type": "string", "optional": false}], ["dataURL"]); +InspectorBackend.registerCommand("Page.archive", [], ["data"]); +InspectorBackend.activateDomain("Page", "web"); + +// Runtime. +InspectorBackend.registerRuntimeDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Runtime"); +InspectorBackend.registerEnum("Runtime.RemoteObjectType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean", Symbol: "symbol"}); +InspectorBackend.registerEnum("Runtime.RemoteObjectSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date", Error: "error", Map: "map", Set: "set", Weakmap: "weakmap", Weakset: "weakset", Iterator: "iterator", Class: "class"}); +InspectorBackend.registerEnum("Runtime.ObjectPreviewType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean", Symbol: "symbol"}); +InspectorBackend.registerEnum("Runtime.ObjectPreviewSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date", Error: "error", Map: "map", Set: "set", Weakmap: "weakmap", Weakset: "weakset", Iterator: "iterator", Class: "class"}); +InspectorBackend.registerEnum("Runtime.PropertyPreviewType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean", Symbol: "symbol", Accessor: "accessor"}); +InspectorBackend.registerEnum("Runtime.PropertyPreviewSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date", Error: "error", Map: "map", Set: "set", Weakmap: "weakmap", Weakset: "weakset", Iterator: "iterator", Class: "class"}); +InspectorBackend.registerEnum("Runtime.SyntaxErrorType", {None: "none", Irrecoverable: "irrecoverable", UnterminatedLiteral: "unterminated-literal", Recoverable: "recoverable"}); +InspectorBackend.registerEvent("Runtime.executionContextCreated", ["context"]); +InspectorBackend.registerCommand("Runtime.parse", [{"name": "source", "type": "string", "optional": false}], ["result", "message", "range"]); +InspectorBackend.registerCommand("Runtime.evaluate", [{"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "contextId", "type": "number", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}, {"name": "saveResult", "type": "boolean", "optional": true}], ["result", "wasThrown", "savedResultIndex"]); +InspectorBackend.registerCommand("Runtime.callFunctionOn", [{"name": "objectId", "type": "string", "optional": false}, {"name": "functionDeclaration", "type": "string", "optional": false}, {"name": "arguments", "type": "object", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "wasThrown"]); +InspectorBackend.registerCommand("Runtime.getProperties", [{"name": "objectId", "type": "string", "optional": false}, {"name": "ownProperties", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "internalProperties"]); +InspectorBackend.registerCommand("Runtime.getDisplayableProperties", [{"name": "objectId", "type": "string", "optional": false}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["properties", "internalProperties"]); +InspectorBackend.registerCommand("Runtime.getCollectionEntries", [{"name": "objectId", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "startIndex", "type": "number", "optional": true}, {"name": "numberToFetch", "type": "number", "optional": true}], ["entries"]); +InspectorBackend.registerCommand("Runtime.saveResult", [{"name": "value", "type": "object", "optional": false}, {"name": "contextId", "type": "number", "optional": true}], ["savedResultIndex"]); +InspectorBackend.registerCommand("Runtime.releaseObject", [{"name": "objectId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Runtime.releaseObjectGroup", [{"name": "objectGroup", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Runtime.enable", [], []); +InspectorBackend.registerCommand("Runtime.disable", [], []); +InspectorBackend.registerCommand("Runtime.getRuntimeTypesForVariablesAtOffsets", [{"name": "locations", "type": "object", "optional": false}], ["types"]); +InspectorBackend.registerCommand("Runtime.enableTypeProfiler", [], []); +InspectorBackend.registerCommand("Runtime.disableTypeProfiler", [], []); +InspectorBackend.registerCommand("Runtime.getBasicBlocks", [{"name": "sourceID", "type": "string", "optional": false}], ["basicBlocks"]); +InspectorBackend.activateDomain("Runtime"); + +// ScriptProfiler. +InspectorBackend.registerScriptProfilerDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "ScriptProfiler"); +InspectorBackend.registerEnum("ScriptProfiler.EventType", {API: "API", Microtask: "Microtask", Other: "Other"}); +InspectorBackend.registerEvent("ScriptProfiler.trackingStart", ["timestamp"]); +InspectorBackend.registerEvent("ScriptProfiler.trackingUpdate", ["event"]); +InspectorBackend.registerEvent("ScriptProfiler.trackingComplete", ["samples"]); +InspectorBackend.registerEvent("ScriptProfiler.programmaticCaptureStarted", []); +InspectorBackend.registerEvent("ScriptProfiler.programmaticCaptureStopped", []); +InspectorBackend.registerCommand("ScriptProfiler.startTracking", [{"name": "includeSamples", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("ScriptProfiler.stopTracking", [], []); +InspectorBackend.activateDomain("ScriptProfiler"); + +// Timeline. +InspectorBackend.registerTimelineDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Timeline"); +InspectorBackend.registerEnum("Timeline.EventType", {EventDispatch: "EventDispatch", ScheduleStyleRecalculation: "ScheduleStyleRecalculation", RecalculateStyles: "RecalculateStyles", InvalidateLayout: "InvalidateLayout", Layout: "Layout", Paint: "Paint", Composite: "Composite", RenderingFrame: "RenderingFrame", TimerInstall: "TimerInstall", TimerRemove: "TimerRemove", TimerFire: "TimerFire", EvaluateScript: "EvaluateScript", TimeStamp: "TimeStamp", Time: "Time", TimeEnd: "TimeEnd", FunctionCall: "FunctionCall", ProbeSample: "ProbeSample", ConsoleProfile: "ConsoleProfile", RequestAnimationFrame: "RequestAnimationFrame", CancelAnimationFrame: "CancelAnimationFrame", FireAnimationFrame: "FireAnimationFrame"}); +InspectorBackend.registerEnum("Timeline.Instrument", {ScriptProfiler: "ScriptProfiler", Timeline: "Timeline", Memory: "Memory", Heap: "Heap"}); +InspectorBackend.registerEvent("Timeline.eventRecorded", ["record"]); +InspectorBackend.registerEvent("Timeline.recordingStarted", ["startTime"]); +InspectorBackend.registerEvent("Timeline.recordingStopped", ["endTime"]); +InspectorBackend.registerEvent("Timeline.autoCaptureStarted", []); +InspectorBackend.registerEvent("Timeline.programmaticCaptureStarted", []); +InspectorBackend.registerEvent("Timeline.programmaticCaptureStopped", []); +InspectorBackend.registerCommand("Timeline.start", [{"name": "maxCallStackDepth", "type": "number", "optional": true}], []); +InspectorBackend.registerCommand("Timeline.stop", [], []); +InspectorBackend.registerCommand("Timeline.setAutoCaptureEnabled", [{"name": "enabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Timeline.setInstruments", [{"name": "instruments", "type": "object", "optional": false}], []); +InspectorBackend.activateDomain("Timeline", "web"); diff --git a/Source/WebInspectorUI/UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js b/Source/WebInspectorUI/UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js new file mode 100644 index 000000000..4ded8afda --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/Legacy/10.3/InspectorBackendCommands.js @@ -0,0 +1,412 @@ +/* + * Copyright (C) 2013 Google Inc. All rights reserved. + * Copyright (C) 2013-2016 Apple Inc. All rights reserved. + * Copyright (C) 2014 University of Washington. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +// DO NOT EDIT THIS FILE. It is automatically generated from Inspector-iOS-10.3.json +// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py + +// ApplicationCache. +InspectorBackend.registerApplicationCacheDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "ApplicationCache"); +InspectorBackend.registerEvent("ApplicationCache.applicationCacheStatusUpdated", ["frameId", "manifestURL", "status"]); +InspectorBackend.registerEvent("ApplicationCache.networkStateUpdated", ["isNowOnline"]); +InspectorBackend.registerCommand("ApplicationCache.getFramesWithManifests", [], ["frameIds"]); +InspectorBackend.registerCommand("ApplicationCache.enable", [], []); +InspectorBackend.registerCommand("ApplicationCache.getManifestForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["manifestURL"]); +InspectorBackend.registerCommand("ApplicationCache.getApplicationCacheForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["applicationCache"]); +InspectorBackend.activateDomain("ApplicationCache", "web"); + +// CSS. +InspectorBackend.registerCSSDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "CSS"); +InspectorBackend.registerEnum("CSS.StyleSheetOrigin", {User: "user", UserAgent: "user-agent", Inspector: "inspector", Regular: "regular"}); +InspectorBackend.registerEnum("CSS.CSSPropertyStatus", {Active: "active", Inactive: "inactive", Disabled: "disabled", Style: "style"}); +InspectorBackend.registerEnum("CSS.CSSMediaSource", {MediaRule: "mediaRule", ImportRule: "importRule", LinkedSheet: "linkedSheet", InlineSheet: "inlineSheet"}); +InspectorBackend.registerEnum("CSS.RegionRegionOverset", {Overset: "overset", Fit: "fit", Empty: "empty"}); +InspectorBackend.registerEvent("CSS.mediaQueryResultChanged", []); +InspectorBackend.registerEvent("CSS.styleSheetChanged", ["styleSheetId"]); +InspectorBackend.registerEvent("CSS.styleSheetAdded", ["header"]); +InspectorBackend.registerEvent("CSS.styleSheetRemoved", ["styleSheetId"]); +InspectorBackend.registerEvent("CSS.namedFlowCreated", ["namedFlow"]); +InspectorBackend.registerEvent("CSS.namedFlowRemoved", ["documentNodeId", "flowName"]); +InspectorBackend.registerEvent("CSS.regionOversetChanged", ["namedFlow"]); +InspectorBackend.registerEvent("CSS.registeredNamedFlowContentElement", ["documentNodeId", "flowName", "contentNodeId", "nextContentNodeId"]); +InspectorBackend.registerEvent("CSS.unregisteredNamedFlowContentElement", ["documentNodeId", "flowName", "contentNodeId"]); +InspectorBackend.registerCommand("CSS.enable", [], []); +InspectorBackend.registerCommand("CSS.disable", [], []); +InspectorBackend.registerCommand("CSS.getMatchedStylesForNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "includePseudo", "type": "boolean", "optional": true}, {"name": "includeInherited", "type": "boolean", "optional": true}], ["matchedCSSRules", "pseudoElements", "inherited"]); +InspectorBackend.registerCommand("CSS.getInlineStylesForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["inlineStyle", "attributesStyle"]); +InspectorBackend.registerCommand("CSS.getComputedStyleForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["computedStyle"]); +InspectorBackend.registerCommand("CSS.getAllStyleSheets", [], ["headers"]); +InspectorBackend.registerCommand("CSS.getStyleSheet", [{"name": "styleSheetId", "type": "string", "optional": false}], ["styleSheet"]); +InspectorBackend.registerCommand("CSS.getStyleSheetText", [{"name": "styleSheetId", "type": "string", "optional": false}], ["text"]); +InspectorBackend.registerCommand("CSS.setStyleSheetText", [{"name": "styleSheetId", "type": "string", "optional": false}, {"name": "text", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("CSS.setStyleText", [{"name": "styleId", "type": "object", "optional": false}, {"name": "text", "type": "string", "optional": false}], ["style"]); +InspectorBackend.registerCommand("CSS.setRuleSelector", [{"name": "ruleId", "type": "object", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["rule"]); +InspectorBackend.registerCommand("CSS.createStyleSheet", [{"name": "frameId", "type": "string", "optional": false}], ["styleSheetId"]); +InspectorBackend.registerCommand("CSS.addRule", [{"name": "styleSheetId", "type": "string", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["rule"]); +InspectorBackend.registerCommand("CSS.getSupportedCSSProperties", [], ["cssProperties"]); +InspectorBackend.registerCommand("CSS.getSupportedSystemFontFamilyNames", [], ["fontFamilyNames"]); +InspectorBackend.registerCommand("CSS.forcePseudoState", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "forcedPseudoClasses", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("CSS.getNamedFlowCollection", [{"name": "documentNodeId", "type": "number", "optional": false}], ["namedFlows"]); +InspectorBackend.activateDomain("CSS", "web"); + +// Console. +InspectorBackend.registerConsoleDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Console"); +InspectorBackend.registerEnum("Console.ConsoleMessageSource", {XML: "xml", Javascript: "javascript", Network: "network", ConsoleAPI: "console-api", Storage: "storage", Appcache: "appcache", Rendering: "rendering", CSS: "css", Security: "security", ContentBlocker: "content-blocker", Other: "other"}); +InspectorBackend.registerEnum("Console.ConsoleMessageLevel", {Log: "log", Info: "info", Warning: "warning", Error: "error", Debug: "debug"}); +InspectorBackend.registerEnum("Console.ConsoleMessageType", {Log: "log", Dir: "dir", DirXML: "dirxml", Table: "table", Trace: "trace", Clear: "clear", StartGroup: "startGroup", StartGroupCollapsed: "startGroupCollapsed", EndGroup: "endGroup", Assert: "assert", Timing: "timing", Profile: "profile", ProfileEnd: "profileEnd"}); +InspectorBackend.registerEvent("Console.messageAdded", ["message"]); +InspectorBackend.registerEvent("Console.messageRepeatCountUpdated", ["count"]); +InspectorBackend.registerEvent("Console.messagesCleared", []); +InspectorBackend.registerEvent("Console.heapSnapshot", ["timestamp", "snapshotData", "title"]); +InspectorBackend.registerCommand("Console.enable", [], []); +InspectorBackend.registerCommand("Console.disable", [], []); +InspectorBackend.registerCommand("Console.clearMessages", [], []); +InspectorBackend.registerCommand("Console.setMonitoringXHREnabled", [{"name": "enabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Console.addInspectedNode", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.activateDomain("Console"); +InspectorBackend.workerSupportedDomain("Console"); + +// DOM. +InspectorBackend.registerDOMDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOM"); +InspectorBackend.registerEnum("DOM.PseudoType", {Before: "before", After: "after"}); +InspectorBackend.registerEnum("DOM.ShadowRootType", {UserAgent: "user-agent", Open: "open", Closed: "closed"}); +InspectorBackend.registerEnum("DOM.CustomElementState", {Builtin: "builtin", Custom: "custom", Waiting: "waiting", Failed: "failed"}); +InspectorBackend.registerEnum("DOM.LiveRegionRelevant", {Additions: "additions", Removals: "removals", Text: "text"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesChecked", {True: "true", False: "false", Mixed: "mixed"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesCurrent", {True: "true", False: "false", Page: "page", Step: "step", Location: "location", Date: "date", Time: "time"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesInvalid", {True: "true", False: "false", Grammar: "grammar", Spelling: "spelling"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesLiveRegionStatus", {Assertive: "assertive", Polite: "polite", Off: "off"}); +InspectorBackend.registerEvent("DOM.documentUpdated", []); +InspectorBackend.registerEvent("DOM.setChildNodes", ["parentId", "nodes"]); +InspectorBackend.registerEvent("DOM.attributeModified", ["nodeId", "name", "value"]); +InspectorBackend.registerEvent("DOM.attributeRemoved", ["nodeId", "name"]); +InspectorBackend.registerEvent("DOM.inlineStyleInvalidated", ["nodeIds"]); +InspectorBackend.registerEvent("DOM.characterDataModified", ["nodeId", "characterData"]); +InspectorBackend.registerEvent("DOM.childNodeCountUpdated", ["nodeId", "childNodeCount"]); +InspectorBackend.registerEvent("DOM.childNodeInserted", ["parentNodeId", "previousNodeId", "node"]); +InspectorBackend.registerEvent("DOM.childNodeRemoved", ["parentNodeId", "nodeId"]); +InspectorBackend.registerEvent("DOM.shadowRootPushed", ["hostId", "root"]); +InspectorBackend.registerEvent("DOM.shadowRootPopped", ["hostId", "rootId"]); +InspectorBackend.registerEvent("DOM.customElementStateChanged", ["nodeId", "customElementState"]); +InspectorBackend.registerEvent("DOM.pseudoElementAdded", ["parentId", "pseudoElement"]); +InspectorBackend.registerEvent("DOM.pseudoElementRemoved", ["parentId", "pseudoElementId"]); +InspectorBackend.registerCommand("DOM.getDocument", [], ["root"]); +InspectorBackend.registerCommand("DOM.requestChildNodes", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "depth", "type": "number", "optional": true}], []); +InspectorBackend.registerCommand("DOM.querySelector", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.querySelectorAll", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["nodeIds"]); +InspectorBackend.registerCommand("DOM.setNodeName", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.setNodeValue", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.removeNode", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.registerCommand("DOM.setAttributeValue", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.setAttributesAsText", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "text", "type": "string", "optional": false}, {"name": "name", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.removeAttribute", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.getEventListenersForNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["listeners"]); +InspectorBackend.registerCommand("DOM.getAccessibilityPropertiesForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["properties"]); +InspectorBackend.registerCommand("DOM.getOuterHTML", [{"name": "nodeId", "type": "number", "optional": false}], ["outerHTML"]); +InspectorBackend.registerCommand("DOM.setOuterHTML", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "outerHTML", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.performSearch", [{"name": "query", "type": "string", "optional": false}, {"name": "nodeIds", "type": "object", "optional": true}], ["searchId", "resultCount"]); +InspectorBackend.registerCommand("DOM.getSearchResults", [{"name": "searchId", "type": "string", "optional": false}, {"name": "fromIndex", "type": "number", "optional": false}, {"name": "toIndex", "type": "number", "optional": false}], ["nodeIds"]); +InspectorBackend.registerCommand("DOM.discardSearchResults", [{"name": "searchId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.requestNode", [{"name": "objectId", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.setInspectModeEnabled", [{"name": "enabled", "type": "boolean", "optional": false}, {"name": "highlightConfig", "type": "object", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightRect", [{"name": "x", "type": "number", "optional": false}, {"name": "y", "type": "number", "optional": false}, {"name": "width", "type": "number", "optional": false}, {"name": "height", "type": "number", "optional": false}, {"name": "color", "type": "object", "optional": true}, {"name": "outlineColor", "type": "object", "optional": true}, {"name": "usePageCoordinates", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightQuad", [{"name": "quad", "type": "object", "optional": false}, {"name": "color", "type": "object", "optional": true}, {"name": "outlineColor", "type": "object", "optional": true}, {"name": "usePageCoordinates", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightSelector", [{"name": "highlightConfig", "type": "object", "optional": false}, {"name": "selectorString", "type": "string", "optional": false}, {"name": "frameId", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightNode", [{"name": "highlightConfig", "type": "object", "optional": false}, {"name": "nodeId", "type": "number", "optional": true}, {"name": "objectId", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.hideHighlight", [], []); +InspectorBackend.registerCommand("DOM.highlightFrame", [{"name": "frameId", "type": "string", "optional": false}, {"name": "contentColor", "type": "object", "optional": true}, {"name": "contentOutlineColor", "type": "object", "optional": true}], []); +InspectorBackend.registerCommand("DOM.pushNodeByPathToFrontend", [{"name": "path", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.pushNodeByBackendIdToFrontend", [{"name": "backendNodeId", "type": "number", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.releaseBackendNodeIds", [{"name": "nodeGroup", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.resolveNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["object"]); +InspectorBackend.registerCommand("DOM.getAttributes", [{"name": "nodeId", "type": "number", "optional": false}], ["attributes"]); +InspectorBackend.registerCommand("DOM.moveTo", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "targetNodeId", "type": "number", "optional": false}, {"name": "insertBeforeNodeId", "type": "number", "optional": true}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.undo", [], []); +InspectorBackend.registerCommand("DOM.redo", [], []); +InspectorBackend.registerCommand("DOM.markUndoableState", [], []); +InspectorBackend.registerCommand("DOM.focus", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.activateDomain("DOM", "web"); + +// DOMDebugger. +InspectorBackend.registerEnum("DOMDebugger.DOMBreakpointType", {SubtreeModified: "subtree-modified", AttributeModified: "attribute-modified", NodeRemoved: "node-removed"}); +InspectorBackend.registerCommand("DOMDebugger.setDOMBreakpoint", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "type", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeDOMBreakpoint", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "type", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setEventListenerBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeEventListenerBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setInstrumentationBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeInstrumentationBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setXHRBreakpoint", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeXHRBreakpoint", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("DOMDebugger", "web"); + +// DOMStorage. +InspectorBackend.registerDOMStorageDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOMStorage"); +InspectorBackend.registerEvent("DOMStorage.domStorageItemsCleared", ["storageId"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemRemoved", ["storageId", "key"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemAdded", ["storageId", "key", "newValue"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemUpdated", ["storageId", "key", "oldValue", "newValue"]); +InspectorBackend.registerCommand("DOMStorage.enable", [], []); +InspectorBackend.registerCommand("DOMStorage.disable", [], []); +InspectorBackend.registerCommand("DOMStorage.getDOMStorageItems", [{"name": "storageId", "type": "object", "optional": false}], ["entries"]); +InspectorBackend.registerCommand("DOMStorage.setDOMStorageItem", [{"name": "storageId", "type": "object", "optional": false}, {"name": "key", "type": "string", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMStorage.removeDOMStorageItem", [{"name": "storageId", "type": "object", "optional": false}, {"name": "key", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("DOMStorage", "web"); + +// Database. +InspectorBackend.registerDatabaseDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Database"); +InspectorBackend.registerEvent("Database.addDatabase", ["database"]); +InspectorBackend.registerCommand("Database.enable", [], []); +InspectorBackend.registerCommand("Database.disable", [], []); +InspectorBackend.registerCommand("Database.getDatabaseTableNames", [{"name": "databaseId", "type": "string", "optional": false}], ["tableNames"]); +InspectorBackend.registerCommand("Database.executeSQL", [{"name": "databaseId", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}], ["columnNames", "values", "sqlError"]); +InspectorBackend.activateDomain("Database", "web"); + +// Debugger. +InspectorBackend.registerDebuggerDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Debugger"); +InspectorBackend.registerEnum("Debugger.BreakpointActionType", {Log: "log", Evaluate: "evaluate", Sound: "sound", Probe: "probe"}); +InspectorBackend.registerEnum("Debugger.ScopeType", {Global: "global", With: "with", Closure: "closure", Catch: "catch", FunctionName: "functionName", GlobalLexicalEnvironment: "globalLexicalEnvironment", NestedLexical: "nestedLexical"}); +InspectorBackend.registerEvent("Debugger.globalObjectCleared", []); +InspectorBackend.registerEvent("Debugger.scriptParsed", ["scriptId", "url", "startLine", "startColumn", "endLine", "endColumn", "isContentScript", "sourceURL", "sourceMapURL", "module"]); +InspectorBackend.registerEvent("Debugger.scriptFailedToParse", ["url", "scriptSource", "startLine", "errorLine", "errorMessage"]); +InspectorBackend.registerEvent("Debugger.breakpointResolved", ["breakpointId", "location"]); +InspectorBackend.registerEnum("Debugger.PausedReason", {XHR: "XHR", DOM: "DOM", EventListener: "EventListener", Exception: "exception", Assert: "assert", CSPViolation: "CSPViolation", DebuggerStatement: "DebuggerStatement", Breakpoint: "Breakpoint", PauseOnNextStatement: "PauseOnNextStatement", Other: "other"}); +InspectorBackend.registerEvent("Debugger.paused", ["callFrames", "reason", "data", "asyncStackTrace"]); +InspectorBackend.registerEvent("Debugger.resumed", []); +InspectorBackend.registerEvent("Debugger.didSampleProbe", ["sample"]); +InspectorBackend.registerEvent("Debugger.playBreakpointActionSound", ["breakpointActionId"]); +InspectorBackend.registerCommand("Debugger.enable", [], []); +InspectorBackend.registerCommand("Debugger.disable", [], []); +InspectorBackend.registerCommand("Debugger.setAsyncStackTraceDepth", [{"name": "depth", "type": "number", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.setBreakpointsActive", [{"name": "active", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.setBreakpointByUrl", [{"name": "lineNumber", "type": "number", "optional": false}, {"name": "url", "type": "string", "optional": true}, {"name": "urlRegex", "type": "string", "optional": true}, {"name": "columnNumber", "type": "number", "optional": true}, {"name": "options", "type": "object", "optional": true}], ["breakpointId", "locations"]); +InspectorBackend.registerCommand("Debugger.setBreakpoint", [{"name": "location", "type": "object", "optional": false}, {"name": "options", "type": "object", "optional": true}], ["breakpointId", "actualLocation"]); +InspectorBackend.registerCommand("Debugger.removeBreakpoint", [{"name": "breakpointId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.continueUntilNextRunLoop", [], []); +InspectorBackend.registerCommand("Debugger.continueToLocation", [{"name": "location", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.stepOver", [], []); +InspectorBackend.registerCommand("Debugger.stepInto", [], []); +InspectorBackend.registerCommand("Debugger.stepOut", [], []); +InspectorBackend.registerCommand("Debugger.pause", [], []); +InspectorBackend.registerCommand("Debugger.resume", [], []); +InspectorBackend.registerCommand("Debugger.searchInContent", [{"name": "scriptId", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Debugger.getScriptSource", [{"name": "scriptId", "type": "string", "optional": false}], ["scriptSource"]); +InspectorBackend.registerCommand("Debugger.getFunctionDetails", [{"name": "functionId", "type": "string", "optional": false}], ["details"]); +InspectorBackend.registerCommand("Debugger.setPauseOnExceptions", [{"name": "state", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.setPauseOnAssertions", [{"name": "enabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.evaluateOnCallFrame", [{"name": "callFrameId", "type": "string", "optional": false}, {"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}, {"name": "saveResult", "type": "boolean", "optional": true}], ["result", "wasThrown", "savedResultIndex"]); +InspectorBackend.registerCommand("Debugger.setOverlayMessage", [{"name": "message", "type": "string", "optional": true}], []); +InspectorBackend.activateDomain("Debugger"); +InspectorBackend.workerSupportedDomain("Debugger"); + +// Heap. +InspectorBackend.registerHeapDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Heap"); +InspectorBackend.registerEnum("Heap.GarbageCollectionType", {Full: "full", Partial: "partial"}); +InspectorBackend.registerEvent("Heap.garbageCollected", ["collection"]); +InspectorBackend.registerEvent("Heap.trackingStart", ["timestamp", "snapshotData"]); +InspectorBackend.registerEvent("Heap.trackingComplete", ["timestamp", "snapshotData"]); +InspectorBackend.registerCommand("Heap.enable", [], []); +InspectorBackend.registerCommand("Heap.disable", [], []); +InspectorBackend.registerCommand("Heap.gc", [], []); +InspectorBackend.registerCommand("Heap.snapshot", [], ["timestamp", "snapshotData"]); +InspectorBackend.registerCommand("Heap.startTracking", [], []); +InspectorBackend.registerCommand("Heap.stopTracking", [], []); +InspectorBackend.registerCommand("Heap.getPreview", [{"name": "heapObjectId", "type": "number", "optional": false}], ["string", "functionDetails", "preview"]); +InspectorBackend.registerCommand("Heap.getRemoteObject", [{"name": "heapObjectId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["result"]); +InspectorBackend.activateDomain("Heap"); + +// IndexedDB. +InspectorBackend.registerIndexedDBDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "IndexedDB"); +InspectorBackend.registerEnum("IndexedDB.KeyType", {Number: "number", String: "string", Date: "date", Array: "array"}); +InspectorBackend.registerEnum("IndexedDB.KeyPathType", {Null: "null", String: "string", Array: "array"}); +InspectorBackend.registerCommand("IndexedDB.enable", [], []); +InspectorBackend.registerCommand("IndexedDB.disable", [], []); +InspectorBackend.registerCommand("IndexedDB.requestDatabaseNames", [{"name": "securityOrigin", "type": "string", "optional": false}], ["databaseNames"]); +InspectorBackend.registerCommand("IndexedDB.requestDatabase", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}], ["databaseWithObjectStores"]); +InspectorBackend.registerCommand("IndexedDB.requestData", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}, {"name": "objectStoreName", "type": "string", "optional": false}, {"name": "indexName", "type": "string", "optional": false}, {"name": "skipCount", "type": "number", "optional": false}, {"name": "pageSize", "type": "number", "optional": false}, {"name": "keyRange", "type": "object", "optional": true}], ["objectStoreDataEntries", "hasMore"]); +InspectorBackend.registerCommand("IndexedDB.clearObjectStore", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}, {"name": "objectStoreName", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("IndexedDB", "web"); + +// Inspector. +InspectorBackend.registerInspectorDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Inspector"); +InspectorBackend.registerEvent("Inspector.evaluateForTestInFrontend", ["script"]); +InspectorBackend.registerEvent("Inspector.inspect", ["object", "hints"]); +InspectorBackend.registerEvent("Inspector.detached", ["reason"]); +InspectorBackend.registerEvent("Inspector.activateExtraDomains", ["domains"]); +InspectorBackend.registerEvent("Inspector.targetCrashed", []); +InspectorBackend.registerCommand("Inspector.enable", [], []); +InspectorBackend.registerCommand("Inspector.disable", [], []); +InspectorBackend.registerCommand("Inspector.initialized", [], []); +InspectorBackend.activateDomain("Inspector"); + +// LayerTree. +InspectorBackend.registerLayerTreeDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "LayerTree"); +InspectorBackend.registerEvent("LayerTree.layerTreeDidChange", []); +InspectorBackend.registerCommand("LayerTree.enable", [], []); +InspectorBackend.registerCommand("LayerTree.disable", [], []); +InspectorBackend.registerCommand("LayerTree.layersForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["layers"]); +InspectorBackend.registerCommand("LayerTree.reasonsForCompositingLayer", [{"name": "layerId", "type": "string", "optional": false}], ["compositingReasons"]); +InspectorBackend.activateDomain("LayerTree", "web"); + +// Memory. +InspectorBackend.registerMemoryDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Memory"); +InspectorBackend.registerEnum("Memory.CategoryDataType", {Javascript: "javascript", JIT: "jit", Images: "images", Layers: "layers", Page: "page", Other: "other"}); +InspectorBackend.registerEnum("Memory.MemoryPressureSeverity", {Critical: "critical", NonCritical: "non-critical"}); +InspectorBackend.registerEvent("Memory.memoryPressure", ["timestamp", "severity"]); +InspectorBackend.registerEvent("Memory.trackingStart", ["timestamp"]); +InspectorBackend.registerEvent("Memory.trackingUpdate", ["event"]); +InspectorBackend.registerEvent("Memory.trackingComplete", []); +InspectorBackend.registerCommand("Memory.enable", [], []); +InspectorBackend.registerCommand("Memory.disable", [], []); +InspectorBackend.registerCommand("Memory.startTracking", [], []); +InspectorBackend.registerCommand("Memory.stopTracking", [], []); +InspectorBackend.activateDomain("Memory", "web"); + +// Network. +InspectorBackend.registerNetworkDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Network"); +InspectorBackend.registerEnum("Network.InitiatorType", {Parser: "parser", Script: "script", Other: "other"}); +InspectorBackend.registerEvent("Network.requestWillBeSent", ["requestId", "frameId", "loaderId", "documentURL", "request", "timestamp", "initiator", "redirectResponse", "type", "targetId"]); +InspectorBackend.registerEvent("Network.requestServedFromCache", ["requestId"]); +InspectorBackend.registerEvent("Network.responseReceived", ["requestId", "frameId", "loaderId", "timestamp", "type", "response"]); +InspectorBackend.registerEvent("Network.dataReceived", ["requestId", "timestamp", "dataLength", "encodedDataLength"]); +InspectorBackend.registerEvent("Network.loadingFinished", ["requestId", "timestamp", "sourceMapURL"]); +InspectorBackend.registerEvent("Network.loadingFailed", ["requestId", "timestamp", "errorText", "canceled"]); +InspectorBackend.registerEvent("Network.requestServedFromMemoryCache", ["requestId", "frameId", "loaderId", "documentURL", "timestamp", "initiator", "resource"]); +InspectorBackend.registerEvent("Network.webSocketWillSendHandshakeRequest", ["requestId", "timestamp", "request"]); +InspectorBackend.registerEvent("Network.webSocketHandshakeResponseReceived", ["requestId", "timestamp", "response"]); +InspectorBackend.registerEvent("Network.webSocketCreated", ["requestId", "url"]); +InspectorBackend.registerEvent("Network.webSocketClosed", ["requestId", "timestamp"]); +InspectorBackend.registerEvent("Network.webSocketFrameReceived", ["requestId", "timestamp", "response"]); +InspectorBackend.registerEvent("Network.webSocketFrameError", ["requestId", "timestamp", "errorMessage"]); +InspectorBackend.registerEvent("Network.webSocketFrameSent", ["requestId", "timestamp", "response"]); +InspectorBackend.registerCommand("Network.enable", [], []); +InspectorBackend.registerCommand("Network.disable", [], []); +InspectorBackend.registerCommand("Network.setExtraHTTPHeaders", [{"name": "headers", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Network.getResponseBody", [{"name": "requestId", "type": "string", "optional": false}], ["body", "base64Encoded"]); +InspectorBackend.registerCommand("Network.setCacheDisabled", [{"name": "cacheDisabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Network.loadResource", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], ["content", "mimeType", "status"]); +InspectorBackend.activateDomain("Network", "web"); + +// Page. +InspectorBackend.registerPageDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Page"); +InspectorBackend.registerEnum("Page.ResourceType", {Document: "Document", Stylesheet: "Stylesheet", Image: "Image", Font: "Font", Script: "Script", XHR: "XHR", Fetch: "Fetch", WebSocket: "WebSocket", Other: "Other"}); +InspectorBackend.registerEnum("Page.CoordinateSystem", {Viewport: "Viewport", Page: "Page"}); +InspectorBackend.registerEvent("Page.domContentEventFired", ["timestamp"]); +InspectorBackend.registerEvent("Page.loadEventFired", ["timestamp"]); +InspectorBackend.registerEvent("Page.frameNavigated", ["frame"]); +InspectorBackend.registerEvent("Page.frameDetached", ["frameId"]); +InspectorBackend.registerEvent("Page.frameStartedLoading", ["frameId"]); +InspectorBackend.registerEvent("Page.frameStoppedLoading", ["frameId"]); +InspectorBackend.registerEvent("Page.frameScheduledNavigation", ["frameId", "delay"]); +InspectorBackend.registerEvent("Page.frameClearedScheduledNavigation", ["frameId"]); +InspectorBackend.registerCommand("Page.enable", [], []); +InspectorBackend.registerCommand("Page.disable", [], []); +InspectorBackend.registerCommand("Page.addScriptToEvaluateOnLoad", [{"name": "scriptSource", "type": "string", "optional": false}], ["identifier"]); +InspectorBackend.registerCommand("Page.removeScriptToEvaluateOnLoad", [{"name": "identifier", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.reload", [{"name": "ignoreCache", "type": "boolean", "optional": true}, {"name": "scriptToEvaluateOnLoad", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("Page.navigate", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getCookies", [], ["cookies"]); +InspectorBackend.registerCommand("Page.deleteCookie", [{"name": "cookieName", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getResourceTree", [], ["frameTree"]); +InspectorBackend.registerCommand("Page.getResourceContent", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], ["content", "base64Encoded"]); +InspectorBackend.registerCommand("Page.searchInResource", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}, {"name": "requestId", "type": "string", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Page.searchInResources", [{"name": "text", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Page.setShowPaintRects", [{"name": "result", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.setEmulatedMedia", [{"name": "media", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getCompositingBordersVisible", [], ["result"]); +InspectorBackend.registerCommand("Page.setCompositingBordersVisible", [{"name": "visible", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.snapshotNode", [{"name": "nodeId", "type": "number", "optional": false}], ["dataURL"]); +InspectorBackend.registerCommand("Page.snapshotRect", [{"name": "x", "type": "number", "optional": false}, {"name": "y", "type": "number", "optional": false}, {"name": "width", "type": "number", "optional": false}, {"name": "height", "type": "number", "optional": false}, {"name": "coordinateSystem", "type": "string", "optional": false}], ["dataURL"]); +InspectorBackend.registerCommand("Page.archive", [], ["data"]); +InspectorBackend.activateDomain("Page", "web"); + +// Runtime. +InspectorBackend.registerRuntimeDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Runtime"); +InspectorBackend.registerEnum("Runtime.RemoteObjectType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean", Symbol: "symbol"}); +InspectorBackend.registerEnum("Runtime.RemoteObjectSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date", Error: "error", Map: "map", Set: "set", Weakmap: "weakmap", Weakset: "weakset", Iterator: "iterator", Class: "class", Proxy: "proxy"}); +InspectorBackend.registerEnum("Runtime.ObjectPreviewType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean", Symbol: "symbol"}); +InspectorBackend.registerEnum("Runtime.ObjectPreviewSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date", Error: "error", Map: "map", Set: "set", Weakmap: "weakmap", Weakset: "weakset", Iterator: "iterator", Class: "class", Proxy: "proxy"}); +InspectorBackend.registerEnum("Runtime.PropertyPreviewType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean", Symbol: "symbol", Accessor: "accessor"}); +InspectorBackend.registerEnum("Runtime.PropertyPreviewSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date", Error: "error", Map: "map", Set: "set", Weakmap: "weakmap", Weakset: "weakset", Iterator: "iterator", Class: "class", Proxy: "proxy"}); +InspectorBackend.registerEnum("Runtime.SyntaxErrorType", {None: "none", Irrecoverable: "irrecoverable", UnterminatedLiteral: "unterminated-literal", Recoverable: "recoverable"}); +InspectorBackend.registerEvent("Runtime.executionContextCreated", ["context"]); +InspectorBackend.registerCommand("Runtime.parse", [{"name": "source", "type": "string", "optional": false}], ["result", "message", "range"]); +InspectorBackend.registerCommand("Runtime.evaluate", [{"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "contextId", "type": "number", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}, {"name": "saveResult", "type": "boolean", "optional": true}], ["result", "wasThrown", "savedResultIndex"]); +InspectorBackend.registerCommand("Runtime.callFunctionOn", [{"name": "objectId", "type": "string", "optional": false}, {"name": "functionDeclaration", "type": "string", "optional": false}, {"name": "arguments", "type": "object", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "wasThrown"]); +InspectorBackend.registerCommand("Runtime.getProperties", [{"name": "objectId", "type": "string", "optional": false}, {"name": "ownProperties", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "internalProperties"]); +InspectorBackend.registerCommand("Runtime.getDisplayableProperties", [{"name": "objectId", "type": "string", "optional": false}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["properties", "internalProperties"]); +InspectorBackend.registerCommand("Runtime.getCollectionEntries", [{"name": "objectId", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "startIndex", "type": "number", "optional": true}, {"name": "numberToFetch", "type": "number", "optional": true}], ["entries"]); +InspectorBackend.registerCommand("Runtime.saveResult", [{"name": "value", "type": "object", "optional": false}, {"name": "contextId", "type": "number", "optional": true}], ["savedResultIndex"]); +InspectorBackend.registerCommand("Runtime.releaseObject", [{"name": "objectId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Runtime.releaseObjectGroup", [{"name": "objectGroup", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Runtime.enable", [], []); +InspectorBackend.registerCommand("Runtime.disable", [], []); +InspectorBackend.registerCommand("Runtime.getRuntimeTypesForVariablesAtOffsets", [{"name": "locations", "type": "object", "optional": false}], ["types"]); +InspectorBackend.registerCommand("Runtime.enableTypeProfiler", [], []); +InspectorBackend.registerCommand("Runtime.disableTypeProfiler", [], []); +InspectorBackend.registerCommand("Runtime.enableControlFlowProfiler", [], []); +InspectorBackend.registerCommand("Runtime.disableControlFlowProfiler", [], []); +InspectorBackend.registerCommand("Runtime.getBasicBlocks", [{"name": "sourceID", "type": "string", "optional": false}], ["basicBlocks"]); +InspectorBackend.activateDomain("Runtime"); +InspectorBackend.workerSupportedDomain("Runtime"); + +// ScriptProfiler. +InspectorBackend.registerScriptProfilerDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "ScriptProfiler"); +InspectorBackend.registerEnum("ScriptProfiler.EventType", {API: "API", Microtask: "Microtask", Other: "Other"}); +InspectorBackend.registerEvent("ScriptProfiler.trackingStart", ["timestamp"]); +InspectorBackend.registerEvent("ScriptProfiler.trackingUpdate", ["event"]); +InspectorBackend.registerEvent("ScriptProfiler.trackingComplete", ["samples"]); +InspectorBackend.registerEvent("ScriptProfiler.programmaticCaptureStarted", []); +InspectorBackend.registerEvent("ScriptProfiler.programmaticCaptureStopped", []); +InspectorBackend.registerCommand("ScriptProfiler.startTracking", [{"name": "includeSamples", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("ScriptProfiler.stopTracking", [], []); +InspectorBackend.activateDomain("ScriptProfiler"); + +// Timeline. +InspectorBackend.registerTimelineDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Timeline"); +InspectorBackend.registerEnum("Timeline.EventType", {EventDispatch: "EventDispatch", ScheduleStyleRecalculation: "ScheduleStyleRecalculation", RecalculateStyles: "RecalculateStyles", InvalidateLayout: "InvalidateLayout", Layout: "Layout", Paint: "Paint", Composite: "Composite", RenderingFrame: "RenderingFrame", TimerInstall: "TimerInstall", TimerRemove: "TimerRemove", TimerFire: "TimerFire", EvaluateScript: "EvaluateScript", TimeStamp: "TimeStamp", Time: "Time", TimeEnd: "TimeEnd", FunctionCall: "FunctionCall", ProbeSample: "ProbeSample", ConsoleProfile: "ConsoleProfile", RequestAnimationFrame: "RequestAnimationFrame", CancelAnimationFrame: "CancelAnimationFrame", FireAnimationFrame: "FireAnimationFrame"}); +InspectorBackend.registerEnum("Timeline.Instrument", {ScriptProfiler: "ScriptProfiler", Timeline: "Timeline", Memory: "Memory", Heap: "Heap"}); +InspectorBackend.registerEvent("Timeline.eventRecorded", ["record"]); +InspectorBackend.registerEvent("Timeline.recordingStarted", ["startTime"]); +InspectorBackend.registerEvent("Timeline.recordingStopped", ["endTime"]); +InspectorBackend.registerEvent("Timeline.autoCaptureStarted", []); +InspectorBackend.registerEvent("Timeline.programmaticCaptureStarted", []); +InspectorBackend.registerEvent("Timeline.programmaticCaptureStopped", []); +InspectorBackend.registerCommand("Timeline.start", [{"name": "maxCallStackDepth", "type": "number", "optional": true}], []); +InspectorBackend.registerCommand("Timeline.stop", [], []); +InspectorBackend.registerCommand("Timeline.setAutoCaptureEnabled", [{"name": "enabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Timeline.setInstruments", [{"name": "instruments", "type": "object", "optional": false}], []); +InspectorBackend.activateDomain("Timeline", "web"); + +// Worker. +InspectorBackend.registerWorkerDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Worker"); +InspectorBackend.registerEvent("Worker.workerCreated", ["workerId", "url"]); +InspectorBackend.registerEvent("Worker.workerTerminated", ["workerId"]); +InspectorBackend.registerEvent("Worker.dispatchMessageFromWorker", ["workerId", "message"]); +InspectorBackend.registerCommand("Worker.enable", [], []); +InspectorBackend.registerCommand("Worker.disable", [], []); +InspectorBackend.registerCommand("Worker.initialized", [{"name": "workerId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Worker.sendMessageToWorker", [{"name": "workerId", "type": "string", "optional": false}, {"name": "message", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("Worker", "web"); diff --git a/Source/WebInspectorUI/UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js b/Source/WebInspectorUI/UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js new file mode 100644 index 000000000..f55c97477 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js @@ -0,0 +1,317 @@ +/* + * Copyright (C) 2013 Google Inc. All rights reserved. + * Copyright (C) 2013-2016 Apple Inc. All rights reserved. + * Copyright (C) 2014 University of Washington. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +// DO NOT EDIT THIS FILE. It is automatically generated from Inspector-iOS-7.0.json +// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py + +// Inspector. +InspectorBackend.registerInspectorDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Inspector"); +InspectorBackend.registerEvent("Inspector.evaluateForTestInFrontend", ["testCallId", "script"]); +InspectorBackend.registerEvent("Inspector.inspect", ["object", "hints"]); +InspectorBackend.registerEvent("Inspector.detached", ["reason"]); +InspectorBackend.registerEvent("Inspector.targetCrashed", []); +InspectorBackend.registerCommand("Inspector.enable", [], []); +InspectorBackend.registerCommand("Inspector.disable", [], []); +InspectorBackend.activateDomain("Inspector"); + +// Page. +InspectorBackend.registerPageDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Page"); +InspectorBackend.registerEnum("Page.ResourceType", {Document: "Document", Stylesheet: "Stylesheet", Image: "Image", Font: "Font", Script: "Script", XHR: "XHR", WebSocket: "WebSocket", Other: "Other"}); +InspectorBackend.registerEvent("Page.domContentEventFired", ["timestamp"]); +InspectorBackend.registerEvent("Page.loadEventFired", ["timestamp"]); +InspectorBackend.registerEvent("Page.frameNavigated", ["frame"]); +InspectorBackend.registerEvent("Page.frameDetached", ["frameId"]); +InspectorBackend.registerEvent("Page.frameStartedLoading", ["frameId"]); +InspectorBackend.registerEvent("Page.frameStoppedLoading", ["frameId"]); +InspectorBackend.registerEvent("Page.frameScheduledNavigation", ["frameId", "delay"]); +InspectorBackend.registerEvent("Page.frameClearedScheduledNavigation", ["frameId"]); +InspectorBackend.registerEvent("Page.javascriptDialogOpening", ["message"]); +InspectorBackend.registerEvent("Page.javascriptDialogClosed", []); +InspectorBackend.registerEvent("Page.scriptsEnabled", ["isEnabled"]); +InspectorBackend.registerCommand("Page.enable", [], []); +InspectorBackend.registerCommand("Page.disable", [], []); +InspectorBackend.registerCommand("Page.addScriptToEvaluateOnLoad", [{"name": "scriptSource", "type": "string", "optional": false}], ["identifier"]); +InspectorBackend.registerCommand("Page.removeScriptToEvaluateOnLoad", [{"name": "identifier", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.reload", [{"name": "ignoreCache", "type": "boolean", "optional": true}, {"name": "scriptToEvaluateOnLoad", "type": "string", "optional": true}, {"name": "scriptPreprocessor", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("Page.navigate", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getCookies", [], ["cookies", "cookiesString"]); +InspectorBackend.registerCommand("Page.deleteCookie", [{"name": "cookieName", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getResourceTree", [], ["frameTree"]); +InspectorBackend.registerCommand("Page.getResourceContent", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], ["content", "base64Encoded"]); +InspectorBackend.registerCommand("Page.searchInResource", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Page.searchInResources", [{"name": "text", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Page.setDocumentContent", [{"name": "frameId", "type": "string", "optional": false}, {"name": "html", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getScriptExecutionStatus", [], ["result"]); +InspectorBackend.registerCommand("Page.setScriptExecutionDisabled", [{"name": "value", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.setEmulatedMedia", [{"name": "media", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getCompositingBordersVisible", [], ["result"]); +InspectorBackend.registerCommand("Page.setCompositingBordersVisible", [{"name": "visible", "type": "boolean", "optional": false}], []); +InspectorBackend.activateDomain("Page"); + +// Runtime. +InspectorBackend.registerRuntimeDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Runtime"); +InspectorBackend.registerEnum("Runtime.RemoteObjectType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean"}); +InspectorBackend.registerEnum("Runtime.RemoteObjectSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date"}); +InspectorBackend.registerEnum("Runtime.PropertyPreviewType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean"}); +InspectorBackend.registerEnum("Runtime.PropertyPreviewSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date"}); +InspectorBackend.registerEnum("Runtime.SyntaxErrorType", {None: "none", Irrecoverable: "irrecoverable", UnterminatedLiteral: "unterminated-literal", Recoverable: "recoverable"}); +InspectorBackend.registerEvent("Runtime.executionContextCreated", ["context"]); +InspectorBackend.registerCommand("Runtime.parse", [{"name": "source", "type": "string", "optional": false}], ["result", "message", "range"]); +InspectorBackend.registerCommand("Runtime.evaluate", [{"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "contextId", "type": "number", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "wasThrown"]); +InspectorBackend.registerCommand("Runtime.callFunctionOn", [{"name": "objectId", "type": "string", "optional": false}, {"name": "functionDeclaration", "type": "string", "optional": false}, {"name": "arguments", "type": "object", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "wasThrown"]); +InspectorBackend.registerCommand("Runtime.getProperties", [{"name": "objectId", "type": "string", "optional": false}, {"name": "ownProperties", "type": "boolean", "optional": true}], ["result", "internalProperties"]); +InspectorBackend.registerCommand("Runtime.releaseObject", [{"name": "objectId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Runtime.releaseObjectGroup", [{"name": "objectGroup", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Runtime.enable", [], []); +InspectorBackend.registerCommand("Runtime.disable", [], []); +InspectorBackend.activateDomain("Runtime"); + +// Console. +InspectorBackend.registerConsoleDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Console"); +InspectorBackend.registerEnum("Console.ConsoleMessageSource", {XML: "xml", Javascript: "javascript", Network: "network", ConsoleAPI: "console-api", Storage: "storage", Appcache: "appcache", Rendering: "rendering", CSS: "css", Security: "security", Other: "other"}); +InspectorBackend.registerEnum("Console.ConsoleMessageLevel", {Log: "log", Warning: "warning", Error: "error", Debug: "debug"}); +InspectorBackend.registerEnum("Console.ConsoleMessageType", {Log: "log", Dir: "dir", DirXML: "dirxml", Table: "table", Trace: "trace", Clear: "clear", StartGroup: "startGroup", StartGroupCollapsed: "startGroupCollapsed", EndGroup: "endGroup", Assert: "assert", Timing: "timing", Profile: "profile", ProfileEnd: "profileEnd"}); +InspectorBackend.registerEvent("Console.messageAdded", ["message"]); +InspectorBackend.registerEvent("Console.messageRepeatCountUpdated", ["count"]); +InspectorBackend.registerEvent("Console.messagesCleared", []); +InspectorBackend.registerCommand("Console.enable", [], []); +InspectorBackend.registerCommand("Console.disable", [], []); +InspectorBackend.registerCommand("Console.clearMessages", [], []); +InspectorBackend.registerCommand("Console.setMonitoringXHREnabled", [{"name": "enabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Console.addInspectedNode", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.activateDomain("Console"); + +// Network. +InspectorBackend.registerNetworkDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Network"); +InspectorBackend.registerEnum("Network.InitiatorType", {Parser: "parser", Script: "script", Other: "other"}); +InspectorBackend.registerEvent("Network.requestWillBeSent", ["requestId", "frameId", "loaderId", "documentURL", "request", "timestamp", "initiator", "redirectResponse", "type"]); +InspectorBackend.registerEvent("Network.requestServedFromCache", ["requestId"]); +InspectorBackend.registerEvent("Network.responseReceived", ["requestId", "frameId", "loaderId", "timestamp", "type", "response"]); +InspectorBackend.registerEvent("Network.dataReceived", ["requestId", "timestamp", "dataLength", "encodedDataLength"]); +InspectorBackend.registerEvent("Network.loadingFinished", ["requestId", "timestamp", "sourceMapURL"]); +InspectorBackend.registerEvent("Network.loadingFailed", ["requestId", "timestamp", "errorText", "canceled"]); +InspectorBackend.registerEvent("Network.requestServedFromMemoryCache", ["requestId", "frameId", "loaderId", "documentURL", "timestamp", "initiator", "resource"]); +InspectorBackend.registerEvent("Network.webSocketWillSendHandshakeRequest", ["requestId", "timestamp", "request"]); +InspectorBackend.registerEvent("Network.webSocketHandshakeResponseReceived", ["requestId", "timestamp", "response"]); +InspectorBackend.registerEvent("Network.webSocketCreated", ["requestId", "url"]); +InspectorBackend.registerEvent("Network.webSocketClosed", ["requestId", "timestamp"]); +InspectorBackend.registerEvent("Network.webSocketFrameReceived", ["requestId", "timestamp", "response"]); +InspectorBackend.registerEvent("Network.webSocketFrameError", ["requestId", "timestamp", "errorMessage"]); +InspectorBackend.registerEvent("Network.webSocketFrameSent", ["requestId", "timestamp", "response"]); +InspectorBackend.registerCommand("Network.enable", [], []); +InspectorBackend.registerCommand("Network.disable", [], []); +InspectorBackend.registerCommand("Network.setExtraHTTPHeaders", [{"name": "headers", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Network.getResponseBody", [{"name": "requestId", "type": "string", "optional": false}], ["body", "base64Encoded"]); +InspectorBackend.registerCommand("Network.setCacheDisabled", [{"name": "cacheDisabled", "type": "boolean", "optional": false}], []); +InspectorBackend.activateDomain("Network"); + +// Database. +InspectorBackend.registerDatabaseDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Database"); +InspectorBackend.registerEvent("Database.addDatabase", ["database"]); +InspectorBackend.registerCommand("Database.enable", [], []); +InspectorBackend.registerCommand("Database.disable", [], []); +InspectorBackend.registerCommand("Database.getDatabaseTableNames", [{"name": "databaseId", "type": "string", "optional": false}], ["tableNames"]); +InspectorBackend.registerCommand("Database.executeSQL", [{"name": "databaseId", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}], ["columnNames", "values", "sqlError"]); +InspectorBackend.activateDomain("Database"); + +// DOMStorage. +InspectorBackend.registerDOMStorageDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOMStorage"); +InspectorBackend.registerEvent("DOMStorage.domStorageItemsCleared", ["storageId"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemRemoved", ["storageId", "key"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemAdded", ["storageId", "key", "newValue"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemUpdated", ["storageId", "key", "oldValue", "newValue"]); +InspectorBackend.registerCommand("DOMStorage.enable", [], []); +InspectorBackend.registerCommand("DOMStorage.disable", [], []); +InspectorBackend.registerCommand("DOMStorage.getDOMStorageItems", [{"name": "storageId", "type": "object", "optional": false}], ["entries"]); +InspectorBackend.registerCommand("DOMStorage.setDOMStorageItem", [{"name": "storageId", "type": "object", "optional": false}, {"name": "key", "type": "string", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMStorage.removeDOMStorageItem", [{"name": "storageId", "type": "object", "optional": false}, {"name": "key", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("DOMStorage"); + +// ApplicationCache. +InspectorBackend.registerApplicationCacheDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "ApplicationCache"); +InspectorBackend.registerEvent("ApplicationCache.applicationCacheStatusUpdated", ["frameId", "manifestURL", "status"]); +InspectorBackend.registerEvent("ApplicationCache.networkStateUpdated", ["isNowOnline"]); +InspectorBackend.registerCommand("ApplicationCache.getFramesWithManifests", [], ["frameIds"]); +InspectorBackend.registerCommand("ApplicationCache.enable", [], []); +InspectorBackend.registerCommand("ApplicationCache.getManifestForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["manifestURL"]); +InspectorBackend.registerCommand("ApplicationCache.getApplicationCacheForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["applicationCache"]); +InspectorBackend.activateDomain("ApplicationCache"); + +// DOM. +InspectorBackend.registerDOMDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOM"); +InspectorBackend.registerEvent("DOM.documentUpdated", []); +InspectorBackend.registerEvent("DOM.setChildNodes", ["parentId", "nodes"]); +InspectorBackend.registerEvent("DOM.attributeModified", ["nodeId", "name", "value"]); +InspectorBackend.registerEvent("DOM.attributeRemoved", ["nodeId", "name"]); +InspectorBackend.registerEvent("DOM.inlineStyleInvalidated", ["nodeIds"]); +InspectorBackend.registerEvent("DOM.characterDataModified", ["nodeId", "characterData"]); +InspectorBackend.registerEvent("DOM.childNodeCountUpdated", ["nodeId", "childNodeCount"]); +InspectorBackend.registerEvent("DOM.childNodeInserted", ["parentNodeId", "previousNodeId", "node"]); +InspectorBackend.registerEvent("DOM.childNodeRemoved", ["parentNodeId", "nodeId"]); +InspectorBackend.registerEvent("DOM.shadowRootPushed", ["hostId", "root"]); +InspectorBackend.registerEvent("DOM.shadowRootPopped", ["hostId", "rootId"]); +InspectorBackend.registerCommand("DOM.getDocument", [], ["root"]); +InspectorBackend.registerCommand("DOM.requestChildNodes", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "depth", "type": "number", "optional": true}], []); +InspectorBackend.registerCommand("DOM.querySelector", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.querySelectorAll", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["nodeIds"]); +InspectorBackend.registerCommand("DOM.setNodeName", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.setNodeValue", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.removeNode", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.registerCommand("DOM.setAttributeValue", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.setAttributesAsText", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "text", "type": "string", "optional": false}, {"name": "name", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.removeAttribute", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.getEventListenersForNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["listeners"]); +InspectorBackend.registerCommand("DOM.getOuterHTML", [{"name": "nodeId", "type": "number", "optional": false}], ["outerHTML"]); +InspectorBackend.registerCommand("DOM.setOuterHTML", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "outerHTML", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.performSearch", [{"name": "query", "type": "string", "optional": false}], ["searchId", "resultCount"]); +InspectorBackend.registerCommand("DOM.getSearchResults", [{"name": "searchId", "type": "string", "optional": false}, {"name": "fromIndex", "type": "number", "optional": false}, {"name": "toIndex", "type": "number", "optional": false}], ["nodeIds"]); +InspectorBackend.registerCommand("DOM.discardSearchResults", [{"name": "searchId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.requestNode", [{"name": "objectId", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.setInspectModeEnabled", [{"name": "enabled", "type": "boolean", "optional": false}, {"name": "highlightConfig", "type": "object", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightRect", [{"name": "x", "type": "number", "optional": false}, {"name": "y", "type": "number", "optional": false}, {"name": "width", "type": "number", "optional": false}, {"name": "height", "type": "number", "optional": false}, {"name": "color", "type": "object", "optional": true}, {"name": "outlineColor", "type": "object", "optional": true}, {"name": "usePageCoordinates", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightQuad", [{"name": "quad", "type": "object", "optional": false}, {"name": "color", "type": "object", "optional": true}, {"name": "outlineColor", "type": "object", "optional": true}, {"name": "usePageCoordinates", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightNode", [{"name": "highlightConfig", "type": "object", "optional": false}, {"name": "nodeId", "type": "number", "optional": true}, {"name": "objectId", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.hideHighlight", [], []); +InspectorBackend.registerCommand("DOM.highlightFrame", [{"name": "frameId", "type": "string", "optional": false}, {"name": "contentColor", "type": "object", "optional": true}, {"name": "contentOutlineColor", "type": "object", "optional": true}], []); +InspectorBackend.registerCommand("DOM.pushNodeByPathToFrontend", [{"name": "path", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.pushNodeByBackendIdToFrontend", [{"name": "backendNodeId", "type": "number", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.releaseBackendNodeIds", [{"name": "nodeGroup", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.resolveNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["object"]); +InspectorBackend.registerCommand("DOM.getAttributes", [{"name": "nodeId", "type": "number", "optional": false}], ["attributes"]); +InspectorBackend.registerCommand("DOM.moveTo", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "targetNodeId", "type": "number", "optional": false}, {"name": "insertBeforeNodeId", "type": "number", "optional": true}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.undo", [], []); +InspectorBackend.registerCommand("DOM.redo", [], []); +InspectorBackend.registerCommand("DOM.markUndoableState", [], []); +InspectorBackend.registerCommand("DOM.focus", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.activateDomain("DOM"); + +// CSS. +InspectorBackend.registerCSSDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "CSS"); +InspectorBackend.registerEnum("CSS.StyleSheetOrigin", {User: "user", UserAgent: "user-agent", Inspector: "inspector", Regular: "regular"}); +InspectorBackend.registerEnum("CSS.CSSPropertyStatus", {Active: "active", Inactive: "inactive", Disabled: "disabled", Style: "style"}); +InspectorBackend.registerEnum("CSS.CSSMediaSource", {MediaRule: "mediaRule", ImportRule: "importRule", LinkedSheet: "linkedSheet", InlineSheet: "inlineSheet"}); +InspectorBackend.registerEnum("CSS.RegionRegionOverset", {Overset: "overset", Fit: "fit", Empty: "empty"}); +InspectorBackend.registerEvent("CSS.mediaQueryResultChanged", []); +InspectorBackend.registerEvent("CSS.styleSheetChanged", ["styleSheetId"]); +InspectorBackend.registerEvent("CSS.namedFlowCreated", ["namedFlow"]); +InspectorBackend.registerEvent("CSS.namedFlowRemoved", ["documentNodeId", "flowName"]); +InspectorBackend.registerEvent("CSS.regionLayoutUpdated", ["namedFlow"]); +InspectorBackend.registerCommand("CSS.enable", [], []); +InspectorBackend.registerCommand("CSS.disable", [], []); +InspectorBackend.registerCommand("CSS.getMatchedStylesForNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "includePseudo", "type": "boolean", "optional": true}, {"name": "includeInherited", "type": "boolean", "optional": true}], ["matchedCSSRules", "pseudoElements", "inherited"]); +InspectorBackend.registerCommand("CSS.getInlineStylesForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["inlineStyle", "attributesStyle"]); +InspectorBackend.registerCommand("CSS.getComputedStyleForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["computedStyle"]); +InspectorBackend.registerCommand("CSS.getAllStyleSheets", [], ["headers"]); +InspectorBackend.registerCommand("CSS.getStyleSheet", [{"name": "styleSheetId", "type": "string", "optional": false}], ["styleSheet"]); +InspectorBackend.registerCommand("CSS.getStyleSheetText", [{"name": "styleSheetId", "type": "string", "optional": false}], ["text"]); +InspectorBackend.registerCommand("CSS.setStyleSheetText", [{"name": "styleSheetId", "type": "string", "optional": false}, {"name": "text", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("CSS.setStyleText", [{"name": "styleId", "type": "object", "optional": false}, {"name": "text", "type": "string", "optional": false}], ["style"]); +InspectorBackend.registerCommand("CSS.setRuleSelector", [{"name": "ruleId", "type": "object", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["rule"]); +InspectorBackend.registerCommand("CSS.addRule", [{"name": "contextNodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["rule"]); +InspectorBackend.registerCommand("CSS.getSupportedCSSProperties", [], ["cssProperties"]); +InspectorBackend.registerCommand("CSS.forcePseudoState", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "forcedPseudoClasses", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("CSS.startSelectorProfiler", [], []); +InspectorBackend.registerCommand("CSS.stopSelectorProfiler", [], ["profile"]); +InspectorBackend.registerCommand("CSS.getNamedFlowCollection", [{"name": "documentNodeId", "type": "number", "optional": false}], ["namedFlows"]); +InspectorBackend.activateDomain("CSS"); + +// Timeline. +InspectorBackend.registerTimelineDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Timeline"); +InspectorBackend.registerEnum("Timeline.EventType", {EventDispatch: "EventDispatch", ScheduleStyleRecalculation: "ScheduleStyleRecalculation", RecalculateStyles: "RecalculateStyles", InvalidateLayout: "InvalidateLayout", Layout: "Layout", Paint: "Paint", ResizeImage: "ResizeImage", ParseHTML: "ParseHTML", TimerInstall: "TimerInstall", TimerRemove: "TimerRemove", TimerFire: "TimerFire", EvaluateScript: "EvaluateScript", MarkLoad: "MarkLoad", MarkDOMContent: "MarkDOMContent", TimeStamp: "TimeStamp", Time: "Time", TimeEnd: "TimeEnd", ScheduleResourceRequest: "ScheduleResourceRequest", ResourceSendRequest: "ResourceSendRequest", ResourceReceiveResponse: "ResourceReceiveResponse", ResourceReceivedData: "ResourceReceivedData", ResourceFinish: "ResourceFinish", XHRReadyStateChange: "XHRReadyStateChange", XHRLoad: "XHRLoad", FunctionCall: "FunctionCall", RequestAnimationFrame: "RequestAnimationFrame", CancelAnimationFrame: "CancelAnimationFrame", FireAnimationFrame: "FireAnimationFrame", WebSocketCreate: "WebSocketCreate", WebSocketSendHandshakeRequest: "WebSocketSendHandshakeRequest", WebSocketReceiveHandshakeResponse: "WebSocketReceiveHandshakeResponse", WebSocketDestroy: "WebSocketDestroy"}); +InspectorBackend.registerEvent("Timeline.eventRecorded", ["record"]); +InspectorBackend.registerCommand("Timeline.start", [{"name": "maxCallStackDepth", "type": "number", "optional": true}], []); +InspectorBackend.registerCommand("Timeline.stop", [], []); +InspectorBackend.activateDomain("Timeline"); + +// Debugger. +InspectorBackend.registerDebuggerDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Debugger"); +InspectorBackend.registerEnum("Debugger.ScopeType", {Global: "global", Local: "local", With: "with", Closure: "closure", Catch: "catch"}); +InspectorBackend.registerEvent("Debugger.globalObjectCleared", []); +InspectorBackend.registerEvent("Debugger.scriptParsed", ["scriptId", "url", "startLine", "startColumn", "endLine", "endColumn", "isContentScript", "sourceMapURL", "hasSourceURL"]); +InspectorBackend.registerEvent("Debugger.scriptFailedToParse", ["url", "scriptSource", "startLine", "errorLine", "errorMessage"]); +InspectorBackend.registerEvent("Debugger.breakpointResolved", ["breakpointId", "location"]); +InspectorBackend.registerEnum("Debugger.PausedReason", {XHR: "XHR", DOM: "DOM", EventListener: "EventListener", Exception: "exception", Assert: "assert", CSPViolation: "CSPViolation", Other: "other"}); +InspectorBackend.registerEvent("Debugger.paused", ["callFrames", "reason", "data"]); +InspectorBackend.registerEvent("Debugger.resumed", []); +InspectorBackend.registerCommand("Debugger.enable", [], []); +InspectorBackend.registerCommand("Debugger.disable", [], []); +InspectorBackend.registerCommand("Debugger.setBreakpointsActive", [{"name": "active", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.setBreakpointByUrl", [{"name": "lineNumber", "type": "number", "optional": false}, {"name": "url", "type": "string", "optional": true}, {"name": "urlRegex", "type": "string", "optional": true}, {"name": "columnNumber", "type": "number", "optional": true}, {"name": "condition", "type": "string", "optional": true}], ["breakpointId", "locations"]); +InspectorBackend.registerCommand("Debugger.setBreakpoint", [{"name": "location", "type": "object", "optional": false}, {"name": "condition", "type": "string", "optional": true}], ["breakpointId", "actualLocation"]); +InspectorBackend.registerCommand("Debugger.removeBreakpoint", [{"name": "breakpointId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.continueToLocation", [{"name": "location", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.stepOver", [], []); +InspectorBackend.registerCommand("Debugger.stepInto", [], []); +InspectorBackend.registerCommand("Debugger.stepOut", [], []); +InspectorBackend.registerCommand("Debugger.pause", [], []); +InspectorBackend.registerCommand("Debugger.resume", [], []); +InspectorBackend.registerCommand("Debugger.searchInContent", [{"name": "scriptId", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Debugger.restartFrame", [{"name": "callFrameId", "type": "string", "optional": false}], ["callFrames", "result"]); +InspectorBackend.registerCommand("Debugger.getScriptSource", [{"name": "scriptId", "type": "string", "optional": false}], ["scriptSource"]); +InspectorBackend.registerCommand("Debugger.getFunctionDetails", [{"name": "functionId", "type": "string", "optional": false}], ["details"]); +InspectorBackend.registerCommand("Debugger.setPauseOnExceptions", [{"name": "state", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.evaluateOnCallFrame", [{"name": "callFrameId", "type": "string", "optional": false}, {"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "wasThrown"]); +InspectorBackend.registerCommand("Debugger.setOverlayMessage", [{"name": "message", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("Debugger.setVariableValue", [{"name": "scopeNumber", "type": "number", "optional": false}, {"name": "variableName", "type": "string", "optional": false}, {"name": "newValue", "type": "object", "optional": false}, {"name": "callFrameId", "type": "string", "optional": true}, {"name": "functionObjectId", "type": "string", "optional": true}], []); +InspectorBackend.activateDomain("Debugger"); + +// DOMDebugger. +InspectorBackend.registerEnum("DOMDebugger.DOMBreakpointType", {SubtreeModified: "subtree-modified", AttributeModified: "attribute-modified", NodeRemoved: "node-removed"}); +InspectorBackend.registerCommand("DOMDebugger.setDOMBreakpoint", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "type", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeDOMBreakpoint", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "type", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setEventListenerBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeEventListenerBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setInstrumentationBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeInstrumentationBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setXHRBreakpoint", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeXHRBreakpoint", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("DOMDebugger"); + +// Profiler. +InspectorBackend.registerProfilerDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Profiler"); +InspectorBackend.registerEnum("Profiler.ProfileHeaderTypeId", {CPU: "CPU", CSS: "CSS"}); +InspectorBackend.registerEvent("Profiler.addProfileHeader", ["header"]); +InspectorBackend.registerEvent("Profiler.setRecordingProfile", ["isProfiling"]); +InspectorBackend.registerEvent("Profiler.resetProfiles", []); +InspectorBackend.registerCommand("Profiler.enable", [], []); +InspectorBackend.registerCommand("Profiler.disable", [], []); +InspectorBackend.registerCommand("Profiler.start", [], []); +InspectorBackend.registerCommand("Profiler.stop", [], []); +InspectorBackend.registerCommand("Profiler.getProfileHeaders", [], ["headers"]); +InspectorBackend.registerCommand("Profiler.getCPUProfile", [{"name": "uid", "type": "number", "optional": false}], ["profile"]); +InspectorBackend.registerCommand("Profiler.removeProfile", [{"name": "type", "type": "string", "optional": false}, {"name": "uid", "type": "number", "optional": false}], []); +InspectorBackend.registerCommand("Profiler.clearProfiles", [], []); +InspectorBackend.activateDomain("Profiler"); + +// LayerTree. +InspectorBackend.registerLayerTreeDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "LayerTree"); +InspectorBackend.registerEvent("LayerTree.layerTreeDidChange", []); +InspectorBackend.registerCommand("LayerTree.enable", [], []); +InspectorBackend.registerCommand("LayerTree.disable", [], []); +InspectorBackend.registerCommand("LayerTree.layersForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["layers"]); +InspectorBackend.registerCommand("LayerTree.reasonsForCompositingLayer", [{"name": "layerId", "type": "string", "optional": false}], ["compositingReasons"]); +InspectorBackend.activateDomain("LayerTree"); diff --git a/Source/WebInspectorUI/UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js b/Source/WebInspectorUI/UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js new file mode 100644 index 000000000..5e4d78c17 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js @@ -0,0 +1,342 @@ +/* + * Copyright (C) 2013 Google Inc. All rights reserved. + * Copyright (C) 2013-2016 Apple Inc. All rights reserved. + * Copyright (C) 2014 University of Washington. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +// DO NOT EDIT THIS FILE. It is automatically generated from Inspector-iOS-8.0.json +// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py + +// Console. +InspectorBackend.registerConsoleDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Console"); +InspectorBackend.registerEnum("Console.ConsoleMessageSource", {XML: "xml", Javascript: "javascript", Network: "network", ConsoleAPI: "console-api", Storage: "storage", Appcache: "appcache", Rendering: "rendering", CSS: "css", Security: "security", Other: "other"}); +InspectorBackend.registerEnum("Console.ConsoleMessageLevel", {Log: "log", Warning: "warning", Error: "error", Debug: "debug"}); +InspectorBackend.registerEnum("Console.ConsoleMessageType", {Log: "log", Dir: "dir", DirXML: "dirxml", Table: "table", Trace: "trace", Clear: "clear", StartGroup: "startGroup", StartGroupCollapsed: "startGroupCollapsed", EndGroup: "endGroup", Assert: "assert", Timing: "timing", Profile: "profile", ProfileEnd: "profileEnd"}); +InspectorBackend.registerEvent("Console.messageAdded", ["message"]); +InspectorBackend.registerEvent("Console.messageRepeatCountUpdated", ["count"]); +InspectorBackend.registerEvent("Console.messagesCleared", []); +InspectorBackend.registerCommand("Console.enable", [], []); +InspectorBackend.registerCommand("Console.disable", [], []); +InspectorBackend.registerCommand("Console.clearMessages", [], []); +InspectorBackend.registerCommand("Console.setMonitoringXHREnabled", [{"name": "enabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Console.addInspectedNode", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.activateDomain("Console"); + +// Debugger. +InspectorBackend.registerDebuggerDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Debugger"); +InspectorBackend.registerEnum("Debugger.BreakpointActionType", {Log: "log", Evaluate: "evaluate", Sound: "sound", Probe: "probe"}); +InspectorBackend.registerEnum("Debugger.ScopeType", {Global: "global", Local: "local", With: "with", Closure: "closure", Catch: "catch"}); +InspectorBackend.registerEvent("Debugger.globalObjectCleared", []); +InspectorBackend.registerEvent("Debugger.scriptParsed", ["scriptId", "url", "startLine", "startColumn", "endLine", "endColumn", "isContentScript", "sourceMapURL", "hasSourceURL"]); +InspectorBackend.registerEvent("Debugger.scriptFailedToParse", ["url", "scriptSource", "startLine", "errorLine", "errorMessage"]); +InspectorBackend.registerEvent("Debugger.breakpointResolved", ["breakpointId", "location"]); +InspectorBackend.registerEnum("Debugger.PausedReason", {XHR: "XHR", DOM: "DOM", EventListener: "EventListener", Exception: "exception", Assert: "assert", CSPViolation: "CSPViolation", Other: "other"}); +InspectorBackend.registerEvent("Debugger.paused", ["callFrames", "reason", "data"]); +InspectorBackend.registerEvent("Debugger.resumed", []); +InspectorBackend.registerEvent("Debugger.didSampleProbe", ["sample"]); +InspectorBackend.registerEvent("Debugger.playBreakpointActionSound", ["breakpointActionId"]); +InspectorBackend.registerCommand("Debugger.enable", [], []); +InspectorBackend.registerCommand("Debugger.disable", [], []); +InspectorBackend.registerCommand("Debugger.setBreakpointsActive", [{"name": "active", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.setBreakpointByUrl", [{"name": "lineNumber", "type": "number", "optional": false}, {"name": "url", "type": "string", "optional": true}, {"name": "urlRegex", "type": "string", "optional": true}, {"name": "columnNumber", "type": "number", "optional": true}, {"name": "options", "type": "object", "optional": true}], ["breakpointId", "locations"]); +InspectorBackend.registerCommand("Debugger.setBreakpoint", [{"name": "location", "type": "object", "optional": false}, {"name": "options", "type": "object", "optional": true}], ["breakpointId", "actualLocation"]); +InspectorBackend.registerCommand("Debugger.removeBreakpoint", [{"name": "breakpointId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.continueToLocation", [{"name": "location", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.stepOver", [], []); +InspectorBackend.registerCommand("Debugger.stepInto", [], []); +InspectorBackend.registerCommand("Debugger.stepOut", [], []); +InspectorBackend.registerCommand("Debugger.pause", [], []); +InspectorBackend.registerCommand("Debugger.resume", [], []); +InspectorBackend.registerCommand("Debugger.searchInContent", [{"name": "scriptId", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Debugger.getScriptSource", [{"name": "scriptId", "type": "string", "optional": false}], ["scriptSource"]); +InspectorBackend.registerCommand("Debugger.getFunctionDetails", [{"name": "functionId", "type": "string", "optional": false}], ["details"]); +InspectorBackend.registerCommand("Debugger.setPauseOnExceptions", [{"name": "state", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.evaluateOnCallFrame", [{"name": "callFrameId", "type": "string", "optional": false}, {"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "wasThrown"]); +InspectorBackend.registerCommand("Debugger.setOverlayMessage", [{"name": "message", "type": "string", "optional": true}], []); +InspectorBackend.activateDomain("Debugger"); + +// Inspector. +InspectorBackend.registerInspectorDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Inspector"); +InspectorBackend.registerEvent("Inspector.evaluateForTestInFrontend", ["script"]); +InspectorBackend.registerEvent("Inspector.inspect", ["object", "hints"]); +InspectorBackend.registerEvent("Inspector.detached", ["reason"]); +InspectorBackend.registerEvent("Inspector.targetCrashed", []); +InspectorBackend.registerCommand("Inspector.enable", [], []); +InspectorBackend.registerCommand("Inspector.disable", [], []); +InspectorBackend.activateDomain("Inspector"); + +// Profiler. +InspectorBackend.registerProfilerDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Profiler"); +InspectorBackend.registerEnum("Profiler.ProfileHeaderTypeId", {CPU: "CPU"}); +InspectorBackend.registerEvent("Profiler.addProfileHeader", ["header"]); +InspectorBackend.registerEvent("Profiler.setRecordingProfile", ["isProfiling"]); +InspectorBackend.registerEvent("Profiler.resetProfiles", []); +InspectorBackend.registerCommand("Profiler.enable", [], []); +InspectorBackend.registerCommand("Profiler.disable", [], []); +InspectorBackend.registerCommand("Profiler.start", [], []); +InspectorBackend.registerCommand("Profiler.stop", [], []); +InspectorBackend.registerCommand("Profiler.getProfileHeaders", [], ["headers"]); +InspectorBackend.registerCommand("Profiler.getCPUProfile", [{"name": "uid", "type": "number", "optional": false}], ["profile"]); +InspectorBackend.registerCommand("Profiler.removeProfile", [{"name": "type", "type": "string", "optional": false}, {"name": "uid", "type": "number", "optional": false}], []); +InspectorBackend.registerCommand("Profiler.clearProfiles", [], []); +InspectorBackend.activateDomain("Profiler"); + +// Runtime. +InspectorBackend.registerRuntimeDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Runtime"); +InspectorBackend.registerEnum("Runtime.RemoteObjectType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean"}); +InspectorBackend.registerEnum("Runtime.RemoteObjectSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date"}); +InspectorBackend.registerEnum("Runtime.PropertyPreviewType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean"}); +InspectorBackend.registerEnum("Runtime.PropertyPreviewSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date"}); +InspectorBackend.registerEnum("Runtime.SyntaxErrorType", {None: "none", Irrecoverable: "irrecoverable", UnterminatedLiteral: "unterminated-literal", Recoverable: "recoverable"}); +InspectorBackend.registerEvent("Runtime.executionContextCreated", ["context"]); +InspectorBackend.registerCommand("Runtime.parse", [{"name": "source", "type": "string", "optional": false}], ["result", "message", "range"]); +InspectorBackend.registerCommand("Runtime.evaluate", [{"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "contextId", "type": "number", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "wasThrown"]); +InspectorBackend.registerCommand("Runtime.callFunctionOn", [{"name": "objectId", "type": "string", "optional": false}, {"name": "functionDeclaration", "type": "string", "optional": false}, {"name": "arguments", "type": "object", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "wasThrown"]); +InspectorBackend.registerCommand("Runtime.getProperties", [{"name": "objectId", "type": "string", "optional": false}, {"name": "ownProperties", "type": "boolean", "optional": true}], ["result", "internalProperties"]); +InspectorBackend.registerCommand("Runtime.releaseObject", [{"name": "objectId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Runtime.releaseObjectGroup", [{"name": "objectGroup", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Runtime.enable", [], []); +InspectorBackend.registerCommand("Runtime.disable", [], []); +InspectorBackend.activateDomain("Runtime"); + +// ApplicationCache. +InspectorBackend.registerApplicationCacheDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "ApplicationCache"); +InspectorBackend.registerEvent("ApplicationCache.applicationCacheStatusUpdated", ["frameId", "manifestURL", "status"]); +InspectorBackend.registerEvent("ApplicationCache.networkStateUpdated", ["isNowOnline"]); +InspectorBackend.registerCommand("ApplicationCache.getFramesWithManifests", [], ["frameIds"]); +InspectorBackend.registerCommand("ApplicationCache.enable", [], []); +InspectorBackend.registerCommand("ApplicationCache.getManifestForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["manifestURL"]); +InspectorBackend.registerCommand("ApplicationCache.getApplicationCacheForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["applicationCache"]); +InspectorBackend.activateDomain("ApplicationCache", "web"); + +// CSS. +InspectorBackend.registerCSSDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "CSS"); +InspectorBackend.registerEnum("CSS.StyleSheetOrigin", {User: "user", UserAgent: "user-agent", Inspector: "inspector", Regular: "regular"}); +InspectorBackend.registerEnum("CSS.CSSPropertyStatus", {Active: "active", Inactive: "inactive", Disabled: "disabled", Style: "style"}); +InspectorBackend.registerEnum("CSS.CSSMediaSource", {MediaRule: "mediaRule", ImportRule: "importRule", LinkedSheet: "linkedSheet", InlineSheet: "inlineSheet"}); +InspectorBackend.registerEnum("CSS.RegionRegionOverset", {Overset: "overset", Fit: "fit", Empty: "empty"}); +InspectorBackend.registerEvent("CSS.mediaQueryResultChanged", []); +InspectorBackend.registerEvent("CSS.styleSheetChanged", ["styleSheetId"]); +InspectorBackend.registerEvent("CSS.namedFlowCreated", ["namedFlow"]); +InspectorBackend.registerEvent("CSS.namedFlowRemoved", ["documentNodeId", "flowName"]); +InspectorBackend.registerEvent("CSS.regionOversetChanged", ["namedFlow"]); +InspectorBackend.registerEvent("CSS.registeredNamedFlowContentElement", ["documentNodeId", "flowName", "contentNodeId", "nextContentNodeId"]); +InspectorBackend.registerEvent("CSS.unregisteredNamedFlowContentElement", ["documentNodeId", "flowName", "contentNodeId"]); +InspectorBackend.registerCommand("CSS.enable", [], []); +InspectorBackend.registerCommand("CSS.disable", [], []); +InspectorBackend.registerCommand("CSS.getMatchedStylesForNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "includePseudo", "type": "boolean", "optional": true}, {"name": "includeInherited", "type": "boolean", "optional": true}], ["matchedCSSRules", "pseudoElements", "inherited"]); +InspectorBackend.registerCommand("CSS.getInlineStylesForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["inlineStyle", "attributesStyle"]); +InspectorBackend.registerCommand("CSS.getComputedStyleForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["computedStyle"]); +InspectorBackend.registerCommand("CSS.getAllStyleSheets", [], ["headers"]); +InspectorBackend.registerCommand("CSS.getStyleSheet", [{"name": "styleSheetId", "type": "string", "optional": false}], ["styleSheet"]); +InspectorBackend.registerCommand("CSS.getStyleSheetText", [{"name": "styleSheetId", "type": "string", "optional": false}], ["text"]); +InspectorBackend.registerCommand("CSS.setStyleSheetText", [{"name": "styleSheetId", "type": "string", "optional": false}, {"name": "text", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("CSS.setStyleText", [{"name": "styleId", "type": "object", "optional": false}, {"name": "text", "type": "string", "optional": false}], ["style"]); +InspectorBackend.registerCommand("CSS.setRuleSelector", [{"name": "ruleId", "type": "object", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["rule"]); +InspectorBackend.registerCommand("CSS.addRule", [{"name": "contextNodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["rule"]); +InspectorBackend.registerCommand("CSS.getSupportedCSSProperties", [], ["cssProperties"]); +InspectorBackend.registerCommand("CSS.forcePseudoState", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "forcedPseudoClasses", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("CSS.getNamedFlowCollection", [{"name": "documentNodeId", "type": "number", "optional": false}], ["namedFlows"]); +InspectorBackend.activateDomain("CSS", "web"); + +// DOM. +InspectorBackend.registerDOMDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOM"); +InspectorBackend.registerEnum("DOM.LiveRegionRelevant", {Additions: "additions", Removals: "removals", Text: "text"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesChecked", {True: "true", False: "false", Mixed: "mixed"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesInvalid", {True: "true", False: "false", Grammar: "grammar", Spelling: "spelling"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesLiveRegionStatus", {Assertive: "assertive", Polite: "polite", Off: "off"}); +InspectorBackend.registerEvent("DOM.documentUpdated", []); +InspectorBackend.registerEvent("DOM.setChildNodes", ["parentId", "nodes"]); +InspectorBackend.registerEvent("DOM.attributeModified", ["nodeId", "name", "value"]); +InspectorBackend.registerEvent("DOM.attributeRemoved", ["nodeId", "name"]); +InspectorBackend.registerEvent("DOM.inlineStyleInvalidated", ["nodeIds"]); +InspectorBackend.registerEvent("DOM.characterDataModified", ["nodeId", "characterData"]); +InspectorBackend.registerEvent("DOM.childNodeCountUpdated", ["nodeId", "childNodeCount"]); +InspectorBackend.registerEvent("DOM.childNodeInserted", ["parentNodeId", "previousNodeId", "node"]); +InspectorBackend.registerEvent("DOM.childNodeRemoved", ["parentNodeId", "nodeId"]); +InspectorBackend.registerEvent("DOM.shadowRootPushed", ["hostId", "root"]); +InspectorBackend.registerEvent("DOM.shadowRootPopped", ["hostId", "rootId"]); +InspectorBackend.registerCommand("DOM.getDocument", [], ["root"]); +InspectorBackend.registerCommand("DOM.requestChildNodes", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "depth", "type": "number", "optional": true}], []); +InspectorBackend.registerCommand("DOM.querySelector", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.querySelectorAll", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["nodeIds"]); +InspectorBackend.registerCommand("DOM.setNodeName", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.setNodeValue", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.removeNode", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.registerCommand("DOM.setAttributeValue", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.setAttributesAsText", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "text", "type": "string", "optional": false}, {"name": "name", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.removeAttribute", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.getEventListenersForNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["listeners"]); +InspectorBackend.registerCommand("DOM.getAccessibilityPropertiesForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["properties"]); +InspectorBackend.registerCommand("DOM.getOuterHTML", [{"name": "nodeId", "type": "number", "optional": false}], ["outerHTML"]); +InspectorBackend.registerCommand("DOM.setOuterHTML", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "outerHTML", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.performSearch", [{"name": "query", "type": "string", "optional": false}, {"name": "nodeIds", "type": "object", "optional": true}], ["searchId", "resultCount"]); +InspectorBackend.registerCommand("DOM.getSearchResults", [{"name": "searchId", "type": "string", "optional": false}, {"name": "fromIndex", "type": "number", "optional": false}, {"name": "toIndex", "type": "number", "optional": false}], ["nodeIds"]); +InspectorBackend.registerCommand("DOM.discardSearchResults", [{"name": "searchId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.requestNode", [{"name": "objectId", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.setInspectModeEnabled", [{"name": "enabled", "type": "boolean", "optional": false}, {"name": "highlightConfig", "type": "object", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightRect", [{"name": "x", "type": "number", "optional": false}, {"name": "y", "type": "number", "optional": false}, {"name": "width", "type": "number", "optional": false}, {"name": "height", "type": "number", "optional": false}, {"name": "color", "type": "object", "optional": true}, {"name": "outlineColor", "type": "object", "optional": true}, {"name": "usePageCoordinates", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightQuad", [{"name": "quad", "type": "object", "optional": false}, {"name": "color", "type": "object", "optional": true}, {"name": "outlineColor", "type": "object", "optional": true}, {"name": "usePageCoordinates", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightNode", [{"name": "highlightConfig", "type": "object", "optional": false}, {"name": "nodeId", "type": "number", "optional": true}, {"name": "objectId", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.hideHighlight", [], []); +InspectorBackend.registerCommand("DOM.highlightFrame", [{"name": "frameId", "type": "string", "optional": false}, {"name": "contentColor", "type": "object", "optional": true}, {"name": "contentOutlineColor", "type": "object", "optional": true}], []); +InspectorBackend.registerCommand("DOM.pushNodeByPathToFrontend", [{"name": "path", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.pushNodeByBackendIdToFrontend", [{"name": "backendNodeId", "type": "number", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.releaseBackendNodeIds", [{"name": "nodeGroup", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.resolveNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["object"]); +InspectorBackend.registerCommand("DOM.getAttributes", [{"name": "nodeId", "type": "number", "optional": false}], ["attributes"]); +InspectorBackend.registerCommand("DOM.moveTo", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "targetNodeId", "type": "number", "optional": false}, {"name": "insertBeforeNodeId", "type": "number", "optional": true}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.undo", [], []); +InspectorBackend.registerCommand("DOM.redo", [], []); +InspectorBackend.registerCommand("DOM.markUndoableState", [], []); +InspectorBackend.registerCommand("DOM.focus", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.activateDomain("DOM", "web"); + +// DOMDebugger. +InspectorBackend.registerEnum("DOMDebugger.DOMBreakpointType", {SubtreeModified: "subtree-modified", AttributeModified: "attribute-modified", NodeRemoved: "node-removed"}); +InspectorBackend.registerCommand("DOMDebugger.setDOMBreakpoint", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "type", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeDOMBreakpoint", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "type", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setEventListenerBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeEventListenerBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setInstrumentationBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeInstrumentationBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setXHRBreakpoint", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeXHRBreakpoint", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("DOMDebugger", "web"); + +// DOMStorage. +InspectorBackend.registerDOMStorageDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOMStorage"); +InspectorBackend.registerEvent("DOMStorage.domStorageItemsCleared", ["storageId"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemRemoved", ["storageId", "key"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemAdded", ["storageId", "key", "newValue"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemUpdated", ["storageId", "key", "oldValue", "newValue"]); +InspectorBackend.registerCommand("DOMStorage.enable", [], []); +InspectorBackend.registerCommand("DOMStorage.disable", [], []); +InspectorBackend.registerCommand("DOMStorage.getDOMStorageItems", [{"name": "storageId", "type": "object", "optional": false}], ["entries"]); +InspectorBackend.registerCommand("DOMStorage.setDOMStorageItem", [{"name": "storageId", "type": "object", "optional": false}, {"name": "key", "type": "string", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMStorage.removeDOMStorageItem", [{"name": "storageId", "type": "object", "optional": false}, {"name": "key", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("DOMStorage", "web"); + +// Database. +InspectorBackend.registerDatabaseDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Database"); +InspectorBackend.registerEvent("Database.addDatabase", ["database"]); +InspectorBackend.registerCommand("Database.enable", [], []); +InspectorBackend.registerCommand("Database.disable", [], []); +InspectorBackend.registerCommand("Database.getDatabaseTableNames", [{"name": "databaseId", "type": "string", "optional": false}], ["tableNames"]); +InspectorBackend.registerCommand("Database.executeSQL", [{"name": "databaseId", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}], ["columnNames", "values", "sqlError"]); +InspectorBackend.activateDomain("Database", "web"); + +// IndexedDB. +InspectorBackend.registerIndexedDBDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "IndexedDB"); +InspectorBackend.registerEnum("IndexedDB.KeyType", {Number: "number", String: "string", Date: "date", Array: "array"}); +InspectorBackend.registerEnum("IndexedDB.KeyPathType", {Null: "null", String: "string", Array: "array"}); +InspectorBackend.registerCommand("IndexedDB.enable", [], []); +InspectorBackend.registerCommand("IndexedDB.disable", [], []); +InspectorBackend.registerCommand("IndexedDB.requestDatabaseNames", [{"name": "securityOrigin", "type": "string", "optional": false}], ["databaseNames"]); +InspectorBackend.registerCommand("IndexedDB.requestDatabase", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}], ["databaseWithObjectStores"]); +InspectorBackend.registerCommand("IndexedDB.requestData", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}, {"name": "objectStoreName", "type": "string", "optional": false}, {"name": "indexName", "type": "string", "optional": false}, {"name": "skipCount", "type": "number", "optional": false}, {"name": "pageSize", "type": "number", "optional": false}, {"name": "keyRange", "type": "object", "optional": true}], ["objectStoreDataEntries", "hasMore"]); +InspectorBackend.registerCommand("IndexedDB.clearObjectStore", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}, {"name": "objectStoreName", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("IndexedDB", "web"); + +// LayerTree. +InspectorBackend.registerLayerTreeDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "LayerTree"); +InspectorBackend.registerEvent("LayerTree.layerTreeDidChange", []); +InspectorBackend.registerCommand("LayerTree.enable", [], []); +InspectorBackend.registerCommand("LayerTree.disable", [], []); +InspectorBackend.registerCommand("LayerTree.layersForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["layers"]); +InspectorBackend.registerCommand("LayerTree.reasonsForCompositingLayer", [{"name": "layerId", "type": "string", "optional": false}], ["compositingReasons"]); +InspectorBackend.activateDomain("LayerTree", "web"); + +// Network. +InspectorBackend.registerNetworkDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Network"); +InspectorBackend.registerEnum("Network.InitiatorType", {Parser: "parser", Script: "script", Other: "other"}); +InspectorBackend.registerEvent("Network.requestWillBeSent", ["requestId", "frameId", "loaderId", "documentURL", "request", "timestamp", "initiator", "redirectResponse", "type"]); +InspectorBackend.registerEvent("Network.requestServedFromCache", ["requestId"]); +InspectorBackend.registerEvent("Network.responseReceived", ["requestId", "frameId", "loaderId", "timestamp", "type", "response"]); +InspectorBackend.registerEvent("Network.dataReceived", ["requestId", "timestamp", "dataLength", "encodedDataLength"]); +InspectorBackend.registerEvent("Network.loadingFinished", ["requestId", "timestamp", "sourceMapURL"]); +InspectorBackend.registerEvent("Network.loadingFailed", ["requestId", "timestamp", "errorText", "canceled"]); +InspectorBackend.registerEvent("Network.requestServedFromMemoryCache", ["requestId", "frameId", "loaderId", "documentURL", "timestamp", "initiator", "resource"]); +InspectorBackend.registerEvent("Network.webSocketWillSendHandshakeRequest", ["requestId", "timestamp", "request"]); +InspectorBackend.registerEvent("Network.webSocketHandshakeResponseReceived", ["requestId", "timestamp", "response"]); +InspectorBackend.registerEvent("Network.webSocketCreated", ["requestId", "url"]); +InspectorBackend.registerEvent("Network.webSocketClosed", ["requestId", "timestamp"]); +InspectorBackend.registerEvent("Network.webSocketFrameReceived", ["requestId", "timestamp", "response"]); +InspectorBackend.registerEvent("Network.webSocketFrameError", ["requestId", "timestamp", "errorMessage"]); +InspectorBackend.registerEvent("Network.webSocketFrameSent", ["requestId", "timestamp", "response"]); +InspectorBackend.registerCommand("Network.enable", [], []); +InspectorBackend.registerCommand("Network.disable", [], []); +InspectorBackend.registerCommand("Network.setExtraHTTPHeaders", [{"name": "headers", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Network.getResponseBody", [{"name": "requestId", "type": "string", "optional": false}], ["body", "base64Encoded"]); +InspectorBackend.registerCommand("Network.setCacheDisabled", [{"name": "cacheDisabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Network.loadResource", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], ["content", "mimeType", "status"]); +InspectorBackend.activateDomain("Network", "web"); + +// Page. +InspectorBackend.registerPageDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Page"); +InspectorBackend.registerEnum("Page.ResourceType", {Document: "Document", Stylesheet: "Stylesheet", Image: "Image", Font: "Font", Script: "Script", XHR: "XHR", WebSocket: "WebSocket", Other: "Other"}); +InspectorBackend.registerEnum("Page.CoordinateSystem", {Viewport: "Viewport", Page: "Page"}); +InspectorBackend.registerEvent("Page.domContentEventFired", ["timestamp"]); +InspectorBackend.registerEvent("Page.loadEventFired", ["timestamp"]); +InspectorBackend.registerEvent("Page.frameNavigated", ["frame"]); +InspectorBackend.registerEvent("Page.frameDetached", ["frameId"]); +InspectorBackend.registerEvent("Page.frameStartedLoading", ["frameId"]); +InspectorBackend.registerEvent("Page.frameStoppedLoading", ["frameId"]); +InspectorBackend.registerEvent("Page.frameScheduledNavigation", ["frameId", "delay"]); +InspectorBackend.registerEvent("Page.frameClearedScheduledNavigation", ["frameId"]); +InspectorBackend.registerEvent("Page.javascriptDialogOpening", ["message"]); +InspectorBackend.registerEvent("Page.javascriptDialogClosed", []); +InspectorBackend.registerEvent("Page.scriptsEnabled", ["isEnabled"]); +InspectorBackend.registerCommand("Page.enable", [], []); +InspectorBackend.registerCommand("Page.disable", [], []); +InspectorBackend.registerCommand("Page.addScriptToEvaluateOnLoad", [{"name": "scriptSource", "type": "string", "optional": false}], ["identifier"]); +InspectorBackend.registerCommand("Page.removeScriptToEvaluateOnLoad", [{"name": "identifier", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.reload", [{"name": "ignoreCache", "type": "boolean", "optional": true}, {"name": "scriptToEvaluateOnLoad", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("Page.navigate", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getCookies", [], ["cookies"]); +InspectorBackend.registerCommand("Page.deleteCookie", [{"name": "cookieName", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getResourceTree", [], ["frameTree"]); +InspectorBackend.registerCommand("Page.getResourceContent", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], ["content", "base64Encoded"]); +InspectorBackend.registerCommand("Page.searchInResource", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Page.searchInResources", [{"name": "text", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Page.setDocumentContent", [{"name": "frameId", "type": "string", "optional": false}, {"name": "html", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getScriptExecutionStatus", [], ["result"]); +InspectorBackend.registerCommand("Page.setScriptExecutionDisabled", [{"name": "value", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.setEmulatedMedia", [{"name": "media", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getCompositingBordersVisible", [], ["result"]); +InspectorBackend.registerCommand("Page.setCompositingBordersVisible", [{"name": "visible", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.snapshotNode", [{"name": "nodeId", "type": "number", "optional": false}], ["dataURL"]); +InspectorBackend.registerCommand("Page.snapshotRect", [{"name": "x", "type": "number", "optional": false}, {"name": "y", "type": "number", "optional": false}, {"name": "width", "type": "number", "optional": false}, {"name": "height", "type": "number", "optional": false}, {"name": "coordinateSystem", "type": "string", "optional": false}], ["dataURL"]); +InspectorBackend.registerCommand("Page.archive", [], ["data"]); +InspectorBackend.activateDomain("Page", "web"); + +// Timeline. +InspectorBackend.registerTimelineDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Timeline"); +InspectorBackend.registerEnum("Timeline.EventType", {EventDispatch: "EventDispatch", ScheduleStyleRecalculation: "ScheduleStyleRecalculation", RecalculateStyles: "RecalculateStyles", InvalidateLayout: "InvalidateLayout", Layout: "Layout", Paint: "Paint", ResizeImage: "ResizeImage", ParseHTML: "ParseHTML", TimerInstall: "TimerInstall", TimerRemove: "TimerRemove", TimerFire: "TimerFire", EvaluateScript: "EvaluateScript", MarkLoad: "MarkLoad", MarkDOMContent: "MarkDOMContent", TimeStamp: "TimeStamp", Time: "Time", TimeEnd: "TimeEnd", ScheduleResourceRequest: "ScheduleResourceRequest", ResourceSendRequest: "ResourceSendRequest", ResourceReceiveResponse: "ResourceReceiveResponse", ResourceReceivedData: "ResourceReceivedData", ResourceFinish: "ResourceFinish", XHRReadyStateChange: "XHRReadyStateChange", XHRLoad: "XHRLoad", FunctionCall: "FunctionCall", ProbeSample: "ProbeSample", ConsoleProfile: "ConsoleProfile", RequestAnimationFrame: "RequestAnimationFrame", CancelAnimationFrame: "CancelAnimationFrame", FireAnimationFrame: "FireAnimationFrame", WebSocketCreate: "WebSocketCreate", WebSocketSendHandshakeRequest: "WebSocketSendHandshakeRequest", WebSocketReceiveHandshakeResponse: "WebSocketReceiveHandshakeResponse", WebSocketDestroy: "WebSocketDestroy"}); +InspectorBackend.registerEvent("Timeline.eventRecorded", ["record"]); +InspectorBackend.registerEvent("Timeline.recordingStarted", []); +InspectorBackend.registerEvent("Timeline.recordingStopped", []); +InspectorBackend.registerCommand("Timeline.start", [{"name": "maxCallStackDepth", "type": "number", "optional": true}], []); +InspectorBackend.registerCommand("Timeline.stop", [], []); +InspectorBackend.activateDomain("Timeline", "web"); diff --git a/Source/WebInspectorUI/UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js b/Source/WebInspectorUI/UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js new file mode 100644 index 000000000..479612412 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js @@ -0,0 +1,339 @@ +/* + * Copyright (C) 2013 Google Inc. All rights reserved. + * Copyright (C) 2013-2016 Apple Inc. All rights reserved. + * Copyright (C) 2014 University of Washington. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +// DO NOT EDIT THIS FILE. It is automatically generated from Inspector-iOS-9.0.json +// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py + +// ApplicationCache. +InspectorBackend.registerApplicationCacheDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "ApplicationCache"); +InspectorBackend.registerEvent("ApplicationCache.applicationCacheStatusUpdated", ["frameId", "manifestURL", "status"]); +InspectorBackend.registerEvent("ApplicationCache.networkStateUpdated", ["isNowOnline"]); +InspectorBackend.registerCommand("ApplicationCache.getFramesWithManifests", [], ["frameIds"]); +InspectorBackend.registerCommand("ApplicationCache.enable", [], []); +InspectorBackend.registerCommand("ApplicationCache.getManifestForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["manifestURL"]); +InspectorBackend.registerCommand("ApplicationCache.getApplicationCacheForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["applicationCache"]); +InspectorBackend.activateDomain("ApplicationCache", "web"); + +// CSS. +InspectorBackend.registerCSSDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "CSS"); +InspectorBackend.registerEnum("CSS.StyleSheetOrigin", {User: "user", UserAgent: "user-agent", Inspector: "inspector", Regular: "regular"}); +InspectorBackend.registerEnum("CSS.CSSPropertyStatus", {Active: "active", Inactive: "inactive", Disabled: "disabled", Style: "style"}); +InspectorBackend.registerEnum("CSS.CSSMediaSource", {MediaRule: "mediaRule", ImportRule: "importRule", LinkedSheet: "linkedSheet", InlineSheet: "inlineSheet"}); +InspectorBackend.registerEnum("CSS.RegionRegionOverset", {Overset: "overset", Fit: "fit", Empty: "empty"}); +InspectorBackend.registerEvent("CSS.mediaQueryResultChanged", []); +InspectorBackend.registerEvent("CSS.styleSheetChanged", ["styleSheetId"]); +InspectorBackend.registerEvent("CSS.namedFlowCreated", ["namedFlow"]); +InspectorBackend.registerEvent("CSS.namedFlowRemoved", ["documentNodeId", "flowName"]); +InspectorBackend.registerEvent("CSS.regionOversetChanged", ["namedFlow"]); +InspectorBackend.registerEvent("CSS.registeredNamedFlowContentElement", ["documentNodeId", "flowName", "contentNodeId", "nextContentNodeId"]); +InspectorBackend.registerEvent("CSS.unregisteredNamedFlowContentElement", ["documentNodeId", "flowName", "contentNodeId"]); +InspectorBackend.registerCommand("CSS.enable", [], []); +InspectorBackend.registerCommand("CSS.disable", [], []); +InspectorBackend.registerCommand("CSS.getMatchedStylesForNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "includePseudo", "type": "boolean", "optional": true}, {"name": "includeInherited", "type": "boolean", "optional": true}], ["matchedCSSRules", "pseudoElements", "inherited"]); +InspectorBackend.registerCommand("CSS.getInlineStylesForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["inlineStyle", "attributesStyle"]); +InspectorBackend.registerCommand("CSS.getComputedStyleForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["computedStyle"]); +InspectorBackend.registerCommand("CSS.getAllStyleSheets", [], ["headers"]); +InspectorBackend.registerCommand("CSS.getStyleSheet", [{"name": "styleSheetId", "type": "string", "optional": false}], ["styleSheet"]); +InspectorBackend.registerCommand("CSS.getStyleSheetText", [{"name": "styleSheetId", "type": "string", "optional": false}], ["text"]); +InspectorBackend.registerCommand("CSS.setStyleSheetText", [{"name": "styleSheetId", "type": "string", "optional": false}, {"name": "text", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("CSS.setStyleText", [{"name": "styleId", "type": "object", "optional": false}, {"name": "text", "type": "string", "optional": false}], ["style"]); +InspectorBackend.registerCommand("CSS.setRuleSelector", [{"name": "ruleId", "type": "object", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["rule"]); +InspectorBackend.registerCommand("CSS.addRule", [{"name": "contextNodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["rule"]); +InspectorBackend.registerCommand("CSS.getSupportedCSSProperties", [], ["cssProperties"]); +InspectorBackend.registerCommand("CSS.forcePseudoState", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "forcedPseudoClasses", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("CSS.getNamedFlowCollection", [{"name": "documentNodeId", "type": "number", "optional": false}], ["namedFlows"]); +InspectorBackend.activateDomain("CSS", "web"); + +// Console. +InspectorBackend.registerConsoleDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Console"); +InspectorBackend.registerEnum("Console.ConsoleMessageSource", {XML: "xml", Javascript: "javascript", Network: "network", ConsoleAPI: "console-api", Storage: "storage", Appcache: "appcache", Rendering: "rendering", CSS: "css", Security: "security", ContentBlocker: "content-blocker", Other: "other"}); +InspectorBackend.registerEnum("Console.ConsoleMessageLevel", {Log: "log", Info: "info", Warning: "warning", Error: "error", Debug: "debug"}); +InspectorBackend.registerEnum("Console.ConsoleMessageType", {Log: "log", Dir: "dir", DirXML: "dirxml", Table: "table", Trace: "trace", Clear: "clear", StartGroup: "startGroup", StartGroupCollapsed: "startGroupCollapsed", EndGroup: "endGroup", Assert: "assert", Timing: "timing", Profile: "profile", ProfileEnd: "profileEnd"}); +InspectorBackend.registerEvent("Console.messageAdded", ["message"]); +InspectorBackend.registerEvent("Console.messageRepeatCountUpdated", ["count"]); +InspectorBackend.registerEvent("Console.messagesCleared", []); +InspectorBackend.registerCommand("Console.enable", [], []); +InspectorBackend.registerCommand("Console.disable", [], []); +InspectorBackend.registerCommand("Console.clearMessages", [], []); +InspectorBackend.registerCommand("Console.setMonitoringXHREnabled", [{"name": "enabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Console.addInspectedNode", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.activateDomain("Console"); + +// DOM. +InspectorBackend.registerDOMDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOM"); +InspectorBackend.registerEnum("DOM.LiveRegionRelevant", {Additions: "additions", Removals: "removals", Text: "text"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesChecked", {True: "true", False: "false", Mixed: "mixed"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesInvalid", {True: "true", False: "false", Grammar: "grammar", Spelling: "spelling"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesLiveRegionStatus", {Assertive: "assertive", Polite: "polite", Off: "off"}); +InspectorBackend.registerEvent("DOM.documentUpdated", []); +InspectorBackend.registerEvent("DOM.setChildNodes", ["parentId", "nodes"]); +InspectorBackend.registerEvent("DOM.attributeModified", ["nodeId", "name", "value"]); +InspectorBackend.registerEvent("DOM.attributeRemoved", ["nodeId", "name"]); +InspectorBackend.registerEvent("DOM.inlineStyleInvalidated", ["nodeIds"]); +InspectorBackend.registerEvent("DOM.characterDataModified", ["nodeId", "characterData"]); +InspectorBackend.registerEvent("DOM.childNodeCountUpdated", ["nodeId", "childNodeCount"]); +InspectorBackend.registerEvent("DOM.childNodeInserted", ["parentNodeId", "previousNodeId", "node"]); +InspectorBackend.registerEvent("DOM.childNodeRemoved", ["parentNodeId", "nodeId"]); +InspectorBackend.registerEvent("DOM.shadowRootPushed", ["hostId", "root"]); +InspectorBackend.registerEvent("DOM.shadowRootPopped", ["hostId", "rootId"]); +InspectorBackend.registerCommand("DOM.getDocument", [], ["root"]); +InspectorBackend.registerCommand("DOM.requestChildNodes", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "depth", "type": "number", "optional": true}], []); +InspectorBackend.registerCommand("DOM.querySelector", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.querySelectorAll", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["nodeIds"]); +InspectorBackend.registerCommand("DOM.setNodeName", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.setNodeValue", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.removeNode", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.registerCommand("DOM.setAttributeValue", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.setAttributesAsText", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "text", "type": "string", "optional": false}, {"name": "name", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.removeAttribute", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.getEventListenersForNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["listeners"]); +InspectorBackend.registerCommand("DOM.getAccessibilityPropertiesForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["properties"]); +InspectorBackend.registerCommand("DOM.getOuterHTML", [{"name": "nodeId", "type": "number", "optional": false}], ["outerHTML"]); +InspectorBackend.registerCommand("DOM.setOuterHTML", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "outerHTML", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.performSearch", [{"name": "query", "type": "string", "optional": false}, {"name": "nodeIds", "type": "object", "optional": true}], ["searchId", "resultCount"]); +InspectorBackend.registerCommand("DOM.getSearchResults", [{"name": "searchId", "type": "string", "optional": false}, {"name": "fromIndex", "type": "number", "optional": false}, {"name": "toIndex", "type": "number", "optional": false}], ["nodeIds"]); +InspectorBackend.registerCommand("DOM.discardSearchResults", [{"name": "searchId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.requestNode", [{"name": "objectId", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.setInspectModeEnabled", [{"name": "enabled", "type": "boolean", "optional": false}, {"name": "highlightConfig", "type": "object", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightRect", [{"name": "x", "type": "number", "optional": false}, {"name": "y", "type": "number", "optional": false}, {"name": "width", "type": "number", "optional": false}, {"name": "height", "type": "number", "optional": false}, {"name": "color", "type": "object", "optional": true}, {"name": "outlineColor", "type": "object", "optional": true}, {"name": "usePageCoordinates", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightQuad", [{"name": "quad", "type": "object", "optional": false}, {"name": "color", "type": "object", "optional": true}, {"name": "outlineColor", "type": "object", "optional": true}, {"name": "usePageCoordinates", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightSelector", [{"name": "highlightConfig", "type": "object", "optional": false}, {"name": "selectorString", "type": "string", "optional": false}, {"name": "frameId", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightNode", [{"name": "highlightConfig", "type": "object", "optional": false}, {"name": "nodeId", "type": "number", "optional": true}, {"name": "objectId", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.hideHighlight", [], []); +InspectorBackend.registerCommand("DOM.highlightFrame", [{"name": "frameId", "type": "string", "optional": false}, {"name": "contentColor", "type": "object", "optional": true}, {"name": "contentOutlineColor", "type": "object", "optional": true}], []); +InspectorBackend.registerCommand("DOM.pushNodeByPathToFrontend", [{"name": "path", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.pushNodeByBackendIdToFrontend", [{"name": "backendNodeId", "type": "number", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.releaseBackendNodeIds", [{"name": "nodeGroup", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.resolveNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["object"]); +InspectorBackend.registerCommand("DOM.getAttributes", [{"name": "nodeId", "type": "number", "optional": false}], ["attributes"]); +InspectorBackend.registerCommand("DOM.moveTo", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "targetNodeId", "type": "number", "optional": false}, {"name": "insertBeforeNodeId", "type": "number", "optional": true}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.undo", [], []); +InspectorBackend.registerCommand("DOM.redo", [], []); +InspectorBackend.registerCommand("DOM.markUndoableState", [], []); +InspectorBackend.registerCommand("DOM.focus", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.activateDomain("DOM", "web"); + +// DOMDebugger. +InspectorBackend.registerEnum("DOMDebugger.DOMBreakpointType", {SubtreeModified: "subtree-modified", AttributeModified: "attribute-modified", NodeRemoved: "node-removed"}); +InspectorBackend.registerCommand("DOMDebugger.setDOMBreakpoint", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "type", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeDOMBreakpoint", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "type", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setEventListenerBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeEventListenerBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setInstrumentationBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeInstrumentationBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setXHRBreakpoint", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeXHRBreakpoint", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("DOMDebugger", "web"); + +// DOMStorage. +InspectorBackend.registerDOMStorageDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOMStorage"); +InspectorBackend.registerEvent("DOMStorage.domStorageItemsCleared", ["storageId"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemRemoved", ["storageId", "key"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemAdded", ["storageId", "key", "newValue"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemUpdated", ["storageId", "key", "oldValue", "newValue"]); +InspectorBackend.registerCommand("DOMStorage.enable", [], []); +InspectorBackend.registerCommand("DOMStorage.disable", [], []); +InspectorBackend.registerCommand("DOMStorage.getDOMStorageItems", [{"name": "storageId", "type": "object", "optional": false}], ["entries"]); +InspectorBackend.registerCommand("DOMStorage.setDOMStorageItem", [{"name": "storageId", "type": "object", "optional": false}, {"name": "key", "type": "string", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMStorage.removeDOMStorageItem", [{"name": "storageId", "type": "object", "optional": false}, {"name": "key", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("DOMStorage", "web"); + +// Database. +InspectorBackend.registerDatabaseDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Database"); +InspectorBackend.registerEvent("Database.addDatabase", ["database"]); +InspectorBackend.registerCommand("Database.enable", [], []); +InspectorBackend.registerCommand("Database.disable", [], []); +InspectorBackend.registerCommand("Database.getDatabaseTableNames", [{"name": "databaseId", "type": "string", "optional": false}], ["tableNames"]); +InspectorBackend.registerCommand("Database.executeSQL", [{"name": "databaseId", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}], ["columnNames", "values", "sqlError"]); +InspectorBackend.activateDomain("Database", "web"); + +// Debugger. +InspectorBackend.registerDebuggerDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Debugger"); +InspectorBackend.registerEnum("Debugger.BreakpointActionType", {Log: "log", Evaluate: "evaluate", Sound: "sound", Probe: "probe"}); +InspectorBackend.registerEnum("Debugger.ScopeType", {Global: "global", Local: "local", With: "with", Closure: "closure", Catch: "catch", FunctionName: "functionName"}); +InspectorBackend.registerEvent("Debugger.globalObjectCleared", []); +InspectorBackend.registerEvent("Debugger.scriptParsed", ["scriptId", "url", "startLine", "startColumn", "endLine", "endColumn", "isContentScript", "sourceMapURL", "hasSourceURL"]); +InspectorBackend.registerEvent("Debugger.scriptFailedToParse", ["url", "scriptSource", "startLine", "errorLine", "errorMessage"]); +InspectorBackend.registerEvent("Debugger.breakpointResolved", ["breakpointId", "location"]); +InspectorBackend.registerEnum("Debugger.PausedReason", {XHR: "XHR", DOM: "DOM", EventListener: "EventListener", Exception: "exception", Assert: "assert", CSPViolation: "CSPViolation", DebuggerStatement: "DebuggerStatement", Breakpoint: "Breakpoint", PauseOnNextStatement: "PauseOnNextStatement", Other: "other"}); +InspectorBackend.registerEvent("Debugger.paused", ["callFrames", "reason", "data"]); +InspectorBackend.registerEvent("Debugger.resumed", []); +InspectorBackend.registerEvent("Debugger.didSampleProbe", ["sample"]); +InspectorBackend.registerEvent("Debugger.playBreakpointActionSound", ["breakpointActionId"]); +InspectorBackend.registerCommand("Debugger.enable", [], []); +InspectorBackend.registerCommand("Debugger.disable", [], []); +InspectorBackend.registerCommand("Debugger.setBreakpointsActive", [{"name": "active", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.setBreakpointByUrl", [{"name": "lineNumber", "type": "number", "optional": false}, {"name": "url", "type": "string", "optional": true}, {"name": "urlRegex", "type": "string", "optional": true}, {"name": "columnNumber", "type": "number", "optional": true}, {"name": "options", "type": "object", "optional": true}], ["breakpointId", "locations"]); +InspectorBackend.registerCommand("Debugger.setBreakpoint", [{"name": "location", "type": "object", "optional": false}, {"name": "options", "type": "object", "optional": true}], ["breakpointId", "actualLocation"]); +InspectorBackend.registerCommand("Debugger.removeBreakpoint", [{"name": "breakpointId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.continueToLocation", [{"name": "location", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.stepOver", [], []); +InspectorBackend.registerCommand("Debugger.stepInto", [], []); +InspectorBackend.registerCommand("Debugger.stepOut", [], []); +InspectorBackend.registerCommand("Debugger.pause", [], []); +InspectorBackend.registerCommand("Debugger.resume", [], []); +InspectorBackend.registerCommand("Debugger.searchInContent", [{"name": "scriptId", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Debugger.getScriptSource", [{"name": "scriptId", "type": "string", "optional": false}], ["scriptSource"]); +InspectorBackend.registerCommand("Debugger.getFunctionDetails", [{"name": "functionId", "type": "string", "optional": false}], ["details"]); +InspectorBackend.registerCommand("Debugger.setPauseOnExceptions", [{"name": "state", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.evaluateOnCallFrame", [{"name": "callFrameId", "type": "string", "optional": false}, {"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}, {"name": "saveResult", "type": "boolean", "optional": true}], ["result", "wasThrown", "savedResultIndex"]); +InspectorBackend.registerCommand("Debugger.setOverlayMessage", [{"name": "message", "type": "string", "optional": true}], []); +InspectorBackend.activateDomain("Debugger"); + +// IndexedDB. +InspectorBackend.registerIndexedDBDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "IndexedDB"); +InspectorBackend.registerEnum("IndexedDB.KeyType", {Number: "number", String: "string", Date: "date", Array: "array"}); +InspectorBackend.registerEnum("IndexedDB.KeyPathType", {Null: "null", String: "string", Array: "array"}); +InspectorBackend.registerCommand("IndexedDB.enable", [], []); +InspectorBackend.registerCommand("IndexedDB.disable", [], []); +InspectorBackend.registerCommand("IndexedDB.requestDatabaseNames", [{"name": "securityOrigin", "type": "string", "optional": false}], ["databaseNames"]); +InspectorBackend.registerCommand("IndexedDB.requestDatabase", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}], ["databaseWithObjectStores"]); +InspectorBackend.registerCommand("IndexedDB.requestData", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}, {"name": "objectStoreName", "type": "string", "optional": false}, {"name": "indexName", "type": "string", "optional": false}, {"name": "skipCount", "type": "number", "optional": false}, {"name": "pageSize", "type": "number", "optional": false}, {"name": "keyRange", "type": "object", "optional": true}], ["objectStoreDataEntries", "hasMore"]); +InspectorBackend.registerCommand("IndexedDB.clearObjectStore", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}, {"name": "objectStoreName", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("IndexedDB", "web"); + +// Inspector. +InspectorBackend.registerInspectorDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Inspector"); +InspectorBackend.registerEvent("Inspector.evaluateForTestInFrontend", ["script"]); +InspectorBackend.registerEvent("Inspector.inspect", ["object", "hints"]); +InspectorBackend.registerEvent("Inspector.detached", ["reason"]); +InspectorBackend.registerEvent("Inspector.activateExtraDomains", ["domains"]); +InspectorBackend.registerEvent("Inspector.targetCrashed", []); +InspectorBackend.registerCommand("Inspector.enable", [], []); +InspectorBackend.registerCommand("Inspector.disable", [], []); +InspectorBackend.registerCommand("Inspector.initialized", [], []); +InspectorBackend.activateDomain("Inspector"); + +// LayerTree. +InspectorBackend.registerLayerTreeDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "LayerTree"); +InspectorBackend.registerEvent("LayerTree.layerTreeDidChange", []); +InspectorBackend.registerCommand("LayerTree.enable", [], []); +InspectorBackend.registerCommand("LayerTree.disable", [], []); +InspectorBackend.registerCommand("LayerTree.layersForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["layers"]); +InspectorBackend.registerCommand("LayerTree.reasonsForCompositingLayer", [{"name": "layerId", "type": "string", "optional": false}], ["compositingReasons"]); +InspectorBackend.activateDomain("LayerTree", "web"); + +// Network. +InspectorBackend.registerNetworkDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Network"); +InspectorBackend.registerEnum("Network.InitiatorType", {Parser: "parser", Script: "script", Other: "other"}); +InspectorBackend.registerEvent("Network.requestWillBeSent", ["requestId", "frameId", "loaderId", "documentURL", "request", "timestamp", "initiator", "redirectResponse", "type"]); +InspectorBackend.registerEvent("Network.requestServedFromCache", ["requestId"]); +InspectorBackend.registerEvent("Network.responseReceived", ["requestId", "frameId", "loaderId", "timestamp", "type", "response"]); +InspectorBackend.registerEvent("Network.dataReceived", ["requestId", "timestamp", "dataLength", "encodedDataLength"]); +InspectorBackend.registerEvent("Network.loadingFinished", ["requestId", "timestamp", "sourceMapURL"]); +InspectorBackend.registerEvent("Network.loadingFailed", ["requestId", "timestamp", "errorText", "canceled"]); +InspectorBackend.registerEvent("Network.requestServedFromMemoryCache", ["requestId", "frameId", "loaderId", "documentURL", "timestamp", "initiator", "resource"]); +InspectorBackend.registerEvent("Network.webSocketWillSendHandshakeRequest", ["requestId", "timestamp", "request"]); +InspectorBackend.registerEvent("Network.webSocketHandshakeResponseReceived", ["requestId", "timestamp", "response"]); +InspectorBackend.registerEvent("Network.webSocketCreated", ["requestId", "url"]); +InspectorBackend.registerEvent("Network.webSocketClosed", ["requestId", "timestamp"]); +InspectorBackend.registerEvent("Network.webSocketFrameReceived", ["requestId", "timestamp", "response"]); +InspectorBackend.registerEvent("Network.webSocketFrameError", ["requestId", "timestamp", "errorMessage"]); +InspectorBackend.registerEvent("Network.webSocketFrameSent", ["requestId", "timestamp", "response"]); +InspectorBackend.registerCommand("Network.enable", [], []); +InspectorBackend.registerCommand("Network.disable", [], []); +InspectorBackend.registerCommand("Network.setExtraHTTPHeaders", [{"name": "headers", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Network.getResponseBody", [{"name": "requestId", "type": "string", "optional": false}], ["body", "base64Encoded"]); +InspectorBackend.registerCommand("Network.setCacheDisabled", [{"name": "cacheDisabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Network.loadResource", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], ["content", "mimeType", "status"]); +InspectorBackend.activateDomain("Network", "web"); + +// Page. +InspectorBackend.registerPageDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Page"); +InspectorBackend.registerEnum("Page.ResourceType", {Document: "Document", Stylesheet: "Stylesheet", Image: "Image", Font: "Font", Script: "Script", XHR: "XHR", WebSocket: "WebSocket", Other: "Other"}); +InspectorBackend.registerEnum("Page.CoordinateSystem", {Viewport: "Viewport", Page: "Page"}); +InspectorBackend.registerEvent("Page.domContentEventFired", ["timestamp"]); +InspectorBackend.registerEvent("Page.loadEventFired", ["timestamp"]); +InspectorBackend.registerEvent("Page.frameNavigated", ["frame"]); +InspectorBackend.registerEvent("Page.frameDetached", ["frameId"]); +InspectorBackend.registerEvent("Page.frameStartedLoading", ["frameId"]); +InspectorBackend.registerEvent("Page.frameStoppedLoading", ["frameId"]); +InspectorBackend.registerEvent("Page.frameScheduledNavigation", ["frameId", "delay"]); +InspectorBackend.registerEvent("Page.frameClearedScheduledNavigation", ["frameId"]); +InspectorBackend.registerEvent("Page.javascriptDialogOpening", ["message"]); +InspectorBackend.registerEvent("Page.javascriptDialogClosed", []); +InspectorBackend.registerEvent("Page.scriptsEnabled", ["isEnabled"]); +InspectorBackend.registerCommand("Page.enable", [], []); +InspectorBackend.registerCommand("Page.disable", [], []); +InspectorBackend.registerCommand("Page.addScriptToEvaluateOnLoad", [{"name": "scriptSource", "type": "string", "optional": false}], ["identifier"]); +InspectorBackend.registerCommand("Page.removeScriptToEvaluateOnLoad", [{"name": "identifier", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.reload", [{"name": "ignoreCache", "type": "boolean", "optional": true}, {"name": "scriptToEvaluateOnLoad", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("Page.navigate", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getCookies", [], ["cookies"]); +InspectorBackend.registerCommand("Page.deleteCookie", [{"name": "cookieName", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getResourceTree", [], ["frameTree"]); +InspectorBackend.registerCommand("Page.getResourceContent", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], ["content", "base64Encoded"]); +InspectorBackend.registerCommand("Page.searchInResource", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Page.searchInResources", [{"name": "text", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Page.setDocumentContent", [{"name": "frameId", "type": "string", "optional": false}, {"name": "html", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.setShowPaintRects", [{"name": "result", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.getScriptExecutionStatus", [], ["result"]); +InspectorBackend.registerCommand("Page.setScriptExecutionDisabled", [{"name": "value", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.setEmulatedMedia", [{"name": "media", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getCompositingBordersVisible", [], ["result"]); +InspectorBackend.registerCommand("Page.setCompositingBordersVisible", [{"name": "visible", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.snapshotNode", [{"name": "nodeId", "type": "number", "optional": false}], ["dataURL"]); +InspectorBackend.registerCommand("Page.snapshotRect", [{"name": "x", "type": "number", "optional": false}, {"name": "y", "type": "number", "optional": false}, {"name": "width", "type": "number", "optional": false}, {"name": "height", "type": "number", "optional": false}, {"name": "coordinateSystem", "type": "string", "optional": false}], ["dataURL"]); +InspectorBackend.registerCommand("Page.archive", [], ["data"]); +InspectorBackend.activateDomain("Page", "web"); + +// Runtime. +InspectorBackend.registerRuntimeDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Runtime"); +InspectorBackend.registerEnum("Runtime.RemoteObjectType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean", Symbol: "symbol"}); +InspectorBackend.registerEnum("Runtime.RemoteObjectSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date", Error: "error", Map: "map", Set: "set", Weakmap: "weakmap", Weakset: "weakset", Iterator: "iterator", Class: "class"}); +InspectorBackend.registerEnum("Runtime.ObjectPreviewType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean", Symbol: "symbol"}); +InspectorBackend.registerEnum("Runtime.ObjectPreviewSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date", Error: "error", Map: "map", Set: "set", Weakmap: "weakmap", Weakset: "weakset", Iterator: "iterator", Class: "class"}); +InspectorBackend.registerEnum("Runtime.PropertyPreviewType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean", Symbol: "symbol", Accessor: "accessor"}); +InspectorBackend.registerEnum("Runtime.PropertyPreviewSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date", Error: "error", Map: "map", Set: "set", Weakmap: "weakmap", Weakset: "weakset", Iterator: "iterator", Class: "class"}); +InspectorBackend.registerEnum("Runtime.SyntaxErrorType", {None: "none", Irrecoverable: "irrecoverable", UnterminatedLiteral: "unterminated-literal", Recoverable: "recoverable"}); +InspectorBackend.registerEvent("Runtime.executionContextCreated", ["context"]); +InspectorBackend.registerCommand("Runtime.parse", [{"name": "source", "type": "string", "optional": false}], ["result", "message", "range"]); +InspectorBackend.registerCommand("Runtime.evaluate", [{"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "contextId", "type": "number", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}, {"name": "saveResult", "type": "boolean", "optional": true}], ["result", "wasThrown", "savedResultIndex"]); +InspectorBackend.registerCommand("Runtime.callFunctionOn", [{"name": "objectId", "type": "string", "optional": false}, {"name": "functionDeclaration", "type": "string", "optional": false}, {"name": "arguments", "type": "object", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "wasThrown"]); +InspectorBackend.registerCommand("Runtime.getProperties", [{"name": "objectId", "type": "string", "optional": false}, {"name": "ownProperties", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "internalProperties"]); +InspectorBackend.registerCommand("Runtime.getDisplayableProperties", [{"name": "objectId", "type": "string", "optional": false}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["properties", "internalProperties"]); +InspectorBackend.registerCommand("Runtime.getCollectionEntries", [{"name": "objectId", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "startIndex", "type": "number", "optional": true}, {"name": "numberToFetch", "type": "number", "optional": true}], ["entries"]); +InspectorBackend.registerCommand("Runtime.saveResult", [{"name": "value", "type": "object", "optional": false}, {"name": "contextId", "type": "number", "optional": true}], ["savedResultIndex"]); +InspectorBackend.registerCommand("Runtime.releaseObject", [{"name": "objectId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Runtime.releaseObjectGroup", [{"name": "objectGroup", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Runtime.enable", [], []); +InspectorBackend.registerCommand("Runtime.disable", [], []); +InspectorBackend.registerCommand("Runtime.getRuntimeTypesForVariablesAtOffsets", [{"name": "locations", "type": "object", "optional": false}], ["types"]); +InspectorBackend.registerCommand("Runtime.enableTypeProfiler", [], []); +InspectorBackend.registerCommand("Runtime.disableTypeProfiler", [], []); +InspectorBackend.registerCommand("Runtime.getBasicBlocks", [{"name": "sourceID", "type": "string", "optional": false}], ["basicBlocks"]); +InspectorBackend.activateDomain("Runtime"); + +// Timeline. +InspectorBackend.registerTimelineDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Timeline"); +InspectorBackend.registerEnum("Timeline.EventType", {EventDispatch: "EventDispatch", ScheduleStyleRecalculation: "ScheduleStyleRecalculation", RecalculateStyles: "RecalculateStyles", InvalidateLayout: "InvalidateLayout", Layout: "Layout", Paint: "Paint", Composite: "Composite", RenderingFrame: "RenderingFrame", ParseHTML: "ParseHTML", TimerInstall: "TimerInstall", TimerRemove: "TimerRemove", TimerFire: "TimerFire", EvaluateScript: "EvaluateScript", MarkLoad: "MarkLoad", MarkDOMContent: "MarkDOMContent", TimeStamp: "TimeStamp", Time: "Time", TimeEnd: "TimeEnd", XHRReadyStateChange: "XHRReadyStateChange", XHRLoad: "XHRLoad", FunctionCall: "FunctionCall", ProbeSample: "ProbeSample", ConsoleProfile: "ConsoleProfile", RequestAnimationFrame: "RequestAnimationFrame", CancelAnimationFrame: "CancelAnimationFrame", FireAnimationFrame: "FireAnimationFrame", WebSocketCreate: "WebSocketCreate", WebSocketSendHandshakeRequest: "WebSocketSendHandshakeRequest", WebSocketReceiveHandshakeResponse: "WebSocketReceiveHandshakeResponse", WebSocketDestroy: "WebSocketDestroy"}); +InspectorBackend.registerEvent("Timeline.eventRecorded", ["record"]); +InspectorBackend.registerEvent("Timeline.recordingStarted", []); +InspectorBackend.registerEvent("Timeline.recordingStopped", []); +InspectorBackend.registerCommand("Timeline.start", [{"name": "maxCallStackDepth", "type": "number", "optional": true}], []); +InspectorBackend.registerCommand("Timeline.stop", [], []); +InspectorBackend.activateDomain("Timeline", "web"); diff --git a/Source/WebInspectorUI/UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js b/Source/WebInspectorUI/UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js new file mode 100644 index 000000000..00af6665a --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js @@ -0,0 +1,366 @@ +/* + * Copyright (C) 2013 Google Inc. All rights reserved. + * Copyright (C) 2013-2016 Apple Inc. All rights reserved. + * Copyright (C) 2014 University of Washington. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +// DO NOT EDIT THIS FILE. It is automatically generated from Inspector-iOS-9.3.json +// by the script: Source/JavaScriptCore/inspector/scripts/generate-inspector-protocol-bindings.py + +// ApplicationCache. +InspectorBackend.registerApplicationCacheDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "ApplicationCache"); +InspectorBackend.registerEvent("ApplicationCache.applicationCacheStatusUpdated", ["frameId", "manifestURL", "status"]); +InspectorBackend.registerEvent("ApplicationCache.networkStateUpdated", ["isNowOnline"]); +InspectorBackend.registerCommand("ApplicationCache.getFramesWithManifests", [], ["frameIds"]); +InspectorBackend.registerCommand("ApplicationCache.enable", [], []); +InspectorBackend.registerCommand("ApplicationCache.getManifestForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["manifestURL"]); +InspectorBackend.registerCommand("ApplicationCache.getApplicationCacheForFrame", [{"name": "frameId", "type": "string", "optional": false}], ["applicationCache"]); +InspectorBackend.activateDomain("ApplicationCache", "web"); + +// CSS. +InspectorBackend.registerCSSDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "CSS"); +InspectorBackend.registerEnum("CSS.StyleSheetOrigin", {User: "user", UserAgent: "user-agent", Inspector: "inspector", Regular: "regular"}); +InspectorBackend.registerEnum("CSS.CSSPropertyStatus", {Active: "active", Inactive: "inactive", Disabled: "disabled", Style: "style"}); +InspectorBackend.registerEnum("CSS.CSSMediaSource", {MediaRule: "mediaRule", ImportRule: "importRule", LinkedSheet: "linkedSheet", InlineSheet: "inlineSheet"}); +InspectorBackend.registerEnum("CSS.RegionRegionOverset", {Overset: "overset", Fit: "fit", Empty: "empty"}); +InspectorBackend.registerEvent("CSS.mediaQueryResultChanged", []); +InspectorBackend.registerEvent("CSS.styleSheetChanged", ["styleSheetId"]); +InspectorBackend.registerEvent("CSS.styleSheetAdded", ["header"]); +InspectorBackend.registerEvent("CSS.styleSheetRemoved", ["styleSheetId"]); +InspectorBackend.registerEvent("CSS.namedFlowCreated", ["namedFlow"]); +InspectorBackend.registerEvent("CSS.namedFlowRemoved", ["documentNodeId", "flowName"]); +InspectorBackend.registerEvent("CSS.regionOversetChanged", ["namedFlow"]); +InspectorBackend.registerEvent("CSS.registeredNamedFlowContentElement", ["documentNodeId", "flowName", "contentNodeId", "nextContentNodeId"]); +InspectorBackend.registerEvent("CSS.unregisteredNamedFlowContentElement", ["documentNodeId", "flowName", "contentNodeId"]); +InspectorBackend.registerCommand("CSS.enable", [], []); +InspectorBackend.registerCommand("CSS.disable", [], []); +InspectorBackend.registerCommand("CSS.getMatchedStylesForNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "includePseudo", "type": "boolean", "optional": true}, {"name": "includeInherited", "type": "boolean", "optional": true}], ["matchedCSSRules", "pseudoElements", "inherited"]); +InspectorBackend.registerCommand("CSS.getInlineStylesForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["inlineStyle", "attributesStyle"]); +InspectorBackend.registerCommand("CSS.getComputedStyleForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["computedStyle"]); +InspectorBackend.registerCommand("CSS.getAllStyleSheets", [], ["headers"]); +InspectorBackend.registerCommand("CSS.getStyleSheet", [{"name": "styleSheetId", "type": "string", "optional": false}], ["styleSheet"]); +InspectorBackend.registerCommand("CSS.getStyleSheetText", [{"name": "styleSheetId", "type": "string", "optional": false}], ["text"]); +InspectorBackend.registerCommand("CSS.setStyleSheetText", [{"name": "styleSheetId", "type": "string", "optional": false}, {"name": "text", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("CSS.setStyleText", [{"name": "styleId", "type": "object", "optional": false}, {"name": "text", "type": "string", "optional": false}], ["style"]); +InspectorBackend.registerCommand("CSS.setRuleSelector", [{"name": "ruleId", "type": "object", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["rule"]); +InspectorBackend.registerCommand("CSS.createStyleSheet", [{"name": "frameId", "type": "string", "optional": false}], ["styleSheetId"]); +InspectorBackend.registerCommand("CSS.addRule", [{"name": "styleSheetId", "type": "string", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["rule"]); +InspectorBackend.registerCommand("CSS.getSupportedCSSProperties", [], ["cssProperties"]); +InspectorBackend.registerCommand("CSS.getSupportedSystemFontFamilyNames", [], ["fontFamilyNames"]); +InspectorBackend.registerCommand("CSS.forcePseudoState", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "forcedPseudoClasses", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("CSS.getNamedFlowCollection", [{"name": "documentNodeId", "type": "number", "optional": false}], ["namedFlows"]); +InspectorBackend.activateDomain("CSS", "web"); + +// Console. +InspectorBackend.registerConsoleDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Console"); +InspectorBackend.registerEnum("Console.ConsoleMessageSource", {XML: "xml", Javascript: "javascript", Network: "network", ConsoleAPI: "console-api", Storage: "storage", Appcache: "appcache", Rendering: "rendering", CSS: "css", Security: "security", ContentBlocker: "content-blocker", Other: "other"}); +InspectorBackend.registerEnum("Console.ConsoleMessageLevel", {Log: "log", Info: "info", Warning: "warning", Error: "error", Debug: "debug"}); +InspectorBackend.registerEnum("Console.ConsoleMessageType", {Log: "log", Dir: "dir", DirXML: "dirxml", Table: "table", Trace: "trace", Clear: "clear", StartGroup: "startGroup", StartGroupCollapsed: "startGroupCollapsed", EndGroup: "endGroup", Assert: "assert", Timing: "timing", Profile: "profile", ProfileEnd: "profileEnd"}); +InspectorBackend.registerEvent("Console.messageAdded", ["message"]); +InspectorBackend.registerEvent("Console.messageRepeatCountUpdated", ["count"]); +InspectorBackend.registerEvent("Console.messagesCleared", []); +InspectorBackend.registerCommand("Console.enable", [], []); +InspectorBackend.registerCommand("Console.disable", [], []); +InspectorBackend.registerCommand("Console.clearMessages", [], []); +InspectorBackend.registerCommand("Console.setMonitoringXHREnabled", [{"name": "enabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Console.addInspectedNode", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.activateDomain("Console"); + +// DOM. +InspectorBackend.registerDOMDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOM"); +InspectorBackend.registerEnum("DOM.PseudoType", {Before: "before", After: "after"}); +InspectorBackend.registerEnum("DOM.LiveRegionRelevant", {Additions: "additions", Removals: "removals", Text: "text"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesChecked", {True: "true", False: "false", Mixed: "mixed"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesInvalid", {True: "true", False: "false", Grammar: "grammar", Spelling: "spelling"}); +InspectorBackend.registerEnum("DOM.AccessibilityPropertiesLiveRegionStatus", {Assertive: "assertive", Polite: "polite", Off: "off"}); +InspectorBackend.registerEvent("DOM.documentUpdated", []); +InspectorBackend.registerEvent("DOM.setChildNodes", ["parentId", "nodes"]); +InspectorBackend.registerEvent("DOM.attributeModified", ["nodeId", "name", "value"]); +InspectorBackend.registerEvent("DOM.attributeRemoved", ["nodeId", "name"]); +InspectorBackend.registerEvent("DOM.inlineStyleInvalidated", ["nodeIds"]); +InspectorBackend.registerEvent("DOM.characterDataModified", ["nodeId", "characterData"]); +InspectorBackend.registerEvent("DOM.childNodeCountUpdated", ["nodeId", "childNodeCount"]); +InspectorBackend.registerEvent("DOM.childNodeInserted", ["parentNodeId", "previousNodeId", "node"]); +InspectorBackend.registerEvent("DOM.childNodeRemoved", ["parentNodeId", "nodeId"]); +InspectorBackend.registerEvent("DOM.shadowRootPushed", ["hostId", "root"]); +InspectorBackend.registerEvent("DOM.shadowRootPopped", ["hostId", "rootId"]); +InspectorBackend.registerEvent("DOM.pseudoElementAdded", ["parentId", "pseudoElement"]); +InspectorBackend.registerEvent("DOM.pseudoElementRemoved", ["parentId", "pseudoElementId"]); +InspectorBackend.registerCommand("DOM.getDocument", [], ["root"]); +InspectorBackend.registerCommand("DOM.requestChildNodes", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "depth", "type": "number", "optional": true}], []); +InspectorBackend.registerCommand("DOM.querySelector", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.querySelectorAll", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "selector", "type": "string", "optional": false}], ["nodeIds"]); +InspectorBackend.registerCommand("DOM.setNodeName", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.setNodeValue", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.removeNode", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.registerCommand("DOM.setAttributeValue", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.setAttributesAsText", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "text", "type": "string", "optional": false}, {"name": "name", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.removeAttribute", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "name", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.getEventListenersForNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["listeners"]); +InspectorBackend.registerCommand("DOM.getAccessibilityPropertiesForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["properties"]); +InspectorBackend.registerCommand("DOM.getOuterHTML", [{"name": "nodeId", "type": "number", "optional": false}], ["outerHTML"]); +InspectorBackend.registerCommand("DOM.setOuterHTML", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "outerHTML", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.performSearch", [{"name": "query", "type": "string", "optional": false}, {"name": "nodeIds", "type": "object", "optional": true}], ["searchId", "resultCount"]); +InspectorBackend.registerCommand("DOM.getSearchResults", [{"name": "searchId", "type": "string", "optional": false}, {"name": "fromIndex", "type": "number", "optional": false}, {"name": "toIndex", "type": "number", "optional": false}], ["nodeIds"]); +InspectorBackend.registerCommand("DOM.discardSearchResults", [{"name": "searchId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.requestNode", [{"name": "objectId", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.setInspectModeEnabled", [{"name": "enabled", "type": "boolean", "optional": false}, {"name": "highlightConfig", "type": "object", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightRect", [{"name": "x", "type": "number", "optional": false}, {"name": "y", "type": "number", "optional": false}, {"name": "width", "type": "number", "optional": false}, {"name": "height", "type": "number", "optional": false}, {"name": "color", "type": "object", "optional": true}, {"name": "outlineColor", "type": "object", "optional": true}, {"name": "usePageCoordinates", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightQuad", [{"name": "quad", "type": "object", "optional": false}, {"name": "color", "type": "object", "optional": true}, {"name": "outlineColor", "type": "object", "optional": true}, {"name": "usePageCoordinates", "type": "boolean", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightSelector", [{"name": "highlightConfig", "type": "object", "optional": false}, {"name": "selectorString", "type": "string", "optional": false}, {"name": "frameId", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.highlightNode", [{"name": "highlightConfig", "type": "object", "optional": false}, {"name": "nodeId", "type": "number", "optional": true}, {"name": "objectId", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("DOM.hideHighlight", [], []); +InspectorBackend.registerCommand("DOM.highlightFrame", [{"name": "frameId", "type": "string", "optional": false}, {"name": "contentColor", "type": "object", "optional": true}, {"name": "contentOutlineColor", "type": "object", "optional": true}], []); +InspectorBackend.registerCommand("DOM.pushNodeByPathToFrontend", [{"name": "path", "type": "string", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.pushNodeByBackendIdToFrontend", [{"name": "backendNodeId", "type": "number", "optional": false}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.releaseBackendNodeIds", [{"name": "nodeGroup", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOM.resolveNode", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}], ["object"]); +InspectorBackend.registerCommand("DOM.getAttributes", [{"name": "nodeId", "type": "number", "optional": false}], ["attributes"]); +InspectorBackend.registerCommand("DOM.moveTo", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "targetNodeId", "type": "number", "optional": false}, {"name": "insertBeforeNodeId", "type": "number", "optional": true}], ["nodeId"]); +InspectorBackend.registerCommand("DOM.undo", [], []); +InspectorBackend.registerCommand("DOM.redo", [], []); +InspectorBackend.registerCommand("DOM.markUndoableState", [], []); +InspectorBackend.registerCommand("DOM.focus", [{"name": "nodeId", "type": "number", "optional": false}], []); +InspectorBackend.activateDomain("DOM", "web"); + +// DOMDebugger. +InspectorBackend.registerEnum("DOMDebugger.DOMBreakpointType", {SubtreeModified: "subtree-modified", AttributeModified: "attribute-modified", NodeRemoved: "node-removed"}); +InspectorBackend.registerCommand("DOMDebugger.setDOMBreakpoint", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "type", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeDOMBreakpoint", [{"name": "nodeId", "type": "number", "optional": false}, {"name": "type", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setEventListenerBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeEventListenerBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setInstrumentationBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeInstrumentationBreakpoint", [{"name": "eventName", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.setXHRBreakpoint", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMDebugger.removeXHRBreakpoint", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("DOMDebugger", "web"); + +// DOMStorage. +InspectorBackend.registerDOMStorageDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "DOMStorage"); +InspectorBackend.registerEvent("DOMStorage.domStorageItemsCleared", ["storageId"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemRemoved", ["storageId", "key"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemAdded", ["storageId", "key", "newValue"]); +InspectorBackend.registerEvent("DOMStorage.domStorageItemUpdated", ["storageId", "key", "oldValue", "newValue"]); +InspectorBackend.registerCommand("DOMStorage.enable", [], []); +InspectorBackend.registerCommand("DOMStorage.disable", [], []); +InspectorBackend.registerCommand("DOMStorage.getDOMStorageItems", [{"name": "storageId", "type": "object", "optional": false}], ["entries"]); +InspectorBackend.registerCommand("DOMStorage.setDOMStorageItem", [{"name": "storageId", "type": "object", "optional": false}, {"name": "key", "type": "string", "optional": false}, {"name": "value", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("DOMStorage.removeDOMStorageItem", [{"name": "storageId", "type": "object", "optional": false}, {"name": "key", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("DOMStorage", "web"); + +// Database. +InspectorBackend.registerDatabaseDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Database"); +InspectorBackend.registerEvent("Database.addDatabase", ["database"]); +InspectorBackend.registerCommand("Database.enable", [], []); +InspectorBackend.registerCommand("Database.disable", [], []); +InspectorBackend.registerCommand("Database.getDatabaseTableNames", [{"name": "databaseId", "type": "string", "optional": false}], ["tableNames"]); +InspectorBackend.registerCommand("Database.executeSQL", [{"name": "databaseId", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}], ["columnNames", "values", "sqlError"]); +InspectorBackend.activateDomain("Database", "web"); + +// Debugger. +InspectorBackend.registerDebuggerDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Debugger"); +InspectorBackend.registerEnum("Debugger.BreakpointActionType", {Log: "log", Evaluate: "evaluate", Sound: "sound", Probe: "probe"}); +InspectorBackend.registerEnum("Debugger.ScopeType", {Global: "global", Local: "local", With: "with", Closure: "closure", Catch: "catch", FunctionName: "functionName"}); +InspectorBackend.registerEvent("Debugger.globalObjectCleared", []); +InspectorBackend.registerEvent("Debugger.scriptParsed", ["scriptId", "url", "startLine", "startColumn", "endLine", "endColumn", "isContentScript", "sourceMapURL", "hasSourceURL"]); +InspectorBackend.registerEvent("Debugger.scriptFailedToParse", ["url", "scriptSource", "startLine", "errorLine", "errorMessage"]); +InspectorBackend.registerEvent("Debugger.breakpointResolved", ["breakpointId", "location"]); +InspectorBackend.registerEnum("Debugger.PausedReason", {XHR: "XHR", DOM: "DOM", EventListener: "EventListener", Exception: "exception", Assert: "assert", CSPViolation: "CSPViolation", DebuggerStatement: "DebuggerStatement", Breakpoint: "Breakpoint", PauseOnNextStatement: "PauseOnNextStatement", Other: "other"}); +InspectorBackend.registerEvent("Debugger.paused", ["callFrames", "reason", "data"]); +InspectorBackend.registerEvent("Debugger.resumed", []); +InspectorBackend.registerEvent("Debugger.didSampleProbe", ["sample"]); +InspectorBackend.registerEvent("Debugger.playBreakpointActionSound", ["breakpointActionId"]); +InspectorBackend.registerCommand("Debugger.enable", [], []); +InspectorBackend.registerCommand("Debugger.disable", [], []); +InspectorBackend.registerCommand("Debugger.setBreakpointsActive", [{"name": "active", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.setBreakpointByUrl", [{"name": "lineNumber", "type": "number", "optional": false}, {"name": "url", "type": "string", "optional": true}, {"name": "urlRegex", "type": "string", "optional": true}, {"name": "columnNumber", "type": "number", "optional": true}, {"name": "options", "type": "object", "optional": true}], ["breakpointId", "locations"]); +InspectorBackend.registerCommand("Debugger.setBreakpoint", [{"name": "location", "type": "object", "optional": false}, {"name": "options", "type": "object", "optional": true}], ["breakpointId", "actualLocation"]); +InspectorBackend.registerCommand("Debugger.removeBreakpoint", [{"name": "breakpointId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.continueToLocation", [{"name": "location", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.stepOver", [], []); +InspectorBackend.registerCommand("Debugger.stepInto", [], []); +InspectorBackend.registerCommand("Debugger.stepOut", [], []); +InspectorBackend.registerCommand("Debugger.pause", [], []); +InspectorBackend.registerCommand("Debugger.resume", [], []); +InspectorBackend.registerCommand("Debugger.searchInContent", [{"name": "scriptId", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Debugger.getScriptSource", [{"name": "scriptId", "type": "string", "optional": false}], ["scriptSource"]); +InspectorBackend.registerCommand("Debugger.getFunctionDetails", [{"name": "functionId", "type": "string", "optional": false}], ["details"]); +InspectorBackend.registerCommand("Debugger.setPauseOnExceptions", [{"name": "state", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Debugger.evaluateOnCallFrame", [{"name": "callFrameId", "type": "string", "optional": false}, {"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}, {"name": "saveResult", "type": "boolean", "optional": true}], ["result", "wasThrown", "savedResultIndex"]); +InspectorBackend.registerCommand("Debugger.setOverlayMessage", [{"name": "message", "type": "string", "optional": true}], []); +InspectorBackend.activateDomain("Debugger"); + +// IndexedDB. +InspectorBackend.registerIndexedDBDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "IndexedDB"); +InspectorBackend.registerEnum("IndexedDB.KeyType", {Number: "number", String: "string", Date: "date", Array: "array"}); +InspectorBackend.registerEnum("IndexedDB.KeyPathType", {Null: "null", String: "string", Array: "array"}); +InspectorBackend.registerCommand("IndexedDB.enable", [], []); +InspectorBackend.registerCommand("IndexedDB.disable", [], []); +InspectorBackend.registerCommand("IndexedDB.requestDatabaseNames", [{"name": "securityOrigin", "type": "string", "optional": false}], ["databaseNames"]); +InspectorBackend.registerCommand("IndexedDB.requestDatabase", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}], ["databaseWithObjectStores"]); +InspectorBackend.registerCommand("IndexedDB.requestData", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}, {"name": "objectStoreName", "type": "string", "optional": false}, {"name": "indexName", "type": "string", "optional": false}, {"name": "skipCount", "type": "number", "optional": false}, {"name": "pageSize", "type": "number", "optional": false}, {"name": "keyRange", "type": "object", "optional": true}], ["objectStoreDataEntries", "hasMore"]); +InspectorBackend.registerCommand("IndexedDB.clearObjectStore", [{"name": "securityOrigin", "type": "string", "optional": false}, {"name": "databaseName", "type": "string", "optional": false}, {"name": "objectStoreName", "type": "string", "optional": false}], []); +InspectorBackend.activateDomain("IndexedDB", "web"); + +// Inspector. +InspectorBackend.registerInspectorDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Inspector"); +InspectorBackend.registerEvent("Inspector.evaluateForTestInFrontend", ["script"]); +InspectorBackend.registerEvent("Inspector.inspect", ["object", "hints"]); +InspectorBackend.registerEvent("Inspector.detached", ["reason"]); +InspectorBackend.registerEvent("Inspector.activateExtraDomains", ["domains"]); +InspectorBackend.registerEvent("Inspector.targetCrashed", []); +InspectorBackend.registerCommand("Inspector.enable", [], []); +InspectorBackend.registerCommand("Inspector.disable", [], []); +InspectorBackend.registerCommand("Inspector.initialized", [], []); +InspectorBackend.activateDomain("Inspector"); + +// LayerTree. +InspectorBackend.registerLayerTreeDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "LayerTree"); +InspectorBackend.registerEvent("LayerTree.layerTreeDidChange", []); +InspectorBackend.registerCommand("LayerTree.enable", [], []); +InspectorBackend.registerCommand("LayerTree.disable", [], []); +InspectorBackend.registerCommand("LayerTree.layersForNode", [{"name": "nodeId", "type": "number", "optional": false}], ["layers"]); +InspectorBackend.registerCommand("LayerTree.reasonsForCompositingLayer", [{"name": "layerId", "type": "string", "optional": false}], ["compositingReasons"]); +InspectorBackend.activateDomain("LayerTree", "web"); + +// Network. +InspectorBackend.registerNetworkDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Network"); +InspectorBackend.registerEnum("Network.InitiatorType", {Parser: "parser", Script: "script", Other: "other"}); +InspectorBackend.registerEvent("Network.requestWillBeSent", ["requestId", "frameId", "loaderId", "documentURL", "request", "timestamp", "initiator", "redirectResponse", "type"]); +InspectorBackend.registerEvent("Network.requestServedFromCache", ["requestId"]); +InspectorBackend.registerEvent("Network.responseReceived", ["requestId", "frameId", "loaderId", "timestamp", "type", "response"]); +InspectorBackend.registerEvent("Network.dataReceived", ["requestId", "timestamp", "dataLength", "encodedDataLength"]); +InspectorBackend.registerEvent("Network.loadingFinished", ["requestId", "timestamp", "sourceMapURL"]); +InspectorBackend.registerEvent("Network.loadingFailed", ["requestId", "timestamp", "errorText", "canceled"]); +InspectorBackend.registerEvent("Network.requestServedFromMemoryCache", ["requestId", "frameId", "loaderId", "documentURL", "timestamp", "initiator", "resource"]); +InspectorBackend.registerEvent("Network.webSocketWillSendHandshakeRequest", ["requestId", "timestamp", "request"]); +InspectorBackend.registerEvent("Network.webSocketHandshakeResponseReceived", ["requestId", "timestamp", "response"]); +InspectorBackend.registerEvent("Network.webSocketCreated", ["requestId", "url"]); +InspectorBackend.registerEvent("Network.webSocketClosed", ["requestId", "timestamp"]); +InspectorBackend.registerEvent("Network.webSocketFrameReceived", ["requestId", "timestamp", "response"]); +InspectorBackend.registerEvent("Network.webSocketFrameError", ["requestId", "timestamp", "errorMessage"]); +InspectorBackend.registerEvent("Network.webSocketFrameSent", ["requestId", "timestamp", "response"]); +InspectorBackend.registerCommand("Network.enable", [], []); +InspectorBackend.registerCommand("Network.disable", [], []); +InspectorBackend.registerCommand("Network.setExtraHTTPHeaders", [{"name": "headers", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Network.getResponseBody", [{"name": "requestId", "type": "string", "optional": false}], ["body", "base64Encoded"]); +InspectorBackend.registerCommand("Network.canClearBrowserCache", [], ["result"]); +InspectorBackend.registerCommand("Network.clearBrowserCache", [], []); +InspectorBackend.registerCommand("Network.canClearBrowserCookies", [], ["result"]); +InspectorBackend.registerCommand("Network.clearBrowserCookies", [], []); +InspectorBackend.registerCommand("Network.setCacheDisabled", [{"name": "cacheDisabled", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Network.loadResource", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], ["content", "mimeType", "status"]); +InspectorBackend.activateDomain("Network", "web"); + +// Page. +InspectorBackend.registerPageDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Page"); +InspectorBackend.registerEnum("Page.ResourceType", {Document: "Document", Stylesheet: "Stylesheet", Image: "Image", Font: "Font", Script: "Script", XHR: "XHR", WebSocket: "WebSocket", Other: "Other"}); +InspectorBackend.registerEnum("Page.CoordinateSystem", {Viewport: "Viewport", Page: "Page"}); +InspectorBackend.registerEvent("Page.domContentEventFired", ["timestamp"]); +InspectorBackend.registerEvent("Page.loadEventFired", ["timestamp"]); +InspectorBackend.registerEvent("Page.frameNavigated", ["frame"]); +InspectorBackend.registerEvent("Page.frameDetached", ["frameId"]); +InspectorBackend.registerEvent("Page.frameStartedLoading", ["frameId"]); +InspectorBackend.registerEvent("Page.frameStoppedLoading", ["frameId"]); +InspectorBackend.registerEvent("Page.frameScheduledNavigation", ["frameId", "delay"]); +InspectorBackend.registerEvent("Page.frameClearedScheduledNavigation", ["frameId"]); +InspectorBackend.registerEvent("Page.javascriptDialogOpening", ["message"]); +InspectorBackend.registerEvent("Page.javascriptDialogClosed", []); +InspectorBackend.registerEvent("Page.scriptsEnabled", ["isEnabled"]); +InspectorBackend.registerCommand("Page.enable", [], []); +InspectorBackend.registerCommand("Page.disable", [], []); +InspectorBackend.registerCommand("Page.addScriptToEvaluateOnLoad", [{"name": "scriptSource", "type": "string", "optional": false}], ["identifier"]); +InspectorBackend.registerCommand("Page.removeScriptToEvaluateOnLoad", [{"name": "identifier", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.reload", [{"name": "ignoreCache", "type": "boolean", "optional": true}, {"name": "scriptToEvaluateOnLoad", "type": "string", "optional": true}], []); +InspectorBackend.registerCommand("Page.navigate", [{"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getCookies", [], ["cookies"]); +InspectorBackend.registerCommand("Page.deleteCookie", [{"name": "cookieName", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getResourceTree", [], ["frameTree"]); +InspectorBackend.registerCommand("Page.getResourceContent", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}], ["content", "base64Encoded"]); +InspectorBackend.registerCommand("Page.searchInResource", [{"name": "frameId", "type": "string", "optional": false}, {"name": "url", "type": "string", "optional": false}, {"name": "query", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Page.searchInResources", [{"name": "text", "type": "string", "optional": false}, {"name": "caseSensitive", "type": "boolean", "optional": true}, {"name": "isRegex", "type": "boolean", "optional": true}], ["result"]); +InspectorBackend.registerCommand("Page.setDocumentContent", [{"name": "frameId", "type": "string", "optional": false}, {"name": "html", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.setShowPaintRects", [{"name": "result", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.getScriptExecutionStatus", [], ["result"]); +InspectorBackend.registerCommand("Page.setScriptExecutionDisabled", [{"name": "value", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.setEmulatedMedia", [{"name": "media", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Page.getCompositingBordersVisible", [], ["result"]); +InspectorBackend.registerCommand("Page.setCompositingBordersVisible", [{"name": "visible", "type": "boolean", "optional": false}], []); +InspectorBackend.registerCommand("Page.snapshotNode", [{"name": "nodeId", "type": "number", "optional": false}], ["dataURL"]); +InspectorBackend.registerCommand("Page.snapshotRect", [{"name": "x", "type": "number", "optional": false}, {"name": "y", "type": "number", "optional": false}, {"name": "width", "type": "number", "optional": false}, {"name": "height", "type": "number", "optional": false}, {"name": "coordinateSystem", "type": "string", "optional": false}], ["dataURL"]); +InspectorBackend.registerCommand("Page.archive", [], ["data"]); +InspectorBackend.activateDomain("Page", "web"); + +// Runtime. +InspectorBackend.registerRuntimeDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Runtime"); +InspectorBackend.registerEnum("Runtime.RemoteObjectType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean", Symbol: "symbol"}); +InspectorBackend.registerEnum("Runtime.RemoteObjectSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date", Error: "error", Map: "map", Set: "set", Weakmap: "weakmap", Weakset: "weakset", Iterator: "iterator", Class: "class"}); +InspectorBackend.registerEnum("Runtime.ObjectPreviewType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean", Symbol: "symbol"}); +InspectorBackend.registerEnum("Runtime.ObjectPreviewSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date", Error: "error", Map: "map", Set: "set", Weakmap: "weakmap", Weakset: "weakset", Iterator: "iterator", Class: "class"}); +InspectorBackend.registerEnum("Runtime.PropertyPreviewType", {Object: "object", Function: "function", Undefined: "undefined", String: "string", Number: "number", Boolean: "boolean", Symbol: "symbol", Accessor: "accessor"}); +InspectorBackend.registerEnum("Runtime.PropertyPreviewSubtype", {Array: "array", Null: "null", Node: "node", Regexp: "regexp", Date: "date", Error: "error", Map: "map", Set: "set", Weakmap: "weakmap", Weakset: "weakset", Iterator: "iterator", Class: "class"}); +InspectorBackend.registerEnum("Runtime.SyntaxErrorType", {None: "none", Irrecoverable: "irrecoverable", UnterminatedLiteral: "unterminated-literal", Recoverable: "recoverable"}); +InspectorBackend.registerEvent("Runtime.executionContextCreated", ["context"]); +InspectorBackend.registerCommand("Runtime.parse", [{"name": "source", "type": "string", "optional": false}], ["result", "message", "range"]); +InspectorBackend.registerCommand("Runtime.evaluate", [{"name": "expression", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "includeCommandLineAPI", "type": "boolean", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "contextId", "type": "number", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}, {"name": "saveResult", "type": "boolean", "optional": true}], ["result", "wasThrown", "savedResultIndex"]); +InspectorBackend.registerCommand("Runtime.callFunctionOn", [{"name": "objectId", "type": "string", "optional": false}, {"name": "functionDeclaration", "type": "string", "optional": false}, {"name": "arguments", "type": "object", "optional": true}, {"name": "doNotPauseOnExceptionsAndMuteConsole", "type": "boolean", "optional": true}, {"name": "returnByValue", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "wasThrown"]); +InspectorBackend.registerCommand("Runtime.getProperties", [{"name": "objectId", "type": "string", "optional": false}, {"name": "ownProperties", "type": "boolean", "optional": true}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["result", "internalProperties"]); +InspectorBackend.registerCommand("Runtime.getDisplayableProperties", [{"name": "objectId", "type": "string", "optional": false}, {"name": "generatePreview", "type": "boolean", "optional": true}], ["properties", "internalProperties"]); +InspectorBackend.registerCommand("Runtime.getCollectionEntries", [{"name": "objectId", "type": "string", "optional": false}, {"name": "objectGroup", "type": "string", "optional": true}, {"name": "startIndex", "type": "number", "optional": true}, {"name": "numberToFetch", "type": "number", "optional": true}], ["entries"]); +InspectorBackend.registerCommand("Runtime.saveResult", [{"name": "value", "type": "object", "optional": false}, {"name": "contextId", "type": "number", "optional": true}], ["savedResultIndex"]); +InspectorBackend.registerCommand("Runtime.releaseObject", [{"name": "objectId", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Runtime.releaseObjectGroup", [{"name": "objectGroup", "type": "string", "optional": false}], []); +InspectorBackend.registerCommand("Runtime.run", [], []); +InspectorBackend.registerCommand("Runtime.enable", [], []); +InspectorBackend.registerCommand("Runtime.disable", [], []); +InspectorBackend.registerCommand("Runtime.getRuntimeTypesForVariablesAtOffsets", [{"name": "locations", "type": "object", "optional": false}], ["types"]); +InspectorBackend.registerCommand("Runtime.enableTypeProfiler", [], []); +InspectorBackend.registerCommand("Runtime.disableTypeProfiler", [], []); +InspectorBackend.registerCommand("Runtime.getBasicBlocks", [{"name": "sourceID", "type": "string", "optional": false}], ["basicBlocks"]); +InspectorBackend.activateDomain("Runtime"); + +// Timeline. +InspectorBackend.registerTimelineDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Timeline"); +InspectorBackend.registerEnum("Timeline.EventType", {EventDispatch: "EventDispatch", ScheduleStyleRecalculation: "ScheduleStyleRecalculation", RecalculateStyles: "RecalculateStyles", InvalidateLayout: "InvalidateLayout", Layout: "Layout", Paint: "Paint", Composite: "Composite", RenderingFrame: "RenderingFrame", ScrollLayer: "ScrollLayer", ParseHTML: "ParseHTML", TimerInstall: "TimerInstall", TimerRemove: "TimerRemove", TimerFire: "TimerFire", EvaluateScript: "EvaluateScript", MarkLoad: "MarkLoad", MarkDOMContent: "MarkDOMContent", TimeStamp: "TimeStamp", Time: "Time", TimeEnd: "TimeEnd", XHRReadyStateChange: "XHRReadyStateChange", XHRLoad: "XHRLoad", FunctionCall: "FunctionCall", ProbeSample: "ProbeSample", ConsoleProfile: "ConsoleProfile", GCEvent: "GCEvent", RequestAnimationFrame: "RequestAnimationFrame", CancelAnimationFrame: "CancelAnimationFrame", FireAnimationFrame: "FireAnimationFrame", WebSocketCreate: "WebSocketCreate", WebSocketSendHandshakeRequest: "WebSocketSendHandshakeRequest", WebSocketReceiveHandshakeResponse: "WebSocketReceiveHandshakeResponse", WebSocketDestroy: "WebSocketDestroy"}); +InspectorBackend.registerEvent("Timeline.eventRecorded", ["record"]); +InspectorBackend.registerEvent("Timeline.recordingStarted", ["startTime"]); +InspectorBackend.registerEvent("Timeline.recordingStopped", ["endTime"]); +InspectorBackend.registerCommand("Timeline.start", [{"name": "maxCallStackDepth", "type": "number", "optional": true}], []); +InspectorBackend.registerCommand("Timeline.stop", [], []); +InspectorBackend.activateDomain("Timeline", "web"); + +// Worker. +InspectorBackend.registerWorkerDispatcher = InspectorBackend.registerDomainDispatcher.bind(InspectorBackend, "Worker"); +InspectorBackend.registerEvent("Worker.workerCreated", ["workerId", "url", "inspectorConnected"]); +InspectorBackend.registerEvent("Worker.workerTerminated", ["workerId"]); +InspectorBackend.registerEvent("Worker.dispatchMessageFromWorker", ["workerId", "message"]); +InspectorBackend.registerEvent("Worker.disconnectedFromWorker", []); +InspectorBackend.registerCommand("Worker.enable", [], []); +InspectorBackend.registerCommand("Worker.disable", [], []); +InspectorBackend.registerCommand("Worker.sendMessageToWorker", [{"name": "workerId", "type": "number", "optional": false}, {"name": "message", "type": "object", "optional": false}], []); +InspectorBackend.registerCommand("Worker.canInspectWorkers", [], ["result"]); +InspectorBackend.registerCommand("Worker.connectToWorker", [{"name": "workerId", "type": "number", "optional": false}], []); +InspectorBackend.registerCommand("Worker.disconnectFromWorker", [{"name": "workerId", "type": "number", "optional": false}], []); +InspectorBackend.registerCommand("Worker.setAutoconnectToWorkers", [{"name": "value", "type": "boolean", "optional": false}], []); +InspectorBackend.activateDomain("Worker", "web"); diff --git a/Source/WebInspectorUI/UserInterface/Protocol/LoadInspectorBackendCommands.js b/Source/WebInspectorUI/UserInterface/Protocol/LoadInspectorBackendCommands.js new file mode 100644 index 000000000..7f75338d8 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/LoadInspectorBackendCommands.js @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2013 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +(function() { + let backendCommandsURL = InspectorFrontendHost.backendCommandsURL() || "Protocol/InspectorBackendCommands.js"; + document.write("<script src=\"" + backendCommandsURL + "\"></script>"); +})(); diff --git a/Source/WebInspectorUI/UserInterface/Protocol/LoggingProtocolTracer.js b/Source/WebInspectorUI/UserInterface/Protocol/LoggingProtocolTracer.js new file mode 100644 index 000000000..c2c0fa6cc --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/LoggingProtocolTracer.js @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2015, 2016 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.LoggingProtocolTracer = class LoggingProtocolTracer extends WebInspector.ProtocolTracer +{ + constructor() + { + super(); + + this._dumpMessagesToConsole = false; + this._dumpTimingDataToConsole = false; + this._logToConsole = window.InspectorTest ? InspectorFrontendHost.unbufferedLog.bind(InspectorFrontendHost) : console.log.bind(console); + } + + // Public + + set dumpMessagesToConsole(value) + { + this._dumpMessagesToConsole = !!value; + } + + get dumpMessagesToConsole() + { + return this._dumpMessagesToConsole; + } + + set dumpTimingDataToConsole(value) + { + this._dumpTimingDataToConsole = !!value; + } + + get dumpTimingDataToConsole() + { + return this._dumpTimingDataToConsole; + } + + logFrontendException(message, exception) + { + this._processEntry({type: "exception", message, exception}); + } + + logProtocolError(message, error) + { + this._processEntry({type: "error", message, error}); + } + + logFrontendRequest(message) + { + this._processEntry({type: "request", message}); + } + + logWillHandleResponse(message) + { + let entry = {type: "response", message}; + this._processEntry(entry); + } + + logDidHandleResponse(message, timings = null) + { + let entry = {type: "response", message}; + if (timings) + entry.timings = Object.shallowCopy(timings); + + this._processEntry(entry); + } + + logWillHandleEvent(message) + { + let entry = {type: "event", message}; + this._processEntry(entry); + } + + logDidHandleEvent(message, timings = null) + { + let entry = {type: "event", message}; + if (timings) + entry.timings = Object.shallowCopy(timings); + + this._processEntry(entry); + } + + _processEntry(entry) + { + if (this._dumpTimingDataToConsole && entry.timings) { + if (entry.timings.rtt && entry.timings.dispatch) + this._logToConsole(`time-stats: Handling: ${entry.timings.dispatch || NaN}ms; RTT: ${entry.timings.rtt}ms`); + else if (entry.timings.dispatch) + this._logToConsole(`time-stats: Handling: ${entry.timings.dispatch || NaN}ms`); + } else if (this._dumpMessagesToConsole && !entry.timings) { + this._logToConsole(`${entry.type}: ${JSON.stringify(entry.message)}`); + if (entry.exception) { + this._logToConsole(entry.exception); + if (entry.exception.stack) + this._logToConsole(entry.exception.stack); + } + } + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/MainTarget.js b/Source/WebInspectorUI/UserInterface/Protocol/MainTarget.js new file mode 100644 index 000000000..9dc969fe6 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/MainTarget.js @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2016 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.MainTarget = class MainTarget extends WebInspector.Target +{ + constructor(connection) + { + super("main", "", WebInspector.Target.Type.Main, InspectorBackend.mainConnection); + + let displayName = WebInspector.debuggableType === WebInspector.DebuggableType.Web ? WebInspector.UIString("Main Frame") : this.displayName; + this._executionContext = new WebInspector.ExecutionContext(this, WebInspector.RuntimeManager.TopLevelContextExecutionIdentifier, displayName, true, null); + } + + // Protected (Target) + + get displayName() + { + switch (WebInspector.debuggableType) { + case WebInspector.DebuggableType.Web: + return WebInspector.UIString("Page"); + case WebInspector.DebuggableType.JavaScript: + return WebInspector.UIString("JavaScript Context"); + default: + console.error("Unexpected debuggable type: ", WebInspector.debuggableType); + return WebInspector.UIString("Main"); + } + } + + get mainResource() + { + let mainFrame = WebInspector.frameResourceManager.mainFrame; + return mainFrame ? mainFrame.mainResource : null; + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/MemoryObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/MemoryObserver.js new file mode 100644 index 000000000..1b0b475cc --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/MemoryObserver.js @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2016 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.MemoryObserver = class MemoryObserver +{ + // Events defined by the "Memory" domain. + + memoryPressure(timestamp, severity) + { + WebInspector.memoryManager.memoryPressure(timestamp, severity); + } + + trackingStart(timestamp) + { + WebInspector.timelineManager.memoryTrackingStart(timestamp); + } + + trackingUpdate(event) + { + WebInspector.timelineManager.memoryTrackingUpdate(event); + } + + trackingComplete() + { + WebInspector.timelineManager.memoryTrackingComplete(); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/MessageDispatcher.js b/Source/WebInspectorUI/UserInterface/Protocol/MessageDispatcher.js new file mode 100644 index 000000000..807f7cfd3 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/MessageDispatcher.js @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * Copyright (C) 2014 University of Washington + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector._messagesToDispatch = []; + +WebInspector.dispatchNextQueuedMessageFromBackend = function() +{ + const startCount = WebInspector._messagesToDispatch.length; + const startTimestamp = timestamp(); + const timeLimitPerRunLoop = 10; // milliseconds + + let i = 0; + for (; i < WebInspector._messagesToDispatch.length; ++i) { + // Defer remaining messages if we have taken too long. In practice, single + // messages like Page.getResourceContent blow through the time budget. + if (timestamp() - startTimestamp > timeLimitPerRunLoop) + break; + + InspectorBackend.dispatch(WebInspector._messagesToDispatch[i]); + } + + if (i === WebInspector._messagesToDispatch.length) { + WebInspector._messagesToDispatch = []; + WebInspector._dispatchTimeout = null; + } else { + WebInspector._messagesToDispatch = WebInspector._messagesToDispatch.slice(i); + WebInspector._dispatchTimeout = setTimeout(WebInspector.dispatchNextQueuedMessageFromBackend, 0); + } + + if (InspectorBackend.dumpInspectorTimeStats) { + let messageDuration = (timestamp() - startTimestamp).toFixed(3); + let dispatchedCount = startCount - WebInspector._messagesToDispatch.length; + let remainingCount = WebInspector._messagesToDispatch.length; + console.log(`time-stats: --- RunLoop duration: ${messageDuration}ms; dispatched: ${dispatchedCount}; remaining: ${remainingCount}`); + } +}; + +WebInspector.dispatchMessageFromBackend = function(message) +{ + // Enforce asynchronous interaction between the backend and the frontend by queueing messages. + // The messages are dequeued on a zero delay timeout. + + this._messagesToDispatch.push(message); + + // If something has gone wrong and the uncaught exception sheet is showing, + // then don't try to dispatch more messages. Dispatching causes spurious uncaught + // exceptions and cause the sheet to overflow with hundreds of logged exceptions. + if (window.__uncaughtExceptions && window.__uncaughtExceptions.length) + return; + + if (this._dispatchTimeout) + return; + + this._dispatchTimeout = setTimeout(this.dispatchNextQueuedMessageFromBackend, 0); +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/NetworkObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/NetworkObserver.js new file mode 100644 index 000000000..70f234682 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/NetworkObserver.js @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.NetworkObserver = class NetworkObserver +{ + // Events defined by the "Network" domain. + + requestWillBeSent(requestId, frameId, loaderId, documentURL, request, timestamp, initiator, redirectResponse, type, targetId) + { + WebInspector.frameResourceManager.resourceRequestWillBeSent(requestId, frameId, loaderId, request, type, redirectResponse, timestamp, initiator, targetId); + } + + requestServedFromCache(requestId) + { + WebInspector.frameResourceManager.markResourceRequestAsServedFromMemoryCache(requestId); + } + + responseReceived(requestId, frameId, loaderId, timestamp, type, response) + { + WebInspector.frameResourceManager.resourceRequestDidReceiveResponse(requestId, frameId, loaderId, type, response, timestamp); + } + + dataReceived(requestId, timestamp, dataLength, encodedDataLength) + { + WebInspector.frameResourceManager.resourceRequestDidReceiveData(requestId, dataLength, encodedDataLength, timestamp); + } + + loadingFinished(requestId, timestamp, sourceMapURL) + { + WebInspector.frameResourceManager.resourceRequestDidFinishLoading(requestId, timestamp, sourceMapURL); + } + + loadingFailed(requestId, timestamp, errorText, canceled) + { + WebInspector.frameResourceManager.resourceRequestDidFailLoading(requestId, canceled, timestamp); + } + + requestServedFromMemoryCache(requestId, frameId, loaderId, documentURL, timestamp, initiator, resource) + { + WebInspector.frameResourceManager.resourceRequestWasServedFromMemoryCache(requestId, frameId, loaderId, resource, timestamp, initiator); + } + + webSocketWillSendHandshakeRequest(requestId, timestamp, request) + { + // FIXME: Not implemented. + } + + webSocketHandshakeResponseReceived(requestId, timestamp, response) + { + // FIXME: Not implemented. + } + + webSocketCreated(requestId, url) + { + // FIXME: Not implemented. + } + + webSocketClosed(requestId, timestamp) + { + // FIXME: Not implemented. + } + + webSocketFrameReceived(requestId, timestamp, response) + { + // FIXME: Not implemented. + } + + webSocketFrameError(requestId, timestamp, errorMessage) + { + // FIXME: Not implemented. + } + + webSocketFrameSent(requestId, timestamp, response) + { + // FIXME: Not implemented. + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/PageObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/PageObserver.js new file mode 100644 index 000000000..c136e5367 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/PageObserver.js @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.PageObserver = class PageObserver +{ + // Events defined by the "Page" domain. + + domContentEventFired(timestamp) + { + WebInspector.timelineManager.pageDOMContentLoadedEventFired(timestamp); + } + + loadEventFired(timestamp) + { + WebInspector.timelineManager.pageLoadEventFired(timestamp); + } + + frameNavigated(frame, loaderId) + { + WebInspector.frameResourceManager.frameDidNavigate(frame, loaderId); + } + + frameDetached(frameId) + { + WebInspector.frameResourceManager.frameDidDetach(frameId); + } + + frameStartedLoading(frameId) + { + // Not handled yet. + } + + frameStoppedLoading(frameId) + { + // Not handled yet. + } + + frameScheduledNavigation(frameId, delay) + { + // Not handled yet. + } + + frameClearedScheduledNavigation(frameId) + { + // Not handled yet. + } + + javascriptDialogOpening(message) + { + // COMPATIBILITY (iOS 10): Page.javascriptDialogOpening was removed after iOS 10. + } + + javascriptDialogClosed() + { + // COMPATIBILITY (iOS 10): Page.javascriptDialogClosed was removed after iOS 10. + } + + scriptsEnabled(enabled) + { + // COMPATIBILITY (iOS 10): Page.scriptsEnabled was removed after iOS 10. + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/ProtocolTracer.js b/Source/WebInspectorUI/UserInterface/Protocol/ProtocolTracer.js new file mode 100644 index 000000000..c186bd278 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/ProtocolTracer.js @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2015, 2016 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.ProtocolTracer = class ProtocolTracer extends WebInspector.Object +{ + // Public + + logStarted() + { + // To be overridden by subclasses. + } + + logFrontendException(message, exception) + { + // To be overridden by subclasses. + } + + logProtocolError(message, error) + { + // To be overridden by subclasses. + } + + logFrontendRequest(message) + { + // To be overridden by subclasses. + } + + logWillHandleResponse(message) + { + // To be overridden by subclasses. + } + + logDidHandleResponse(message, timings = null) + { + // To be overridden by subclasses. + } + + logWillHandleEvent(message) + { + // To be overridden by subclasses. + } + + logDidHandleEvent(message, timings = null) + { + // To be overridden by subclasses. + } + + logFinished() + { + // To be overridden by subclasses. + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js b/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js new file mode 100644 index 000000000..f4c99fbec --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/RemoteObject.js @@ -0,0 +1,679 @@ +/* + * Copyright (C) 2009 Google Inc. All rights reserved. + * Copyright (C) 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.RemoteObject = class RemoteObject +{ + constructor(target, objectId, type, subtype, value, description, size, classPrototype, className, preview) + { + console.assert(type); + console.assert(!preview || preview instanceof WebInspector.ObjectPreview); + console.assert(!target || target instanceof WebInspector.Target); + + this._target = target || WebInspector.mainTarget; + this._type = type; + this._subtype = subtype; + + if (objectId) { + // Object, Function, or Symbol. + console.assert(!subtype || typeof subtype === "string"); + console.assert(!description || typeof description === "string"); + console.assert(!value); + + this._objectId = objectId; + this._description = description || ""; + this._hasChildren = type !== "symbol"; + this._size = size; + this._classPrototype = classPrototype; + this._preview = preview; + + if (subtype === "class") { + this._functionDescription = this._description; + this._description = "class " + className; + } + } else { + // Primitive or null. + console.assert(type !== "object" || value === null); + console.assert(!preview); + + this._description = description || (value + ""); + this._hasChildren = false; + this._value = value; + } + } + + // Static + + static createFakeRemoteObject() + { + return new WebInspector.RemoteObject(undefined, WebInspector.RemoteObject.FakeRemoteObjectId, "object"); + } + + static fromPrimitiveValue(value) + { + return new WebInspector.RemoteObject(undefined, undefined, typeof value, undefined, value, undefined, undefined, undefined, undefined); + } + + static fromPayload(payload, target) + { + console.assert(typeof payload === "object", "Remote object payload should only be an object"); + + if (payload.subtype === "array") { + // COMPATIBILITY (iOS 8): Runtime.RemoteObject did not have size property, + // instead it was tacked onto the end of the description, like "Array[#]". + var match = payload.description.match(/\[(\d+)\]$/); + if (match) { + payload.size = parseInt(match[1]); + payload.description = payload.description.replace(/\[\d+\]$/, ""); + } + } + + if (payload.classPrototype) + payload.classPrototype = WebInspector.RemoteObject.fromPayload(payload.classPrototype, target); + + if (payload.preview) { + // COMPATIBILITY (iOS 8): iOS 7 and 8 did not have type/subtype/description on + // Runtime.ObjectPreview. Copy them over from the RemoteObject. + if (!payload.preview.type) { + payload.preview.type = payload.type; + payload.preview.subtype = payload.subtype; + payload.preview.description = payload.description; + payload.preview.size = payload.size; + } + + payload.preview = WebInspector.ObjectPreview.fromPayload(payload.preview); + } + + return new WebInspector.RemoteObject(target, payload.objectId, payload.type, payload.subtype, payload.value, payload.description, payload.size, payload.classPrototype, payload.className, payload.preview); + } + + static createCallArgument(valueOrObject) + { + if (valueOrObject instanceof WebInspector.RemoteObject) { + if (valueOrObject.objectId) + return {objectId: valueOrObject.objectId}; + return {value: valueOrObject.value}; + } + + return {value: valueOrObject}; + } + + static resolveNode(node, objectGroup, callback) + { + DOMAgent.resolveNode(node.id, objectGroup, function(error, object) { + if (!callback) + return; + + if (error || !object) + callback(null); + else + callback(WebInspector.RemoteObject.fromPayload(object, WebInspector.mainTarget)); + }); + } + + static type(remoteObject) + { + if (remoteObject === null) + return "null"; + + var type = typeof remoteObject; + if (type !== "object" && type !== "function") + return type; + + return remoteObject.type; + } + + // Public + + get target() + { + return this._target; + } + + get objectId() + { + return this._objectId; + } + + get type() + { + return this._type; + } + + get subtype() + { + return this._subtype; + } + + get description() + { + return this._description; + } + + get functionDescription() + { + console.assert(this.type === "function"); + + return this._functionDescription || this._description; + } + + get hasChildren() + { + return this._hasChildren; + } + + get value() + { + return this._value; + } + + get size() + { + return this._size || 0; + } + + get classPrototype() + { + return this._classPrototype; + } + + get preview() + { + return this._preview; + } + + hasSize() + { + return this.isArray() || this.isCollectionType(); + } + + hasValue() + { + return "_value" in this; + } + + getOwnPropertyDescriptors(callback) + { + this._getPropertyDescriptors(true, callback); + } + + getAllPropertyDescriptors(callback) + { + this._getPropertyDescriptors(false, callback); + } + + getDisplayablePropertyDescriptors(callback) + { + if (!this._objectId || this._isSymbol() || this._isFakeObject()) { + callback([]); + return; + } + + // COMPATIBILITY (iOS 8): RuntimeAgent.getDisplayableProperties did not exist. + // Here we do our best to reimplement it by getting all properties and reducing them down. + if (!RuntimeAgent.getDisplayableProperties) { + this._target.RuntimeAgent.getProperties(this._objectId, function(error, allProperties) { + var ownOrGetterPropertiesList = []; + if (allProperties) { + for (var property of allProperties) { + if (property.isOwn || property.name === "__proto__") { + // Own property or getter property in prototype chain. + ownOrGetterPropertiesList.push(property); + } else if (property.value && property.name !== property.name.toUpperCase()) { + var type = property.value.type; + if (type && type !== "function" && property.name !== "constructor") { + // Possible native binding getter property converted to a value. Also, no CONSTANT name style and not "constructor". + // There is no way of knowing if this is native or not, so just go with it. + ownOrGetterPropertiesList.push(property); + } + } + } + } + + this._getPropertyDescriptorsResolver(callback, error, ownOrGetterPropertiesList); + }.bind(this)); + return; + } + + this._target.RuntimeAgent.getDisplayableProperties(this._objectId, true, this._getPropertyDescriptorsResolver.bind(this, callback)); + } + + // FIXME: Phase out these deprecated functions. They return DeprecatedRemoteObjectProperty instead of PropertyDescriptors. + deprecatedGetOwnProperties(callback) + { + this._deprecatedGetProperties(true, callback); + } + + deprecatedGetAllProperties(callback) + { + this._deprecatedGetProperties(false, callback); + } + + deprecatedGetDisplayableProperties(callback) + { + if (!this._objectId || this._isSymbol() || this._isFakeObject()) { + callback([]); + return; + } + + // COMPATIBILITY (iOS 8): RuntimeAgent.getProperties did not support ownerAndGetterProperties. + // Here we do our best to reimplement it by getting all properties and reducing them down. + if (!RuntimeAgent.getDisplayableProperties) { + this._target.RuntimeAgent.getProperties(this._objectId, function(error, allProperties) { + var ownOrGetterPropertiesList = []; + if (allProperties) { + for (var property of allProperties) { + if (property.isOwn || property.get || property.name === "__proto__") { + // Own property or getter property in prototype chain. + ownOrGetterPropertiesList.push(property); + } else if (property.value && property.name !== property.name.toUpperCase()) { + var type = property.value.type; + if (type && type !== "function" && property.name !== "constructor") { + // Possible native binding getter property converted to a value. Also, no CONSTANT name style and not "constructor". + ownOrGetterPropertiesList.push(property); + } + } + } + } + + this._deprecatedGetPropertiesResolver(callback, error, ownOrGetterPropertiesList); + }.bind(this)); + return; + } + + this._target.RuntimeAgent.getDisplayableProperties(this._objectId, this._deprecatedGetPropertiesResolver.bind(this, callback)); + } + + setPropertyValue(name, value, callback) + { + if (!this._objectId || this._isSymbol() || this._isFakeObject()) { + callback("Can't set a property of non-object."); + return; + } + + // FIXME: It doesn't look like setPropertyValue is used yet. This will need to be tested when it is again (editable ObjectTrees). + this._target.RuntimeAgent.evaluate.invoke({expression: appendWebInspectorSourceURL(value), doNotPauseOnExceptionsAndMuteConsole: true}, evaluatedCallback.bind(this), this._target.RuntimeAgent); + + function evaluatedCallback(error, result, wasThrown) + { + if (error || wasThrown) { + callback(error || result.description); + return; + } + + function setPropertyValue(propertyName, propertyValue) + { + this[propertyName] = propertyValue; + } + + delete result.description; // Optimize on traffic. + + this._target.RuntimeAgent.callFunctionOn(this._objectId, appendWebInspectorSourceURL(setPropertyValue.toString()), [{value: name}, result], true, undefined, propertySetCallback.bind(this)); + + if (result._objectId) + this._target.RuntimeAgent.releaseObject(result._objectId); + } + + function propertySetCallback(error, result, wasThrown) + { + if (error || wasThrown) { + callback(error || result.description); + return; + } + + callback(); + } + } + + isUndefined() + { + return this._type === "undefined"; + } + + isNode() + { + return this._subtype === "node"; + } + + isArray() + { + return this._subtype === "array"; + } + + isClass() + { + return this._subtype === "class"; + } + + isCollectionType() + { + return this._subtype === "map" || this._subtype === "set" || this._subtype === "weakmap" || this._subtype === "weakset"; + } + + isWeakCollection() + { + return this._subtype === "weakmap" || this._subtype === "weakset"; + } + + getCollectionEntries(start, numberToFetch, callback) + { + start = typeof start === "number" ? start : 0; + numberToFetch = typeof numberToFetch === "number" ? numberToFetch : 100; + + console.assert(start >= 0); + console.assert(numberToFetch >= 0); + console.assert(this.isCollectionType()); + + // WeakMaps and WeakSets are not ordered. We should never send a non-zero start. + console.assert((this._subtype === "weakmap" && start === 0) || this._subtype !== "weakmap"); + console.assert((this._subtype === "weakset" && start === 0) || this._subtype !== "weakset"); + + let objectGroup = this.isWeakCollection() ? this._weakCollectionObjectGroup() : ""; + + this._target.RuntimeAgent.getCollectionEntries(this._objectId, objectGroup, start, numberToFetch, (error, entries) => { + entries = entries.map((x) => WebInspector.CollectionEntry.fromPayload(x, this._target)); + callback(entries); + }); + } + + releaseWeakCollectionEntries() + { + console.assert(this.isWeakCollection()); + + this._target.RuntimeAgent.releaseObjectGroup(this._weakCollectionObjectGroup()); + } + + pushNodeToFrontend(callback) + { + if (this._objectId) + WebInspector.domTreeManager.pushNodeToFrontend(this._objectId, callback); + else + callback(0); + } + + getProperty(propertyName, callback) + { + function inspectedPage_object_getProperty(property) { + return this[property]; + } + + this.callFunction(inspectedPage_object_getProperty, [propertyName], true, callback); + } + + callFunction(functionDeclaration, args, generatePreview, callback) + { + function mycallback(error, result, wasThrown) + { + result = result ? WebInspector.RemoteObject.fromPayload(result, this._target) : null; + + if (callback && typeof callback === "function") + callback(error, result, wasThrown); + } + + if (args) + args = args.map(WebInspector.RemoteObject.createCallArgument); + + this._target.RuntimeAgent.callFunctionOn(this._objectId, appendWebInspectorSourceURL(functionDeclaration.toString()), args, true, undefined, !!generatePreview, mycallback.bind(this)); + } + + callFunctionJSON(functionDeclaration, args, callback) + { + function mycallback(error, result, wasThrown) + { + callback((error || wasThrown) ? null : result.value); + } + + this._target.RuntimeAgent.callFunctionOn(this._objectId, appendWebInspectorSourceURL(functionDeclaration.toString()), args, true, true, mycallback); + } + + invokeGetter(getterRemoteObject, callback) + { + console.assert(getterRemoteObject instanceof WebInspector.RemoteObject); + + function backendInvokeGetter(getter) + { + return getter ? getter.call(this) : undefined; + } + + this.callFunction(backendInvokeGetter, [getterRemoteObject], true, callback); + } + + getOwnPropertyDescriptor(propertyName, callback) + { + function backendGetOwnPropertyDescriptor(propertyName) + { + return this[propertyName]; + } + + function wrappedCallback(error, result, wasThrown) + { + if (error || wasThrown || !(result instanceof WebInspector.RemoteObject)) { + callback(null); + return; + } + + var fakeDescriptor = {name: propertyName, value: result, writable: true, configurable: true, enumerable: false}; + var fakePropertyDescriptor = new WebInspector.PropertyDescriptor(fakeDescriptor, null, true, false, false, false); + callback(fakePropertyDescriptor); + } + + // FIXME: Implement a real RuntimeAgent.getOwnPropertyDescriptor? + this.callFunction(backendGetOwnPropertyDescriptor, [propertyName], false, wrappedCallback.bind(this)); + } + + release() + { + if (this._objectId && !this._isFakeObject()) + this._target.RuntimeAgent.releaseObject(this._objectId); + } + + arrayLength() + { + if (this._subtype !== "array") + return 0; + + var matches = this._description.match(/\[([0-9]+)\]/); + if (!matches) + return 0; + + return parseInt(matches[1], 10); + } + + asCallArgument() + { + return WebInspector.RemoteObject.createCallArgument(this); + } + + findFunctionSourceCodeLocation() + { + var result = new WebInspector.WrappedPromise; + + if (!this._isFunction() || !this._objectId) { + result.resolve(WebInspector.RemoteObject.SourceCodeLocationPromise.MissingObjectId); + return result.promise; + } + + this._target.DebuggerAgent.getFunctionDetails(this._objectId, (error, response) => { + if (error) { + result.reject(error); + return; + } + + var location = response.location; + var sourceCode = WebInspector.debuggerManager.scriptForIdentifier(location.scriptId, this._target); + + if (!sourceCode || (!WebInspector.isDebugUIEnabled() && isWebKitInternalScript(sourceCode.sourceURL))) { + result.resolve(WebInspector.RemoteObject.SourceCodeLocationPromise.NoSourceFound); + return; + } + + var sourceCodeLocation = sourceCode.createSourceCodeLocation(location.lineNumber, location.columnNumber || 0); + result.resolve(sourceCodeLocation); + }); + + return result.promise; + } + + // Private + + _isFakeObject() + { + return this._objectId === WebInspector.RemoteObject.FakeRemoteObjectId; + } + + _isSymbol() + { + return this._type === "symbol"; + } + + _isFunction() + { + return this._type === "function"; + } + + _weakCollectionObjectGroup() + { + return JSON.stringify(this._objectId) + "-" + this._subtype; + } + + _getPropertyDescriptors(ownProperties, callback) + { + if (!this._objectId || this._isSymbol() || this._isFakeObject()) { + callback([]); + return; + } + + this._target.RuntimeAgent.getProperties(this._objectId, ownProperties, true, this._getPropertyDescriptorsResolver.bind(this, callback)); + } + + getOwnPropertyDescriptorsAsObject(callback) + { + this.getOwnPropertyDescriptors(function(properties) { + var propertiesResult = {}; + var internalPropertiesResult = {}; + for (var propertyDescriptor of properties) { + var object = propertyDescriptor.isInternalProperty ? internalPropertiesResult : propertiesResult; + object[propertyDescriptor.name] = propertyDescriptor; + } + callback(propertiesResult, internalPropertiesResult); + }); + } + + _getPropertyDescriptorsResolver(callback, error, properties, internalProperties) + { + if (error) { + callback(null); + return; + } + + let descriptors = properties.map((payload) => { + return WebInspector.PropertyDescriptor.fromPayload(payload, false, this._target); + }); + + if (internalProperties) { + descriptors = descriptors.concat(internalProperties.map((payload) => { + return WebInspector.PropertyDescriptor.fromPayload(payload, true, this._target); + })); + } + + callback(descriptors); + } + + // FIXME: Phase out these deprecated functions. They return DeprecatedRemoteObjectProperty instead of PropertyDescriptors. + _deprecatedGetProperties(ownProperties, callback) + { + if (!this._objectId || this._isSymbol() || this._isFakeObject()) { + callback([]); + return; + } + + this._target.RuntimeAgent.getProperties(this._objectId, ownProperties, this._deprecatedGetPropertiesResolver.bind(this, callback)); + } + + _deprecatedGetPropertiesResolver(callback, error, properties, internalProperties) + { + if (error) { + callback(null); + return; + } + + if (internalProperties) { + properties = properties.concat(internalProperties.map(function(descriptor) { + descriptor.writable = false; + descriptor.configurable = false; + descriptor.enumerable = false; + descriptor.isOwn = true; + return descriptor; + })); + } + + var result = []; + for (var i = 0; properties && i < properties.length; ++i) { + var property = properties[i]; + if (property.get || property.set) { + if (property.get) + result.push(new WebInspector.DeprecatedRemoteObjectProperty("get " + property.name, WebInspector.RemoteObject.fromPayload(property.get, this._target), property)); + if (property.set) + result.push(new WebInspector.DeprecatedRemoteObjectProperty("set " + property.name, WebInspector.RemoteObject.fromPayload(property.set, this._target), property)); + } else + result.push(new WebInspector.DeprecatedRemoteObjectProperty(property.name, WebInspector.RemoteObject.fromPayload(property.value, this._target), property)); + } + + callback(result); + } +}; + +WebInspector.RemoteObject.FakeRemoteObjectId = "fake-remote-object"; + +WebInspector.RemoteObject.SourceCodeLocationPromise = { + NoSourceFound: "remote-object-source-code-location-promise-no-source-found", + MissingObjectId: "remote-object-source-code-location-promise-missing-object-id" +}; + +// FIXME: Phase out this deprecated class. +WebInspector.DeprecatedRemoteObjectProperty = class DeprecatedRemoteObjectProperty +{ + constructor(name, value, descriptor) + { + this.name = name; + this.value = value; + this.enumerable = descriptor ? !!descriptor.enumerable : true; + this.writable = descriptor ? !!descriptor.writable : true; + if (descriptor && descriptor.wasThrown) + this.wasThrown = true; + } + + // Static + + fromPrimitiveValue(name, value) + { + return new WebInspector.DeprecatedRemoteObjectProperty(name, WebInspector.RemoteObject.fromPrimitiveValue(value)); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/ReplayObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/ReplayObserver.js new file mode 100644 index 000000000..e0a86719a --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/ReplayObserver.js @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2013 University of Washington. All rights reserved. + * Copyright (C) 2014 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +// FIXME: This ReplayPosition class shouldn't be here, no matter how simple it is. +WebInspector.ReplayPosition = class ReplayPosition +{ + constructor(segmentOffset, inputOffset) + { + this.segmentOffset = segmentOffset; + this.inputOffset = inputOffset; + } +}; + +WebInspector.ReplayObserver = class ReplayObserver +{ + // Events defined by the "Replay" domain. + + captureStarted() + { + WebInspector.replayManager.captureStarted(); + } + + captureStopped() + { + WebInspector.replayManager.captureStopped(); + } + + playbackStarted() + { + WebInspector.replayManager.playbackStarted(); + } + + playbackHitPosition(replayPosition, timestamp) + { + WebInspector.replayManager.playbackHitPosition(new WebInspector.ReplayPosition(replayPosition.segmentOffset, replayPosition.inputOffset), timestamp); + } + + playbackPaused(replayPosition) + { + WebInspector.replayManager.playbackPaused(new WebInspector.ReplayPosition(replayPosition.segmentOffset, replayPosition.inputOffset)); + } + + playbackFinished() + { + WebInspector.replayManager.playbackFinished(); + } + + inputSuppressionChanged(willSuppress) + { + // Not handled yet. + } + + sessionCreated(sessionId) + { + WebInspector.replayManager.sessionCreated(sessionId); + } + + sessionModified(sessionId) + { + WebInspector.replayManager.sessionModified(sessionId); + } + + sessionRemoved(sessionId) + { + WebInspector.replayManager.sessionRemoved(sessionId); + } + + sessionLoaded(sessionId) + { + WebInspector.replayManager.sessionLoaded(sessionId); + } + + segmentCreated(segmentId) + { + WebInspector.replayManager.segmentCreated(segmentId); + } + + segmentRemoved(segmentId) + { + WebInspector.replayManager.segmentRemoved(segmentId); + } + + segmentCompleted(segmentId) + { + WebInspector.replayManager.segmentCompleted(segmentId); + } + + segmentLoaded(segmentId) + { + WebInspector.replayManager.segmentLoaded(segmentId); + } + + segmentUnloaded() + { + WebInspector.replayManager.segmentUnloaded(); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/RuntimeObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/RuntimeObserver.js new file mode 100644 index 000000000..e09baa480 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/RuntimeObserver.js @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.RuntimeObserver = class RuntimeObserver +{ + // Events defined by the "Runtime" domain. + + executionContextCreated(contextPayload) + { + WebInspector.frameResourceManager.executionContextCreated(contextPayload); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/ScriptProfilerObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/ScriptProfilerObserver.js new file mode 100644 index 000000000..0d299547f --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/ScriptProfilerObserver.js @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.ScriptProfilerObserver = class ScriptProfilerObserver +{ + // Events defined by the "ScriptProfiler" domain. + + trackingStart(timestamp) + { + WebInspector.timelineManager.scriptProfilerTrackingStarted(timestamp); + } + + trackingUpdate(event) + { + WebInspector.timelineManager.scriptProfilerTrackingUpdated(event); + } + + trackingComplete(samples) + { + WebInspector.timelineManager.scriptProfilerTrackingCompleted(samples); + } + + programmaticCaptureStarted() + { + WebInspector.timelineManager.scriptProfilerProgrammaticCaptureStarted(); + } + + programmaticCaptureStopped() + { + WebInspector.timelineManager.scriptProfilerProgrammaticCaptureStopped(); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/Target.js b/Source/WebInspectorUI/UserInterface/Protocol/Target.js new file mode 100644 index 000000000..ffc77b420 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/Target.js @@ -0,0 +1,95 @@ +/* + * Copyright (C) 2016 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.Target = class Target extends WebInspector.Object +{ + constructor(identifier, name, type, connection) + { + super(); + + this._identifier = identifier; + this._name = name; + this._type = type; + this._connection = connection; + this._executionContext = null; + this._mainResource = null; + this._resourceCollection = new WebInspector.ResourceCollection; + this._extraScriptCollection = new WebInspector.Collection(WebInspector.Collection.TypeVerifier.Script); + + this._connection.target = this; + } + + // Agents + + get RuntimeAgent() { return this._connection._agents.Runtime; } + get ConsoleAgent() { return this._connection._agents.Console; } + get DebuggerAgent() { return this._connection._agents.Debugger; } + get HeapAgent() { return this._connection._agents.Heap; } + + // Public + + get identifier() { return this._identifier; } + get name() { return this._name; } + get type() { return this._type; } + get connection() { return this._connection; } + get executionContext() { return this._executionContext; } + + get resourceCollection() { return this._resourceCollection; } + get extraScriptCollection() { return this._extraScriptCollection; } + + get mainResource() { return this._mainResource; } + set mainResource(resource) { this._mainResource = resource; } + + addResource(resource) + { + this._resourceCollection.add(resource); + + this.dispatchEventToListeners(WebInspector.Target.Event.ResourceAdded, {resource}); + } + + adoptResource(resource) + { + resource._target = this; + + this.addResource(resource); + } + + addScript(script) + { + this._extraScriptCollection.add(script); + + this.dispatchEventToListeners(WebInspector.Target.Event.ScriptAdded, {script}); + } +}; + +WebInspector.Target.Type = { + Main: Symbol("main"), + Worker: Symbol("worker"), +}; + +WebInspector.Target.Event = { + ResourceAdded: "target-resource-added", + ScriptAdded: "target-script-added", +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/TimelineObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/TimelineObserver.js new file mode 100644 index 000000000..99dfb9763 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/TimelineObserver.js @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2013, 2015 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.TimelineObserver = class TimelineObserver +{ + // Events defined by the "Timeline" domain. + + eventRecorded(record) + { + WebInspector.timelineManager.eventRecorded(record); + } + + recordingStarted(startTime) + { + WebInspector.timelineManager.capturingStarted(startTime); + } + + recordingStopped(endTime) + { + WebInspector.timelineManager.capturingStopped(endTime); + } + + autoCaptureStarted() + { + WebInspector.timelineManager.autoCaptureStarted(); + } + + programmaticCaptureStarted() + { + WebInspector.timelineManager.programmaticCaptureStarted(); + } + + programmaticCaptureStopped() + { + WebInspector.timelineManager.programmaticCaptureStopped(); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/WorkerObserver.js b/Source/WebInspectorUI/UserInterface/Protocol/WorkerObserver.js new file mode 100644 index 000000000..9a1a8db83 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/WorkerObserver.js @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2016 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.WorkerObserver = class WorkerObserver +{ + // Events defined by the "Worker" domain. + + workerCreated(workerId, url) + { + WebInspector.workerManager.workerCreated(workerId, url); + } + + workerTerminated(workerId) + { + WebInspector.workerManager.workerTerminated(workerId); + } + + dispatchMessageFromWorker(workerId, message) + { + WebInspector.workerManager.dispatchMessageFromWorker(workerId, message); + } +}; diff --git a/Source/WebInspectorUI/UserInterface/Protocol/WorkerTarget.js b/Source/WebInspectorUI/UserInterface/Protocol/WorkerTarget.js new file mode 100644 index 000000000..fbafb8c61 --- /dev/null +++ b/Source/WebInspectorUI/UserInterface/Protocol/WorkerTarget.js @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2016 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +WebInspector.WorkerTarget = class WorkerTarget extends WebInspector.Target +{ + constructor(workerId, name, connection) + { + super(workerId, name, WebInspector.Target.Type.Worker, connection); + + WebInspector.frameResourceManager.adoptOrphanedResourcesForTarget(this); + + if (this.RuntimeAgent) { + this._executionContext = new WebInspector.ExecutionContext(this, WebInspector.RuntimeManager.TopLevelContextExecutionIdentifier, this.displayName, false, null); + this.RuntimeAgent.enable(); + if (WebInspector.showJavaScriptTypeInformationSetting && WebInspector.showJavaScriptTypeInformationSetting.value) + this.RuntimeAgent.enableTypeProfiler(); + if (WebInspector.enableControlFlowProfilerSetting && WebInspector.enableControlFlowProfilerSetting.value) + this.RuntimeAgent.enableControlFlowProfiler(); + } + + if (this.DebuggerAgent) + WebInspector.debuggerManager.initializeTarget(this); + + if (this.ConsoleAgent) + this.ConsoleAgent.enable(); + + if (this.HeapAgent) + this.HeapAgent.enable(); + } + + // Protected (Target) + + get displayName() + { + return WebInspector.displayNameForURL(this._name); + } +}; |