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.
5 #ifndef CHROME_BROWSER_SPEECH_CHROME_SPEECH_RECOGNITION_MANAGER_DELEGATE_H_
6 #define CHROME_BROWSER_SPEECH_CHROME_SPEECH_RECOGNITION_MANAGER_DELEGATE_H_
8 #include "base/compiler_specific.h"
9 #include "base/memory/ref_counted.h"
10 #include "content/public/browser/speech_recognition_event_listener.h"
11 #include "content/public/browser/speech_recognition_manager_delegate.h"
12 #include "content/public/browser/speech_recognition_session_config.h"
16 // This is Chrome's implementation of the SpeechRecognitionManagerDelegate
18 class ChromeSpeechRecognitionManagerDelegate
19 : public content::SpeechRecognitionManagerDelegate
,
20 public content::SpeechRecognitionEventListener
{
22 ChromeSpeechRecognitionManagerDelegate();
23 virtual ~ChromeSpeechRecognitionManagerDelegate();
26 // SpeechRecognitionEventListener methods.
27 virtual void OnRecognitionStart(int session_id
) OVERRIDE
;
28 virtual void OnAudioStart(int session_id
) OVERRIDE
;
29 virtual void OnEnvironmentEstimationComplete(int session_id
) OVERRIDE
;
30 virtual void OnSoundStart(int session_id
) OVERRIDE
;
31 virtual void OnSoundEnd(int session_id
) OVERRIDE
;
32 virtual void OnAudioEnd(int session_id
) OVERRIDE
;
33 virtual void OnRecognitionEnd(int session_id
) OVERRIDE
;
34 virtual void OnRecognitionResults(
35 int session_id
, const content::SpeechRecognitionResults
& result
) OVERRIDE
;
36 virtual void OnRecognitionError(
37 int session_id
, const content::SpeechRecognitionError
& error
) OVERRIDE
;
38 virtual void OnAudioLevelsChange(int session_id
, float volume
,
39 float noise_volume
) OVERRIDE
;
41 // SpeechRecognitionManagerDelegate methods.
42 virtual void GetDiagnosticInformation(bool* can_report_metrics
,
43 std::string
* hardware_info
) OVERRIDE
;
44 virtual void CheckRecognitionIsAllowed(
46 base::Callback
<void(bool ask_user
, bool is_allowed
)> callback
) OVERRIDE
;
47 virtual content::SpeechRecognitionEventListener
* GetEventListener() OVERRIDE
;
48 virtual bool FilterProfanities(int render_process_id
) OVERRIDE
;
50 // Callback called by |tab_watcher_| on the IO thread to signal tab closure.
51 virtual void TabClosedCallback(int render_process_id
, int render_view_id
);
54 class OptionalRequestInfo
;
57 // Checks for VIEW_TYPE_TAB_CONTENTS host in the UI thread and notifies back
58 // the result in the IO thread through |callback|.
59 static void CheckRenderViewType(
60 base::Callback
<void(bool ask_user
, bool is_allowed
)> callback
,
61 int render_process_id
,
65 scoped_refptr
<OptionalRequestInfo
> optional_request_info_
;
66 scoped_refptr
<TabWatcher
> tab_watcher_
;
68 DISALLOW_COPY_AND_ASSIGN(ChromeSpeechRecognitionManagerDelegate
);
73 #endif // CHROME_BROWSER_SPEECH_CHROME_SPEECH_RECOGNITION_MANAGER_DELEGATE_H_