Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(19)

Side by Side Diff: third_party/WebKit/Source/platform/v8_inspector/InjectedScriptSource.js

Issue 1983423002: [DevTools] Move CommandLineAPI querySelector and querySelectorAll to native (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@pass-bind-remote-object
Patch Set: rebased Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2007 Apple Inc. All rights reserved.
3 * Copyright (C) 2013 Google Inc. All rights reserved. 3 * Copyright (C) 2013 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 * @param {...} var_args 47 * @param {...} var_args
48 * @template T 48 * @template T
49 */ 49 */
50 function push(array, var_args) 50 function push(array, var_args)
51 { 51 {
52 for (var i = 1; i < arguments.length; ++i) 52 for (var i = 1; i < arguments.length; ++i)
53 array[array.length] = arguments[i]; 53 array[array.length] = arguments[i];
54 } 54 }
55 55
56 /** 56 /**
57 * @param {(!Arguments.<T>|!NodeList)} array
58 * @param {number=} index
59 * @return {!Array.<T>}
60 * @template T
61 */
62 function slice(array, index)
63 {
64 var result = [];
65 for (var i = index || 0, j = 0; i < array.length; ++i, ++j)
66 result[j] = array[i];
67 return result;
68 }
69
70 /**
71 * @param {*} obj 57 * @param {*} obj
72 * @return {string} 58 * @return {string}
73 * @suppress {uselessCode} 59 * @suppress {uselessCode}
74 */ 60 */
75 function toString(obj) 61 function toString(obj)
76 { 62 {
77 // We don't use String(obj) because String16 could be overridden. 63 // We don't use String(obj) because String16 could be overridden.
78 // Also the ("" + obj) expression may throw. 64 // Also the ("" + obj) expression may throw.
79 try { 65 try {
80 return "" + obj; 66 return "" + obj;
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 }, 521 },
536 522
537 /** 523 /**
538 * @param {!Object} nativeCommandLineAPI 524 * @param {!Object} nativeCommandLineAPI
539 * @return {!Object} 525 * @return {!Object}
540 */ 526 */
541 installCommandLineAPI: function(nativeCommandLineAPI) 527 installCommandLineAPI: function(nativeCommandLineAPI)
542 { 528 {
543 // NOTE: This list contains only not native Command Line API methods. Fo r full list: V8Console. 529 // NOTE: This list contains only not native Command Line API methods. Fo r full list: V8Console.
544 // NOTE: Argument names of these methods will be printed in the console, so use pretty names! 530 // NOTE: Argument names of these methods will be printed in the console, so use pretty names!
545 var members = [ "$", "$$", "$x", "monitorEvents", "unmonitorEvents", "ge tEventListeners" ]; 531 var members = [ "monitorEvents", "unmonitorEvents", "getEventListeners" ];
546 for (var member of members) 532 for (var member of members)
547 nativeCommandLineAPI[member] = CommandLineAPIImpl[member]; 533 nativeCommandLineAPI[member] = CommandLineAPIImpl[member];
548 var functionToStringMap = new Map([ 534 var functionToStringMap = new Map([
549 ["$", "function $(selector, [startNode]) { [Command Line AP I] }"],
550 ["$$", "function $$(selector, [startNode]) { [Command Line A PI] }"],
551 ["$x", "function $x(xpath, [startNode]) { [Command Line API] }"],
552 ["monitorEvents", "function monitorEvents(object, [types]) { [Comm and Line API] }"], 535 ["monitorEvents", "function monitorEvents(object, [types]) { [Comm and Line API] }"],
553 ["unmonitorEvents", "function unmonitorEvents(object, [types]) { [Co mmand Line API] }"], 536 ["unmonitorEvents", "function unmonitorEvents(object, [types]) { [Co mmand Line API] }"],
554 ["getEventListeners", "function getEventListeners(node) { [Command L ine API] }"] 537 ["getEventListeners", "function getEventListeners(node) { [Command L ine API] }"]
555 ]); 538 ]);
556 for (let entry of functionToStringMap) 539 for (let entry of functionToStringMap)
557 nativeCommandLineAPI[entry[0]].toString = (() => entry[1]); 540 nativeCommandLineAPI[entry[0]].toString = (() => entry[1]);
558 return nativeCommandLineAPI; 541 return nativeCommandLineAPI;
559 }, 542 },
560 543
561 /** 544 /**
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
1040 } 1023 }
1041 return string.substr(0, maxLength) + "\u2026"; 1024 return string.substr(0, maxLength) + "\u2026";
1042 }, 1025 },
1043 1026
1044 __proto__: null 1027 __proto__: null
1045 } 1028 }
1046 1029
1047 var CommandLineAPIImpl = { __proto__: null } 1030 var CommandLineAPIImpl = { __proto__: null }
1048 1031
1049 /** 1032 /**
1050 * @param {string} selector
1051 * @param {!Node=} opt_startNode
1052 * @return {*}
1053 */
1054 CommandLineAPIImpl.$ = function (selector, opt_startNode)
1055 {
1056 if (CommandLineAPIImpl._canQuerySelectorOnNode(opt_startNode))
1057 return opt_startNode.querySelector(selector);
1058
1059 return inspectedGlobalObject.document.querySelector(selector);
1060 }
1061
1062 /**
1063 * @param {string} selector
1064 * @param {!Node=} opt_startNode
1065 * @return {*}
1066 */
1067 CommandLineAPIImpl.$$ = function (selector, opt_startNode)
1068 {
1069 if (CommandLineAPIImpl._canQuerySelectorOnNode(opt_startNode))
1070 return slice(opt_startNode.querySelectorAll(selector));
1071 return slice(inspectedGlobalObject.document.querySelectorAll(selector));
1072 }
1073
1074 /**
1075 * @param {!Node=} node
1076 * @return {boolean}
1077 */
1078 CommandLineAPIImpl._canQuerySelectorOnNode = function(node)
1079 {
1080 return !!node && InjectedScriptHost.subtype(node) === "node" && (node.nodeTy pe === Node.ELEMENT_NODE || node.nodeType === Node.DOCUMENT_NODE || node.nodeTyp e === Node.DOCUMENT_FRAGMENT_NODE);
1081 }
1082
1083 /**
1084 * @param {string} xpath
1085 * @param {!Node=} opt_startNode
1086 * @return {*}
1087 */
1088 CommandLineAPIImpl.$x = function(xpath, opt_startNode)
1089 {
1090 var doc = (opt_startNode && opt_startNode.ownerDocument) || inspectedGlobalO bject.document;
1091 var result = doc.evaluate(xpath, opt_startNode || doc, null, XPathResult.ANY _TYPE, null);
1092 switch (result.resultType) {
1093 case XPathResult.NUMBER_TYPE:
1094 return result.numberValue;
1095 case XPathResult.STRING_TYPE:
1096 return result.stringValue;
1097 case XPathResult.BOOLEAN_TYPE:
1098 return result.booleanValue;
1099 default:
1100 var nodes = [];
1101 var node;
1102 while (node = result.iterateNext())
1103 push(nodes, node);
1104 return nodes;
1105 }
1106 }
1107
1108 /**
1109 * @param {!Object} object 1033 * @param {!Object} object
1110 * @param {!Array.<string>|string=} opt_types 1034 * @param {!Array.<string>|string=} opt_types
1111 */ 1035 */
1112 CommandLineAPIImpl.monitorEvents = function(object, opt_types) 1036 CommandLineAPIImpl.monitorEvents = function(object, opt_types)
1113 { 1037 {
1114 if (!object || !object.addEventListener || !object.removeEventListener) 1038 if (!object || !object.addEventListener || !object.removeEventListener)
1115 return; 1039 return;
1116 var types = CommandLineAPIImpl._normalizeEventTypes(opt_types); 1040 var types = CommandLineAPIImpl._normalizeEventTypes(opt_types);
1117 for (var i = 0; i < types.length; ++i) { 1041 for (var i = 0; i < types.length; ++i) {
1118 object.removeEventListener(types[i], CommandLineAPIImpl._logEvent, false ); 1042 object.removeEventListener(types[i], CommandLineAPIImpl._logEvent, false );
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
1213 /** 1137 /**
1214 * @param {!Event} event 1138 * @param {!Event} event
1215 */ 1139 */
1216 CommandLineAPIImpl._logEvent = function(event) 1140 CommandLineAPIImpl._logEvent = function(event)
1217 { 1141 {
1218 inspectedGlobalObject.console.log(event.type, event); 1142 inspectedGlobalObject.console.log(event.type, event);
1219 } 1143 }
1220 1144
1221 return injectedScript; 1145 return injectedScript;
1222 }) 1146 })
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698