| Index: third_party/WebKit/Source/platform/v8_inspector/InjectedScriptSource.js
|
| diff --git a/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptSource.js b/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptSource.js
|
| index 70aeacfd9b6aa72165be383433e9ee4b969d13dd..1a9ae17fbbc84ecdc86c23c73c9b7b0a65e32385 100644
|
| --- a/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptSource.js
|
| +++ b/third_party/WebKit/Source/platform/v8_inspector/InjectedScriptSource.js
|
| @@ -599,9 +599,8 @@ InjectedScript.prototype = {
|
| // NOTE: This list contains only not native Command Line API methods. For full list: V8Console.
|
| // NOTE: Argument names of these methods will be printed in the console, so use pretty names!
|
| var members = [ "$", "$$", "$x", "monitorEvents", "unmonitorEvents", "getEventListeners" ];
|
| - var commandLineAPIImpl = this._commandLineAPIImpl;
|
| for (var member of members)
|
| - nativeCommandLineAPI[member] = bind(commandLineAPIImpl[member], commandLineAPIImpl);
|
| + nativeCommandLineAPI[member] = CommandLineAPIImpl[member];
|
| var functionToStringMap = new Map([
|
| ["$", "function $(selector, [startNode]) { [Command Line API] }"],
|
| ["$$", "function $$(selector, [startNode]) { [Command Line API] }"],
|
| @@ -1148,187 +1147,179 @@ InjectedScript.RemoteObject.prototype = {
|
| __proto__: null
|
| }
|
|
|
| +var CommandLineAPIImpl = { __proto__: null }
|
| +
|
| /**
|
| - * @constructor
|
| + * @param {string} selector
|
| + * @param {!Node=} opt_startNode
|
| + * @return {*}
|
| */
|
| -function CommandLineAPIImpl()
|
| +CommandLineAPIImpl.$ = function (selector, opt_startNode)
|
| {
|
| + if (CommandLineAPIImpl._canQuerySelectorOnNode(opt_startNode))
|
| + return opt_startNode.querySelector(selector);
|
| +
|
| + return inspectedGlobalObject.document.querySelector(selector);
|
| }
|
|
|
| -CommandLineAPIImpl.prototype = {
|
| - /**
|
| - * @param {string} selector
|
| - * @param {!Node=} opt_startNode
|
| - * @return {*}
|
| - */
|
| - $: function (selector, opt_startNode)
|
| - {
|
| - if (this._canQuerySelectorOnNode(opt_startNode))
|
| - return opt_startNode.querySelector(selector);
|
| +/**
|
| + * @param {string} selector
|
| + * @param {!Node=} opt_startNode
|
| + * @return {*}
|
| + */
|
| +CommandLineAPIImpl.$$ = function (selector, opt_startNode)
|
| +{
|
| + if (CommandLineAPIImpl._canQuerySelectorOnNode(opt_startNode))
|
| + return slice(opt_startNode.querySelectorAll(selector));
|
| + return slice(inspectedGlobalObject.document.querySelectorAll(selector));
|
| +}
|
|
|
| - return inspectedGlobalObject.document.querySelector(selector);
|
| - },
|
| +/**
|
| + * @param {!Node=} node
|
| + * @return {boolean}
|
| + */
|
| +CommandLineAPIImpl._canQuerySelectorOnNode = function(node)
|
| +{
|
| + return !!node && InjectedScriptHost.subtype(node) === "node" && (node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE);
|
| +}
|
|
|
| - /**
|
| - * @param {string} selector
|
| - * @param {!Node=} opt_startNode
|
| - * @return {*}
|
| - */
|
| - $$: function (selector, opt_startNode)
|
| - {
|
| - if (this._canQuerySelectorOnNode(opt_startNode))
|
| - return slice(opt_startNode.querySelectorAll(selector));
|
| - return slice(inspectedGlobalObject.document.querySelectorAll(selector));
|
| - },
|
| +/**
|
| + * @param {string} xpath
|
| + * @param {!Node=} opt_startNode
|
| + * @return {*}
|
| + */
|
| +CommandLineAPIImpl.$x = function(xpath, opt_startNode)
|
| +{
|
| + var doc = (opt_startNode && opt_startNode.ownerDocument) || inspectedGlobalObject.document;
|
| + var result = doc.evaluate(xpath, opt_startNode || doc, null, XPathResult.ANY_TYPE, null);
|
| + switch (result.resultType) {
|
| + case XPathResult.NUMBER_TYPE:
|
| + return result.numberValue;
|
| + case XPathResult.STRING_TYPE:
|
| + return result.stringValue;
|
| + case XPathResult.BOOLEAN_TYPE:
|
| + return result.booleanValue;
|
| + default:
|
| + var nodes = [];
|
| + var node;
|
| + while (node = result.iterateNext())
|
| + push(nodes, node);
|
| + return nodes;
|
| + }
|
| +}
|
|
|
| - /**
|
| - * @param {!Node=} node
|
| - * @return {boolean}
|
| - */
|
| - _canQuerySelectorOnNode: function(node)
|
| - {
|
| - return !!node && InjectedScriptHost.subtype(node) === "node" && (node.nodeType === Node.ELEMENT_NODE || node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE);
|
| - },
|
| +/**
|
| + * @param {!Object} object
|
| + * @param {!Array.<string>|string=} opt_types
|
| + */
|
| +CommandLineAPIImpl.monitorEvents = function(object, opt_types)
|
| +{
|
| + if (!object || !object.addEventListener || !object.removeEventListener)
|
| + return;
|
| + var types = CommandLineAPIImpl._normalizeEventTypes(opt_types);
|
| + for (var i = 0; i < types.length; ++i) {
|
| + object.removeEventListener(types[i], CommandLineAPIImpl._logEvent, false);
|
| + object.addEventListener(types[i], CommandLineAPIImpl._logEvent, false);
|
| + }
|
| +}
|
|
|
| - /**
|
| - * @param {string} xpath
|
| - * @param {!Node=} opt_startNode
|
| - * @return {*}
|
| - */
|
| - $x: function(xpath, opt_startNode)
|
| - {
|
| - var doc = (opt_startNode && opt_startNode.ownerDocument) || inspectedGlobalObject.document;
|
| - var result = doc.evaluate(xpath, opt_startNode || doc, null, XPathResult.ANY_TYPE, null);
|
| - switch (result.resultType) {
|
| - case XPathResult.NUMBER_TYPE:
|
| - return result.numberValue;
|
| - case XPathResult.STRING_TYPE:
|
| - return result.stringValue;
|
| - case XPathResult.BOOLEAN_TYPE:
|
| - return result.booleanValue;
|
| - default:
|
| - var nodes = [];
|
| - var node;
|
| - while (node = result.iterateNext())
|
| - push(nodes, node);
|
| - return nodes;
|
| - }
|
| - },
|
| +/**
|
| + * @param {!Object} object
|
| + * @param {!Array.<string>|string=} opt_types
|
| + */
|
| +CommandLineAPIImpl.unmonitorEvents = function(object, opt_types)
|
| +{
|
| + if (!object || !object.addEventListener || !object.removeEventListener)
|
| + return;
|
| + var types = CommandLineAPIImpl._normalizeEventTypes(opt_types);
|
| + for (var i = 0; i < types.length; ++i)
|
| + object.removeEventListener(types[i], CommandLineAPIImpl._logEvent, false);
|
| +}
|
|
|
| - /**
|
| - * @param {!Object} object
|
| - * @param {!Array.<string>|string=} opt_types
|
| - */
|
| - monitorEvents: function(object, opt_types)
|
| - {
|
| - if (!object || !object.addEventListener || !object.removeEventListener)
|
| - return;
|
| - var types = this._normalizeEventTypes(opt_types);
|
| - for (var i = 0; i < types.length; ++i) {
|
| - object.removeEventListener(types[i], this._logEvent, false);
|
| - object.addEventListener(types[i], this._logEvent, false);
|
| - }
|
| - },
|
| +/**
|
| + * @param {!Node} node
|
| + * @return {!Object|undefined}
|
| + */
|
| +CommandLineAPIImpl.getEventListeners = function(node)
|
| +{
|
| + var result = nullifyObjectProto(InjectedScriptHost.getEventListeners(node));
|
| + if (!result)
|
| + return;
|
|
|
| - /**
|
| - * @param {!Object} object
|
| - * @param {!Array.<string>|string=} opt_types
|
| - */
|
| - unmonitorEvents: function(object, opt_types)
|
| + // TODO(dtapuska): Remove this one closure compiler is updated
|
| + // to handle EventListenerOptions and passive event listeners
|
| + // has shipped. Don't JSDoc these otherwise it will fail.
|
| + // @param {boolean} capture
|
| + // @param {boolean} passive
|
| + // @return {boolean|undefined|{capture: (boolean|undefined), passive: boolean}}
|
| + function eventListenerOptions(capture, passive)
|
| {
|
| - if (!object || !object.addEventListener || !object.removeEventListener)
|
| - return;
|
| - var types = this._normalizeEventTypes(opt_types);
|
| - for (var i = 0; i < types.length; ++i)
|
| - object.removeEventListener(types[i], this._logEvent, false);
|
| - },
|
| + return {"capture": capture, "passive": passive};
|
| + }
|
|
|
| /**
|
| * @param {!Node} node
|
| - * @return {!Object|undefined}
|
| + * @param {string} type
|
| + * @param {function()} listener
|
| + * @param {boolean} capture
|
| + * @param {boolean} passive
|
| */
|
| - getEventListeners: function(node)
|
| + function removeEventListenerWrapper(node, type, listener, capture, passive)
|
| {
|
| - var result = nullifyObjectProto(InjectedScriptHost.getEventListeners(node));
|
| - if (!result)
|
| - return;
|
| -
|
| - // TODO(dtapuska): Remove this one closure compiler is updated
|
| - // to handle EventListenerOptions and passive event listeners
|
| - // has shipped. Don't JSDoc these otherwise it will fail.
|
| - // @param {boolean} capture
|
| - // @param {boolean} passive
|
| - // @return {boolean|undefined|{capture: (boolean|undefined), passive: boolean}}
|
| - function eventListenerOptions(capture, passive)
|
| - {
|
| - return {"capture": capture, "passive": passive};
|
| - }
|
| -
|
| - /**
|
| - * @param {!Node} node
|
| - * @param {string} type
|
| - * @param {function()} listener
|
| - * @param {boolean} capture
|
| - * @param {boolean} passive
|
| - */
|
| - function removeEventListenerWrapper(node, type, listener, capture, passive)
|
| - {
|
| - node.removeEventListener(type, listener, eventListenerOptions(capture, passive));
|
| - }
|
| -
|
| - /** @this {{type: string, listener: function(), useCapture: boolean, passive: boolean}} */
|
| - var removeFunc = function()
|
| - {
|
| - removeEventListenerWrapper(node, this.type, this.listener, this.useCapture, this.passive);
|
| - }
|
| - for (var type in result) {
|
| - var listeners = result[type];
|
| - for (var i = 0, listener; listener = listeners[i]; ++i) {
|
| - listener["type"] = type;
|
| - listener["remove"] = removeFunc;
|
| - }
|
| - }
|
| - return result;
|
| - },
|
| + node.removeEventListener(type, listener, eventListenerOptions(capture, passive));
|
| + }
|
|
|
| - /**
|
| - * @param {!Array.<string>|string=} types
|
| - * @return {!Array.<string>}
|
| - */
|
| - _normalizeEventTypes: function(types)
|
| + /** @this {{type: string, listener: function(), useCapture: boolean, passive: boolean}} */
|
| + var removeFunc = function()
|
| {
|
| - if (typeof types === "undefined")
|
| - types = ["mouse", "key", "touch", "pointer", "control", "load", "unload", "abort", "error", "select", "input", "change", "submit", "reset", "focus", "blur", "resize", "scroll", "search", "devicemotion", "deviceorientation"];
|
| - else if (typeof types === "string")
|
| - types = [types];
|
| -
|
| - var result = [];
|
| - for (var i = 0; i < types.length; ++i) {
|
| - if (types[i] === "mouse")
|
| - push(result, "click", "dblclick", "mousedown", "mouseeenter", "mouseleave", "mousemove", "mouseout", "mouseover", "mouseup", "mouseleave", "mousewheel");
|
| - else if (types[i] === "key")
|
| - push(result, "keydown", "keyup", "keypress", "textInput");
|
| - else if (types[i] === "touch")
|
| - push(result, "touchstart", "touchmove", "touchend", "touchcancel");
|
| - else if (types[i] === "pointer")
|
| - push(result, "pointerover", "pointerout", "pointerenter", "pointerleave", "pointerdown", "pointerup", "pointermove", "pointercancel", "gotpointercapture", "lostpointercapture");
|
| - else if (types[i] === "control")
|
| - push(result, "resize", "scroll", "zoom", "focus", "blur", "select", "input", "change", "submit", "reset");
|
| - else
|
| - push(result, types[i]);
|
| + removeEventListenerWrapper(node, this.type, this.listener, this.useCapture, this.passive);
|
| + }
|
| + for (var type in result) {
|
| + var listeners = result[type];
|
| + for (var i = 0, listener; listener = listeners[i]; ++i) {
|
| + listener["type"] = type;
|
| + listener["remove"] = removeFunc;
|
| }
|
| - return result;
|
| - },
|
| + }
|
| + return result;
|
| +}
|
|
|
| - /**
|
| - * @param {!Event} event
|
| - */
|
| - _logEvent: function(event)
|
| - {
|
| - inspectedGlobalObject.console.log(event.type, event);
|
| +/**
|
| + * @param {!Array.<string>|string=} types
|
| + * @return {!Array.<string>}
|
| + */
|
| +CommandLineAPIImpl._normalizeEventTypes = function(types)
|
| +{
|
| + if (typeof types === "undefined")
|
| + types = ["mouse", "key", "touch", "pointer", "control", "load", "unload", "abort", "error", "select", "input", "change", "submit", "reset", "focus", "blur", "resize", "scroll", "search", "devicemotion", "deviceorientation"];
|
| + else if (typeof types === "string")
|
| + types = [types];
|
| +
|
| + var result = [];
|
| + for (var i = 0; i < types.length; ++i) {
|
| + if (types[i] === "mouse")
|
| + push(result, "click", "dblclick", "mousedown", "mouseeenter", "mouseleave", "mousemove", "mouseout", "mouseover", "mouseup", "mouseleave", "mousewheel");
|
| + else if (types[i] === "key")
|
| + push(result, "keydown", "keyup", "keypress", "textInput");
|
| + else if (types[i] === "touch")
|
| + push(result, "touchstart", "touchmove", "touchend", "touchcancel");
|
| + else if (types[i] === "pointer")
|
| + push(result, "pointerover", "pointerout", "pointerenter", "pointerleave", "pointerdown", "pointerup", "pointermove", "pointercancel", "gotpointercapture", "lostpointercapture");
|
| + else if (types[i] === "control")
|
| + push(result, "resize", "scroll", "zoom", "focus", "blur", "select", "input", "change", "submit", "reset");
|
| + else
|
| + push(result, types[i]);
|
| }
|
| + return result;
|
| +}
|
| +
|
| +/**
|
| + * @param {!Event} event
|
| + */
|
| +CommandLineAPIImpl._logEvent = function(event)
|
| +{
|
| + inspectedGlobalObject.console.log(event.type, event);
|
| }
|
|
|
| -injectedScript._commandLineAPIImpl = new CommandLineAPIImpl();
|
| return injectedScript;
|
| })
|
|
|