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 ExtendableMessageEvent* ExtendableMessageEvent::create( | 9 ExtendableMessageEvent* ExtendableMessageEvent::create( |
10 const AtomicString& type, | 10 const AtomicString& type, |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 if (initializer.hasLastEventId()) | 110 if (initializer.hasLastEventId()) |
111 m_lastEventId = initializer.lastEventId(); | 111 m_lastEventId = initializer.lastEventId(); |
112 if (initializer.hasSource()) { | 112 if (initializer.hasSource()) { |
113 if (initializer.source().isClient()) | 113 if (initializer.source().isClient()) |
114 m_sourceAsClient = initializer.source().getAsClient(); | 114 m_sourceAsClient = initializer.source().getAsClient(); |
115 else if (initializer.source().isServiceWorker()) | 115 else if (initializer.source().isServiceWorker()) |
116 m_sourceAsServiceWorker = initializer.source().getAsServiceWorker(); | 116 m_sourceAsServiceWorker = initializer.source().getAsServiceWorker(); |
117 else if (initializer.source().isMessagePort()) | 117 else if (initializer.source().isMessagePort()) |
118 m_sourceAsMessagePort = initializer.source().getAsMessagePort(); | 118 m_sourceAsMessagePort = initializer.source().getAsMessagePort(); |
119 } | 119 } |
120 if (initializer.hasPorts()) { | 120 if (initializer.hasPorts()) |
121 // TODO(sof): remove the extra same-heap checks once crbug.com/655926 | 121 m_ports = new MessagePortArray(initializer.ports()); |
122 // has been resolved. | |
123 const MessagePortArray& ports = initializer.ports(); | |
124 m_ports = new MessagePortArray; | |
125 m_ports->reserveInitialCapacity(ports.size()); | |
126 for (const auto& port : ports) { | |
127 CHECK(ThreadState::current()->isOnThreadHeap(port.get())); | |
128 m_ports->push_back(port); | |
129 } | |
130 } | |
131 } | 122 } |
132 | 123 |
133 ExtendableMessageEvent::ExtendableMessageEvent( | 124 ExtendableMessageEvent::ExtendableMessageEvent( |
134 PassRefPtr<SerializedScriptValue> data, | 125 PassRefPtr<SerializedScriptValue> data, |
135 const String& origin, | 126 const String& origin, |
136 MessagePortArray* ports, | 127 MessagePortArray* ports, |
137 WaitUntilObserver* observer) | 128 WaitUntilObserver* observer) |
138 : ExtendableEvent(EventTypeNames::message, | 129 : ExtendableEvent(EventTypeNames::message, |
139 ExtendableMessageEventInit(), | 130 ExtendableMessageEventInit(), |
140 observer), | 131 observer), |
141 m_serializedData(data), | 132 m_serializedData(data), |
142 m_origin(origin), | 133 m_origin(origin), |
143 m_lastEventId(String()), | 134 m_lastEventId(String()), |
144 m_ports(ports) { | 135 m_ports(ports) { |
145 if (m_serializedData) | 136 if (m_serializedData) |
146 m_serializedData->registerMemoryAllocatedWithCurrentScriptContext(); | 137 m_serializedData->registerMemoryAllocatedWithCurrentScriptContext(); |
147 | |
148 // TODO(sof): remove the same-heap verification once crbug.com/655926 has | |
149 // been resolved. | |
150 if (m_ports) { | |
151 for (const auto& port : *m_ports) { | |
152 CHECK(ThreadState::current()->isOnThreadHeap(port.get())); | |
153 } | |
154 } | |
155 } | 138 } |
156 | 139 |
157 } // namespace blink | 140 } // namespace blink |
OLD | NEW |