blob: ab257f676f7d80577a704cac09d7ae9ffe82b02f [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/language_detection/content/browser/content_language_detection_driver.h"
#include <memory>
#include "components/language_detection/core/browser/language_detection_model_provider.h"
namespace language_detection {
ContentLanguageDetectionDriver::ContentLanguageDetectionDriver(
LanguageDetectionModelProvider* language_detection_model_provider)
: language_detection_model_provider_(language_detection_model_provider) {}
ContentLanguageDetectionDriver::~ContentLanguageDetectionDriver() = default;
void ContentLanguageDetectionDriver::AddReceiver(
mojo::PendingReceiver<mojom::ContentLanguageDetectionDriver> receiver) {
receivers_.Add(this, std::move(receiver));
}
void ContentLanguageDetectionDriver::GetLanguageDetectionModel(
GetLanguageDetectionModelCallback callback) {
if (!language_detection_model_provider_) {
std::move(callback).Run(base::File());
return;
}
language_detection_model_provider_->GetLanguageDetectionModelFile(
std::move(callback));
}
void ContentLanguageDetectionDriver::GetLanguageDetectionModelStatus(
GetLanguageDetectionModelStatusCallback callback) {
if (!language_detection_model_provider_) {
// TODO (crbug.com/383022111): Pass the model availability based on the
// real-time status of the model (if the model is unloaded).
std::move(callback).Run(mojom::LanguageDetectionModelStatus::kNotAvailable);
return;
}
if (language_detection_model_provider_->HasValidModelFile()) {
std::move(callback).Run(mojom::LanguageDetectionModelStatus::kReadily);
return;
}
std::move(callback).Run(mojom::LanguageDetectionModelStatus::kAfterDownload);
}
} // namespace language_detection