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.
5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_H_
6 #define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_H_
8 #include "base/macros.h"
10 #include "chrome/browser/chromeos/login/screens/controller_pairing_screen_actor.h"
11 #include "chrome/browser/chromeos/login/screens/screen_context.h"
12 #include "chrome/browser/chromeos/login/screens/wizard_screen.h"
13 #include "components/pairing/controller_pairing_controller.h"
17 class ControllerPairingScreen :
19 public pairing_chromeos::ControllerPairingController::Observer,
20 public ControllerPairingScreenActor::Delegate {
22 ControllerPairingScreen(ScreenObserver* observer,
23 ControllerPairingScreenActor* actor);
24 virtual ~ControllerPairingScreen();
27 typedef pairing_chromeos::ControllerPairingController::Stage Stage;
29 void CommitContextChanges();
30 bool ExpectStageIs(Stage stage) const;
32 // Overridden from WizardScreen:
33 virtual void PrepareToShow() OVERRIDE;
34 virtual void Show() OVERRIDE;
35 virtual void Hide() OVERRIDE;
36 virtual std::string GetName() const OVERRIDE;
38 // Overridden from pairing_chromeos::ControllerPairingController::Observer:
39 virtual void PairingStageChanged(Stage new_stage) OVERRIDE;
40 virtual void DiscoveredDevicesListChanged() OVERRIDE;
42 // Overridden from ControllerPairingView::Delegate:
43 virtual void OnActorDestroyed(ControllerPairingScreenActor* actor) OVERRIDE;
44 virtual void OnScreenContextChanged(
45 const base::DictionaryValue& diff) OVERRIDE;
46 virtual void OnUserActed(const std::string& action) OVERRIDE;
48 // Context for sharing data between C++ and JS.
49 // TODO(dzhioev): move to BaseScreen when possible.
50 ScreenContext context_;
52 ControllerPairingScreenActor* actor_;
54 // Controller performing pairing. Owned by the screen for now.
55 // TODO(dzhioev): move to proper place later.
56 scoped_ptr<pairing_chromeos::ControllerPairingController> controller_;
58 // Current stage of pairing process.
61 // If this one is |false| first device in device list will be preselected on
62 // next device list update.
63 bool device_preselected_;
65 DISALLOW_COPY_AND_ASSIGN(ControllerPairingScreen);
68 } // namespace chromeos
70 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_H_