Remove dependency on singletons in translate and language_detection.
This is a pre-factor for https://crrev.com/c/6029830.
It is intended to be a no-op.
There are 2 different methods that are expected to return singletons:
- `translate::GetLanguagerDetector`
- `language_detection::GetLanguagerDetector`
They are called in multiple places. With this CL they are called and
their object is retained.
For `language_detection::GetLanguagerDetector`, we are probably going
to need to switch to per-thread instances anyway, so the singleton
model is not sustainable.
For `translate::GetLanguagerDetector`, I think it's just a bit clearer
when you don't have to know that this produces a singleton.
Bug: 354069716
Change-Id: I8b827cc71cffcd8ce1cc159c84e1e08281f673a7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6038976
Reviewed-by: Trevor Perrier <[email protected]>
Commit-Queue: Fergal Daly <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1386666}
diff --git a/components/translate/content/renderer/translate_agent.cc b/components/translate/content/renderer/translate_agent.cc
index bee5bb61..fffdf5e 100644
--- a/components/translate/content/renderer/translate_agent.cc
+++ b/components/translate/content/renderer/translate_agent.cc
@@ -101,9 +101,12 @@
TranslateAgent::TranslateAgent(content::RenderFrame* render_frame, int world_id)
: content::RenderFrameObserver(render_frame),
world_id_(world_id),
+ translate_language_detection_model_(GetLanguageDetectionModel()),
language_detection_agent_(
IsTFLiteLanguageDetectionEnabled()
- ? new language_detection::LanguageDetectionAgent(render_frame)
+ ? new language_detection::LanguageDetectionAgent(
+ render_frame,
+ translate_language_detection_model_->tflite_model())
: nullptr) {
translate_task_runner_ = this->render_frame()->GetTaskRunner(
blink::TaskType::kInternalTranslation);
@@ -192,12 +195,10 @@
translate::LanguageVerificationType::kNoPageContent);
} else if (translate::IsTFLiteLanguageDetectionEnabled()) {
// Use TFLite and page contents to assist with language detection.
- translate::LanguageDetectionModel& language_detection_model =
- GetLanguageDetectionModel();
- bool is_available = language_detection_model.IsAvailable();
+ bool is_available = translate_language_detection_model_->IsAvailable();
language =
is_available
- ? language_detection_model.DeterminePageLanguage(
+ ? translate_language_detection_model_->DeterminePageLanguage(
content_language, html_lang, contents->as_string(),
&model_detected_language, &is_model_reliable,
model_reliability_score)
@@ -213,7 +214,8 @@
"LanguageDetection.TFLiteModel.WasModelUnavailableDueToDeferredLoad",
!is_available &&
language_detection_agent_->waiting_for_first_foreground());
- detection_model_version = language_detection_model.GetModelVersion();
+ detection_model_version =
+ translate_language_detection_model_->GetModelVersion();
details.has_run_lang_detection = true;
} else {
// Use CLD3 and page contents to assist with language detection.