Home | History | Annotate | Download | only in renderer
      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_
     71