12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)var chrome; 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)if (!chrome) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome = {}; 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)if (!chrome.embeddedSearch) { 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome.embeddedSearch = new function() { 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.searchBox = new function() { 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ======================================================================= 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Private functions 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ======================================================================= 16424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) native function Focus(); 17424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) native function GetDisplayInstantResults(); 187dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch native function GetMostVisitedItemData(); 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) native function GetQuery(); 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) native function GetRightToLeft(); 217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch native function GetStartMargin(); 22424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) native function GetSuggestionToPrefetch(); 23868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) native function IsFocused(); 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) native function IsKeyCaptureEnabled(); 25ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch native function Paste(); 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch native function SetVoiceSearchSupported(); 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) native function StartCapturingKeyStrokes(); 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) native function StopCapturingKeyStrokes(); 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ======================================================================= 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Exported functions 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ======================================================================= 33424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) this.__defineGetter__('displayInstantResults', GetDisplayInstantResults); 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.__defineGetter__('isFocused', IsFocused); 357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.__defineGetter__('isKeyCaptureEnabled', IsKeyCaptureEnabled); 367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.__defineGetter__('rtl', GetRightToLeft); 377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.__defineGetter__('startMargin', GetStartMargin); 38424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) this.__defineGetter__('suggestion', GetSuggestionToPrefetch); 397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.__defineGetter__('value', GetQuery); 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 41424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) this.focus = function() { 42424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) Focus(); 43424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) }; 44424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // This method is restricted to chrome-search://most-visited pages by 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // checking the invoking context's origin in searchbox_extension.cc. 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) this.getMostVisitedItemData = function(restrictedId) { 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetMostVisitedItemData(restrictedId); 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) }; 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 51ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch this.paste = function(value) { 52ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch Paste(value); 53ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch }; 54ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch this.setVoiceSearchSupported = function(supported) { 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch SetVoiceSearchSupported(supported); 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch }; 587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.startCapturingKeyStrokes = function() { 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StartCapturingKeyStrokes(); 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 627dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.stopCapturingKeyStrokes = function() { 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) StopCapturingKeyStrokes(); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.onfocuschange = null; 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.onkeycapturechange = null; 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.onmarginchange = null; 707dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.onsubmit = null; 71424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) this.onsuggestionchange = null; 72868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) this.ontogglevoicesearch = null; 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 74424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) //TODO(jered): Remove this empty method when google no longer requires it. 757dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.setRestrictedValue = function() {}; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.newTabPage = new function() { 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ======================================================================= 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Private functions 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ======================================================================= 830f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) native function CheckIsUserSignedInToChromeAs(); 847dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch native function DeleteMostVisitedItem(); 857dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch native function GetAppLauncherEnabled(); 86a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) native function GetDispositionFromClick(); 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) native function GetMostVisitedItems(); 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) native function GetThemeBackgroundInfo(); 897dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch native function IsInputInProgress(); 907dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch native function LogEvent(); 91a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) native function LogMostVisitedImpression(); 92a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) native function LogMostVisitedNavigation(); 937dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch native function NavigateContentWindow(); 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) native function UndoAllMostVisitedDeletions(); 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) native function UndoMostVisitedDeletion(); 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) function GetMostVisitedItemsWrapper() { 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) var mostVisitedItems = GetMostVisitedItems(); 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for (var i = 0, item; item = mostVisitedItems[i]; ++i) { 10058e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch item.faviconUrl = GenerateFaviconURL(item.renderViewId, item.rid); 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // These properties are private data and should not be returned to 102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // the page. They are only accessible via getMostVisitedItemData(). 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) item.url = null; 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) item.title = null; 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) item.domain = null; 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) item.direction = null; 10758e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch item.renderViewId = null; 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mostVisitedItems; 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 11258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch function GenerateFaviconURL(renderViewId, rid) { 11358e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch return "chrome-search://favicon/size/16@" + 11458e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch window.devicePixelRatio + "x/" + 11558e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch renderViewId + "/" + rid; 11658e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch } 11758e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ======================================================================= 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Exported functions 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // ======================================================================= 1217dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.__defineGetter__('appLauncherEnabled', GetAppLauncherEnabled); 1227dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.__defineGetter__('isInputInProgress', IsInputInProgress); 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.__defineGetter__('mostVisited', GetMostVisitedItemsWrapper); 1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.__defineGetter__('themeBackgroundInfo', GetThemeBackgroundInfo); 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.deleteMostVisitedItem = function(restrictedId) { 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DeleteMostVisitedItem(restrictedId); 1282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 130a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) this.getDispositionFromClick = function(middle_button, 131a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) alt_key, 132a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ctrl_key, 133a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) meta_key, 134a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shift_key) { 135a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) return GetDispositionFromClick(middle_button, 136a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) alt_key, 137a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ctrl_key, 138a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) meta_key, 139a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) shift_key); 140a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) }; 141a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 1420f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) this.checkIsUserSignedIntoChromeAs = function(identity) { 1430f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) CheckIsUserSignedInToChromeAs(identity); 1440f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) }; 1450f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) 1467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // This method is restricted to chrome-search://most-visited pages by 1477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // checking the invoking context's origin in searchbox_extension.cc. 1487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.logEvent = function(histogram_name) { 1497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch LogEvent(histogram_name); 1507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch }; 1517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // This method is restricted to chrome-search://most-visited pages by 1535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // checking the invoking context's origin in searchbox_extension.cc. 154a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) this.logMostVisitedImpression = function(position, provider) { 155a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) LogMostVisitedImpression(position, provider); 156a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) }; 157a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 158a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // This method is restricted to chrome-search://most-visited pages by 159a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // checking the invoking context's origin in searchbox_extension.cc. 160a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) this.logMostVisitedNavigation = function(position, provider) { 161a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) LogMostVisitedNavigation(position, provider); 1625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) }; 1635d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1647dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.navigateContentWindow = function(destination, disposition) { 1657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch NavigateContentWindow(destination, disposition); 1667dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch }; 1677dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.undoAllMostVisitedDeletions = function() { 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UndoAllMostVisitedDeletions(); 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1717dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.undoMostVisitedDeletion = function(restrictedId) { 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UndoMostVisitedDeletion(restrictedId); 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1760f1bc08d4cfcc34181b0b5cbf065c40f687bf740Torne (Richard Coles) this.onsignedincheckdone = null; 1777dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.oninputcancel = null; 1787dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch this.oninputstart = null; 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.onmostvisitedchange = null; 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) this.onthemechange = null; 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1837dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // TODO(jered): Remove when google no longer expects this object. 1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) chrome.searchBox = this.searchBox; 1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) }; 1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 187