Chromium Code Reviews| Index: Source/modules/serviceworkers/ServiceWorkerMessageEvent.cpp |
| diff --git a/Source/modules/serviceworkers/ServiceWorkerMessageEvent.cpp b/Source/modules/serviceworkers/ServiceWorkerMessageEvent.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7bac2f99595d60e762e108c7d3fde20113702349 |
| --- /dev/null |
| +++ b/Source/modules/serviceworkers/ServiceWorkerMessageEvent.cpp |
| @@ -0,0 +1,72 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "config.h" |
| +#include "modules/serviceworkers/ServiceWorkerMessageEvent.h" |
| + |
| +namespace blink { |
| + |
| +ServiceWorkerMessageEvent::ServiceWorkerMessageEvent() |
| +{ |
| +} |
| + |
| +ServiceWorkerMessageEvent::ServiceWorkerMessageEvent(const AtomicString& type, const ServiceWorkerMessageEventInit& initializer) |
| + : Event(type, initializer) |
| +{ |
| + if (initializer.hasOrigin()) |
| + m_origin = initializer.origin(); |
| + if (initializer.hasLastEventId()) |
| + m_lastEventId = initializer.lastEventId(); |
| + if (initializer.hasSource()) { |
| + if (initializer.source().isServiceWorker()) |
| + m_sourceAsServiceWorker = initializer.source().getAsServiceWorker(); |
| + if (initializer.source().isMessagePort()) |
|
haraken
2015/06/25 04:18:48
else if
xiang
2015/06/29 02:32:24
Done.
|
| + m_sourceAsMessagePort = initializer.source().getAsMessagePort(); |
| + } |
| + if (initializer.hasPorts()) |
| + m_ports = adoptPtrWillBeNoop(new MessagePortArray(initializer.ports())); |
| + if (initializer.hasData()) |
| + m_data = initializer.data(); |
| +} |
| + |
| +ServiceWorkerMessageEvent::ServiceWorkerMessageEvent(PassRefPtr<SerializedScriptValue> data, const String& origin, const String& lastEventId, PassRefPtrWillBeRawPtr<ServiceWorker> source, PassOwnPtrWillBeRawPtr<MessagePortArray> ports) |
| + : Event(EventTypeNames::message, false, false) |
| + , m_serializedData(data) |
| + , m_origin(origin) |
| + , m_lastEventId(lastEventId) |
| + , m_sourceAsServiceWorker(source) |
| + , m_ports(ports) |
| +{ |
| + if (m_serializedData) |
| + m_serializedData->registerMemoryAllocatedWithCurrentScriptContext(); |
| +} |
| + |
| +ServiceWorkerMessageEvent::~ServiceWorkerMessageEvent() |
| +{ |
| +} |
| + |
| +void ServiceWorkerMessageEvent::source(ServiceWorkerOrMessagePort& result) const |
| +{ |
| + if (m_sourceAsServiceWorker) |
| + result = ServiceWorkerOrMessagePort::fromServiceWorker(m_sourceAsServiceWorker); |
| + else if (m_sourceAsMessagePort) |
| + result = ServiceWorkerOrMessagePort::fromMessagePort(m_sourceAsMessagePort); |
| +} |
| + |
| +const AtomicString& ServiceWorkerMessageEvent::interfaceName() const |
| +{ |
| + return EventNames::ServiceWorkerMessageEvent; |
| +} |
| + |
| +DEFINE_TRACE(ServiceWorkerMessageEvent) |
| +{ |
| + visitor->trace(m_sourceAsServiceWorker); |
| + visitor->trace(m_sourceAsMessagePort); |
| +#if ENABLE(OILPAN) |
| + visitor->trace(m_ports); |
| +#endif |
| + Event::trace(visitor); |
| +} |
| + |
| +} // namespace blink |