// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CONTENT_BROWSER_SPEECH_SPEECH_SYNTHESIS_IMPL_H_
#define CONTENT_BROWSER_SPEECH_SPEECH_SYNTHESIS_IMPL_H_

#include "content/public/browser/tts_controller.h"
#include "mojo/public/cpp/bindings/receiver_set.h"
#include "mojo/public/cpp/bindings/remote_set.h"
#include "third_party/blink/public/mojom/speech/speech_synthesis.mojom.h"

namespace content {
class BrowserContext;
class WebContents;

// Back-end for the web speech synthesis API; dispatches speech requests to
// content::TtsController and forwards voice lists and events back to the
// requesting renderer.
class SpeechSynthesisImpl : public blink::mojom::SpeechSynthesis,
                            public VoicesChangedDelegate {
 public:
  SpeechSynthesisImpl(BrowserContext* browser_context,
                      WebContents* web_contents);
  ~SpeechSynthesisImpl() override;

  SpeechSynthesisImpl(const SpeechSynthesisImpl&) = delete;
  SpeechSynthesisImpl& operator=(const SpeechSynthesisImpl&) = delete;

  void AddReceiver(
      mojo::PendingReceiver<blink::mojom::SpeechSynthesis> receiver);

  // blink::mojom::SpeechSynthesis methods:
  void AddVoiceListObserver(
      mojo::PendingRemote<blink::mojom::SpeechSynthesisVoiceListObserver>
          observer) override;
  void Speak(
      blink::mojom::SpeechSynthesisUtterancePtr utterance,
      mojo::PendingRemote<blink::mojom::SpeechSynthesisClient> client) override;
  void Pause() override;
  void Resume() override;
  void Cancel() override;

  // VoicesChangedDelegate methods:
  void OnVoicesChanged() override;

 private:
  BrowserContext* browser_context_;
  WebContents* web_contents_;

  mojo::ReceiverSet<blink::mojom::SpeechSynthesis> receiver_set_;
  mojo::RemoteSet<blink::mojom::SpeechSynthesisVoiceListObserver> observer_set_;
};

}  // namespace content

#endif  // CONTENT_BROWSER_SPEECH_SPEECH_SYNTHESIS_IMPL_H_
