#ifndef CHROMEOS_SERVICES_TTS_TTS_SERVICE_H_
#define CHROMEOS_SERVICES_TTS_TTS_SERVICE_H_
#include "chromeos/services/tts/google_tts_stream.h"
#include "chromeos/services/tts/playback_tts_stream.h"
#include "chromeos/services/tts/public/mojom/tts_service.mojom.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
namespace chromeos {
namespace tts {
class TtsService : public mojom::TtsService {
public:
explicit TtsService(mojo::PendingReceiver<mojom::TtsService> receiver);
~TtsService() override;
void MaybeExit();
void set_keep_process_alive_for_testing(bool value) {
keep_process_alive_for_testing_ = value;
}
mojo::Receiver<mojom::TtsService>* receiver_for_testing() {
return &service_receiver_;
}
PlaybackTtsStream* playback_tts_stream_for_testing() {
return playback_tts_stream_.get();
}
void BindGoogleTtsStream(
mojo::PendingReceiver<mojom::GoogleTtsStream> receiver,
mojo::PendingRemote<media::mojom::AudioStreamFactory> factory) override;
void BindPlaybackTtsStream(
mojo::PendingReceiver<mojom::PlaybackTtsStream> receiver,
mojo::PendingRemote<media::mojom::AudioStreamFactory> factory,
mojom::AudioParametersPtr desired_audio_parameters,
BindPlaybackTtsStreamCallback callback) override;
private:
mojo::Receiver<mojom::TtsService> service_receiver_;
std::unique_ptr<GoogleTtsStream> google_tts_stream_;
std::unique_ptr<PlaybackTtsStream> playback_tts_stream_;
bool keep_process_alive_for_testing_ = false;
base::WeakPtrFactory<TtsService> weak_factory_{this};
};
}
}
#endif