1 // Copyright (c) 2012 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_SCREENS_SCREEN_OBSERVER_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_SCREEN_OBSERVER_H_ 7 8 #include <string> 9 10 namespace chromeos { 11 12 class ErrorScreen; 13 class WizardScreen; 14 15 // Interface that handles notifications received from any of login wizard 16 // screens. 17 class ScreenObserver { 18 public: 19 // Each login screen or a view shown within login wizard view is itself a 20 // state. Upon exit each view returns one of the results by calling 21 // OnExit() method. Depending on the result and the current view or state 22 // login wizard decides what is the next view to show. There must be an 23 // exit code for each way to exit the screen for each screen. 24 enum ExitCodes { 25 // "Continue" was pressed on network screen and network is online. 26 NETWORK_CONNECTED, 27 // Connection failed while trying to load a WebPageScreen. 28 CONNECTION_FAILED, 29 UPDATE_INSTALLED, 30 UPDATE_NOUPDATE, 31 UPDATE_ERROR_CHECKING_FOR_UPDATE, 32 UPDATE_ERROR_UPDATING, 33 USER_IMAGE_SELECTED, 34 EULA_ACCEPTED, 35 EULA_BACK, 36 ENTERPRISE_ENROLLMENT_COMPLETED, 37 ENTERPRISE_AUTO_MAGIC_ENROLLMENT_COMPLETED, 38 ENTERPRISE_ENROLLMENT_BACK, 39 RESET_CANCELED, 40 KIOSK_AUTOLAUNCH_CANCELED, 41 KIOSK_AUTOLAUNCH_CONFIRMED, 42 KIOSK_ENABLE_COMPLETED, 43 TERMS_OF_SERVICE_DECLINED, 44 TERMS_OF_SERVICE_ACCEPTED, 45 WRONG_HWID_WARNING_SKIPPED, 46 EXIT_CODES_COUNT // not a real code, must be the last 47 }; 48 49 // Method called by a screen when user's done with it. 50 virtual void OnExit(ExitCodes exit_code) = 0; 51 52 // Forces current screen showing. 53 virtual void ShowCurrentScreen() = 0; 54 55 // Notify about new user names and password. It is used to autologin 56 // just created user without asking the same info once again. 57 virtual void OnSetUserNamePassword(const std::string& username, 58 const std::string& password) = 0; 59 60 // Whether usage statistics reporting is enabled on EULA screen. 61 virtual void SetUsageStatisticsReporting(bool val) = 0; 62 virtual bool GetUsageStatisticsReporting() const = 0; 63 64 virtual ErrorScreen* GetErrorScreen() = 0; 65 virtual void ShowErrorScreen() = 0; 66 virtual void HideErrorScreen(WizardScreen* parent_screen) = 0; 67 68 protected: 69 virtual ~ScreenObserver() {} 70 }; 71 72 } // namespace chromeos 73 74 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_SCREEN_OBSERVER_H_ 75