1// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_SCREEN_H_ 6#define CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_SCREEN_H_ 7#pragma once 8 9#include "ui/gfx/canvas.h" 10 11class WizardScreen; 12namespace chromeos { 13class ScreenObserver; 14} // namespace chromeos 15namespace gfx { 16class Size; 17} // namespace gfx 18namespace views { 19class View; 20} // namespace views 21 22// Interface that login wizard exposes to its screens. 23class WizardScreenDelegate { 24 public: 25 // Returns top level view of the wizard. 26 virtual views::View* GetWizardView() = 0; 27 28 // Returns observer screen should notify. 29 virtual chromeos::ScreenObserver* GetObserver(WizardScreen* screen) = 0; 30 31 // Forces the current screen to be shown immediately. 32 virtual void ShowCurrentScreen() = 0; 33 34 protected: 35 virtual ~WizardScreenDelegate() {} 36}; 37 38// Interface that defines login wizard screens. 39// Also holds a reference to a delegate. 40class WizardScreen { 41 public: 42 // Makes wizard screen visible. 43 virtual void Show() = 0; 44 // Makes wizard screen invisible. 45 virtual void Hide() = 0; 46 // Returns the size the screen. 47 virtual gfx::Size GetScreenSize() const = 0; 48 49 protected: 50 explicit WizardScreen(WizardScreenDelegate* delegate): delegate_(delegate) {} 51 virtual ~WizardScreen() {} 52 53 WizardScreenDelegate* delegate() { return delegate_; } 54 55 // Refreshes screen state. Should be called after view is made visible. 56 virtual void Refresh() = 0; 57 58 private: 59 WizardScreenDelegate* delegate_; 60}; 61 62#endif // CHROME_BROWSER_CHROMEOS_LOGIN_WIZARD_SCREEN_H_ 63