| // Copyright 2023 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/live_caption/live_caption_ui_remote_driver.h" |
| |
| #include <string> |
| #include <utility> |
| |
| #include "base/functional/callback_forward.h" |
| #include "components/live_caption/caption_bubble_context_remote.h" |
| #include "components/live_caption/live_caption_controller.h" |
| #include "mojo/public/cpp/bindings/receiver.h" |
| |
| namespace captions { |
| |
| LiveCaptionUiRemoteDriver::LiveCaptionUiRemoteDriver( |
| LiveCaptionController* controller, |
| mojo::PendingReceiver<media::mojom::SpeechRecognitionSurfaceClient> |
| client_receiver, |
| mojo::PendingRemote<media::mojom::SpeechRecognitionSurface> surface_remote, |
| const std::string& session_id) |
| : controller_(controller), |
| client_receiver_(this, std::move(client_receiver)), |
| context_(std::move(surface_remote), session_id) {} |
| |
| LiveCaptionUiRemoteDriver::~LiveCaptionUiRemoteDriver() { |
| controller_->OnAudioStreamEnd(&context_); |
| } |
| |
| void LiveCaptionUiRemoteDriver::OnSpeechRecognitionRecognitionEvent( |
| const media::SpeechRecognitionResult& result, |
| OnSpeechRecognitionRecognitionEventCallback reply) { |
| std::move(reply).Run(controller_->DispatchTranscription(&context_, result)); |
| } |
| |
| void LiveCaptionUiRemoteDriver::OnLanguageIdentificationEvent( |
| media::mojom::LanguageIdentificationEventPtr event) { |
| controller_->OnLanguageIdentificationEvent(&context_, std::move(event)); |
| } |
| |
| void LiveCaptionUiRemoteDriver::OnSpeechRecognitionError() { |
| controller_->OnError(&context_, CaptionBubbleErrorType::kGeneric, |
| base::RepeatingClosure(), |
| base::BindRepeating([](CaptionBubbleErrorType error_type, |
| bool checked) {})); |
| } |
| |
| void LiveCaptionUiRemoteDriver::OnSpeechRecognitionStopped() { |
| controller_->OnAudioStreamEnd(&context_); |
| } |
| |
| void LiveCaptionUiRemoteDriver::OnSessionEnded() { |
| context_.OnSessionEnded(); |
| } |
| |
| void LiveCaptionUiRemoteDriver::OnFullscreenToggled() { |
| controller_->OnToggleFullscreen(&context_); |
| } |
| |
| } // namespace captions |