Home | History | Annotate | Download | only in searchbox
      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 #ifndef CHROME_RENDERER_SEARCHBOX_SEARCHBOX_H_
      6 #define CHROME_RENDERER_SEARCHBOX_SEARCHBOX_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/basictypes.h"
     11 #include "base/strings/string16.h"
     12 #include "chrome/common/instant_restricted_id_cache.h"
     13 #include "chrome/common/instant_types.h"
     14 #include "chrome/common/ntp_logging_events.h"
     15 #include "chrome/common/omnibox_focus_state.h"
     16 #include "content/public/renderer/render_view_observer.h"
     17 #include "content/public/renderer/render_view_observer_tracker.h"
     18 #include "ui/base/window_open_disposition.h"
     19 #include "url/gurl.h"
     20 
     21 namespace content {
     22 class RenderView;
     23 }
     24 
     25 class SearchBox : public content::RenderViewObserver,
     26                   public content::RenderViewObserverTracker<SearchBox> {
     27  public:
     28   explicit SearchBox(content::RenderView* render_view);
     29   virtual ~SearchBox();
     30 
     31   // Sends ChromeViewHostMsg_LogEvent to the browser.
     32   void LogEvent(NTPLoggingEventType event);
     33 
     34   // Sends ChromeViewHostMsg_LogMostVisitedImpression to the browser.
     35   void LogMostVisitedImpression(int position, const base::string16& provider);
     36 
     37   // Sends ChromeViewHostMsg_LogMostVisitedNavigation to the browser.
     38   void LogMostVisitedNavigation(int position, const base::string16& provider);
     39 
     40   // Sends ChromeViewHostMsg_ChromeIdentityCheck to the browser.
     41   void CheckIsUserSignedInToChromeAs(const base::string16& identity);
     42 
     43   // Sends ChromeViewHostMsg_SearchBoxDeleteMostVisitedItem to the browser.
     44   void DeleteMostVisitedItem(InstantRestrictedID most_visited_item_id);
     45 
     46   // Generates the favicon URL of the most visited item specified by the
     47   // |transient_url|. If the |transient_url| is valid, returns true and fills in
     48   // |url|. If the |transient_url| is invalid, returns true and |url| is set to
     49   // "chrome-search://favicon/" in order to prevent the invalid URL to be
     50   // requested.
     51   //
     52   // Valid forms of |transient_url|:
     53   //    chrome-search://favicon/<view_id>/<restricted_id>
     54   //    chrome-search://favicon/<favicon_parameters>/<view_id>/<restricted_id>
     55   bool GenerateFaviconURLFromTransientURL(const GURL& transient_url,
     56                                           GURL* url) const;
     57 
     58   // Generates the thumbnail URL of the most visited item specified by the
     59   // |transient_url|. If the |transient_url| is valid, returns true and fills in
     60   // |url|. If the |transient_url| is invalid, returns false  and |url| is not
     61   // set.
     62   //
     63   // Valid form of |transient_url|:
     64   //    chrome-search://thumb/<render_view_id>/<most_visited_item_id>
     65   bool GenerateThumbnailURLFromTransientURL(const GURL& transient_url,
     66                                             GURL* url) const;
     67 
     68   // Returns the latest most visited items sent by the browser.
     69   void GetMostVisitedItems(
     70       std::vector<InstantMostVisitedItemIDPair>* items) const;
     71 
     72   // If the |most_visited_item_id| is found in the cache, sets |item| to it
     73   // and returns true.
     74   bool GetMostVisitedItemWithID(InstantRestrictedID most_visited_item_id,
     75                                 InstantMostVisitedItem* item) const;
     76 
     77   // Sends ChromeViewHostMsg_FocusOmnibox to the browser.
     78   void Focus();
     79 
     80   // Sends ChromeViewHostMsg_SearchBoxNavigate to the browser.
     81   void NavigateToURL(const GURL& url,
     82                      WindowOpenDisposition disposition,
     83                      bool is_most_visited_item_url);
     84 
     85   // Sends ChromeViewHostMsg_SearchBoxPaste to the browser.
     86   void Paste(const base::string16& text);
     87 
     88   const ThemeBackgroundInfo& GetThemeBackgroundInfo();
     89 
     90   // Sends ChromeViewHostMsg_SetVoiceSearchSupported to the browser.
     91   void SetVoiceSearchSupported(bool supported);
     92 
     93   // Sends ChromeViewHostMsg_StartCapturingKeyStrokes to the browser.
     94   void StartCapturingKeyStrokes();
     95 
     96   // Sends ChromeViewHostMsg_StopCapturingKeyStrokes to the browser.
     97   void StopCapturingKeyStrokes();
     98 
     99   // Sends ChromeViewHostMsg_SearchBoxUndoAllMostVisitedDeletions to the
    100   // browser.
    101   void UndoAllMostVisitedDeletions();
    102 
    103   // Sends ChromeViewHostMsg_SearchBoxUndoMostVisitedDeletion to the browser.
    104   void UndoMostVisitedDeletion(InstantRestrictedID most_visited_item_id);
    105 
    106   bool app_launcher_enabled() const { return app_launcher_enabled_; }
    107   bool is_focused() const { return is_focused_; }
    108   bool is_input_in_progress() const { return is_input_in_progress_; }
    109   bool is_key_capture_enabled() const { return is_key_capture_enabled_; }
    110   bool display_instant_results() const { return display_instant_results_; }
    111   const base::string16& query() const { return query_; }
    112   int start_margin() const { return start_margin_; }
    113   const InstantSuggestion& suggestion() const { return suggestion_; }
    114 
    115  private:
    116   // Overridden from content::RenderViewObserver:
    117   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
    118 
    119   void OnSetPageSequenceNumber(int page_seq_no);
    120   void OnChromeIdentityCheckResult(const base::string16& identity,
    121                                    bool identity_match);
    122   void OnDetermineIfPageSupportsInstant();
    123   void OnFocusChanged(OmniboxFocusState new_focus_state,
    124                       OmniboxFocusChangeReason reason);
    125   void OnMarginChange(int margin);
    126   void OnMostVisitedChanged(
    127       const std::vector<InstantMostVisitedItem>& items);
    128   void OnPromoInformationReceived(bool is_app_launcher_enabled);
    129   void OnSetDisplayInstantResults(bool display_instant_results);
    130   void OnSetInputInProgress(bool input_in_progress);
    131   void OnSetSuggestionToPrefetch(const InstantSuggestion& suggestion);
    132   void OnSubmit(const base::string16& query);
    133   void OnThemeChanged(const ThemeBackgroundInfo& theme_info);
    134   void OnToggleVoiceSearch();
    135 
    136   // Returns the current zoom factor of the render view or 1 on failure.
    137   double GetZoom() const;
    138 
    139   // Sets the searchbox values to their initial value.
    140   void Reset();
    141 
    142   // Returns the URL of the Most Visited item specified by the |item_id|.
    143   GURL GetURLForMostVisitedItem(InstantRestrictedID item_id) const;
    144 
    145   int page_seq_no_;
    146   bool app_launcher_enabled_;
    147   bool is_focused_;
    148   bool is_input_in_progress_;
    149   bool is_key_capture_enabled_;
    150   bool display_instant_results_;
    151   InstantRestrictedIDCache<InstantMostVisitedItem> most_visited_items_cache_;
    152   ThemeBackgroundInfo theme_info_;
    153   base::string16 query_;
    154   int start_margin_;
    155   InstantSuggestion suggestion_;
    156 
    157   DISALLOW_COPY_AND_ASSIGN(SearchBox);
    158 };
    159 
    160 #endif  // CHROME_RENDERER_SEARCHBOX_SEARCHBOX_H_
    161