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

Side by Side Diff: Source/modules/cachestorage/CacheStorage.cpp

Issue 1155573003: CacheStorage: Pass an error object allocated on heap to WebCallbacks::onError (2) (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 6 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 "config.h" 5 #include "config.h"
6 #include "modules/cachestorage/CacheStorage.h" 6 #include "modules/cachestorage/CacheStorage.h"
7 7
8 #include "bindings/core/v8/ScriptPromiseResolver.h" 8 #include "bindings/core/v8/ScriptPromiseResolver.h"
9 #include "bindings/core/v8/ScriptState.h" 9 #include "bindings/core/v8/ScriptState.h"
10 #include "core/dom/DOMException.h" 10 #include "core/dom/DOMException.h"
(...skipping 22 matching lines...) Expand all
33 explicit Callbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver) 33 explicit Callbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver)
34 : m_resolver(resolver) { } 34 : m_resolver(resolver) { }
35 virtual ~Callbacks() { } 35 virtual ~Callbacks() { }
36 36
37 virtual void onSuccess() override 37 virtual void onSuccess() override
38 { 38 {
39 m_resolver->resolve(true); 39 m_resolver->resolve(true);
40 m_resolver.clear(); 40 m_resolver.clear();
41 } 41 }
42 42
43 #ifdef CRBUG_494884
44 // Ownership of |rawReason| must be passed.
45 virtual void onError(WebServiceWorkerCacheError* rawReason) override
46 {
47 OwnPtr<WebServiceWorkerCacheError> reason = adoptPtr(rawReason);
48 if (*reason == WebServiceWorkerCacheErrorNotFound)
49 m_resolver->resolve(false);
50 else
51 m_resolver->reject(CacheStorageError::createException(*reason));
52 m_resolver.clear();
53 }
54 #else
43 virtual void onError(WebServiceWorkerCacheError* reason) override 55 virtual void onError(WebServiceWorkerCacheError* reason) override
44 { 56 {
45 if (*reason == WebServiceWorkerCacheErrorNotFound) 57 if (*reason == WebServiceWorkerCacheErrorNotFound)
46 m_resolver->resolve(false); 58 m_resolver->resolve(false);
47 else 59 else
48 m_resolver->reject(CacheStorageError::createException(*reason)); 60 m_resolver->reject(CacheStorageError::createException(*reason));
49 m_resolver.clear(); 61 m_resolver.clear();
50 } 62 }
63 #endif
51 64
52 private: 65 private:
53 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; 66 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
54 }; 67 };
55 68
56 // FIXME: Consider using CallbackPromiseAdapter. 69 // FIXME: Consider using CallbackPromiseAdapter.
57 class CacheStorage::WithCacheCallbacks final : public WebServiceWorkerCacheStora ge::CacheStorageWithCacheCallbacks { 70 class CacheStorage::WithCacheCallbacks final : public WebServiceWorkerCacheStora ge::CacheStorageWithCacheCallbacks {
58 WTF_MAKE_NONCOPYABLE(WithCacheCallbacks); 71 WTF_MAKE_NONCOPYABLE(WithCacheCallbacks);
59 public: 72 public:
60 WithCacheCallbacks(const String& cacheName, CacheStorage* cacheStorage, Pass RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver) 73 WithCacheCallbacks(const String& cacheName, CacheStorage* cacheStorage, Pass RefPtrWillBeRawPtr<ScriptPromiseResolver> resolver)
61 : m_cacheName(cacheName), m_cacheStorage(cacheStorage), m_resolver(resol ver) { } 74 : m_cacheName(cacheName), m_cacheStorage(cacheStorage), m_resolver(resol ver) { }
62 virtual ~WithCacheCallbacks() { } 75 virtual ~WithCacheCallbacks() { }
63 76
64 virtual void onSuccess(WebServiceWorkerCache* webCache) override 77 virtual void onSuccess(WebServiceWorkerCache* webCache) override
65 { 78 {
66 // FIXME: Remove this once content's WebServiceWorkerCache implementatio n has landed. 79 // FIXME: Remove this once content's WebServiceWorkerCache implementatio n has landed.
67 if (!webCache) { 80 if (!webCache) {
68 m_resolver->reject("not implemented"); 81 m_resolver->reject("not implemented");
69 return; 82 return;
70 } 83 }
71 Cache* cache = Cache::create(m_cacheStorage->m_scopedFetcher, webCache); 84 Cache* cache = Cache::create(m_cacheStorage->m_scopedFetcher, webCache);
72 m_cacheStorage->m_nameToCacheMap.set(m_cacheName, cache); 85 m_cacheStorage->m_nameToCacheMap.set(m_cacheName, cache);
73 m_resolver->resolve(cache); 86 m_resolver->resolve(cache);
74 m_resolver.clear(); 87 m_resolver.clear();
75 } 88 }
76 89
90 #ifdef CRBUG_494884
91 // Ownership of |rawReason| must be passed.
92 virtual void onError(WebServiceWorkerCacheError* rawReason) override
93 {
94 OwnPtr<WebServiceWorkerCacheError> reason = adoptPtr(rawReason);
95 if (*reason == WebServiceWorkerCacheErrorNotFound)
96 m_resolver->resolve();
97 else
98 m_resolver->reject(CacheStorageError::createException(*reason));
99 m_resolver.clear();
100 }
101 #else
77 virtual void onError(WebServiceWorkerCacheError* reason) override 102 virtual void onError(WebServiceWorkerCacheError* reason) override
78 { 103 {
79 if (*reason == WebServiceWorkerCacheErrorNotFound) 104 if (*reason == WebServiceWorkerCacheErrorNotFound)
80 m_resolver->resolve(); 105 m_resolver->resolve();
81 else 106 else
82 m_resolver->reject(CacheStorageError::createException(*reason)); 107 m_resolver->reject(CacheStorageError::createException(*reason));
83 m_resolver.clear(); 108 m_resolver.clear();
84 } 109 }
110 #endif
85 111
86 private: 112 private:
87 String m_cacheName; 113 String m_cacheName;
88 Persistent<CacheStorage> m_cacheStorage; 114 Persistent<CacheStorage> m_cacheStorage;
89 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; 115 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
90 }; 116 };
91 117
92 // FIXME: Consider using CallbackPromiseAdapter. 118 // FIXME: Consider using CallbackPromiseAdapter.
93 class CacheStorage::MatchCallbacks : public WebServiceWorkerCacheStorage::CacheS torageMatchCallbacks { 119 class CacheStorage::MatchCallbacks : public WebServiceWorkerCacheStorage::CacheS torageMatchCallbacks {
94 WTF_MAKE_NONCOPYABLE(MatchCallbacks); 120 WTF_MAKE_NONCOPYABLE(MatchCallbacks);
95 public: 121 public:
96 MatchCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver) 122 MatchCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver)
97 : m_resolver(resolver) { } 123 : m_resolver(resolver) { }
98 124
99 virtual void onSuccess(WebServiceWorkerResponse* webResponse) override 125 virtual void onSuccess(WebServiceWorkerResponse* webResponse) override
100 { 126 {
101 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio nContext(), *webResponse)); 127 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio nContext(), *webResponse));
102 m_resolver.clear(); 128 m_resolver.clear();
103 } 129 }
104 130
131 #ifdef CRBUG_494884
132 // Ownership of |rawReason| must be passed.
133 virtual void onError(WebServiceWorkerCacheError* rawReason) override
134 {
135 OwnPtr<WebServiceWorkerCacheError> reason = adoptPtr(rawReason);
136 if (*reason == WebServiceWorkerCacheErrorNotFound)
137 m_resolver->resolve();
138 else
139 m_resolver->reject(CacheStorageError::createException(*reason));
140 m_resolver.clear();
141 }
142 #else
105 virtual void onError(WebServiceWorkerCacheError* reason) override 143 virtual void onError(WebServiceWorkerCacheError* reason) override
106 { 144 {
107 if (*reason == WebServiceWorkerCacheErrorNotFound) 145 if (*reason == WebServiceWorkerCacheErrorNotFound)
108 m_resolver->resolve(); 146 m_resolver->resolve();
109 else 147 else
110 m_resolver->reject(CacheStorageError::createException(*reason)); 148 m_resolver->reject(CacheStorageError::createException(*reason));
111 m_resolver.clear(); 149 m_resolver.clear();
112 } 150 }
151 #endif
113 152
114 private: 153 private:
115 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; 154 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
116 }; 155 };
117 156
118 157
119 // FIXME: Consider using CallbackPromiseAdapter. 158 // FIXME: Consider using CallbackPromiseAdapter.
120 class CacheStorage::DeleteCallbacks final : public WebServiceWorkerCacheStorage: :CacheStorageCallbacks { 159 class CacheStorage::DeleteCallbacks final : public WebServiceWorkerCacheStorage: :CacheStorageCallbacks {
121 WTF_MAKE_NONCOPYABLE(DeleteCallbacks); 160 WTF_MAKE_NONCOPYABLE(DeleteCallbacks);
122 public: 161 public:
123 DeleteCallbacks(const String& cacheName, CacheStorage* cacheStorage, PassRef PtrWillBeRawPtr<ScriptPromiseResolver> resolver) 162 DeleteCallbacks(const String& cacheName, CacheStorage* cacheStorage, PassRef PtrWillBeRawPtr<ScriptPromiseResolver> resolver)
124 : m_cacheName(cacheName), m_cacheStorage(cacheStorage), m_resolver(resol ver) { } 163 : m_cacheName(cacheName), m_cacheStorage(cacheStorage), m_resolver(resol ver) { }
125 virtual ~DeleteCallbacks() { } 164 virtual ~DeleteCallbacks() { }
126 165
127 virtual void onSuccess() override 166 virtual void onSuccess() override
128 { 167 {
129 m_cacheStorage->m_nameToCacheMap.remove(m_cacheName); 168 m_cacheStorage->m_nameToCacheMap.remove(m_cacheName);
130 m_resolver->resolve(true); 169 m_resolver->resolve(true);
131 m_resolver.clear(); 170 m_resolver.clear();
132 } 171 }
133 172
173 #ifdef CRBUG_494884
174 // Ownership of |rawReason| must be passed.
175 virtual void onError(WebServiceWorkerCacheError* rawReason) override
176 {
177 OwnPtr<WebServiceWorkerCacheError> reason = adoptPtr(rawReason);
178 if (*reason == WebServiceWorkerCacheErrorNotFound)
179 m_resolver->resolve(false);
180 else
181 m_resolver->reject(CacheStorageError::createException(*reason));
182 m_resolver.clear();
183 }
184 #else
134 virtual void onError(WebServiceWorkerCacheError* reason) override 185 virtual void onError(WebServiceWorkerCacheError* reason) override
135 { 186 {
136 if (*reason == WebServiceWorkerCacheErrorNotFound) 187 if (*reason == WebServiceWorkerCacheErrorNotFound)
137 m_resolver->resolve(false); 188 m_resolver->resolve(false);
138 else 189 else
139 m_resolver->reject(CacheStorageError::createException(*reason)); 190 m_resolver->reject(CacheStorageError::createException(*reason));
140 m_resolver.clear(); 191 m_resolver.clear();
141 } 192 }
193 #endif
142 194
143 private: 195 private:
144 String m_cacheName; 196 String m_cacheName;
145 Persistent<CacheStorage> m_cacheStorage; 197 Persistent<CacheStorage> m_cacheStorage;
146 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; 198 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
147 }; 199 };
148 200
149 // FIXME: Consider using CallbackPromiseAdapter. 201 // FIXME: Consider using CallbackPromiseAdapter.
150 class CacheStorage::KeysCallbacks final : public WebServiceWorkerCacheStorage::C acheStorageKeysCallbacks { 202 class CacheStorage::KeysCallbacks final : public WebServiceWorkerCacheStorage::C acheStorageKeysCallbacks {
151 WTF_MAKE_NONCOPYABLE(KeysCallbacks); 203 WTF_MAKE_NONCOPYABLE(KeysCallbacks);
152 public: 204 public:
153 explicit KeysCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolve r) 205 explicit KeysCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolve r)
154 : m_resolver(resolver) { } 206 : m_resolver(resolver) { }
155 virtual ~KeysCallbacks() { } 207 virtual ~KeysCallbacks() { }
156 208
157 virtual void onSuccess(WebVector<WebString>* keys) override 209 virtual void onSuccess(WebVector<WebString>* keys) override
158 { 210 {
159 Vector<String> wtfKeys; 211 Vector<String> wtfKeys;
160 for (size_t i = 0; i < keys->size(); ++i) 212 for (size_t i = 0; i < keys->size(); ++i)
161 wtfKeys.append((*keys)[i]); 213 wtfKeys.append((*keys)[i]);
162 m_resolver->resolve(wtfKeys); 214 m_resolver->resolve(wtfKeys);
163 m_resolver.clear(); 215 m_resolver.clear();
164 } 216 }
165 217
218 #ifdef CRBUG_494884
219 // Ownership of |rawReason| must be passed.
220 virtual void onError(WebServiceWorkerCacheError* rawReason) override
221 {
222 OwnPtr<WebServiceWorkerCacheError> reason = adoptPtr(rawReason);
223 m_resolver->reject(CacheStorageError::createException(*reason));
224 m_resolver.clear();
225 }
226 #else
166 virtual void onError(WebServiceWorkerCacheError* reason) override 227 virtual void onError(WebServiceWorkerCacheError* reason) override
167 { 228 {
168 m_resolver->reject(CacheStorageError::createException(*reason)); 229 m_resolver->reject(CacheStorageError::createException(*reason));
169 m_resolver.clear(); 230 m_resolver.clear();
170 } 231 }
232 #endif
171 233
172 private: 234 private:
173 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; 235 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
174 }; 236 };
175 237
176 CacheStorage* CacheStorage::create(WeakPtr<GlobalFetch::ScopedFetcher> fetcher, WebServiceWorkerCacheStorage* webCacheStorage) 238 CacheStorage* CacheStorage::create(WeakPtr<GlobalFetch::ScopedFetcher> fetcher, WebServiceWorkerCacheStorage* webCacheStorage)
177 { 239 {
178 return new CacheStorage(fetcher, adoptPtr(webCacheStorage)); 240 return new CacheStorage(fetcher, adoptPtr(webCacheStorage));
179 } 241 }
180 242
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 visitor->trace(m_nameToCacheMap); 336 visitor->trace(m_nameToCacheMap);
275 } 337 }
276 338
277 CacheStorage::CacheStorage(WeakPtr<GlobalFetch::ScopedFetcher> fetcher, PassOwnP tr<WebServiceWorkerCacheStorage> webCacheStorage) 339 CacheStorage::CacheStorage(WeakPtr<GlobalFetch::ScopedFetcher> fetcher, PassOwnP tr<WebServiceWorkerCacheStorage> webCacheStorage)
278 : m_scopedFetcher(fetcher) 340 : m_scopedFetcher(fetcher)
279 , m_webCacheStorage(webCacheStorage) 341 , m_webCacheStorage(webCacheStorage)
280 { 342 {
281 } 343 }
282 344
283 } // namespace blink 345 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698