OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/macros.h" | 5 #include "base/macros.h" |
6 #include "chrome/browser/speech/tts_platform.h" | 6 #include "chrome/browser/speech/tts_platform.h" |
7 #include "components/arc/arc_bridge_service.h" | 7 #include "components/arc/arc_bridge_service.h" |
8 #include "components/arc/arc_service_manager.h" | 8 #include "components/arc/arc_service_manager.h" |
9 #include "components/arc/common/tts.mojom.h" | 9 #include "components/arc/common/tts.mojom.h" |
10 #include "content/public/browser/browser_thread.h" | 10 #include "content/public/browser/browser_thread.h" |
11 | 11 |
12 namespace { | |
13 | |
14 // For Speak and Stop. | |
15 constexpr uint32_t kDefaultMinVersion = 0; | |
16 | |
17 // Helper returning an ARC tts instance. | |
18 arc::mojom::TtsInstance* GetArcTts(const std::string& method_name_for_logging, | |
19 uint32_t min_version) { | |
20 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); | |
21 auto* const arc_service_manager = arc::ArcServiceManager::Get(); | |
22 if (!arc_service_manager) | |
23 return nullptr; | |
24 | |
25 return arc_service_manager->arc_bridge_service()->tts()->GetInstanceForMethod( | |
26 method_name_for_logging, min_version); | |
27 } | |
28 | |
29 } // namespace | |
30 | |
31 // This class includes extension-based tts through LoadBuiltInTtsExtension and | 12 // This class includes extension-based tts through LoadBuiltInTtsExtension and |
32 // native tts through ARC. | 13 // native tts through ARC. |
33 class TtsPlatformImplChromeOs : public TtsPlatformImpl { | 14 class TtsPlatformImplChromeOs : public TtsPlatformImpl { |
34 public: | 15 public: |
35 // TtsPlatformImpl overrides: | 16 // TtsPlatformImpl overrides: |
36 bool PlatformImplAvailable() override { | 17 bool PlatformImplAvailable() override { |
37 return arc::ArcServiceManager::Get() && | 18 return arc::ArcServiceManager::Get() && |
38 arc::ArcServiceManager::Get() | 19 arc::ArcServiceManager::Get() |
39 ->arc_bridge_service() | 20 ->arc_bridge_service() |
40 ->tts() | 21 ->tts() |
41 ->has_instance(); | 22 ->has_instance(); |
42 } | 23 } |
43 | 24 |
44 bool LoadBuiltInTtsExtension( | 25 bool LoadBuiltInTtsExtension( |
45 content::BrowserContext* browser_context) override { | 26 content::BrowserContext* browser_context) override { |
46 TtsEngineDelegate* tts_engine_delegate = | 27 TtsEngineDelegate* tts_engine_delegate = |
47 TtsController::GetInstance()->GetTtsEngineDelegate(); | 28 TtsController::GetInstance()->GetTtsEngineDelegate(); |
48 if (tts_engine_delegate) | 29 if (tts_engine_delegate) |
49 return tts_engine_delegate->LoadBuiltInTtsExtension(browser_context); | 30 return tts_engine_delegate->LoadBuiltInTtsExtension(browser_context); |
50 return false; | 31 return false; |
51 } | 32 } |
52 | 33 |
53 bool Speak(int utterance_id, | 34 bool Speak(int utterance_id, |
54 const std::string& utterance, | 35 const std::string& utterance, |
55 const std::string& lang, | 36 const std::string& lang, |
56 const VoiceData& voice, | 37 const VoiceData& voice, |
57 const UtteranceContinuousParameters& params) override { | 38 const UtteranceContinuousParameters& params) override { |
58 arc::mojom::TtsInstance* tts = GetArcTts("Speak", kDefaultMinVersion); | 39 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 40 auto* const arc_service_manager = arc::ArcServiceManager::Get(); |
| 41 if (!arc_service_manager) |
| 42 return false; |
| 43 arc::mojom::TtsInstance* tts = GET_INSTANCE_FOR_METHOD( |
| 44 arc_service_manager->arc_bridge_service()->tts(), Speak); |
59 if (!tts) | 45 if (!tts) |
60 return false; | 46 return false; |
61 | 47 |
62 arc::mojom::TtsUtterancePtr arc_utterance = arc::mojom::TtsUtterance::New(); | 48 arc::mojom::TtsUtterancePtr arc_utterance = arc::mojom::TtsUtterance::New(); |
63 arc_utterance->utteranceId = utterance_id; | 49 arc_utterance->utteranceId = utterance_id; |
64 arc_utterance->text = utterance; | 50 arc_utterance->text = utterance; |
65 arc_utterance->rate = params.rate; | 51 arc_utterance->rate = params.rate; |
66 arc_utterance->pitch = params.pitch; | 52 arc_utterance->pitch = params.pitch; |
67 tts->Speak(std::move(arc_utterance)); | 53 tts->Speak(std::move(arc_utterance)); |
68 return true; | 54 return true; |
69 } | 55 } |
70 | 56 |
71 bool StopSpeaking() override { | 57 bool StopSpeaking() override { |
72 arc::mojom::TtsInstance* tts = GetArcTts("Stop", kDefaultMinVersion); | 58 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
| 59 auto* const arc_service_manager = arc::ArcServiceManager::Get(); |
| 60 if (!arc_service_manager) |
| 61 return false; |
| 62 arc::mojom::TtsInstance* tts = GET_INSTANCE_FOR_METHOD( |
| 63 arc_service_manager->arc_bridge_service()->tts(), Stop); |
73 if (!tts) | 64 if (!tts) |
74 return false; | 65 return false; |
75 | 66 |
76 tts->Stop(); | 67 tts->Stop(); |
77 return true; | 68 return true; |
78 } | 69 } |
79 | 70 |
80 void GetVoices(std::vector<VoiceData>* out_voices) override { | 71 void GetVoices(std::vector<VoiceData>* out_voices) override { |
81 out_voices->push_back(VoiceData()); | 72 out_voices->push_back(VoiceData()); |
82 VoiceData& voice = out_voices->back(); | 73 VoiceData& voice = out_voices->back(); |
(...skipping 23 matching lines...) Expand all Loading... |
106 // static | 97 // static |
107 TtsPlatformImpl* TtsPlatformImpl::GetInstance() { | 98 TtsPlatformImpl* TtsPlatformImpl::GetInstance() { |
108 return TtsPlatformImplChromeOs::GetInstance(); | 99 return TtsPlatformImplChromeOs::GetInstance(); |
109 } | 100 } |
110 | 101 |
111 // static | 102 // static |
112 TtsPlatformImplChromeOs* | 103 TtsPlatformImplChromeOs* |
113 TtsPlatformImplChromeOs::GetInstance() { | 104 TtsPlatformImplChromeOs::GetInstance() { |
114 return base::Singleton<TtsPlatformImplChromeOs>::get(); | 105 return base::Singleton<TtsPlatformImplChromeOs>::get(); |
115 } | 106 } |
OLD | NEW |