- add sources.
[platform/framework/web/crosswalk.git] / src / content / renderer / speech_recognition_dispatcher.h
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CONTENT_RENDERER_SPEECH_RECOGNITION_DISPATCHER_H_
6 #define CONTENT_RENDERER_SPEECH_RECOGNITION_DISPATCHER_H_
7
8 #include <map>
9
10 #include "base/basictypes.h"
11 #include "content/public/common/speech_recognition_result.h"
12 #include "content/public/renderer/render_view_observer.h"
13 #include "third_party/WebKit/public/platform/WebVector.h"
14 #include "third_party/WebKit/public/web/WebSpeechRecognitionHandle.h"
15 #include "third_party/WebKit/public/web/WebSpeechRecognizer.h"
16
17 namespace content {
18 class RenderViewImpl;
19 struct SpeechRecognitionError;
20 struct SpeechRecognitionResult;
21
22 // SpeechRecognitionDispatcher is a delegate for methods used by WebKit for
23 // scripted JS speech APIs. It's the complement of
24 // SpeechRecognitionDispatcherHost (owned by RenderViewHost).
25 class SpeechRecognitionDispatcher : public RenderViewObserver,
26                                     public WebKit::WebSpeechRecognizer {
27  public:
28   explicit SpeechRecognitionDispatcher(RenderViewImpl* render_view);
29   virtual ~SpeechRecognitionDispatcher();
30
31  private:
32   // RenderViewObserver implementation.
33   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
34
35   // WebKit::WebSpeechRecognizer implementation.
36   virtual void start(const WebKit::WebSpeechRecognitionHandle&,
37                      const WebKit::WebSpeechRecognitionParams&,
38                      WebKit::WebSpeechRecognizerClient*) OVERRIDE;
39   virtual void stop(const WebKit::WebSpeechRecognitionHandle&,
40                     WebKit::WebSpeechRecognizerClient*) OVERRIDE;
41   virtual void abort(const WebKit::WebSpeechRecognitionHandle&,
42                      WebKit::WebSpeechRecognizerClient*) OVERRIDE;
43
44   void OnRecognitionStarted(int request_id);
45   void OnAudioStarted(int request_id);
46   void OnSoundStarted(int request_id);
47   void OnSoundEnded(int request_id);
48   void OnAudioEnded(int request_id);
49   void OnErrorOccurred(int request_id, const SpeechRecognitionError& error);
50   void OnRecognitionEnded(int request_id);
51   void OnResultsRetrieved(int request_id,
52                           const SpeechRecognitionResults& result);
53
54   int GetOrCreateIDForHandle(const WebKit::WebSpeechRecognitionHandle& handle);
55   bool HandleExists(const WebKit::WebSpeechRecognitionHandle& handle);
56   const WebKit::WebSpeechRecognitionHandle& GetHandleFromID(int handle_id);
57
58   // The WebKit client class that we use to send events back to the JS world.
59   WebKit::WebSpeechRecognizerClient* recognizer_client_;
60
61   typedef std::map<int, WebKit::WebSpeechRecognitionHandle> HandleMap;
62   HandleMap handle_map_;
63   int next_id_;
64
65   DISALLOW_COPY_AND_ASSIGN(SpeechRecognitionDispatcher);
66 };
67
68 }  // namespace content
69
70 #endif  // CONTENT_RENDERER_SPEECH_RECOGNITION_DISPATCHER_H_