error_screen.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// found in the LICENSE file.
45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ERROR_SCREEN_H_
65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ERROR_SCREEN_H_
75f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/basictypes.h"
95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "base/compiler_specific.h"
105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/login/oobe_display.h"
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/login/oobe_display.h"
125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/login/screens/wizard_screen.h"
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace chromeos {
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ErrorScreenActor;
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ScreenObserver;
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Controller for the error screen.
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class ErrorScreen : public WizardScreen {
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public:
225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  enum UIState {
235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    UI_STATE_UNKNOWN = 0,
245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    UI_STATE_UPDATE,
255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    UI_STATE_SIGNIN,
265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    UI_STATE_LOCALLY_MANAGED
275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  };
285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  enum ErrorState {
305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    ERROR_STATE_UNKNOWN = 0,
315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    ERROR_STATE_PORTAL,
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    ERROR_STATE_OFFLINE,
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    ERROR_STATE_PROXY,
345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    ERROR_STATE_AUTH_EXT_TIMEOUT
355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  };
365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
375f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  ErrorScreen(ScreenObserver* screen_observer, ErrorScreenActor* actor);
385f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual ~ErrorScreen();
395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // WizardScreen implementation.
415f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void PrepareToShow() OVERRIDE;
425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void Show() OVERRIDE;
435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual void Hide() OVERRIDE;
445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual std::string GetName() const OVERRIDE;
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Initializes captive portal dialog and shows that if needed.
475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void FixCaptivePortal();
485f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Shows captive portal dialog.
505f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void ShowCaptivePortal();
515f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
525f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Hides captive portal dialog.
535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void HideCaptivePortal();
545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
555f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Sets current UI state.
565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void SetUIState(UIState ui_state);
575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // Sets current error screen content according to current UI state,
595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  // |error_state|, and |network|.
605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void SetErrorState(ErrorState error_state, const std::string& network);
615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  void set_parent_screen(OobeDisplay::Screen parent_screen) {
635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)    parent_screen_ = parent_screen;
645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  }
655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  OobeDisplay::Screen parent_screen() const { return parent_screen_; }
665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) private:
685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  ErrorScreenActor* actor_;
695f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
705f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  OobeDisplay::Screen parent_screen_;
715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
725f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ErrorScreen);
735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)};
745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}  // namespace chromeos
765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
775f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_ERROR_SCREEN_H_
785f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)