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_H_ 6 #define CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_H_ 7 8 #include "base/macros.h" 9 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" 14 15 namespace chromeos { 16 17 class ControllerPairingScreen : 18 public WizardScreen, 19 public pairing_chromeos::ControllerPairingController::Observer, 20 public ControllerPairingScreenActor::Delegate { 21 public: 22 ControllerPairingScreen( 23 ScreenObserver* observer, 24 ControllerPairingScreenActor* actor, 25 pairing_chromeos::ControllerPairingController* controller); 26 virtual ~ControllerPairingScreen(); 27 28 private: 29 typedef pairing_chromeos::ControllerPairingController::Stage Stage; 30 31 void CommitContextChanges(); 32 bool ExpectStageIs(Stage stage) const; 33 34 // Overridden from WizardScreen: 35 virtual void PrepareToShow() OVERRIDE; 36 virtual void Show() OVERRIDE; 37 virtual void Hide() OVERRIDE; 38 virtual std::string GetName() const OVERRIDE; 39 40 // Overridden from pairing_chromeos::ControllerPairingController::Observer: 41 virtual void PairingStageChanged(Stage new_stage) OVERRIDE; 42 virtual void DiscoveredDevicesListChanged() OVERRIDE; 43 44 // Overridden from ControllerPairingView::Delegate: 45 virtual void OnActorDestroyed(ControllerPairingScreenActor* actor) OVERRIDE; 46 virtual void OnScreenContextChanged( 47 const base::DictionaryValue& diff) OVERRIDE; 48 virtual void OnUserActed(const std::string& action) OVERRIDE; 49 50 // Context for sharing data between C++ and JS. 51 // TODO(dzhioev): move to BaseScreen when possible. 52 ScreenContext context_; 53 54 ControllerPairingScreenActor* actor_; 55 56 // Controller performing pairing. Owned by the wizard controller. 57 pairing_chromeos::ControllerPairingController* controller_; 58 59 // Current stage of pairing process. 60 Stage current_stage_; 61 62 // If this one is |false| first device in device list will be preselected on 63 // next device list update. 64 bool device_preselected_; 65 66 DISALLOW_COPY_AND_ASSIGN(ControllerPairingScreen); 67 }; 68 69 } // namespace chromeos 70 71 #endif // CHROME_BROWSER_CHROMEOS_LOGIN_SCREENS_CONTROLLER_PAIRING_SCREEN_H_ 72