Home | History | Annotate | Download | only in extensions
      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
      3 // found in the LICENSE file.
      4 
      5 var chrome;
      6 if (!chrome)
      7   chrome = {};
      8 
      9 if (!chrome.embeddedSearch) {
     10   chrome.embeddedSearch = new function() {
     11     this.searchBox = new function() {
     12 
     13       // =======================================================================
     14       //                            Private functions
     15       // =======================================================================
     16       native function Focus();
     17       native function GetDisplayInstantResults();
     18       native function GetMostVisitedItemData();
     19       native function GetQuery();
     20       native function GetRightToLeft();
     21       native function GetStartMargin();
     22       native function GetSuggestionToPrefetch();
     23       native function IsFocused();
     24       native function IsKeyCaptureEnabled();
     25       native function Paste();
     26       native function SetVoiceSearchSupported();
     27       native function StartCapturingKeyStrokes();
     28       native function StopCapturingKeyStrokes();
     29 
     30       // =======================================================================
     31       //                           Exported functions
     32       // =======================================================================
     33       this.__defineGetter__('displayInstantResults', GetDisplayInstantResults);
     34       this.__defineGetter__('isFocused', IsFocused);
     35       this.__defineGetter__('isKeyCaptureEnabled', IsKeyCaptureEnabled);
     36       this.__defineGetter__('rtl', GetRightToLeft);
     37       this.__defineGetter__('startMargin', GetStartMargin);
     38       this.__defineGetter__('suggestion', GetSuggestionToPrefetch);
     39       this.__defineGetter__('value', GetQuery);
     40 
     41       this.focus = function() {
     42         Focus();
     43       };
     44 
     45       // This method is restricted to chrome-search://most-visited pages by
     46       // checking the invoking context's origin in searchbox_extension.cc.
     47       this.getMostVisitedItemData = function(restrictedId) {
     48         return GetMostVisitedItemData(restrictedId);
     49       };
     50 
     51       this.paste = function(value) {
     52         Paste(value);
     53       };
     54 
     55       this.setVoiceSearchSupported = function(supported) {
     56         SetVoiceSearchSupported(supported);
     57       };
     58 
     59       this.startCapturingKeyStrokes = function() {
     60         StartCapturingKeyStrokes();
     61       };
     62 
     63       this.stopCapturingKeyStrokes = function() {
     64         StopCapturingKeyStrokes();
     65       };
     66 
     67       this.onfocuschange = null;
     68       this.onkeycapturechange = null;
     69       this.onmarginchange = null;
     70       this.onsubmit = null;
     71       this.onsuggestionchange = null;
     72       this.ontogglevoicesearch = null;
     73 
     74       //TODO(jered): Remove this empty method when google no longer requires it.
     75       this.setRestrictedValue = function() {};
     76     };
     77 
     78     this.newTabPage = new function() {
     79 
     80       // =======================================================================
     81       //                            Private functions
     82       // =======================================================================
     83       native function CheckIsUserSignedInToChromeAs();
     84       native function DeleteMostVisitedItem();
     85       native function GetAppLauncherEnabled();
     86       native function GetDispositionFromClick();
     87       native function GetMostVisitedItems();
     88       native function GetThemeBackgroundInfo();
     89       native function IsInputInProgress();
     90       native function LogEvent();
     91       native function LogMostVisitedImpression();
     92       native function LogMostVisitedNavigation();
     93       native function NavigateContentWindow();
     94       native function UndoAllMostVisitedDeletions();
     95       native function UndoMostVisitedDeletion();
     96 
     97       function GetMostVisitedItemsWrapper() {
     98         var mostVisitedItems = GetMostVisitedItems();
     99         for (var i = 0, item; item = mostVisitedItems[i]; ++i) {
    100           item.faviconUrl = GenerateFaviconURL(item.renderViewId, item.rid);
    101           // These properties are private data and should not be returned to
    102           // the page. They are only accessible via getMostVisitedItemData().
    103           item.url = null;
    104           item.title = null;
    105           item.domain = null;
    106           item.direction = null;
    107           item.renderViewId = null;
    108         }
    109         return mostVisitedItems;
    110       }
    111 
    112       function GenerateFaviconURL(renderViewId, rid) {
    113         return "chrome-search://favicon/size/16@" +
    114             window.devicePixelRatio + "x/" +
    115             renderViewId + "/" + rid;
    116       }
    117 
    118       // =======================================================================
    119       //                           Exported functions
    120       // =======================================================================
    121       this.__defineGetter__('appLauncherEnabled', GetAppLauncherEnabled);
    122       this.__defineGetter__('isInputInProgress', IsInputInProgress);
    123       this.__defineGetter__('mostVisited', GetMostVisitedItemsWrapper);
    124       this.__defineGetter__('themeBackgroundInfo', GetThemeBackgroundInfo);
    125 
    126       this.deleteMostVisitedItem = function(restrictedId) {
    127         DeleteMostVisitedItem(restrictedId);
    128       };
    129 
    130       this.getDispositionFromClick = function(middle_button,
    131                                               alt_key,
    132                                               ctrl_key,
    133                                               meta_key,
    134                                               shift_key) {
    135         return GetDispositionFromClick(middle_button,
    136                                        alt_key,
    137                                        ctrl_key,
    138                                        meta_key,
    139                                        shift_key);
    140       };
    141 
    142       this.checkIsUserSignedIntoChromeAs = function(identity) {
    143         CheckIsUserSignedInToChromeAs(identity);
    144       };
    145 
    146       // This method is restricted to chrome-search://most-visited pages by
    147       // checking the invoking context's origin in searchbox_extension.cc.
    148       this.logEvent = function(histogram_name) {
    149         LogEvent(histogram_name);
    150       };
    151 
    152       // This method is restricted to chrome-search://most-visited pages by
    153       // checking the invoking context's origin in searchbox_extension.cc.
    154       this.logMostVisitedImpression = function(position, provider) {
    155         LogMostVisitedImpression(position, provider);
    156       };
    157 
    158       // This method is restricted to chrome-search://most-visited pages by
    159       // checking the invoking context's origin in searchbox_extension.cc.
    160       this.logMostVisitedNavigation = function(position, provider) {
    161         LogMostVisitedNavigation(position, provider);
    162       };
    163 
    164       this.navigateContentWindow = function(destination, disposition) {
    165         NavigateContentWindow(destination, disposition);
    166       };
    167 
    168       this.undoAllMostVisitedDeletions = function() {
    169         UndoAllMostVisitedDeletions();
    170       };
    171 
    172       this.undoMostVisitedDeletion = function(restrictedId) {
    173         UndoMostVisitedDeletion(restrictedId);
    174       };
    175 
    176       this.onsignedincheckdone = null;
    177       this.oninputcancel = null;
    178       this.oninputstart = null;
    179       this.onmostvisitedchange = null;
    180       this.onthemechange = null;
    181     };
    182 
    183     // TODO(jered): Remove when google no longer expects this object.
    184     chrome.searchBox = this.searchBox;
    185   };
    186 }
    187