Changeset 47791 in webkit for trunk/JavaScriptCore/wtf


Ignore:
Timestamp:
Aug 26, 2009, 1:45:24 PM (16 years ago)
Author:
[email protected]
Message:

JavaScriptCore: postMessage() spec now supports sending arrays of ports
https://bugs.webkit.org/show_bug.cgi?id=26902

Reviewed by David Levin.

Added OwnPtr to VectorTraits so we can store OwnPtrs in Vectors.

  • wtf/VectorTraits.h:

WebCore: postMessage() spec now supports sending arrays of ports
https://bugs.webkit.org/show_bug.cgi?id=26902

Reviewed by David Levin.

Added support for sending multiple ports at once via postMessage(). JS bindings will be updated in an upcoming patch.

No new tests, since the new functionality is not exposed via new JS bindings yet, so the old tests suffice.

  • WebCore.xcodeproj/project.pbxproj:

Mark MessagePort.h and MessagePortChannel.h as private since they are used by WebKit now.

  • dom/MessageEvent.cpp:

Updated APIs to support passing MessagePortArrays.
(WebCore::MessageEvent::MessageEvent):
(WebCore::MessageEvent::initMessageEvent):
(WebCore::MessageEvent::messagePort):

  • dom/MessageEvent.h:

(WebCore::MessageEvent::create):
Now accepts a MessagePortArray parameter instead of a single MessagePort.
(WebCore::MessageEvent::ports):

  • dom/MessagePort.cpp:

(WebCore::MessagePort::postMessage):
(WebCore::MessagePort::dispatchMessages):
(WebCore::MessagePort::disentanglePorts):
Added new static function to extract a MessagePortChannelArray from a MessagePortArray.
(WebCore::MessagePort::entanglePorts):
Added new static function to generate a MessagePortArray (entangled ports) from a MessagePortChannelArray.

  • dom/MessagePort.h:
  • dom/MessagePortChannel.cpp:

EventData now contains a MessagePortChannelArray field instead of a single MessagePortChannel.
(WebCore::MessagePortChannel::EventData::create):
(WebCore::MessagePortChannel::EventData::EventData):

  • dom/MessagePortChannel.h:

(WebCore::MessagePortChannel::EventData::channels):

  • page/DOMWindow.cpp:

(WebCore::PostMessageTimer::PostMessageTimer):
(WebCore::PostMessageTimer::event):
(WebCore::DOMWindow::postMessage):
Now accepts a MessagePortArray parameter instead of a single MessagePort.

  • page/DOMWindow.h:
  • workers/DedicatedWorkerContext.cpp:

(WebCore::DedicatedWorkerContext::postMessage):
Now accepts a MessagePortArray parameter instead of a single MessagePort.
(WebCore::DedicatedWorkerContext::dispatchMessage):

  • workers/DedicatedWorkerContext.h:
  • workers/Worker.cpp:

(WebCore::Worker::postMessage):
Now accepts a MessagePortArray parameter instead of a single MessagePort.
(WebCore::Worker::dispatchMessage):

  • workers/Worker.h:
  • workers/WorkerContextProxy.h:
  • workers/WorkerMessagingProxy.cpp:

Updated WorkerObjectProxy and WorkerContextProxy API implementations to support sending multiple MessagePorts.
(WebCore::MessageWorkerContextTask::create):
(WebCore::MessageWorkerContextTask::MessageWorkerContextTask):
(WebCore::MessageWorkerContextTask::performTask):
(WebCore::MessageWorkerTask::create):
(WebCore::MessageWorkerTask::MessageWorkerTask):
(WebCore::MessageWorkerTask::performTask):
(WebCore::WorkerMessagingProxy::postMessageToWorkerObject):
(WebCore::WorkerMessagingProxy::postMessageToWorkerContext):

  • workers/WorkerMessagingProxy.h:
  • workers/WorkerObjectProxy.h:

Updated WorkerObjectProxy and WorkerContextProxy APIs to support sending multiple MessagePorts.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/wtf/VectorTraits.h

    r40399 r47791  
    2222#define WTF_VectorTraits_h
    2323
     24#include "OwnPtr.h"
    2425#include "RefPtr.h"
    2526#include "TypeTraits.h"
     
    7273    };
    7374
    74     // we know RefPtr is simple enough that initializing to 0 and moving with memcpy
     75    // we know OwnPtr and RefPtr are simple enough that initializing to 0 and moving with memcpy
    7576    // (and then not destructing the original) will totally work
    7677    template<typename P>
    7778    struct VectorTraits<RefPtr<P> > : SimpleClassVectorTraits { };
    78    
     79
     80    template<typename P>
     81    struct VectorTraits<OwnPtr<P> > : SimpleClassVectorTraits { };
     82
    7983    template<typename P>
    8084    struct VectorTraits<std::auto_ptr<P> > : SimpleClassVectorTraits { };
Note: See TracChangeset for help on using the changeset viewer.