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

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

Issue 380923002: Introducing the WebServiceWorkerCacheStorage. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase to trunk Created 6 years, 5 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 | Annotate | Revision Log
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/serviceworkers/CacheStorage.h" 6 #include "modules/serviceworkers/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 "public/platform/WebServiceWorkerCacheStorage.h"
11 #include <v8.h>
12
13 using blink::WebServiceWorkerCacheStorage;
10 14
11 namespace WebCore { 15 namespace WebCore {
12 16
13 PassRefPtrWillBeRawPtr<CacheStorage> CacheStorage::create() 17 namespace {
18
19 const char* CacheStorageErrorToString(WebServiceWorkerCacheStorage::CacheStorage Error reason)
14 { 20 {
15 return adoptRefWillBeNoop(new CacheStorage()); 21 // TODO: Construct correct DOM error objects rather than returning strings.
22 switch (reason) {
23 case WebServiceWorkerCacheStorage::CacheStorageError::CacheStorageErrorNotIm plemented:
24 return "not implemented";
25 case WebServiceWorkerCacheStorage::CacheStorageError::CacheStorageErrorNotFo und:
26 return "not found";
27 case WebServiceWorkerCacheStorage::CacheStorageError::CacheStorageErrorExist s:
28 return "entry already exists";
29 default:
30 ASSERT_NOT_REACHED();
31 return "unknown error";
32 }
16 } 33 }
17 34
18 // FIXME: Implement every one of these methods. 35 class CacheStorageCallbacks : public WebServiceWorkerCacheStorage::CacheStorageC allbacks {
36 public:
37 CacheStorageCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) : m_resolv er(resolver) { }
38 virtual ~CacheStorageCallbacks() { }
39
40 virtual void onSuccess() OVERRIDE
41 {
42 m_resolver->resolve(true);
43 }
44
45 virtual void onError(WebServiceWorkerCacheStorage::CacheStorageError* reason ) OVERRIDE
46 {
47 m_resolver->reject(CacheStorageErrorToString(*reason));
48 }
49
50 private:
51 const RefPtr<ScriptPromiseResolver> m_resolver;
52 };
53
54 class CacheStorageWithCacheCallbacks : public WebServiceWorkerCacheStorage::Cach eStorageWithCacheCallbacks {
55 public:
56 CacheStorageWithCacheCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) : m_resolver(resolver) { }
57 virtual ~CacheStorageWithCacheCallbacks() { }
58
59 virtual void onSuccess(int* cacheId) OVERRIDE
60 {
61 // TODO: There should be a blink side of the Cache object implementation here, rather than
62 // this nonsensical pass through.
63 m_resolver->resolve(*cacheId);
64 }
65
66 virtual void onError(WebServiceWorkerCacheStorage::CacheStorageError* reason ) OVERRIDE
67 {
68 m_resolver->reject(CacheStorageErrorToString(*reason));
69 }
70
71 private:
72 const RefPtr<ScriptPromiseResolver> m_resolver;
73 };
74
75 class CacheStorageKeysCallbacks : public WebServiceWorkerCacheStorage::CacheStor ageKeysCallbacks {
76 public:
77 CacheStorageKeysCallbacks(ScriptState* scriptState, PassRefPtr<ScriptPromise Resolver> resolver) : m_resolver(resolver), m_scriptState(scriptState) { }
78 virtual ~CacheStorageKeysCallbacks() { }
79
80 virtual void onSuccess(blink::WebVector<blink::WebString>* keys) OVERRIDE
81 {
82 Vector<String> wtfKeys;
83 for (size_t i = 0; i < keys->size(); ++i)
84 wtfKeys.append((*keys)[i]);
85 m_resolver->resolve(wtfKeys);
86 }
87
88 virtual void onError(WebServiceWorkerCacheStorage::CacheStorageError* reason ) OVERRIDE
89 {
90 m_resolver->reject(CacheStorageErrorToString(*reason));
91 }
92
93 private:
94 const RefPtr<ScriptPromiseResolver> m_resolver;
95 const RefPtr<ScriptState> m_scriptState;
96 };
97
98 }
99
100 PassRefPtr<CacheStorage> CacheStorage::create(blink::WebServiceWorkerCacheStorag e* webCacheStorage)
michaeln 2014/07/25 20:25:19 shouldn't need the blink:: here
gavinp 2014/07/28 02:10:16 Done, and one more below.
101 {
102 return adoptRefWillBeNoop(new CacheStorage(webCacheStorage));
103 }
104
19 ScriptPromise CacheStorage::createFunction(ScriptState* scriptState, const Strin g& key) 105 ScriptPromise CacheStorage::createFunction(ScriptState* scriptState, const Strin g& key)
20 { 106 {
21 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 107 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState);
22 const ScriptPromise promise = resolver->promise(); 108 const ScriptPromise promise = resolver->promise();
23 109
24 resolver->reject("not implemented"); 110 if (m_webCacheStorage)
111 m_webCacheStorage->dispatchCreate(new CacheStorageWithCacheCallbacks(res olver), key);
112 else
113 resolver->reject("no implementation provided");
25 114
26 return promise; 115 return promise;
27 } 116 }
28 117
29 ScriptPromise CacheStorage::rename(ScriptState* scriptState, const String& oldKe y, const String& newKey) 118 ScriptPromise CacheStorage::rename(ScriptState* scriptState, const String& oldKe y, const String& newKey)
30 { 119 {
31 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 120 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState);
32 const ScriptPromise promise = resolver->promise(); 121 const ScriptPromise promise = resolver->promise();
33 122
34 resolver->reject("not implemented"); 123 if (m_webCacheStorage)
124 m_webCacheStorage->dispatchRename(new CacheStorageCallbacks(resolver), o ldKey, newKey);
125 else
126 resolver->reject("no implementation provided");
35 127
36 return promise; 128 return promise;
37 } 129 }
38 130
39 ScriptPromise CacheStorage::get(ScriptState* scriptState, const String& key) 131 ScriptPromise CacheStorage::get(ScriptState* scriptState, const String& key)
40 { 132 {
41 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 133 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState);
42 const ScriptPromise promise = resolver->promise(); 134 const ScriptPromise promise = resolver->promise();
43 135
44 resolver->reject("not implemented"); 136 if (m_webCacheStorage)
137 m_webCacheStorage->dispatchGet(new CacheStorageWithCacheCallbacks(resolv er), key);
138 else
139 resolver->reject("no implementation provided");
45 140
46 return promise; 141 return promise;
47 } 142 }
48 143
49 ScriptPromise CacheStorage::deleteFunction(ScriptState* scriptState, const Strin g& key) 144 ScriptPromise CacheStorage::deleteFunction(ScriptState* scriptState, const Strin g& key)
50 { 145 {
51 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 146 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState);
52 const ScriptPromise promise = resolver->promise(); 147 const ScriptPromise promise = resolver->promise();
53 148
54 resolver->reject("not implemented"); 149 if (m_webCacheStorage)
150 m_webCacheStorage->dispatchDelete(new CacheStorageCallbacks(resolver), k ey);
151 else
152 resolver->reject("no implementation provided");
55 153
56 return promise; 154 return promise;
57 } 155 }
58 156
59 ScriptPromise CacheStorage::keys(ScriptState* scriptState) 157 ScriptPromise CacheStorage::keys(ScriptState* scriptState)
60 { 158 {
61 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 159 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState);
62 const ScriptPromise promise = resolver->promise(); 160 const ScriptPromise promise = resolver->promise();
63 161
64 resolver->reject("not implemented"); 162 if (m_webCacheStorage)
163 m_webCacheStorage->dispatchKeys(new CacheStorageKeysCallbacks(scriptStat e, resolver));
164 else
165 resolver->reject("no implementation provided");
65 166
66 return promise; 167 return promise;
67 } 168 }
68 169
69 CacheStorage::CacheStorage() 170 CacheStorage::CacheStorage(blink::WebServiceWorkerCacheStorage* webCacheStorage) : m_webCacheStorage(webCacheStorage)
michaeln 2014/07/25 20:25:19 or here
gavinp 2014/07/28 02:10:16 Done.
70 { 171 {
71 ScriptWrappable::init(this); 172 ScriptWrappable::init(this);
72 } 173 }
73 174
74 } // namespace WebCore 175 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698