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

Side by Side Diff: chrome/renderer/resources/extensions/searchbox_api.js

Issue 13375003: Fixing iframe jank in the local omnibox popup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Include missing file. Created 7 years, 8 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 8
9 if (!chrome.embeddedSearch) { 9 if (!chrome.embeddedSearch) {
10 chrome.embeddedSearch = new function() { 10 chrome.embeddedSearch = new function() {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 // ======================================================================= 87 // =======================================================================
88 native function GetQuery(); 88 native function GetQuery();
89 native function GetVerbatim(); 89 native function GetVerbatim();
90 native function GetSelectionStart(); 90 native function GetSelectionStart();
91 native function GetSelectionEnd(); 91 native function GetSelectionEnd();
92 native function GetStartMargin(); 92 native function GetStartMargin();
93 native function GetRightToLeft(); 93 native function GetRightToLeft();
94 native function GetAutocompleteResults(); 94 native function GetAutocompleteResults();
95 native function GetDisplayInstantResults(); 95 native function GetDisplayInstantResults();
96 native function GetFontSize(); 96 native function GetFontSize();
97 native function GetSuggestionIframeURLPrefix();
98 native function IsKeyCaptureEnabled(); 97 native function IsKeyCaptureEnabled();
99 native function SetQuery(); 98 native function SetQuery();
100 native function SetQueryFromAutocompleteResult(); 99 native function SetQueryFromAutocompleteResult();
101 native function SetSuggestion(); 100 native function SetSuggestion();
102 native function SetSuggestionFromAutocompleteResult(); 101 native function SetSuggestionFromAutocompleteResult();
103 native function SetSuggestions(); 102 native function SetSuggestions();
104 native function ShowOverlay(); 103 native function ShowOverlay();
105 native function FocusOmnibox(); 104 native function FocusOmnibox();
106 native function StartCapturingKeyStrokes(); 105 native function StartCapturingKeyStrokes();
107 native function StopCapturingKeyStrokes(); 106 native function StopCapturingKeyStrokes();
108 native function SetSuggestionStyle();
109 native function NavigateSearchBox(); 107 native function NavigateSearchBox();
110 native function ShowBars(); 108 native function ShowBars();
111 native function HideBars(); 109 native function HideBars();
110 native function GetSuggestionData();
112 111
113 function SafeWrapSuggestion(restrictedText) { 112 function SafeWrapSuggestion(restrictedText) {
114 return SafeWrap(restrictedText, 22); 113 return SafeWrap(restrictedText, 22);
115 } 114 }
116 115
117 // Wraps the AutocompleteResult query and URL into ShadowDOM nodes so that 116 // Wraps the AutocompleteResult query and URL into ShadowDOM nodes so that
118 // the JS cannot access them and deletes the raw values. Also replaces the 117 // the JS cannot access them and deletes the raw values. Also replaces the
119 // destination_url with the chrome search URL that should be used as the 118 // destination_url with the chrome search URL that should be used as the
120 // iframe. 119 // iframe.
121 // TODO(shishir): Remove code to support ShadowDOM once server side 120 // TODO(shishir): Remove code to support ShadowDOM once server side
122 // changes are live. 121 // changes are live.
123 function GetAutocompleteResultsWrapper() { 122 function GetAutocompleteResultsWrapper() {
124 var autocompleteResults = DedupeAutocompleteResults( 123 var autocompleteResults = DedupeAutocompleteResults(
125 GetAutocompleteResults()); 124 GetAutocompleteResults());
126 var userInput = GetQuery(); 125 var userInput = GetQuery();
127 for (var i = 0, result; result = autocompleteResults[i]; ++i) { 126 for (var i = 0, result; result = autocompleteResults[i]; ++i) {
128 var className = result.is_search ? 'chrome_search' : 'chrome_url'; 127 var className = result.is_search ? 'chrome_search' : 'chrome_url';
129 var combinedElement = '<span class=' + className + '>' + 128 var combinedElement = '<span class=' + className + '>' +
130 escapeHTML(result.contents) + '</span>'; 129 escapeHTML(result.contents) + '</span>';
131 if (result.description) { 130 if (result.description) {
132 combinedElement += '<span class=chrome_separator> &ndash; </span>' + 131 combinedElement += '<span class=chrome_separator> &ndash; </span>' +
133 '<span class=chrome_title>' + 132 '<span class=chrome_title>' +
134 escapeHTML(result.description) + '</span>'; 133 escapeHTML(result.description) + '</span>';
135 } 134 }
136 result.combinedNode = SafeWrapSuggestion(combinedElement); 135 result.combinedNode = SafeWrapSuggestion(combinedElement);
137 delete result.contents; 136 delete result.contents;
138 delete result.description; 137 delete result.description;
139 result.destination_url = GetSuggestionIframeURLPrefix() + result.rid; 138 delete result.destination_url;
140 } 139 }
141 return autocompleteResults; 140 return autocompleteResults;
142 } 141 }
143 142
144 // TODO(dcblack): Do this in C++ instead of JS. 143 // TODO(dcblack): Do this in C++ instead of JS.
145 function CanonicalizeUrl(url) { 144 function CanonicalizeUrl(url) {
146 return url.replace(HTTP_REGEX, '').replace(WWW_REGEX, ''); 145 return url.replace(HTTP_REGEX, '').replace(WWW_REGEX, '');
147 } 146 }
148 147
149 // Removes duplicates from AutocompleteResults. 148 // Removes duplicates from AutocompleteResults.
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 this.__defineGetter__('selectionStart', GetSelectionStart); 222 this.__defineGetter__('selectionStart', GetSelectionStart);
224 this.__defineGetter__('selectionEnd', GetSelectionEnd); 223 this.__defineGetter__('selectionEnd', GetSelectionEnd);
225 this.__defineGetter__('startMargin', GetStartMargin); 224 this.__defineGetter__('startMargin', GetStartMargin);
226 this.__defineGetter__('rtl', GetRightToLeft); 225 this.__defineGetter__('rtl', GetRightToLeft);
227 this.__defineGetter__('nativeSuggestions', GetAutocompleteResultsWrapper); 226 this.__defineGetter__('nativeSuggestions', GetAutocompleteResultsWrapper);
228 this.__defineGetter__('isKeyCaptureEnabled', IsKeyCaptureEnabled); 227 this.__defineGetter__('isKeyCaptureEnabled', IsKeyCaptureEnabled);
229 this.__defineGetter__('displayInstantResults', GetDisplayInstantResults); 228 this.__defineGetter__('displayInstantResults', GetDisplayInstantResults);
230 this.__defineGetter__('font', GetFont); 229 this.__defineGetter__('font', GetFont);
231 this.__defineGetter__('fontSize', GetFontSize); 230 this.__defineGetter__('fontSize', GetFontSize);
232 231
232 // This method is restricted to chrome-search://suggestion pages.
233 this.getSuggestionData = function(restrictedId) {
234 return GetSuggestionData(restrictedId);
235 };
233 this.setSuggestions = function(text) { 236 this.setSuggestions = function(text) {
234 SetSuggestions(text); 237 SetSuggestions(text);
235 }; 238 };
236 this.setAutocompleteText = function(text, behavior) { 239 this.setAutocompleteText = function(text, behavior) {
237 SetSuggestion(text, behavior); 240 SetSuggestion(text, behavior);
238 }; 241 };
239 this.setRestrictedAutocompleteText = function(autocompleteResultId) { 242 this.setRestrictedAutocompleteText = function(autocompleteResultId) {
240 SetSuggestionFromAutocompleteResult(autocompleteResultId); 243 SetSuggestionFromAutocompleteResult(autocompleteResultId);
241 }; 244 };
242 this.setValue = function(text, type) { 245 this.setValue = function(text, type) {
(...skipping 11 matching lines...) Expand all
254 }; 257 };
255 this.focus = function() { 258 this.focus = function() {
256 FocusOmnibox(); 259 FocusOmnibox();
257 }; 260 };
258 this.startCapturingKeyStrokes = function() { 261 this.startCapturingKeyStrokes = function() {
259 StartCapturingKeyStrokes(); 262 StartCapturingKeyStrokes();
260 }; 263 };
261 this.stopCapturingKeyStrokes = function() { 264 this.stopCapturingKeyStrokes = function() {
262 StopCapturingKeyStrokes(); 265 StopCapturingKeyStrokes();
263 }; 266 };
264 this.setSuggestionStyle = function(url_color, title_color) {
265 SetSuggestionStyle(url_color, title_color);
266 };
267 this.navigateContentWindow = function(destination, disposition) { 267 this.navigateContentWindow = function(destination, disposition) {
268 NavigateSearchBox(destination, disposition); 268 NavigateSearchBox(destination, disposition);
269 } 269 }
270 this.showBars = function() { 270 this.showBars = function() {
271 ShowBars(); 271 ShowBars();
272 }; 272 };
273 this.hideBars = function() { 273 this.hideBars = function() {
274 HideBars(); 274 HideBars();
275 }; 275 };
276 this.onchange = null; 276 this.onchange = null;
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 346
347 this.onmostvisitedchange = null; 347 this.onmostvisitedchange = null;
348 this.onthemechange = null; 348 this.onthemechange = null;
349 }; 349 };
350 350
351 // Export legacy searchbox API. 351 // Export legacy searchbox API.
352 // TODO: Remove this when Instant Extended is fully launched. 352 // TODO: Remove this when Instant Extended is fully launched.
353 chrome.searchBox = this.searchBox; 353 chrome.searchBox = this.searchBox;
354 }; 354 };
355 } 355 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698