// 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_BROWSER_INSTANT_CONTROLLER_H_ #define CHROME_BROWSER_UI_BROWSER_INSTANT_CONTROLLER_H_ #include "base/basictypes.h" #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" #include "base/string16.h" #include "chrome/browser/api/prefs/pref_change_registrar.h" #include "chrome/browser/instant/instant_controller_delegate.h" #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" #include "chrome/common/instant_types.h" #include "content/public/browser/notification_observer.h" #include "webkit/glue/window_open_disposition.h" class Browser; class InstantController; class InstantTest; class InstantUnloadHandler; class TabContents; namespace content { class NotificationDetails; class NotificationSource; } namespace gfx { class Rect; } namespace chrome { class BrowserInstantController : public InstantControllerDelegate, public TabStripModelObserver, public content::NotificationObserver { public: explicit BrowserInstantController(Browser* browser); virtual ~BrowserInstantController(); // Commits the current Instant, returning true on success. This is intended // for use from OpenCurrentURL. bool OpenInstant(WindowOpenDisposition disposition); // Returns the InstantController or NULL if there is no InstantController for // this BrowserInstantController. InstantController* instant() const { return instant_.get(); } private: // Overridden from InstantControllerDelegate: virtual void ShowInstant() OVERRIDE; virtual void HideInstant() OVERRIDE; virtual void CommitInstant(TabContents* preview) OVERRIDE; virtual void SetSuggestedText(const string16& text, InstantCompleteBehavior behavior) OVERRIDE; virtual gfx::Rect GetInstantBounds() OVERRIDE; virtual void InstantPreviewFocused() OVERRIDE; virtual TabContents* GetActiveTabContents() const OVERRIDE; // Overridden from content::NotificationObserver: virtual void Observe(int type, const content::NotificationSource& source, const content::NotificationDetails& details) OVERRIDE; // Overridden from TabStripModelObserver: virtual void TabDeactivated(TabContents* contents) OVERRIDE; // If this browser should have Instant, a new InstantController created; // otherwise any existing InstantController is destroyed. void ResetInstant(); Browser* browser_; scoped_ptr instant_; scoped_ptr instant_unload_handler_; PrefChangeRegistrar profile_pref_registrar_; DISALLOW_COPY_AND_ASSIGN(BrowserInstantController); }; } // namespace chrome #endif // CHROME_BROWSER_UI_BROWSER_INSTANT_CONTROLLER_H_