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

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: address falken's comments 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 // TODO(bashi): Currently we return a copied array because the binding
32 // layer could modify the content of the array while executing JS callbacks.
33 // Avoid copying once we can make sure that the binding layer won't
34 // modify the content.
35 if (m_ports) {
36 isNull = false;
37 return *m_ports;
38 }
39 isNull = false;
falken 2016/02/05 09:58:18 oh, I think this should be isNull = true
nhiroki 2016/02/09 10:20:03 Good catch! Fixed.
40 return MessagePortArray();
41 }
42
43 MessagePortArray ExtendableMessageEvent::ports() const
44 {
45 bool unused;
46 return ports(unused);
47 }
48
49 void ExtendableMessageEvent::source(ClientOrServiceWorkerOrMessagePort& result) const
50 {
51 if (m_sourceAsClient)
52 result = ClientOrServiceWorkerOrMessagePort::fromClient(m_sourceAsClient );
53 else if (m_sourceAsServiceWorker)
54 result = ClientOrServiceWorkerOrMessagePort::fromServiceWorker(m_sourceA sServiceWorker);
55 else if (m_sourceAsMessagePort)
56 result = ClientOrServiceWorkerOrMessagePort::fromMessagePort(m_sourceAsM essagePort);
57 }
58
24 const AtomicString& ExtendableMessageEvent::interfaceName() const 59 const AtomicString& ExtendableMessageEvent::interfaceName() const
25 { 60 {
26 return EventNames::ExtendableMessageEvent; 61 return EventNames::ExtendableMessageEvent;
27 } 62 }
28 63
29 DEFINE_TRACE(ExtendableMessageEvent) 64 DEFINE_TRACE(ExtendableMessageEvent)
30 { 65 {
66 visitor->trace(m_sourceAsClient);
67 visitor->trace(m_sourceAsServiceWorker);
68 visitor->trace(m_sourceAsMessagePort);
69 visitor->trace(m_ports);
31 ExtendableEvent::trace(visitor); 70 ExtendableEvent::trace(visitor);
32 } 71 }
33 72
34 ExtendableMessageEvent::ExtendableMessageEvent() 73 ExtendableMessageEvent::ExtendableMessageEvent()
35 { 74 {
36 } 75 }
37 76
38 ExtendableMessageEvent::ExtendableMessageEvent(const AtomicString& type, const E xtendableMessageEventInit& initializer) 77 ExtendableMessageEvent::ExtendableMessageEvent(const AtomicString& type, const E xtendableMessageEventInit& initializer)
39 : ExtendableMessageEvent(type, initializer, nullptr) 78 : ExtendableMessageEvent(type, initializer, nullptr)
40 { 79 {
41 } 80 }
42 81
43 ExtendableMessageEvent::ExtendableMessageEvent(const AtomicString& type, const E xtendableMessageEventInit& initializer, WaitUntilObserver* observer) 82 ExtendableMessageEvent::ExtendableMessageEvent(const AtomicString& type, const E xtendableMessageEventInit& initializer, WaitUntilObserver* observer)
44 : ExtendableEvent(type, initializer, observer) 83 : ExtendableEvent(type, initializer, observer)
45 { 84 {
46 // TODO(nhiroki): Set attributes (crbug.com/543198). 85 if (initializer.hasData())
86 m_data = initializer.data();
87 if (initializer.hasOrigin())
88 m_origin = initializer.origin();
89 if (initializer.hasSource()) {
90 if (initializer.source().isClient())
91 m_sourceAsClient = initializer.source().getAsClient();
92 else if (initializer.source().isServiceWorker())
93 m_sourceAsServiceWorker = initializer.source().getAsServiceWorker();
94 else if (initializer.source().isMessagePort())
95 m_sourceAsMessagePort = initializer.source().getAsMessagePort();
96 }
97 if (initializer.hasPorts())
98 m_ports = adoptRefWillBeNoop(new MessagePortArray(initializer.ports()));
99 }
100
101 ExtendableMessageEvent::ExtendableMessageEvent(PassRefPtr<SerializedScriptValue> data, const String& origin, PassOwnPtrWillBeRawPtr<MessagePortArray> ports, Wai tUntilObserver* observer)
102 : ExtendableEvent(EventTypeNames::message, ExtendableMessageEventInit(), obs erver)
103 , m_serializedData(data)
104 , m_origin(origin)
105 , m_lastEventId(String())
106 , m_ports(ports)
107 {
108 if (m_serializedData)
109 m_serializedData->registerMemoryAllocatedWithCurrentScriptContext();
47 } 110 }
48 111
49 } // namespace blink 112 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698