| // Copyright (c) 2012 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_PUBLIC_BROWSER_SPEECH_RECOGNITION_MANAGER_H_ |
| #define CONTENT_PUBLIC_BROWSER_SPEECH_RECOGNITION_MANAGER_H_ |
| |
| #include "base/callback.h" |
| #include "base/strings/string16.h" |
| #include "content/common/content_export.h" |
| #include "content/public/common/speech_recognition_result.h" |
| |
| namespace content { |
| |
| class SpeechRecognitionEventListener; |
| struct SpeechRecognitionSessionConfig; |
| struct SpeechRecognitionSessionContext; |
| |
| // The SpeechRecognitionManager (SRM) is a singleton class that handles SR |
| // functionalities within Chrome. Everyone that needs to perform SR should |
| // interface exclusively with the SRM, receiving events through the callback |
| // interface SpeechRecognitionEventListener. |
| // Since many different sources can use SR in different times (some overlapping |
| // is allowed while waiting for results), the SRM has the further responsibility |
| // of handling separately and reliably (taking into account also call sequences |
| // that might not make sense, e.g., two subsequent AbortSession calls). |
| // In this sense a session, within the SRM, models the ongoing evolution of a |
| // SR request from the viewpoint of the end-user, abstracting all the concrete |
| // operations that must be carried out, that will be handled by inner classes. |
| class SpeechRecognitionManager { |
| public: |
| enum { kSessionIDInvalid = 0 }; |
| |
| // Returns the singleton instance. |
| static CONTENT_EXPORT SpeechRecognitionManager* GetInstance(); |
| |
| // Singleton manager setter useful for tests. |
| static void CONTENT_EXPORT SetManagerForTesting( |
| SpeechRecognitionManager* manager); |
| |
| // Creates a new recognition session. |
| virtual int CreateSession(const SpeechRecognitionSessionConfig& config) = 0; |
| |
| // Starts/restarts recognition for an existing session, after performing a |
| // premilinary check on the delegate (CheckRecognitionIsAllowed). |
| virtual void StartSession(int session_id) = 0; |
| |
| // Aborts recognition for an existing session, without providing any result. |
| virtual void AbortSession(int session_id) = 0; |
| |
| // Aborts all sessions for a given render process, |
| // without providing any result. |
| virtual void AbortAllSessionsForRenderProcess(int render_process_id) = 0; |
| |
| // Aborts all sessions for a given RenderView, without providing any result. |
| virtual void AbortAllSessionsForRenderView(int render_process_id, |
| int render_view_id) = 0; |
| |
| // Stops audio capture for an existing session. The audio captured before the |
| // call will be processed, possibly ending up with a result. |
| virtual void StopAudioCaptureForSession(int session_id) = 0; |
| |
| // Retrieves the configuration of a session, as provided by the caller |
| // upon CreateSession. |
| virtual const SpeechRecognitionSessionConfig& GetSessionConfig(int session_id) |
| const = 0; |
| |
| // Retrieves the context associated to a session. |
| virtual SpeechRecognitionSessionContext GetSessionContext( |
| int session_id) const = 0; |
| |
| // Looks-up an existing session from the context tuple |
| // {render_view_id, render_view_id, request_id}. |
| virtual int GetSession(int render_process_id, |
| int render_view_id, |
| int request_id) const = 0; |
| |
| // Returns true if the OS reports existence of audio recording devices. |
| virtual bool HasAudioInputDevices() = 0; |
| |
| // Returns a human readable string for the model/make of the active audio |
| // input device for this computer. |
| virtual base::string16 GetAudioInputDeviceModel() = 0; |
| |
| // Invokes the platform provided microphone settings UI in a non-blocking way, |
| // via the BrowserThread::FILE thread. |
| virtual void ShowAudioInputSettings() = 0; |
| |
| protected: |
| virtual ~SpeechRecognitionManager() {} |
| |
| private: |
| static SpeechRecognitionManager* manager_for_tests_; |
| }; |
| |
| } // namespace content |
| |
| #endif // CONTENT_PUBLIC_BROWSER_SPEECH_RECOGNITION_MANAGER_H_ |