OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2013 Apple Inc. All rights reserved. | 2 * Copyright (C) 2013 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 16 matching lines...) Expand all Loading... | |
27 #include "modules/speech/SpeechSynthesis.h" | 27 #include "modules/speech/SpeechSynthesis.h" |
28 | 28 |
29 #include "core/platform/PlatformSpeechSynthesisVoice.h" | 29 #include "core/platform/PlatformSpeechSynthesisVoice.h" |
30 #include "core/platform/PlatformSpeechSynthesizer.h" | 30 #include "core/platform/PlatformSpeechSynthesizer.h" |
31 #include "modules/speech/SpeechSynthesisEvent.h" | 31 #include "modules/speech/SpeechSynthesisEvent.h" |
32 #include "modules/speech/SpeechSynthesisUtterance.h" | 32 #include "modules/speech/SpeechSynthesisUtterance.h" |
33 #include "wtf/CurrentTime.h" | 33 #include "wtf/CurrentTime.h" |
34 | 34 |
35 namespace WebCore { | 35 namespace WebCore { |
36 | 36 |
37 PassRefPtr<SpeechSynthesis> SpeechSynthesis::create() | 37 PassRefPtr<SpeechSynthesis> SpeechSynthesis::create(ExecutionContext* context) |
38 { | 38 { |
39 return adoptRef(new SpeechSynthesis()); | 39 return adoptRef(new SpeechSynthesis(context)); |
40 } | 40 } |
41 | 41 |
42 SpeechSynthesis::SpeechSynthesis() | 42 SpeechSynthesis::SpeechSynthesis(ExecutionContext* context) |
43 : m_platformSpeechSynthesizer(PlatformSpeechSynthesizer::create(this)) | 43 : ContextLifecycleObserver(context) |
44 , m_platformSpeechSynthesizer(PlatformSpeechSynthesizer::create(this)) | |
44 , m_currentSpeechUtterance(0) | 45 , m_currentSpeechUtterance(0) |
45 , m_isPaused(false) | 46 , m_isPaused(false) |
46 { | 47 { |
47 ScriptWrappable::init(this); | 48 ScriptWrappable::init(this); |
48 } | 49 } |
49 | 50 |
50 void SpeechSynthesis::setPlatformSynthesizer(PassOwnPtr<PlatformSpeechSynthesize r> synthesizer) | 51 void SpeechSynthesis::setPlatformSynthesizer(PassOwnPtr<PlatformSpeechSynthesize r> synthesizer) |
51 { | 52 { |
52 m_platformSpeechSynthesizer = synthesizer; | 53 m_platformSpeechSynthesizer = synthesizer; |
53 } | 54 } |
54 | 55 |
56 ExecutionContext* SpeechSynthesis::executionContext() const | |
57 { | |
58 return ContextLifecycleObserver::executionContext(); | |
59 } | |
60 | |
55 void SpeechSynthesis::voicesDidChange() | 61 void SpeechSynthesis::voicesDidChange() |
abarth-chromium
2013/10/16 19:25:06
When can this function be called? Why don't we ne
dmazzoni
2013/10/16 22:09:06
Good question.
This function is only called from
abarth-chromium
2013/10/17 02:00:53
I should write a design doc that explains how all
dmazzoni
2013/10/17 15:28:59
Got it, that makes sense.
I made the same change
| |
56 { | 62 { |
57 m_voiceList.clear(); | 63 m_voiceList.clear(); |
64 dispatchEvent(Event::create(EventTypeNames::voiceschanged)); | |
eseidel
2013/10/16 06:44:53
This will cause synchronous event dispatch, right?
dmazzoni
2013/10/16 07:08:00
That's only a problem if the user is triggering th
| |
58 } | 65 } |
59 | 66 |
60 const Vector<RefPtr<SpeechSynthesisVoice> >& SpeechSynthesis::getVoices() | 67 const Vector<RefPtr<SpeechSynthesisVoice> >& SpeechSynthesis::getVoices() |
61 { | 68 { |
62 if (m_voiceList.size()) | 69 if (m_voiceList.size()) |
63 return m_voiceList; | 70 return m_voiceList; |
64 | 71 |
65 // If the voiceList is empty, that's the cue to get the voices from the plat form again. | 72 // If the voiceList is empty, that's the cue to get the voices from the plat form again. |
66 const Vector<RefPtr<PlatformSpeechSynthesisVoice> >& platformVoices = m_plat formSpeechSynthesizer->voiceList(); | 73 const Vector<RefPtr<PlatformSpeechSynthesisVoice> >& platformVoices = m_plat formSpeechSynthesizer->voiceList(); |
67 size_t voiceCount = platformVoices.size(); | 74 size_t voiceCount = platformVoices.size(); |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
201 if (utterance->client()) | 208 if (utterance->client()) |
202 handleSpeakingCompleted(static_cast<SpeechSynthesisUtterance*>(utterance ->client()), false); | 209 handleSpeakingCompleted(static_cast<SpeechSynthesisUtterance*>(utterance ->client()), false); |
203 } | 210 } |
204 | 211 |
205 void SpeechSynthesis::speakingErrorOccurred(PassRefPtr<PlatformSpeechSynthesisUt terance> utterance) | 212 void SpeechSynthesis::speakingErrorOccurred(PassRefPtr<PlatformSpeechSynthesisUt terance> utterance) |
206 { | 213 { |
207 if (utterance->client()) | 214 if (utterance->client()) |
208 handleSpeakingCompleted(static_cast<SpeechSynthesisUtterance*>(utterance ->client()), true); | 215 handleSpeakingCompleted(static_cast<SpeechSynthesisUtterance*>(utterance ->client()), true); |
209 } | 216 } |
210 | 217 |
218 const AtomicString& SpeechSynthesis::interfaceName() const | |
219 { | |
220 return EventTargetNames::SpeechSynthesisUtterance; | |
221 } | |
222 | |
211 } // namespace WebCore | 223 } // namespace WebCore |
OLD | NEW |