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

Unified Diff: third_party/WebKit/Source/devtools/front_end/components/JavaScriptAutocomplete.js

Issue 2478563002: DevTools: Substring autocomplete in Console and StylesSideBar. (Closed)
Patch Set: tests Created 4 years, 1 month 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/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);
};

Powered by Google App Engine
This is Rietveld 408576698