Title: [140397] trunk/Source/WebCore
Revision
140397
Author
[email protected]
Date
2013-01-22 01:06:22 -0800 (Tue, 22 Jan 2013)

Log Message

[V8] Pass an Isolate to toV8() of event listeners
https://bugs.webkit.org/show_bug.cgi?id=107517

Reviewed by Adam Barth.

By using Context::GetIsolate(), this patch passes an Isolate to toV8().
I think this would be the last patch to pass an Isolate to toV8().
In the next patch, I will make an Isolate parameter mandatory for toV8().

No tests. No change in behavior.

* bindings/v8/V8AbstractEventListener.cpp:
(WebCore::V8AbstractEventListener::getReceiverObject):
* bindings/v8/V8AbstractEventListener.h:
(V8AbstractEventListener):
* bindings/v8/V8EventListener.cpp:
(WebCore::V8EventListener::callListenerFunction):
* bindings/v8/V8LazyEventListener.cpp:
(WebCore::toObjectWrapper):
(WebCore::V8LazyEventListener::callListenerFunction):
(WebCore::V8LazyEventListener::prepareListenerObject):
* bindings/v8/V8WorkerContextEventListener.cpp:
(WebCore::V8WorkerContextEventListener::getReceiverObject):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (140396 => 140397)


--- trunk/Source/WebCore/ChangeLog	2013-01-22 09:00:37 UTC (rev 140396)
+++ trunk/Source/WebCore/ChangeLog	2013-01-22 09:06:22 UTC (rev 140397)
@@ -1,3 +1,29 @@
+2013-01-22  Kentaro Hara  <[email protected]>
+
+        [V8] Pass an Isolate to toV8() of event listeners
+        https://bugs.webkit.org/show_bug.cgi?id=107517
+
+        Reviewed by Adam Barth.
+
+        By using Context::GetIsolate(), this patch passes an Isolate to toV8().
+        I think this would be the last patch to pass an Isolate to toV8().
+        In the next patch, I will make an Isolate parameter mandatory for toV8().
+
+        No tests. No change in behavior.
+
+        * bindings/v8/V8AbstractEventListener.cpp:
+        (WebCore::V8AbstractEventListener::getReceiverObject):
+        * bindings/v8/V8AbstractEventListener.h:
+        (V8AbstractEventListener):
+        * bindings/v8/V8EventListener.cpp:
+        (WebCore::V8EventListener::callListenerFunction):
+        * bindings/v8/V8LazyEventListener.cpp:
+        (WebCore::toObjectWrapper):
+        (WebCore::V8LazyEventListener::callListenerFunction):
+        (WebCore::V8LazyEventListener::prepareListenerObject):
+        * bindings/v8/V8WorkerContextEventListener.cpp:
+        (WebCore::V8WorkerContextEventListener::getReceiverObject):
+
 2013-01-22  Tim Horton  <[email protected]>
 
         PDFPlugin: Build PDFPlugin everywhere, enable at runtime

Modified: trunk/Source/WebCore/bindings/v8/V8AbstractEventListener.cpp (140396 => 140397)


--- trunk/Source/WebCore/bindings/v8/V8AbstractEventListener.cpp	2013-01-22 09:00:37 UTC (rev 140396)
+++ trunk/Source/WebCore/bindings/v8/V8AbstractEventListener.cpp	2013-01-22 09:06:22 UTC (rev 140397)
@@ -182,13 +182,13 @@
     return returnValue->IsBoolean() && !returnValue->BooleanValue();
 }
 
-v8::Local<v8::Object> V8AbstractEventListener::getReceiverObject(Event* event)
+v8::Local<v8::Object> V8AbstractEventListener::getReceiverObject(ScriptExecutionContext* context, Event* event)
 {
     if (!m_listener.isEmpty() && !m_listener->IsFunction())
         return v8::Local<v8::Object>::New(m_listener.get());
 
     EventTarget* target = event->currentTarget();
-    v8::Handle<v8::Value> value = toV8(target, v8::Handle<v8::Object>());
+    v8::Handle<v8::Value> value = toV8(target, v8::Handle<v8::Object>(), toV8Context(context, worldContext())->GetIsolate());
     if (value.IsEmpty())
         return v8::Local<v8::Object>();
     return v8::Local<v8::Object>::New(v8::Handle<v8::Object>::Cast(value));

Modified: trunk/Source/WebCore/bindings/v8/V8AbstractEventListener.h (140396 => 140397)


--- trunk/Source/WebCore/bindings/v8/V8AbstractEventListener.h	2013-01-22 09:00:37 UTC (rev 140396)
+++ trunk/Source/WebCore/bindings/v8/V8AbstractEventListener.h	2013-01-22 09:06:22 UTC (rev 140397)
@@ -115,7 +115,7 @@
         void invokeEventHandler(ScriptExecutionContext*, Event*, v8::Handle<v8::Value> jsEvent);
 
         // Get the receiver object to use for event listener call.
-        v8::Local<v8::Object> getReceiverObject(Event*);
+        v8::Local<v8::Object> getReceiverObject(ScriptExecutionContext*, Event*);
 
     private:
         static void weakEventListenerCallback(v8::Persistent<v8::Value>, void* parameter);

Modified: trunk/Source/WebCore/bindings/v8/V8EventListener.cpp (140396 => 140397)


--- trunk/Source/WebCore/bindings/v8/V8EventListener.cpp	2013-01-22 09:00:37 UTC (rev 140396)
+++ trunk/Source/WebCore/bindings/v8/V8EventListener.cpp	2013-01-22 09:06:22 UTC (rev 140397)
@@ -72,7 +72,7 @@
 {
 
     v8::Local<v8::Function> handlerFunction = getListenerFunction(context);
-    v8::Local<v8::Object> receiver = getReceiverObject(event);
+    v8::Local<v8::Object> receiver = getReceiverObject(context, event);
     if (handlerFunction.IsEmpty() || receiver.IsEmpty())
         return v8::Local<v8::Value>();
 

Modified: trunk/Source/WebCore/bindings/v8/V8LazyEventListener.cpp (140396 => 140397)


--- trunk/Source/WebCore/bindings/v8/V8LazyEventListener.cpp	2013-01-22 09:00:37 UTC (rev 140396)
+++ trunk/Source/WebCore/bindings/v8/V8LazyEventListener.cpp	2013-01-22 09:06:22 UTC (rev 140397)
@@ -63,11 +63,11 @@
 }
 
 template<typename T>
-v8::Handle<v8::Object> toObjectWrapper(T* domObject)
+v8::Handle<v8::Object> toObjectWrapper(T* domObject, v8::Isolate* isolate)
 {
     if (!domObject)
         return v8::Object::New();
-    v8::Handle<v8::Value> value = toV8(domObject, v8::Handle<v8::Object>());
+    v8::Handle<v8::Value> value = toV8(domObject, v8::Handle<v8::Object>(), isolate);
     if (value.IsEmpty())
         return v8::Object::New();
     return value.As<v8::Object>();
@@ -80,7 +80,7 @@
         return v8::Local<v8::Value>();
 
     v8::Local<v8::Function> handlerFunction = listenerObject.As<v8::Function>();
-    v8::Local<v8::Object> receiver = getReceiverObject(event);
+    v8::Local<v8::Object> receiver = getReceiverObject(context, event);
     if (handlerFunction.IsEmpty() || receiver.IsEmpty())
         return v8::Local<v8::Value>();
 
@@ -178,9 +178,9 @@
     if (m_node && m_node->isHTMLElement())
         formElement = static_cast<HTMLElement*>(m_node)->form();
 
-    v8::Handle<v8::Object> nodeWrapper = toObjectWrapper<Node>(m_node);
-    v8::Handle<v8::Object> formWrapper = toObjectWrapper<HTMLFormElement>(formElement);
-    v8::Handle<v8::Object> documentWrapper = toObjectWrapper<Document>(m_node ? m_node->ownerDocument() : 0);
+    v8::Handle<v8::Object> nodeWrapper = toObjectWrapper<Node>(m_node, v8Context->GetIsolate());
+    v8::Handle<v8::Object> formWrapper = toObjectWrapper<HTMLFormElement>(formElement, v8Context->GetIsolate());
+    v8::Handle<v8::Object> documentWrapper = toObjectWrapper<Document>(m_node ? m_node->ownerDocument() : 0, v8Context->GetIsolate());
 
     v8::Local<v8::Object> thisObject = v8::Object::New();
     if (thisObject.IsEmpty())

Modified: trunk/Source/WebCore/bindings/v8/V8WorkerContextEventListener.cpp (140396 => 140397)


--- trunk/Source/WebCore/bindings/v8/V8WorkerContextEventListener.cpp	2013-01-22 09:00:37 UTC (rev 140396)
+++ trunk/Source/WebCore/bindings/v8/V8WorkerContextEventListener.cpp	2013-01-22 09:06:22 UTC (rev 140397)
@@ -118,7 +118,7 @@
         return listener;
 
     EventTarget* target = event->currentTarget();
-    v8::Handle<v8::Value> value = toV8(target, v8::Handle<v8::Object>());
+    v8::Handle<v8::Value> value = toV8(target, v8::Handle<v8::Object>(), toV8Context(context, worldContext())->GetIsolate());
     if (value.IsEmpty())
         return v8::Local<v8::Object>();
     return v8::Local<v8::Object>::New(v8::Handle<v8::Object>::Cast(value));
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to