Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "modules/serviceworkers/ExtendableMessageEvent.h" | 5 #include "modules/serviceworkers/ExtendableMessageEvent.h" |
| 6 | 6 |
| 7 namespace blink { | 7 namespace blink { |
| 8 | 8 |
| 9 PassRefPtrWillBeRawPtr<ExtendableMessageEvent> ExtendableMessageEvent::create() | 9 PassRefPtrWillBeRawPtr<ExtendableMessageEvent> ExtendableMessageEvent::create() |
| 10 { | 10 { |
| 11 return adoptRefWillBeNoop(new ExtendableMessageEvent); | 11 return adoptRefWillBeNoop(new ExtendableMessageEvent); |
| 12 } | 12 } |
| 13 | 13 |
| 14 PassRefPtrWillBeRawPtr<ExtendableMessageEvent> ExtendableMessageEvent::create(co nst AtomicString& type, const ExtendableMessageEventInit& initializer) | 14 PassRefPtrWillBeRawPtr<ExtendableMessageEvent> ExtendableMessageEvent::create(co nst AtomicString& type, const ExtendableMessageEventInit& initializer) |
| 15 { | 15 { |
| 16 return adoptRefWillBeNoop(new ExtendableMessageEvent(type, initializer)); | 16 return adoptRefWillBeNoop(new ExtendableMessageEvent(type, initializer)); |
| 17 } | 17 } |
| 18 | 18 |
| 19 PassRefPtrWillBeRawPtr<ExtendableMessageEvent> ExtendableMessageEvent::create(co nst AtomicString& type, const ExtendableMessageEventInit& initializer, WaitUntil Observer* observer) | 19 PassRefPtrWillBeRawPtr<ExtendableMessageEvent> ExtendableMessageEvent::create(co nst AtomicString& type, const ExtendableMessageEventInit& initializer, WaitUntil Observer* observer) |
| 20 { | 20 { |
| 21 return adoptRefWillBeNoop(new ExtendableMessageEvent(type, initializer, obse rver)); | 21 return adoptRefWillBeNoop(new ExtendableMessageEvent(type, initializer, obse rver)); |
| 22 } | 22 } |
| 23 | 23 |
| 24 PassRefPtrWillBeRawPtr<ExtendableMessageEvent> ExtendableMessageEvent::create(Pa ssRefPtr<SerializedScriptValue> data, const String& origin, PassOwnPtrWillBeRawP tr<MessagePortArray> ports, WaitUntilObserver* observer) | |
| 25 { | |
| 26 return adoptRefWillBeNoop(new ExtendableMessageEvent(data, origin, ports, ob server)); | |
| 27 } | |
| 28 | |
| 29 MessagePortArray ExtendableMessageEvent::ports(bool& isNull) const | |
| 30 { | |
| 31 if (m_ports) { | |
| 32 isNull = false; | |
| 33 return *m_ports; | |
| 34 } | |
| 35 isNull = false; | |
| 36 return MessagePortArray(); | |
| 37 } | |
| 38 | |
| 39 MessagePortArray ExtendableMessageEvent::ports() const | |
| 40 { | |
| 41 bool unused; | |
| 42 return ports(unused); | |
| 43 } | |
|
falken
2016/02/05 02:28:52
Ah, I see the ports() code came from MessageEvent.
nhiroki
2016/02/05 09:15:37
Done (Just copied the comment from MessageEvent.cp
falken
2016/02/05 09:58:18
OK with me. I also noticed the snippet is in Servi
nhiroki
2016/02/09 10:20:03
Done.
| |
| 44 | |
| 45 void ExtendableMessageEvent::source(ClientOrServiceWorkerOrMessagePort& result) const | |
| 46 { | |
| 47 if (m_sourceAsClient) | |
| 48 result = ClientOrServiceWorkerOrMessagePort::fromClient(m_sourceAsClient ); | |
| 49 else if (m_sourceAsServiceWorker) | |
| 50 result = ClientOrServiceWorkerOrMessagePort::fromServiceWorker(m_sourceA sServiceWorker); | |
| 51 else if (m_sourceAsMessagePort) | |
| 52 result = ClientOrServiceWorkerOrMessagePort::fromMessagePort(m_sourceAsM essagePort); | |
|
falken
2016/02/05 02:28:52
else NOTREACHED?
nhiroki
2016/02/05 09:15:37
I think the case actually happens when the event i
falken
2016/02/05 09:58:18
Hm, I'm not sure how the bindings works but I'm wo
nhiroki
2016/02/09 10:20:03
According to the spec, null is the expected value:
| |
| 53 } | |
| 54 | |
| 24 const AtomicString& ExtendableMessageEvent::interfaceName() const | 55 const AtomicString& ExtendableMessageEvent::interfaceName() const |
| 25 { | 56 { |
| 26 return EventNames::ExtendableMessageEvent; | 57 return EventNames::ExtendableMessageEvent; |
| 27 } | 58 } |
| 28 | 59 |
| 29 DEFINE_TRACE(ExtendableMessageEvent) | 60 DEFINE_TRACE(ExtendableMessageEvent) |
| 30 { | 61 { |
| 62 visitor->trace(m_sourceAsClient); | |
| 63 visitor->trace(m_sourceAsServiceWorker); | |
| 64 visitor->trace(m_sourceAsMessagePort); | |
| 65 visitor->trace(m_ports); | |
| 31 ExtendableEvent::trace(visitor); | 66 ExtendableEvent::trace(visitor); |
| 32 } | 67 } |
| 33 | 68 |
| 34 ExtendableMessageEvent::ExtendableMessageEvent() | 69 ExtendableMessageEvent::ExtendableMessageEvent() |
| 35 { | 70 { |
| 36 } | 71 } |
| 37 | 72 |
| 38 ExtendableMessageEvent::ExtendableMessageEvent(const AtomicString& type, const E xtendableMessageEventInit& initializer) | 73 ExtendableMessageEvent::ExtendableMessageEvent(const AtomicString& type, const E xtendableMessageEventInit& initializer) |
| 39 : ExtendableMessageEvent(type, initializer, nullptr) | 74 : ExtendableMessageEvent(type, initializer, nullptr) |
| 40 { | 75 { |
| 41 } | 76 } |
| 42 | 77 |
| 43 ExtendableMessageEvent::ExtendableMessageEvent(const AtomicString& type, const E xtendableMessageEventInit& initializer, WaitUntilObserver* observer) | 78 ExtendableMessageEvent::ExtendableMessageEvent(const AtomicString& type, const E xtendableMessageEventInit& initializer, WaitUntilObserver* observer) |
| 44 : ExtendableEvent(type, initializer, observer) | 79 : ExtendableEvent(type, initializer, observer) |
| 45 { | 80 { |
| 46 // TODO(nhiroki): Set attributes (crbug.com/543198). | 81 if (initializer.hasData()) |
| 82 m_data = initializer.data(); | |
| 83 if (initializer.hasOrigin()) | |
| 84 m_origin = initializer.origin(); | |
| 85 if (initializer.hasSource()) { | |
| 86 if (initializer.source().isClient()) | |
| 87 m_sourceAsClient = initializer.source().getAsClient(); | |
| 88 else if (initializer.source().isServiceWorker()) | |
| 89 m_sourceAsServiceWorker = initializer.source().getAsServiceWorker(); | |
| 90 else if (initializer.source().isMessagePort()) | |
| 91 m_sourceAsMessagePort = initializer.source().getAsMessagePort(); | |
| 92 } | |
| 93 if (initializer.hasPorts()) | |
| 94 m_ports = adoptRefWillBeNoop(new MessagePortArray(initializer.ports())); | |
| 95 } | |
| 96 | |
| 97 ExtendableMessageEvent::ExtendableMessageEvent(PassRefPtr<SerializedScriptValue> data, const String& origin, PassOwnPtrWillBeRawPtr<MessagePortArray> ports, Wai tUntilObserver* observer) | |
| 98 : ExtendableEvent(EventTypeNames::message, ExtendableMessageEventInit(), obs erver) | |
| 99 , m_serializedData(data) | |
| 100 , m_origin(origin) | |
| 101 , m_lastEventId(String()) | |
| 102 , m_ports(ports) | |
| 103 { | |
| 104 if (m_serializedData) | |
| 105 m_serializedData->registerMemoryAllocatedWithCurrentScriptContext(); | |
| 47 } | 106 } |
| 48 | 107 |
| 49 } // namespace blink | 108 } // namespace blink |
| OLD | NEW |