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

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

Issue 300393002: Merge DevTools Refactor CL to Blink36 (Closed) Base URL: svn://svn.chromium.org/blink/branches/dart/1985
Patch Set: PTAL Created 6 years, 6 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
« no previous file with comments | « Source/devtools/front_end/sdk/RemoteObject.js ('k') | Source/devtools/front_end/sources/SourcesPanel.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/devtools/front_end/sdk/RuntimeModel.js
diff --git a/Source/devtools/front_end/sdk/RuntimeModel.js b/Source/devtools/front_end/sdk/RuntimeModel.js
index 9c79876c2b9425ed2abb6da4866d175a61b2772c..7b40f65fb5743763230cd752d3a595e7c4c94165 100644
--- a/Source/devtools/front_end/sdk/RuntimeModel.js
+++ b/Source/devtools/front_end/sdk/RuntimeModel.js
@@ -97,7 +97,7 @@ WebInspector.RuntimeModel.prototype = {
createRemoteObject: function(payload)
{
console.assert(typeof payload === "object", "Remote object payload should only be an object");
- return new WebInspector.RemoteObjectImpl(this.target(), payload.objectId, payload.type, payload.subtype, payload.value, payload.description, payload.preview);
+ return new WebInspector.RemoteObjectImpl(this.target(), payload.objectId, payload.type, payload.subtype, payload.value, payload.description, payload.preview, payload.language);
},
/**
@@ -107,7 +107,7 @@ WebInspector.RuntimeModel.prototype = {
*/
createScopeRemoteObject: function(payload, scopeRef)
{
- return new WebInspector.ScopeRemoteObject(this.target(), payload.objectId, scopeRef, payload.type, payload.subtype, payload.value, payload.description, payload.preview);
+ return new WebInspector.ScopeRemoteObject(this.target(), payload.objectId, scopeRef, payload.type, payload.subtype, payload.value, payload.description, payload.preview, payload.language);
},
/**
@@ -240,6 +240,27 @@ WebInspector.ExecutionContext.prototype = {
},
/**
+ * @param {string} expression
+ * @param {function(?Protocol.Error, !Array.<!string>)} callback
+ */
+ getCompletions: function(expression, callback)
+ {
+ var selectedCallFrame = WebInspector.debuggerModel.selectedCallFrame();
+
+ // Dart/Modules specific tweak: don't use the call frame if we are
+ // we have explicitly selected an execution context for the console
+ // that is part of a different library than the current call frame.
+
+ if (selectedCallFrame &&
+ (!selectedCallFrame.script || this.libraryId == selectedCallFrame.script.libraryId)) {
+ selectedCallFrame.getCompletions(expression, callback);
+ return;
+ }
+
+ this.target().runtimeAgent().getCompletions(expression, this.id, callback);
+ },
+
+ /**
* @param {string} expressionString
* @param {string} prefix
* @param {boolean} force
@@ -266,80 +287,24 @@ WebInspector.ExecutionContext.prototype = {
return;
}
- if (!expressionString && this._debuggerModel.selectedCallFrame())
- this._debuggerModel.getSelectedCallFrameVariables(receivedPropertyNames.bind(this));
- else
- this.evaluate(expressionString, "completion", true, true, false, false, evaluated.bind(this));
-
- /**
- * @this {WebInspector.ExecutionContext}
- */
- function evaluated(result, wasThrown)
- {
- if (!result || wasThrown) {
- completionsReadyCallback([]);
- return;
- }
-
- /**
- * @param {string} primitiveType
- * @suppressReceiverCheck
- * @this {WebInspector.ExecutionContext}
- */
- function getCompletions(primitiveType)
- {
- var object;
- if (primitiveType === "string")
- object = new String("");
- else if (primitiveType === "number")
- object = new Number(0);
- else if (primitiveType === "boolean")
- object = new Boolean(false);
- else
- object = this;
-
- var resultSet = {};
- for (var o = object; o; o = o.__proto__) {
- try {
- var names = Object.getOwnPropertyNames(o);
- for (var i = 0; i < names.length; ++i)
- resultSet[names[i]] = true;
- } catch (e) {
- }
- }
- return resultSet;
- }
-
- if (result.type === "object" || result.type === "function")
- result.callFunctionJSON(getCompletions, undefined, receivedPropertyNames.bind(this));
- else if (result.type === "string" || result.type === "number" || result.type === "boolean")
- this.evaluate("(" + getCompletions + ")(\"" + result.type + "\")", "completion", false, true, true, 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([]);
- }
+ this.getCompletions(expressionString, receivedPropertyNames.bind(this));
/**
+ * @param {?Protocol.Error} error
+ * @param {!Array.<string>} propertyNamesArray
* @this {WebInspector.ExecutionContext}
*/
- function receivedPropertyNames(propertyNames)
+ function receivedPropertyNames(error, propertyNamesArray)
{
this.target().runtimeAgent().releaseObjectGroup("completion");
- if (!propertyNames) {
+ if (error) {
completionsReadyCallback([]);
return;
}
+ var propertyNames = {};
+ for (var i = 0; i < propertyNamesArray.length; ++i)
+ propertyNames[propertyNamesArray[i]] = true;
+
var includeCommandLineAPI = (!dotNotation && !bracketNotation);
if (includeCommandLineAPI) {
const commandLineAPI = ["dir", "dirxml", "keys", "values", "profile", "profileEnd", "monitorEvents", "unmonitorEvents", "inspect", "copy", "clear",
@@ -375,7 +340,7 @@ WebInspector.ExecutionContext.prototype = {
if (selectedCallFrame) {
dartContext = selectedCallFrame.script && selectedCallFrame.script.language == "Dart";
} else {
- dartContext = WebInspector.runtimeModel.currentExecutionContext().language == "Dart";
+ dartContext = this.language == "Dart";
}
if (dartContext) {
« no previous file with comments | « Source/devtools/front_end/sdk/RemoteObject.js ('k') | Source/devtools/front_end/sources/SourcesPanel.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698