⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 249246 in webkit


Ignore:
Timestamp:
Aug 28, 2019, 11:46:27 PM (7 years ago)
Author:
Devin Rousso
Message:

Web Inspector: REGRESSION(r249078): JavaScript autocomplete doesn't work when evaluating properties of values
https://bugs.webkit.org/show_bug.cgi?id=201226

Reviewed by Joseph Pecoraro.

r249078 modified WI.JavaScriptRuntimeCompletionProvider to use arrays of property names
instead of objects for completion, but a few code paths were missed.

  • UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:

(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.evaluated):
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedPropertyNamesFromEvaluate):
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedObjectPropertyNames): Added.
(WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedArrayPropertyNames):

  • UserInterface/Models/CallFrame.js:

(WI.CallFrame.prototype.collectScopeChainVariableNames):
(WI.CallFrame.prototype.collectScopeChainVariableNames.propertiesCollected):

Location:
trunk/Source/WebInspectorUI
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebInspectorUI/ChangeLog

    r249185 r249246  
     12019-08-28  Devin Rousso  <drousso@apple.com>
     2
     3        Web Inspector: REGRESSION(r249078): JavaScript autocomplete doesn't work when evaluating properties of values
     4        https://bugs.webkit.org/show_bug.cgi?id=201226
     5
     6        Reviewed by Joseph Pecoraro.
     7
     8        r249078 modified `WI.JavaScriptRuntimeCompletionProvider` to use arrays of property names
     9        instead of objects for completion, but a few code paths were missed.
     10
     11        * UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
     12        (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.evaluated):
     13        (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedPropertyNamesFromEvaluate):
     14        (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedObjectPropertyNames): Added.
     15        (WI.JavaScriptRuntimeCompletionProvider.prototype.completionControllerCompletionsNeeded.receivedArrayPropertyNames):
     16
     17        * UserInterface/Models/CallFrame.js:
     18        (WI.CallFrame.prototype.collectScopeChainVariableNames):
     19        (WI.CallFrame.prototype.collectScopeChainVariableNames.propertiesCollected):
     20
    1212019-08-27  Devin Rousso  <drousso@apple.com>
    222
  • trunk/Source/WebInspectorUI/UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js

    r249185 r249246  
    166166                WI.runtimeManager.activeExecutionContext.target.RuntimeAgent.releaseObjectGroup("completion");
    167167
    168                 updateLastPropertyNames.call(this, {});
     168                updateLastPropertyNames.call(this, []);
    169169                completionController.updateCompletions(defaultCompletions);
    170170
     
    227227                result.callFunctionJSON(inspectedPage_evalResult_getArrayCompletions, undefined, receivedArrayPropertyNames.bind(this));
    228228            else if (result.type === "object" || result.type === "function")
    229                 result.callFunctionJSON(inspectedPage_evalResult_getCompletions, undefined, receivedPropertyNames.bind(this));
     229                result.callFunctionJSON(inspectedPage_evalResult_getCompletions, undefined, receivedObjectPropertyNames.bind(this));
    230230            else if (result.type === "string" || result.type === "number" || result.type === "boolean" || result.type === "symbol") {
    231231                let options = {objectGroup: "completion", includeCommandLineAPI: false, doNotPauseOnExceptionsAndMuteConsole: true, returnByValue: true, generatePreview: false, saveResult: false};
     
    237237        function receivedPropertyNamesFromEvaluate(object, wasThrown, result)
    238238        {
    239             receivedPropertyNames.call(this, result && !wasThrown ? result.value : null);
     239            receivedPropertyNames.call(this, result && !wasThrown ? Object.keys(result.value) : null);
     240        }
     241
     242        function receivedObjectPropertyNames(propertyNames)
     243        {
     244            receivedPropertyNames.call(this, Object.keys(propertyNames));
    240245        }
    241246
     
    251256            }
    252257
    253             receivedPropertyNames.call(this, propertyNames);
     258            receivedObjectPropertyNames.call(this, propertyNames);
    254259        }
    255260
    256261        function receivedPropertyNames(propertyNames)
    257262        {
    258             propertyNames = propertyNames ? Object.keys(propertyNames) : [];
     263            console.assert(!propertyNames || Array.isArray(propertyNames));
     264            propertyNames = propertyNames || [];
    259265
    260266            updateLastPropertyNames.call(this, propertyNames);
  • trunk/Source/WebInspectorUI/UserInterface/Models/CallFrame.js

    r248589 r249246  
    7171    collectScopeChainVariableNames(callback)
    7272    {
    73         var result = {this: true, __proto__: null};
     73        let result = ["this", "__proto__"];
    7474
    7575        var pendingRequests = this._scopeChain.length;
     
    7878        {
    7979            for (var i = 0; properties && i < properties.length; ++i)
    80                 result[properties[i].name] = true;
     80                result.push(properties[i].name);
    8181
    8282            if (--pendingRequests)
Note: See TracChangeset for help on using the changeset viewer.