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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 explicit RegistrationCallback(ScriptPromiseResolver* resolver) | 68 explicit RegistrationCallback(ScriptPromiseResolver* resolver) |
69 : m_resolver(resolver) {} | 69 : m_resolver(resolver) {} |
70 ~RegistrationCallback() override {} | 70 ~RegistrationCallback() override {} |
71 | 71 |
72 void onSuccess( | 72 void onSuccess( |
73 std::unique_ptr<WebServiceWorkerRegistration::Handle> handle) override { | 73 std::unique_ptr<WebServiceWorkerRegistration::Handle> handle) override { |
74 if (!m_resolver->getExecutionContext() || | 74 if (!m_resolver->getExecutionContext() || |
75 m_resolver->getExecutionContext()->isContextDestroyed()) | 75 m_resolver->getExecutionContext()->isContextDestroyed()) |
76 return; | 76 return; |
77 m_resolver->resolve(ServiceWorkerRegistration::getOrCreate( | 77 m_resolver->resolve(ServiceWorkerRegistration::getOrCreate( |
78 m_resolver->getExecutionContext(), wrapUnique(handle.release()))); | 78 m_resolver->getExecutionContext(), WTF::wrapUnique(handle.release()))); |
79 } | 79 } |
80 | 80 |
81 void onError(const WebServiceWorkerError& error) override { | 81 void onError(const WebServiceWorkerError& error) override { |
82 if (!m_resolver->getExecutionContext() || | 82 if (!m_resolver->getExecutionContext() || |
83 m_resolver->getExecutionContext()->isContextDestroyed()) | 83 m_resolver->getExecutionContext()->isContextDestroyed()) |
84 return; | 84 return; |
85 ScriptState::Scope scope(m_resolver->getScriptState()); | 85 ScriptState::Scope scope(m_resolver->getScriptState()); |
86 if (error.errorType == WebServiceWorkerError::ErrorTypeType) { | 86 if (error.errorType == WebServiceWorkerError::ErrorTypeType) { |
87 m_resolver->reject(V8ThrowException::createTypeError( | 87 m_resolver->reject(V8ThrowException::createTypeError( |
88 m_resolver->getScriptState()->isolate(), error.message)); | 88 m_resolver->getScriptState()->isolate(), error.message)); |
(...skipping 11 matching lines...) Expand all Loading... |
100 class GetRegistrationCallback : public WebServiceWorkerProvider:: | 100 class GetRegistrationCallback : public WebServiceWorkerProvider:: |
101 WebServiceWorkerGetRegistrationCallbacks { | 101 WebServiceWorkerGetRegistrationCallbacks { |
102 public: | 102 public: |
103 explicit GetRegistrationCallback(ScriptPromiseResolver* resolver) | 103 explicit GetRegistrationCallback(ScriptPromiseResolver* resolver) |
104 : m_resolver(resolver) {} | 104 : m_resolver(resolver) {} |
105 ~GetRegistrationCallback() override {} | 105 ~GetRegistrationCallback() override {} |
106 | 106 |
107 void onSuccess(std::unique_ptr<WebServiceWorkerRegistration::Handle> | 107 void onSuccess(std::unique_ptr<WebServiceWorkerRegistration::Handle> |
108 webPassHandle) override { | 108 webPassHandle) override { |
109 std::unique_ptr<WebServiceWorkerRegistration::Handle> handle = | 109 std::unique_ptr<WebServiceWorkerRegistration::Handle> handle = |
110 wrapUnique(webPassHandle.release()); | 110 WTF::wrapUnique(webPassHandle.release()); |
111 if (!m_resolver->getExecutionContext() || | 111 if (!m_resolver->getExecutionContext() || |
112 m_resolver->getExecutionContext()->isContextDestroyed()) | 112 m_resolver->getExecutionContext()->isContextDestroyed()) |
113 return; | 113 return; |
114 if (!handle) { | 114 if (!handle) { |
115 // Resolve the promise with undefined. | 115 // Resolve the promise with undefined. |
116 m_resolver->resolve(); | 116 m_resolver->resolve(); |
117 return; | 117 return; |
118 } | 118 } |
119 m_resolver->resolve(ServiceWorkerRegistration::getOrCreate( | 119 m_resolver->resolve(ServiceWorkerRegistration::getOrCreate( |
120 m_resolver->getExecutionContext(), std::move(handle))); | 120 m_resolver->getExecutionContext(), std::move(handle))); |
(...skipping 16 matching lines...) Expand all Loading... |
137 public: | 137 public: |
138 explicit GetRegistrationsCallback(ScriptPromiseResolver* resolver) | 138 explicit GetRegistrationsCallback(ScriptPromiseResolver* resolver) |
139 : m_resolver(resolver) {} | 139 : m_resolver(resolver) {} |
140 ~GetRegistrationsCallback() override {} | 140 ~GetRegistrationsCallback() override {} |
141 | 141 |
142 void onSuccess( | 142 void onSuccess( |
143 std::unique_ptr<WebVector<WebServiceWorkerRegistration::Handle*>> | 143 std::unique_ptr<WebVector<WebServiceWorkerRegistration::Handle*>> |
144 webPassRegistrations) override { | 144 webPassRegistrations) override { |
145 Vector<std::unique_ptr<WebServiceWorkerRegistration::Handle>> handles; | 145 Vector<std::unique_ptr<WebServiceWorkerRegistration::Handle>> handles; |
146 std::unique_ptr<WebVector<WebServiceWorkerRegistration::Handle*>> | 146 std::unique_ptr<WebVector<WebServiceWorkerRegistration::Handle*>> |
147 webRegistrations = wrapUnique(webPassRegistrations.release()); | 147 webRegistrations = WTF::wrapUnique(webPassRegistrations.release()); |
148 for (auto& handle : *webRegistrations) { | 148 for (auto& handle : *webRegistrations) { |
149 handles.append(wrapUnique(handle)); | 149 handles.append(WTF::wrapUnique(handle)); |
150 } | 150 } |
151 | 151 |
152 if (!m_resolver->getExecutionContext() || | 152 if (!m_resolver->getExecutionContext() || |
153 m_resolver->getExecutionContext()->isContextDestroyed()) | 153 m_resolver->getExecutionContext()->isContextDestroyed()) |
154 return; | 154 return; |
155 m_resolver->resolve( | 155 m_resolver->resolve( |
156 ServiceWorkerRegistrationArray::take(m_resolver.get(), &handles)); | 156 ServiceWorkerRegistrationArray::take(m_resolver.get(), &handles)); |
157 } | 157 } |
158 | 158 |
159 void onError(const WebServiceWorkerError& error) override { | 159 void onError(const WebServiceWorkerError& error) override { |
(...skipping 14 matching lines...) Expand all Loading... |
174 public: | 174 public: |
175 explicit GetRegistrationForReadyCallback(ReadyProperty* ready) | 175 explicit GetRegistrationForReadyCallback(ReadyProperty* ready) |
176 : m_ready(ready) {} | 176 : m_ready(ready) {} |
177 ~GetRegistrationForReadyCallback() override {} | 177 ~GetRegistrationForReadyCallback() override {} |
178 | 178 |
179 void onSuccess( | 179 void onSuccess( |
180 std::unique_ptr<WebServiceWorkerRegistration::Handle> handle) override { | 180 std::unique_ptr<WebServiceWorkerRegistration::Handle> handle) override { |
181 ASSERT(m_ready->getState() == ReadyProperty::Pending); | 181 ASSERT(m_ready->getState() == ReadyProperty::Pending); |
182 | 182 |
183 if (m_ready->getExecutionContext() && | 183 if (m_ready->getExecutionContext() && |
184 !m_ready->getExecutionContext()->isContextDestroyed()) | 184 !m_ready->getExecutionContext()->isContextDestroyed()) { |
185 m_ready->resolve(ServiceWorkerRegistration::getOrCreate( | 185 m_ready->resolve(ServiceWorkerRegistration::getOrCreate( |
186 m_ready->getExecutionContext(), wrapUnique(handle.release()))); | 186 m_ready->getExecutionContext(), WTF::wrapUnique(handle.release()))); |
| 187 } |
187 } | 188 } |
188 | 189 |
189 private: | 190 private: |
190 Persistent<ReadyProperty> m_ready; | 191 Persistent<ReadyProperty> m_ready; |
191 WTF_MAKE_NONCOPYABLE(GetRegistrationForReadyCallback); | 192 WTF_MAKE_NONCOPYABLE(GetRegistrationForReadyCallback); |
192 }; | 193 }; |
193 | 194 |
194 ServiceWorkerContainer* ServiceWorkerContainer::create( | 195 ServiceWorkerContainer* ServiceWorkerContainer::create( |
195 ExecutionContext* executionContext) { | 196 ExecutionContext* executionContext) { |
196 return new ServiceWorkerContainer(executionContext); | 197 return new ServiceWorkerContainer(executionContext); |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
351 scriptURL.removeFragmentIdentifier(); | 352 scriptURL.removeFragmentIdentifier(); |
352 | 353 |
353 KURL patternURL; | 354 KURL patternURL; |
354 if (options.scope().isNull()) | 355 if (options.scope().isNull()) |
355 patternURL = KURL(scriptURL, "./"); | 356 patternURL = KURL(scriptURL, "./"); |
356 else | 357 else |
357 patternURL = enteredExecutionContext(scriptState->isolate()) | 358 patternURL = enteredExecutionContext(scriptState->isolate()) |
358 ->completeURL(options.scope()); | 359 ->completeURL(options.scope()); |
359 | 360 |
360 registerServiceWorkerImpl(executionContext, scriptURL, patternURL, | 361 registerServiceWorkerImpl(executionContext, scriptURL, patternURL, |
361 makeUnique<RegistrationCallback>(resolver)); | 362 WTF::makeUnique<RegistrationCallback>(resolver)); |
362 | 363 |
363 return promise; | 364 return promise; |
364 } | 365 } |
365 | 366 |
366 ScriptPromise ServiceWorkerContainer::getRegistration( | 367 ScriptPromise ServiceWorkerContainer::getRegistration( |
367 ScriptState* scriptState, | 368 ScriptState* scriptState, |
368 const String& documentURL) { | 369 const String& documentURL) { |
369 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); | 370 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
370 ScriptPromise promise = resolver->promise(); | 371 ScriptPromise promise = resolver->promise(); |
371 | 372 |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 } | 487 } |
487 | 488 |
488 return m_ready->promise(callerState->world()); | 489 return m_ready->promise(callerState->world()); |
489 } | 490 } |
490 | 491 |
491 void ServiceWorkerContainer::setController( | 492 void ServiceWorkerContainer::setController( |
492 std::unique_ptr<WebServiceWorker::Handle> handle, | 493 std::unique_ptr<WebServiceWorker::Handle> handle, |
493 bool shouldNotifyControllerChange) { | 494 bool shouldNotifyControllerChange) { |
494 if (!getExecutionContext()) | 495 if (!getExecutionContext()) |
495 return; | 496 return; |
496 m_controller = | 497 m_controller = ServiceWorker::from(getExecutionContext(), |
497 ServiceWorker::from(getExecutionContext(), wrapUnique(handle.release())); | 498 WTF::wrapUnique(handle.release())); |
498 if (m_controller) | 499 if (m_controller) |
499 UseCounter::count(getExecutionContext(), | 500 UseCounter::count(getExecutionContext(), |
500 UseCounter::ServiceWorkerControlledPage); | 501 UseCounter::ServiceWorkerControlledPage); |
501 if (shouldNotifyControllerChange) | 502 if (shouldNotifyControllerChange) |
502 dispatchEvent(Event::create(EventTypeNames::controllerchange)); | 503 dispatchEvent(Event::create(EventTypeNames::controllerchange)); |
503 } | 504 } |
504 | 505 |
505 void ServiceWorkerContainer::dispatchMessageEvent( | 506 void ServiceWorkerContainer::dispatchMessageEvent( |
506 std::unique_ptr<WebServiceWorker::Handle> handle, | 507 std::unique_ptr<WebServiceWorker::Handle> handle, |
507 const WebString& message, | 508 const WebString& message, |
508 const WebMessagePortChannelArray& webChannels) { | 509 const WebMessagePortChannelArray& webChannels) { |
509 if (!getExecutionContext() || !getExecutionContext()->executingWindow()) | 510 if (!getExecutionContext() || !getExecutionContext()->executingWindow()) |
510 return; | 511 return; |
511 | 512 |
512 MessagePortArray* ports = | 513 MessagePortArray* ports = |
513 MessagePort::toMessagePortArray(getExecutionContext(), webChannels); | 514 MessagePort::toMessagePortArray(getExecutionContext(), webChannels); |
514 RefPtr<SerializedScriptValue> value = SerializedScriptValue::create(message); | 515 RefPtr<SerializedScriptValue> value = SerializedScriptValue::create(message); |
515 ServiceWorker* source = | 516 ServiceWorker* source = ServiceWorker::from( |
516 ServiceWorker::from(getExecutionContext(), wrapUnique(handle.release())); | 517 getExecutionContext(), WTF::wrapUnique(handle.release())); |
517 dispatchEvent(ServiceWorkerMessageEvent::create( | 518 dispatchEvent(ServiceWorkerMessageEvent::create( |
518 ports, value, source, | 519 ports, value, source, |
519 getExecutionContext()->getSecurityOrigin()->toString())); | 520 getExecutionContext()->getSecurityOrigin()->toString())); |
520 } | 521 } |
521 | 522 |
522 const AtomicString& ServiceWorkerContainer::interfaceName() const { | 523 const AtomicString& ServiceWorkerContainer::interfaceName() const { |
523 return EventTargetNames::ServiceWorkerContainer; | 524 return EventTargetNames::ServiceWorkerContainer; |
524 } | 525 } |
525 | 526 |
526 ServiceWorkerContainer::ServiceWorkerContainer( | 527 ServiceWorkerContainer::ServiceWorkerContainer( |
527 ExecutionContext* executionContext) | 528 ExecutionContext* executionContext) |
528 : ContextLifecycleObserver(executionContext), m_provider(0) { | 529 : ContextLifecycleObserver(executionContext), m_provider(0) { |
529 if (!executionContext) | 530 if (!executionContext) |
530 return; | 531 return; |
531 | 532 |
532 if (ServiceWorkerContainerClient* client = | 533 if (ServiceWorkerContainerClient* client = |
533 ServiceWorkerContainerClient::from(executionContext)) { | 534 ServiceWorkerContainerClient::from(executionContext)) { |
534 m_provider = client->provider(); | 535 m_provider = client->provider(); |
535 if (m_provider) | 536 if (m_provider) |
536 m_provider->setClient(this); | 537 m_provider->setClient(this); |
537 } | 538 } |
538 } | 539 } |
539 | 540 |
540 } // namespace blink | 541 } // namespace blink |
OLD | NEW |