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/NavigationPreloadManager.h" | 5 #include "modules/serviceworkers/NavigationPreloadManager.h" |
6 | 6 |
7 #include "core/dom/DOMException.h" | 7 #include "core/dom/DOMException.h" |
8 #include "modules/serviceworkers/NavigationPreloadCallbacks.h" | 8 #include "modules/serviceworkers/NavigationPreloadCallbacks.h" |
9 #include "modules/serviceworkers/ServiceWorkerContainerClient.h" | 9 #include "modules/serviceworkers/ServiceWorkerContainerClient.h" |
10 #include "modules/serviceworkers/ServiceWorkerRegistration.h" | 10 #include "modules/serviceworkers/ServiceWorkerRegistration.h" |
11 | 11 |
12 namespace blink { | 12 namespace blink { |
13 | 13 |
14 ScriptPromise NavigationPreloadManager::enable(ScriptState* scriptState) { | 14 ScriptPromise NavigationPreloadManager::enable(ScriptState* scriptState) { |
15 return setEnabled(true, scriptState); | 15 return setEnabled(true, scriptState); |
16 } | 16 } |
17 | 17 |
18 ScriptPromise NavigationPreloadManager::disable(ScriptState* scriptState) { | 18 ScriptPromise NavigationPreloadManager::disable(ScriptState* scriptState) { |
19 return setEnabled(false, scriptState); | 19 return setEnabled(false, scriptState); |
20 } | 20 } |
21 | 21 |
22 ScriptPromise NavigationPreloadManager::setHeaderValue(ScriptState*, | 22 ScriptPromise NavigationPreloadManager::setHeaderValue(ScriptState*, |
23 const String& value) { | 23 const String& value) { |
24 NOTIMPLEMENTED(); | 24 NOTIMPLEMENTED(); |
25 return ScriptPromise(); | 25 return ScriptPromise(); |
26 } | 26 } |
27 | 27 |
28 ScriptPromise NavigationPreloadManager::getState(ScriptState*) { | 28 ScriptPromise NavigationPreloadManager::getState(ScriptState* scriptState) { |
29 NOTIMPLEMENTED(); | 29 ServiceWorkerContainerClient* client = |
30 return ScriptPromise(); | 30 ServiceWorkerContainerClient::from(m_registration->getExecutionContext()); |
| 31 if (!client || !client->provider()) { |
| 32 return ScriptPromise::rejectWithDOMException( |
| 33 scriptState, DOMException::create(InvalidStateError, "No provider.")); |
| 34 } |
| 35 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
| 36 ScriptPromise promise = resolver->promise(); |
| 37 m_registration->webRegistration()->getNavigationPreloadState( |
| 38 client->provider(), |
| 39 wrapUnique(new GetNavigationPreloadStateCallbacks(resolver))); |
| 40 return promise; |
31 } | 41 } |
32 | 42 |
33 NavigationPreloadManager::NavigationPreloadManager( | 43 NavigationPreloadManager::NavigationPreloadManager( |
34 ServiceWorkerRegistration* registration) | 44 ServiceWorkerRegistration* registration) |
35 : m_registration(registration) {} | 45 : m_registration(registration) {} |
36 | 46 |
37 ScriptPromise NavigationPreloadManager::setEnabled(bool enable, | 47 ScriptPromise NavigationPreloadManager::setEnabled(bool enable, |
38 ScriptState* scriptState) { | 48 ScriptState* scriptState) { |
39 ServiceWorkerContainerClient* client = | 49 ServiceWorkerContainerClient* client = |
40 ServiceWorkerContainerClient::from(m_registration->getExecutionContext()); | 50 ServiceWorkerContainerClient::from(m_registration->getExecutionContext()); |
41 if (!client || !client->provider()) { | 51 if (!client || !client->provider()) { |
42 return ScriptPromise::rejectWithDOMException( | 52 return ScriptPromise::rejectWithDOMException( |
43 scriptState, DOMException::create(InvalidStateError, "No provider.")); | 53 scriptState, DOMException::create(InvalidStateError, "No provider.")); |
44 } | 54 } |
45 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); | 55 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); |
46 ScriptPromise promise = resolver->promise(); | 56 ScriptPromise promise = resolver->promise(); |
47 m_registration->webRegistration()->enableNavigationPreload( | 57 m_registration->webRegistration()->enableNavigationPreload( |
48 enable, client->provider(), | 58 enable, client->provider(), |
49 wrapUnique(new EnableNavigationPreloadCallbacks(resolver))); | 59 wrapUnique(new EnableNavigationPreloadCallbacks(resolver))); |
50 return promise; | 60 return promise; |
51 } | 61 } |
52 | 62 |
53 DEFINE_TRACE(NavigationPreloadManager) { | 63 DEFINE_TRACE(NavigationPreloadManager) { |
54 visitor->trace(m_registration); | 64 visitor->trace(m_registration); |
55 } | 65 } |
56 | 66 |
57 } // namespace blink | 67 } // namespace blink |
OLD | NEW |