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

Side by Side Diff: Source/modules/cachestorage/Cache.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
« no previous file with comments | « no previous file | Source/modules/cachestorage/CacheStorage.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/Cache.h" 6 #include "modules/cachestorage/Cache.h"
7 7
8 #include "bindings/core/v8/CallbackPromiseAdapter.h" 8 #include "bindings/core/v8/CallbackPromiseAdapter.h"
9 #include "bindings/core/v8/ExceptionState.h" 9 #include "bindings/core/v8/ExceptionState.h"
10 #include "bindings/core/v8/ScriptPromiseResolver.h" 10 #include "bindings/core/v8/ScriptPromiseResolver.h"
(...skipping 18 matching lines...) Expand all
29 public: 29 public:
30 CacheMatchCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver) 30 CacheMatchCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver)
31 : m_resolver(resolver) { } 31 : m_resolver(resolver) { }
32 32
33 virtual void onSuccess(WebServiceWorkerResponse* webResponse) override 33 virtual void onSuccess(WebServiceWorkerResponse* webResponse) override
34 { 34 {
35 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio nContext(), *webResponse)); 35 m_resolver->resolve(Response::create(m_resolver->scriptState()->executio nContext(), *webResponse));
36 m_resolver.clear(); 36 m_resolver.clear();
37 } 37 }
38 38
39 #ifdef CRBUG_494884
kinuko 2015/06/17 18:21:05 Hmm, I have the same question... why we need this
nhiroki 2015/06/17 23:34:41 Right, these aren't necessary. Removed.
40 // Ownership of |rawReason| must be passed.
41 virtual void onError(WebServiceWorkerCacheError* rawReason) override
42 {
43 OwnPtr<WebServiceWorkerCacheError> reason = adoptPtr(rawReason);
44 if (*reason == WebServiceWorkerCacheErrorNotFound)
45 m_resolver->resolve();
46 else
47 m_resolver->reject(CacheStorageError::createException(*reason));
48 m_resolver.clear();
49 }
50 #else
39 virtual void onError(WebServiceWorkerCacheError* reason) override 51 virtual void onError(WebServiceWorkerCacheError* reason) override
40 { 52 {
41 if (*reason == WebServiceWorkerCacheErrorNotFound) 53 if (*reason == WebServiceWorkerCacheErrorNotFound)
42 m_resolver->resolve(); 54 m_resolver->resolve();
43 else 55 else
44 m_resolver->reject(CacheStorageError::createException(*reason)); 56 m_resolver->reject(CacheStorageError::createException(*reason));
45 m_resolver.clear(); 57 m_resolver.clear();
46 } 58 }
59 #endif
47 60
48 private: 61 private:
49 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; 62 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
50 }; 63 };
51 64
52 // FIXME: Consider using CallbackPromiseAdapter. 65 // FIXME: Consider using CallbackPromiseAdapter.
53 class CacheWithResponsesCallbacks : public WebServiceWorkerCache::CacheWithRespo nsesCallbacks { 66 class CacheWithResponsesCallbacks : public WebServiceWorkerCache::CacheWithRespo nsesCallbacks {
54 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks); 67 WTF_MAKE_NONCOPYABLE(CacheWithResponsesCallbacks);
55 public: 68 public:
56 CacheWithResponsesCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> re solver) 69 CacheWithResponsesCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> re solver)
57 : m_resolver(resolver) { } 70 : m_resolver(resolver) { }
58 71
59 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov erride 72 virtual void onSuccess(WebVector<WebServiceWorkerResponse>* webResponses) ov erride
60 { 73 {
61 HeapVector<Member<Response>> responses; 74 HeapVector<Member<Response>> responses;
62 for (size_t i = 0; i < webResponses->size(); ++i) 75 for (size_t i = 0; i < webResponses->size(); ++i)
63 responses.append(Response::create(m_resolver->scriptState()->executi onContext(), (*webResponses)[i])); 76 responses.append(Response::create(m_resolver->scriptState()->executi onContext(), (*webResponses)[i]));
64 m_resolver->resolve(responses); 77 m_resolver->resolve(responses);
65 m_resolver.clear(); 78 m_resolver.clear();
66 } 79 }
67 80
81 #ifdef CRBUG_494884
82 // Ownership of |rawReason| must be passed.
83 virtual void onError(WebServiceWorkerCacheError* rawReason) override
84 {
85 OwnPtr<WebServiceWorkerCacheError> reason = adoptPtr(rawReason);
86 m_resolver->reject(CacheStorageError::createException(*reason));
87 m_resolver.clear();
88 }
89 #else
68 virtual void onError(WebServiceWorkerCacheError* reason) override 90 virtual void onError(WebServiceWorkerCacheError* reason) override
69 { 91 {
70 m_resolver->reject(CacheStorageError::createException(*reason)); 92 m_resolver->reject(CacheStorageError::createException(*reason));
71 m_resolver.clear(); 93 m_resolver.clear();
72 } 94 }
95 #endif
73 96
74 protected: 97 protected:
75 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; 98 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
76 }; 99 };
77 100
78 // FIXME: Consider using CallbackPromiseAdapter. 101 // FIXME: Consider using CallbackPromiseAdapter.
79 class CacheDeleteCallback : public WebServiceWorkerCache::CacheBatchCallbacks { 102 class CacheDeleteCallback : public WebServiceWorkerCache::CacheBatchCallbacks {
80 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback); 103 WTF_MAKE_NONCOPYABLE(CacheDeleteCallback);
81 public: 104 public:
82 CacheDeleteCallback(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver) 105 CacheDeleteCallback(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> resolver)
83 : m_resolver(resolver) { } 106 : m_resolver(resolver) { }
84 107
85 void onSuccess() override 108 void onSuccess() override
86 { 109 {
87 m_resolver->resolve(true); 110 m_resolver->resolve(true);
88 m_resolver.clear(); 111 m_resolver.clear();
89 } 112 }
90 113
91 void onError(WebServiceWorkerCacheError* reason) override 114 #ifdef CRBUG_494884
115 // Ownership of |rawReason| must be passed.
116 virtual void onError(WebServiceWorkerCacheError* rawReason) override
92 { 117 {
118 OwnPtr<WebServiceWorkerCacheError> reason = adoptPtr(rawReason);
93 if (*reason == WebServiceWorkerCacheErrorNotFound) 119 if (*reason == WebServiceWorkerCacheErrorNotFound)
94 m_resolver->resolve(false); 120 m_resolver->resolve(false);
95 else 121 else
96 m_resolver->reject(CacheStorageError::createException(*reason)); 122 m_resolver->reject(CacheStorageError::createException(*reason));
97 m_resolver.clear(); 123 m_resolver.clear();
98 } 124 }
125 #else
126 virtual void onError(WebServiceWorkerCacheError* reason) override
127 {
128 m_resolver->reject(CacheStorageError::createException(*reason));
jkarlin 2015/06/17 11:16:15 Why is this function different from above?
129 m_resolver.clear();
130 }
131 #endif
99 132
100 private: 133 private:
101 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; 134 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
102 }; 135 };
103 136
104 // FIXME: Consider using CallbackPromiseAdapter. 137 // FIXME: Consider using CallbackPromiseAdapter.
105 class CacheWithRequestsCallbacks : public WebServiceWorkerCache::CacheWithReques tsCallbacks { 138 class CacheWithRequestsCallbacks : public WebServiceWorkerCache::CacheWithReques tsCallbacks {
106 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks); 139 WTF_MAKE_NONCOPYABLE(CacheWithRequestsCallbacks);
107 public: 140 public:
108 CacheWithRequestsCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> res olver) 141 CacheWithRequestsCallbacks(PassRefPtrWillBeRawPtr<ScriptPromiseResolver> res olver)
109 : m_resolver(resolver) { } 142 : m_resolver(resolver) { }
110 143
111 virtual void onSuccess(WebVector<WebServiceWorkerRequest>* webRequests) over ride 144 virtual void onSuccess(WebVector<WebServiceWorkerRequest>* webRequests) over ride
112 { 145 {
113 HeapVector<Member<Request>> requests; 146 HeapVector<Member<Request>> requests;
114 for (size_t i = 0; i < webRequests->size(); ++i) 147 for (size_t i = 0; i < webRequests->size(); ++i)
115 requests.append(Request::create(m_resolver->scriptState()->execution Context(), (*webRequests)[i])); 148 requests.append(Request::create(m_resolver->scriptState()->execution Context(), (*webRequests)[i]));
116 m_resolver->resolve(requests); 149 m_resolver->resolve(requests);
117 m_resolver.clear(); 150 m_resolver.clear();
118 } 151 }
119 152
153 #ifdef CRBUG_494884
154 // Ownership of |rawReason| must be passed.
155 virtual void onError(WebServiceWorkerCacheError* rawReason) override
156 {
157 OwnPtr<WebServiceWorkerCacheError> reason = adoptPtr(rawReason);
158 m_resolver->reject(CacheStorageError::createException(*reason));
159 m_resolver.clear();
160 }
161 #else
120 virtual void onError(WebServiceWorkerCacheError* reason) override 162 virtual void onError(WebServiceWorkerCacheError* reason) override
121 { 163 {
122 m_resolver->reject(CacheStorageError::createException(*reason)); 164 m_resolver->reject(CacheStorageError::createException(*reason));
123 m_resolver.clear(); 165 m_resolver.clear();
124 } 166 }
167 #endif
125 168
126 private: 169 private:
127 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver; 170 RefPtrWillBePersistent<ScriptPromiseResolver> m_resolver;
128 }; 171 };
129 172
130 ScriptPromise rejectAsNotImplemented(ScriptState* scriptState) 173 ScriptPromise rejectAsNotImplemented(ScriptState* scriptState)
131 { 174 {
132 return ScriptPromise::rejectWithDOMException(scriptState, DOMException::crea te(NotSupportedError, "Cache is not implemented")); 175 return ScriptPromise::rejectWithDOMException(scriptState, DOMException::crea te(NotSupportedError, "Cache is not implemented"));
133 } 176 }
134 177
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ ueryParams(options)); 470 m_webCache->dispatchKeys(new CacheWithRequestsCallbacks(resolver), 0, toWebQ ueryParams(options));
428 return promise; 471 return promise;
429 } 472 }
430 473
431 WebServiceWorkerCache* Cache::webCache() const 474 WebServiceWorkerCache* Cache::webCache() const
432 { 475 {
433 return m_webCache.get(); 476 return m_webCache.get();
434 } 477 }
435 478
436 } // namespace blink 479 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | Source/modules/cachestorage/CacheStorage.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698