Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(229)

Side by Side Diff: third_party/WebKit/Source/modules/cachestorage/Cache.cpp

Issue 2433773006: Remove ExecutionContext::activeDOMObjectsAreStopped()
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/cachestorage/Cache.h" 5 #include "modules/cachestorage/Cache.h"
6 6
7 #include "bindings/core/v8/CallbackPromiseAdapter.h" 7 #include "bindings/core/v8/CallbackPromiseAdapter.h"
8 #include "bindings/core/v8/ExceptionState.h" 8 #include "bindings/core/v8/ExceptionState.h"
9 #include "bindings/core/v8/ScriptPromiseResolver.h" 9 #include "bindings/core/v8/ScriptPromiseResolver.h"
10 #include "bindings/core/v8/ScriptState.h" 10 #include "bindings/core/v8/ScriptState.h"
(...skipping 19 matching lines...) Expand all
30 30
31 // FIXME: Consider using CallbackPromiseAdapter. 31 // FIXME: Consider using CallbackPromiseAdapter.
32 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks { 32 class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks {
33 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks); 33 WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks);
34 34
35 public: 35 public:
36 explicit CacheMatchCallbacks(ScriptPromiseResolver* resolver) 36 explicit CacheMatchCallbacks(ScriptPromiseResolver* resolver)
37 : m_resolver(resolver) {} 37 : m_resolver(resolver) {}
38 38
39 void onSuccess(const WebServiceWorkerResponse& webResponse) override { 39 void onSuccess(const WebServiceWorkerResponse& webResponse) override {
40 if (!m_resolver->getExecutionContext() || 40 if (!m_resolver->getExecutionContext())
41 m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
42 return; 41 return;
43 ScriptState::Scope scope(m_resolver->getScriptState()); 42 ScriptState::Scope scope(m_resolver->getScriptState());
44 m_resolver->resolve( 43 m_resolver->resolve(
45 Response::create(m_resolver->getScriptState(), webResponse)); 44 Response::create(m_resolver->getScriptState(), webResponse));
46 m_resolver.clear(); 45 m_resolver.clear();
47 } 46 }
48 47
49 void onError(WebServiceWorkerCacheError reason) override { 48 void onError(WebServiceWorkerCacheError reason) override {
50 if (!m_resolver->getExecutionContext() || 49 if (!m_resolver->getExecutionContext())
51 m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
52 return; 50 return;
53 if (reason == WebServiceWorkerCacheErrorNotFound) 51 if (reason == WebServiceWorkerCacheErrorNotFound)
54 m_resolver->resolve(); 52 m_resolver->resolve();
55 else 53 else
56 m_resolver->reject(CacheStorageError::createException(reason)); 54 m_resolver->reject(CacheStorageError::createException(reason));
57 m_resolver.clear(); 55 m_resolver.clear();
58 } 56 }
59 57
60 private: 58 private:
61 Persistent<ScriptPromiseResolver> m_resolver; 59 Persistent<ScriptPromiseResolver> m_resolver;
62 }; 60 };
63 61
64 // FIXME: Consider using CallbackPromiseAdapter. 62 // FIXME: Consider using CallbackPromiseAdapter.
65 class CacheWithResponsesCallbacks 63 class CacheWithResponsesCallbacks
66 : public WebServiceWorkerCache::CacheWithResponsesCallbacks { 64 : public WebServiceWorkerCache::CacheWithResponsesCallbacks {
67 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks); 65 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks);
68 66
69 public: 67 public:
70 explicit CacheWithResponsesCallbacks(ScriptPromiseResolver* resolver) 68 explicit CacheWithResponsesCallbacks(ScriptPromiseResolver* resolver)
71 : m_resolver(resolver) {} 69 : m_resolver(resolver) {}
72 70
73 void onSuccess( 71 void onSuccess(
74 const WebVector<WebServiceWorkerResponse>& webResponses) override { 72 const WebVector<WebServiceWorkerResponse>& webResponses) override {
75 if (!m_resolver->getExecutionContext() || 73 if (!m_resolver->getExecutionContext())
76 m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
77 return; 74 return;
78 ScriptState::Scope scope(m_resolver->getScriptState()); 75 ScriptState::Scope scope(m_resolver->getScriptState());
79 HeapVector<Member<Response>> responses; 76 HeapVector<Member<Response>> responses;
80 for (size_t i = 0; i < webResponses.size(); ++i) 77 for (size_t i = 0; i < webResponses.size(); ++i)
81 responses.append( 78 responses.append(
82 Response::create(m_resolver->getScriptState(), webResponses[i])); 79 Response::create(m_resolver->getScriptState(), webResponses[i]));
83 m_resolver->resolve(responses); 80 m_resolver->resolve(responses);
84 m_resolver.clear(); 81 m_resolver.clear();
85 } 82 }
86 83
87 void onError(WebServiceWorkerCacheError reason) override { 84 void onError(WebServiceWorkerCacheError reason) override {
88 if (!m_resolver->getExecutionContext() || 85 if (!m_resolver->getExecutionContext())
89 m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
90 return; 86 return;
91 m_resolver->reject(CacheStorageError::createException(reason)); 87 m_resolver->reject(CacheStorageError::createException(reason));
92 m_resolver.clear(); 88 m_resolver.clear();
93 } 89 }
94 90
95 protected: 91 protected:
96 Persistent<ScriptPromiseResolver> m_resolver; 92 Persistent<ScriptPromiseResolver> m_resolver;
97 }; 93 };
98 94
99 // FIXME: Consider using CallbackPromiseAdapter. 95 // FIXME: Consider using CallbackPromiseAdapter.
100 class CacheDeleteCallback : public WebServiceWorkerCache::CacheBatchCallbacks { 96 class CacheDeleteCallback : public WebServiceWorkerCache::CacheBatchCallbacks {
101 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback); 97 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback);
102 98
103 public: 99 public:
104 explicit CacheDeleteCallback(ScriptPromiseResolver* resolver) 100 explicit CacheDeleteCallback(ScriptPromiseResolver* resolver)
105 : m_resolver(resolver) {} 101 : m_resolver(resolver) {}
106 102
107 void onSuccess() override { 103 void onSuccess() override {
108 if (!m_resolver->getExecutionContext() || 104 if (!m_resolver->getExecutionContext())
109 m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
110 return; 105 return;
111 m_resolver->resolve(true); 106 m_resolver->resolve(true);
112 m_resolver.clear(); 107 m_resolver.clear();
113 } 108 }
114 109
115 void onError(WebServiceWorkerCacheError reason) override { 110 void onError(WebServiceWorkerCacheError reason) override {
116 if (!m_resolver->getExecutionContext() || 111 if (!m_resolver->getExecutionContext())
117 m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
118 return; 112 return;
119 if (reason == WebServiceWorkerCacheErrorNotFound) 113 if (reason == WebServiceWorkerCacheErrorNotFound)
120 m_resolver->resolve(false); 114 m_resolver->resolve(false);
121 else 115 else
122 m_resolver->reject(CacheStorageError::createException(reason)); 116 m_resolver->reject(CacheStorageError::createException(reason));
123 m_resolver.clear(); 117 m_resolver.clear();
124 } 118 }
125 119
126 private: 120 private:
127 Persistent<ScriptPromiseResolver> m_resolver; 121 Persistent<ScriptPromiseResolver> m_resolver;
128 }; 122 };
129 123
130 // FIXME: Consider using CallbackPromiseAdapter. 124 // FIXME: Consider using CallbackPromiseAdapter.
131 class CacheWithRequestsCallbacks 125 class CacheWithRequestsCallbacks
132 : public WebServiceWorkerCache::CacheWithRequestsCallbacks { 126 : public WebServiceWorkerCache::CacheWithRequestsCallbacks {
133 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks); 127 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks);
134 128
135 public: 129 public:
136 explicit CacheWithRequestsCallbacks(ScriptPromiseResolver* resolver) 130 explicit CacheWithRequestsCallbacks(ScriptPromiseResolver* resolver)
137 : m_resolver(resolver) {} 131 : m_resolver(resolver) {}
138 132
139 void onSuccess( 133 void onSuccess(
140 const WebVector<WebServiceWorkerRequest>& webRequests) override { 134 const WebVector<WebServiceWorkerRequest>& webRequests) override {
141 if (!m_resolver->getExecutionContext() || 135 if (!m_resolver->getExecutionContext())
142 m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
143 return; 136 return;
144 ScriptState::Scope scope(m_resolver->getScriptState()); 137 ScriptState::Scope scope(m_resolver->getScriptState());
145 HeapVector<Member<Request>> requests; 138 HeapVector<Member<Request>> requests;
146 for (size_t i = 0; i < webRequests.size(); ++i) 139 for (size_t i = 0; i < webRequests.size(); ++i)
147 requests.append( 140 requests.append(
148 Request::create(m_resolver->getScriptState(), webRequests[i])); 141 Request::create(m_resolver->getScriptState(), webRequests[i]));
149 m_resolver->resolve(requests); 142 m_resolver->resolve(requests);
150 m_resolver.clear(); 143 m_resolver.clear();
151 } 144 }
152 145
153 void onError(WebServiceWorkerCacheError reason) override { 146 void onError(WebServiceWorkerCacheError reason) override {
154 if (!m_resolver->getExecutionContext() || 147 if (!m_resolver->getExecutionContext())
155 m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
156 return; 148 return;
157 m_resolver->reject(CacheStorageError::createException(reason)); 149 m_resolver->reject(CacheStorageError::createException(reason));
158 m_resolver.clear(); 150 m_resolver.clear();
159 } 151 }
160 152
161 private: 153 private:
162 Persistent<ScriptPromiseResolver> m_resolver; 154 Persistent<ScriptPromiseResolver> m_resolver;
163 }; 155 };
164 156
165 // Used for UMA. Append only. 157 // Used for UMA. Append only.
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 m_resolver(resolver) { 283 m_resolver(resolver) {
292 ASSERT(0 < m_numberOfRemainingOperations); 284 ASSERT(0 < m_numberOfRemainingOperations);
293 m_batchOperations.resize(numberOfOperations); 285 m_batchOperations.resize(numberOfOperations);
294 } 286 }
295 287
296 void onSuccess(size_t index, 288 void onSuccess(size_t index,
297 const WebServiceWorkerCache::BatchOperation& batchOperation) { 289 const WebServiceWorkerCache::BatchOperation& batchOperation) {
298 ASSERT(index < m_batchOperations.size()); 290 ASSERT(index < m_batchOperations.size());
299 if (m_completed) 291 if (m_completed)
300 return; 292 return;
301 if (!m_resolver->getExecutionContext() || 293 if (!m_resolver->getExecutionContext())
302 m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
303 return; 294 return;
304 m_batchOperations[index] = batchOperation; 295 m_batchOperations[index] = batchOperation;
305 if (--m_numberOfRemainingOperations != 0) 296 if (--m_numberOfRemainingOperations != 0)
306 return; 297 return;
307 m_cache->webCache()->dispatchBatch( 298 m_cache->webCache()->dispatchBatch(
308 new CallbackPromiseAdapter<void, CacheStorageError>(m_resolver), 299 new CallbackPromiseAdapter<void, CacheStorageError>(m_resolver),
309 m_batchOperations); 300 m_batchOperations);
310 } 301 }
311 302
312 void onError(const String& errorMessage) { 303 void onError(const String& errorMessage) {
313 if (m_completed) 304 if (m_completed)
314 return; 305 return;
315 m_completed = true; 306 m_completed = true;
316 if (!m_resolver->getExecutionContext() || 307 if (!m_resolver->getExecutionContext())
317 m_resolver->getExecutionContext()->activeDOMObjectsAreStopped())
318 return; 308 return;
319 ScriptState* state = m_resolver->getScriptState(); 309 ScriptState* state = m_resolver->getScriptState();
320 ScriptState::Scope scope(state); 310 ScriptState::Scope scope(state);
321 m_resolver->reject( 311 m_resolver->reject(
322 V8ThrowException::createTypeError(state->isolate(), errorMessage)); 312 V8ThrowException::createTypeError(state->isolate(), errorMessage));
323 } 313 }
324 314
325 DEFINE_INLINE_VIRTUAL_TRACE() { 315 DEFINE_INLINE_VIRTUAL_TRACE() {
326 visitor->trace(m_cache); 316 visitor->trace(m_cache);
327 visitor->trace(m_resolver); 317 visitor->trace(m_resolver);
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
694 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), webRequest, 684 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), webRequest,
695 toWebQueryParams(options)); 685 toWebQueryParams(options));
696 return promise; 686 return promise;
697 } 687 }
698 688
699 WebServiceWorkerCache* Cache::webCache() const { 689 WebServiceWorkerCache* Cache::webCache() const {
700 return m_webCache.get(); 690 return m_webCache.get();
701 } 691 }
702 692
703 } // namespace blink 693 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698