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

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: parameter naming 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 WTF_MAKE_NONCOPYABLE(CacheStorageCallbacks);
35 public:
36 explicit CacheStorageCallbacks(PassRefPtr<ScriptPromiseResolver> resolver) : m_resolver(resolver) { }
37 virtual ~CacheStorageCallbacks() { }
38
39 virtual void onSuccess() OVERRIDE
40 {
41 m_resolver->resolve(true);
42 }
43
44 virtual void onError(WebServiceWorkerCacheError* reason) OVERRIDE
45 {
46 m_resolver->reject(CacheErrorToString(*reason));
47 }
48
49 private:
50 const RefPtr<ScriptPromiseResolver> m_resolver;
51 };
52
53 class CacheStorageWithCacheCallbacks : public WebServiceWorkerCacheStorage::Cach eStorageWithCacheCallbacks {
54 WTF_MAKE_NONCOPYABLE(CacheStorageWithCacheCallbacks);
55 public:
56 explicit CacheStorageWithCacheCallbacks(PassRefPtr<ScriptPromiseResolver> re solver) : m_resolver(resolver) { }
57 virtual ~CacheStorageWithCacheCallbacks() { }
58
59 virtual void onSuccess(WebServiceWorkerCache* cache) OVERRIDE
60 {
61 // FIXME: There should be a blink side of the Cache object implementatio n here, rather than
62 // this nonsensical return.
63 m_resolver->resolve("succesfully returned a cache");
64 }
65
66 virtual void onError(WebServiceWorkerCacheError* reason) OVERRIDE
67 {
68 m_resolver->reject(CacheErrorToString(*reason));
69 }
70
71 private:
72 const RefPtr<ScriptPromiseResolver> m_resolver;
73 };
74
75 class CacheStorageKeysCallbacks : public WebServiceWorkerCacheStorage::CacheStor ageKeysCallbacks {
76 WTF_MAKE_NONCOPYABLE(CacheStorageKeysCallbacks);
77 public:
78 explicit CacheStorageKeysCallbacks(PassRefPtr<ScriptPromiseResolver> resolve r) : m_resolver(resolver) { }
79 virtual ~CacheStorageKeysCallbacks() { }
80
81 virtual void onSuccess(blink::WebVector<blink::WebString>* keys) OVERRIDE
82 {
83 Vector<String> wtfKeys;
84 for (size_t i = 0; i < keys->size(); ++i)
85 wtfKeys.append((*keys)[i]);
86 m_resolver->resolve(wtfKeys);
87 }
88
89 virtual void onError(WebServiceWorkerCacheError* reason) OVERRIDE
90 {
91 m_resolver->reject(CacheErrorToString(*reason));
92 }
93
94 private:
95 const RefPtr<ScriptPromiseResolver> m_resolver;
96 };
97
98 }
99
100 PassRefPtr<CacheStorage> CacheStorage::create(WebServiceWorkerCacheStorage* webC acheStorage)
101 {
102 return adoptRefWillBeNoop(new CacheStorage(webCacheStorage));
103 }
104
105 ScriptPromise CacheStorage::get(ScriptState* scriptState, const String& cacheNam e)
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->dispatchGet(new CacheStorageWithCacheCallbacks(resolv er), cacheName);
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::has(ScriptState* scriptState, const String& cacheNam e)
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->dispatchHas(new CacheStorageCallbacks(resolver), cach eName);
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::createFunction(ScriptState* scriptState, const Strin g& cacheName)
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->dispatchCreate(new CacheStorageWithCacheCallbacks(res olver), cacheName);
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& cacheName)
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), c acheName);
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(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(WebServiceWorkerCacheStorage* webCacheStorage) : m_we bCacheStorage(webCacheStorage)
70 { 171 {
71 ScriptWrappable::init(this); 172 ScriptWrappable::init(this);
72 } 173 }
73 174
74 } // namespace blink 175 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/serviceworkers/CacheStorage.h ('k') | Source/modules/serviceworkers/CacheStorage.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698