Index: chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_framework_service.cc |
diff --git a/chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_framework_service.cc b/chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_framework_service.cc |
index 7d2d7cd4f0a666cbc541fcbf515c37d222d8f31d..47cd5d67fb9a9ef5f99f295afbe6312ba5e88f97 100644 |
--- a/chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_framework_service.cc |
+++ b/chrome/browser/chromeos/arc/voice_interaction/arc_voice_interaction_framework_service.cc |
@@ -168,10 +168,12 @@ ArcVoiceInteractionFrameworkService::ArcVoiceInteractionFrameworkService( |
ArcBridgeService* bridge_service) |
: ArcService(bridge_service), binding_(this) { |
arc_bridge_service()->voice_interaction_framework()->AddObserver(this); |
+ ArcSessionManager::Get()->AddObserver(this); |
} |
ArcVoiceInteractionFrameworkService::~ArcVoiceInteractionFrameworkService() { |
arc_bridge_service()->voice_interaction_framework()->RemoveObserver(this); |
+ ArcSessionManager::Get()->RemoveObserver(this); |
} |
void ArcVoiceInteractionFrameworkService::OnInstanceReady() { |
@@ -319,6 +321,13 @@ void ArcVoiceInteractionFrameworkService::HideMetalayer() { |
SetMetalayerVisibility(false); |
} |
+void ArcVoiceInteractionFrameworkService::OnArcPlayStoreEnabledChanged( |
+ bool enabled) { |
+ if (!enabled) |
Luis Héctor Chávez
2017/07/10 16:53:02
nit: you can't elide braces since the body is not
Muyuan
2017/07/14 20:52:13
Done.
|
+ ProfileManager::GetActiveUserProfile()->GetPrefs()->SetBoolean( |
+ prefs::kVoiceInteractionPrefSynced, false); |
+} |
Luis Héctor Chávez
2017/07/10 16:53:02
Should we also clear kVoiceInteraction{Enabled,Con
Muyuan
2017/07/14 20:52:13
It does not matter as kVoiceInteractionPrefSynced
|
+ |
void ArcVoiceInteractionFrameworkService::StartVoiceInteractionSetupWizard() { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
arc::mojom::VoiceInteractionFrameworkInstance* framework_instance = |
@@ -377,6 +386,30 @@ void ArcVoiceInteractionFrameworkService::SetVoiceInteractionContextEnabled( |
framework_instance->SetVoiceInteractionContextEnabled(enable); |
} |
+void ArcVoiceInteractionFrameworkService::UpdateVoiceInteractionPrefs() { |
+ if (!ProfileManager::GetActiveUserProfile()->GetPrefs()->GetBoolean( |
Luis Héctor Chávez
2017/07/10 16:53:02
nit: use guard-clause pattern:
if (ProfileManager
Muyuan
2017/07/14 20:52:13
Done.
|
+ prefs::kVoiceInteractionPrefSynced)) { |
+ mojom::VoiceInteractionFrameworkInstance* framework_instance = |
+ ARC_GET_INSTANCE_FOR_METHOD( |
+ arc_bridge_service()->voice_interaction_framework(), |
+ GetVoiceInteractionSettings); |
+ if (!framework_instance) |
+ return; |
+ framework_instance->GetVoiceInteractionSettings( |
+ base::Bind([](mojom::VoiceInteractionStatusPtr status) { |
Luis Héctor Chávez
2017/07/10 16:53:02
nit: make this a standalone function in the anonym
stevenjb
2017/07/10 17:57:07
+1. We generally only use function objects like th
Muyuan
2017/07/14 20:52:13
Done.
|
+ auto* prefs = ProfileManager::GetActiveUserProfile()->GetPrefs(); |
stevenjb
2017/07/10 17:57:07
Prefer explicit types when the context isn't compl
Muyuan
2017/07/14 20:52:14
Done.
|
+ prefs->SetBoolean(prefs::kVoiceInteractionPrefSynced, |
+ status->defined); |
+ if (!status->defined) |
+ return; |
+ prefs->SetBoolean(prefs::kVoiceInteractionEnabled, |
+ status->voice_interaction_enabled); |
+ prefs->SetBoolean(prefs::kVoiceInteractionContextEnabled, |
+ status->context_enabled); |
+ })); |
+ } |
+} |
+ |
void ArcVoiceInteractionFrameworkService::StartSessionFromUserInteraction( |
const gfx::Rect& rect) { |
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |