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

Side by Side Diff: content/browser/indexed_db/indexed_db_callbacks_wrapper.cc

Issue 15659013: Revert "Migrate the IndexedDB backend from Blink to Chromium" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "content/browser/indexed_db/indexed_db_callbacks_wrapper.h"
6
7 #include "content/browser/indexed_db/indexed_db_cursor.h"
8 #include "content/browser/indexed_db/indexed_db_metadata.h"
9 #include "content/browser/indexed_db/webidbcursor_impl.h"
10 #include "content/browser/indexed_db/webidbdatabase_impl.h"
11 #include "third_party/WebKit/Source/Platform/chromium/public/WebData.h"
12 #include "third_party/WebKit/Source/Platform/chromium/public/WebIDBDatabaseError .h"
13 #include "third_party/WebKit/Source/Platform/chromium/public/WebIDBKey.h"
14 #include "third_party/WebKit/Source/Platform/chromium/public/WebIDBMetadata.h"
15 #include "third_party/WebKit/Source/Platform/chromium/public/WebString.h"
16 #include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h"
17
18 namespace content {
19
20 using WebKit::WebData;
21 using WebKit::WebIDBKey;
22 using WebKit::WebIDBMetadata;
23 using WebKit::WebString;
24 using WebKit::WebVector;
25
26 IndexedDBCallbacksWrapper::IndexedDBCallbacksWrapper(
27 WebKit::WebIDBCallbacks* callbacks)
28 : callbacks_(callbacks), did_complete_(false), did_create_proxy_(false) {}
29
30 IndexedDBCallbacksWrapper::~IndexedDBCallbacksWrapper() {}
31
32 void IndexedDBCallbacksWrapper::OnError(
33 scoped_refptr<IndexedDBDatabaseError> error) {
34 DCHECK(callbacks_);
35 callbacks_->onError(
36 WebKit::WebIDBDatabaseError(error->code(), error->message()));
37 callbacks_.reset();
38 }
39
40 void IndexedDBCallbacksWrapper::OnSuccess(const std::vector<string16>& value) {
41 DCHECK(callbacks_);
42 callbacks_->onSuccess(WebVector<WebString>(value));
43 callbacks_.reset();
44 }
45
46 void IndexedDBCallbacksWrapper::OnSuccess(scoped_refptr<IndexedDBCursor> cursor,
47 const IndexedDBKey& key,
48 const IndexedDBKey& primary_key,
49 std::vector<char>* value) {
50 DCHECK(callbacks_);
51 WebData web_value;
52 if (value && value->size())
53 web_value.assign(&value->front(), value->size());
54 callbacks_->onSuccess(
55 new WebIDBCursorImpl(cursor), WebIDBKey(key), primary_key, web_value);
56 callbacks_.reset();
57 }
58
59 void IndexedDBCallbacksWrapper::OnSuccess(const IndexedDBKey& key) {
60 DCHECK(callbacks_);
61 callbacks_->onSuccess(WebIDBKey(key));
62 callbacks_.reset();
63 }
64
65 void IndexedDBCallbacksWrapper::OnSuccess(std::vector<char>* value) {
66 WebData web_value;
67 if (value && value->size())
68 web_value.assign(&value->front(), value->size());
69
70 DCHECK(callbacks_);
71 callbacks_->onSuccess(web_value);
72 callbacks_.reset();
73 }
74
75 void IndexedDBCallbacksWrapper::OnSuccess(std::vector<char>* value,
76 const IndexedDBKey& key,
77 const IndexedDBKeyPath& key_path) {
78 WebData web_value;
79 if (value && value->size())
80 web_value.assign(&value->front(), value->size());
81 DCHECK(callbacks_);
82 callbacks_->onSuccess(web_value, WebIDBKey(key), key_path);
83 callbacks_.reset();
84 }
85
86 void IndexedDBCallbacksWrapper::OnSuccess(int64 value) {
87 DCHECK(callbacks_);
88 callbacks_->onSuccess(value);
89 callbacks_.reset();
90 }
91
92 void IndexedDBCallbacksWrapper::OnSuccess() {
93 DCHECK(callbacks_);
94 callbacks_->onSuccess();
95 callbacks_.reset();
96 }
97
98 void IndexedDBCallbacksWrapper::OnSuccess(const IndexedDBKey& key,
99 const IndexedDBKey& primary_key,
100 std::vector<char>* value) {
101 WebData web_value;
102 if (value && value->size())
103 web_value.assign(&value->front(), value->size());
104 DCHECK(callbacks_);
105 callbacks_->onSuccess(key, primary_key, web_value);
106 callbacks_.reset();
107 }
108
109 void IndexedDBCallbacksWrapper::OnSuccessWithPrefetch(
110 const std::vector<IndexedDBKey>& keys,
111 const std::vector<IndexedDBKey>& primary_keys,
112 const std::vector<std::vector<char> >& values) {
113 DCHECK_EQ(keys.size(), primary_keys.size());
114 DCHECK_EQ(keys.size(), values.size());
115
116 std::vector<WebIDBKey> web_keys(keys.size());
117 std::vector<WebIDBKey> web_primary_keys(primary_keys.size());
118 std::vector<WebData> web_values(values.size());
119 for (size_t i = 0; i < keys.size(); ++i) {
120 web_keys[i] = keys[i];
121 web_primary_keys[i] = primary_keys[i];
122 if (values[i].size())
123 web_values[i].assign(&values[i].front(), values[i].size());
124 }
125
126 DCHECK(callbacks_);
127 callbacks_->onSuccessWithPrefetch(web_keys, web_primary_keys, web_values);
128 callbacks_.reset();
129 }
130
131 void IndexedDBCallbacksWrapper::OnBlocked(int64 existing_version) {
132 DCHECK(callbacks_);
133 callbacks_->onBlocked(existing_version);
134 }
135
136 WebIDBMetadata ConvertMetadata(const IndexedDBDatabaseMetadata& idb_metadata) {
137 WebIDBMetadata web_metadata;
138 web_metadata.id = idb_metadata.id;
139 web_metadata.name = idb_metadata.name;
140 web_metadata.version = idb_metadata.version;
141 web_metadata.intVersion = idb_metadata.int_version;
142 web_metadata.maxObjectStoreId = idb_metadata.max_object_store_id;
143 web_metadata.objectStores =
144 WebVector<WebIDBMetadata::ObjectStore>(idb_metadata.object_stores.size());
145
146 size_t i = 0;
147 for (IndexedDBDatabaseMetadata::ObjectStoreMap::const_iterator
148 it = idb_metadata.object_stores.begin();
149 it != idb_metadata.object_stores.end();
150 ++it, ++i) {
151 const IndexedDBObjectStoreMetadata& idb_store_metadata = it->second;
152 WebIDBMetadata::ObjectStore& web_store_metadata =
153 web_metadata.objectStores[i];
154
155 web_store_metadata.id = idb_store_metadata.id;
156 web_store_metadata.name = idb_store_metadata.name;
157 web_store_metadata.keyPath = idb_store_metadata.key_path;
158 web_store_metadata.autoIncrement = idb_store_metadata.auto_increment;
159 web_store_metadata.maxIndexId = idb_store_metadata.max_index_id;
160 web_store_metadata.indexes =
161 WebVector<WebIDBMetadata::Index>(idb_store_metadata.indexes.size());
162
163 size_t j = 0;
164 for (IndexedDBObjectStoreMetadata::IndexMap::const_iterator
165 it2 = idb_store_metadata.indexes.begin();
166 it2 != idb_store_metadata.indexes.end();
167 ++it2, ++j) {
168 const IndexedDBIndexMetadata& idb_index_metadata = it2->second;
169 WebIDBMetadata::Index& web_index_metadata = web_store_metadata.indexes[j];
170
171 web_index_metadata.id = idb_index_metadata.id;
172 web_index_metadata.name = idb_index_metadata.name;
173 web_index_metadata.keyPath = idb_index_metadata.key_path;
174 web_index_metadata.unique = idb_index_metadata.unique;
175 web_index_metadata.multiEntry = idb_index_metadata.multi_entry;
176 }
177 }
178
179 return web_metadata;
180 }
181
182 void IndexedDBCallbacksWrapper::OnUpgradeNeeded(
183 int64 old_version,
184 scoped_refptr<IndexedDBDatabase> database,
185 const IndexedDBDatabaseMetadata& metadata) {
186 DCHECK(callbacks_);
187 WebIDBMetadata web_metadata = ConvertMetadata(metadata);
188 did_create_proxy_ = true;
189 callbacks_->onUpgradeNeeded(
190 old_version,
191 new WebIDBDatabaseImpl(database, database_callbacks_),
192 web_metadata);
193 database_callbacks_ = NULL;
194 }
195
196 void IndexedDBCallbacksWrapper::OnSuccess(
197 scoped_refptr<IndexedDBDatabase> database,
198 const IndexedDBDatabaseMetadata& metadata) {
199 DCHECK(callbacks_);
200 WebIDBMetadata web_metadata = ConvertMetadata(metadata);
201 scoped_refptr<IndexedDBCallbacksWrapper> self(this);
202
203 WebIDBDatabaseImpl* impl =
204 did_create_proxy_ ? 0
205 : new WebIDBDatabaseImpl(database, database_callbacks_);
206 database_callbacks_ = NULL;
207
208 callbacks_->onSuccess(impl, web_metadata);
209 callbacks_.reset();
210 }
211
212 void IndexedDBCallbacksWrapper::SetDatabaseCallbacks(
213 scoped_refptr<IndexedDBDatabaseCallbacksWrapper> database_callbacks) {
214 database_callbacks_ = database_callbacks;
215 }
216 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698