- 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));