| Index: Source/core/dom/MessagePort.cpp
|
| diff --git a/Source/core/dom/MessagePort.cpp b/Source/core/dom/MessagePort.cpp
|
| index 46b53945e60a5e66b66a90cbbb99b8b99db19088..da4fa3b35c033a8a2c8b70e001f8f96f521e732d 100644
|
| --- a/Source/core/dom/MessagePort.cpp
|
| +++ b/Source/core/dom/MessagePort.cpp
|
| @@ -61,6 +61,8 @@ MessagePort::MessagePort(ExecutionContext& executionContext)
|
| MessagePort::~MessagePort()
|
| {
|
| close();
|
| + if (m_scriptStateForConversion)
|
| + m_scriptStateForConversion->disposePerContextData();
|
| }
|
|
|
| void MessagePort::postMessage(ExecutionContext*, PassRefPtr<SerializedScriptValue> message, const MessagePortArray* ports, ExceptionState& exceptionState)
|
| @@ -266,4 +268,20 @@ DEFINE_TRACE(MessagePort)
|
| EventTargetWithInlineData::trace(visitor);
|
| }
|
|
|
| +v8::Isolate* MessagePort::scriptIsolate()
|
| +{
|
| + ASSERT(executionContext());
|
| + return toIsolate(executionContext());
|
| +}
|
| +
|
| +v8::Local<v8::Context> MessagePort::scriptContextForMessageConversion()
|
| +{
|
| + ASSERT(executionContext());
|
| + if (!m_scriptStateForConversion) {
|
| + v8::Isolate* isolate = scriptIsolate();
|
| + m_scriptStateForConversion = ScriptState::create(v8::Context::New(isolate), DOMWrapperWorld::create(isolate));
|
| + }
|
| + return m_scriptStateForConversion->context();
|
| +}
|
| +
|
| } // namespace blink
|
|
|