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

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

Issue 424643002: Introducing the WebServiceWorkerCacheStorage (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: remediate to falken review Created 6 years, 4 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/WebServiceWorkerCacheError.h"
11 #include "public/platform/WebServiceWorkerCacheStorage.h"
10 12
11 namespace blink { 13 namespace blink {
12 14
13 PassRefPtrWillBeRawPtr<CacheStorage> CacheStorage::create() 15 namespace {
16
17 const char* CacheErrorToString(WebServiceWorkerCacheError reason)
14 { 18 {
15 return adoptRefWillBeNoop(new CacheStorage()); 19 // FIXME: Construct correct DOM error objects rather than returning strings.
20 switch (reason) {
21 case WebServiceWorkerCacheError::WebServiceWorkerCacheErrorNotImplemented:
22 return "not implemented";
23 case WebServiceWorkerCacheError::WebServiceWorkerCacheErrorNotFound:
24 return "not found";
25 case WebServiceWorkerCacheError::WebServiceWorkerCacheErrorExists:
26 return "entry already exists";
27 default:
28 ASSERT_NOT_REACHED();
29 return "unknown error";
30 }
16 } 31 }
17 32
18 // FIXME: Implement every one of these methods. 33 class CacheStorageCallbacks : public WebServiceWorkerCacheStorage::CacheStorageC allbacks {
19 ScriptPromise CacheStorage::createFunction(ScriptState* scriptState, const Strin g& key) 34 public:
jochen (gone - plz use gerrit) 2014/08/05 08:51:56 wtf_make_noncopyable
gavinp 2014/08/05 09:09:23 Done.
35 CacheStorageCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) : m_resolv er(resolver) { }
jochen (gone - plz use gerrit) 2014/08/05 08:51:56 explicit
gavinp 2014/08/05 09:09:23 Done.
36 virtual ~CacheStorageCallbacks() { }
37
38 virtual void onSuccess() OVERRIDE
39 {
40 m_resolver->resolve(true);
41 }
42
43 virtual void onError(WebServiceWorkerCacheError* reason) OVERRIDE
44 {
45 m_resolver->reject(CacheErrorToString(*reason));
46 }
47
48 private:
49 const RefPtr<ScriptPromiseResolver> m_resolver;
50 };
51
52 class CacheStorageWithCacheCallbacks : public WebServiceWorkerCacheStorage::Cach eStorageWithCacheCallbacks {
53 public:
54 CacheStorageWithCacheCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) : m_resolver(resolver) { }
jochen (gone - plz use gerrit) 2014/08/05 08:51:56 same here
gavinp 2014/08/05 09:09:23 Done.
55 virtual ~CacheStorageWithCacheCallbacks() { }
56
57 virtual void onSuccess(WebServiceWorkerCache* cache) OVERRIDE
58 {
59 // FIXME: There should be a blink side of the Cache object implementatio n here, rather than
60 // this nonsensical return.
61 m_resolver->resolve("succesfully returned a cache");
62 }
63
64 virtual void onError(WebServiceWorkerCacheError* reason) OVERRIDE
65 {
66 m_resolver->reject(CacheErrorToString(*reason));
67 }
68
69 private:
70 const RefPtr<ScriptPromiseResolver> m_resolver;
71 };
72
73 class CacheStorageKeysCallbacks : public WebServiceWorkerCacheStorage::CacheStor ageKeysCallbacks {
74 public:
75 CacheStorageKeysCallbacks(ScriptState* scriptState, PassRefPtr<ScriptPromise Resolver> resolver) : m_resolver(resolver), m_scriptState(scriptState) { }
gavinp 2014/08/05 09:09:23 Here too after I removed the unused param.
76 virtual ~CacheStorageKeysCallbacks() { }
77
78 virtual void onSuccess(blink::WebVector<blink::WebString>* keys) OVERRIDE
79 {
80 Vector<String> wtfKeys;
81 for (size_t i = 0; i < keys->size(); ++i)
82 wtfKeys.append((*keys)[i]);
83 m_resolver->resolve(wtfKeys);
84 }
85
86 virtual void onError(WebServiceWorkerCacheError* reason) OVERRIDE
87 {
88 m_resolver->reject(CacheErrorToString(*reason));
89 }
90
91 private:
92 const RefPtr<ScriptPromiseResolver> m_resolver;
93 const RefPtr<ScriptState> m_scriptState;
94 };
95
96 }
97
98 PassRefPtr<CacheStorage> CacheStorage::create(WebServiceWorkerCacheStorage* webC acheStorage)
99 {
100 return adoptRefWillBeNoop(new CacheStorage(webCacheStorage));
101 }
102
103 ScriptPromise CacheStorage::get(ScriptState* scriptState, const String& cacheNam e)
20 { 104 {
21 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 105 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState);
22 const ScriptPromise promise = resolver->promise(); 106 const ScriptPromise promise = resolver->promise();
23 107
24 resolver->reject("not implemented"); 108 if (m_webCacheStorage)
109 m_webCacheStorage->dispatchGet(new CacheStorageWithCacheCallbacks(resolv er), cacheName);
110 else
111 resolver->reject("no implementation provided");
25 112
26 return promise; 113 return promise;
27 } 114 }
28 115
29 ScriptPromise CacheStorage::rename(ScriptState* scriptState, const String& oldKe y, const String& newKey) 116 ScriptPromise CacheStorage::has(ScriptState* scriptState, const String& cacheNam e)
30 { 117 {
31 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 118 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState);
32 const ScriptPromise promise = resolver->promise(); 119 const ScriptPromise promise = resolver->promise();
33 120
34 resolver->reject("not implemented"); 121 if (m_webCacheStorage)
122 m_webCacheStorage->dispatchHas(new CacheStorageCallbacks(resolver), cach eName);
123 else
124 resolver->reject("no implementation provided");
35 125
36 return promise; 126 return promise;
37 } 127 }
38 128
39 ScriptPromise CacheStorage::get(ScriptState* scriptState, const String& key) 129 ScriptPromise CacheStorage::createFunction(ScriptState* scriptState, const Strin g& cacheName)
40 { 130 {
41 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 131 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState);
42 const ScriptPromise promise = resolver->promise(); 132 const ScriptPromise promise = resolver->promise();
43 133
44 resolver->reject("not implemented"); 134 if (m_webCacheStorage)
135 m_webCacheStorage->dispatchCreate(new CacheStorageWithCacheCallbacks(res olver), cacheName);
136 else
137 resolver->reject("no implementation provided");
45 138
46 return promise; 139 return promise;
47 } 140 }
48 141
49 ScriptPromise CacheStorage::deleteFunction(ScriptState* scriptState, const Strin g& key) 142 ScriptPromise CacheStorage::deleteFunction(ScriptState* scriptState, const Strin g& cacheName)
50 { 143 {
51 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 144 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState);
52 const ScriptPromise promise = resolver->promise(); 145 const ScriptPromise promise = resolver->promise();
53 146
54 resolver->reject("not implemented"); 147 if (m_webCacheStorage)
148 m_webCacheStorage->dispatchDelete(new CacheStorageCallbacks(resolver), c acheName);
149 else
150 resolver->reject("no implementation provided");
55 151
56 return promise; 152 return promise;
57 } 153 }
58 154
59 ScriptPromise CacheStorage::keys(ScriptState* scriptState) 155 ScriptPromise CacheStorage::keys(ScriptState* scriptState)
60 { 156 {
61 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState); 157 RefPtr<ScriptPromiseResolver> resolver = ScriptPromiseResolver::create(scrip tState);
62 const ScriptPromise promise = resolver->promise(); 158 const ScriptPromise promise = resolver->promise();
63 159
64 resolver->reject("not implemented"); 160 if (m_webCacheStorage)
161 m_webCacheStorage->dispatchKeys(new CacheStorageKeysCallbacks(scriptStat e, resolver));
162 else
163 resolver->reject("no implementation provided");
65 164
66 return promise; 165 return promise;
67 } 166 }
68 167
69 CacheStorage::CacheStorage() 168 CacheStorage::CacheStorage(WebServiceWorkerCacheStorage* webCacheStorage) : m_we bCacheStorage(webCacheStorage)
70 { 169 {
71 ScriptWrappable::init(this); 170 ScriptWrappable::init(this);
72 } 171 }
73 172
74 } // namespace blink 173 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698