Commit 14493ccb authored by David Black's avatar David Black Committed by Commit Bot

Cache initial preference values for Assistant.

The AssistantManagerServiceImpl listens to changes in the Assistant
settings/context enabled state, but fails to take into consideration
their values if the preference is not changed. Instead, it defaults
to false (off).

We need to cache the correct initial values.

Bug: b:112262839
Change-Id: I6edcdae9cc71f1ec828ebe70542dd8c34c0af593
Reviewed-on: https://chromium-review.googlesource.com/1163840
Commit-Queue: David Black <dmblack@google.com>
Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarXiaohui Chen <xiaohuic@chromium.org>
Reviewed-by: default avatarXiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#581097}
parent 01ce7c99
...@@ -98,6 +98,10 @@ interface VoiceInteractionController { ...@@ -98,6 +98,10 @@ interface VoiceInteractionController {
// Return the voice interaction setup complete status. // Return the voice interaction setup complete status.
IsSetupCompleted() => (bool completed); IsSetupCompleted() => (bool completed);
// Return if the user has granted permission to access screen "context", the
// text and graphics content that is currently on screen.
IsContextEnabled() => (bool enabled);
// Return the voice interaction hotword listening status. // Return the voice interaction hotword listening status.
IsHotwordEnabled() => (bool enabled); IsHotwordEnabled() => (bool enabled);
......
...@@ -33,6 +33,7 @@ void VoiceInteractionController::NotifySettingsEnabled(bool enabled) { ...@@ -33,6 +33,7 @@ void VoiceInteractionController::NotifySettingsEnabled(bool enabled) {
} }
void VoiceInteractionController::NotifyContextEnabled(bool enabled) { void VoiceInteractionController::NotifyContextEnabled(bool enabled) {
context_enabled_ = enabled;
observers_.ForAllPtrs([enabled](auto* observer) { observers_.ForAllPtrs([enabled](auto* observer) {
observer->OnVoiceInteractionContextEnabled(enabled); observer->OnVoiceInteractionContextEnabled(enabled);
}); });
...@@ -74,6 +75,11 @@ void VoiceInteractionController::IsSetupCompleted( ...@@ -74,6 +75,11 @@ void VoiceInteractionController::IsSetupCompleted(
std::move(callback).Run(setup_completed_); std::move(callback).Run(setup_completed_);
} }
void VoiceInteractionController::IsContextEnabled(
IsContextEnabledCallback callback) {
std::move(callback).Run(context_enabled_);
}
void VoiceInteractionController::IsHotwordEnabled( void VoiceInteractionController::IsHotwordEnabled(
IsHotwordEnabledCallback callback) { IsHotwordEnabledCallback callback) {
std::move(callback).Run(hotword_enabled_); std::move(callback).Run(hotword_enabled_);
......
...@@ -32,6 +32,7 @@ class ASH_EXPORT VoiceInteractionController ...@@ -32,6 +32,7 @@ class ASH_EXPORT VoiceInteractionController
void NotifyNotificationEnabled(bool enabled) override; void NotifyNotificationEnabled(bool enabled) override;
void IsSettingEnabled(IsSettingEnabledCallback callback) override; void IsSettingEnabled(IsSettingEnabledCallback callback) override;
void IsSetupCompleted(IsSetupCompletedCallback callback) override; void IsSetupCompleted(IsSetupCompletedCallback callback) override;
void IsContextEnabled(IsContextEnabledCallback callback) override;
void IsHotwordEnabled(IsHotwordEnabledCallback callback) override; void IsHotwordEnabled(IsHotwordEnabledCallback callback) override;
void AddObserver(mojom::VoiceInteractionObserverPtr observer) override; void AddObserver(mojom::VoiceInteractionObserverPtr observer) override;
...@@ -61,6 +62,9 @@ class ASH_EXPORT VoiceInteractionController ...@@ -61,6 +62,9 @@ class ASH_EXPORT VoiceInteractionController
// Whether voice interaction setup flow has completed. // Whether voice interaction setup flow has completed.
bool setup_completed_ = false; bool setup_completed_ = false;
// Whether screen context is enabled.
bool context_enabled_ = false;
// Whether hotword listening is enabled. // Whether hotword listening is enabled.
bool hotword_enabled_ = false; bool hotword_enabled_ = false;
......
...@@ -58,6 +58,11 @@ void FakeVoiceInteractionController::IsSetupCompleted( ...@@ -58,6 +58,11 @@ void FakeVoiceInteractionController::IsSetupCompleted(
std::move(callback).Run(voice_interaction_setup_completed_); std::move(callback).Run(voice_interaction_setup_completed_);
} }
void FakeVoiceInteractionController::IsContextEnabled(
IsContextEnabledCallback callback) {
std::move(callback).Run(voice_interaction_context_enabled_);
}
void FakeVoiceInteractionController::IsHotwordEnabled( void FakeVoiceInteractionController::IsHotwordEnabled(
IsHotwordEnabledCallback callback) { IsHotwordEnabledCallback callback) {
std::move(callback).Run(voice_interaction_hotword_enabled_); std::move(callback).Run(voice_interaction_hotword_enabled_);
......
...@@ -28,6 +28,7 @@ class FakeVoiceInteractionController ...@@ -28,6 +28,7 @@ class FakeVoiceInteractionController
void NotifyNotificationEnabled(bool enabled) override; void NotifyNotificationEnabled(bool enabled) override;
void IsSettingEnabled(IsSettingEnabledCallback callback) override; void IsSettingEnabled(IsSettingEnabledCallback callback) override;
void IsSetupCompleted(IsSetupCompletedCallback callback) override; void IsSetupCompleted(IsSetupCompletedCallback callback) override;
void IsContextEnabled(IsContextEnabledCallback callback) override;
void IsHotwordEnabled(IsHotwordEnabledCallback callback) override; void IsHotwordEnabled(IsHotwordEnabledCallback callback) override;
void AddObserver(ash::mojom::VoiceInteractionObserverPtr observer) override {} void AddObserver(ash::mojom::VoiceInteractionObserverPtr observer) override {}
......
...@@ -60,9 +60,20 @@ AssistantManagerServiceImpl::AssistantManagerServiceImpl( ...@@ -60,9 +60,20 @@ AssistantManagerServiceImpl::AssistantManagerServiceImpl(
connector->BindInterface(ash::mojom::kServiceName, connector->BindInterface(ash::mojom::kServiceName,
&voice_interaction_controller_); &voice_interaction_controller_);
// TODO(b/112281490): Combine this observer with the one in service.cc.
ash::mojom::VoiceInteractionObserverPtr ptr; ash::mojom::VoiceInteractionObserverPtr ptr;
voice_interaction_observer_binding_.Bind(mojo::MakeRequest(&ptr)); voice_interaction_observer_binding_.Bind(mojo::MakeRequest(&ptr));
voice_interaction_controller_->AddObserver(std::move(ptr)); voice_interaction_controller_->AddObserver(std::move(ptr));
// Initialize |assistant_enabled_| to the value in settings.
voice_interaction_controller_->IsSettingEnabled(base::BindOnce(
&AssistantManagerServiceImpl::OnVoiceInteractionSettingsEnabled,
weak_factory_.GetWeakPtr()));
// Initialize |context_enabled_| to the value in settings.
voice_interaction_controller_->IsContextEnabled(base::BindOnce(
&AssistantManagerServiceImpl::OnVoiceInteractionContextEnabled,
weak_factory_.GetWeakPtr()));
} }
AssistantManagerServiceImpl::~AssistantManagerServiceImpl() {} AssistantManagerServiceImpl::~AssistantManagerServiceImpl() {}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment