| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 var chrome; | 5 var chrome; |
| 6 if (!chrome) | 6 if (!chrome) |
| 7 chrome = {}; | 7 chrome = {}; |
| 8 if (!chrome.searchBox) { | 8 if (!chrome.searchBox) { |
| 9 chrome.searchBox = new function() { | 9 chrome.searchBox = new function() { |
| 10 // ========================================================================= | 10 // ========================================================================= |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 native function GetQuery(); | 23 native function GetQuery(); |
| 24 native function GetVerbatim(); | 24 native function GetVerbatim(); |
| 25 native function GetSelectionStart(); | 25 native function GetSelectionStart(); |
| 26 native function GetSelectionEnd(); | 26 native function GetSelectionEnd(); |
| 27 native function GetX(); | 27 native function GetX(); |
| 28 native function GetY(); | 28 native function GetY(); |
| 29 native function GetWidth(); | 29 native function GetWidth(); |
| 30 native function GetHeight(); | 30 native function GetHeight(); |
| 31 native function GetAutocompleteResults(); | 31 native function GetAutocompleteResults(); |
| 32 native function GetContext(); | 32 native function GetContext(); |
| 33 native function GetThemeBackgroundInfo(); |
| 34 native function GetThemeAreaHeight(); |
| 33 native function NavigateContentWindow(); | 35 native function NavigateContentWindow(); |
| 34 native function SetSuggestions(); | 36 native function SetSuggestions(); |
| 35 native function SetQuerySuggestion(); | 37 native function SetQuerySuggestion(); |
| 36 native function SetQuerySuggestionFromAutocompleteResult(); | 38 native function SetQuerySuggestionFromAutocompleteResult(); |
| 37 native function SetQuery(); | 39 native function SetQuery(); |
| 38 native function SetQueryFromAutocompleteResult(); | 40 native function SetQueryFromAutocompleteResult(); |
| 39 native function Show(); | 41 native function Show(); |
| 40 | 42 |
| 41 // Returns the |restrictedText| wrapped in a ShadowDOM. | 43 // Returns the |restrictedText| wrapped in a ShadowDOM. |
| 42 function SafeWrap(restrictedText) { | 44 function SafeWrap(restrictedText) { |
| 43 var node = document.createElement('div'); | 45 var node = document.createElement('div'); |
| 44 var nodeShadow = new WebKitShadowRoot(node); | 46 var nodeShadow = new WebKitShadowRoot(node); |
| 45 nodeShadow.applyAuthorStyles = true; | 47 nodeShadow.applyAuthorStyles = true; |
| 46 nodeShadow.innerHTML = | 48 nodeShadow.innerHTML = |
| 47 '<div style="width:700px!important;' + | 49 '<div style="width:700px!important;' + |
| 48 ' height:22px!important;' + | 50 ' height:22px!important;' + |
| 49 ' font-family:\'Chrome Droid Sans\',\'Arial\'!important;' + | 51 ' font-family:\'Chrome Droid Sans\',\'Arial\'!important;' + |
| 50 ' overflow:hidden!important;' + | 52 ' overflow:hidden!important;' + |
| 51 ' text-overflow:ellipsis!important">' + | 53 ' text-overflow:ellipsis!important">' + |
| 52 ' <nobr>' + restrictedText + '</nobr>' + | 54 ' <nobr>' + restrictedText + '</nobr>' + |
| 53 '</div>'; | 55 '</div>'; |
| 54 return node; | 56 return node; |
| 55 } | 57 } |
| 56 | 58 |
| 57 // Wraps the AutocompleteResult query and URL into ShadowDOM nodes so that | 59 // Wraps the AutocompleteResult query and URL into ShadowDOM nodes so that |
| 58 // the JS cannot access them and deletes the raw values. | 60 // the JS cannot access them and deletes the raw values. |
| 59 function GetAutocompleteResultsWrapper() { | 61 function GetAutocompleteResultsWrapper() { |
| 60 var autocompleteResults = DedupeAutcompleteResults( | 62 var autocompleteResults = DedupeAutocompleteResults( |
| 61 GetAutocompleteResults()); | 63 GetAutocompleteResults()); |
| 62 var userInput = GetQuery(); | 64 var userInput = GetQuery(); |
| 63 for (var i = 0, result; result = autocompleteResults[i]; ++i) { | 65 for (var i = 0, result; result = autocompleteResults[i]; ++i) { |
| 64 var title = result.contents; | 66 var title = result.contents; |
| 65 var url = CleanUrl(result.destination_url, userInput); | 67 var url = CleanUrl(result.destination_url, userInput); |
| 66 var combinedHtml = '<span class=chrome_url>' + url + '</span>'; | 68 var combinedHtml = '<span class=chrome_url>' + url + '</span>'; |
| 67 if (title) { | 69 if (title) { |
| 68 result.titleNode = SafeWrap(title); | 70 result.titleNode = SafeWrap(title); |
| 69 combinedHtml += '<span class=chrome_separator> – </span>' + | 71 combinedHtml += '<span class=chrome_separator> – </span>' + |
| 70 '<span class=chrome_title>' + title + '</span>'; | 72 '<span class=chrome_title>' + title + '</span>'; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 89 return url.replace(WWW_REGEX, ''); | 91 return url.replace(WWW_REGEX, ''); |
| 90 } | 92 } |
| 91 | 93 |
| 92 // TODO(dcblack): Do this in C++ instead of JS. | 94 // TODO(dcblack): Do this in C++ instead of JS. |
| 93 function CanonicalizeUrl(url) { | 95 function CanonicalizeUrl(url) { |
| 94 return url.replace(HTTP_REGEX, '').replace(WWW_REGEX, ''); | 96 return url.replace(HTTP_REGEX, '').replace(WWW_REGEX, ''); |
| 95 } | 97 } |
| 96 | 98 |
| 97 // Removes duplicates from AutocompleteResults. | 99 // Removes duplicates from AutocompleteResults. |
| 98 // TODO(dcblack): Do this in C++ instead of JS. | 100 // TODO(dcblack): Do this in C++ instead of JS. |
| 99 function DedupeAutcompleteResults(autocompleteResults) { | 101 function DedupeAutocompleteResults(autocompleteResults) { |
| 100 var urlToResultMap = {}; | 102 var urlToResultMap = {}; |
| 101 for (var i = 0, result; result = autocompleteResults[i]; ++i) { | 103 for (var i = 0, result; result = autocompleteResults[i]; ++i) { |
| 102 var url = CanonicalizeUrl(result.destination_url); | 104 var url = CanonicalizeUrl(result.destination_url); |
| 103 if (url in urlToResultMap) { | 105 if (url in urlToResultMap) { |
| 104 var oldRelevance = urlToResultMap[url].rankingData.relevance; | 106 var oldRelevance = urlToResultMap[url].rankingData.relevance; |
| 105 var newRelevance = result.rankingData.relevance; | 107 var newRelevance = result.rankingData.relevance; |
| 106 if (newRelevance > oldRelevance) { | 108 if (newRelevance > oldRelevance) { |
| 107 urlToResultMap[url] = result; | 109 urlToResultMap[url] = result; |
| 108 } | 110 } |
| 109 } else { | 111 } else { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 this.__defineGetter__('value', GetQuery); | 170 this.__defineGetter__('value', GetQuery); |
| 169 this.__defineGetter__('verbatim', GetVerbatim); | 171 this.__defineGetter__('verbatim', GetVerbatim); |
| 170 this.__defineGetter__('selectionStart', GetSelectionStart); | 172 this.__defineGetter__('selectionStart', GetSelectionStart); |
| 171 this.__defineGetter__('selectionEnd', GetSelectionEnd); | 173 this.__defineGetter__('selectionEnd', GetSelectionEnd); |
| 172 this.__defineGetter__('x', GetX); | 174 this.__defineGetter__('x', GetX); |
| 173 this.__defineGetter__('y', GetY); | 175 this.__defineGetter__('y', GetY); |
| 174 this.__defineGetter__('width', GetWidth); | 176 this.__defineGetter__('width', GetWidth); |
| 175 this.__defineGetter__('height', GetHeight); | 177 this.__defineGetter__('height', GetHeight); |
| 176 this.__defineGetter__('nativeSuggestions', GetAutocompleteResultsWrapper); | 178 this.__defineGetter__('nativeSuggestions', GetAutocompleteResultsWrapper); |
| 177 this.__defineGetter__('context', GetContext); | 179 this.__defineGetter__('context', GetContext); |
| 180 this.__defineGetter__('themeBackgroundInfo', GetThemeBackgroundInfo); |
| 181 this.__defineGetter__('themeAreaHeight', GetThemeAreaHeight); |
| 178 this.setSuggestions = function(text) { | 182 this.setSuggestions = function(text) { |
| 179 SetSuggestions(text); | 183 SetSuggestions(text); |
| 180 }; | 184 }; |
| 181 this.setAutocompleteText = function(text, behavior) { | 185 this.setAutocompleteText = function(text, behavior) { |
| 182 SetQuerySuggestion(text, behavior); | 186 SetQuerySuggestion(text, behavior); |
| 183 }; | 187 }; |
| 184 this.setRestrictedAutocompleteText = function(resultId) { | 188 this.setRestrictedAutocompleteText = function(resultId) { |
| 185 SetQuerySuggestionFromAutocompleteResult(resultId); | 189 SetQuerySuggestionFromAutocompleteResult(resultId); |
| 186 }; | 190 }; |
| 187 this.setValue = function(text, type) { | 191 this.setValue = function(text, type) { |
| (...skipping 13 matching lines...) Expand all Loading... |
| 201 }; | 205 }; |
| 202 this.onchange = null; | 206 this.onchange = null; |
| 203 this.onsubmit = null; | 207 this.onsubmit = null; |
| 204 this.oncancel = null; | 208 this.oncancel = null; |
| 205 this.onresize = null; | 209 this.onresize = null; |
| 206 this.onautocompleteresults = null; | 210 this.onautocompleteresults = null; |
| 207 this.onkeypress = null; | 211 this.onkeypress = null; |
| 208 this.oncontextchange = null; | 212 this.oncontextchange = null; |
| 209 }; | 213 }; |
| 210 } | 214 } |
| OLD | NEW |