Changeset 224000 in webkit


Ignore:
Timestamp:
Oct 25, 2017 7:57:08 PM (6 years ago)
Author:
Chris Dumez
Message:

messageEvent.source can also be a ServiceWorker
https://bugs.webkit.org/show_bug.cgi?id=178839

Reviewed by Brady Eidson.

messageEvent.source can also be a ServiceWorker:

This enables calling postMessage() from a ServiceWorker via Bug 178794.

  • dom/MessageEvent.cpp:

(WebCore::MessageEvent::source const): Deleted.

  • dom/MessageEvent.h:
  • dom/MessageEvent.idl:
Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r223999 r224000  
     12017-10-25  Chris Dumez  <cdumez@apple.com>
     2
     3        messageEvent.source can also be a ServiceWorker
     4        https://bugs.webkit.org/show_bug.cgi?id=178839
     5
     6        Reviewed by Brady Eidson.
     7
     8        messageEvent.source can also be a ServiceWorker:
     9        - https://html.spec.whatwg.org/multipage/comms.html#messageeventsource
     10
     11        This enables calling postMessage() from a ServiceWorker via Bug 178794.
     12
     13        * dom/MessageEvent.cpp:
     14        (WebCore::MessageEvent::source const): Deleted.
     15        * dom/MessageEvent.h:
     16        * dom/MessageEvent.idl:
     17
    1182017-10-25  Ryosuke Niwa  <rniwa@webkit.org>
    219
  • trunk/Source/WebCore/dom/MessageEvent.cpp

    r223849 r224000  
    151151}
    152152
    153 EventTarget* MessageEvent::source() const
    154 {
    155     if (!m_source)
    156         return nullptr;
    157 
    158     return WTF::switchOn(m_source.value(),
    159         [] (const RefPtr<DOMWindow>& window) -> EventTarget* { return const_cast<DOMWindow*>(window.get()); },
    160         [] (const RefPtr<MessagePort>& messagePort) -> EventTarget* { return const_cast<MessagePort*>(messagePort.get()); }
    161     );
    162 }
    163 
    164153RefPtr<SerializedScriptValue> MessageEvent::trySerializeData(ExecState* exec)
    165154{
  • trunk/Source/WebCore/dom/MessageEvent.h

    r210216 r224000  
    3232#include "MessagePort.h"
    3333#include "SerializedScriptValue.h"
     34#include "ServiceWorker.h"
    3435#include <bindings/ScriptValue.h>
    3536#include <wtf/Variant.h>
     
    3940class Blob;
    4041
     42#if ENABLE(SERVICE_WORKER)
     43using MessageEventSource = Variant<RefPtr<DOMWindow>, RefPtr<MessagePort>, RefPtr<ServiceWorker>>;
     44#else
    4145using MessageEventSource = Variant<RefPtr<DOMWindow>, RefPtr<MessagePort>>;
     46#endif
    4247
    4348class MessageEvent final : public Event {
     
    6570    const String& origin() const { return m_origin; }
    6671    const String& lastEventId() const { return m_lastEventId; }
    67     EventTarget* source() const;
     72    const std::optional<MessageEventSource>& source() const { return m_source; }
    6873    const Vector<RefPtr<MessagePort>>& ports() const { return m_ports; }
    6974
  • trunk/Source/WebCore/dom/MessageEvent.idl

    r213543 r224000  
    2727 */
    2828
     29#if defined(ENABLE_SERVICE_WORKER) && ENABLE_SERVICE_WORKER
     30typedef (DOMWindow or MessagePort or ServiceWorker) MessageEventSource;
     31#else
     32typedef (DOMWindow or MessagePort) MessageEventSource;
     33#endif
     34
    2935[
    3036    Constructor(DOMString type, optional MessageEventInit eventInitDict),
     
    3440    readonly attribute USVString origin;
    3541    readonly attribute DOMString lastEventId;
    36     readonly attribute EventTarget? source;
     42    readonly attribute MessageEventSource? source;
    3743    [CachedAttribute, CustomGetter] readonly attribute any data;
    3844    readonly attribute FrozenArray<MessagePort> ports;
    3945
    4046    [CallWith=ScriptState] void initMessageEvent(DOMString type, optional boolean bubbles = false, optional boolean cancelable = false,
    41         optional any data = null, optional USVString originArg = "", optional DOMString lastEventId = "", optional (DOMWindow or MessagePort)? source = null,
     47        optional any data = null, optional USVString originArg = "", optional DOMString lastEventId = "", optional MessageEventSource? source = null,
    4248        optional sequence<MessagePort> messagePorts = []);
    4349};
     
    4753      USVString origin = "";
    4854      DOMString lastEventId = "";
    49       (DOMWindow or MessagePort)? source = null;
     55      MessageEventSource? source = null;
    5056      sequence<MessagePort> ports = [];
    5157};
Note: See TracChangeset for help on using the changeset viewer.