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_ERROR_SCREEN_ACTOR_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ERROR_SCREEN_ACTOR_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "chrome/browser/chromeos/login/screens/error_screen.h" 12 #include "chrome/browser/chromeos/login/screens/error_screen_actor_delegate.h" 13 #include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" 14 15 namespace base { 16 class DictionaryValue; 17 } 18 19 namespace chromeos { 20 21 class ErrorScreenActor { 22 public: 23 // Possible network error reasons. 24 enum ErrorReason { 25 ERROR_REASON_PROXY_AUTH_CANCELLED = 0, 26 ERROR_REASON_PROXY_AUTH_SUPPLIED, 27 ERROR_REASON_PROXY_CONNECTION_FAILED, 28 ERROR_REASON_PROXY_CONFIG_CHANGED, 29 ERROR_REASON_LOADING_TIMEOUT, 30 ERROR_REASON_PORTAL_DETECTED, 31 // Reason for a case when default network has changed. 32 ERROR_REASON_NETWORK_STATE_CHANGED, 33 // Reason for a case when JS side requires error screen update. 34 ERROR_REASON_UPDATE, 35 ERROR_REASON_FRAME_ERROR 36 }; 37 38 ErrorScreenActor(); 39 virtual ~ErrorScreenActor(); 40 41 ErrorScreen::UIState ui_state() const { return ui_state_; } 42 ErrorScreen::ErrorState error_state() const { return error_state_; } 43 44 // Returns id of the screen behind error screen ("caller" screen). 45 // Returns OobeUI::SCREEN_UNKNOWN if error screen isn't the current 46 // screen. 47 OobeUI::Screen parent_screen() const { return parent_screen_; } 48 49 // Sets screen this actor belongs to. 50 virtual void SetDelegate(ErrorScreenActorDelegate* delegate) = 0; 51 52 // Shows the screen. 53 virtual void Show(OobeDisplay::Screen parent_screen, 54 base::DictionaryValue* params) = 0; 55 56 // Hides the screen. 57 virtual void Hide() = 0; 58 59 // Initializes captive portal dialog and shows that if needed. 60 virtual void FixCaptivePortal() = 0; 61 62 // Shows captive portal dialog. 63 virtual void ShowCaptivePortal() = 0; 64 65 // Hides captive portal dialog. 66 virtual void HideCaptivePortal() = 0; 67 68 virtual void SetUIState(ErrorScreen::UIState ui_state) = 0; 69 virtual void SetErrorState(ErrorScreen::ErrorState error_state, 70 const std::string& network) = 0; 71 72 virtual void AllowGuestSignin(bool allowed) = 0; 73 virtual void AllowOfflineLogin(bool allowed) = 0; 74 75 virtual void ShowConnectingIndicator(bool show) = 0; 76 77 static const char* ErrorReasonString(ErrorReason reason); 78 79 protected: 80 ErrorScreen::UIState ui_state_; 81 ErrorScreen::ErrorState error_state_; 82 std::string network_; 83 bool guest_signin_allowed_; 84 bool offline_login_allowed_; 85 bool show_connecting_indicator_; 86 87 OobeUI::Screen parent_screen_; 88 89 DISALLOW_COPY_AND_ASSIGN(ErrorScreenActor); 90 }; 91 92 } // namespace chromeos 93 94 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ERROR_SCREEN_ACTOR_H_ 95