Home | History | Annotate | Download | only in omnibox
      1 // Copyright (c) 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_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_CONTROLLER_H_
      6 #define CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_CONTROLLER_H_
      7 
      8 #include "base/strings/string16.h"
      9 #include "ui/base/page_transition_types.h"
     10 #include "ui/base/window_open_disposition.h"
     11 #include "url/gurl.h"
     12 
     13 class CommandUpdater;
     14 class InstantController;
     15 class ToolbarModel;
     16 
     17 namespace content {
     18 class WebContents;
     19 }
     20 
     21 namespace gfx {
     22 class Image;
     23 }
     24 
     25 // I am in hack-and-slash mode right now.
     26 // http://code.google.com/p/chromium/issues/detail?id=6772
     27 
     28 // Embedders of an AutocompleteEdit widget must implement this class.
     29 class OmniboxEditController {
     30  public:
     31   void OnAutocompleteAccept(const GURL& destination_url,
     32                             WindowOpenDisposition disposition,
     33                             ui::PageTransition transition);
     34 
     35   // Updates the controller, and, if |contents| is non-NULL, restores saved
     36   // state that the tab holds.
     37   virtual void Update(const content::WebContents* contents) = 0;
     38 
     39   // Called when anything has changed that might affect the layout or contents
     40   // of the views around the edit, including the text of the edit and the
     41   // status of any keyword- or hint-related state.
     42   virtual void OnChanged() = 0;
     43 
     44   // Called whenever the autocomplete edit gets focused.
     45   virtual void OnSetFocus() = 0;
     46 
     47   // Hides the origin chip and shows the URL.
     48   virtual void ShowURL() = 0;
     49 
     50   // Hides the origin chip while leaving the Omnibox empty.
     51   void HideOriginChip();
     52 
     53   // Shows the origin chip.  Hides the URL if it was previously shown by a call
     54   // to ShowURL().
     55   void ShowOriginChip();
     56 
     57   // Ends any in-progress animations related to showing/hiding the origin chip.
     58   // If |cancel_fade| is false, we still allow the chip itself to fade in if
     59   // we're ending a currently-running hide animation.
     60   virtual void EndOriginChipAnimations(bool cancel_fade) = 0;
     61 
     62   // Returns the InstantController, or NULL if instant is not enabled.
     63   virtual InstantController* GetInstant() = 0;
     64 
     65   // Returns the WebContents of the currently active tab.
     66   virtual content::WebContents* GetWebContents() = 0;
     67 
     68   virtual ToolbarModel* GetToolbarModel() = 0;
     69   virtual const ToolbarModel* GetToolbarModel() const = 0;
     70 
     71  protected:
     72   explicit OmniboxEditController(CommandUpdater* command_updater);
     73   virtual ~OmniboxEditController();
     74 
     75   // Hides the URL and shows the origin chip.
     76   virtual void HideURL() = 0;
     77 
     78   CommandUpdater* command_updater() { return command_updater_; }
     79   GURL destination_url() const { return destination_url_; }
     80   WindowOpenDisposition disposition() const { return disposition_; }
     81   ui::PageTransition transition() const { return transition_; }
     82 
     83  private:
     84   CommandUpdater* command_updater_;
     85 
     86   // The details necessary to open the user's desired omnibox match.
     87   GURL destination_url_;
     88   WindowOpenDisposition disposition_;
     89   ui::PageTransition transition_;
     90 
     91   DISALLOW_COPY_AND_ASSIGN(OmniboxEditController);
     92 };
     93 
     94 #endif  // CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_CONTROLLER_H_
     95