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

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

Issue 8364001: Strip special characters in extension omnibox suggestions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // This script contains privileged chrome extension related javascript APIs. 5 // This script contains privileged chrome extension related javascript APIs.
6 // It is loaded by pages whose URL has the chrome-extension protocol. 6 // It is loaded by pages whose URL has the chrome-extension protocol.
7 7
8 var chrome = chrome || {}; 8 var chrome = chrome || {};
9 (function() { 9 (function() {
10 native function GetExtensionAPIDefinition(); 10 native function GetExtensionAPIDefinition();
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 // if there is one. 438 // if there is one.
439 var id = arguments[0].menuItemId; 439 var id = arguments[0].menuItemId;
440 var onclick = chromeHidden.contextMenus.handlers[id]; 440 var onclick = chromeHidden.contextMenus.handlers[id];
441 if (onclick) { 441 if (onclick) {
442 onclick.apply(null, arguments); 442 onclick.apply(null, arguments);
443 } 443 }
444 }); 444 });
445 }; 445 };
446 } 446 }
447 447
448 // Remove invalid characters from |text| so that it is suitable to use
449 // for |AutocompleteMatch::contents|.
450 function sanitizeString(text) {
451 // NOTE: This logic mirrors |AutocompleteMatch::SanitizeString()|.
452 // 0x2028 = line separator; 0x2029 = paragraph separator.
453 var kRemoveChars = /(\r|\n|\t|\u2028|\u2029)/gm;
454 return text.trimLeft().replace(kRemoveChars, '');
455 }
456
448 // Parses the xml syntax supported by omnibox suggestion results. Returns an 457 // Parses the xml syntax supported by omnibox suggestion results. Returns an
449 // object with two properties: 'description', which is just the text content, 458 // object with two properties: 'description', which is just the text content,
450 // and 'descriptionStyles', which is an array of style objects in a format 459 // and 'descriptionStyles', which is an array of style objects in a format
451 // understood by the C++ backend. 460 // understood by the C++ backend.
452 function parseOmniboxDescription(input) { 461 function parseOmniboxDescription(input) {
453 var domParser = new DOMParser(); 462 var domParser = new DOMParser();
454 463
455 // The XML parser requires a single top-level element, but we want to 464 // The XML parser requires a single top-level element, but we want to
456 // support things like 'hello, <match>world</match>!'. So we wrap the 465 // support things like 'hello, <match>world</match>!'. So we wrap the
457 // provided text in generated root level element. 466 // provided text in generated root level element.
(...skipping 11 matching lines...) Expand all
469 var result = { 478 var result = {
470 description: '', 479 description: '',
471 descriptionStyles: [] 480 descriptionStyles: []
472 }; 481 };
473 482
474 // Recursively walk the tree. 483 // Recursively walk the tree.
475 (function(node) { 484 (function(node) {
476 for (var i = 0, child; child = node.childNodes[i]; i++) { 485 for (var i = 0, child; child = node.childNodes[i]; i++) {
477 // Append text nodes to our description. 486 // Append text nodes to our description.
478 if (child.nodeType == Node.TEXT_NODE) { 487 if (child.nodeType == Node.TEXT_NODE) {
479 result.description += child.nodeValue; 488 result.description += sanitizeString(child.nodeValue);
Peter Kasting 2011/10/27 18:37:10 I don't actually know JS, so I'm going to assume t
480 continue; 489 continue;
481 } 490 }
482 491
483 // Process and descend into a subset of recognized tags. 492 // Process and descend into a subset of recognized tags.
484 if (child.nodeType == Node.ELEMENT_NODE && 493 if (child.nodeType == Node.ELEMENT_NODE &&
485 (child.nodeName == 'dim' || child.nodeName == 'match' || 494 (child.nodeName == 'dim' || child.nodeName == 'match' ||
486 child.nodeName == 'url')) { 495 child.nodeName == 'url')) {
487 var style = { 496 var style = {
488 'type': child.nodeName, 497 'type': child.nodeName,
489 'offset': result.description.length 498 'offset': result.description.length
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
1033 1042
1034 if (!chrome.tts) 1043 if (!chrome.tts)
1035 chrome.tts = {}; 1044 chrome.tts = {};
1036 1045
1037 if (!chrome.ttsEngine) 1046 if (!chrome.ttsEngine)
1038 chrome.ttsEngine = {}; 1047 chrome.ttsEngine = {};
1039 1048
1040 if (!chrome.experimental.downloads) 1049 if (!chrome.experimental.downloads)
1041 chrome.experimental.downloads = {}; 1050 chrome.experimental.downloads = {};
1042 })(); 1051 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698