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

Side by Side Diff: content/browser/indexed_db/webidbdatabase_impl.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/webidbdatabase_impl.h"
6
7 #include <vector>
8
9 #include "base/basictypes.h"
10 #include "base/logging.h"
11 #include "content/browser/indexed_db/indexed_db_callbacks_wrapper.h"
12 #include "content/browser/indexed_db/indexed_db_cursor.h"
13 #include "content/browser/indexed_db/indexed_db_database.h"
14 #include "content/browser/indexed_db/indexed_db_metadata.h"
15 #include "content/common/indexed_db/indexed_db_key_range.h"
16 #include "third_party/WebKit/Source/Platform/chromium/public/WebData.h"
17 #include "third_party/WebKit/Source/Platform/chromium/public/WebIDBCallbacks.h"
18 #include "third_party/WebKit/Source/Platform/chromium/public/WebIDBDatabaseCallb acks.h"
19 #include "third_party/WebKit/Source/Platform/chromium/public/WebIDBDatabaseError .h"
20 #include "third_party/WebKit/Source/Platform/chromium/public/WebIDBKey.h"
21 #include "third_party/WebKit/Source/Platform/chromium/public/WebIDBKeyRange.h"
22 #include "third_party/WebKit/Source/Platform/chromium/public/WebIDBMetadata.h"
23
24 using WebKit::WebString;
25 using WebKit::WebIDBKey;
26 using WebKit::WebData;
27 using WebKit::WebIDBKeyPath;
28 using WebKit::WebIDBKeyRange;
29 using WebKit::WebIDBDatabaseCallbacks;
30 using WebKit::WebIDBCallbacks;
31 using WebKit::WebVector;
32 using WebKit::WebIDBDatabaseError;
33
34 namespace content {
35
36 WebIDBDatabaseImpl::WebIDBDatabaseImpl(
37 scoped_refptr<IndexedDBDatabase> database_backend,
38 scoped_refptr<IndexedDBDatabaseCallbacksWrapper> database_callbacks)
39 : database_backend_(database_backend),
40 database_callbacks_(database_callbacks) {}
41
42 WebIDBDatabaseImpl::~WebIDBDatabaseImpl() {}
43
44 void WebIDBDatabaseImpl::createObjectStore(long long transaction_id,
45 long long object_store_id,
46 const WebString& name,
47 const WebIDBKeyPath& key_path,
48 bool auto_increment) {
49 database_backend_->CreateObjectStore(transaction_id,
50 object_store_id,
51 name,
52 IndexedDBKeyPath(key_path),
53 auto_increment);
54 }
55
56 void WebIDBDatabaseImpl::deleteObjectStore(long long transaction_id,
57 long long object_store_id) {
58 database_backend_->DeleteObjectStore(transaction_id, object_store_id);
59 }
60
61 void WebIDBDatabaseImpl::createTransaction(
62 long long id,
63 WebIDBDatabaseCallbacks* /*callbacks*/,
64 const WebVector<long long>& object_store_ids,
65 unsigned short mode) {
66 if (!database_callbacks_)
67 return;
68 std::vector<int64> object_store_id_list(object_store_ids.size());
69 for (size_t i = 0; i < object_store_ids.size(); ++i)
70 object_store_id_list[i] = object_store_ids[i];
71 database_backend_->CreateTransaction(
72 id, database_callbacks_.get(), object_store_id_list, mode);
73 }
74
75 void WebIDBDatabaseImpl::close() {
76 // Use the callbacks passed in to the constructor so that the backend in
77 // multi-process chromium knows which database connection is closing.
78 if (!database_callbacks_)
79 return;
80 database_backend_->Close(database_callbacks_);
81 database_callbacks_ = NULL;
82 }
83
84 void WebIDBDatabaseImpl::forceClose() {
85 if (!database_callbacks_)
86 return;
87 database_backend_->Close(database_callbacks_);
88 database_callbacks_->OnForcedClose();
89 database_callbacks_ = NULL;
90 }
91
92 void WebIDBDatabaseImpl::abort(long long transaction_id) {
93 if (database_backend_)
94 database_backend_->Abort(transaction_id);
95 }
96
97 void WebIDBDatabaseImpl::abort(long long transaction_id,
98 const WebIDBDatabaseError& error) {
99 if (database_backend_)
100 database_backend_->Abort(transaction_id,
101 IndexedDBDatabaseError::Create(error));
102 }
103
104 void WebIDBDatabaseImpl::commit(long long transaction_id) {
105 if (database_backend_)
106 database_backend_->Commit(transaction_id);
107 }
108
109 void WebIDBDatabaseImpl::openCursor(long long transaction_id,
110 long long object_store_id,
111 long long index_id,
112 const WebIDBKeyRange& key_range,
113 unsigned short direction,
114 bool key_only,
115 TaskType task_type,
116 WebIDBCallbacks* callbacks) {
117 if (database_backend_)
118 database_backend_->OpenCursor(
119 transaction_id,
120 object_store_id,
121 index_id,
122 make_scoped_ptr(new IndexedDBKeyRange(key_range)),
123 static_cast<indexed_db::CursorDirection>(direction),
124 key_only,
125 static_cast<IndexedDBDatabase::TaskType>(task_type),
126 IndexedDBCallbacksWrapper::Create(callbacks));
127 }
128
129 void WebIDBDatabaseImpl::count(long long transaction_id,
130 long long object_store_id,
131 long long index_id,
132 const WebIDBKeyRange& key_range,
133 WebIDBCallbacks* callbacks) {
134 if (database_backend_)
135 database_backend_->Count(transaction_id,
136 object_store_id,
137 index_id,
138 make_scoped_ptr(new IndexedDBKeyRange(key_range)),
139 IndexedDBCallbacksWrapper::Create(callbacks));
140 }
141
142 void WebIDBDatabaseImpl::get(long long transaction_id,
143 long long object_store_id,
144 long long index_id,
145 const WebIDBKeyRange& key_range,
146 bool key_only,
147 WebIDBCallbacks* callbacks) {
148 if (database_backend_)
149 database_backend_->Get(transaction_id,
150 object_store_id,
151 index_id,
152 make_scoped_ptr(new IndexedDBKeyRange(key_range)),
153 key_only,
154 IndexedDBCallbacksWrapper::Create(callbacks));
155 }
156
157 void WebIDBDatabaseImpl::put(long long transaction_id,
158 long long object_store_id,
159 const WebData& value,
160 const WebIDBKey& key,
161 PutMode put_mode,
162 WebIDBCallbacks* callbacks,
163 const WebVector<long long>& web_index_ids,
164 const WebVector<WebIndexKeys>& web_index_keys) {
165 if (!database_backend_)
166 return;
167
168 DCHECK_EQ(web_index_ids.size(), web_index_keys.size());
169 std::vector<int64> index_ids(web_index_ids.size());
170 std::vector<IndexedDBDatabase::IndexKeys> index_keys(web_index_keys.size());
171
172 for (size_t i = 0; i < web_index_ids.size(); ++i) {
173 index_ids[i] = web_index_ids[i];
174 IndexedDBKey::KeyArray index_key_list;
175 for (size_t j = 0; j < web_index_keys[i].size(); ++j)
176 index_key_list.push_back(IndexedDBKey(web_index_keys[i][j]));
177 index_keys[i] = index_key_list;
178 }
179
180 std::vector<char> value_buffer(value.data(), value.data() + value.size());
181 database_backend_->Put(transaction_id,
182 object_store_id,
183 &value_buffer,
184 make_scoped_ptr(new IndexedDBKey(key)),
185 static_cast<IndexedDBDatabase::PutMode>(put_mode),
186 IndexedDBCallbacksWrapper::Create(callbacks),
187 index_ids,
188 index_keys);
189 }
190
191 void WebIDBDatabaseImpl::setIndexKeys(
192 long long transaction_id,
193 long long object_store_id,
194 const WebIDBKey& primary_key,
195 const WebVector<long long>& web_index_ids,
196 const WebVector<WebIndexKeys>& web_index_keys) {
197 if (!database_backend_)
198 return;
199
200 DCHECK_EQ(web_index_ids.size(), web_index_keys.size());
201 std::vector<int64> index_ids(web_index_ids.size());
202 std::vector<IndexedDBDatabase::IndexKeys> index_keys(web_index_keys.size());
203
204 for (size_t i = 0; i < web_index_ids.size(); ++i) {
205 index_ids[i] = web_index_ids[i];
206 IndexedDBKey::KeyArray index_key_list;
207 for (size_t j = 0; j < web_index_keys[i].size(); ++j)
208 index_key_list.push_back(IndexedDBKey(web_index_keys[i][j]));
209 index_keys[i] = index_key_list;
210 }
211 database_backend_->SetIndexKeys(
212 transaction_id,
213 object_store_id,
214 make_scoped_ptr(new IndexedDBKey(primary_key)),
215 index_ids,
216 index_keys);
217 }
218
219 void WebIDBDatabaseImpl::setIndexesReady(
220 long long transaction_id,
221 long long object_store_id,
222 const WebVector<long long>& web_index_ids) {
223 if (!database_backend_)
224 return;
225
226 std::vector<int64> index_ids(web_index_ids.size());
227 for (size_t i = 0; i < web_index_ids.size(); ++i)
228 index_ids[i] = web_index_ids[i];
229 database_backend_->SetIndexesReady(
230 transaction_id, object_store_id, index_ids);
231 }
232
233 void WebIDBDatabaseImpl::deleteRange(long long transaction_id,
234 long long object_store_id,
235 const WebIDBKeyRange& key_range,
236 WebIDBCallbacks* callbacks) {
237 if (database_backend_)
238 database_backend_->DeleteRange(
239 transaction_id,
240 object_store_id,
241 make_scoped_ptr(new IndexedDBKeyRange(key_range)),
242 IndexedDBCallbacksWrapper::Create(callbacks));
243 }
244
245 void WebIDBDatabaseImpl::clear(long long transaction_id,
246 long long object_store_id,
247 WebIDBCallbacks* callbacks) {
248 if (database_backend_)
249 database_backend_->Clear(transaction_id,
250 object_store_id,
251 IndexedDBCallbacksWrapper::Create(callbacks));
252 }
253
254 void WebIDBDatabaseImpl::createIndex(long long transaction_id,
255 long long object_store_id,
256 long long index_id,
257 const WebString& name,
258 const WebIDBKeyPath& key_path,
259 bool unique,
260 bool multi_entry) {
261 if (database_backend_)
262 database_backend_->CreateIndex(transaction_id,
263 object_store_id,
264 index_id,
265 name,
266 IndexedDBKeyPath(key_path),
267 unique,
268 multi_entry);
269 }
270
271 void WebIDBDatabaseImpl::deleteIndex(long long transaction_id,
272 long long object_store_id,
273 long long index_id) {
274 if (database_backend_)
275 database_backend_->DeleteIndex(transaction_id, object_store_id, index_id);
276 }
277
278 } // namespace WebKit
OLDNEW
« no previous file with comments | « content/browser/indexed_db/webidbdatabase_impl.h ('k') | content/browser/indexed_db/webidbfactory_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698