[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

eric at webkit.org eric at webkit.org
Wed Apr 7 23:26:12 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit c89ab44826996be2a422bd48eac2758179e29ed5
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Nov 9 06:00:02 2009 +0000

    2009-11-08  Drew Wilson  <atwilson at chromium.org>
    
            Reviewed by Dimitri Glazkov.
    
            V8 WorkerContextExecutionProxy does not handle SharedWorkers
            https://bugs.webkit.org/show_bug.cgi?id=31226
    
            Now checks to see what type of context is active and creates the
            appropriate wrapper (DEDICATEDWORKERCONTEXT vs SHAREDWORKERCONTEXT).
    
            Added support for converting to SharedWorkers and SharedWorkerContexts.
    
            Test: Existing layout tests cover this case (start passing in Chrome).
    
            * bindings/v8/WorkerContextExecutionProxy.cpp:
            (WebCore::WorkerContextExecutionProxy::initContextIfNeeded):
            Now generates the right type of DOMWrapper for SharedWorkerContexts.
            (WebCore::WorkerContextExecutionProxy::convertToV8Object):
            Added support for SHAREDWORKERCONTEXT.
            (WebCore::WorkerContextExecutionProxy::convertEventTargetToV8Object):
            Added support for SharedWorker and SharedWorkerContext.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@50638 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 6e84410..8c71e94 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,25 @@
+2009-11-08  Drew Wilson  <atwilson at chromium.org>
+
+        Reviewed by Dimitri Glazkov.
+
+        V8 WorkerContextExecutionProxy does not handle SharedWorkers
+        https://bugs.webkit.org/show_bug.cgi?id=31226
+
+        Now checks to see what type of context is active and creates the
+        appropriate wrapper (DEDICATEDWORKERCONTEXT vs SHAREDWORKERCONTEXT).
+
+        Added support for converting to SharedWorkers and SharedWorkerContexts.
+
+        Test: Existing layout tests cover this case (start passing in Chrome).
+
+        * bindings/v8/WorkerContextExecutionProxy.cpp:
+        (WebCore::WorkerContextExecutionProxy::initContextIfNeeded):
+        Now generates the right type of DOMWrapper for SharedWorkerContexts.
+        (WebCore::WorkerContextExecutionProxy::convertToV8Object):
+        Added support for SHAREDWORKERCONTEXT.
+        (WebCore::WorkerContextExecutionProxy::convertEventTargetToV8Object):
+        Added support for SharedWorker and SharedWorkerContext.
+
 2009-11-08  Johnny Ding  <johnnyding.webkit at gmail.com>
 
         Reviewed by Dimitri Glazkov.
diff --git a/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp b/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp
index a7afb38..f17755c 100644
--- a/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp
+++ b/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp
@@ -150,7 +150,8 @@ void WorkerContextExecutionProxy::initContextIfNeeded()
     v8::Handle<v8::String> implicitProtoString = v8::String::New("__proto__");
 
     // Create a new JS object and use it as the prototype for the shadow global object.
-    v8::Handle<v8::Function> workerContextConstructor = V8DOMWrapper::getConstructorForContext(V8ClassIndex::DEDICATEDWORKERCONTEXT, context);
+    V8ClassIndex::V8WrapperType contextType = m_workerContext->isDedicatedWorkerContext() ? V8ClassIndex::DEDICATEDWORKERCONTEXT : V8ClassIndex::SHAREDWORKERCONTEXT;
+    v8::Handle<v8::Function> workerContextConstructor = V8DOMWrapper::getConstructorForContext(contextType, context);
     v8::Local<v8::Object> jsWorkerContext = SafeAllocation::newInstance(workerContextConstructor);
     // Bail out if allocation failed.
     if (jsWorkerContext.IsEmpty()) {
@@ -159,7 +160,7 @@ void WorkerContextExecutionProxy::initContextIfNeeded()
     }
 
     // Wrap the object.
-    V8DOMWrapper::setDOMWrapper(jsWorkerContext, V8ClassIndex::ToInt(V8ClassIndex::DEDICATEDWORKERCONTEXT), m_workerContext);
+    V8DOMWrapper::setDOMWrapper(jsWorkerContext, V8ClassIndex::ToInt(contextType), m_workerContext);
 
     V8DOMWrapper::setJSWrapperForDOMObject(m_workerContext, v8::Persistent<v8::Object>::New(jsWorkerContext));
     m_workerContext->ref();
@@ -174,7 +175,7 @@ v8::Handle<v8::Value> WorkerContextExecutionProxy::convertToV8Object(V8ClassInde
     if (!impl)
         return v8::Null();
 
-    if (type == V8ClassIndex::DEDICATEDWORKERCONTEXT)
+    if (type == V8ClassIndex::DEDICATEDWORKERCONTEXT || type == V8ClassIndex::SHAREDWORKERCONTEXT)
         return convertWorkerContextToV8Object(static_cast<WorkerContext*>(impl));
 
     bool isActiveDomObject = false;
@@ -286,10 +287,18 @@ v8::Handle<v8::Value> WorkerContextExecutionProxy::convertEventTargetToV8Object(
     if (workerContext)
         return convertWorkerContextToV8Object(workerContext);
 
+    SharedWorkerContext* sharedWorkerContext = target->toSharedWorkerContext();
+    if (sharedWorkerContext)
+        return convertWorkerContextToV8Object(sharedWorkerContext);
+
     Worker* worker = target->toWorker();
     if (worker)
         return convertToV8Object(V8ClassIndex::WORKER, worker);
 
+    SharedWorker* sharedWorker = target->toSharedWorker();
+    if (sharedWorker)
+        return convertToV8Object(V8ClassIndex::SHAREDWORKER, sharedWorker);
+
     XMLHttpRequest* xhr = target->toXMLHttpRequest();
     if (xhr)
         return convertToV8Object(V8ClassIndex::XMLHTTPREQUEST, xhr);

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list