blob: c5aad5e6b297db4da9ea3a2baa7e0a4060a34843 [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 "chrome/browser/on_device_translation/translation_manager_impl.h"
#include "chrome/browser/on_device_translation/service_controller.h"
#include "chrome/browser/on_device_translation/translator.h"
#include "content/public/browser/render_frame_host.h"
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "third_party/blink/public/mojom/on_device_translation/translation_manager.mojom.h"
DOCUMENT_USER_DATA_KEY_IMPL(TranslationManagerImpl);
TranslationManagerImpl::TranslationManagerImpl(content::RenderFrameHost* rfh)
: DocumentUserData<TranslationManagerImpl>(rfh) {
browser_context_ = rfh->GetBrowserContext()->GetWeakPtr();
}
TranslationManagerImpl::~TranslationManagerImpl() = default;
// static
void TranslationManagerImpl::Create(
content::RenderFrameHost* render_frame_host,
mojo::PendingReceiver<blink::mojom::TranslationManager> receiver) {
TranslationManagerImpl* translation_manager =
TranslationManagerImpl::GetOrCreateForCurrentDocument(render_frame_host);
translation_manager->receiver_.Bind(std::move(receiver));
}
void TranslationManagerImpl::CanCreateTranslator(
const std::string& source_lang,
const std::string& target_lang,
CanCreateTranslatorCallback callback) {
OnDeviceTranslationServiceController::GetInstance()->CanTranslate(
source_lang, target_lang, std::move(callback));
}
void TranslationManagerImpl::CreateTranslator(
const std::string& source_lang,
const std::string& target_lang,
mojo::PendingReceiver<blink::mojom::Translator> receiver,
CreateTranslatorCallback callback) {
mojo::MakeSelfOwnedReceiver(
std::make_unique<Translator>(source_lang, target_lang,
std::move(callback)),
std::move(receiver));
}