summaryrefslogtreecommitdiffstats
path: root/chrome/browser/instant/instant_preview_controller.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/instant/instant_preview_controller.cc')
-rw-r--r--chrome/browser/instant/instant_preview_controller.cc39
1 files changed, 39 insertions, 0 deletions
diff --git a/chrome/browser/instant/instant_preview_controller.cc b/chrome/browser/instant/instant_preview_controller.cc
new file mode 100644
index 0000000..3283742d
--- /dev/null
+++ b/chrome/browser/instant/instant_preview_controller.cc
@@ -0,0 +1,39 @@
+// Copyright 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.
+
+#include "chrome/browser/instant/instant_preview_controller.h"
+
+#include "chrome/browser/instant/instant_model.h"
+#include "chrome/browser/instant/instant_controller.h"
+#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_instant_controller.h"
+#include "chrome/common/chrome_notification_types.h"
+#include "content/public/browser/notification_service.h"
+
+InstantPreviewController::InstantPreviewController(Browser* browser)
+ : browser_(browser) {
+ registrar_.Add(this, chrome::NOTIFICATION_BROWSER_INSTANT_RESET,
+ content::NotificationService::AllSources());
+ ResetInstant();
+}
+
+InstantPreviewController::~InstantPreviewController() {
+ InstantController* instant = browser_->instant_controller()->instant();
+ if (instant)
+ instant->model()->RemoveObserver(this);
+}
+
+void InstantPreviewController::Observe(
+ int type,
+ const content::NotificationSource& source,
+ const content::NotificationDetails& details) {
+ DCHECK_EQ(chrome::NOTIFICATION_BROWSER_INSTANT_RESET, type);
+ ResetInstant();
+}
+
+void InstantPreviewController::ResetInstant() {
+ InstantController* instant = browser_->instant_controller()->instant();
+ if (instant && !instant->model()->HasObserver(this))
+ instant->model()->AddObserver(this);
+}