Commit 77f5e3f9 authored by Yue Li's avatar Yue Li Committed by Commit Bot

Guard sending app capabilities with Device Apps bit

If Device Apps bit is disabled, we should not send the list of installed
apps to the server. Also disable the open app feature.

Bug: b/140584925
Test: Manual Test
Change-Id: Id998a23b9d5e34cf3515a4ef07fda538c16fa2ee
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1854819
Commit-Queue: Yue Li <updowndota@chromium.org>
Reviewed-by: default avatarTao Wu <wutao@chromium.org>
Reviewed-by: default avatarXiaohui Chen <xiaohuic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#707045}
parent 3c10c8ab
...@@ -85,6 +85,9 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerService ...@@ -85,6 +85,9 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerService
// state value. // state value.
virtual void AddAndFireStateObserver(StateObserver* observer) = 0; virtual void AddAndFireStateObserver(StateObserver* observer) = 0;
virtual void RemoveStateObserver(const StateObserver* observer) = 0; virtual void RemoveStateObserver(const StateObserver* observer) = 0;
// Sync the device apps user consent status.
virtual void SyncDeviceAppsStatus() = 0;
}; };
// Observes all state changes made to the |AssistantManagerService::State|. // Observes all state changes made to the |AssistantManagerService::State|.
......
...@@ -367,6 +367,12 @@ void AssistantManagerServiceImpl::RemoveStateObserver( ...@@ -367,6 +367,12 @@ void AssistantManagerServiceImpl::RemoveStateObserver(
state_observers_.RemoveObserver(observer); state_observers_.RemoveObserver(observer);
} }
void AssistantManagerServiceImpl::SyncDeviceAppsStatus() {
assistant_settings_manager_->SyncDeviceAppsStatus(
base::BindOnce(&AssistantManagerServiceImpl::OnDeviceAppsEnabled,
weak_factory_.GetWeakPtr()));
}
void AssistantManagerServiceImpl::StartVoiceInteraction() { void AssistantManagerServiceImpl::StartVoiceInteraction() {
platform_api_->SetMicState(true); platform_api_->SetMicState(true);
assistant_manager_->StartAssistantInteraction(); assistant_manager_->StartAssistantInteraction();
...@@ -1167,6 +1173,8 @@ void AssistantManagerServiceImpl::OnStartFinished() { ...@@ -1167,6 +1173,8 @@ void AssistantManagerServiceImpl::OnStartFinished() {
base::TimeTicks::Now() - started_time_; base::TimeTicks::Now() - started_time_;
UMA_HISTOGRAM_TIMES("Assistant.ServiceReadyTime", time_since_started); UMA_HISTOGRAM_TIMES("Assistant.ServiceReadyTime", time_since_started);
SyncDeviceAppsStatus();
RegisterFallbackMediaHandler(); RegisterFallbackMediaHandler();
AddMediaControllerObserver(); AddMediaControllerObserver();
...@@ -1508,6 +1516,12 @@ void AssistantManagerServiceImpl::OnAccessibilityStatusChanged( ...@@ -1508,6 +1516,12 @@ void AssistantManagerServiceImpl::OnAccessibilityStatusChanged(
UpdateInternalOptions(assistant_manager_internal_); UpdateInternalOptions(assistant_manager_internal_);
} }
void AssistantManagerServiceImpl::OnDeviceAppsEnabled(bool enabled) {
display_connection_->SetDeviceAppsEnabled(enabled);
action_module_->SetAppSupportEnabled(
assistant::features::IsAppSupportEnabled() && enabled);
}
void AssistantManagerServiceImpl::StopAlarmTimerRinging() { void AssistantManagerServiceImpl::StopAlarmTimerRinging() {
if (!assistant_manager_internal_) if (!assistant_manager_internal_)
return; return;
......
...@@ -122,6 +122,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerServiceImpl ...@@ -122,6 +122,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerServiceImpl
const CommunicationErrorObserver* observer) override; const CommunicationErrorObserver* observer) override;
void AddAndFireStateObserver(StateObserver* observer) override; void AddAndFireStateObserver(StateObserver* observer) override;
void RemoveStateObserver(const StateObserver* observer) override; void RemoveStateObserver(const StateObserver* observer) override;
void SyncDeviceAppsStatus() override;
// mojom::Assistant overrides: // mojom::Assistant overrides:
void StartCachedScreenContextInteraction() override; void StartCachedScreenContextInteraction() override;
...@@ -273,6 +274,8 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerServiceImpl ...@@ -273,6 +274,8 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) AssistantManagerServiceImpl
void OnMediaControlAction(const std::string& action_name, void OnMediaControlAction(const std::string& action_name,
const std::string& media_action_args_proto); const std::string& media_action_args_proto);
void OnDeviceAppsEnabled(bool enabled);
void RegisterFallbackMediaHandler(); void RegisterFallbackMediaHandler();
void AddMediaControllerObserver(); void AddMediaControllerObserver();
void RegisterAlarmsTimersListener(); void RegisterAlarmsTimersListener();
......
...@@ -195,6 +195,22 @@ void AssistantSettingsManagerImpl::SyncSpeakerIdEnrollmentStatus() { ...@@ -195,6 +195,22 @@ void AssistantSettingsManagerImpl::SyncSpeakerIdEnrollmentStatus() {
}); });
} }
void AssistantSettingsManagerImpl::SyncDeviceAppsStatus(
base::OnceCallback<void(bool)> callback) {
DCHECK(main_task_runner()->RunsTasksInCurrentSequence());
SettingsUiSelector selector;
ConsentFlowUiSelector* consent_flow_ui =
selector.mutable_consent_flow_ui_selector();
consent_flow_ui->set_flow_id(
ActivityControlSettingsUiSelector::ASSISTANT_SUW_ONBOARDING_ON_CHROME_OS);
selector.set_gaia_user_context_ui(true);
GetSettings(
selector.SerializeAsString(),
base::BindOnce(&AssistantSettingsManagerImpl::HandleDeviceAppsStatusSync,
weak_factory_.GetWeakPtr(), std::move(callback)));
}
void AssistantSettingsManagerImpl::HandleSpeakerIdEnrollmentUpdate( void AssistantSettingsManagerImpl::HandleSpeakerIdEnrollmentUpdate(
const assistant_client::SpeakerIdEnrollmentUpdate& update) { const assistant_client::SpeakerIdEnrollmentUpdate& update) {
DCHECK(main_task_runner()->RunsTasksInCurrentSequence()); DCHECK(main_task_runner()->RunsTasksInCurrentSequence());
...@@ -263,6 +279,34 @@ void AssistantSettingsManagerImpl::HandleStopSpeakerIdEnrollment( ...@@ -263,6 +279,34 @@ void AssistantSettingsManagerImpl::HandleStopSpeakerIdEnrollment(
callback.Run(); callback.Run();
} }
void AssistantSettingsManagerImpl::HandleDeviceAppsStatusSync(
base::OnceCallback<void(bool)> callback,
const std::string& settings) {
DCHECK(main_task_runner()->RunsTasksInCurrentSequence());
SettingsUi settings_ui;
if (!settings_ui.ParseFromString(settings)) {
LOG(ERROR) << "Failed to parse the response proto, set the DA bit to false";
std::move(callback).Run(false);
return;
}
if (!settings_ui.has_gaia_user_context_ui()) {
LOG(ERROR) << "Failed to get gaia user context, set the DA bit to false";
std::move(callback).Run(false);
return;
}
const auto& gaia_user_context_ui = settings_ui.gaia_user_context_ui();
if (!gaia_user_context_ui.has_device_apps_enabled()) {
LOG(ERROR) << "Failed to get the device apps bit, set it to false";
std::move(callback).Run(false);
return;
}
std::move(callback).Run(gaia_user_context_ui.device_apps_enabled());
}
void AssistantSettingsManagerImpl::UpdateServerDeviceSettings() { void AssistantSettingsManagerImpl::UpdateServerDeviceSettings() {
DCHECK(main_task_runner()->RunsTasksInCurrentSequence()); DCHECK(main_task_runner()->RunsTasksInCurrentSequence());
......
...@@ -60,6 +60,8 @@ class AssistantSettingsManagerImpl : public AssistantSettingsManager { ...@@ -60,6 +60,8 @@ class AssistantSettingsManagerImpl : public AssistantSettingsManager {
StopSpeakerIdEnrollmentCallback callback) override; StopSpeakerIdEnrollmentCallback callback) override;
void SyncSpeakerIdEnrollmentStatus() override; void SyncSpeakerIdEnrollmentStatus() override;
void SyncDeviceAppsStatus(base::OnceCallback<void(bool)> callback);
void UpdateServerDeviceSettings(); void UpdateServerDeviceSettings();
private: private:
...@@ -68,6 +70,8 @@ class AssistantSettingsManagerImpl : public AssistantSettingsManager { ...@@ -68,6 +70,8 @@ class AssistantSettingsManagerImpl : public AssistantSettingsManager {
void HandleStopSpeakerIdEnrollment(base::RepeatingCallback<void()> callback); void HandleStopSpeakerIdEnrollment(base::RepeatingCallback<void()> callback);
void HandleSpeakerIdEnrollmentStatusSync( void HandleSpeakerIdEnrollmentStatusSync(
const assistant_client::SpeakerIdEnrollmentStatus& status); const assistant_client::SpeakerIdEnrollmentStatus& status);
void HandleDeviceAppsStatusSync(base::OnceCallback<void(bool)> callback,
const std::string& settings);
ash::AssistantStateBase* assistant_state(); ash::AssistantStateBase* assistant_state();
mojom::AssistantController* assistant_controller(); mojom::AssistantController* assistant_controller();
......
...@@ -43,6 +43,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) FakeAssistantManagerServiceImpl ...@@ -43,6 +43,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) FakeAssistantManagerServiceImpl
const CommunicationErrorObserver* observer) override {} const CommunicationErrorObserver* observer) override {}
void AddAndFireStateObserver(StateObserver* observer) override; void AddAndFireStateObserver(StateObserver* observer) override;
void RemoveStateObserver(const StateObserver* observer) override; void RemoveStateObserver(const StateObserver* observer) override;
void SyncDeviceAppsStatus() override {}
// mojom::Assistant overrides: // mojom::Assistant overrides:
void StartCachedScreenContextInteraction() override; void StartCachedScreenContextInteraction() override;
......
...@@ -25,4 +25,8 @@ message GaiaUserContextUi { ...@@ -25,4 +25,8 @@ message GaiaUserContextUi {
// Whether Assistant is disabled by Dasher domain admin. // Whether Assistant is disabled by Dasher domain admin.
// This bit only makes sense for GAIA traffic. // This bit only makes sense for GAIA traffic.
optional bool assistant_disabled_by_dasher_domain = 4; optional bool assistant_disabled_by_dasher_domain = 4;
// Whether Device Apps is enabled to store user's apps which could help
// improve user experience across Google services.
optional bool device_apps_enabled = 6;
} }
...@@ -262,6 +262,17 @@ void Service::OnLockStateChanged(bool locked) { ...@@ -262,6 +262,17 @@ void Service::OnLockStateChanged(bool locked) {
UpdateListeningState(); UpdateListeningState();
} }
void Service::OnAssistantConsentStatusChanged(int consent_status) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Notify device apps status when user accepts activity control.
if (assistant_manager_service_ &&
assistant_manager_service_->GetState() ==
AssistantManagerService::State::RUNNING) {
assistant_manager_service_->SyncDeviceAppsStatus();
}
}
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.
......
...@@ -108,6 +108,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) Service ...@@ -108,6 +108,7 @@ class COMPONENT_EXPORT(ASSISTANT_SERVICE) Service
void OnLockStateChanged(bool locked) override; void OnLockStateChanged(bool locked) override;
// ash::AssistantStateObserver overrides: // ash::AssistantStateObserver overrides:
void OnAssistantConsentStatusChanged(int consent_status) 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