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 "chrome/browser/speech/extension_api/tts_engine_extension_api.h" | 5 #include "chrome/browser/speech/extension_api/tts_engine_extension_api.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "base/json/json_writer.h" | 9 #include "base/json/json_writer.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
11 #include "chrome/browser/extensions/extension_event_router.h" | 11 #include "chrome/browser/extensions/event_router.h" |
12 #include "chrome/browser/extensions/extension_service.h" | 12 #include "chrome/browser/extensions/extension_service.h" |
13 #include "chrome/browser/profiles/profile.h" | 13 #include "chrome/browser/profiles/profile.h" |
14 #include "chrome/browser/speech/extension_api/tts_extension_api_constants.h" | 14 #include "chrome/browser/speech/extension_api/tts_extension_api_constants.h" |
15 #include "chrome/browser/speech/extension_api/tts_extension_api_controller.h" | 15 #include "chrome/browser/speech/extension_api/tts_extension_api_controller.h" |
16 #include "chrome/common/extensions/extension.h" | 16 #include "chrome/common/extensions/extension.h" |
17 | 17 |
18 using extensions::Extension; | 18 using extensions::Extension; |
19 | 19 |
20 namespace constants = tts_extension_api_constants; | 20 namespace constants = tts_extension_api_constants; |
21 | 21 |
22 namespace events { | 22 namespace events { |
23 const char kOnSpeak[] = "ttsEngine.onSpeak"; | 23 const char kOnSpeak[] = "ttsEngine.onSpeak"; |
24 const char kOnStop[] = "ttsEngine.onStop"; | 24 const char kOnStop[] = "ttsEngine.onStop"; |
25 }; // namespace events | 25 }; // namespace events |
26 | 26 |
27 namespace { | 27 namespace { |
28 // Given a language/region code of the form 'fr-FR', returns just the basic | 28 // Given a language/region code of the form 'fr-FR', returns just the basic |
29 // language portion, e.g. 'fr'. | 29 // language portion, e.g. 'fr'. |
30 std::string TrimLanguageCode(std::string lang) { | 30 std::string TrimLanguageCode(std::string lang) { |
31 if (lang.size() >= 5 && lang[2] == '-') | 31 if (lang.size() >= 5 && lang[2] == '-') |
32 return lang.substr(0, 2); | 32 return lang.substr(0, 2); |
33 else | 33 else |
34 return lang; | 34 return lang; |
35 } | 35 } |
36 } | 36 } |
37 | 37 |
38 void GetExtensionVoices(Profile* profile, ListValue* result_voices) { | 38 void GetExtensionVoices(Profile* profile, ListValue* result_voices) { |
39 ExtensionService* service = profile->GetExtensionService(); | 39 ExtensionService* service = profile->GetExtensionService(); |
40 DCHECK(service); | 40 DCHECK(service); |
41 ExtensionEventRouter* event_router = profile->GetExtensionEventRouter(); | 41 extensions::EventRouter* event_router = profile->GetExtensionEventRouter(); |
42 DCHECK(event_router); | 42 DCHECK(event_router); |
43 | 43 |
44 const ExtensionSet* extensions = service->extensions(); | 44 const ExtensionSet* extensions = service->extensions(); |
45 ExtensionSet::const_iterator iter; | 45 ExtensionSet::const_iterator iter; |
46 for (iter = extensions->begin(); iter != extensions->end(); ++iter) { | 46 for (iter = extensions->begin(); iter != extensions->end(); ++iter) { |
47 const Extension* extension = *iter; | 47 const Extension* extension = *iter; |
48 | 48 |
49 if (!event_router->ExtensionHasEventListener( | 49 if (!event_router->ExtensionHasEventListener( |
50 extension->id(), events::kOnSpeak) || | 50 extension->id(), events::kOnSpeak) || |
51 !event_router->ExtensionHasEventListener( | 51 !event_router->ExtensionHasEventListener( |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
93 Utterance* utterance, | 93 Utterance* utterance, |
94 const Extension** matching_extension, | 94 const Extension** matching_extension, |
95 size_t* voice_index) { | 95 size_t* voice_index) { |
96 // This will only happen during unit testing. Otherwise, an utterance | 96 // This will only happen during unit testing. Otherwise, an utterance |
97 // will always have an associated profile. | 97 // will always have an associated profile. |
98 if (!utterance->profile()) | 98 if (!utterance->profile()) |
99 return false; | 99 return false; |
100 | 100 |
101 ExtensionService* service = utterance->profile()->GetExtensionService(); | 101 ExtensionService* service = utterance->profile()->GetExtensionService(); |
102 DCHECK(service); | 102 DCHECK(service); |
103 ExtensionEventRouter* event_router = | 103 extensions::EventRouter* event_router = |
104 utterance->profile()->GetExtensionEventRouter(); | 104 utterance->profile()->GetExtensionEventRouter(); |
105 DCHECK(event_router); | 105 DCHECK(event_router); |
106 | 106 |
107 *matching_extension = NULL; | 107 *matching_extension = NULL; |
108 *voice_index = -1; | 108 *voice_index = -1; |
109 const ExtensionSet* extensions = service->extensions(); | 109 const ExtensionSet* extensions = service->extensions(); |
110 ExtensionSet::const_iterator iter; | 110 ExtensionSet::const_iterator iter; |
111 | 111 |
112 // Make two passes: the first time, do strict language matching | 112 // Make two passes: the first time, do strict language matching |
113 // ('fr-FR' does not match 'fr-CA'). The second time, do prefix | 113 // ('fr-FR' does not match 'fr-CA'). The second time, do prefix |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
283 std::string error_message; | 283 std::string error_message; |
284 event->GetString(constants::kErrorMessageKey, &error_message); | 284 event->GetString(constants::kErrorMessageKey, &error_message); |
285 controller->OnTtsEvent( | 285 controller->OnTtsEvent( |
286 utterance_id, TTS_EVENT_ERROR, char_index, error_message); | 286 utterance_id, TTS_EVENT_ERROR, char_index, error_message); |
287 } else { | 287 } else { |
288 EXTENSION_FUNCTION_VALIDATE(false); | 288 EXTENSION_FUNCTION_VALIDATE(false); |
289 } | 289 } |
290 | 290 |
291 return true; | 291 return true; |
292 } | 292 } |
OLD | NEW |