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_CONTROLLER_PAIRING_SCREEN_ACTOR_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_ACTOR_H_
7
8#include <string>
9
10#include "base/macros.h"
11
12namespace base {
13class DictionaryValue;
14}
15
16namespace content {
17class BrowserContext;
18}
19
20namespace chromeos {
21
22namespace controller_pairing {
23
24// Keep these constants synced with corresponding constants defined in
25// oobe_screen_controller_pairing.js.
26// Context keys.
27extern const char kContextKeyPage[];
28extern const char kContextKeyControlsDisabled[];
29extern const char kContextKeyDevices[];
30extern const char kContextKeyConfirmationCode[];
31extern const char kContextKeySelectedDevice[];
32extern const char kContextKeyAccountId[];
33extern const char kContextKeyEnrollmentDomain[];
34
35// Pages names.
36extern const char kPageDevicesDiscovery[];
37extern const char kPageDeviceSelect[];
38extern const char kPageDeviceNotFound[];
39extern const char kPageEstablishingConnection[];
40extern const char kPageEstablishingConnectionError[];
41extern const char kPageCodeConfirmation[];
42extern const char kPageHostUpdate[];
43extern const char kPageHostConnectionLost[];
44extern const char kPageEnrollmentIntroduction[];
45extern const char kPageAuthentication[];
46extern const char kPageHostEnrollment[];
47extern const char kPageHostEnrollmentError[];
48extern const char kPagePairingDone[];
49
50// Actions names.
51extern const char kActionChooseDevice[];
52extern const char kActionRepeatDiscovery[];
53extern const char kActionAcceptCode[];
54extern const char kActionRejectCode[];
55extern const char kActionProceedToAuthentication[];
56extern const char kActionEnroll[];
57extern const char kActionStartSession[];
58
59}  // namespace controller_pairing
60
61class ControllerPairingScreenActor {
62 public:
63  class Delegate {
64   public:
65    virtual ~Delegate() {}
66    virtual void OnActorDestroyed(ControllerPairingScreenActor* actor) = 0;
67    virtual void OnScreenContextChanged(const base::DictionaryValue& diff) = 0;
68    virtual void OnUserActed(const std::string& action) = 0;
69  };
70
71  ControllerPairingScreenActor();
72  virtual ~ControllerPairingScreenActor();
73
74  virtual void Show() = 0;
75  virtual void Hide() = 0;
76  virtual void SetDelegate(Delegate* delegate) = 0;
77  virtual void OnContextChanged(const base::DictionaryValue& diff) = 0;
78  virtual content::BrowserContext* GetBrowserContext() = 0;
79
80 private:
81  DISALLOW_COPY_AND_ASSIGN(ControllerPairingScreenActor);
82};
83
84}  // namespace chromeos
85
86#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_ACTOR_H_
87