Chromium Code Reviews| 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 |