Index: chrome/browser/speech/chrome_speech_recognition_manager_delegate_bubble_ui.cc |
diff --git a/chrome/browser/speech/chrome_speech_recognition_manager_delegate_bubble_ui.cc b/chrome/browser/speech/chrome_speech_recognition_manager_delegate_bubble_ui.cc |
deleted file mode 100644 |
index da18bd4beba74e85c40db740ae7694b814abbf83..0000000000000000000000000000000000000000 |
--- a/chrome/browser/speech/chrome_speech_recognition_manager_delegate_bubble_ui.cc |
+++ /dev/null |
@@ -1,220 +0,0 @@ |
-// Copyright 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. |
- |
-#include "chrome/browser/speech/chrome_speech_recognition_manager_delegate_bubble_ui.h" |
- |
-#include "base/strings/utf_string_conversions.h" |
-#include "content/public/browser/browser_thread.h" |
-#include "content/public/browser/speech_recognition_manager.h" |
-#include "content/public/browser/speech_recognition_session_context.h" |
-#include "content/public/common/speech_recognition_error.h" |
-#include "grit/generated_resources.h" |
-#include "ui/base/l10n/l10n_util.h" |
- |
-using content::BrowserThread; |
-using content::SpeechRecognitionManager; |
- |
-namespace { |
- |
-bool RequiresBubble(int session_id) { |
- return SpeechRecognitionManager::GetInstance()-> |
- GetSessionContext(session_id).requested_by_page_element; |
-} |
- |
-} // namespace |
- |
-namespace speech { |
- |
-ChromeSpeechRecognitionManagerDelegateBubbleUI |
-::ChromeSpeechRecognitionManagerDelegateBubbleUI() { |
-} |
- |
-ChromeSpeechRecognitionManagerDelegateBubbleUI |
-::~ChromeSpeechRecognitionManagerDelegateBubbleUI() { |
- if (bubble_controller_.get()) |
- bubble_controller_->CloseBubble(); |
-} |
- |
-void ChromeSpeechRecognitionManagerDelegateBubbleUI::InfoBubbleButtonClicked( |
- int session_id, SpeechRecognitionBubble::Button button) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- |
- // Note, the session might have been destroyed, therefore avoid calls to the |
- // manager which imply its existance (e.g., GetSessionContext()). |
- |
- if (button == SpeechRecognitionBubble::BUTTON_CANCEL) { |
- GetBubbleController()->CloseBubble(); |
- last_session_config_.reset(); |
- |
- // We can safely call AbortSession even if the session has already ended, |
- // the manager's public methods are reliable and will handle it properly. |
- SpeechRecognitionManager::GetInstance()->AbortSession(session_id); |
- } else if (button == SpeechRecognitionBubble::BUTTON_TRY_AGAIN) { |
- GetBubbleController()->CloseBubble(); |
- RestartLastSession(); |
- } else { |
- NOTREACHED(); |
- } |
-} |
- |
-void ChromeSpeechRecognitionManagerDelegateBubbleUI::InfoBubbleFocusChanged( |
- int session_id) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- |
- // This check is needed since on some systems (MacOS), in rare cases, if the |
- // user clicks repeatedly and fast on the input element, the FocusChanged |
- // event (corresponding to the old session that should be aborted) can be |
- // received after a new session (corresponding to the 2nd click) is started. |
- if (GetBubbleController()->GetActiveSessionID() != session_id) |
- return; |
- |
- // Note, the session might have been destroyed, therefore avoid calls to the |
- // manager which imply its existance (e.g., GetSessionContext()). |
- GetBubbleController()->CloseBubble(); |
- last_session_config_.reset(); |
- |
- // Clicking outside the bubble means we should abort. |
- SpeechRecognitionManager::GetInstance()->AbortSession(session_id); |
-} |
- |
-void ChromeSpeechRecognitionManagerDelegateBubbleUI::OnRecognitionStart( |
- int session_id) { |
- ChromeSpeechRecognitionManagerDelegate::OnRecognitionStart(session_id); |
- |
- const content::SpeechRecognitionSessionContext& context = |
- SpeechRecognitionManager::GetInstance()->GetSessionContext(session_id); |
- |
- if (RequiresBubble(session_id)) { |
- // Copy the configuration of the session (for the "try again" button). |
- last_session_config_.reset(new content::SpeechRecognitionSessionConfig( |
- SpeechRecognitionManager::GetInstance()->GetSessionConfig(session_id))); |
- |
- // Create and show the bubble. It will be closed upon the OnEnd event. |
- GetBubbleController()->CreateBubble(session_id, |
- context.render_process_id, |
- context.render_view_id, |
- context.element_rect); |
- } |
-} |
- |
-void ChromeSpeechRecognitionManagerDelegateBubbleUI::OnAudioStart( |
- int session_id) { |
- ChromeSpeechRecognitionManagerDelegate::OnAudioStart(session_id); |
- |
- if (RequiresBubble(session_id)) { |
- DCHECK_EQ(session_id, GetBubbleController()->GetActiveSessionID()); |
- GetBubbleController()->SetBubbleRecordingMode(); |
- } |
-} |
- |
-void ChromeSpeechRecognitionManagerDelegateBubbleUI::OnAudioEnd( |
- int session_id) { |
- ChromeSpeechRecognitionManagerDelegate::OnAudioEnd(session_id); |
- |
- // OnAudioEnd can be also raised after an abort, when the bubble has already |
- // been closed. |
- if (GetBubbleController()->GetActiveSessionID() == session_id) { |
- DCHECK(RequiresBubble(session_id)); |
- GetBubbleController()->SetBubbleRecognizingMode(); |
- } |
-} |
- |
-void ChromeSpeechRecognitionManagerDelegateBubbleUI::OnRecognitionError( |
- int session_id, const content::SpeechRecognitionError& error) { |
- ChromeSpeechRecognitionManagerDelegate::OnRecognitionError(session_id, error); |
- |
- // An error can be dispatched when the bubble is not visible anymore. |
- if (GetBubbleController()->GetActiveSessionID() != session_id) |
- return; |
- DCHECK(RequiresBubble(session_id)); |
- |
- int error_message_id = 0; |
- switch (error.code) { |
- case content::SPEECH_RECOGNITION_ERROR_AUDIO: |
- switch (error.details) { |
- case content::SPEECH_AUDIO_ERROR_DETAILS_NO_MIC: |
- error_message_id = IDS_SPEECH_INPUT_NO_MIC; |
- break; |
- default: |
- error_message_id = IDS_SPEECH_INPUT_MIC_ERROR; |
- break; |
- } |
- break; |
- case content::SPEECH_RECOGNITION_ERROR_ABORTED: |
- error_message_id = IDS_SPEECH_INPUT_ABORTED; |
- break; |
- case content::SPEECH_RECOGNITION_ERROR_NO_SPEECH: |
- error_message_id = IDS_SPEECH_INPUT_NO_SPEECH; |
- break; |
- case content::SPEECH_RECOGNITION_ERROR_NO_MATCH: |
- error_message_id = IDS_SPEECH_INPUT_NO_RESULTS; |
- break; |
- case content::SPEECH_RECOGNITION_ERROR_NETWORK: |
- error_message_id = IDS_SPEECH_INPUT_NET_ERROR; |
- break; |
- default: |
- NOTREACHED() << "unknown error " << error.code; |
- return; |
- } |
- GetBubbleController()->SetBubbleMessage( |
- l10n_util::GetStringUTF16(error_message_id)); |
- |
-} |
- |
-void ChromeSpeechRecognitionManagerDelegateBubbleUI::OnAudioLevelsChange( |
- int session_id, float volume, float noise_volume) { |
- ChromeSpeechRecognitionManagerDelegate::OnAudioLevelsChange( |
- session_id, volume, noise_volume); |
- |
- if (GetBubbleController()->GetActiveSessionID() == session_id) { |
- DCHECK(RequiresBubble(session_id)); |
- GetBubbleController()->SetBubbleInputVolume(volume, noise_volume); |
- } |
-} |
- |
-void ChromeSpeechRecognitionManagerDelegateBubbleUI::OnRecognitionEnd( |
- int session_id) { |
- ChromeSpeechRecognitionManagerDelegate::OnRecognitionEnd(session_id); |
- |
- // The only case in which the OnRecognitionEnd should not close the bubble is |
- // when we are showing an error. In this case the bubble will be closed by |
- // the |InfoBubbleFocusChanged| method, when the users clicks either the |
- // "Cancel" button or outside of the bubble. |
- if (GetBubbleController()->GetActiveSessionID() == session_id && |
- !GetBubbleController()->IsShowingMessage()) { |
- DCHECK(RequiresBubble(session_id)); |
- GetBubbleController()->CloseBubble(); |
- } |
-} |
- |
-void ChromeSpeechRecognitionManagerDelegateBubbleUI::TabClosedCallback( |
- int render_process_id, int render_view_id) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- ChromeSpeechRecognitionManagerDelegate::TabClosedCallback( |
- render_process_id, render_view_id); |
- |
- // Avoid instantiating a bubble_controller_ if not needed. Thus, prefer a |
- // checked access to bubble_controller_ to GetBubbleController(). |
- if (bubble_controller_.get()) |
- bubble_controller_->CloseBubbleForRenderViewOnUIThread(render_process_id, |
- render_view_id); |
-} |
- |
-SpeechRecognitionBubbleController* |
-ChromeSpeechRecognitionManagerDelegateBubbleUI::GetBubbleController() { |
- if (!bubble_controller_.get()) |
- bubble_controller_ = new SpeechRecognitionBubbleController(this); |
- return bubble_controller_.get(); |
-} |
- |
-void ChromeSpeechRecognitionManagerDelegateBubbleUI::RestartLastSession() { |
- DCHECK(last_session_config_.get()); |
- SpeechRecognitionManager* manager = SpeechRecognitionManager::GetInstance(); |
- const int new_session_id = manager->CreateSession(*last_session_config_); |
- DCHECK_NE(SpeechRecognitionManager::kSessionIDInvalid, new_session_id); |
- last_session_config_.reset(); |
- manager->StartSession(new_session_id); |
-} |
- |
-} // namespace speech |