| Index: Source/core/xml/DocumentXSLT.cpp
|
| diff --git a/Source/core/xml/DocumentXSLT.cpp b/Source/core/xml/DocumentXSLT.cpp
|
| index 58eb72fcd2f67f0f2ff377406d42f9edf00bb9ad..84fcffeccd52fbc196eb702e3abf11ebbf9572d4 100644
|
| --- a/Source/core/xml/DocumentXSLT.cpp
|
| +++ b/Source/core/xml/DocumentXSLT.cpp
|
| @@ -21,15 +21,18 @@
|
|
|
| namespace blink {
|
|
|
| -class DOMContentLoadedListener final : public ProcessingInstruction::DetachableEventListener, public V8AbstractEventListener {
|
| +class DOMContentLoadedListener final : public V8AbstractEventListener, public ProcessingInstruction::DetachableEventListener {
|
| + WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(DOMContentLoadedListener);
|
| public:
|
| - static PassRefPtr<DOMContentLoadedListener> create(ScriptState* scriptState, ProcessingInstruction* pi)
|
| + static PassRefPtrWillBeRawPtr<DOMContentLoadedListener> create(ScriptState* scriptState, ProcessingInstruction* pi)
|
| {
|
| - return adoptRef(new DOMContentLoadedListener(scriptState, pi));
|
| + return adoptRefWillBeNoop(new DOMContentLoadedListener(scriptState, pi));
|
| }
|
|
|
| +#if !ENABLE(OILPAN)
|
| using V8AbstractEventListener::ref;
|
| using V8AbstractEventListener::deref;
|
| +#endif
|
|
|
| virtual bool operator==(const EventListener&)
|
| {
|
| @@ -68,6 +71,13 @@ public:
|
| return this;
|
| }
|
|
|
| + DEFINE_INLINE_VIRTUAL_TRACE()
|
| + {
|
| + visitor->trace(m_processingInstruction);
|
| + V8AbstractEventListener::trace(visitor);
|
| + ProcessingInstruction::DetachableEventListener::trace(visitor);
|
| + }
|
| +
|
| private:
|
| DOMContentLoadedListener(ScriptState* scriptState, ProcessingInstruction* pi)
|
| : V8AbstractEventListener(false, scriptState->world(), scriptState->isolate())
|
| @@ -75,8 +85,10 @@ private:
|
| {
|
| }
|
|
|
| +#if !ENABLE(OILPAN)
|
| void refDetachableEventListener() override { ref(); }
|
| void derefDetachableEventListener() override { deref(); }
|
| +#endif
|
|
|
| virtual v8::Local<v8::Value> callListenerFunction(ScriptState*, v8::Local<v8::Value>, Event*)
|
| {
|
| @@ -87,10 +99,7 @@ private:
|
| // If this event listener is attached to a ProcessingInstruction, keep a
|
| // weak reference back to it. That ProcessingInstruction is responsible for
|
| // detaching itself and clear out the reference.
|
| - //
|
| - // FIXME: Oilpan: when EventListener is on the heap, make this a WeakMember<>,
|
| - // which will remove the need for explicit detachment.
|
| - ProcessingInstruction* m_processingInstruction;
|
| + RawPtrWillBeMember<ProcessingInstruction> m_processingInstruction;
|
| };
|
|
|
| DocumentXSLT::DocumentXSLT()
|
| @@ -141,7 +150,7 @@ bool DocumentXSLT::processingInstructionInsertedIntoDocument(Document& document,
|
| return true;
|
|
|
| ScriptState* scriptState = ScriptState::forMainWorld(document.frame());
|
| - RefPtr<DOMContentLoadedListener> listener = DOMContentLoadedListener::create(scriptState, pi);
|
| + RefPtrWillBeRawPtr<DOMContentLoadedListener> listener = DOMContentLoadedListener::create(scriptState, pi);
|
| document.addEventListener(EventTypeNames::DOMContentLoaded, listener, false);
|
| ASSERT(!pi->eventListenerForXSLT());
|
| pi->setEventListenerForXSLT(listener.release());
|
|
|