1 // Copyright 2018 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 CHROMEOS_SERVICES_ASSISTANT_ASSISTANT_SETTINGS_IMPL_H_ 6 #define CHROMEOS_SERVICES_ASSISTANT_ASSISTANT_SETTINGS_IMPL_H_ 7 8 #include <memory> 9 #include <string> 10 11 #include "chromeos/services/assistant/public/cpp/assistant_settings.h" 12 #include "mojo/public/cpp/bindings/pending_receiver.h" 13 #include "mojo/public/cpp/bindings/pending_remote.h" 14 #include "mojo/public/cpp/bindings/receiver_set.h" 15 #include "mojo/public/cpp/bindings/remote.h" 16 17 namespace ash { 18 class AssistantController; 19 class AssistantStateBase; 20 } // namespace ash 21 22 namespace assistant_client { 23 struct SpeakerIdEnrollmentStatus; 24 struct SpeakerIdEnrollmentUpdate; 25 struct VoicelessResponse; 26 } // namespace assistant_client 27 28 namespace chromeos { 29 namespace assistant { 30 31 class AssistantManagerServiceImpl; 32 class ServiceContext; 33 34 class AssistantSettingsImpl : public AssistantSettings { 35 public: 36 AssistantSettingsImpl(ServiceContext* context, 37 AssistantManagerServiceImpl* assistant_manager_service); 38 ~AssistantSettingsImpl() override; 39 speaker_id_enrollment_done()40 bool speaker_id_enrollment_done() { return speaker_id_enrollment_done_; } 41 42 // AssistantSettings overrides: 43 void GetSettings(const std::string& selector, 44 GetSettingsCallback callback) override; 45 void UpdateSettings(const std::string& update, 46 UpdateSettingsCallback callback) override; 47 void StartSpeakerIdEnrollment( 48 bool skip_cloud_enrollment, 49 base::WeakPtr<SpeakerIdEnrollmentClient> client) override; 50 void StopSpeakerIdEnrollment() override; 51 void SyncSpeakerIdEnrollmentStatus() override; 52 53 void SyncDeviceAppsStatus(base::OnceCallback<void(bool)> callback); 54 55 void UpdateServerDeviceSettings(); 56 57 private: 58 void HandleSpeakerIdEnrollmentUpdate( 59 const assistant_client::SpeakerIdEnrollmentUpdate& update); 60 void HandleStopSpeakerIdEnrollment(); 61 void HandleSpeakerIdEnrollmentStatusSync( 62 const assistant_client::SpeakerIdEnrollmentStatus& status); 63 void HandleDeviceAppsStatusSync(base::OnceCallback<void(bool)> callback, 64 const std::string& settings); 65 66 bool ShouldIgnoreResponse(const assistant_client::VoicelessResponse&) const; 67 68 ash::AssistantStateBase* assistant_state(); 69 ash::AssistantController* assistant_controller(); 70 scoped_refptr<base::SequencedTaskRunner> main_task_runner(); 71 72 ServiceContext* const context_; 73 AssistantManagerServiceImpl* const assistant_manager_service_; 74 base::WeakPtr<SpeakerIdEnrollmentClient> speaker_id_enrollment_client_; 75 76 // Whether the speaker id enrollment has complete for the user. 77 bool speaker_id_enrollment_done_ = false; 78 79 base::WeakPtrFactory<AssistantSettingsImpl> weak_factory_{this}; 80 81 DISALLOW_COPY_AND_ASSIGN(AssistantSettingsImpl); 82 }; 83 84 } // namespace assistant 85 } // namespace chromeos 86 87 #endif // CHROMEOS_SERVICES_ASSISTANT_ASSISTANT_SETTINGS_IMPL_H_ 88