| Index: chrome/browser/resources/omnibox/omnibox.js
|
| diff --git a/chrome/browser/resources/omnibox/omnibox.js b/chrome/browser/resources/omnibox/omnibox.js
|
| index 6e82ebfda740c88c826cb5f02031622292b9442a..f97d788bf64527ae5e0e1f499bb1c061216b4b91 100644
|
| --- a/chrome/browser/resources/omnibox/omnibox.js
|
| +++ b/chrome/browser/resources/omnibox/omnibox.js
|
| @@ -18,426 +18,428 @@
|
| */
|
|
|
| (function() {
|
| - /**
|
| - * Register our event handlers.
|
| - */
|
| - function initialize() {
|
| - $('omnibox-input-form').addEventListener(
|
| - 'submit', startOmniboxQuery, false);
|
| - $('prevent-inline-autocomplete').addEventListener(
|
| - 'change', startOmniboxQuery);
|
| - $('prefer-keyword').addEventListener('change', startOmniboxQuery);
|
| - $('page-classification').addEventListener('change', startOmniboxQuery);
|
| - $('show-details').addEventListener('change', refresh);
|
| - $('show-incomplete-results').addEventListener('change', refresh);
|
| - $('show-all-providers').addEventListener('change', refresh);
|
| - }
|
| +/**
|
| + * Register our event handlers.
|
| + */
|
| +function initialize() {
|
| + $('omnibox-input-form').addEventListener('submit', startOmniboxQuery, false);
|
| + $('prevent-inline-autocomplete')
|
| + .addEventListener('change', startOmniboxQuery);
|
| + $('prefer-keyword').addEventListener('change', startOmniboxQuery);
|
| + $('page-classification').addEventListener('change', startOmniboxQuery);
|
| + $('show-details').addEventListener('change', refresh);
|
| + $('show-incomplete-results').addEventListener('change', refresh);
|
| + $('show-all-providers').addEventListener('change', refresh);
|
| +}
|
|
|
| - /**
|
| - * @type {OmniboxResultMojo} an array of all autocomplete results we've seen
|
| - * for this query. We append to this list once for every call to
|
| - * handleNewAutocompleteResult. See omnibox.mojom for details..
|
| - */
|
| - var progressiveAutocompleteResults = [];
|
| +/**
|
| + * @type {OmniboxResultMojo} an array of all autocomplete results we've seen
|
| + * for this query. We append to this list once for every call to
|
| + * handleNewAutocompleteResult. See omnibox.mojom for details..
|
| + */
|
| +var progressiveAutocompleteResults = [];
|
|
|
| - /**
|
| - * @type {number} the value for cursor position we sent with the most
|
| - * recent request. We need to remember this in order to display it
|
| - * in the output; otherwise it's hard or impossible to determine
|
| - * from screen captures or print-to-PDFs.
|
| - */
|
| - var cursorPositionUsed = -1;
|
| +/**
|
| + * @type {number} the value for cursor position we sent with the most
|
| + * recent request. We need to remember this in order to display it
|
| + * in the output; otherwise it's hard or impossible to determine
|
| + * from screen captures or print-to-PDFs.
|
| + */
|
| +var cursorPositionUsed = -1;
|
|
|
| - /**
|
| - * Extracts the input text from the text field and sends it to the
|
| - * C++ portion of chrome to handle. The C++ code will iteratively
|
| - * call handleNewAutocompleteResult as results come in.
|
| - */
|
| - function startOmniboxQuery(event) {
|
| - // First, clear the results of past calls (if any).
|
| - progressiveAutocompleteResults = [];
|
| - // Then, call chrome with a five-element list:
|
| - // - first element: the value in the text box
|
| - // - second element: the location of the cursor in the text box
|
| - // - third element: the value of prevent-inline-autocomplete
|
| - // - forth element: the value of prefer-keyword
|
| - // - fifth element: the value of page-classification
|
| - cursorPositionUsed = $('input-text').selectionEnd;
|
| - browserProxy.startOmniboxQuery(
|
| - $('input-text').value,
|
| - cursorPositionUsed,
|
| - $('prevent-inline-autocomplete').checked,
|
| - $('prefer-keyword').checked,
|
| - parseInt($('page-classification').value));
|
| - // Cancel the submit action. i.e., don't submit the form. (We handle
|
| - // display the results solely with Javascript.)
|
| - event.preventDefault();
|
| - }
|
| +/**
|
| + * Extracts the input text from the text field and sends it to the
|
| + * C++ portion of chrome to handle. The C++ code will iteratively
|
| + * call handleNewAutocompleteResult as results come in.
|
| + */
|
| +function startOmniboxQuery(event) {
|
| + // First, clear the results of past calls (if any).
|
| + progressiveAutocompleteResults = [];
|
| + // Then, call chrome with a five-element list:
|
| + // - first element: the value in the text box
|
| + // - second element: the location of the cursor in the text box
|
| + // - third element: the value of prevent-inline-autocomplete
|
| + // - forth element: the value of prefer-keyword
|
| + // - fifth element: the value of page-classification
|
| + cursorPositionUsed = $('input-text').selectionEnd;
|
| + browserProxy.startOmniboxQuery(
|
| + $('input-text').value, cursorPositionUsed,
|
| + $('prevent-inline-autocomplete').checked, $('prefer-keyword').checked,
|
| + parseInt($('page-classification').value));
|
| + // Cancel the submit action. i.e., don't submit the form. (We handle
|
| + // display the results solely with Javascript.)
|
| + event.preventDefault();
|
| +}
|
|
|
| - /**
|
| - * Returns a simple object with information about how to display an
|
| - * autocomplete result data field.
|
| - * @param {string} header the label for the top of the column/table.
|
| - * @param {string} urlLabelForHeader the URL that the header should point
|
| - * to (if non-empty).
|
| - * @param {string} propertyName the name of the property in the autocomplete
|
| - * result record that we lookup.
|
| - * @param {boolean} displayAlways whether the property should be displayed
|
| - * regardless of whether we're in detailed more.
|
| - * @param {string} tooltip a description of the property that will be
|
| - * presented as a tooltip when the mouse is hovered over the column title.
|
| - * @constructor
|
| - */
|
| - function PresentationInfoRecord(header, url, propertyName, displayAlways,
|
| - tooltip) {
|
| - this.header = header;
|
| - this.urlLabelForHeader = url;
|
| - this.propertyName = propertyName;
|
| - this.displayAlways = displayAlways;
|
| - this.tooltip = tooltip;
|
| - }
|
| +/**
|
| + * Returns a simple object with information about how to display an
|
| + * autocomplete result data field.
|
| + * @param {string} header the label for the top of the column/table.
|
| + * @param {string} urlLabelForHeader the URL that the header should point
|
| + * to (if non-empty).
|
| + * @param {string} propertyName the name of the property in the autocomplete
|
| + * result record that we lookup.
|
| + * @param {boolean} displayAlways whether the property should be displayed
|
| + * regardless of whether we're in detailed more.
|
| + * @param {string} tooltip a description of the property that will be
|
| + * presented as a tooltip when the mouse is hovered over the column title.
|
| + * @constructor
|
| + */
|
| +function PresentationInfoRecord(
|
| + header, url, propertyName, displayAlways, tooltip) {
|
| + this.header = header;
|
| + this.urlLabelForHeader = url;
|
| + this.propertyName = propertyName;
|
| + this.displayAlways = displayAlways;
|
| + this.tooltip = tooltip;
|
| +}
|
|
|
| - /**
|
| - * A constant that's used to decide what autocomplete result
|
| - * properties to output in what order. This is an array of
|
| - * PresentationInfoRecord() objects; for details see that
|
| - * function.
|
| - * @type {Array<Object>}
|
| - * @const
|
| - */
|
| - var PROPERTY_OUTPUT_ORDER = [
|
| - new PresentationInfoRecord('Provider', '', 'providerName', true,
|
| - 'The AutocompleteProvider suggesting this result.'),
|
| - new PresentationInfoRecord('Type', '', 'type', true,
|
| - 'The type of the result.'),
|
| - new PresentationInfoRecord('Relevance', '', 'relevance', true,
|
| - 'The result score. Higher is more relevant.'),
|
| - new PresentationInfoRecord('Contents', '', 'contents', true,
|
| - 'The text that is presented identifying the result.'),
|
| - new PresentationInfoRecord(
|
| - 'Can Be Default', '', 'allowedToBeDefaultMatch', false,
|
| - 'A green checkmark indicates that the result can be the default ' +
|
| - 'match (i.e., can be the match that pressing enter in the omnibox ' +
|
| - 'navigates to).'),
|
| - new PresentationInfoRecord('Starred', '', 'starred', false,
|
| - 'A green checkmark indicates that the result has been bookmarked.'),
|
| - new PresentationInfoRecord('Description', '', 'description', false,
|
| - 'The page title of the result.'),
|
| - new PresentationInfoRecord('URL', '', 'destinationUrl', true,
|
| - 'The URL for the result.'),
|
| - new PresentationInfoRecord('Fill Into Edit', '', 'fillIntoEdit', false,
|
| - 'The text shown in the omnibox when the result is selected.'),
|
| - new PresentationInfoRecord(
|
| - 'Inline Autocompletion', '', 'inlineAutocompletion', false,
|
| - 'The text shown in the omnibox as a blue highlight selection ' +
|
| - 'following the cursor, if this match is shown inline.'),
|
| - new PresentationInfoRecord('Del', '', 'deletable', false,
|
| - 'A green checkmark indicates that the result can be deleted from ' +
|
| - 'the visit history.'),
|
| - new PresentationInfoRecord('Prev', '', 'fromPrevious', false, ''),
|
| - new PresentationInfoRecord(
|
| - 'Tran',
|
| - 'http://code.google.com/codesearch#OAMlx_jo-ck/src/content/public/' +
|
| - 'common/page_transition_types.h&exact_package=chromium&l=24',
|
| - 'transition', false,
|
| - 'How the user got to the result.'),
|
| - new PresentationInfoRecord(
|
| - 'Done', '', 'providerDone', false,
|
| - 'A green checkmark indicates that the provider is done looking for ' +
|
| - 'more results.'),
|
| - new PresentationInfoRecord(
|
| - 'Associated Keyword', '', 'associatedKeyword', false,
|
| - 'If non-empty, a "press tab to search" hint will be shown and will ' +
|
| - 'engage this keyword.'),
|
| - new PresentationInfoRecord(
|
| - 'Keyword', '', 'keyword', false,
|
| - 'The keyword of the search engine to be used.'),
|
| - new PresentationInfoRecord(
|
| - 'Duplicates', '', 'duplicates', false,
|
| - 'The number of matches that have been marked as duplicates of this ' +
|
| - 'match.'),
|
| - new PresentationInfoRecord(
|
| - 'Additional Info', '', 'additionalInfo', false,
|
| - 'Provider-specific information about the result.')
|
| - ];
|
| +/**
|
| + * A constant that's used to decide what autocomplete result
|
| + * properties to output in what order. This is an array of
|
| + * PresentationInfoRecord() objects; for details see that
|
| + * function.
|
| + * @type {Array<Object>}
|
| + * @const
|
| + */
|
| +var PROPERTY_OUTPUT_ORDER = [
|
| + new PresentationInfoRecord(
|
| + 'Provider', '', 'providerName', true,
|
| + 'The AutocompleteProvider suggesting this result.'),
|
| + new PresentationInfoRecord(
|
| + 'Type', '', 'type', true, 'The type of the result.'),
|
| + new PresentationInfoRecord(
|
| + 'Relevance', '', 'relevance', true,
|
| + 'The result score. Higher is more relevant.'),
|
| + new PresentationInfoRecord(
|
| + 'Contents', '', 'contents', true,
|
| + 'The text that is presented identifying the result.'),
|
| + new PresentationInfoRecord(
|
| + 'Can Be Default', '', 'allowedToBeDefaultMatch', false,
|
| + 'A green checkmark indicates that the result can be the default ' +
|
| + 'match (i.e., can be the match that pressing enter in the omnibox ' +
|
| + 'navigates to).'),
|
| + new PresentationInfoRecord(
|
| + 'Starred', '', 'starred', false,
|
| + 'A green checkmark indicates that the result has been bookmarked.'),
|
| + new PresentationInfoRecord(
|
| + 'Description', '', 'description', false, 'The page title of the result.'),
|
| + new PresentationInfoRecord(
|
| + 'URL', '', 'destinationUrl', true, 'The URL for the result.'),
|
| + new PresentationInfoRecord(
|
| + 'Fill Into Edit', '', 'fillIntoEdit', false,
|
| + 'The text shown in the omnibox when the result is selected.'),
|
| + new PresentationInfoRecord(
|
| + 'Inline Autocompletion', '', 'inlineAutocompletion', false,
|
| + 'The text shown in the omnibox as a blue highlight selection ' +
|
| + 'following the cursor, if this match is shown inline.'),
|
| + new PresentationInfoRecord(
|
| + 'Del', '', 'deletable', false,
|
| + 'A green checkmark indicates that the result can be deleted from ' +
|
| + 'the visit history.'),
|
| + new PresentationInfoRecord('Prev', '', 'fromPrevious', false, ''),
|
| + new PresentationInfoRecord(
|
| + 'Tran',
|
| + 'http://code.google.com/codesearch#OAMlx_jo-ck/src/content/public/' +
|
| + 'common/page_transition_types.h&exact_package=chromium&l=24',
|
| + 'transition', false, 'How the user got to the result.'),
|
| + new PresentationInfoRecord(
|
| + 'Done', '', 'providerDone', false,
|
| + 'A green checkmark indicates that the provider is done looking for ' +
|
| + 'more results.'),
|
| + new PresentationInfoRecord(
|
| + 'Associated Keyword', '', 'associatedKeyword', false,
|
| + 'If non-empty, a "press tab to search" hint will be shown and will ' +
|
| + 'engage this keyword.'),
|
| + new PresentationInfoRecord(
|
| + 'Keyword', '', 'keyword', false,
|
| + 'The keyword of the search engine to be used.'),
|
| + new PresentationInfoRecord(
|
| + 'Duplicates', '', 'duplicates', false,
|
| + 'The number of matches that have been marked as duplicates of this ' +
|
| + 'match.'),
|
| + new PresentationInfoRecord(
|
| + 'Additional Info', '', 'additionalInfo', false,
|
| + 'Provider-specific information about the result.')
|
| +];
|
|
|
| - /**
|
| - * Returns an HTML Element of type table row that contains the
|
| - * headers we'll use for labeling the columns. If we're in
|
| - * detailedMode, we use all the headers. If not, we only use ones
|
| - * marked displayAlways.
|
| - */
|
| - function createAutocompleteResultTableHeader() {
|
| - var row = document.createElement('tr');
|
| - var inDetailedMode = $('show-details').checked;
|
| - for (var i = 0; i < PROPERTY_OUTPUT_ORDER.length; i++) {
|
| - if (inDetailedMode || PROPERTY_OUTPUT_ORDER[i].displayAlways) {
|
| - var headerCell = document.createElement('th');
|
| - if (PROPERTY_OUTPUT_ORDER[i].urlLabelForHeader != '') {
|
| - // Wrap header text in URL.
|
| - var linkNode = document.createElement('a');
|
| - linkNode.href = PROPERTY_OUTPUT_ORDER[i].urlLabelForHeader;
|
| - linkNode.textContent = PROPERTY_OUTPUT_ORDER[i].header;
|
| - headerCell.appendChild(linkNode);
|
| - } else {
|
| - // Output header text without a URL.
|
| - headerCell.textContent = PROPERTY_OUTPUT_ORDER[i].header;
|
| - headerCell.className = 'table-header';
|
| - headerCell.title = PROPERTY_OUTPUT_ORDER[i].tooltip;
|
| - }
|
| - row.appendChild(headerCell);
|
| +/**
|
| + * Returns an HTML Element of type table row that contains the
|
| + * headers we'll use for labeling the columns. If we're in
|
| + * detailedMode, we use all the headers. If not, we only use ones
|
| + * marked displayAlways.
|
| + */
|
| +function createAutocompleteResultTableHeader() {
|
| + var row = document.createElement('tr');
|
| + var inDetailedMode = $('show-details').checked;
|
| + for (var i = 0; i < PROPERTY_OUTPUT_ORDER.length; i++) {
|
| + if (inDetailedMode || PROPERTY_OUTPUT_ORDER[i].displayAlways) {
|
| + var headerCell = document.createElement('th');
|
| + if (PROPERTY_OUTPUT_ORDER[i].urlLabelForHeader != '') {
|
| + // Wrap header text in URL.
|
| + var linkNode = document.createElement('a');
|
| + linkNode.href = PROPERTY_OUTPUT_ORDER[i].urlLabelForHeader;
|
| + linkNode.textContent = PROPERTY_OUTPUT_ORDER[i].header;
|
| + headerCell.appendChild(linkNode);
|
| + } else {
|
| + // Output header text without a URL.
|
| + headerCell.textContent = PROPERTY_OUTPUT_ORDER[i].header;
|
| + headerCell.className = 'table-header';
|
| + headerCell.title = PROPERTY_OUTPUT_ORDER[i].tooltip;
|
| }
|
| + row.appendChild(headerCell);
|
| }
|
| - return row;
|
| }
|
| + return row;
|
| +}
|
|
|
| - /**
|
| - * @param {AutocompleteMatchMojo} autocompleteSuggestion the particular
|
| - * autocomplete suggestion we're in the process of displaying.
|
| - * @param {string} propertyName the particular property of the autocomplete
|
| - * suggestion that should go in this cell.
|
| - * @return {HTMLTableCellElement} that contains the value within this
|
| - * autocompleteSuggestion associated with propertyName.
|
| - */
|
| - function createCellForPropertyAndRemoveProperty(autocompleteSuggestion,
|
| - propertyName) {
|
| - var cell = document.createElement('td');
|
| - if (propertyName in autocompleteSuggestion) {
|
| - if (propertyName == 'additionalInfo') {
|
| - // |additionalInfo| embeds a two-column table of provider-specific data
|
| - // within this cell. |additionalInfo| is an array of
|
| - // AutocompleteAdditionalInfo.
|
| - var additionalInfoTable = document.createElement('table');
|
| - for (var i = 0; i < autocompleteSuggestion[propertyName].length; i++) {
|
| - var additionalInfo = autocompleteSuggestion[propertyName][i];
|
| - var additionalInfoRow = document.createElement('tr');
|
| +/**
|
| + * @param {AutocompleteMatchMojo} autocompleteSuggestion the particular
|
| + * autocomplete suggestion we're in the process of displaying.
|
| + * @param {string} propertyName the particular property of the autocomplete
|
| + * suggestion that should go in this cell.
|
| + * @return {HTMLTableCellElement} that contains the value within this
|
| + * autocompleteSuggestion associated with propertyName.
|
| + */
|
| +function createCellForPropertyAndRemoveProperty(
|
| + autocompleteSuggestion, propertyName) {
|
| + var cell = document.createElement('td');
|
| + if (propertyName in autocompleteSuggestion) {
|
| + if (propertyName == 'additionalInfo') {
|
| + // |additionalInfo| embeds a two-column table of provider-specific data
|
| + // within this cell. |additionalInfo| is an array of
|
| + // AutocompleteAdditionalInfo.
|
| + var additionalInfoTable = document.createElement('table');
|
| + for (var i = 0; i < autocompleteSuggestion[propertyName].length; i++) {
|
| + var additionalInfo = autocompleteSuggestion[propertyName][i];
|
| + var additionalInfoRow = document.createElement('tr');
|
|
|
| - // Set the title (name of property) cell text.
|
| - var propertyCell = document.createElement('td');
|
| - propertyCell.textContent = additionalInfo.key + ':';
|
| - propertyCell.className = 'additional-info-property';
|
| - additionalInfoRow.appendChild(propertyCell);
|
| + // Set the title (name of property) cell text.
|
| + var propertyCell = document.createElement('td');
|
| + propertyCell.textContent = additionalInfo.key + ':';
|
| + propertyCell.className = 'additional-info-property';
|
| + additionalInfoRow.appendChild(propertyCell);
|
|
|
| - // Set the value of the property cell text.
|
| - var valueCell = document.createElement('td');
|
| - valueCell.textContent = additionalInfo.value;
|
| - valueCell.className = 'additional-info-value';
|
| - additionalInfoRow.appendChild(valueCell);
|
| + // Set the value of the property cell text.
|
| + var valueCell = document.createElement('td');
|
| + valueCell.textContent = additionalInfo.value;
|
| + valueCell.className = 'additional-info-value';
|
| + additionalInfoRow.appendChild(valueCell);
|
|
|
| - additionalInfoTable.appendChild(additionalInfoRow);
|
| - }
|
| - cell.appendChild(additionalInfoTable);
|
| - } else if (typeof autocompleteSuggestion[propertyName] == 'boolean') {
|
| - // If this is a boolean, display a checkmark or an X instead of
|
| - // the strings true or false.
|
| - if (autocompleteSuggestion[propertyName]) {
|
| - cell.className = 'check-mark';
|
| - cell.textContent = '✔';
|
| - } else {
|
| - cell.className = 'x-mark';
|
| - cell.textContent = '✗';
|
| - }
|
| + additionalInfoTable.appendChild(additionalInfoRow);
|
| + }
|
| + cell.appendChild(additionalInfoTable);
|
| + } else if (typeof autocompleteSuggestion[propertyName] == 'boolean') {
|
| + // If this is a boolean, display a checkmark or an X instead of
|
| + // the strings true or false.
|
| + if (autocompleteSuggestion[propertyName]) {
|
| + cell.className = 'check-mark';
|
| + cell.textContent = '✔';
|
| } else {
|
| - var text = String(autocompleteSuggestion[propertyName]);
|
| - // If it's a URL wrap it in an href.
|
| - var re = /^(http|https|ftp|chrome|file):\/\//;
|
| - if (re.test(text)) {
|
| - var aCell = document.createElement('a');
|
| - aCell.textContent = text;
|
| - aCell.href = text;
|
| - cell.appendChild(aCell);
|
| - } else {
|
| - // All other data types (integer, strings, etc.) display their
|
| - // normal toString() output.
|
| - cell.textContent = autocompleteSuggestion[propertyName];
|
| - }
|
| + cell.className = 'x-mark';
|
| + cell.textContent = '✗';
|
| }
|
| - } // else: if propertyName is undefined, we leave the cell blank
|
| - return cell;
|
| - }
|
| + } else {
|
| + var text = String(autocompleteSuggestion[propertyName]);
|
| + // If it's a URL wrap it in an href.
|
| + var re = /^(http|https|ftp|chrome|file):\/\//;
|
| + if (re.test(text)) {
|
| + var aCell = document.createElement('a');
|
| + aCell.textContent = text;
|
| + aCell.href = text;
|
| + cell.appendChild(aCell);
|
| + } else {
|
| + // All other data types (integer, strings, etc.) display their
|
| + // normal toString() output.
|
| + cell.textContent = autocompleteSuggestion[propertyName];
|
| + }
|
| + }
|
| + } // else: if propertyName is undefined, we leave the cell blank
|
| + return cell;
|
| +}
|
|
|
| - /**
|
| - * Appends some human-readable information about the provided
|
| - * autocomplete result to the HTML node with id omnibox-debug-text.
|
| - * The current human-readable form is a few lines about general
|
| - * autocomplete result statistics followed by a table with one line
|
| - * for each autocomplete match. The input parameter is an OmniboxResultMojo.
|
| - */
|
| - function addResultToOutput(result) {
|
| - var output = $('omnibox-debug-text');
|
| - var inDetailedMode = $('show-details').checked;
|
| - var showIncompleteResults = $('show-incomplete-results').checked;
|
| - var showPerProviderResults = $('show-all-providers').checked;
|
| +/**
|
| + * Appends some human-readable information about the provided
|
| + * autocomplete result to the HTML node with id omnibox-debug-text.
|
| + * The current human-readable form is a few lines about general
|
| + * autocomplete result statistics followed by a table with one line
|
| + * for each autocomplete match. The input parameter is an OmniboxResultMojo.
|
| + */
|
| +function addResultToOutput(result) {
|
| + var output = $('omnibox-debug-text');
|
| + var inDetailedMode = $('show-details').checked;
|
| + var showIncompleteResults = $('show-incomplete-results').checked;
|
| + var showPerProviderResults = $('show-all-providers').checked;
|
|
|
| - // Always output cursor position.
|
| - var p = document.createElement('p');
|
| - p.textContent = 'cursor position = ' + cursorPositionUsed;
|
| - output.appendChild(p);
|
| + // Always output cursor position.
|
| + var p = document.createElement('p');
|
| + p.textContent = 'cursor position = ' + cursorPositionUsed;
|
| + output.appendChild(p);
|
|
|
| - // Output the result-level features in detailed mode and in
|
| - // show incomplete results mode. We do the latter because without
|
| - // these result-level features, one can't make sense of each
|
| - // batch of results.
|
| - if (inDetailedMode || showIncompleteResults) {
|
| - var p1 = document.createElement('p');
|
| - p1.textContent = 'elapsed time = ' +
|
| - result.timeSinceOmniboxStartedMs + 'ms';
|
| - output.appendChild(p1);
|
| - var p2 = document.createElement('p');
|
| - p2.textContent = 'all providers done = ' + result.done;
|
| - output.appendChild(p2);
|
| - var p3 = document.createElement('p');
|
| - p3.textContent = 'host = ' + result.host;
|
| - if ('isTypedHost' in result) {
|
| - // Only output the isTypedHost information if available. (It may
|
| - // be missing if the history database lookup failed.)
|
| - p3.textContent = p3.textContent + ' has isTypedHost = ' +
|
| - result.isTypedHost;
|
| - }
|
| - output.appendChild(p3);
|
| + // Output the result-level features in detailed mode and in
|
| + // show incomplete results mode. We do the latter because without
|
| + // these result-level features, one can't make sense of each
|
| + // batch of results.
|
| + if (inDetailedMode || showIncompleteResults) {
|
| + var p1 = document.createElement('p');
|
| + p1.textContent =
|
| + 'elapsed time = ' + result.timeSinceOmniboxStartedMs + 'ms';
|
| + output.appendChild(p1);
|
| + var p2 = document.createElement('p');
|
| + p2.textContent = 'all providers done = ' + result.done;
|
| + output.appendChild(p2);
|
| + var p3 = document.createElement('p');
|
| + p3.textContent = 'host = ' + result.host;
|
| + if ('isTypedHost' in result) {
|
| + // Only output the isTypedHost information if available. (It may
|
| + // be missing if the history database lookup failed.)
|
| + p3.textContent =
|
| + p3.textContent + ' has isTypedHost = ' + result.isTypedHost;
|
| }
|
| + output.appendChild(p3);
|
| + }
|
|
|
| - // Combined results go after the lines below.
|
| - var group = document.createElement('a');
|
| - group.className = 'group-separator';
|
| - group.textContent = 'Combined results.';
|
| - output.appendChild(group);
|
| + // Combined results go after the lines below.
|
| + var group = document.createElement('a');
|
| + group.className = 'group-separator';
|
| + group.textContent = 'Combined results.';
|
| + output.appendChild(group);
|
|
|
| - // Add combined/merged result table.
|
| - var p = document.createElement('p');
|
| - p.appendChild(addResultTableToOutput(result.combinedResults));
|
| - output.appendChild(p);
|
| + // Add combined/merged result table.
|
| + var p = document.createElement('p');
|
| + p.appendChild(addResultTableToOutput(result.combinedResults));
|
| + output.appendChild(p);
|
|
|
| - // Move forward only if you want to display per provider results.
|
| - if (!showPerProviderResults) {
|
| - return;
|
| - }
|
| + // Move forward only if you want to display per provider results.
|
| + if (!showPerProviderResults) {
|
| + return;
|
| + }
|
|
|
| - // Individual results go after the lines below.
|
| - var group = document.createElement('a');
|
| - group.className = 'group-separator';
|
| - group.textContent = 'Results for individual providers.';
|
| - output.appendChild(group);
|
| + // Individual results go after the lines below.
|
| + var group = document.createElement('a');
|
| + group.className = 'group-separator';
|
| + group.textContent = 'Results for individual providers.';
|
| + output.appendChild(group);
|
|
|
| - // Add the per-provider result tables with labels. We do not append the
|
| - // combined/merged result table since we already have the per provider
|
| - // results.
|
| - for (var i = 0; i < result.resultsByProvider.length; i++) {
|
| - var providerResults = result.resultsByProvider[i];
|
| - // If we have no results we do not display anything.
|
| - if (providerResults.results.length == 0) {
|
| - continue;
|
| - }
|
| - var p = document.createElement('p');
|
| - p.appendChild(addResultTableToOutput(providerResults.results));
|
| - output.appendChild(p);
|
| + // Add the per-provider result tables with labels. We do not append the
|
| + // combined/merged result table since we already have the per provider
|
| + // results.
|
| + for (var i = 0; i < result.resultsByProvider.length; i++) {
|
| + var providerResults = result.resultsByProvider[i];
|
| + // If we have no results we do not display anything.
|
| + if (providerResults.results.length == 0) {
|
| + continue;
|
| }
|
| + var p = document.createElement('p');
|
| + p.appendChild(addResultTableToOutput(providerResults.results));
|
| + output.appendChild(p);
|
| }
|
| +}
|
|
|
| - /**
|
| - * @param {Object} result an array of AutocompleteMatchMojos.
|
| - * @return {HTMLTableCellElement} that is a user-readable HTML
|
| - * representation of this object.
|
| - */
|
| - function addResultTableToOutput(result) {
|
| - var inDetailedMode = $('show-details').checked;
|
| - // Create a table to hold all the autocomplete items.
|
| - var table = document.createElement('table');
|
| - table.className = 'autocomplete-results-table';
|
| - table.appendChild(createAutocompleteResultTableHeader());
|
| - // Loop over every autocomplete item and add it as a row in the table.
|
| - for (var i = 0; i < result.length; i++) {
|
| - var autocompleteSuggestion = result[i];
|
| - var row = document.createElement('tr');
|
| - // Loop over all the columns/properties and output either them
|
| - // all (if we're in detailed mode) or only the ones marked displayAlways.
|
| - // Keep track of which properties we displayed.
|
| - var displayedProperties = {};
|
| - for (var j = 0; j < PROPERTY_OUTPUT_ORDER.length; j++) {
|
| - if (inDetailedMode || PROPERTY_OUTPUT_ORDER[j].displayAlways) {
|
| - row.appendChild(createCellForPropertyAndRemoveProperty(
|
| - autocompleteSuggestion, PROPERTY_OUTPUT_ORDER[j].propertyName));
|
| - displayedProperties[PROPERTY_OUTPUT_ORDER[j].propertyName] = true;
|
| - }
|
| +/**
|
| + * @param {Object} result an array of AutocompleteMatchMojos.
|
| + * @return {HTMLTableCellElement} that is a user-readable HTML
|
| + * representation of this object.
|
| + */
|
| +function addResultTableToOutput(result) {
|
| + var inDetailedMode = $('show-details').checked;
|
| + // Create a table to hold all the autocomplete items.
|
| + var table = document.createElement('table');
|
| + table.className = 'autocomplete-results-table';
|
| + table.appendChild(createAutocompleteResultTableHeader());
|
| + // Loop over every autocomplete item and add it as a row in the table.
|
| + for (var i = 0; i < result.length; i++) {
|
| + var autocompleteSuggestion = result[i];
|
| + var row = document.createElement('tr');
|
| + // Loop over all the columns/properties and output either them
|
| + // all (if we're in detailed mode) or only the ones marked displayAlways.
|
| + // Keep track of which properties we displayed.
|
| + var displayedProperties = {};
|
| + for (var j = 0; j < PROPERTY_OUTPUT_ORDER.length; j++) {
|
| + if (inDetailedMode || PROPERTY_OUTPUT_ORDER[j].displayAlways) {
|
| + row.appendChild(createCellForPropertyAndRemoveProperty(
|
| + autocompleteSuggestion, PROPERTY_OUTPUT_ORDER[j].propertyName));
|
| + displayedProperties[PROPERTY_OUTPUT_ORDER[j].propertyName] = true;
|
| }
|
| + }
|
|
|
| - // Now, if we're in detailed mode, add all the properties that
|
| - // haven't already been output. (We know which properties have
|
| - // already been output because we delete the property when we output
|
| - // it. The only way we have properties left at this point if
|
| - // we're in detailed mode and we're getting back properties
|
| - // not listed in PROPERTY_OUTPUT_ORDER. Perhaps someone added
|
| - // something to the C++ code but didn't bother to update this
|
| - // Javascript? In any case, we want to display them.)
|
| - if (inDetailedMode) {
|
| - for (var key in autocompleteSuggestion) {
|
| - if (!displayedProperties[key] &&
|
| - typeof autocompleteSuggestion[key] != 'function') {
|
| - var cell = document.createElement('td');
|
| - cell.textContent = key + '=' + autocompleteSuggestion[key];
|
| - row.appendChild(cell);
|
| - }
|
| + // Now, if we're in detailed mode, add all the properties that
|
| + // haven't already been output. (We know which properties have
|
| + // already been output because we delete the property when we output
|
| + // it. The only way we have properties left at this point if
|
| + // we're in detailed mode and we're getting back properties
|
| + // not listed in PROPERTY_OUTPUT_ORDER. Perhaps someone added
|
| + // something to the C++ code but didn't bother to update this
|
| + // Javascript? In any case, we want to display them.)
|
| + if (inDetailedMode) {
|
| + for (var key in autocompleteSuggestion) {
|
| + if (!displayedProperties[key] &&
|
| + typeof autocompleteSuggestion[key] != 'function') {
|
| + var cell = document.createElement('td');
|
| + cell.textContent = key + '=' + autocompleteSuggestion[key];
|
| + row.appendChild(cell);
|
| }
|
| }
|
| -
|
| - table.appendChild(row);
|
| }
|
| - return table;
|
| +
|
| + table.appendChild(row);
|
| }
|
| + return table;
|
| +}
|
|
|
| - /* Repaints the page based on the contents of the array
|
| - * progressiveAutocompleteResults, which represents consecutive
|
| - * autocomplete results. We only display the last (most recent)
|
| - * entry unless we're asked to display incomplete results. For an
|
| - * example of the output, play with chrome://omnibox/
|
| - */
|
| - function refresh() {
|
| - // Erase whatever is currently being displayed.
|
| - var output = $('omnibox-debug-text');
|
| - output.innerHTML = '';
|
| +/* Repaints the page based on the contents of the array
|
| + * progressiveAutocompleteResults, which represents consecutive
|
| + * autocomplete results. We only display the last (most recent)
|
| + * entry unless we're asked to display incomplete results. For an
|
| + * example of the output, play with chrome://omnibox/
|
| + */
|
| +function refresh() {
|
| + // Erase whatever is currently being displayed.
|
| + var output = $('omnibox-debug-text');
|
| + output.innerHTML = '';
|
|
|
| - if (progressiveAutocompleteResults.length > 0) { // if we have results
|
| - // Display the results.
|
| - var showIncompleteResults = $('show-incomplete-results').checked;
|
| - var startIndex = showIncompleteResults ? 0 :
|
| - progressiveAutocompleteResults.length - 1;
|
| - for (var i = startIndex; i < progressiveAutocompleteResults.length; i++) {
|
| - addResultToOutput(progressiveAutocompleteResults[i]);
|
| - }
|
| + if (progressiveAutocompleteResults.length > 0) { // if we have results
|
| + // Display the results.
|
| + var showIncompleteResults = $('show-incomplete-results').checked;
|
| + var startIndex =
|
| + showIncompleteResults ? 0 : progressiveAutocompleteResults.length - 1;
|
| + for (var i = startIndex; i < progressiveAutocompleteResults.length; i++) {
|
| + addResultToOutput(progressiveAutocompleteResults[i]);
|
| }
|
| }
|
| +}
|
|
|
| - // NOTE: Need to keep a global reference to the |pageImpl| such that it is not
|
| - // garbage collected, which causes the pipe to close and future calls from C++
|
| - // to JS to get dropped.
|
| - var pageImpl = null;
|
| - var browserProxy = null;
|
| +// NOTE: Need to keep a global reference to the |pageImpl| such that it is not
|
| +// garbage collected, which causes the pipe to close and future calls from C++
|
| +// to JS to get dropped.
|
| +var pageImpl = null;
|
| +var browserProxy = null;
|
|
|
| - function initializeProxies() {
|
| - browserProxy = new mojom.OmniboxPageHandlerPtr;
|
| - Mojo.bindInterface(mojom.OmniboxPageHandler.name,
|
| - mojo.makeRequest(browserProxy).handle);
|
| +function initializeProxies() {
|
| + browserProxy = new mojom.OmniboxPageHandlerPtr;
|
| + Mojo.bindInterface(
|
| + mojom.OmniboxPageHandler.name, mojo.makeRequest(browserProxy).handle);
|
|
|
| - /** @constructor */
|
| - var OmniboxPageImpl = function(request) {
|
| - this.binding_ = new mojo.Binding(mojom.OmniboxPage, this, request);
|
| - };
|
| + /** @constructor */
|
| + var OmniboxPageImpl = function(request) {
|
| + this.binding_ = new mojo.Binding(mojom.OmniboxPage, this, request);
|
| + };
|
|
|
| - OmniboxPageImpl.prototype = {
|
| - /** @override */
|
| - handleNewAutocompleteResult: function(result) {
|
| - progressiveAutocompleteResults.push(result);
|
| - refresh();
|
| - },
|
| - };
|
| + OmniboxPageImpl.prototype = {
|
| + /** @override */
|
| + handleNewAutocompleteResult: function(result) {
|
| + progressiveAutocompleteResults.push(result);
|
| + refresh();
|
| + },
|
| + };
|
|
|
| - var client = new mojom.OmniboxPagePtr;
|
| - pageImpl = new OmniboxPageImpl(mojo.makeRequest(client));
|
| - browserProxy.setClientPage(client);
|
| - }
|
| + var client = new mojom.OmniboxPagePtr;
|
| + pageImpl = new OmniboxPageImpl(mojo.makeRequest(client));
|
| + browserProxy.setClientPage(client);
|
| +}
|
|
|
| - document.addEventListener('DOMContentLoaded', function() {
|
| - initializeProxies();
|
| - initialize();
|
| - });
|
| +document.addEventListener('DOMContentLoaded', function() {
|
| + initializeProxies();
|
| + initialize();
|
| +});
|
| })();
|
|
|