Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3039)

Unified Diff: chrome/browser/ui/browser_instant_controller.h

Issue 12386019: Instant: Use only one hidden WebContents per profile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/browser_instant_controller.h
diff --git a/chrome/browser/ui/browser_instant_controller.h b/chrome/browser/ui/browser_instant_controller.h
index 21cc6d8627d68bd1d4fd3673b1bd15eebe58f6c6..9ca437a6e585f7937dd60a9e53c819bdf838f8f0 100644
--- a/chrome/browser/ui/browser_instant_controller.h
+++ b/chrome/browser/ui/browser_instant_controller.h
@@ -5,22 +5,16 @@
#ifndef CHROME_BROWSER_UI_BROWSER_INSTANT_CONTROLLER_H_
#define CHROME_BROWSER_UI_BROWSER_INSTANT_CONTROLLER_H_
-#include <string>
-
#include "base/basictypes.h"
-#include "base/compiler_specific.h"
-#include "base/prefs/public/pref_change_registrar.h"
-#include "chrome/browser/instant/instant_controller.h"
+#include "base/memory/scoped_ptr.h"
#include "chrome/browser/instant/instant_unload_handler.h"
-#include "chrome/browser/ui/search/search_model_observer.h"
-#include "content/public/browser/notification_observer.h"
-#include "content/public/browser/notification_registrar.h"
+#include "content/public/common/page_transition_types.h"
#include "ui/base/window_open_disposition.h"
class Browser;
+class GURL;
+class InstantController;
struct InstantSuggestion;
-class Profile;
-class ThemeService;
namespace content {
class WebContents;
@@ -32,114 +26,75 @@ class Rect;
namespace chrome {
-class BrowserInstantController : public content::NotificationObserver,
- public search::SearchModelObserver {
+// BrowserInstantController is a bridge between Browser and InstantController.
+// It is owned by Browser, and in turn, owns InstantController.
+class BrowserInstantController {
public:
explicit BrowserInstantController(Browser* browser);
virtual ~BrowserInstantController();
- // If |url| is the new tab page URL, set |target_contents| to the preloaded
+ InstantController* instant() const { return instant_.get(); }
+
+ // --------------------------------------------------------------------------
+ // Methods invoked by |browser_|
+
+ // If |url| is the new tab page URL, sets |target_contents| to the preloaded
// NTP contents from InstantController. If |source_contents| is not NULL, we
// replace it with the new |target_contents| in the tabstrip and delete
// |source_contents|. Otherwise, the caller owns |target_contents| and is
// responsible for inserting it into the tabstrip.
//
// Returns true if and only if we update |target_contents|.
- bool MaybeSwapInInstantNTPContents(
- const GURL& url,
- content::WebContents* source_contents,
- content::WebContents** target_contents);
+ bool MaybeSwapInInstantNTPContents(const GURL& url,
+ content::WebContents* source_contents,
+ content::WebContents** target_contents);
- // Commits the current Instant, returning true on success. This is intended
- // for use from OpenCurrentURL.
+ // Commits the current Instant overlay, returning true on success. This is
+ // intended to be invoked by |browser_| from OpenCurrentURL.
bool OpenInstant(WindowOpenDisposition disposition);
- // Returns the Profile associated with the Browser that owns this object.
- Profile* profile() const;
-
- // Returns the InstantController or NULL if there is no InstantController for
- // this BrowserInstantController.
- InstantController* instant() { return &instant_; }
+ // --------------------------------------------------------------------------
+ // Methods invoked by |instant_|
- // Invoked by |instant_| to commit the |overlay| by merging it into the active
- // tab or adding it as a new tab.
- void CommitInstant(scoped_ptr<content::WebContents> overlay, bool in_new_tab);
+ // Commits the |overlay| by merging it into the active tab or a new tab.
+ void CommitInstant(scoped_ptr<content::WebContents> overlay,
+ content::PageTransition transition,
+ bool in_new_tab);
- // Invoked by |instant_| to autocomplete the |suggestion| into the omnibox.
+ // Autocompletes the |suggestion| into the omnibox.
void SetInstantSuggestion(const InstantSuggestion& suggestion);
- // Invoked by |instant_| to commit the omnibox's suggested text.
- // Call-through to OmniboxEditModel::CommitSuggestedText.
+ // Commits the omnibox's suggested text (gray text).
void CommitSuggestedText(bool skip_inline_autocomplete);
- // Invoked by |instant_| to get the bounds that the overlay is placed at,
- // in screen coordinates.
- gfx::Rect GetInstantBounds();
+ // Returns the bounds that the overlay is placed at, in screen coordinates.
+ gfx::Rect GetInstantBounds() const;
- // Invoked by |instant_| to notify that the overlay gained focus, usually due
- // to the user clicking on it.
+ // Notifies |browser_| that the overlay gained focus, usually due to the user
+ // clicking on it.
void InstantOverlayFocused();
- // Invoked by |instant_| to give the omnibox focus, with the option of making
- // the caret invisible.
+ // Requests that the omnibox be focused, optionally hiding the caret.
void FocusOmnibox(bool caret_visibility);
- // Invoked by |instant_| to get the currently active tab, over which the
- // overlay would be shown.
+ // Returns the currently active tab, over which the overlay would be shown.
content::WebContents* GetActiveWebContents() const;
- // Invoked by |browser_| when the active tab changes.
- void ActiveTabChanged();
-
- // Invoked by |browser_| when the active tab is about to be deactivated.
- void TabDeactivated(content::WebContents* contents);
-
- // Invoked by |instant_| to update theme information for NTP.
- void UpdateThemeInfo();
-
- // Invoked by the InstantController when it wants to open a URL.
+ // Requests |browser_| to perform a browser-initiated navigation.
void OpenURL(const GURL& url,
content::PageTransition transition,
WindowOpenDisposition disposition);
- // Sets the stored omnibox bounds.
- void SetOmniboxBounds(const gfx::Rect& bounds);
-
private:
- // Sets the value of |instant_| based on value from profile. Invoked
- // on pref change.
- void ResetInstant(const std::string& pref_name);
-
- // Overridden from search::SearchModelObserver:
- virtual void ModeChanged(const search::Mode& old_mode,
- const search::Mode& new_mode) OVERRIDE;
-
- // content::NotificationObserver implementation.
- virtual void Observe(int type,
- const content::NotificationSource& source,
- const content::NotificationDetails& details) OVERRIDE;
-
- // Helper for handling theme change.
- void OnThemeChanged(ThemeService* theme_service);
-
// Replaces the contents at tab |index| with |new_contents| and deletes the
// existing contents.
void ReplaceWebContentsAt(int index,
scoped_ptr<content::WebContents> new_contents);
Browser* const browser_;
-
- InstantController instant_;
+ scoped_ptr<InstantController> instant_;
InstantUnloadHandler instant_unload_handler_;
- // Theme-related data for NTP overlay to adopt themes.
- bool initialized_theme_info_; // True if theme_info_ has been initialized.
- ThemeBackgroundInfo theme_info_;
-
- PrefChangeRegistrar profile_pref_registrar_;
-
- content::NotificationRegistrar registrar_;
-
DISALLOW_COPY_AND_ASSIGN(BrowserInstantController);
};

Powered by Google App Engine
This is Rietveld 408576698