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..ea19fbaa285e042d56b8224b7e602ca1b0a63e70 100644 |
--- a/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.h |
+++ b/third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.h |
@@ -42,6 +42,7 @@ |
namespace blink { |
class Event; |
+class WorkerGlobalScope; |
// There are two kinds of event listeners: HTML or non-HMTL. onload, |
// onfocus, etc (attributes) are always HTML event handler type; Event |
@@ -105,31 +106,20 @@ 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); |
- } |
+ DECLARE_VIRTUAL_TRACE(); |
protected: |
V8AbstractEventListener(bool isAttribute, DOMWrapperWorld&, v8::Isolate*); |
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 +137,8 @@ private: |
virtual bool shouldPreventDefault(v8::Local<v8::Value> returnValue); |
static void setWeakCallback(const v8::WeakCallbackInfo<V8AbstractEventListener>&); |
+ static void secondWeakCallback(const v8::WeakCallbackInfo<V8AbstractEventListener>&); |
- // 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. |
@@ -157,6 +146,13 @@ private: |
RefPtr<DOMWrapperWorld> m_world; |
v8::Isolate* m_isolate; |
+ |
+ // nullptr unless this listener belongs to a worker. |
+ RawPtrWillBeMember<WorkerGlobalScope> m_workerGlobalScope; |
+ |
+#if ENABLE(OILPAN) |
+ SelfKeepAlive<V8AbstractEventListener> m_keepAlive; |
+#endif |
}; |
} // namespace blink |