assistant: remove enable hotword libassistant config

Bug: b:123939389
Test: locally build and run
Change-Id: I6e89f7c622d71ab7862e2c3c25d56778b37eac2c
Reviewed-on: https://chromium-review.googlesource.com/c/1455475
Commit-Queue: Xiaohui Chen <[email protected]>
Reviewed-by: Tao Wu <[email protected]>
Cr-Commit-Position: refs/heads/master@{#629728}
diff --git a/chromeos/services/assistant/assistant_manager_service.h b/chromeos/services/assistant/assistant_manager_service.h
index 67f4fff6..d90fde2 100644
--- a/chromeos/services/assistant/assistant_manager_service.h
+++ b/chromeos/services/assistant/assistant_manager_service.h
@@ -47,9 +47,12 @@
   // Set access token for assistant.
   virtual void SetAccessToken(const std::string& access_token) = 0;
 
-  // Turn on / off hotword listening.
+  // Turn on / off all listening, including hotword and voice query.
   virtual void EnableListening(bool enable) = 0;
 
+  // Turn on / off hotword listening.
+  virtual void EnableHotword(bool enable) = 0;
+
   // Returns a pointer of AssistantSettingsManager.
   virtual AssistantSettingsManager* GetAssistantSettingsManager() = 0;
 };
diff --git a/chromeos/services/assistant/assistant_manager_service_impl.cc b/chromeos/services/assistant/assistant_manager_service_impl.cc
index 42c0a74..3f8cbf2 100644
--- a/chromeos/services/assistant/assistant_manager_service_impl.cc
+++ b/chromeos/services/assistant/assistant_manager_service_impl.cc
@@ -133,7 +133,7 @@
 
   started_time_ = base::TimeTicks::Now();
 
-  platform_api_->OnHotwordEnabled(enable_hotword);
+  EnableHotword(enable_hotword);
 
   using AssistantManagerPtr =
       std::unique_ptr<assistant_client::AssistantManager>;
@@ -153,7 +153,7 @@
           },
           new_assistant_manager,
           base::BindOnce(&AssistantManagerServiceImpl::StartAssistantInternal,
-                         base::Unretained(this), access_token, enable_hotword)),
+                         base::Unretained(this), access_token)),
       base::BindOnce(&AssistantManagerServiceImpl::PostInitAssistant,
                      base::Unretained(this), std::move(post_init_callback),
                      base::Owned(new_assistant_manager)));
@@ -175,6 +175,9 @@
 
 void AssistantManagerServiceImpl::SetAccessToken(
     const std::string& access_token) {
+  if (!assistant_manager_)
+    return;
+
   VLOG(1) << "Set access token.";
   // Push the |access_token| we got as an argument into AssistantManager before
   // starting to ensure that all server requests will be authenticated once
@@ -204,6 +207,11 @@
 
 void AssistantManagerServiceImpl::EnableListening(bool enable) {
   assistant_manager_->EnableListening(enable);
+  EnableHotword(enable);
+}
+
+void AssistantManagerServiceImpl::EnableHotword(bool enable) {
+  platform_api_->OnHotwordEnabled(enable);
 }
 
 AssistantSettingsManager*
@@ -739,13 +747,12 @@
 
 std::unique_ptr<assistant_client::AssistantManager>
 AssistantManagerServiceImpl::StartAssistantInternal(
-    const std::string& access_token,
-    bool enable_hotword) {
+    const std::string& access_token) {
   DCHECK(background_thread_.task_runner()->BelongsToCurrentThread());
 
   std::unique_ptr<assistant_client::AssistantManager> assistant_manager;
   assistant_manager.reset(assistant_client::AssistantManager::Create(
-      platform_api_.get(), CreateLibAssistantConfig(!enable_hotword)));
+      platform_api_.get(), CreateLibAssistantConfig()));
   auto* assistant_manager_internal =
       UnwrapAssistantManagerInternal(assistant_manager.get());
 
diff --git a/chromeos/services/assistant/assistant_manager_service_impl.h b/chromeos/services/assistant/assistant_manager_service_impl.h
index 5bdf0de..6d69430a 100644
--- a/chromeos/services/assistant/assistant_manager_service_impl.h
+++ b/chromeos/services/assistant/assistant_manager_service_impl.h
@@ -97,6 +97,7 @@
   State GetState() const override;
   void SetAccessToken(const std::string& access_token) override;
   void EnableListening(bool enable) override;
+  void EnableHotword(bool enable) override;
   AssistantSettingsManager* GetAssistantSettingsManager() override;
 
   // mojom::Assistant overrides:
@@ -174,8 +175,7 @@
 
  private:
   std::unique_ptr<assistant_client::AssistantManager> StartAssistantInternal(
-      const std::string& access_token,
-      bool enable_hotword);
+      const std::string& access_token);
   void PostInitAssistant(
       base::OnceClosure post_init_callback,
       std::unique_ptr<assistant_client::AssistantManager>* assistant_manager);
diff --git a/chromeos/services/assistant/fake_assistant_manager_service_impl.cc b/chromeos/services/assistant/fake_assistant_manager_service_impl.cc
index f067507a..6f3fc5c8 100644
--- a/chromeos/services/assistant/fake_assistant_manager_service_impl.cc
+++ b/chromeos/services/assistant/fake_assistant_manager_service_impl.cc
@@ -31,6 +31,8 @@
 
 void FakeAssistantManagerServiceImpl::EnableListening(bool enable) {}
 
+void FakeAssistantManagerServiceImpl::EnableHotword(bool enable) {}
+
 AssistantManagerService::State FakeAssistantManagerServiceImpl::GetState()
     const {
   return state_;
diff --git a/chromeos/services/assistant/fake_assistant_manager_service_impl.h b/chromeos/services/assistant/fake_assistant_manager_service_impl.h
index 71a9bb3..33eba93 100644
--- a/chromeos/services/assistant/fake_assistant_manager_service_impl.h
+++ b/chromeos/services/assistant/fake_assistant_manager_service_impl.h
@@ -33,6 +33,7 @@
   void Stop() override;
   void SetAccessToken(const std::string& access_token) override;
   void EnableListening(bool enable) override;
+  void EnableHotword(bool enable) override;
   State GetState() const override;
   AssistantSettingsManager* GetAssistantSettingsManager() override;
 
diff --git a/chromeos/services/assistant/service.cc b/chromeos/services/assistant/service.cc
index 759049a..9f18d032 100644
--- a/chromeos/services/assistant/service.cc
+++ b/chromeos/services/assistant/service.cc
@@ -125,7 +125,7 @@
     return;
 
   power_source_connected_ = power_source_connected;
-  MaybeRestartAssistantManager();
+  UpdateAssistantManagerState();
 }
 
 void Service::SuspendDone(const base::TimeDelta& sleep_duration) {
@@ -166,8 +166,7 @@
 }
 
 void Service::OnVoiceInteractionHotwordEnabled(bool enabled) {
-  // Hotword status change requires restarting assistant manager.
-  MaybeRestartAssistantManager();
+  UpdateAssistantManagerState();
 }
 
 void Service::OnLocaleChanged(const std::string& locale) {
@@ -179,25 +178,6 @@
   if (power_source_connected_)
     return;
 
-  MaybeRestartAssistantManager();
-}
-
-void Service::MaybeRestartAssistantManager() {
-  if (assistant_manager_service_) {
-    switch (assistant_manager_service_->GetState()) {
-      case AssistantManagerService::State::RUNNING:
-        StopAssistantManagerService();
-        break;
-      case AssistantManagerService::State::STARTED:
-        // A previous instance of assistant manager is still in the process
-        // of starting. We need to wait for that to finish before trying to
-        // restart a new one to avoid potentially multiple instances running.
-        pending_restart_assistant_manager_ = true;
-        return;
-      case AssistantManagerService::State::STOPPED:
-        break;
-    }
-  }
   UpdateAssistantManagerState();
 }
 
@@ -230,14 +210,13 @@
       }
       break;
     case AssistantManagerService::State::RUNNING:
-      if (assistant_state_.settings_enabled().value())
-        assistant_manager_service_->SetAccessToken(access_token_.value());
-      else
-        StopAssistantManagerService();
-      break;
     case AssistantManagerService::State::STARTED:
-      if (!assistant_state_.settings_enabled().value())
+      if (assistant_state_.settings_enabled().value()) {
+        assistant_manager_service_->SetAccessToken(access_token_.value());
+        assistant_manager_service_->EnableHotword(ShouldEnableHotword());
+      } else {
         StopAssistantManagerService();
+      }
       break;
   }
 }
@@ -366,12 +345,6 @@
   client_->OnAssistantStatusChanged(true /* running */);
   UpdateListeningState();
   DVLOG(1) << "Assistant is running";
-
-  if (pending_restart_assistant_manager_) {
-    pending_restart_assistant_manager_ = false;
-    StopAssistantManagerService();
-    UpdateAssistantManagerState();
-  }
 }
 
 void Service::StopAssistantManagerService() {
diff --git a/chromeos/services/assistant/service.h b/chromeos/services/assistant/service.h
index a6997e1..d276dd6c 100644
--- a/chromeos/services/assistant/service.h
+++ b/chromeos/services/assistant/service.h
@@ -131,7 +131,6 @@
   void OnVoiceInteractionHotwordAlwaysOn(bool always_on) override;
   void OnLocaleChanged(const std::string& locale) override;
 
-  void MaybeRestartAssistantManager();
   void UpdateAssistantManagerState();
   void BindAssistantSettingsManager(
       mojom::AssistantSettingsManagerRequest request);
@@ -188,8 +187,6 @@
   bool session_active_ = false;
   // Whether the lock screen is on.
   bool locked_ = false;
-  // Whether there is a pending run for updating AssistantManagerService
-  bool pending_restart_assistant_manager_ = false;
   // Whether the power source is connected.
   bool power_source_connected_ = false;
 
diff --git a/chromeos/services/assistant/utils.cc b/chromeos/services/assistant/utils.cc
index 8f76c81..ff0fd1f 100644
--- a/chromeos/services/assistant/utils.cc
+++ b/chromeos/services/assistant/utils.cc
@@ -27,7 +27,7 @@
   return home_dir;
 }
 
-std::string CreateLibAssistantConfig(bool disable_hotword) {
+std::string CreateLibAssistantConfig() {
   using Value = base::Value;
   using Type = base::Value::Type;
 
diff --git a/chromeos/services/assistant/utils.h b/chromeos/services/assistant/utils.h
index c33d76e..162edc6 100644
--- a/chromeos/services/assistant/utils.h
+++ b/chromeos/services/assistant/utils.h
@@ -18,7 +18,7 @@
 
 base::FilePath GetRootPath();
 
-std::string CreateLibAssistantConfig(bool disable_hotword);
+std::string CreateLibAssistantConfig();
 
 }  // namespace assistant
 }  // namespace chromeos