Commit 07fe0e6d authored by Yi Su's avatar Yi Su Committed by Commit Bot

Clean up search_engine.js: modify fragile links to webpages and change to ES6 grammar.

This CL clean up some defects in search_engine.js. Firstly remove those
URL links in comments that contain line number as URL args, because they
are easy to be broken by change in referred files. Secondly change all
"var" to "let" since it's supported in iOS 10 and the presubmit check
has been removed.

Bug: 433824
Change-Id: I6ba00a95c904c897b3845ddd6a96b29fef639b73
Reviewed-on: https://chromium-review.googlesource.com/c/1329976Reviewed-by: default avatarEugene But <eugenebut@chromium.org>
Commit-Queue: Yi Su <mrsuyi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607522}
parent ce66e015
...@@ -65,7 +65,7 @@ function isCheckableElement_(element) { ...@@ -65,7 +65,7 @@ function isCheckableElement_(element) {
* @type {Element} * @type {Element}
* @private * @private
*/ */
var activeSubmitElement_ = null; let activeSubmitElement_ = null;
/** /**
* Returns the submit element which triggers the submission of |form|. If there * Returns the submit element which triggers the submission of |form|. If there
...@@ -80,7 +80,7 @@ function getActiveSubmitElement_(form) { ...@@ -80,7 +80,7 @@ function getActiveSubmitElement_(form) {
if (activeSubmitElement_ && activeSubmitElement_.form === form) { if (activeSubmitElement_ && activeSubmitElement_.form === form) {
return activeSubmitElement_; return activeSubmitElement_;
} }
for (var i = 0; i < form.elements.length; ++i) { for (let i = 0; i < form.elements.length; ++i) {
if (isSubmitElement_(form.elements[i])) { if (isSubmitElement_(form.elements[i])) {
return form.elements[i]; return form.elements[i];
} }
...@@ -90,21 +90,20 @@ function getActiveSubmitElement_(form) { ...@@ -90,21 +90,20 @@ function getActiveSubmitElement_(form) {
/** /**
* A set of all the text categories of <input>'s type attribute. * A set of all the text categories of <input>'s type attribute.
* This set is based on: * This set is based on:
* https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/html/forms/base_text_input_type.h?rcl=3e6185be26ac5e48c7921d314d2abc4a3a1572e2&l=40 * https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/html/forms/text_field_input_type.h
* https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/html/forms/text_field_input_type.h?rcl=3e6185be26ac5e48c7921d314d2abc4a3a1572e2&l=41 * https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/html/forms/base_text_input_type.h
* "password" is not in the map because it makes the <form> invalid. * "password" is not in the map because it makes the <form> invalid.
* @type {Set<string>} * @type {Set<string>}
* @private * @private
*/ */
var textInputTypes_ = const textInputTypes_ =
new Set(['email', 'search', 'tel', 'text', 'url', 'number']); new Set(['email', 'search', 'tel', 'text', 'url', 'number']);
/** /**
* Returns false if |element| is <input type="radio|checkbox"> or <select> and * Returns false if |element| is <input type="radio|checkbox"> or <select> and
* it's not in its default state, otherwise true. The default state is the state * it's not in its default state, otherwise true. The default state is the state
* of the form element on initial load of the page, and varies depending upon * of the form element on initial load of the page, and leties depending upon
* the form element. The code is based on: * the form element.
* https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/exported/web_searchable_form_data.cc?rcl=a26f1d82bbd020be06fb96518179bbb6b6146370&l=120
* @param {Element} element Element in <form>. * @param {Element} element Element in <form>.
* @return {boolean} If the element is in its default state. * @return {boolean} If the element is in its default state.
* @private * @private
...@@ -113,8 +112,8 @@ function isInDefaultState_(element) { ...@@ -113,8 +112,8 @@ function isInDefaultState_(element) {
if (isCheckableElement_(element)) { if (isCheckableElement_(element)) {
return element.checked == element.defaultChecked; return element.checked == element.defaultChecked;
} else if (element.tagName == 'SELECT') { } else if (element.tagName == 'SELECT') {
for (var i = 0; i < element.options.length; ++i) { for (let i = 0; i < element.options.length; ++i) {
var option = element.options[i]; let option = element.options[i];
if (option.selected != option.defaultSelected) { if (option.selected != option.defaultSelected) {
return false; return false;
} }
...@@ -125,8 +124,9 @@ function isInDefaultState_(element) { ...@@ -125,8 +124,9 @@ function isInDefaultState_(element) {
/** /**
* Looks for a suitable search text field in |form|. Returns undefined if |form| * Looks for a suitable search text field in |form|. Returns undefined if |form|
* is not a valid searchable <form>. The code is based on: * is not a valid searchable <form>. The code is based on the function with same
* https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/exported/web_searchable_form_data.cc?rcl=a26f1d82bbd020be06fb96518179bbb6b6146370&l=137 * name in:
* https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/exported/web_searchable_form_data.cc
* *
* The criteria for a valid searchable <form>: * The criteria for a valid searchable <form>:
* 1. Has no <textarea>; * 1. Has no <textarea>;
...@@ -143,9 +143,9 @@ function isInDefaultState_(element) { ...@@ -143,9 +143,9 @@ function isInDefaultState_(element) {
* @private * @private
*/ */
function findSuitableSearchInputElement_(form) { function findSuitableSearchInputElement_(form) {
var result = undefined; let result = undefined;
for (var i = 0; i < form.elements.length; ++i) { for (let i = 0; i < form.elements.length; ++i) {
var element = form.elements[i]; let element = form.elements[i];
if (element.disabled || !element.name) { if (element.disabled || !element.name) {
continue; continue;
} }
...@@ -169,8 +169,8 @@ function findSuitableSearchInputElement_(form) { ...@@ -169,8 +169,8 @@ function findSuitableSearchInputElement_(form) {
/** /**
* Generates a searchable URL from |form| if it's a valid searchable <form>. * Generates a searchable URL from |form| if it's a valid searchable <form>.
* The code is based on: * The code is based on the function with same name in:
https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/exported/web_searchable_form_data.cc?rcl=9c80632d2b16884970961dc9a12bddd3a4ca50b5&l=218 * https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/exported/web_searchable_form_data.cc
* *
* @param {Element} form The <form> element. * @param {Element} form The <form> element.
* @return {string|undefined} The searchable URL, or undefined if |form| is not * @return {string|undefined} The searchable URL, or undefined if |form| is not
...@@ -180,9 +180,9 @@ https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/exported/we ...@@ -180,9 +180,9 @@ https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/exported/we
* searchableURL. * searchableURL.
*/ */
function generateSearchableUrl_(form) { function generateSearchableUrl_(form) {
// Only consider <form> that navigates in current frame, because new // Only consider <form> that navigates in current frame, because currently
// TemplateURL will only be created from navigation in the same page: // TemplateURLs are created by SearchEngineTabHelper, which cannot handle
// https://cs.chromium.org/chromium/src/chrome/browser/ui/search_engines/search_engine_tab_helper.cc?l=177&gsn=last_index // navigation across WebState.
if (form.target && form.target != '_self') if (form.target && form.target != '_self')
return; return;
...@@ -191,24 +191,24 @@ function generateSearchableUrl_(form) { ...@@ -191,24 +191,24 @@ function generateSearchableUrl_(form) {
return; return;
} }
var searchInput = findSuitableSearchInputElement_(form); let searchInput = findSuitableSearchInputElement_(form);
if (!searchInput) { if (!searchInput) {
return; return;
} }
var activeSubmitElement = getActiveSubmitElement_(form); let activeSubmitElement = getActiveSubmitElement_(form);
// The "name=value" pairs appended to the end of the action URL. // The "name=value" pairs appended to the end of the action URL.
var queryArgs = []; let queryArgs = [];
for (var i = 0; i < form.elements.length; ++i) { for (let i = 0; i < form.elements.length; ++i) {
var element = form.elements[i]; let element = form.elements[i];
if (element.disabled || !element.name) { if (element.disabled || !element.name) {
continue; continue;
} }
if (isSubmitElement_(element)) { if (isSubmitElement_(element)) {
// Only append the active submit element's name-value pair. // Only append the active submit element's name-value pair.
if (element === activeSubmitElement) { if (element === activeSubmitElement) {
var value = element.value; let value = element.value;
// <input type="submit"> will have "Submit" as default "value" when // <input type="submit"> will have "Submit" as default "value" when
// submitted with empty "value" and non-empty "name". This probably // submitted with empty "value" and non-empty "name". This probably
// comes from the default label text of <input type="submit">: // comes from the default label text of <input type="submit">:
...@@ -234,7 +234,7 @@ function generateSearchableUrl_(form) { ...@@ -234,7 +234,7 @@ function generateSearchableUrl_(form) {
} }
// If |form| uses "GET" method, appended query args in |form|.action should be // If |form| uses "GET" method, appended query args in |form|.action should be
// dropped. Use URL class to get rid of these query args. // dropped. Use URL class to get rid of these query args.
var url = new URL(form.action); let url = new URL(form.action);
return url.origin + url.pathname + '?' + queryArgs.join('&'); return url.origin + url.pathname + '?' + queryArgs.join('&');
}; };
...@@ -265,7 +265,7 @@ document.addEventListener('click', function(event) { ...@@ -265,7 +265,7 @@ document.addEventListener('click', function(event) {
if (event.defaultPrevented) { if (event.defaultPrevented) {
return; return;
} }
var element = event.target; let element = event.target;
if (!(element instanceof Element) || !isSubmitElement_(element)) { if (!(element instanceof Element) || !isSubmitElement_(element)) {
return; return;
} }
...@@ -288,7 +288,7 @@ document.addEventListener('submit', function(event) { ...@@ -288,7 +288,7 @@ document.addEventListener('submit', function(event) {
if (event.defaultPrevented || !(event.target instanceof Element)) { if (event.defaultPrevented || !(event.target instanceof Element)) {
return; return;
} }
var url = generateSearchableUrl_(event.target); let url = generateSearchableUrl_(event.target);
if (url) { if (url) {
__gCrWeb.message.invokeOnHost( __gCrWeb.message.invokeOnHost(
{'command': 'searchEngine.searchableUrl', 'url': url}); {'command': 'searchEngine.searchableUrl', 'url': url});
...@@ -303,8 +303,8 @@ document.addEventListener('submit', function(event) { ...@@ -303,8 +303,8 @@ document.addEventListener('submit', function(event) {
* @return {undefined} * @return {undefined}
*/ */
function findOpenSearchLink() { function findOpenSearchLink() {
var links = document.getElementsByTagName('link'); let links = document.getElementsByTagName('link');
for (var i = 0; i < links.length; ++i) { for (let i = 0; i < links.length; ++i) {
if (links[i].type == 'application/opensearchdescription+xml') { if (links[i].type == 'application/opensearchdescription+xml') {
__gCrWeb.message.invokeOnHost({ __gCrWeb.message.invokeOnHost({
'command': 'searchEngine.openSearch', 'command': 'searchEngine.openSearch',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment