// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_CONTROLLER_H_ #define CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_CONTROLLER_H_ #include "base/strings/string16.h" #include "content/public/common/page_transition_types.h" #include "ui/base/window_open_disposition.h" #include "url/gurl.h" class CommandUpdater; class InstantController; class ToolbarModel; namespace content { class WebContents; } namespace gfx { class Image; } // I am in hack-and-slash mode right now. // http://code.google.com/p/chromium/issues/detail?id=6772 // Embedders of an AutocompleteEdit widget must implement this class. class OmniboxEditController { public: void OnAutocompleteAccept(const GURL& destination_url, WindowOpenDisposition disposition, content::PageTransition transition); // Updates the controller, and, if |contents| is non-NULL, restores saved // state that the tab holds. virtual void Update(const content::WebContents* contents) = 0; // Called when anything has changed that might affect the layout or contents // of the views around the edit, including the text of the edit and the // status of any keyword- or hint-related state. virtual void OnChanged() = 0; // Called whenever the autocomplete edit gets focused. virtual void OnSetFocus() = 0; // Returns the InstantController, or NULL if instant is not enabled. virtual InstantController* GetInstant() = 0; // Returns the WebContents of the currently active tab. virtual content::WebContents* GetWebContents() = 0; virtual ToolbarModel* GetToolbarModel() = 0; virtual const ToolbarModel* GetToolbarModel() const = 0; protected: explicit OmniboxEditController(CommandUpdater* command_updater); virtual ~OmniboxEditController(); CommandUpdater* command_updater() { return command_updater_; } GURL destination_url() const { return destination_url_; } WindowOpenDisposition disposition() const { return disposition_; } content::PageTransition transition() const { return transition_; } private: CommandUpdater* command_updater_; // The details necessary to open the user's desired omnibox match. GURL destination_url_; WindowOpenDisposition disposition_; content::PageTransition transition_; DISALLOW_COPY_AND_ASSIGN(OmniboxEditController); }; #endif // CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_EDIT_CONTROLLER_H_