| Index: third_party/WebKit/Source/devtools/front_end/components/JavaScriptAutocomplete.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/components/JavaScriptAutocomplete.js b/third_party/WebKit/Source/devtools/front_end/components/JavaScriptAutocomplete.js
|
| index f07ebc27333e272e9755076134a797a8afd39d37..044f0709b5fc225f4fecf7fdfbbb7ab11a4576a4 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/components/JavaScriptAutocomplete.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/components/JavaScriptAutocomplete.js
|
| @@ -56,11 +56,11 @@ WebInspector.JavaScriptAutocomplete.completionsForTextInCurrentContext = functio
|
|
|
| /**
|
| * @param {string} expressionString
|
| - * @param {string} prefix
|
| + * @param {string} query
|
| * @param {boolean=} force
|
| * @return {!Promise<!Array<string>>}
|
| */
|
| -WebInspector.JavaScriptAutocomplete.completionsForExpression = function(expressionString, prefix, force) {
|
| +WebInspector.JavaScriptAutocomplete.completionsForExpression = function(expressionString, query, force) {
|
| var executionContext = WebInspector.context.flavor(WebInspector.ExecutionContext);
|
| if (!executionContext)
|
| return Promise.resolve([]);
|
| @@ -77,7 +77,7 @@ WebInspector.JavaScriptAutocomplete.completionsForExpression = function(expressi
|
| if (expressionString && !isNaN(expressionString))
|
| return Promise.resolve([]);
|
|
|
| - if (!prefix && !expressionString && !force)
|
| + if (!query && !expressionString && !force)
|
| return Promise.resolve([]);
|
|
|
| var fufill;
|
| @@ -223,8 +223,8 @@ WebInspector.JavaScriptAutocomplete.completionsForExpression = function(expressi
|
| for (var i = 0; i < commandLineAPI.length; ++i)
|
| propertyNames[commandLineAPI[i]] = true;
|
| }
|
| - fufill(WebInspector.JavaScriptAutocomplete._completionsForPrefix(
|
| - dotNotation, bracketNotation, expressionString, prefix, Object.keys(propertyNames)));
|
| + fufill(WebInspector.JavaScriptAutocomplete._completionsForQuery(
|
| + dotNotation, bracketNotation, expressionString, query, Object.keys(propertyNames)));
|
| }
|
| };
|
|
|
| @@ -232,20 +232,18 @@ WebInspector.JavaScriptAutocomplete.completionsForExpression = function(expressi
|
| * @param {boolean} dotNotation
|
| * @param {boolean} bracketNotation
|
| * @param {string} expressionString
|
| - * @param {string} prefix
|
| + * @param {string} query
|
| * @param {!Array.<string>} properties
|
| * @return {!Array<string>}
|
| */
|
| -WebInspector.JavaScriptAutocomplete._completionsForPrefix = function(dotNotation, bracketNotation, expressionString, prefix, properties) {
|
| +WebInspector.JavaScriptAutocomplete._completionsForQuery = function(dotNotation, bracketNotation, expressionString, query, properties) {
|
| if (bracketNotation) {
|
| - if (prefix.length && prefix[0] === '\'')
|
| + if (query.length && query[0] === '\'')
|
| var quoteUsed = '\'';
|
| else
|
| var quoteUsed = '"';
|
| }
|
|
|
| - var results = [];
|
| -
|
| if (!expressionString) {
|
| const keywords = [
|
| 'break', 'case', 'catch', 'continue', 'default', 'delete', 'do', 'else', 'finally',
|
| @@ -257,6 +255,10 @@ WebInspector.JavaScriptAutocomplete._completionsForPrefix = function(dotNotation
|
|
|
| properties.sort();
|
|
|
| + var caseSensitivePrefix = [];
|
| + var caseInsensitivePrefix = [];
|
| + var caseSensitiveAnywhere = [];
|
| + var caseInsensitiveAnywhere = [];
|
| for (var i = 0; i < properties.length; ++i) {
|
| var property = properties[i];
|
|
|
| @@ -270,13 +272,21 @@ WebInspector.JavaScriptAutocomplete._completionsForPrefix = function(dotNotation
|
| property += ']';
|
| }
|
|
|
| - if (property.length < prefix.length)
|
| + if (property.length < query.length)
|
| continue;
|
| - if (prefix.length && !property.startsWith(prefix))
|
| + if (query.length && property.toLowerCase().indexOf(query.toLowerCase()) === -1)
|
| continue;
|
| -
|
| // Substitute actual newlines with newline characters. @see crbug.com/498421
|
| - results.push(property.split('\n').join('\\n'));
|
| + var prop = property.split('\n').join('\\n');
|
| +
|
| + if (property.startsWith(query))
|
| + caseSensitivePrefix.push(prop);
|
| + else if (property.toLowerCase().startsWith(query.toLowerCase()))
|
| + caseInsensitivePrefix.push(prop);
|
| + else if (property.indexOf(query) !== -1)
|
| + caseSensitiveAnywhere.push(prop);
|
| + else
|
| + caseInsensitiveAnywhere.push(prop);
|
| }
|
| - return results;
|
| + return caseSensitivePrefix.concat(caseInsensitivePrefix).concat(caseSensitiveAnywhere).concat(caseInsensitiveAnywhere);
|
| };
|
|
|