OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google 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 * * Redistributions of source code must retain the above copyright | 7 * * 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 * * Redistributions in binary form must reproduce the above copyright | 9 * * 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 19 matching lines...) Expand all Loading... | |
30 #include "bindings/v8/ExceptionState.h" | 30 #include "bindings/v8/ExceptionState.h" |
31 #include "core/dom/Document.h" | 31 #include "core/dom/Document.h" |
32 #include "core/dom/ExceptionCode.h" | 32 #include "core/dom/ExceptionCode.h" |
33 #include "core/page/Page.h" | 33 #include "core/page/Page.h" |
34 #include "modules/speech/SpeechRecognitionController.h" | 34 #include "modules/speech/SpeechRecognitionController.h" |
35 #include "modules/speech/SpeechRecognitionError.h" | 35 #include "modules/speech/SpeechRecognitionError.h" |
36 #include "modules/speech/SpeechRecognitionEvent.h" | 36 #include "modules/speech/SpeechRecognitionEvent.h" |
37 | 37 |
38 namespace WebCore { | 38 namespace WebCore { |
39 | 39 |
40 PassRefPtr<SpeechRecognition> SpeechRecognition::create(ExecutionContext* contex t) | 40 DEFINE_GC_INFO(SpeechRecognition); |
41 | |
42 PassRefPtrWillBeRawPtr<SpeechRecognition> SpeechRecognition::create(ExecutionCon text* context) | |
41 { | 43 { |
42 RefPtr<SpeechRecognition> speechRecognition(adoptRef(new SpeechRecognition(c ontext))); | 44 RefPtrWillBeRawPtr<SpeechRecognition> speechRecognition(adoptRefWillBeNoop(n ew SpeechRecognition(context))); |
43 speechRecognition->suspendIfNeeded(); | 45 speechRecognition->suspendIfNeeded(); |
44 return speechRecognition.release(); | 46 return speechRecognition.release(); |
45 } | 47 } |
46 | 48 |
47 void SpeechRecognition::start(ExceptionState& exceptionState) | 49 void SpeechRecognition::start(ExceptionState& exceptionState) |
48 { | 50 { |
49 ASSERT(m_controller); | 51 ASSERT(m_controller); |
50 if (m_started) { | 52 if (m_started) { |
51 exceptionState.throwDOMException(InvalidStateError, "recognition has alr eady started."); | 53 exceptionState.throwDOMException(InvalidStateError, "recognition has alr eady started."); |
52 return; | 54 return; |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
106 dispatchEvent(Event::create(EventTypeNames::audioend)); | 108 dispatchEvent(Event::create(EventTypeNames::audioend)); |
107 } | 109 } |
108 | 110 |
109 void SpeechRecognition::didReceiveResults(const Vector<RefPtr<SpeechRecognitionR esult> >& newFinalResults, const Vector<RefPtr<SpeechRecognitionResult> >& curre ntInterimResults) | 111 void SpeechRecognition::didReceiveResults(const Vector<RefPtr<SpeechRecognitionR esult> >& newFinalResults, const Vector<RefPtr<SpeechRecognitionResult> >& curre ntInterimResults) |
110 { | 112 { |
111 unsigned long resultIndex = m_finalResults.size(); | 113 unsigned long resultIndex = m_finalResults.size(); |
112 | 114 |
113 for (size_t i = 0; i < newFinalResults.size(); ++i) | 115 for (size_t i = 0; i < newFinalResults.size(); ++i) |
114 m_finalResults.append(newFinalResults[i]); | 116 m_finalResults.append(newFinalResults[i]); |
115 | 117 |
116 Vector<RefPtr<SpeechRecognitionResult> > results = m_finalResults; | 118 Vector<RefPtr<SpeechRecognitionResult> > results(m_finalResults.size()); |
sof
2014/02/12 10:17:09
This is suboptimal, but it will require changing w
| |
119 for (size_t i = 0; i < m_finalResults.size(); ++i) | |
120 results[i] = m_finalResults[i]; | |
117 for (size_t i = 0; i < currentInterimResults.size(); ++i) | 121 for (size_t i = 0; i < currentInterimResults.size(); ++i) |
118 results.append(currentInterimResults[i]); | 122 results.append(currentInterimResults[i]); |
119 | 123 |
120 dispatchEvent(SpeechRecognitionEvent::createResult(resultIndex, results)); | 124 dispatchEvent(SpeechRecognitionEvent::createResult(resultIndex, results)); |
121 } | 125 } |
122 | 126 |
123 void SpeechRecognition::didReceiveNoMatch(PassRefPtr<SpeechRecognitionResult> re sult) | 127 void SpeechRecognition::didReceiveNoMatch(PassRefPtr<SpeechRecognitionResult> re sult) |
124 { | 128 { |
125 dispatchEvent(SpeechRecognitionEvent::createNoMatch(result)); | 129 dispatchEvent(SpeechRecognitionEvent::createNoMatch(result)); |
126 } | 130 } |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
182 m_controller = SpeechRecognitionController::from(page); | 186 m_controller = SpeechRecognitionController::from(page); |
183 ASSERT(m_controller); | 187 ASSERT(m_controller); |
184 | 188 |
185 // FIXME: Need to hook up with Page to get notified when the visibility chan ges. | 189 // FIXME: Need to hook up with Page to get notified when the visibility chan ges. |
186 } | 190 } |
187 | 191 |
188 SpeechRecognition::~SpeechRecognition() | 192 SpeechRecognition::~SpeechRecognition() |
189 { | 193 { |
190 } | 194 } |
191 | 195 |
196 void SpeechRecognition::trace(Visitor* visitor) | |
197 { | |
198 visitor->trace(m_grammars); | |
199 } | |
200 | |
192 } // namespace WebCore | 201 } // namespace WebCore |
OLD | NEW |