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 HID_DETECTION_COMPLETED, 28 // Connection failed while trying to load a WebPageScreen. 29 CONNECTION_FAILED, 30 UPDATE_INSTALLED, 31 UPDATE_NOUPDATE, 32 UPDATE_ERROR_CHECKING_FOR_UPDATE, 33 UPDATE_ERROR_UPDATING, 34 USER_IMAGE_SELECTED, 35 EULA_ACCEPTED, 36 EULA_BACK, 37 ENTERPRISE_AUTO_ENROLLMENT_CHECK_COMPLETED, 38 ENTERPRISE_ENROLLMENT_COMPLETED, 39 ENTERPRISE_AUTO_MAGIC_ENROLLMENT_COMPLETED, 40 ENTERPRISE_ENROLLMENT_BACK, 41 RESET_CANCELED, 42 KIOSK_AUTOLAUNCH_CANCELED, 43 KIOSK_AUTOLAUNCH_CONFIRMED, 44 KIOSK_ENABLE_COMPLETED, 45 TERMS_OF_SERVICE_DECLINED, 46 TERMS_OF_SERVICE_ACCEPTED, 47 WRONG_HWID_WARNING_SKIPPED, 48 EXIT_CODES_COUNT // not a real code, must be the last 49 }; 50 51 // Method called by a screen when user's done with it. 52 virtual void OnExit(ExitCodes exit_code) = 0; 53 54 // Forces current screen showing. 55 virtual void ShowCurrentScreen() = 0; 56 57 // Notify about new user names and password. It is used to autologin 58 // just created user without asking the same info once again. 59 virtual void OnSetUserNamePassword(const std::string& username, 60 const std::string& password) = 0; 61 62 // Whether usage statistics reporting is enabled on EULA screen. 63 virtual void SetUsageStatisticsReporting(bool val) = 0; 64 virtual bool GetUsageStatisticsReporting() const = 0; 65 66 virtual ErrorScreen* GetErrorScreen() = 0; 67 virtual void ShowErrorScreen() = 0; 68 virtual void HideErrorScreen(WizardScreen* parent_screen) = 0; 69 70 protected: 71 virtual ~ScreenObserver() {} 72 }; 73 74 } // namespace chromeos 75 76 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_SCREEN_OBSERVER_H_ 77