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

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

Issue 197753011: Add IndexedDBValue wrapper class to group blob info with bits. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Yet still happier clang, I hope. Created 6 years, 9 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/indexed_db/indexed_db_callbacks.h" 5 #include "content/browser/indexed_db/indexed_db_callbacks.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "content/browser/indexed_db/indexed_db_connection.h" 9 #include "content/browser/indexed_db/indexed_db_connection.h"
10 #include "content/browser/indexed_db/indexed_db_cursor.h" 10 #include "content/browser/indexed_db/indexed_db_cursor.h"
11 #include "content/browser/indexed_db/indexed_db_database_callbacks.h" 11 #include "content/browser/indexed_db/indexed_db_database_callbacks.h"
12 #include "content/browser/indexed_db/indexed_db_database_error.h" 12 #include "content/browser/indexed_db/indexed_db_database_error.h"
13 #include "content/browser/indexed_db/indexed_db_metadata.h" 13 #include "content/browser/indexed_db/indexed_db_metadata.h"
14 #include "content/browser/indexed_db/indexed_db_value.h"
14 #include "content/common/indexed_db/indexed_db_constants.h" 15 #include "content/common/indexed_db/indexed_db_constants.h"
15 #include "content/common/indexed_db/indexed_db_messages.h" 16 #include "content/common/indexed_db/indexed_db_messages.h"
16 #include "webkit/browser/quota/quota_manager.h" 17 #include "webkit/browser/quota/quota_manager.h"
17 18
18 namespace content { 19 namespace content {
19 20
20 namespace { 21 namespace {
21 const int32 kNoCursor = -1; 22 const int32 kNoCursor = -1;
22 const int32 kNoDatabaseCallbacks = -1; 23 const int32 kNoDatabaseCallbacks = -1;
23 const int64 kNoTransaction = -1; 24 const int64 kNoTransaction = -1;
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 ipc_callbacks_id_, 165 ipc_callbacks_id_,
165 ipc_database_callbacks_id_, 166 ipc_database_callbacks_id_,
166 ipc_object_id, 167 ipc_object_id,
167 IndexedDBDispatcherHost::ConvertMetadata(metadata))); 168 IndexedDBDispatcherHost::ConvertMetadata(metadata)));
168 dispatcher_host_ = NULL; 169 dispatcher_host_ = NULL;
169 } 170 }
170 171
171 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, 172 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor,
172 const IndexedDBKey& key, 173 const IndexedDBKey& key,
173 const IndexedDBKey& primary_key, 174 const IndexedDBKey& primary_key,
174 std::string* value) { 175 IndexedDBValue* value) {
175 DCHECK(dispatcher_host_.get()); 176 DCHECK(dispatcher_host_.get());
176 177
177 DCHECK_EQ(kNoCursor, ipc_cursor_id_); 178 DCHECK_EQ(kNoCursor, ipc_cursor_id_);
178 DCHECK_EQ(kNoTransaction, host_transaction_id_); 179 DCHECK_EQ(kNoTransaction, host_transaction_id_);
179 DCHECK_EQ(kNoDatabase, ipc_database_id_); 180 DCHECK_EQ(kNoDatabase, ipc_database_id_);
180 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); 181 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
181 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 182 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
182 183
183 int32 ipc_object_id = dispatcher_host_->Add(cursor.get()); 184 int32 ipc_object_id = dispatcher_host_->Add(cursor.get());
184 IndexedDBMsg_CallbacksSuccessIDBCursor_Params params; 185 IndexedDBMsg_CallbacksSuccessIDBCursor_Params params;
185 params.ipc_thread_id = ipc_thread_id_; 186 params.ipc_thread_id = ipc_thread_id_;
186 params.ipc_callbacks_id = ipc_callbacks_id_; 187 params.ipc_callbacks_id = ipc_callbacks_id_;
187 params.ipc_cursor_id = ipc_object_id; 188 params.ipc_cursor_id = ipc_object_id;
188 params.key = key; 189 params.key = key;
189 params.primary_key = primary_key; 190 params.primary_key = primary_key;
190 if (value && !value->empty()) 191 if (value && !value->empty())
191 std::swap(params.value, *value); 192 std::swap(params.value, value->bits);
192 // TODO(alecflett): Avoid a copy here: the whole params object is 193 // TODO(alecflett): Avoid a copy here: the whole params object is
193 // being copied into the message. 194 // being copied into the message.
194 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIDBCursor(params)); 195 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIDBCursor(params));
195 196
196 dispatcher_host_ = NULL; 197 dispatcher_host_ = NULL;
197 } 198 }
198 199
199 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, 200 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key,
200 const IndexedDBKey& primary_key, 201 const IndexedDBKey& primary_key,
201 std::string* value) { 202 IndexedDBValue* value) {
202 DCHECK(dispatcher_host_.get()); 203 DCHECK(dispatcher_host_.get());
203 204
204 DCHECK_NE(kNoCursor, ipc_cursor_id_); 205 DCHECK_NE(kNoCursor, ipc_cursor_id_);
205 DCHECK_EQ(kNoTransaction, host_transaction_id_); 206 DCHECK_EQ(kNoTransaction, host_transaction_id_);
206 DCHECK_EQ(kNoDatabase, ipc_database_id_); 207 DCHECK_EQ(kNoDatabase, ipc_database_id_);
207 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); 208 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
208 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 209 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
209 210
210 IndexedDBCursor* idb_cursor = 211 IndexedDBCursor* idb_cursor =
211 dispatcher_host_->GetCursorFromId(ipc_cursor_id_); 212 dispatcher_host_->GetCursorFromId(ipc_cursor_id_);
212 213
213 DCHECK(idb_cursor); 214 DCHECK(idb_cursor);
214 if (!idb_cursor) 215 if (!idb_cursor)
215 return; 216 return;
216 IndexedDBMsg_CallbacksSuccessCursorContinue_Params params; 217 IndexedDBMsg_CallbacksSuccessCursorContinue_Params params;
217 params.ipc_thread_id = ipc_thread_id_; 218 params.ipc_thread_id = ipc_thread_id_;
218 params.ipc_callbacks_id = ipc_callbacks_id_; 219 params.ipc_callbacks_id = ipc_callbacks_id_;
219 params.ipc_cursor_id = ipc_cursor_id_; 220 params.ipc_cursor_id = ipc_cursor_id_;
220 params.key = key; 221 params.key = key;
221 params.primary_key = primary_key; 222 params.primary_key = primary_key;
222 if (value && !value->empty()) 223 if (value && !value->empty())
223 std::swap(params.value, *value); 224 std::swap(params.value, value->bits);
224 // TODO(alecflett): Avoid a copy here: the whole params object is 225 // TODO(alecflett): Avoid a copy here: the whole params object is
225 // being copied into the message. 226 // being copied into the message.
226 dispatcher_host_->Send( 227 dispatcher_host_->Send(
227 new IndexedDBMsg_CallbacksSuccessCursorContinue(params)); 228 new IndexedDBMsg_CallbacksSuccessCursorContinue(params));
228 dispatcher_host_ = NULL; 229 dispatcher_host_ = NULL;
229 } 230 }
230 231
231 void IndexedDBCallbacks::OnSuccessWithPrefetch( 232 void IndexedDBCallbacks::OnSuccessWithPrefetch(
232 const std::vector<IndexedDBKey>& keys, 233 const std::vector<IndexedDBKey>& keys,
233 const std::vector<IndexedDBKey>& primary_keys, 234 const std::vector<IndexedDBKey>& primary_keys,
234 const std::vector<std::string>& values) { 235 const std::vector<IndexedDBValue>& values) {
235 DCHECK_EQ(keys.size(), primary_keys.size()); 236 DCHECK_EQ(keys.size(), primary_keys.size());
236 DCHECK_EQ(keys.size(), values.size()); 237 DCHECK_EQ(keys.size(), values.size());
237 238
238 DCHECK(dispatcher_host_.get()); 239 DCHECK(dispatcher_host_.get());
239 240
240 DCHECK_NE(kNoCursor, ipc_cursor_id_); 241 DCHECK_NE(kNoCursor, ipc_cursor_id_);
241 DCHECK_EQ(kNoTransaction, host_transaction_id_); 242 DCHECK_EQ(kNoTransaction, host_transaction_id_);
242 DCHECK_EQ(kNoDatabase, ipc_database_id_); 243 DCHECK_EQ(kNoDatabase, ipc_database_id_);
243 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); 244 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
244 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 245 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
245 246
246 std::vector<IndexedDBKey> msgKeys; 247 std::vector<IndexedDBKey> msgKeys;
247 std::vector<IndexedDBKey> msgPrimaryKeys; 248 std::vector<IndexedDBKey> msgPrimaryKeys;
248 249
249 for (size_t i = 0; i < keys.size(); ++i) { 250 for (size_t i = 0; i < keys.size(); ++i) {
250 msgKeys.push_back(keys[i]); 251 msgKeys.push_back(keys[i]);
251 msgPrimaryKeys.push_back(primary_keys[i]); 252 msgPrimaryKeys.push_back(primary_keys[i]);
252 } 253 }
253 254
254 IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params params; 255 IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params params;
255 params.ipc_thread_id = ipc_thread_id_; 256 params.ipc_thread_id = ipc_thread_id_;
256 params.ipc_callbacks_id = ipc_callbacks_id_; 257 params.ipc_callbacks_id = ipc_callbacks_id_;
257 params.ipc_cursor_id = ipc_cursor_id_; 258 params.ipc_cursor_id = ipc_cursor_id_;
258 params.keys = msgKeys; 259 params.keys = msgKeys;
259 params.primary_keys = msgPrimaryKeys; 260 params.primary_keys = msgPrimaryKeys;
260 params.values = values; 261 std::vector<IndexedDBValue>::const_iterator iter;
262 for (iter = values.begin(); iter != values.end(); ++iter)
263 params.values.push_back(iter->bits);
261 dispatcher_host_->Send( 264 dispatcher_host_->Send(
262 new IndexedDBMsg_CallbacksSuccessCursorPrefetch(params)); 265 new IndexedDBMsg_CallbacksSuccessCursorPrefetch(params));
263 dispatcher_host_ = NULL; 266 dispatcher_host_ = NULL;
264 } 267 }
265 268
266 void IndexedDBCallbacks::OnSuccess(std::string* value, 269 void IndexedDBCallbacks::OnSuccess(IndexedDBValue* value,
267 const IndexedDBKey& key, 270 const IndexedDBKey& key,
268 const IndexedDBKeyPath& key_path) { 271 const IndexedDBKeyPath& key_path) {
269 DCHECK(dispatcher_host_.get()); 272 DCHECK(dispatcher_host_.get());
270 273
271 DCHECK_EQ(kNoCursor, ipc_cursor_id_); 274 DCHECK_EQ(kNoCursor, ipc_cursor_id_);
272 DCHECK_EQ(kNoTransaction, host_transaction_id_); 275 DCHECK_EQ(kNoTransaction, host_transaction_id_);
273 DCHECK_EQ(kNoDatabase, ipc_database_id_); 276 DCHECK_EQ(kNoDatabase, ipc_database_id_);
274 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); 277 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
275 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 278 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
276 279
277 std::string value_copy; 280 std::string value_copy;
278 if (value && !value->empty()) 281 if (value && !value->empty())
279 std::swap(value_copy, *value); 282 std::swap(value_copy, value->bits);
280 283
281 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValueWithKey( 284 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValueWithKey(
282 ipc_thread_id_, 285 ipc_thread_id_,
283 ipc_callbacks_id_, 286 ipc_callbacks_id_,
284 // TODO(alecflett): Avoid a copy here. 287 // TODO(alecflett): Avoid a copy here.
285 value_copy, 288 value_copy,
286 key, 289 key,
287 key_path)); 290 key_path));
288 dispatcher_host_ = NULL; 291 dispatcher_host_ = NULL;
289 } 292 }
290 293
291 void IndexedDBCallbacks::OnSuccess(std::string* value) { 294 void IndexedDBCallbacks::OnSuccess(IndexedDBValue* value) {
292 DCHECK(dispatcher_host_.get()); 295 DCHECK(dispatcher_host_.get());
293 296
294 DCHECK(kNoCursor == ipc_cursor_id_ || value == NULL); 297 DCHECK(kNoCursor == ipc_cursor_id_ || value == NULL);
295 DCHECK_EQ(kNoTransaction, host_transaction_id_); 298 DCHECK_EQ(kNoTransaction, host_transaction_id_);
296 DCHECK_EQ(kNoDatabase, ipc_database_id_); 299 DCHECK_EQ(kNoDatabase, ipc_database_id_);
297 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); 300 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
298 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 301 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
299 302
300 std::string value_copy; 303 std::string value_copy;
301 if (value && !value->empty()) 304 if (value && !value->empty())
302 std::swap(value_copy, *value); 305 std::swap(value_copy, value->bits);
303 306
304 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValue( 307 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValue(
305 ipc_thread_id_, 308 ipc_thread_id_,
306 ipc_callbacks_id_, 309 ipc_callbacks_id_,
307 // TODO(alecflett): avoid a copy here. 310 // TODO(alecflett): avoid a copy here.
308 value_copy)); 311 value_copy));
309 dispatcher_host_ = NULL; 312 dispatcher_host_ = NULL;
310 } 313 }
311 314
312 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { 315 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) {
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 DCHECK_EQ(kNoDatabase, ipc_database_id_); 348 DCHECK_EQ(kNoDatabase, ipc_database_id_);
346 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); 349 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
347 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); 350 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_);
348 351
349 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined( 352 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined(
350 ipc_thread_id_, ipc_callbacks_id_)); 353 ipc_thread_id_, ipc_callbacks_id_));
351 dispatcher_host_ = NULL; 354 dispatcher_host_ = NULL;
352 } 355 }
353 356
354 } // namespace content 357 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_callbacks.h ('k') | content/browser/indexed_db/indexed_db_cursor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698