Index: third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.h |
diff --git a/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.h b/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.h |
index fdb454f67910e54419c7ef754ca6f7b89b9c4876..bff7771719226dfcae202a643b8caffb2c2eb6b3 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.h |
+++ b/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.h |
@@ -105,20 +105,12 @@ public: |
return !m_listener.isEmpty(); |
} |
- void clearListenerObject() |
- { |
- m_listener.clear(); |
- } |
+ void clearListenerObject(); |
bool belongsToTheCurrentWorld() const final; |
v8::Isolate* isolate() const { return m_isolate; } |
DOMWrapperWorld& world() const { return *m_world; } |
- // Oilpan: promptly clear listener wrapper. |
- EAGERLY_FINALIZE(); |
-#if ENABLE(OILPAN) |
- DECLARE_EAGER_FINALIZATION_OPERATOR_NEW(); |
-#endif |
DEFINE_INLINE_VIRTUAL_TRACE() |
{ |
EventListener::trace(visitor); |
@@ -129,7 +121,7 @@ protected: |
virtual void prepareListenerObject(ExecutionContext*) { } |
- void setListenerObject(v8::Local<v8::Object>, ScriptState*); |
+ void setListenerObject(v8::Local<v8::Object>); |
void invokeEventHandler(ScriptState*, Event*, v8::Local<v8::Value>); |
@@ -147,9 +139,14 @@ private: |
virtual bool shouldPreventDefault(v8::Local<v8::Value> returnValue); |
static void setWeakCallback(const v8::WeakCallbackInfo<V8AbstractEventListener>&); |
+ static void secondWeakCallback(const v8::WeakCallbackInfo<V8AbstractEventListener>&); |
+ |
+#if ENABLE(OILPAN) |
+ // Couples the lifetime of the V8AbstractEventListener to m_listener's |
+ // lifetime. |
+ SelfKeepAlive<V8AbstractEventListener> m_keepAlive; |
+#endif |
- // The ScriptState the m_listener below was created in. |
- RefPtr<ScriptState> m_scriptStateForListener; |
ScopedPersistent<v8::Object> m_listener; |
// Indicates if this is an HTML type listener. |