15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2012 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "config.h" 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "modules/speech/SpeechRecognition.h" 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch#include "bindings/core/v8/ExceptionState.h" 3153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/Document.h" 3253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/dom/ExceptionCode.h" 3353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/Page.h" 3453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "modules/speech/SpeechRecognitionController.h" 3553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "modules/speech/SpeechRecognitionError.h" 3653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "modules/speech/SpeechRecognitionEvent.h" 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 405d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)SpeechRecognition* SpeechRecognition::create(ExecutionContext* context) 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 425d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) SpeechRecognition* speechRecognition = adoptRefCountedGarbageCollectedWillBeNoop(new SpeechRecognition(context)); 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) speechRecognition->suspendIfNeeded(); 445d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) return speechRecognition; 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)void SpeechRecognition::start(ExceptionState& exceptionState) 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(m_controller); 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_started) { 51a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) exceptionState.throwDOMException(InvalidStateError, "recognition has already started."); 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 55926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) m_finalResults.clear(); 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_controller->start(this, m_grammars.get(), m_lang, m_continuous, m_interimResults, m_maxAlternatives); 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_started = true; 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void SpeechRecognition::stopFunction() 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(m_controller); 63926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (m_started && !m_stopping) { 64926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) m_stopping = true; 65926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) m_controller->stop(this); 66926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void SpeechRecognition::abort() 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(m_controller); 72926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (m_started && !m_stopping) { 73926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) m_stopping = true; 74926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) m_controller->abort(this); 75926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void SpeechRecognition::didStartAudio() 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 801e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) dispatchEvent(Event::create(EventTypeNames::audiostart)); 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void SpeechRecognition::didStartSound() 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 851e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) dispatchEvent(Event::create(EventTypeNames::soundstart)); 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void SpeechRecognition::didStartSpeech() 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 901e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) dispatchEvent(Event::create(EventTypeNames::speechstart)); 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void SpeechRecognition::didEndSpeech() 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 951e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) dispatchEvent(Event::create(EventTypeNames::speechend)); 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void SpeechRecognition::didEndSound() 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1001e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) dispatchEvent(Event::create(EventTypeNames::soundend)); 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void SpeechRecognition::didEndAudio() 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1051e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) dispatchEvent(Event::create(EventTypeNames::audioend)); 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1085d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)void SpeechRecognition::didReceiveResults(const HeapVector<Member<SpeechRecognitionResult> >& newFinalResults, const HeapVector<Member<SpeechRecognitionResult> >& currentInterimResults) 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 110926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) unsigned long resultIndex = m_finalResults.size(); 111926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 112926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (size_t i = 0; i < newFinalResults.size(); ++i) 113926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) m_finalResults.append(newFinalResults[i]); 114926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1155d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) HeapVector<Member<SpeechRecognitionResult> > results = m_finalResults; 116926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (size_t i = 0; i < currentInterimResults.size(); ++i) 117926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) results.append(currentInterimResults[i]); 118926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 119926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) dispatchEvent(SpeechRecognitionEvent::createResult(resultIndex, results)); 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1225d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)void SpeechRecognition::didReceiveNoMatch(SpeechRecognitionResult* result) 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dispatchEvent(SpeechRecognitionEvent::createNoMatch(result)); 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 127a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdochvoid SpeechRecognition::didReceiveError(PassRefPtrWillBeRawPtr<SpeechRecognitionError> error) 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) dispatchEvent(error); 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_started = false; 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void SpeechRecognition::didStart() 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1351e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) dispatchEvent(Event::create(EventTypeNames::start)); 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void SpeechRecognition::didEnd() 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_started = false; 141926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) m_stopping = false; 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!m_stoppedByActiveDOMObject) 1431e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) dispatchEvent(Event::create(EventTypeNames::end)); 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)const AtomicString& SpeechRecognition::interfaceName() const 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1481e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) return EventTargetNames::SpeechRecognition; 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1511e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)ExecutionContext* SpeechRecognition::executionContext() const 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1531e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) return ActiveDOMObject::executionContext(); 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)void SpeechRecognition::stop() 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_stoppedByActiveDOMObject = true; 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (hasPendingActivity()) 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) abort(); 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 16307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdochbool SpeechRecognition::hasPendingActivity() const 16407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch{ 16507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return m_started; 16607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch} 16707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 1681e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)SpeechRecognition::SpeechRecognition(ExecutionContext* context) 169926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) : ActiveDOMObject(context) 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_grammars(SpeechGrammarList::create()) // FIXME: The spec is not clear on the default value for the grammars attribute. 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_continuous(false) 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_interimResults(false) 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_maxAlternatives(1) 1745d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_controller(nullptr) 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_stoppedByActiveDOMObject(false) 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) , m_started(false) 177926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) , m_stopping(false) 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1791e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles) Document* document = toDocument(executionContext()); 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Page* page = document->page(); 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(page); 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) m_controller = SpeechRecognitionController::from(page); 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(m_controller); 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // FIXME: Need to hook up with Page to get notified when the visibility changes. 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)SpeechRecognition::~SpeechRecognition() 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)void SpeechRecognition::trace(Visitor* visitor) 19509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 19609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) visitor->trace(m_grammars); 1975d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#if ENABLE(OILPAN) 1985d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) visitor->trace(m_controller); 1995d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)#endif 200d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) visitor->trace(m_finalResults); 201d6cdb82654e8f3343a693ca752d5c4cee0324e17Torne (Richard Coles) EventTargetWithInlineData::trace(visitor); 20209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 20309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 204c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 205