Commit 29ce8fb1 authored by llin@chromium.org's avatar llin@chromium.org Committed by Commit Bot

Gate sending media context with "related info" setting.

More detail at: go/opa-cros-media-context-consent

Bug: b/140531944
Test: Manual Test
Change-Id: Ic6527fe70a053e475e6b07034cccf0923e6c6c1e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2142959
Commit-Queue: Li Lin <llin@chromium.org>
Reviewed-by: default avatarYue Li <updowndota@chromium.org>
Cr-Commit-Position: refs/heads/master@{#759531}
parent 6276307d
...@@ -82,6 +82,9 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerService ...@@ -82,6 +82,9 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerService
// Enable/disable ARC play store. // Enable/disable ARC play store.
virtual void SetArcPlayStoreEnabled(bool enabled) = 0; virtual void SetArcPlayStoreEnabled(bool enabled) = 0;
// Enable/disable Assistant Context.
virtual void SetAssistantContextEnabled(bool enable) = 0;
// Return a pointer of AssistantSettingsManager. // Return a pointer of AssistantSettingsManager.
virtual AssistantSettingsManager* GetAssistantSettingsManager() = 0; virtual AssistantSettingsManager* GetAssistantSettingsManager() = 0;
......
...@@ -283,10 +283,24 @@ void AssistantManagerServiceImpl::WaitUntilStartIsFinishedForTesting() { ...@@ -283,10 +283,24 @@ void AssistantManagerServiceImpl::WaitUntilStartIsFinishedForTesting() {
} }
void AssistantManagerServiceImpl::AddMediaControllerObserver() { void AssistantManagerServiceImpl::AddMediaControllerObserver() {
if (features::IsMediaSessionIntegrationEnabled()) { if (!features::IsMediaSessionIntegrationEnabled())
media_controller_->AddObserver( return;
media_controller_observer_receiver_.BindNewPipeAndPassRemote());
} if (media_controller_observer_receiver_.is_bound())
return;
media_controller_->AddObserver(
media_controller_observer_receiver_.BindNewPipeAndPassRemote());
}
void AssistantManagerServiceImpl::RemoveMediaControllerObserver() {
if (!features::IsMediaSessionIntegrationEnabled())
return;
if (!media_controller_observer_receiver_.is_bound())
return;
media_controller_observer_receiver_.reset();
} }
void AssistantManagerServiceImpl::RegisterAlarmsTimersListener() { void AssistantManagerServiceImpl::RegisterAlarmsTimersListener() {
...@@ -346,6 +360,21 @@ void AssistantManagerServiceImpl::SetArcPlayStoreEnabled(bool enable) { ...@@ -346,6 +360,21 @@ void AssistantManagerServiceImpl::SetArcPlayStoreEnabled(bool enable) {
display_connection_->SetArcPlayStoreEnabled(enable); display_connection_->SetArcPlayStoreEnabled(enable);
} }
void AssistantManagerServiceImpl::SetAssistantContextEnabled(bool enable) {
DCHECK(GetState() == State::RUNNING);
if (enable) {
AddMediaControllerObserver();
} else {
RemoveMediaControllerObserver();
ResetMediaState();
}
// Both LibAssistant and Chrome threads may access |display_connection_|.
// |display_connection_| is thread safe.
display_connection_->SetAssistantContextEnabled(enable);
}
AssistantSettingsManager* AssistantSettingsManager*
AssistantManagerServiceImpl::GetAssistantSettingsManager() { AssistantManagerServiceImpl::GetAssistantSettingsManager() {
return assistant_settings_manager_.get(); return assistant_settings_manager_.get();
...@@ -1319,7 +1348,8 @@ void AssistantManagerServiceImpl::OnStartFinished() { ...@@ -1319,7 +1348,8 @@ void AssistantManagerServiceImpl::OnStartFinished() {
SyncDeviceAppsStatus(); SyncDeviceAppsStatus();
RegisterFallbackMediaHandler(); RegisterFallbackMediaHandler();
AddMediaControllerObserver();
SetAssistantContextEnabled(assistant_state()->IsScreenContextAllowed());
auto* media_manager = assistant_manager_->GetMediaManager(); auto* media_manager = assistant_manager_->GetMediaManager();
if (media_manager) if (media_manager)
...@@ -1612,6 +1642,14 @@ void AssistantManagerServiceImpl::UpdateMediaState() { ...@@ -1612,6 +1642,14 @@ void AssistantManagerServiceImpl::UpdateMediaState() {
media_manager->SetExternalPlaybackState(media_status); media_manager->SetExternalPlaybackState(media_status);
} }
void AssistantManagerServiceImpl::ResetMediaState() {
auto* media_manager = assistant_manager_->GetMediaManager();
if (media_manager) {
MediaStatus media_status;
media_manager->SetExternalPlaybackState(media_status);
}
}
std::string AssistantManagerServiceImpl::NewPendingInteraction( std::string AssistantManagerServiceImpl::NewPendingInteraction(
mojom::AssistantInteractionType interaction_type, mojom::AssistantInteractionType interaction_type,
mojom::AssistantQuerySource source, mojom::AssistantQuerySource source,
......
...@@ -121,6 +121,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerServiceImpl ...@@ -121,6 +121,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerServiceImpl
void EnableListening(bool enable) override; void EnableListening(bool enable) override;
void EnableHotword(bool enable) override; void EnableHotword(bool enable) override;
void SetArcPlayStoreEnabled(bool enable) override; void SetArcPlayStoreEnabled(bool enable) override;
void SetAssistantContextEnabled(bool enable) override;
AssistantSettingsManager* GetAssistantSettingsManager() override; AssistantSettingsManager* GetAssistantSettingsManager() override;
void AddCommunicationErrorObserver( void AddCommunicationErrorObserver(
CommunicationErrorObserver* observer) override; CommunicationErrorObserver* observer) override;
...@@ -277,6 +278,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerServiceImpl ...@@ -277,6 +278,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerServiceImpl
void RegisterFallbackMediaHandler(); void RegisterFallbackMediaHandler();
void AddMediaControllerObserver(); void AddMediaControllerObserver();
void RemoveMediaControllerObserver();
void RegisterAlarmsTimersListener(); void RegisterAlarmsTimersListener();
void FillServerExperimentIds(std::vector<std::string>* server_experiment_ids); void FillServerExperimentIds(std::vector<std::string>* server_experiment_ids);
...@@ -291,6 +293,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerServiceImpl ...@@ -291,6 +293,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerServiceImpl
void RecordQueryResponseTypeUMA(); void RecordQueryResponseTypeUMA();
void UpdateMediaState(); void UpdateMediaState();
void ResetMediaState();
std::string NewPendingInteraction( std::string NewPendingInteraction(
mojom::AssistantInteractionType interaction_type, mojom::AssistantInteractionType interaction_type,
......
...@@ -47,6 +47,9 @@ void FakeAssistantManagerServiceImpl::EnableAmbientMode(bool enabled) {} ...@@ -47,6 +47,9 @@ void FakeAssistantManagerServiceImpl::EnableAmbientMode(bool enabled) {}
void FakeAssistantManagerServiceImpl::SetArcPlayStoreEnabled(bool enabled) {} void FakeAssistantManagerServiceImpl::SetArcPlayStoreEnabled(bool enabled) {}
void FakeAssistantManagerServiceImpl::SetAssistantContextEnabled(bool enabled) {
}
AssistantManagerService::State FakeAssistantManagerServiceImpl::GetState() AssistantManagerService::State FakeAssistantManagerServiceImpl::GetState()
const { const {
return state_; return state_;
......
...@@ -40,6 +40,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) FakeAssistantManagerServiceImpl ...@@ -40,6 +40,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) FakeAssistantManagerServiceImpl
void EnableHotword(bool enable) override; void EnableHotword(bool enable) override;
void EnableAmbientMode(bool enabled) override; void EnableAmbientMode(bool enabled) override;
void SetArcPlayStoreEnabled(bool enabled) override; void SetArcPlayStoreEnabled(bool enabled) override;
void SetAssistantContextEnabled(bool enable) override;
State GetState() const override; State GetState() const override;
AssistantSettingsManager* GetAssistantSettingsManager() override; AssistantSettingsManager* GetAssistantSettingsManager() override;
void AddCommunicationErrorObserver( void AddCommunicationErrorObserver(
......
...@@ -343,6 +343,10 @@ void Service::OnAssistantConsentStatusChanged(int consent_status) { ...@@ -343,6 +343,10 @@ void Service::OnAssistantConsentStatusChanged(int consent_status) {
} }
} }
void Service::OnAssistantContextEnabled(bool enabled) {
UpdateAssistantManagerState();
}
void Service::OnAssistantHotwordAlwaysOn(bool hotword_always_on) { void Service::OnAssistantHotwordAlwaysOn(bool hotword_always_on) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// No need to update hotword status if power source is connected. // No need to update hotword status if power source is connected.
...@@ -457,6 +461,8 @@ void Service::UpdateAssistantManagerState() { ...@@ -457,6 +461,8 @@ void Service::UpdateAssistantManagerState() {
assistant_manager_service_->EnableHotword(ShouldEnableHotword()); assistant_manager_service_->EnableHotword(ShouldEnableHotword());
assistant_manager_service_->SetArcPlayStoreEnabled( assistant_manager_service_->SetArcPlayStoreEnabled(
assistant_state_.arc_play_store_enabled().value()); assistant_state_.arc_play_store_enabled().value());
assistant_manager_service_->SetAssistantContextEnabled(
assistant_state_.IsScreenContextAllowed());
} else { } else {
StopAssistantManagerService(); StopAssistantManagerService();
} }
......
...@@ -122,6 +122,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) Service ...@@ -122,6 +122,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) Service
// ash::AssistantStateObserver overrides: // ash::AssistantStateObserver overrides:
void OnAssistantConsentStatusChanged(int consent_status) override; void OnAssistantConsentStatusChanged(int consent_status) override;
void OnAssistantContextEnabled(bool enabled) override;
void OnAssistantHotwordAlwaysOn(bool hotword_always_on) override; void OnAssistantHotwordAlwaysOn(bool hotword_always_on) override;
void OnAssistantSettingsEnabled(bool enabled) override; void OnAssistantSettingsEnabled(bool enabled) override;
void OnAssistantHotwordEnabled(bool enabled) override; void OnAssistantHotwordEnabled(bool enabled) override;
......
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