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

Unified Diff: third_party/WebKit/Source/devtools/front_end/sdk/RuntimeModel.js

Issue 1942073002: [DevTools] Move getCompletions to native (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/sdk/RuntimeModel.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/RuntimeModel.js b/third_party/WebKit/Source/devtools/front_end/sdk/RuntimeModel.js
index 27c6654ac05900f7b7272db5b86f7dce987913c5..a5331fe454d6cb8987240b25bc995867a6f5d857 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/RuntimeModel.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/RuntimeModel.js
@@ -511,11 +511,13 @@ WebInspector.ExecutionContext.prototype = {
}
if (!expressionString && this.debuggerModel.selectedCallFrame())
- this.debuggerModel.selectedCallFrame().variableNames(receivedPropertyNames.bind(this));
+ this.debuggerModel.selectedCallFrame().variableNames((names) => receivedPropertyNames.call(this, Object.keys(names)));
else
this.evaluate(expressionString, "completion", true, true, false, false, false, evaluated.bind(this));
/**
+ * @param {?WebInspector.RemoteObject} result
+ * @param {boolean} wasThrown
* @this {WebInspector.ExecutionContext}
*/
function evaluated(result, wasThrown)
@@ -524,64 +526,11 @@ WebInspector.ExecutionContext.prototype = {
completionsReadyCallback([]);
return;
}
-
- /**
- * @param {string=} type
- * @suppressReceiverCheck
- * @this {WebInspector.ExecutionContext}
- */
- function getCompletions(type)
- {
- var object;
- if (type === "string")
- object = new String("");
- else if (type === "number")
- object = new Number(0);
- else if (type === "boolean")
- object = new Boolean(false);
- else
- object = this;
-
- var resultSet = {};
- try {
- for (var o = object; o; o = o.__proto__) {
- if (type === "array" && o === object && ArrayBuffer.isView(o) && o.length > 9999)
- continue;
- var names = Object.getOwnPropertyNames(o);
- var isArray = Array.isArray(o);
- for (var i = 0; i < names.length; ++i) {
- // Skip array elements indexes.
- if (isArray && /^[0-9]/.test(names[i]))
- continue;
- resultSet[names[i]] = true;
- }
- }
- } catch (e) {
- }
- return resultSet;
- }
-
- if (result.type === "object" || result.type === "function")
- result.callFunctionJSON(getCompletions, [WebInspector.RemoteObject.toCallArgument(result.subtype)], receivedPropertyNames.bind(this));
- else if (result.type === "string" || result.type === "number" || result.type === "boolean")
- this.evaluate("(" + getCompletions + ")(\"" + result.type + "\")", "completion", false, true, true, false, false, receivedPropertyNamesFromEval.bind(this));
- }
-
- /**
- * @param {?WebInspector.RemoteObject} notRelevant
- * @param {boolean} wasThrown
- * @param {?RuntimeAgent.RemoteObject=} result
- * @this {WebInspector.ExecutionContext}
- */
- function receivedPropertyNamesFromEval(notRelevant, wasThrown, result)
- {
- if (result && !wasThrown)
- receivedPropertyNames.call(this, result.value);
- else
- completionsReadyCallback([]);
+ result.getCompletionsPromise().then(receivedPropertyNames.bind(this));
}
/**
+ * @param {?Array<string>} propertyNames
* @this {WebInspector.ExecutionContext}
*/
function receivedPropertyNames(propertyNames)
@@ -596,9 +545,10 @@ WebInspector.ExecutionContext.prototype = {
const commandLineAPI = ["dir", "dirxml", "keys", "values", "profile", "profileEnd", "monitorEvents", "unmonitorEvents", "inspect", "copy", "clear",
"getEventListeners", "debug", "undebug", "monitor", "unmonitor", "table", "$", "$$", "$x"];
for (var i = 0; i < commandLineAPI.length; ++i)
- propertyNames[commandLineAPI[i]] = true;
+ propertyNames.push(commandLineAPI[i]);
}
- this._reportCompletions(completionsReadyCallback, dotNotation, bracketNotation, expressionString, prefix, Object.keys(propertyNames));
+ propertyNames.sort();
+ this._reportCompletions(completionsReadyCallback, dotNotation, bracketNotation, expressionString, prefix, propertyNames);
}
},

Powered by Google App Engine
This is Rietveld 408576698