Commit 93e8d1f9 authored by pmeenan@chromium.org's avatar pmeenan@chromium.org

Revert of Enable Oilpan by default in modules/speech/ (https://codereview.chromium.org/315133004/)

Reason for revert:
Suspected cause of crash when running Speedometer on the perf bots: https://code.google.com/p/chromium/issues/detail?id=383338

Original issue's description:
> Enable Oilpan by default in modules/speech/
> 
> R=dmazzoni@chromium.org,haraken@chromium.org,tommi@chromium.org,tkent@chromium.org
> BUG=340522
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=175872

TBR=oilpan-reviews@chromium.org,haraken@chromium.org,dmazzoni@chromium.org,tommyw@chromium.org,tommi@chromium.org,tkent@chromium.org,sigbjornf@opera.com
NOTREECHECKS=true
NOTRY=true
BUG=340522

Review URL: https://codereview.chromium.org/330463002

git-svn-id: svn://svn.chromium.org/blink/trunk@175965 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 54fbe5b1
......@@ -39,6 +39,7 @@
#include "bindings/modules/v8/V8IDBKeyRange.h"
#include "bindings/modules/v8/V8MIDIPort.h"
#include "bindings/modules/v8/V8MediaStream.h"
#include "bindings/modules/v8/V8SpeechRecognitionError.h"
#include "bindings/modules/v8/V8SpeechRecognitionResult.h"
#include "bindings/modules/v8/V8SpeechRecognitionResultList.h"
#include "bindings/v8/ArrayValue.h"
......@@ -51,6 +52,7 @@
#include "modules/gamepad/Gamepad.h"
#include "modules/indexeddb/IDBKeyRange.h"
#include "modules/mediastream/MediaStream.h"
#include "modules/speech/SpeechRecognitionError.h"
#include "modules/speech/SpeechRecognitionResult.h"
#include "modules/speech/SpeechRecognitionResultList.h"
#include "wtf/MathExtras.h"
......@@ -477,7 +479,17 @@ bool Dictionary::get(const String& key, RefPtrWillBeMember<TrackBase>& value) co
return true;
}
bool Dictionary::get(const String& key, Member<SpeechRecognitionResult>& value) const
bool Dictionary::get(const String& key, RefPtrWillBeMember<SpeechRecognitionError>& value) const
{
v8::Local<v8::Value> v8Value;
if (!getKey(key, v8Value))
return false;
value = V8SpeechRecognitionError::toNativeWithTypeCheck(m_isolate, v8Value);
return true;
}
bool Dictionary::get(const String& key, RefPtrWillBeMember<SpeechRecognitionResult>& value) const
{
v8::Local<v8::Value> v8Value;
if (!getKey(key, v8Value))
......@@ -487,7 +499,7 @@ bool Dictionary::get(const String& key, Member<SpeechRecognitionResult>& value)
return true;
}
bool Dictionary::get(const String& key, Member<SpeechRecognitionResultList>& value) const
bool Dictionary::get(const String& key, RefPtrWillBeMember<SpeechRecognitionResultList>& value) const
{
v8::Local<v8::Value> v8Value;
if (!getKey(key, v8Value))
......
......@@ -53,6 +53,7 @@ class IDBKeyRange;
class MIDIPort;
class MediaKeyError;
class Notification;
class SpeechRecognitionError;
class SpeechRecognitionResult;
class SpeechRecognitionResultList;
class Storage;
......@@ -91,8 +92,9 @@ public:
bool get(const String&, RefPtr<MIDIPort>&) const;
bool get(const String&, RefPtr<MediaKeyError>&) const;
bool get(const String&, RefPtrWillBeMember<TrackBase>&) const;
bool get(const String&, Member<SpeechRecognitionResult>&) const;
bool get(const String&, Member<SpeechRecognitionResultList>&) const;
bool get(const String&, RefPtrWillBeMember<SpeechRecognitionError>&) const;
bool get(const String&, RefPtrWillBeMember<SpeechRecognitionResult>&) const;
bool get(const String&, RefPtrWillBeMember<SpeechRecognitionResultList>&) const;
bool get(const String&, Member<Gamepad>&) const;
bool get(const String&, RefPtr<MediaStream>&) const;
bool get(const String&, RefPtrWillBeMember<EventTarget>&) const;
......
......@@ -51,7 +51,7 @@ private:
SpeechSynthesis* speechSynthesis();
static const char* supplementName();
PersistentWillBeMember<SpeechSynthesis> m_speechSynthesis;
RefPtrWillBeMember<SpeechSynthesis> m_speechSynthesis;
};
} // namespace WebCore
......
......@@ -31,14 +31,14 @@
namespace WebCore {
SpeechGrammar* SpeechGrammar::create()
PassRefPtrWillBeRawPtr<SpeechGrammar> SpeechGrammar::create()
{
return new SpeechGrammar;
return adoptRefWillBeNoop(new SpeechGrammar);
}
SpeechGrammar* SpeechGrammar::create(const KURL& src, double weight)
PassRefPtrWillBeRawPtr<SpeechGrammar> SpeechGrammar::create(const KURL& src, double weight)
{
return new SpeechGrammar(src, weight);
return adoptRefWillBeNoop(new SpeechGrammar(src, weight));
}
void SpeechGrammar::setSrc(ExecutionContext* executionContext, const String& src)
......
......@@ -29,16 +29,17 @@
#include "bindings/v8/ScriptWrappable.h"
#include "platform/heap/Handle.h"
#include "platform/weborigin/KURL.h"
#include "wtf/RefCounted.h"
#include "wtf/text/WTFString.h"
namespace WebCore {
class ExecutionContext;
class SpeechGrammar FINAL : public GarbageCollectedFinalized<SpeechGrammar>, public ScriptWrappable {
class SpeechGrammar : public RefCountedWillBeGarbageCollectedFinalized<SpeechGrammar>, public ScriptWrappable {
public:
static SpeechGrammar* create(); // FIXME: The spec is not clear on what the constructor should look like.
static SpeechGrammar* create(const KURL& src, double weight);
static PassRefPtrWillBeRawPtr<SpeechGrammar> create(); // FIXME: The spec is not clear on what the constructor should look like.
static PassRefPtrWillBeRawPtr<SpeechGrammar> create(const KURL& src, double weight);
const KURL& src(ExecutionContext*) const { return m_src; }
const KURL& src() const { return m_src; }
......
......@@ -24,7 +24,7 @@
*/
[
GarbageCollected,
WillBeGarbageCollected,
NoInterfaceObject,
Constructor
] interface SpeechGrammar {
......
......@@ -31,9 +31,9 @@
namespace WebCore {
SpeechGrammarList* SpeechGrammarList::create()
PassRefPtrWillBeRawPtr<SpeechGrammarList> SpeechGrammarList::create()
{
return new SpeechGrammarList;
return adoptRefWillBeNoop(new SpeechGrammarList);
}
SpeechGrammar* SpeechGrammarList::item(unsigned long index) const
......
......@@ -29,14 +29,16 @@
#include "bindings/v8/ScriptWrappable.h"
#include "modules/speech/SpeechGrammar.h"
#include "platform/heap/Handle.h"
#include "wtf/RefCounted.h"
#include "wtf/Vector.h"
namespace WebCore {
class ExecutionContext;
class SpeechGrammarList : public GarbageCollectedFinalized<SpeechGrammarList>, public ScriptWrappable {
class SpeechGrammarList : public RefCountedWillBeGarbageCollectedFinalized<SpeechGrammarList>, public ScriptWrappable {
public:
static SpeechGrammarList* create();
static PassRefPtrWillBeRawPtr<SpeechGrammarList> create();
unsigned long length() const { return m_grammars.size(); }
SpeechGrammar* item(unsigned long) const;
......@@ -49,7 +51,7 @@ public:
private:
SpeechGrammarList();
HeapVector<Member<SpeechGrammar> > m_grammars;
WillBeHeapVector<RefPtrWillBeMember<SpeechGrammar> > m_grammars;
};
} // namespace WebCore
......
......@@ -24,7 +24,7 @@
*/
[
GarbageCollected,
WillBeGarbageCollected,
NoInterfaceObject,
Constructor
] interface SpeechGrammarList {
......
......@@ -37,11 +37,11 @@
namespace WebCore {
SpeechRecognition* SpeechRecognition::create(ExecutionContext* context)
PassRefPtrWillBeRawPtr<SpeechRecognition> SpeechRecognition::create(ExecutionContext* context)
{
SpeechRecognition* speechRecognition = adoptRefCountedGarbageCollected(new SpeechRecognition(context));
RefPtrWillBeRawPtr<SpeechRecognition> speechRecognition(adoptRefWillBeRefCountedGarbageCollected(new SpeechRecognition(context)));
speechRecognition->suspendIfNeeded();
return speechRecognition;
return speechRecognition.release();
}
void SpeechRecognition::start(ExceptionState& exceptionState)
......@@ -105,21 +105,21 @@ void SpeechRecognition::didEndAudio()
dispatchEvent(Event::create(EventTypeNames::audioend));
}
void SpeechRecognition::didReceiveResults(const HeapVector<Member<SpeechRecognitionResult> >& newFinalResults, const HeapVector<Member<SpeechRecognitionResult> >& currentInterimResults)
void SpeechRecognition::didReceiveResults(const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> >& newFinalResults, const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> >& currentInterimResults)
{
unsigned long resultIndex = m_finalResults.size();
for (size_t i = 0; i < newFinalResults.size(); ++i)
m_finalResults.append(newFinalResults[i]);
HeapVector<Member<SpeechRecognitionResult> > results = m_finalResults;
WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> > results = m_finalResults;
for (size_t i = 0; i < currentInterimResults.size(); ++i)
results.append(currentInterimResults[i]);
dispatchEvent(SpeechRecognitionEvent::createResult(resultIndex, results));
}
void SpeechRecognition::didReceiveNoMatch(SpeechRecognitionResult* result)
void SpeechRecognition::didReceiveNoMatch(PassRefPtrWillBeRawPtr<SpeechRecognitionResult> result)
{
dispatchEvent(SpeechRecognitionEvent::createNoMatch(result));
}
......
......@@ -33,6 +33,8 @@
#include "modules/speech/SpeechRecognitionResult.h"
#include "platform/heap/Handle.h"
#include "wtf/Compiler.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefCounted.h"
#include "wtf/text/WTFString.h"
namespace WebCore {
......@@ -42,16 +44,16 @@ class ExecutionContext;
class SpeechRecognitionController;
class SpeechRecognitionError;
class SpeechRecognition FINAL : public RefCountedGarbageCollected<SpeechRecognition>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData {
DEFINE_EVENT_TARGET_REFCOUNTING(RefCountedGarbageCollected<SpeechRecognition>);
class SpeechRecognition FINAL : public RefCountedWillBeRefCountedGarbageCollected<SpeechRecognition>, public ScriptWrappable, public ActiveDOMObject, public EventTargetWithInlineData {
REFCOUNTED_EVENT_TARGET(SpeechRecognition);
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(SpeechRecognition);
public:
static SpeechRecognition* create(ExecutionContext*);
static PassRefPtrWillBeRawPtr<SpeechRecognition> create(ExecutionContext*);
virtual ~SpeechRecognition();
// Attributes.
SpeechGrammarList* grammars() { return m_grammars.get(); }
void setGrammars(SpeechGrammarList* grammars) { m_grammars = grammars; }
void setGrammars(PassRefPtrWillBeRawPtr<SpeechGrammarList> grammars) { m_grammars = grammars; }
String lang() { return m_lang; }
void setLang(const String& lang) { m_lang = lang; }
bool continuous() { return m_continuous; }
......@@ -73,8 +75,8 @@ public:
void didEndSpeech();
void didEndSound();
void didEndAudio();
void didReceiveResults(const HeapVector<Member<SpeechRecognitionResult> >& newFinalResults, const HeapVector<Member<SpeechRecognitionResult> >& currentInterimResults);
void didReceiveNoMatch(SpeechRecognitionResult*);
void didReceiveResults(const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> >& newFinalResults, const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> >& currentInterimResults);
void didReceiveNoMatch(PassRefPtrWillBeRawPtr<SpeechRecognitionResult>);
void didReceiveError(PassRefPtrWillBeRawPtr<SpeechRecognitionError>);
void didStart();
void didEnd();
......@@ -102,9 +104,11 @@ public:
virtual void trace(Visitor*) OVERRIDE;
private:
friend class RefCounted<SpeechRecognition>;
explicit SpeechRecognition(ExecutionContext*);
Member<SpeechGrammarList> m_grammars;
RefPtrWillBeMember<SpeechGrammarList> m_grammars;
String m_lang;
bool m_continuous;
bool m_interimResults;
......@@ -114,7 +118,7 @@ private:
bool m_stoppedByActiveDOMObject;
bool m_started;
bool m_stopping;
HeapVector<Member<SpeechRecognitionResult> > m_finalResults;
WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> > m_finalResults;
};
} // namespace WebCore
......
......@@ -24,7 +24,7 @@
*/
[
GarbageCollected,
WillBeGarbageCollected,
NoInterfaceObject,
ActiveDOMObject,
Constructor,
......
......@@ -29,9 +29,9 @@
namespace WebCore {
SpeechRecognitionAlternative* SpeechRecognitionAlternative::create(const String& transcript, double confidence)
PassRefPtrWillBeRawPtr<SpeechRecognitionAlternative> SpeechRecognitionAlternative::create(const String& transcript, double confidence)
{
return new SpeechRecognitionAlternative(transcript, confidence);
return adoptRefWillBeNoop(new SpeechRecognitionAlternative(transcript, confidence));
}
SpeechRecognitionAlternative::SpeechRecognitionAlternative(const String& transcript, double confidence)
......
......@@ -28,15 +28,16 @@
#include "bindings/v8/ScriptWrappable.h"
#include "platform/heap/Handle.h"
#include "wtf/RefCounted.h"
#include "wtf/text/WTFString.h"
namespace WebCore {
class ExecutionContext;
class SpeechRecognitionAlternative : public GarbageCollectedFinalized<SpeechRecognitionAlternative>, public ScriptWrappable {
class SpeechRecognitionAlternative : public RefCountedWillBeGarbageCollectedFinalized<SpeechRecognitionAlternative>, public ScriptWrappable {
public:
static SpeechRecognitionAlternative* create(const String&, double);
static PassRefPtrWillBeRawPtr<SpeechRecognitionAlternative> create(const String&, double);
const String& transcript() const { return m_transcript; }
double confidence() const { return m_confidence; }
......
......@@ -24,7 +24,7 @@
*/
[
GarbageCollected,
WillBeGarbageCollected,
NoInterfaceObject
] interface SpeechRecognitionAlternative {
readonly attribute DOMString transcript;
......
......@@ -27,6 +27,7 @@
#define SpeechRecognitionError_h
#include "modules/EventModules.h"
#include "wtf/RefCounted.h"
#include "wtf/text/WTFString.h"
namespace WebCore {
......
......@@ -36,7 +36,7 @@ SpeechRecognitionEventInit::SpeechRecognitionEventInit()
PassRefPtrWillBeRawPtr<SpeechRecognitionEvent> SpeechRecognitionEvent::create()
{
return adoptRefWillBeNoop(new SpeechRecognitionEvent);
return adoptRefWillBeNoop(new SpeechRecognitionEvent());
}
PassRefPtrWillBeRawPtr<SpeechRecognitionEvent> SpeechRecognitionEvent::create(const AtomicString& eventName, const SpeechRecognitionEventInit& initializer)
......@@ -44,15 +44,15 @@ PassRefPtrWillBeRawPtr<SpeechRecognitionEvent> SpeechRecognitionEvent::create(co
return adoptRefWillBeNoop(new SpeechRecognitionEvent(eventName, initializer));
}
PassRefPtrWillBeRawPtr<SpeechRecognitionEvent> SpeechRecognitionEvent::createResult(unsigned long resultIndex, const HeapVector<Member<SpeechRecognitionResult> >& results)
PassRefPtrWillBeRawPtr<SpeechRecognitionEvent> SpeechRecognitionEvent::createResult(unsigned long resultIndex, const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> >& results)
{
return adoptRefWillBeNoop(new SpeechRecognitionEvent(EventTypeNames::result, resultIndex, SpeechRecognitionResultList::create(results)));
}
PassRefPtrWillBeRawPtr<SpeechRecognitionEvent> SpeechRecognitionEvent::createNoMatch(SpeechRecognitionResult* result)
PassRefPtrWillBeRawPtr<SpeechRecognitionEvent> SpeechRecognitionEvent::createNoMatch(PassRefPtrWillBeRawPtr<SpeechRecognitionResult> result)
{
if (result) {
HeapVector<Member<SpeechRecognitionResult> > results;
WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> > results;
results.append(result);
return adoptRefWillBeNoop(new SpeechRecognitionEvent(EventTypeNames::nomatch, 0, SpeechRecognitionResultList::create(results)));
}
......@@ -79,7 +79,7 @@ SpeechRecognitionEvent::SpeechRecognitionEvent(const AtomicString& eventName, co
ScriptWrappable::init(this);
}
SpeechRecognitionEvent::SpeechRecognitionEvent(const AtomicString& eventName, unsigned long resultIndex, SpeechRecognitionResultList* results)
SpeechRecognitionEvent::SpeechRecognitionEvent(const AtomicString& eventName, unsigned long resultIndex, PassRefPtrWillBeRawPtr<SpeechRecognitionResultList> results)
: Event(eventName, /*canBubble=*/false, /*cancelable=*/false)
, m_resultIndex(resultIndex)
, m_results(results)
......@@ -89,6 +89,7 @@ SpeechRecognitionEvent::SpeechRecognitionEvent(const AtomicString& eventName, un
SpeechRecognitionEvent::~SpeechRecognitionEvent()
{
ScriptWrappable::init(this);
}
void SpeechRecognitionEvent::trace(Visitor* visitor)
......
......@@ -30,6 +30,7 @@
#include "modules/speech/SpeechRecognitionResult.h"
#include "modules/speech/SpeechRecognitionResultList.h"
#include "platform/heap/Handle.h"
#include "wtf/RefPtr.h"
namespace WebCore {
......@@ -40,7 +41,7 @@ public:
SpeechRecognitionEventInit();
unsigned long resultIndex;
Member<SpeechRecognitionResultList> results;
RefPtrWillBeMember<SpeechRecognitionResultList> results;
};
class SpeechRecognitionEvent FINAL : public Event {
......@@ -49,8 +50,8 @@ public:
static PassRefPtrWillBeRawPtr<SpeechRecognitionEvent> create(const AtomicString&, const SpeechRecognitionEventInit&);
virtual ~SpeechRecognitionEvent();
static PassRefPtrWillBeRawPtr<SpeechRecognitionEvent> createResult(unsigned long resultIndex, const HeapVector<Member<SpeechRecognitionResult> >& results);
static PassRefPtrWillBeRawPtr<SpeechRecognitionEvent> createNoMatch(SpeechRecognitionResult*);
static PassRefPtrWillBeRawPtr<SpeechRecognitionEvent> createResult(unsigned long resultIndex, const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> >& results);
static PassRefPtrWillBeRawPtr<SpeechRecognitionEvent> createNoMatch(PassRefPtrWillBeRawPtr<SpeechRecognitionResult>);
unsigned long resultIndex() const { return m_resultIndex; }
SpeechRecognitionResultList* results() const { return m_results.get(); }
......@@ -67,10 +68,10 @@ public:
private:
SpeechRecognitionEvent();
SpeechRecognitionEvent(const AtomicString&, const SpeechRecognitionEventInit&);
SpeechRecognitionEvent(const AtomicString& eventName, unsigned long resultIndex, SpeechRecognitionResultList* results);
SpeechRecognitionEvent(const AtomicString& eventName, unsigned long resultIndex, PassRefPtrWillBeRawPtr<SpeechRecognitionResultList> results);
unsigned long m_resultIndex;
PersistentWillBeMember<SpeechRecognitionResultList> m_results;
RefPtrWillBeMember<SpeechRecognitionResultList> m_results;
};
} // namespace WebCore
......
......@@ -33,9 +33,9 @@ SpeechRecognitionResult::~SpeechRecognitionResult()
{
}
SpeechRecognitionResult* SpeechRecognitionResult::create(const HeapVector<Member<SpeechRecognitionAlternative> >& alternatives, bool final)
PassRefPtrWillBeRawPtr<SpeechRecognitionResult> SpeechRecognitionResult::create(const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionAlternative> >& alternatives, bool final)
{
return new SpeechRecognitionResult(alternatives, final);
return adoptRefWillBeNoop(new SpeechRecognitionResult(alternatives, final));
}
SpeechRecognitionAlternative* SpeechRecognitionResult::item(unsigned long index)
......@@ -46,7 +46,7 @@ SpeechRecognitionAlternative* SpeechRecognitionResult::item(unsigned long index)
return m_alternatives[index].get();
}
SpeechRecognitionResult::SpeechRecognitionResult(const HeapVector<Member<SpeechRecognitionAlternative> >& alternatives, bool final)
SpeechRecognitionResult::SpeechRecognitionResult(const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionAlternative> >& alternatives, bool final)
: m_final(final)
, m_alternatives(alternatives)
{
......
......@@ -29,13 +29,18 @@
#include "bindings/v8/ScriptWrappable.h"
#include "modules/speech/SpeechRecognitionAlternative.h"
#include "platform/heap/Handle.h"
#include "wtf/RefCounted.h"
#include "wtf/Vector.h"
namespace WebCore {
class SpeechRecognitionResult FINAL : public GarbageCollectedFinalized<SpeechRecognitionResult>, public ScriptWrappable {
// FIXME: oilpan: the platform outer layer (WebSpeechRecognitionResult) depends on
// holding a WebPrivatePtr (a RefPtr) to this result object. When/if such pointers
// can be to GCed objects, we can drop the extra reference counting layer.
class SpeechRecognitionResult : public RefCountedWillBeGarbageCollectedFinalized<SpeechRecognitionResult>, public ScriptWrappable {
public:
~SpeechRecognitionResult();
static SpeechRecognitionResult* create(const HeapVector<Member<SpeechRecognitionAlternative> >&, bool final);
static PassRefPtrWillBeRawPtr<SpeechRecognitionResult> create(const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionAlternative> >&, bool final);
unsigned long length() { return m_alternatives.size(); }
SpeechRecognitionAlternative* item(unsigned long index);
......@@ -44,10 +49,10 @@ public:
void trace(Visitor*);
private:
SpeechRecognitionResult(const HeapVector<Member<SpeechRecognitionAlternative> >&, bool final);
SpeechRecognitionResult(const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionAlternative> >&, bool final);
bool m_final;
HeapVector<Member<SpeechRecognitionAlternative> > m_alternatives;
WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionAlternative> > m_alternatives;
};
} // namespace WebCore
......
......@@ -24,7 +24,7 @@
*/
[
GarbageCollected,
WillBeGarbageCollected,
NoInterfaceObject
] interface SpeechRecognitionResult {
readonly attribute unsigned long length;
......
......@@ -29,9 +29,9 @@
namespace WebCore {
SpeechRecognitionResultList* SpeechRecognitionResultList::create(const HeapVector<Member<SpeechRecognitionResult> >& results)
PassRefPtrWillBeRawPtr<SpeechRecognitionResultList> SpeechRecognitionResultList::create(const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> >& results)
{
return new SpeechRecognitionResultList(results);
return adoptRefWillBeNoop(new SpeechRecognitionResultList(results));
}
SpeechRecognitionResult* SpeechRecognitionResultList::item(unsigned long index)
......@@ -42,7 +42,7 @@ SpeechRecognitionResult* SpeechRecognitionResultList::item(unsigned long index)
return m_results[index].get();
}
SpeechRecognitionResultList::SpeechRecognitionResultList(const HeapVector<Member<SpeechRecognitionResult> >& results)
SpeechRecognitionResultList::SpeechRecognitionResultList(const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> >& results)
: m_results(results)
{
ScriptWrappable::init(this);
......
......@@ -29,12 +29,14 @@
#include "bindings/v8/ScriptWrappable.h"
#include "modules/speech/SpeechRecognitionResult.h"
#include "platform/heap/Handle.h"
#include "wtf/RefCounted.h"
#include "wtf/Vector.h"
namespace WebCore {
class SpeechRecognitionResultList : public GarbageCollectedFinalized<SpeechRecognitionResultList>, public ScriptWrappable {
class SpeechRecognitionResultList : public RefCountedWillBeGarbageCollectedFinalized<SpeechRecognitionResultList>, public ScriptWrappable {
public:
static SpeechRecognitionResultList* create(const HeapVector<Member<SpeechRecognitionResult> >&);
static PassRefPtrWillBeRawPtr<SpeechRecognitionResultList> create(const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> >&);
unsigned long length() { return m_results.size(); }
SpeechRecognitionResult* item(unsigned long index);
......@@ -42,9 +44,9 @@ public:
void trace(Visitor*);
private:
explicit SpeechRecognitionResultList(const HeapVector<Member<SpeechRecognitionResult> >&);
explicit SpeechRecognitionResultList(const WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> >&);
HeapVector<Member<SpeechRecognitionResult> > m_results;
WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> > m_results;
};
} // namespace WebCore
......
......@@ -24,7 +24,7 @@
*/
[
GarbageCollected,
WillBeGarbageCollected,
NoInterfaceObject
] interface SpeechRecognitionResultList {
readonly attribute unsigned long length;
......
......@@ -34,9 +34,9 @@
namespace WebCore {
SpeechSynthesis* SpeechSynthesis::create(ExecutionContext* context)
PassRefPtrWillBeRawPtr<SpeechSynthesis> SpeechSynthesis::create(ExecutionContext* context)
{
return adoptRefCountedGarbageCollected(new SpeechSynthesis(context));
return adoptRefWillBeRefCountedGarbageCollected(new SpeechSynthesis(context));
}
SpeechSynthesis::SpeechSynthesis(ExecutionContext* context)
......@@ -64,7 +64,7 @@ void SpeechSynthesis::voicesDidChange()
dispatchEvent(Event::create(EventTypeNames::voiceschanged));
}
const HeapVector<Member<SpeechSynthesisVoice> >& SpeechSynthesis::getVoices()
const WillBeHeapVector<RefPtrWillBeMember<SpeechSynthesisVoice> >& SpeechSynthesis::getVoices()
{
if (m_voiceList.size())
return m_voiceList;
......@@ -153,6 +153,10 @@ void SpeechSynthesis::handleSpeakingCompleted(SpeechSynthesisUtterance* utteranc
{
ASSERT(utterance);
// Keep the utterance around long enough to fire an event on it in case m_utteranceQueue
// is holding the last reference to it.
RefPtrWillBeRawPtr<SpeechSynthesisUtterance> protect(utterance);
bool didJustFinishCurrentUtterance = false;
// If the utterance that completed was the one we're currently speaking,
// remove it from the queue and start speaking the next one.
......
......@@ -34,18 +34,21 @@
#include "platform/heap/Handle.h"
#include "platform/speech/PlatformSpeechSynthesisUtterance.h"
#include "platform/speech/PlatformSpeechSynthesizer.h"
#include "wtf/Deque.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefCounted.h"
#include "wtf/RefPtr.h"
namespace WebCore {
class ExceptionState;
class PlatformSpeechSynthesizerClient;
class SpeechSynthesis FINAL : public RefCountedGarbageCollected<SpeechSynthesis>, public PlatformSpeechSynthesizerClient, public ScriptWrappable, public ContextLifecycleObserver, public EventTargetWithInlineData {
DEFINE_EVENT_TARGET_REFCOUNTING(RefCountedGarbageCollected<SpeechSynthesis>);
class SpeechSynthesis FINAL : public RefCountedWillBeRefCountedGarbageCollected<SpeechSynthesis>, public PlatformSpeechSynthesizerClient, public ScriptWrappable, public ContextLifecycleObserver, public EventTargetWithInlineData {
REFCOUNTED_EVENT_TARGET(SpeechSynthesis);
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(SpeechSynthesis);
public:
static SpeechSynthesis* create(ExecutionContext*);
static PassRefPtrWillBeRawPtr<SpeechSynthesis> create(ExecutionContext*);
bool pending() const;
bool speaking() const;
......@@ -56,7 +59,7 @@ public:
void pause();
void resume();
const HeapVector<Member<SpeechSynthesisVoice> >& getVoices();
const WillBeHeapVector<RefPtrWillBeMember<SpeechSynthesisVoice> >& getVoices();
// Used in testing to use a mock platform synthesizer
void setPlatformSynthesizer(PassOwnPtr<PlatformSpeechSynthesizer>);
......@@ -87,8 +90,8 @@ private:
SpeechSynthesisUtterance* currentSpeechUtterance() const;
OwnPtr<PlatformSpeechSynthesizer> m_platformSpeechSynthesizer;
HeapVector<Member<SpeechSynthesisVoice> > m_voiceList;
HeapDeque<Member<SpeechSynthesisUtterance> > m_utteranceQueue;
WillBeHeapVector<RefPtrWillBeMember<SpeechSynthesisVoice> > m_voiceList;
Deque<RefPtrWillBeMember<SpeechSynthesisUtterance> > m_utteranceQueue;
bool m_isPaused;
// EventTarget
......
......@@ -24,7 +24,7 @@
*/
[
GarbageCollected,
WillBeGarbageCollected,
NoInterfaceObject,
RuntimeEnabled=SpeechSynthesis
] interface SpeechSynthesis : EventTarget {
......
......@@ -30,7 +30,7 @@ namespace WebCore {
PassRefPtrWillBeRawPtr<SpeechSynthesisEvent> SpeechSynthesisEvent::create()
{
return adoptRefWillBeNoop(new SpeechSynthesisEvent);
return adoptRefWillBeNoop(new SpeechSynthesisEvent());
}
PassRefPtrWillBeRawPtr<SpeechSynthesisEvent> SpeechSynthesisEvent::create(const AtomicString& type, unsigned long charIndex, float elapsedTime, const String& name)
......@@ -52,4 +52,9 @@ SpeechSynthesisEvent::SpeechSynthesisEvent(const AtomicString& type, unsigned lo
ScriptWrappable::init(this);
}
void SpeechSynthesisEvent::trace(Visitor* visitor)
{
Event::trace(visitor);
}
} // namespace WebCore
......@@ -27,6 +27,7 @@
#define SpeechSynthesisEvent_h
#include "modules/EventModules.h"
#include "wtf/PassRefPtr.h"
namespace WebCore {
......@@ -41,10 +42,7 @@ public:
virtual const AtomicString& interfaceName() const OVERRIDE { return EventNames::SpeechSynthesisEvent; }
virtual void trace(Visitor* visitor) OVERRIDE
{
Event::trace(visitor);
}
virtual void trace(Visitor*) OVERRIDE;
private:
SpeechSynthesisEvent();
......
......@@ -28,9 +28,9 @@
namespace WebCore {
SpeechSynthesisUtterance* SpeechSynthesisUtterance::create(ExecutionContext* context, const String& text)
PassRefPtrWillBeRawPtr<SpeechSynthesisUtterance> SpeechSynthesisUtterance::create(ExecutionContext* context, const String& text)
{
return adoptRefCountedGarbageCollected(new SpeechSynthesisUtterance(context, text));
return adoptRefWillBeRefCountedGarbageCollected(new SpeechSynthesisUtterance(context, text));
}
SpeechSynthesisUtterance::SpeechSynthesisUtterance(ExecutionContext* context, const String& text)
......
......@@ -33,14 +33,15 @@
#include "platform/heap/Handle.h"
#include "platform/speech/PlatformSpeechSynthesisUtterance.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefCounted.h"
namespace WebCore {
class SpeechSynthesisUtterance FINAL : public RefCountedGarbageCollected<SpeechSynthesisUtterance>, public PlatformSpeechSynthesisUtteranceClient, public ScriptWrappable, public ContextLifecycleObserver, public EventTargetWithInlineData {
DEFINE_EVENT_TARGET_REFCOUNTING(RefCountedGarbageCollected<SpeechSynthesisUtterance>);
class SpeechSynthesisUtterance FINAL : public RefCountedWillBeRefCountedGarbageCollected<SpeechSynthesisUtterance>, public PlatformSpeechSynthesisUtteranceClient, public ScriptWrappable, public ContextLifecycleObserver, public EventTargetWithInlineData {
REFCOUNTED_EVENT_TARGET(SpeechSynthesisUtterance);
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(SpeechSynthesisUtterance);
public:
static SpeechSynthesisUtterance* create(ExecutionContext*, const String&);
static PassRefPtrWillBeRawPtr<SpeechSynthesisUtterance> create(ExecutionContext*, const String&);
virtual ~SpeechSynthesisUtterance();
......@@ -82,7 +83,7 @@ public:
private:
SpeechSynthesisUtterance(ExecutionContext*, const String&);
RefPtr<PlatformSpeechSynthesisUtterance> m_platformUtterance;
Member<SpeechSynthesisVoice> m_voice;
RefPtrWillBeMember<SpeechSynthesisVoice> m_voice;
// EventTarget
virtual const AtomicString& interfaceName() const OVERRIDE;
......
......@@ -24,7 +24,7 @@
*/
[
GarbageCollected,
WillBeGarbageCollected,
Constructor([Default=NullString] optional DOMString text),
ConstructorCallWith=ExecutionContext,
RuntimeEnabled=SpeechSynthesis,
......
......@@ -28,9 +28,9 @@
namespace WebCore {
SpeechSynthesisVoice* SpeechSynthesisVoice::create(PassRefPtr<PlatformSpeechSynthesisVoice> voice)
PassRefPtrWillBeRawPtr<SpeechSynthesisVoice> SpeechSynthesisVoice::create(PassRefPtr<PlatformSpeechSynthesisVoice> voice)
{
return new SpeechSynthesisVoice(voice);
return adoptRefWillBeNoop(new SpeechSynthesisVoice(voice));
}
SpeechSynthesisVoice::SpeechSynthesisVoice(PassRefPtr<PlatformSpeechSynthesisVoice> voice)
......
......@@ -35,9 +35,9 @@
namespace WebCore {
class SpeechSynthesisVoice FINAL : public GarbageCollectedFinalized<SpeechSynthesisVoice>, public ScriptWrappable {
class SpeechSynthesisVoice FINAL : public RefCountedWillBeGarbageCollectedFinalized<SpeechSynthesisVoice>, public ScriptWrappable {
public:
static SpeechSynthesisVoice* create(PassRefPtr<PlatformSpeechSynthesisVoice>);
static PassRefPtrWillBeRawPtr<SpeechSynthesisVoice> create(PassRefPtr<PlatformSpeechSynthesisVoice>);
const String& voiceURI() const { return m_platformVoice->voiceURI(); }
const String& name() const { return m_platformVoice->name(); }
......
......@@ -24,7 +24,7 @@
*/
[
GarbageCollected,
WillBeGarbageCollected,
NoInterfaceObject,
RuntimeEnabled=SpeechSynthesis
] interface SpeechSynthesisVoice {
......
......@@ -76,67 +76,67 @@ void SpeechRecognitionClientProxy::abort(SpeechRecognition* recognition)
void SpeechRecognitionClientProxy::didStartAudio(const WebSpeechRecognitionHandle& handle)
{
SpeechRecognition* recognition(handle);
RefPtrWillBeRawPtr<SpeechRecognition> recognition = PassRefPtrWillBeRawPtr<SpeechRecognition>(handle);
recognition->didStartAudio();
}
void SpeechRecognitionClientProxy::didStartSound(const WebSpeechRecognitionHandle& handle)
{
SpeechRecognition* recognition(handle);
RefPtrWillBeRawPtr<SpeechRecognition> recognition = PassRefPtrWillBeRawPtr<SpeechRecognition>(handle);
recognition->didStartSound();
recognition->didStartSpeech();
}
void SpeechRecognitionClientProxy::didEndSound(const WebSpeechRecognitionHandle& handle)
{
SpeechRecognition* recognition(handle);
RefPtrWillBeRawPtr<SpeechRecognition> recognition = PassRefPtrWillBeRawPtr<SpeechRecognition>(handle);
recognition->didEndSpeech();
recognition->didEndSound();
}
void SpeechRecognitionClientProxy::didEndAudio(const WebSpeechRecognitionHandle& handle)
{
SpeechRecognition* recognition(handle);
RefPtrWillBeRawPtr<SpeechRecognition> recognition = PassRefPtrWillBeRawPtr<SpeechRecognition>(handle);
recognition->didEndAudio();
}
void SpeechRecognitionClientProxy::didReceiveResults(const WebSpeechRecognitionHandle& handle, const WebVector<WebSpeechRecognitionResult>& newFinalResults, const WebVector<WebSpeechRecognitionResult>& currentInterimResults)
{
SpeechRecognition* recognition(handle);
RefPtrWillBeRawPtr<SpeechRecognition> recognition = PassRefPtrWillBeRawPtr<SpeechRecognition>(handle);
HeapVector<Member<SpeechRecognitionResult> > finalResultsVector(newFinalResults.size());
WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> > finalResultsVector(newFinalResults.size());
for (size_t i = 0; i < newFinalResults.size(); ++i)
finalResultsVector[i] = static_cast<SpeechRecognitionResult*>(newFinalResults[i]);
finalResultsVector[i] = PassRefPtrWillBeRawPtr<SpeechRecognitionResult>(newFinalResults[i]);
HeapVector<Member<SpeechRecognitionResult> > interimResultsVector(currentInterimResults.size());
WillBeHeapVector<RefPtrWillBeMember<SpeechRecognitionResult> > interimResultsVector(currentInterimResults.size());
for (size_t i = 0; i < currentInterimResults.size(); ++i)
interimResultsVector[i] = static_cast<SpeechRecognitionResult*>(currentInterimResults[i]);
interimResultsVector[i] = PassRefPtrWillBeRawPtr<SpeechRecognitionResult>(currentInterimResults[i]);
recognition->didReceiveResults(finalResultsVector, interimResultsVector);
}
void SpeechRecognitionClientProxy::didReceiveNoMatch(const WebSpeechRecognitionHandle& handle, const WebSpeechRecognitionResult& result)
{
SpeechRecognition* recognition(handle);
RefPtrWillBeRawPtr<SpeechRecognition> recognition = PassRefPtrWillBeRawPtr<SpeechRecognition>(handle);
recognition->didReceiveNoMatch(result);
}
void SpeechRecognitionClientProxy::didReceiveError(const WebSpeechRecognitionHandle& handle, const WebString& message, WebSpeechRecognizerClient::ErrorCode code)
{
SpeechRecognition* recognition(handle);
RefPtrWillBeRawPtr<SpeechRecognition> recognition = PassRefPtrWillBeRawPtr<SpeechRecognition>(handle);
SpeechRecognitionError::ErrorCode errorCode = static_cast<SpeechRecognitionError::ErrorCode>(code);
recognition->didReceiveError(SpeechRecognitionError::create(errorCode, message));
}
void SpeechRecognitionClientProxy::didStart(const WebSpeechRecognitionHandle& handle)
{
SpeechRecognition* recognition(handle);
RefPtrWillBeRawPtr<SpeechRecognition> recognition = PassRefPtrWillBeRawPtr<SpeechRecognition>(handle);
recognition->didStart();
}
void SpeechRecognitionClientProxy::didEnd(const WebSpeechRecognitionHandle& handle)
{
SpeechRecognition* recognition(handle);
RefPtrWillBeRawPtr<SpeechRecognition> recognition = PassRefPtrWillBeRawPtr<SpeechRecognition>(handle);
recognition->didEnd();
}
......
......@@ -41,12 +41,12 @@ void WebSpeechGrammar::assign(const WebSpeechGrammar& other)
m_private = other.m_private;
}
WebSpeechGrammar::WebSpeechGrammar(WebCore::SpeechGrammar* value)
WebSpeechGrammar::WebSpeechGrammar(const PassRefPtrWillBeRawPtr<WebCore::SpeechGrammar>& value)
: m_private(value)
{
}
WebSpeechGrammar& WebSpeechGrammar::operator=(WebCore::SpeechGrammar* value)
WebSpeechGrammar& WebSpeechGrammar::operator=(const PassRefPtrWillBeRawPtr<WebCore::SpeechGrammar>& value)
{
m_private = value;
return *this;
......
......@@ -52,18 +52,18 @@ bool WebSpeechRecognitionHandle::lessThan(const WebSpeechRecognitionHandle& othe
return m_private.get() < other.m_private.get();
}
WebSpeechRecognitionHandle::WebSpeechRecognitionHandle(WebCore::SpeechRecognition* speechRecognition)
WebSpeechRecognitionHandle::WebSpeechRecognitionHandle(const PassRefPtrWillBeRawPtr<SpeechRecognition>& speechRecognition)
: m_private(speechRecognition)
{
}
WebSpeechRecognitionHandle& WebSpeechRecognitionHandle::operator=(WebCore::SpeechRecognition* speechRecognition)
WebSpeechRecognitionHandle& WebSpeechRecognitionHandle::operator=(const PassRefPtrWillBeRawPtr<SpeechRecognition>& speechRecognition)
{
m_private = speechRecognition;
return *this;
}
WebSpeechRecognitionHandle::operator SpeechRecognition*() const
WebSpeechRecognitionHandle::operator PassRefPtrWillBeRawPtr<SpeechRecognition>() const
{
return m_private.get();
}
......
......@@ -45,7 +45,7 @@ void WebSpeechRecognitionResult::assign(const WebVector<WebString>& transcripts,
{
ASSERT(transcripts.size() == confidences.size());
WebCore::HeapVector<WebCore::Member<WebCore::SpeechRecognitionAlternative> > alternatives(transcripts.size());
WillBeHeapVector<RefPtrWillBeMember<WebCore::SpeechRecognitionAlternative> > alternatives(transcripts.size());
for (size_t i = 0; i < transcripts.size(); ++i)
alternatives[i] = WebCore::SpeechRecognitionAlternative::create(transcripts[i], confidences[i]);
......@@ -57,7 +57,7 @@ void WebSpeechRecognitionResult::reset()
m_private.reset();
}
WebSpeechRecognitionResult::operator WebCore::SpeechRecognitionResult*() const
WebSpeechRecognitionResult::operator PassRefPtrWillBeRawPtr<WebCore::SpeechRecognitionResult>() const
{
return m_private.get();
}
......
......@@ -49,8 +49,8 @@ public:
BLINK_EXPORT void assign(const WebSpeechGrammar&);
#if BLINK_IMPLEMENTATION
explicit WebSpeechGrammar(WebCore::SpeechGrammar*);
WebSpeechGrammar& operator=(WebCore::SpeechGrammar*);
explicit WebSpeechGrammar(const PassRefPtrWillBeRawPtr<WebCore::SpeechGrammar>&);
WebSpeechGrammar& operator=(const PassRefPtrWillBeRawPtr<WebCore::SpeechGrammar>&);
#endif
private:
......
......@@ -62,9 +62,9 @@ public:
BLINK_EXPORT bool lessThan(const WebSpeechRecognitionHandle&) const;
#if BLINK_IMPLEMENTATION
explicit WebSpeechRecognitionHandle(WebCore::SpeechRecognition*);
WebSpeechRecognitionHandle& operator=(WebCore::SpeechRecognition*);
operator WebCore::SpeechRecognition*() const;
explicit WebSpeechRecognitionHandle(const PassRefPtrWillBeRawPtr<WebCore::SpeechRecognition>&);
WebSpeechRecognitionHandle& operator=(const PassRefPtrWillBeRawPtr<WebCore::SpeechRecognition>&);
operator PassRefPtrWillBeRawPtr<WebCore::SpeechRecognition>() const;
#endif
private:
......
......@@ -48,7 +48,7 @@ public:
BLINK_EXPORT void reset();
#if BLINK_IMPLEMENTATION
operator WebCore::SpeechRecognitionResult*() const;
operator PassRefPtrWillBeRawPtr<WebCore::SpeechRecognitionResult>() const;
#endif
private:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment