// Copyright (c) 2011 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_CHROMEOS_LOGIN_BASE_LOGIN_DISPLAY_HOST_H_ #define CHROME_BROWSER_CHROMEOS_LOGIN_BASE_LOGIN_DISPLAY_HOST_H_ #pragma once #include <string> #include "base/memory/scoped_ptr.h" #include "chrome/browser/chromeos/login/login_display.h" #include "chrome/browser/chromeos/login/login_display_host.h" #include "content/common/notification_observer.h" #include "content/common/notification_registrar.h" #include "ui/gfx/rect.h" class WizardController; namespace views { class Widget; } namespace chromeos { class ExistingUserController; // An abstract base class that defines OOBE/login screen host. // It encapsulates controllers, background integration and flow. class BaseLoginDisplayHost : public LoginDisplayHost, public NotificationObserver { public: explicit BaseLoginDisplayHost(const gfx::Rect& background_bounds); virtual ~BaseLoginDisplayHost(); // Returns the default LoginDispalyHost instance if it has been created. static LoginDisplayHost* default_host() { return default_host_; } // LoginDisplayHost implementation: virtual void OnSessionStart(); virtual void StartWizard( const std::string& first_screen_name, const GURL& start_url); virtual void StartSignInScreen(); const gfx::Rect& background_bounds() const { return background_bounds_; } private: // NotificationObserver implementation: virtual void Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details); // Used to calculate position of the screens and background. gfx::Rect background_bounds_; NotificationRegistrar registrar_; // Default LoginDisplayHost. static LoginDisplayHost* default_host_; // Sign in screen controller. scoped_ptr<ExistingUserController> sign_in_controller_; // OOBE and some screens (camera, recovery) controller. scoped_ptr<WizardController> wizard_controller_; DISALLOW_COPY_AND_ASSIGN(BaseLoginDisplayHost); }; } // namespace chromeos #endif // CHROME_BROWSER_CHROMEOS_LOGIN_BASE_LOGIN_DISPLAY_HOST_H_