| Index: chrome/renderer/tts_dispatcher.h
|
| diff --git a/chrome/renderer/tts_dispatcher.h b/chrome/renderer/tts_dispatcher.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..77433e71df50c1a2f63213808a159a08f5a75100
|
| --- /dev/null
|
| +++ b/chrome/renderer/tts_dispatcher.h
|
| @@ -0,0 +1,76 @@
|
| +// Copyright (c) 2013 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 CHROME_RENDERER_TTS_DISPATCHER_H_
|
| +#define CHROME_RENDERER_TTS_DISPATCHER_H_
|
| +
|
| +#include <vector>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/hash_tables.h"
|
| +#include "content/public/renderer/render_view.h"
|
| +#include "ipc/ipc_channel_proxy.h"
|
| +#include "third_party/WebKit/Source/Platform/chromium/public/WebSpeechSynthesizer.h"
|
| +#include "third_party/WebKit/Source/Platform/chromium/public/WebSpeechSynthesizerClient.h"
|
| +
|
| +class RenderViewImpl;
|
| +struct TtsVoice;
|
| +
|
| +// TtsDispatcher is a delegate for methods used by WebKit for
|
| +// speech synthesis APIs. It's the complement of
|
| +// TtsDispatcherHost (owned by RenderViewHost).
|
| +class TtsDispatcher
|
| + : public WebKit::WebSpeechSynthesizer,
|
| + public IPC::ChannelProxy::MessageFilter {
|
| + public:
|
| + explicit TtsDispatcher(WebKit::WebSpeechSynthesizerClient* client);
|
| +
|
| + private:
|
| + virtual ~TtsDispatcher();
|
| +
|
| + // IPC::ChannelProxy::MessageFilter override.
|
| + virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
|
| +
|
| + // WebKit::WebSpeechSynthesizer implementation.
|
| + virtual void updateVoiceList() OVERRIDE;
|
| + virtual void speak(const WebKit::WebSpeechSynthesisUtterance& utterance)
|
| + OVERRIDE;
|
| + virtual void pause() OVERRIDE;
|
| + virtual void resume() OVERRIDE;
|
| + virtual void cancel() OVERRIDE;
|
| +
|
| + WebKit::WebSpeechSynthesisUtterance FindUtterance(int utterance_id);
|
| +
|
| + void OnSetVoiceList(const std::vector<TtsVoice>& voices);
|
| + void OnDidStartSpeaking(int utterance_id);
|
| + void OnDidFinishSpeaking(int utterance_id);
|
| + void OnDidPauseSpeaking(int utterance_id);
|
| + void OnDidResumeSpeaking(int utterance_id);
|
| + void OnWordBoundary(int utterance_id, int char_index);
|
| + void OnSentenceBoundary(int utterance_id, int char_index);
|
| + void OnMarkerEvent(int utterance_id, int char_index);
|
| + void OnWasInterrupted(int utterance_id);
|
| + void OnWasCancelled(int utterance_id);
|
| + void OnSpeakingErrorOccurred(int utterance_id,
|
| + const std::string& error_message);
|
| +
|
| + // The WebKit client class that we use to send events back to the JS world.
|
| + // Weak reference, this will be valid as long as this object exists.
|
| + WebKit::WebSpeechSynthesizerClient* synthesizer_client_;
|
| +
|
| + // Message loop for the main render thread. Utilized to
|
| + // ensure that callbacks into WebKit happen on the main thread
|
| + // instead of the originating IO thread.
|
| + scoped_refptr<base::MessageLoopProxy> main_loop_;
|
| +
|
| + // Next utterance id, used to map response IPCs to utterance objects.
|
| + static int next_utterance_id_;
|
| +
|
| + // Map from id to utterance objects.
|
| + base::hash_map<int, WebKit::WebSpeechSynthesisUtterance> utterance_id_map_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(TtsDispatcher);
|
| +};
|
| +
|
| +#endif // CHROME_RENDERER_TTS_DISPATCHER_H_
|
|
|