Make passage embeddings timeout value finchable.

Bug: b/354042889
Change-Id: If89b47116f1ab613aafe69cf0b7bd26e62fce367
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5731038
Reviewed-by: Raj T <rajendrant@chromium.org>
Commit-Queue: Zekun Jiang <zekunjiang@google.com>
Reviewed-by: Sophie Chang <sophiechang@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1332408}
diff --git a/components/history_embeddings/history_embeddings_features.cc b/components/history_embeddings/history_embeddings_features.cc
index 02819c69..a2d08506 100644
--- a/components/history_embeddings/history_embeddings_features.cc
+++ b/components/history_embeddings/history_embeddings_features.cc
@@ -119,6 +119,11 @@
                                              "UseUrlFilter",
                                              false);
 
+const base::FeatureParam<base::TimeDelta> kEmbeddingsServiceTimeout(
+    &kHistoryEmbeddings,
+    "EmbeddingsServiceTimeout",
+    base::Seconds(60));
+
 bool IsHistoryEmbeddingsEnabled() {
 #if BUILDFLAG(IS_CHROMEOS)
   return chromeos::features::IsFeatureManagementHistoryEmbeddingEnabled() &&
diff --git a/components/history_embeddings/history_embeddings_features.h b/components/history_embeddings/history_embeddings_features.h
index e5f2cff..810d54c 100644
--- a/components/history_embeddings/history_embeddings_features.h
+++ b/components/history_embeddings/history_embeddings_features.h
@@ -105,6 +105,10 @@
 // Whether to enable the URL filter to skip blocked URLs to improve performance.
 extern const base::FeatureParam<bool> kUseUrlFilter;
 
+// The amount of time in seconds that the passage embeddings service will idle
+// for before being torn down to reduce memory usage.
+extern const base::FeatureParam<base::TimeDelta> kEmbeddingsServiceTimeout;
+
 // Whether the history embeddings feature is enabled. This only checks if the
 // feature flags are enabled and does not check the user's opt-in preference.
 // See chrome/browser/history_embeddings/history_embeddings_utils.h.
diff --git a/components/history_embeddings/passage_embeddings_service_controller.cc b/components/history_embeddings/passage_embeddings_service_controller.cc
index 8fe4c51..4ee3f35 100644
--- a/components/history_embeddings/passage_embeddings_service_controller.cc
+++ b/components/history_embeddings/passage_embeddings_service_controller.cc
@@ -7,14 +7,12 @@
 #include "base/metrics/histogram_functions.h"
 #include "base/task/thread_pool.h"
 #include "components/history_embeddings/embedder.h"
+#include "components/history_embeddings/history_embeddings_features.h"
 #include "components/history_embeddings/vector_database.h"
 #include "components/optimization_guide/core/optimization_guide_util.h"
 
 namespace {
 
-// Time it takes before the remote idles.
-constexpr int kRemoteTimeoutSeconds = 60;
-
 passage_embeddings::mojom::PassageEmbeddingsLoadModelsParamsPtr MakeModelParams(
     const base::FilePath& embeddings_path,
     const base::FilePath& sp_path,
@@ -160,7 +158,7 @@
         base::BindOnce(&PassageEmbeddingsServiceController::OnDisconnected,
                        weak_ptr_factory_.GetWeakPtr()));
     embedder_remote_.set_idle_handler(
-        base::Seconds(kRemoteTimeoutSeconds),
+        history_embeddings::kEmbeddingsServiceTimeout.Get(),
         base::BindRepeating(&PassageEmbeddingsServiceController::ResetRemotes,
                             weak_ptr_factory_.GetWeakPtr()));
   }