OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
jkarlin
2015/08/24 11:50:09
Why this change?
yhirano
2015/08/24 14:07:39
Sorry, this was not intended. Fixed.
| |
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 "config.h" | 5 #include "config.h" |
6 #include "modules/background_sync/SyncCallbacks.h" | 6 #include "modules/background_sync/SyncCallbacks.h" |
7 | 7 |
8 #include "bindings/core/v8/ScriptPromiseResolver.h" | 8 #include "bindings/core/v8/ScriptPromiseResolver.h" |
9 #include "modules/background_sync/PeriodicSyncRegistration.h" | 9 #include "modules/background_sync/PeriodicSyncRegistration.h" |
10 #include "modules/background_sync/SyncError.h" | 10 #include "modules/background_sync/SyncError.h" |
11 #include "modules/background_sync/SyncRegistration.h" | 11 #include "modules/background_sync/SyncRegistration.h" |
12 #include "modules/serviceworkers/ServiceWorkerRegistration.h" | 12 #include "modules/serviceworkers/ServiceWorkerRegistration.h" |
13 #include "wtf/OwnPtr.h" | 13 #include "wtf/OwnPtr.h" |
14 #include "wtf/PassOwnPtr.h" | 14 #include "wtf/PassOwnPtr.h" |
15 | 15 |
16 namespace blink { | 16 namespace blink { |
17 | 17 |
18 SyncRegistrationCallbacks::SyncRegistrationCallbacks(ScriptPromiseResolver* reso lver, ServiceWorkerRegistration* serviceWorkerRegistration) | 18 SyncRegistrationCallbacks::SyncRegistrationCallbacks(ScriptPromiseResolver* reso lver, ServiceWorkerRegistration* serviceWorkerRegistration) |
19 : m_resolver(resolver) | 19 : m_resolver(resolver) |
20 , m_serviceWorkerRegistration(serviceWorkerRegistration) | 20 , m_serviceWorkerRegistration(serviceWorkerRegistration) |
21 { | 21 { |
22 ASSERT(m_resolver); | 22 ASSERT(m_resolver); |
23 ASSERT(m_serviceWorkerRegistration); | 23 ASSERT(m_serviceWorkerRegistration); |
24 } | 24 } |
25 | 25 |
26 SyncRegistrationCallbacks::~SyncRegistrationCallbacks() | 26 SyncRegistrationCallbacks::~SyncRegistrationCallbacks() |
27 { | 27 { |
28 } | 28 } |
29 | 29 |
30 void SyncRegistrationCallbacks::onSuccess(WebSyncRegistration* webSyncRegistrati on) | 30 void SyncRegistrationCallbacks::onSuccess(WebPassOwnPtr<WebSyncRegistration> web SyncRegistration) |
31 { | 31 { |
32 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { | 32 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { |
33 SyncRegistration::dispose(webSyncRegistration); | |
34 return; | 33 return; |
35 } | 34 } |
36 | 35 |
37 if (!webSyncRegistration) { | 36 OwnPtr<WebSyncRegistration> registration = webSyncRegistration.release(); |
37 if (!registration) { | |
38 m_resolver->resolve(v8::Null(m_resolver->scriptState()->isolate())); | 38 m_resolver->resolve(v8::Null(m_resolver->scriptState()->isolate())); |
39 return; | 39 return; |
40 } | 40 } |
41 switch (webSyncRegistration->periodicity) { | 41 switch (registration->periodicity) { |
42 case WebSyncRegistration::PeriodicityPeriodic: | 42 case WebSyncRegistration::PeriodicityPeriodic: |
43 m_resolver->resolve(PeriodicSyncRegistration::take(m_resolver.get(), web SyncRegistration, m_serviceWorkerRegistration)); | 43 m_resolver->resolve(PeriodicSyncRegistration::take(m_resolver.get(), reg istration.release(), m_serviceWorkerRegistration)); |
44 break; | 44 break; |
45 case WebSyncRegistration::PeriodicityOneShot: | 45 case WebSyncRegistration::PeriodicityOneShot: |
46 m_resolver->resolve(SyncRegistration::take(m_resolver.get(), webSyncRegi stration, m_serviceWorkerRegistration)); | 46 m_resolver->resolve(SyncRegistration::take(m_resolver.get(), registratio n.release(), m_serviceWorkerRegistration)); |
47 break; | 47 break; |
48 } | 48 } |
49 } | 49 } |
50 | 50 |
51 void SyncRegistrationCallbacks::onError(WebSyncError* error) | 51 void SyncRegistrationCallbacks::onError(const WebSyncError& error) |
52 { | 52 { |
53 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { | 53 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { |
54 SyncError::dispose(error); | |
55 return; | 54 return; |
56 } | 55 } |
57 m_resolver->reject(SyncError::take(m_resolver.get(), error)); | 56 m_resolver->reject(SyncError::take(m_resolver.get(), error)); |
58 } | 57 } |
59 | 58 |
60 SyncNotifyWhenDoneCallbacks::SyncNotifyWhenDoneCallbacks(ScriptPromiseResolver* resolver, ServiceWorkerRegistration* serviceWorkerRegistration) | 59 SyncNotifyWhenDoneCallbacks::SyncNotifyWhenDoneCallbacks(ScriptPromiseResolver* resolver, ServiceWorkerRegistration* serviceWorkerRegistration) |
61 : m_resolver(resolver) | 60 : m_resolver(resolver) |
62 , m_serviceWorkerRegistration(serviceWorkerRegistration) | 61 , m_serviceWorkerRegistration(serviceWorkerRegistration) |
63 { | 62 { |
64 ASSERT(m_resolver); | 63 ASSERT(m_resolver); |
65 ASSERT(m_serviceWorkerRegistration); | 64 ASSERT(m_serviceWorkerRegistration); |
66 } | 65 } |
67 | 66 |
68 SyncNotifyWhenDoneCallbacks::~SyncNotifyWhenDoneCallbacks() | 67 SyncNotifyWhenDoneCallbacks::~SyncNotifyWhenDoneCallbacks() |
69 { | 68 { |
70 } | 69 } |
71 | 70 |
72 void SyncNotifyWhenDoneCallbacks::onSuccess(bool* status) | 71 void SyncNotifyWhenDoneCallbacks::onSuccess(bool status) |
73 { | 72 { |
74 OwnPtr<bool> statusPtr = adoptPtr(status); | |
75 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { | 73 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { |
76 return; | 74 return; |
77 } | 75 } |
78 | 76 |
79 m_resolver->resolve(*status); | 77 m_resolver->resolve(status); |
80 } | 78 } |
81 | 79 |
82 void SyncNotifyWhenDoneCallbacks::onError(WebSyncError* error) | 80 void SyncNotifyWhenDoneCallbacks::onError(const WebSyncError& error) |
83 { | 81 { |
84 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { | 82 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { |
85 SyncError::dispose(error); | |
86 return; | 83 return; |
87 } | 84 } |
88 m_resolver->reject(SyncError::take(m_resolver.get(), error)); | 85 m_resolver->reject(SyncError::take(m_resolver.get(), error)); |
89 } | 86 } |
90 | 87 |
91 SyncUnregistrationCallbacks::SyncUnregistrationCallbacks(ScriptPromiseResolver* resolver, ServiceWorkerRegistration* serviceWorkerRegistration) | 88 SyncUnregistrationCallbacks::SyncUnregistrationCallbacks(ScriptPromiseResolver* resolver, ServiceWorkerRegistration* serviceWorkerRegistration) |
92 : m_resolver(resolver) | 89 : m_resolver(resolver) |
93 , m_serviceWorkerRegistration(serviceWorkerRegistration) | 90 , m_serviceWorkerRegistration(serviceWorkerRegistration) |
94 { | 91 { |
95 ASSERT(m_resolver); | 92 ASSERT(m_resolver); |
96 ASSERT(m_serviceWorkerRegistration); | 93 ASSERT(m_serviceWorkerRegistration); |
97 } | 94 } |
98 | 95 |
99 SyncUnregistrationCallbacks::~SyncUnregistrationCallbacks() | 96 SyncUnregistrationCallbacks::~SyncUnregistrationCallbacks() |
100 { | 97 { |
101 } | 98 } |
102 | 99 |
103 void SyncUnregistrationCallbacks::onSuccess(bool* status) | 100 void SyncUnregistrationCallbacks::onSuccess(bool status) |
104 { | 101 { |
105 OwnPtr<bool> statusPtr = adoptPtr(status); | |
106 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { | 102 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { |
107 return; | 103 return; |
108 } | 104 } |
109 | 105 |
110 m_resolver->resolve(*status); | 106 m_resolver->resolve(status); |
111 } | 107 } |
112 | 108 |
113 void SyncUnregistrationCallbacks::onError(WebSyncError* error) | 109 void SyncUnregistrationCallbacks::onError(const WebSyncError& error) |
114 { | 110 { |
115 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { | 111 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { |
116 SyncError::dispose(error); | |
117 return; | 112 return; |
118 } | 113 } |
119 m_resolver->reject(SyncError::take(m_resolver.get(), error)); | 114 m_resolver->reject(SyncError::take(m_resolver.get(), error)); |
120 } | 115 } |
121 | 116 |
122 SyncGetRegistrationsCallbacks::SyncGetRegistrationsCallbacks(ScriptPromiseResolv er* resolver, ServiceWorkerRegistration* serviceWorkerRegistration) | 117 SyncGetRegistrationsCallbacks::SyncGetRegistrationsCallbacks(ScriptPromiseResolv er* resolver, ServiceWorkerRegistration* serviceWorkerRegistration) |
123 : m_resolver(resolver) | 118 : m_resolver(resolver) |
124 , m_serviceWorkerRegistration(serviceWorkerRegistration) | 119 , m_serviceWorkerRegistration(serviceWorkerRegistration) |
125 { | 120 { |
126 ASSERT(m_resolver); | 121 ASSERT(m_resolver); |
127 ASSERT(m_serviceWorkerRegistration); | 122 ASSERT(m_serviceWorkerRegistration); |
128 } | 123 } |
129 | 124 |
130 SyncGetRegistrationsCallbacks::~SyncGetRegistrationsCallbacks() | 125 SyncGetRegistrationsCallbacks::~SyncGetRegistrationsCallbacks() |
131 { | 126 { |
132 } | 127 } |
133 | 128 |
134 void SyncGetRegistrationsCallbacks::onSuccess(WebVector<WebSyncRegistration*>* w ebSyncRegistrations) | 129 void SyncGetRegistrationsCallbacks::onSuccess(const WebVector<WebSyncRegistratio n*>& webSyncRegistrations) |
135 { | 130 { |
131 Vector<OwnPtr<WebSyncRegistration>> registrations; | |
132 for (WebSyncRegistration* r : webSyncRegistrations) { | |
133 registrations.append(adoptPtr(r)); | |
134 } | |
136 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { | 135 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { |
137 if (webSyncRegistrations) { | |
138 for (size_t i = 0; i < webSyncRegistrations->size(); ++i) | |
139 SyncRegistration::dispose((*webSyncRegistrations)[i]); | |
140 delete (webSyncRegistrations); | |
141 } | |
142 return; | 136 return; |
143 } | 137 } |
144 | 138 |
145 if (!webSyncRegistrations) { | 139 if (webSyncRegistrations.size() && webSyncRegistrations[0]->periodicity == W ebSyncRegistration::PeriodicityOneShot) { |
146 m_resolver->resolve(v8::Null(m_resolver->scriptState()->isolate())); | |
147 return; | |
148 } | |
149 | |
150 if (webSyncRegistrations->size() && (*webSyncRegistrations)[0]->periodicity == WebSyncRegistration::PeriodicityOneShot) { | |
151 Vector<SyncRegistration*> syncRegistrations; | 140 Vector<SyncRegistration*> syncRegistrations; |
152 for (size_t i = 0; i < webSyncRegistrations->size(); ++i) { | 141 for (auto& r : registrations) { |
153 WebSyncRegistration* webSyncRegistration = (*webSyncRegistrations)[i ]; | 142 SyncRegistration* reg = SyncRegistration::take(m_resolver.get(), r.r elease(), m_serviceWorkerRegistration); |
154 SyncRegistration* reg = SyncRegistration::take(m_resolver.get(), web SyncRegistration, m_serviceWorkerRegistration); | |
155 syncRegistrations.append(reg); | 143 syncRegistrations.append(reg); |
156 } | 144 } |
157 delete (webSyncRegistrations); | |
158 m_resolver->resolve(syncRegistrations); | 145 m_resolver->resolve(syncRegistrations); |
159 } else { | 146 } else { |
160 Vector<PeriodicSyncRegistration*> syncRegistrations; | 147 Vector<PeriodicSyncRegistration*> syncRegistrations; |
161 for (size_t i = 0; i < webSyncRegistrations->size(); ++i) { | 148 for (auto& r : registrations) { |
162 WebSyncRegistration* webSyncRegistration = (*webSyncRegistrations)[i ]; | 149 PeriodicSyncRegistration* reg = PeriodicSyncRegistration::take(m_res olver.get(), r.release(), m_serviceWorkerRegistration); |
163 PeriodicSyncRegistration* reg = PeriodicSyncRegistration::take(m_res olver.get(), webSyncRegistration, m_serviceWorkerRegistration); | |
164 syncRegistrations.append(reg); | 150 syncRegistrations.append(reg); |
165 } | 151 } |
166 delete (webSyncRegistrations); | |
167 m_resolver->resolve(syncRegistrations); | 152 m_resolver->resolve(syncRegistrations); |
168 } | 153 } |
169 } | 154 } |
170 | 155 |
171 void SyncGetRegistrationsCallbacks::onError(WebSyncError* error) | 156 void SyncGetRegistrationsCallbacks::onError(const WebSyncError& error) |
172 { | 157 { |
173 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { | 158 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { |
174 SyncError::dispose(error); | |
175 return; | 159 return; |
176 } | 160 } |
177 m_resolver->reject(SyncError::take(m_resolver.get(), error)); | 161 m_resolver->reject(SyncError::take(m_resolver.get(), error)); |
178 } | 162 } |
179 | 163 |
180 SyncGetPermissionStatusCallbacks::SyncGetPermissionStatusCallbacks(ScriptPromise Resolver* resolver, ServiceWorkerRegistration* serviceWorkerRegistration) | 164 SyncGetPermissionStatusCallbacks::SyncGetPermissionStatusCallbacks(ScriptPromise Resolver* resolver, ServiceWorkerRegistration* serviceWorkerRegistration) |
181 : m_resolver(resolver) | 165 : m_resolver(resolver) |
182 , m_serviceWorkerRegistration(serviceWorkerRegistration) | 166 , m_serviceWorkerRegistration(serviceWorkerRegistration) |
183 { | 167 { |
184 ASSERT(m_resolver); | 168 ASSERT(m_resolver); |
185 ASSERT(m_serviceWorkerRegistration); | 169 ASSERT(m_serviceWorkerRegistration); |
186 } | 170 } |
187 | 171 |
188 SyncGetPermissionStatusCallbacks::~SyncGetPermissionStatusCallbacks() | 172 SyncGetPermissionStatusCallbacks::~SyncGetPermissionStatusCallbacks() |
189 { | 173 { |
190 } | 174 } |
191 | 175 |
192 void SyncGetPermissionStatusCallbacks::onSuccess(WebSyncPermissionStatus* status ) | 176 void SyncGetPermissionStatusCallbacks::onSuccess(WebSyncPermissionStatus status) |
193 { | 177 { |
194 OwnPtr<WebSyncPermissionStatus> statusPtr = adoptPtr(status); | |
195 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { | 178 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { |
196 return; | 179 return; |
197 } | 180 } |
198 | 181 |
199 m_resolver->resolve(permissionString(*statusPtr)); | 182 m_resolver->resolve(permissionString(status)); |
200 } | 183 } |
201 | 184 |
202 void SyncGetPermissionStatusCallbacks::onError(WebSyncError* error) | 185 void SyncGetPermissionStatusCallbacks::onError(const WebSyncError& error) |
203 { | 186 { |
204 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { | 187 if (!m_resolver->executionContext() || m_resolver->executionContext()->activ eDOMObjectsAreStopped()) { |
205 SyncError::dispose(error); | |
206 return; | 188 return; |
207 } | 189 } |
208 m_resolver->reject(SyncError::take(m_resolver.get(), error)); | 190 m_resolver->reject(SyncError::take(m_resolver.get(), error)); |
209 } | 191 } |
210 | 192 |
211 // static | 193 // static |
212 String SyncGetPermissionStatusCallbacks::permissionString(WebSyncPermissionStatu s status) | 194 String SyncGetPermissionStatusCallbacks::permissionString(WebSyncPermissionStatu s status) |
213 { | 195 { |
214 switch (status) { | 196 switch (status) { |
215 case WebSyncPermissionStatusGranted: | 197 case WebSyncPermissionStatusGranted: |
216 return "granted"; | 198 return "granted"; |
217 case WebSyncPermissionStatusDenied: | 199 case WebSyncPermissionStatusDenied: |
218 return "denied"; | 200 return "denied"; |
219 case WebSyncPermissionStatusPrompt: | 201 case WebSyncPermissionStatusPrompt: |
220 return "prompt"; | 202 return "prompt"; |
221 } | 203 } |
222 | 204 |
223 ASSERT_NOT_REACHED(); | 205 ASSERT_NOT_REACHED(); |
224 return "denied"; | 206 return "denied"; |
225 } | 207 } |
226 | 208 |
227 } // namespace blink | 209 } // namespace blink |
OLD | NEW |