Changeset 50638 in webkit


Ignore:
Timestamp:
Nov 8, 2009 10:00:02 PM (14 years ago)
Author:
eric@webkit.org
Message:

2009-11-08 Drew Wilson <atwilson@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.
Location:
trunk/WebCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r50637 r50638  
     12009-11-08  Drew Wilson  <atwilson@chromium.org>
     2
     3        Reviewed by Dimitri Glazkov.
     4
     5        V8 WorkerContextExecutionProxy does not handle SharedWorkers
     6        https://bugs.webkit.org/show_bug.cgi?id=31226
     7
     8        Now checks to see what type of context is active and creates the
     9        appropriate wrapper (DEDICATEDWORKERCONTEXT vs SHAREDWORKERCONTEXT).
     10
     11        Added support for converting to SharedWorkers and SharedWorkerContexts.
     12
     13        Test: Existing layout tests cover this case (start passing in Chrome).
     14
     15        * bindings/v8/WorkerContextExecutionProxy.cpp:
     16        (WebCore::WorkerContextExecutionProxy::initContextIfNeeded):
     17        Now generates the right type of DOMWrapper for SharedWorkerContexts.
     18        (WebCore::WorkerContextExecutionProxy::convertToV8Object):
     19        Added support for SHAREDWORKERCONTEXT.
     20        (WebCore::WorkerContextExecutionProxy::convertEventTargetToV8Object):
     21        Added support for SharedWorker and SharedWorkerContext.
     22
    1232009-11-08  Johnny Ding  <johnnyding.webkit@gmail.com>
    224
  • trunk/WebCore/bindings/v8/WorkerContextExecutionProxy.cpp

    r50347 r50638  
    151151
    152152    // Create a new JS object and use it as the prototype for the shadow global object.
    153     v8::Handle<v8::Function> workerContextConstructor = V8DOMWrapper::getConstructorForContext(V8ClassIndex::DEDICATEDWORKERCONTEXT, context);
     153    V8ClassIndex::V8WrapperType contextType = m_workerContext->isDedicatedWorkerContext() ? V8ClassIndex::DEDICATEDWORKERCONTEXT : V8ClassIndex::SHAREDWORKERCONTEXT;
     154    v8::Handle<v8::Function> workerContextConstructor = V8DOMWrapper::getConstructorForContext(contextType, context);
    154155    v8::Local<v8::Object> jsWorkerContext = SafeAllocation::newInstance(workerContextConstructor);
    155156    // Bail out if allocation failed.
     
    160161
    161162    // Wrap the object.
    162     V8DOMWrapper::setDOMWrapper(jsWorkerContext, V8ClassIndex::ToInt(V8ClassIndex::DEDICATEDWORKERCONTEXT), m_workerContext);
     163    V8DOMWrapper::setDOMWrapper(jsWorkerContext, V8ClassIndex::ToInt(contextType), m_workerContext);
    163164
    164165    V8DOMWrapper::setJSWrapperForDOMObject(m_workerContext, v8::Persistent<v8::Object>::New(jsWorkerContext));
     
    175176        return v8::Null();
    176177
    177     if (type == V8ClassIndex::DEDICATEDWORKERCONTEXT)
     178    if (type == V8ClassIndex::DEDICATEDWORKERCONTEXT || type == V8ClassIndex::SHAREDWORKERCONTEXT)
    178179        return convertWorkerContextToV8Object(static_cast<WorkerContext*>(impl));
    179180
     
    287288        return convertWorkerContextToV8Object(workerContext);
    288289
     290    SharedWorkerContext* sharedWorkerContext = target->toSharedWorkerContext();
     291    if (sharedWorkerContext)
     292        return convertWorkerContextToV8Object(sharedWorkerContext);
     293
    289294    Worker* worker = target->toWorker();
    290295    if (worker)
    291296        return convertToV8Object(V8ClassIndex::WORKER, worker);
     297
     298    SharedWorker* sharedWorker = target->toSharedWorker();
     299    if (sharedWorker)
     300        return convertToV8Object(V8ClassIndex::SHAREDWORKER, sharedWorker);
    292301
    293302    XMLHttpRequest* xhr = target->toXMLHttpRequest();
Note: See TracChangeset for help on using the changeset viewer.