summaryrefslogtreecommitdiff
path: root/Source/WebInspectorUI/UserInterface/RemoteObject.js
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebInspectorUI/UserInterface/RemoteObject.js
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebInspectorUI/UserInterface/RemoteObject.js')
-rw-r--r--Source/WebInspectorUI/UserInterface/RemoteObject.js492
1 files changed, 0 insertions, 492 deletions
diff --git a/Source/WebInspectorUI/UserInterface/RemoteObject.js b/Source/WebInspectorUI/UserInterface/RemoteObject.js
deleted file mode 100644
index 9a9a1d304..000000000
--- a/Source/WebInspectorUI/UserInterface/RemoteObject.js
+++ /dev/null
@@ -1,492 +0,0 @@
-/*
- * Copyright (C) 2009 Google 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.
- */
-
-/**
- * @constructor
- * @param {string|undefined} objectId
- * @param {string} type
- * @param {string|undefined} subtype
- * @param {*} value
- * @param {string=} description
- */
-WebInspector.RemoteObject = function(objectId, type, subtype, value, description)
-{
- this._type = type;
- this._subtype = subtype;
- if (objectId) {
- // handle
- this._objectId = objectId;
- this._description = description;
- this._hasChildren = true;
- } else {
- // Primitive or null object.
- console.assert(type !== "object" || value === null);
- this._description = description || (value + "");
- this._hasChildren = false;
- this.value = value;
- }
-}
-
-/**
- * @param {number|string|boolean} value
- * @return {WebInspector.RemoteObject}
- */
-WebInspector.RemoteObject.fromPrimitiveValue = function(value)
-{
- return new WebInspector.RemoteObject(undefined, typeof value, undefined, value);
-}
-
-/**
- * @param {Object} value
- * @return {WebInspector.RemoteObject}
- */
-WebInspector.RemoteObject.fromLocalObject = function(value)
-{
- return new WebInspector.LocalJSONObject(value);
-}
-
-/**
- * @param {WebInspector.DOMNode} node
- * @param {string} objectGroup
- * @param {function(?WebInspector.RemoteObject)} callback
- */
-WebInspector.RemoteObject.resolveNode = function(node, objectGroup, callback)
-{
- /**
- * @param {?Protocol.Error} error
- * @param {RuntimeAgent.RemoteObject} object
- */
- function mycallback(error, object)
- {
- if (!callback)
- return;
-
- if (error || !object)
- callback(null);
- else
- callback(WebInspector.RemoteObject.fromPayload(object));
- }
- DOMAgent.resolveNode(node.id, objectGroup, mycallback);
-}
-
-/**
- * @param {RuntimeAgent.RemoteObject} payload
- * @return {WebInspector.RemoteObject}
- */
-WebInspector.RemoteObject.fromPayload = function(payload)
-{
- console.assert(typeof payload === "object", "Remote object payload should only be an object");
-
- return new WebInspector.RemoteObject(payload.objectId, payload.type, payload.subtype, payload.value, payload.description);
-}
-
-/**
- * @param {WebInspector.RemoteObject} remoteObject
- * @return {string}
- */
-WebInspector.RemoteObject.type = function(remoteObject)
-{
- if (remoteObject === null)
- return "null";
-
- var type = typeof remoteObject;
- if (type !== "object" && type !== "function")
- return type;
-
- return remoteObject.type;
-}
-
-WebInspector.RemoteObject.prototype = {
- /** @return {RuntimeAgent.RemoteObjectId} */
- get objectId()
- {
- return this._objectId;
- },
-
- /** @return {string} */
- get type()
- {
- return this._type;
- },
-
- /** @return {string|undefined} */
- get subtype()
- {
- return this._subtype;
- },
-
- /** @return {string|undefined} */
- get description()
- {
- return this._description;
- },
-
- /** @return {boolean} */
- get hasChildren()
- {
- return this._hasChildren;
- },
-
- /**
- * @param {function(Array.<WebInspector.RemoteObjectProperty>)} callback
- */
- getOwnProperties: function(callback)
- {
- this._getProperties(true, callback);
- },
-
- /**
- * @param {function(Array.<WebInspector.RemoteObjectProperty>)} callback
- */
- getAllProperties: function(callback)
- {
- this._getProperties(false, callback);
- },
-
- /**
- * @param {boolean} ownProperties
- * @param {function(Array.<RuntimeAgent.RemoteObject>)} callback
- */
- _getProperties: function(ownProperties, callback)
- {
- if (!this._objectId) {
- callback([]);
- return;
- }
-
- /**
- * @param {?Protocol.Error} error
- * @param {Array.<WebInspector.RemoteObjectProperty>} properties
- */
- function remoteObjectBinder(error, properties)
- {
- if (error) {
- callback(null);
- return;
- }
- 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.RemoteObjectProperty("get " + property.name, WebInspector.RemoteObject.fromPayload(property.get), property));
- if (property.set)
- result.push(new WebInspector.RemoteObjectProperty("set " + property.name, WebInspector.RemoteObject.fromPayload(property.set), property));
- } else
- result.push(new WebInspector.RemoteObjectProperty(property.name, WebInspector.RemoteObject.fromPayload(property.value), property));
- }
- callback(result);
- }
- RuntimeAgent.getProperties(this._objectId, ownProperties, remoteObjectBinder);
- },
-
- /**
- * @param {string} name
- * @param {string} value
- * @param {function(string=)} callback
- */
- setPropertyValue: function(name, value, callback)
- {
- if (!this._objectId) {
- callback("Can't set a property of non-object.");
- return;
- }
-
- RuntimeAgent.evaluate.invoke({expression:value, doNotPauseOnExceptionsAndMuteConsole:true}, evaluatedCallback.bind(this));
-
- /**
- * @param {?Protocol.Error} error
- * @param {RuntimeAgent.RemoteObject} result
- * @param {boolean=} wasThrown
- */
- 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.
- RuntimeAgent.callFunctionOn(this._objectId, setPropertyValue.toString(), [{ value:name }, result], true, undefined, propertySetCallback.bind(this));
- if (result._objectId)
- RuntimeAgent.releaseObject(result._objectId);
- }
-
- /**
- * @param {?Protocol.Error} error
- * @param {RuntimeAgent.RemoteObject} result
- * @param {boolean=} wasThrown
- */
- function propertySetCallback(error, result, wasThrown)
- {
- if (error || wasThrown) {
- callback(error || result.description);
- return;
- }
- callback();
- }
- },
-
- /**
- * @param {function(DOMAgent.NodeId)} callback
- */
- pushNodeToFrontend: function(callback)
- {
- if (this._objectId)
- WebInspector.domTreeManager.pushNodeToFrontend(this._objectId, callback);
- else
- callback(0);
- },
-
- /**
- * @param {string} functionDeclaration
- * @param {function(?WebInspector.RemoteObject)} callback
- */
- callFunction: function(functionDeclaration, args, callback)
- {
- function mycallback(error, result, wasThrown)
- {
- callback((error || wasThrown) ? null : WebInspector.RemoteObject.fromPayload(result));
- }
-
- RuntimeAgent.callFunctionOn(this._objectId, functionDeclaration.toString(), args, true, undefined, mycallback);
- },
-
- /**
- * @param {string} functionDeclaration
- * @param {function(*)} callback
- */
- callFunctionJSON: function(functionDeclaration, args, callback)
- {
- function mycallback(error, result, wasThrown)
- {
- callback((error || wasThrown) ? null : result.value);
- }
-
- RuntimeAgent.callFunctionOn(this._objectId, functionDeclaration.toString(), args, true, true, mycallback);
- },
-
- release: function()
- {
- RuntimeAgent.releaseObject(this._objectId);
- },
-
- /**
- * @return {number}
- */
- arrayLength: function()
- {
- if (this.subtype !== "array")
- return 0;
-
- var matches = this._description.match(/\[([0-9]+)\]/);
- if (!matches)
- return 0;
- return parseInt(matches[1], 10);
- }
-}
-
-/**
- * @constructor
- * @param {string} name
- * @param {WebInspector.RemoteObject} value
- * @param {Object=} descriptor
- */
-WebInspector.RemoteObjectProperty = function(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;
-}
-
-/**
- * @param {string} name
- * @param {string} value
- * @return {WebInspector.RemoteObjectProperty}
- */
-WebInspector.RemoteObjectProperty.fromPrimitiveValue = function(name, value)
-{
- return new WebInspector.RemoteObjectProperty(name, WebInspector.RemoteObject.fromPrimitiveValue(value));
-}
-
-// The below is a wrapper around a local object that provides an interface comaptible
-// with RemoteObject, to be used by the UI code (primarily ObjectPropertiesSection).
-// Note that only JSON-compliant objects are currently supported, as there's no provision
-// for traversing prototypes, extracting class names via constuctor, handling properties
-// or functions.
-
-/**
- * @constructor
- * @extends {WebInspector.RemoteObject}
- * @param {Object} value
- */
-WebInspector.LocalJSONObject = function(value)
-{
- this._value = value;
-}
-
-WebInspector.LocalJSONObject.prototype = {
- /**
- * @return {string}
- */
- get description()
- {
- if (this._cachedDescription)
- return this._cachedDescription;
-
- if (this.type === "object") {
- switch (this.subtype) {
- case "array":
- function formatArrayItem(property)
- {
- return property.value.description;
- }
- this._cachedDescription = this._concatenate("[", "]", formatArrayItem);
- break;
- case "null":
- this._cachedDescription = "null";
- break;
- default:
- function formatObjectItem(property)
- {
- return property.name + ":" + property.value.description;
- }
- this._cachedDescription = this._concatenate("{", "}", formatObjectItem);
- }
- } else
- this._cachedDescription = String(this._value);
-
- return this._cachedDescription;
- },
-
- /**
- * @param {string} prefix
- * @param {string} suffix
- * @return {string}
- */
- _concatenate: function(prefix, suffix, formatProperty)
- {
- const previewChars = 100;
-
- var buffer = prefix;
- var children = this._children();
- for (var i = 0; i < children.length; ++i) {
- var itemDescription = formatProperty(children[i]);
- if (buffer.length + itemDescription.length > previewChars) {
- buffer += ",\u2026";
- break;
- }
- if (i)
- buffer += ", ";
- buffer += itemDescription;
- }
- buffer += suffix;
- return buffer;
- },
-
- /**
- * @return {string}
- */
- get type()
- {
- return typeof this._value;
- },
-
- /**
- * @return {string|undefined}
- */
- get subtype()
- {
- if (this._value === null)
- return "null";
-
- if (this._value instanceof Array)
- return "array";
-
- return undefined;
- },
-
- /**
- * @return {boolean}
- */
- get hasChildren()
- {
- return typeof this._value === "object" && this._value !== null && !isEmptyObject(this._value);
- },
-
- /**
- * @param {function(Array.<WebInspector.RemoteObjectProperty>)} callback
- */
- getOwnProperties: function(callback)
- {
- callback(this._children());
- },
-
- /**
- * @param {function(Array.<WebInspector.RemoteObjectProperty>)} callback
- */
- getAllProperties: function(callback)
- {
- callback(this._children());
- },
-
- /**
- * @return {Array.<WebInspector.RemoteObjectProperty>}
- */
- _children: function()
- {
- if (!this.hasChildren)
- return [];
-
- function buildProperty(propName)
- {
- return new WebInspector.RemoteObjectProperty(propName, new WebInspector.LocalJSONObject(this._value[propName]));
- }
- if (!this._cachedChildren)
- this._cachedChildren = Object.keys(this._value || {}).map(buildProperty.bind(this));
- return this._cachedChildren;
- },
-
- /**
- * @return {boolean}
- */
- isError: function()
- {
- return false;
- }
-}