Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: third_party/WebKit/Source/modules/serviceworkers/ExtendableMessageEvent.cpp

Issue 1658073002: ServiceWorker: Implement attributes of ExtendableMessageEvent (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698