1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifndef COMPONENTS_PAIRING_HOST_PAIRING_CONTROLLER_H_ 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define COMPONENTS_PAIRING_HOST_PAIRING_CONTROLLER_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <string> 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/macros.h" 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace pairing_chromeos { 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class HostPairingController { 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch enum Stage { 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch STAGE_NONE, 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci STAGE_INITIALIZATION_ERROR, 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch STAGE_WAITING_FOR_CONTROLLER, 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch STAGE_WAITING_FOR_CODE_CONFIRMATION, 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch STAGE_UPDATING, 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch STAGE_WAITING_FOR_CONTROLLER_AFTER_UPDATE, 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch STAGE_WAITING_FOR_CREDENTIALS, 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch STAGE_ENROLLING, 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch STAGE_ENROLLMENT_ERROR, 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch STAGE_PAIRING_DONE, 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch STAGE_FINISHED 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch }; 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci enum UpdateStatus { 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UPDATE_STATUS_UNKNOWN, 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UPDATE_STATUS_UPDATING, 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UPDATE_STATUS_REBOOTING, 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci UPDATE_STATUS_UPDATED, 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch }; 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch class Observer { 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch Observer(); 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~Observer(); 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Called when pairing has moved on from one stage to another. 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void PairingStageChanged(Stage new_stage) = 0; 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Called when the controller has sent a configuration to apply. 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void ConfigureHost(bool accepted_eula, 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& lang, 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& timezone, 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci bool send_reports, 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const std::string& keyboard_layout) = 0; 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Called when the controller has provided an |auth_token| for enrollment. 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void EnrollHost(const std::string& auth_token) = 0; 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DISALLOW_COPY_AND_ASSIGN(Observer); 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch }; 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch HostPairingController(); 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~HostPairingController(); 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns current stage of pairing process. 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual Stage GetCurrentStage() = 0; 64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 65116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Starts pairing process. Can be called only on |STAGE_NONE| stage. 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void StartPairing() = 0; 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns device name. 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual std::string GetDeviceName() = 0; 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns 6-digit confirmation code. Can be called only on 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // |STAGE_WAITING_FOR_CODE_CONFIRMATION| stage. 73116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual std::string GetConfirmationCode() = 0; 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns an enrollment domain name. Can be called on stage 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // |STAGE_ENROLLMENT| and later. 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual std::string GetEnrollmentDomain() = 0; 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Notify that the update status has changed. 801320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Can be called on stage |STAGE_UPDATING|. 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void OnUpdateStatusChanged(UpdateStatus update_status) = 0; 821320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Called when enrollment has completed. 841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void SetEnrollmentComplete(bool success) = 0; 851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void AddObserver(Observer* observer) = 0; 871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void RemoveObserver(Observer* observer) = 0; 881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DISALLOW_COPY_AND_ASSIGN(HostPairingController); 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)} // namespace pairing_chromeos 94116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif // COMPONENTS_PAIRING_HOST_PAIRING_CONTROLLER_H_ 96