OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 { | 112 { |
113 if (m_provider) { | 113 if (m_provider) { |
114 m_provider->setClient(0); | 114 m_provider->setClient(0); |
115 m_provider = nullptr; | 115 m_provider = nullptr; |
116 } | 116 } |
117 } | 117 } |
118 | 118 |
119 DEFINE_TRACE(ServiceWorkerContainer) | 119 DEFINE_TRACE(ServiceWorkerContainer) |
120 { | 120 { |
121 visitor->trace(m_controller); | 121 visitor->trace(m_controller); |
122 visitor->trace(m_readyRegistration); | |
123 visitor->trace(m_ready); | 122 visitor->trace(m_ready); |
124 RefCountedGarbageCollectedEventTargetWithInlineData<ServiceWorkerContainer>:
:trace(visitor); | 123 RefCountedGarbageCollectedEventTargetWithInlineData<ServiceWorkerContainer>:
:trace(visitor); |
125 ContextLifecycleObserver::trace(visitor); | 124 ContextLifecycleObserver::trace(visitor); |
126 } | 125 } |
127 | 126 |
128 ScriptPromise ServiceWorkerContainer::registerServiceWorker(ScriptState* scriptS
tate, const String& url, const RegistrationOptions& options) | 127 ScriptPromise ServiceWorkerContainer::registerServiceWorker(ScriptState* scriptS
tate, const String& url, const RegistrationOptions& options) |
129 { | 128 { |
130 ASSERT(RuntimeEnabledFeatures::serviceWorkerEnabled()); | 129 ASSERT(RuntimeEnabledFeatures::serviceWorkerEnabled()); |
131 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::
create(scriptState); | 130 RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::
create(scriptState); |
132 ScriptPromise promise = resolver->promise(); | 131 ScriptPromise promise = resolver->promise(); |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
272 { | 271 { |
273 if (!executionContext()) { | 272 if (!executionContext()) { |
274 deleteIfNoExistingOwner(serviceWorker); | 273 deleteIfNoExistingOwner(serviceWorker); |
275 return; | 274 return; |
276 } | 275 } |
277 m_controller = ServiceWorker::from(executionContext(), serviceWorker); | 276 m_controller = ServiceWorker::from(executionContext(), serviceWorker); |
278 if (shouldNotifyControllerChange) | 277 if (shouldNotifyControllerChange) |
279 dispatchEvent(Event::create(EventTypeNames::controllerchange)); | 278 dispatchEvent(Event::create(EventTypeNames::controllerchange)); |
280 } | 279 } |
281 | 280 |
282 // FIXME: Remove this after Chrome side CL landed. | |
283 void ServiceWorkerContainer::setReadyRegistration(WebServiceWorkerRegistration*
registration) | |
284 { | |
285 if (!executionContext()) { | |
286 ServiceWorkerRegistration::dispose(registration); | |
287 return; | |
288 } | |
289 | |
290 ServiceWorkerRegistration* readyRegistration = ServiceWorkerRegistration::fr
om(executionContext(), registration); | |
291 ASSERT(readyRegistration->active()); | |
292 | |
293 if (m_readyRegistration) { | |
294 ASSERT(m_readyRegistration == readyRegistration); | |
295 ASSERT(m_ready->state() == ReadyProperty::Resolved); | |
296 return; | |
297 } | |
298 | |
299 m_readyRegistration = readyRegistration; | |
300 m_ready->resolve(readyRegistration); | |
301 } | |
302 | |
303 void ServiceWorkerContainer::dispatchMessageEvent(const WebString& message, cons
t WebMessagePortChannelArray& webChannels) | 281 void ServiceWorkerContainer::dispatchMessageEvent(const WebString& message, cons
t WebMessagePortChannelArray& webChannels) |
304 { | 282 { |
305 if (!executionContext() || !executionContext()->executingWindow()) | 283 if (!executionContext() || !executionContext()->executingWindow()) |
306 return; | 284 return; |
307 | 285 |
308 OwnPtrWillBeRawPtr<MessagePortArray> ports = MessagePort::toMessagePortArray
(executionContext(), webChannels); | 286 OwnPtrWillBeRawPtr<MessagePortArray> ports = MessagePort::toMessagePortArray
(executionContext(), webChannels); |
309 RefPtr<SerializedScriptValue> value = SerializedScriptValueFactory::instance
().createFromWire(message); | 287 RefPtr<SerializedScriptValue> value = SerializedScriptValueFactory::instance
().createFromWire(message); |
310 executionContext()->executingWindow()->dispatchEvent(MessageEvent::create(po
rts.release(), value)); | 288 executionContext()->executingWindow()->dispatchEvent(MessageEvent::create(po
rts.release(), value)); |
311 } | 289 } |
312 | 290 |
(...skipping 22 matching lines...) Expand all Loading... |
335 } | 313 } |
336 | 314 |
337 ServiceWorkerContainer::ServiceWorkerContainer(ExecutionContext* executionContex
t) | 315 ServiceWorkerContainer::ServiceWorkerContainer(ExecutionContext* executionContex
t) |
338 : ContextLifecycleObserver(executionContext) | 316 : ContextLifecycleObserver(executionContext) |
339 , m_provider(0) | 317 , m_provider(0) |
340 { | 318 { |
341 | 319 |
342 if (!executionContext) | 320 if (!executionContext) |
343 return; | 321 return; |
344 | 322 |
345 // FIXME: Remove this after Chrome side CL landed. | |
346 m_ready = createReadyProperty(); | |
347 | |
348 if (ServiceWorkerContainerClient* client = ServiceWorkerContainerClient::fro
m(executionContext)) { | 323 if (ServiceWorkerContainerClient* client = ServiceWorkerContainerClient::fro
m(executionContext)) { |
349 m_provider = client->provider(); | 324 m_provider = client->provider(); |
350 if (m_provider) | 325 if (m_provider) |
351 m_provider->setClient(this); | 326 m_provider->setClient(this); |
352 } | 327 } |
353 } | 328 } |
354 | 329 |
355 } // namespace blink | 330 } // namespace blink |
OLD | NEW |