diff options
Diffstat (limited to 'chrome/browser/instant/instant_preview_controller.cc')
-rw-r--r-- | chrome/browser/instant/instant_preview_controller.cc | 39 |
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); +} |