1// Copyright 2014 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_HOST_PAIRING_SCREEN_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_HOST_PAIRING_SCREEN_H_
7
8#include "base/macros.h"
9#include "chrome/browser/chromeos/login/screens/host_pairing_screen_actor.h"
10#include "chrome/browser/chromeos/login/screens/screen_context.h"
11#include "chrome/browser/chromeos/login/screens/wizard_screen.h"
12#include "components/pairing/host_pairing_controller.h"
13
14namespace chromeos {
15
16class HostPairingScreen :
17  public WizardScreen,
18  public pairing_chromeos::HostPairingController::Observer,
19  public HostPairingScreenActor::Delegate {
20 public:
21  HostPairingScreen(ScreenObserver* observer, HostPairingScreenActor* actor,
22                    pairing_chromeos::HostPairingController* controller);
23  virtual ~HostPairingScreen();
24
25 private:
26  typedef pairing_chromeos::HostPairingController::Stage Stage;
27
28  void CommitContextChanges();
29
30  // Overridden from WizardScreen:
31  virtual void PrepareToShow() OVERRIDE;
32  virtual void Show() OVERRIDE;
33  virtual void Hide() OVERRIDE;
34  virtual std::string GetName() const OVERRIDE;
35
36  // pairing_chromeos::HostPairingController::Observer:
37  virtual void PairingStageChanged(Stage new_stage) OVERRIDE;
38  virtual void ConfigureHost(bool accepted_eula,
39                             const std::string& lang,
40                             const std::string& timezone,
41                             bool send_reports,
42                             const std::string& keyboard_layout) OVERRIDE;
43  virtual void EnrollHost(const std::string& auth_token) OVERRIDE;
44
45  // Overridden from ControllerPairingView::Delegate:
46  virtual void OnActorDestroyed(HostPairingScreenActor* actor) OVERRIDE;
47
48  // Context for sharing data between C++ and JS.
49  // TODO(dzhioev): move to BaseScreen when possible.
50  ScreenContext context_;
51
52  HostPairingScreenActor* actor_;
53
54  // Controller performing pairing. Owned by the wizard controller.
55  pairing_chromeos::HostPairingController* controller_;
56
57  // Current stage of pairing process.
58  Stage current_stage_;
59
60  DISALLOW_COPY_AND_ASSIGN(HostPairingScreen);
61};
62
63}  // namespace chromeos
64
65#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_HOST_PAIRING_SCREEN_H_
66