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

Side by Side Diff: content/renderer/indexed_db_dispatcher.cc

Issue 8400061: IndexedDB: Recycle cursor objects when calling continue(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More style nits fixed Created 9 years, 1 month 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
« no previous file with comments | « content/renderer/indexed_db_dispatcher.h ('k') | content/renderer/renderer_webidbcursor_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/renderer/indexed_db_dispatcher.h" 5 #include "content/renderer/indexed_db_dispatcher.h"
6 6
7 #include "content/common/indexed_db_messages.h" 7 #include "content/common/indexed_db_messages.h"
8 #include "content/renderer/render_thread_impl.h" 8 #include "content/renderer/render_thread_impl.h"
9 #include "content/renderer/render_view_impl.h" 9 #include "content/renderer/render_view_impl.h"
10 #include "content/renderer/renderer_webidbcursor_impl.h" 10 #include "content/renderer/renderer_webidbcursor_impl.h"
(...skipping 24 matching lines...) Expand all
35 } 35 }
36 36
37 IndexedDBDispatcher::~IndexedDBDispatcher() { 37 IndexedDBDispatcher::~IndexedDBDispatcher() {
38 } 38 }
39 39
40 bool IndexedDBDispatcher::OnMessageReceived(const IPC::Message& msg) { 40 bool IndexedDBDispatcher::OnMessageReceived(const IPC::Message& msg) {
41 bool handled = true; 41 bool handled = true;
42 IPC_BEGIN_MESSAGE_MAP(IndexedDBDispatcher, msg) 42 IPC_BEGIN_MESSAGE_MAP(IndexedDBDispatcher, msg)
43 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBCursor, 43 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBCursor,
44 OnSuccessOpenCursor) 44 OnSuccessOpenCursor)
45 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessCursorContinue,
46 OnSuccessCursorContinue)
45 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBDatabase, 47 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBDatabase,
46 OnSuccessIDBDatabase) 48 OnSuccessIDBDatabase)
47 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIndexedDBKey, 49 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIndexedDBKey,
48 OnSuccessIndexedDBKey) 50 OnSuccessIndexedDBKey)
49 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBTransaction, 51 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBTransaction,
50 OnSuccessIDBTransaction) 52 OnSuccessIDBTransaction)
51 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessStringList, 53 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessStringList,
52 OnSuccessStringList) 54 OnSuccessStringList)
53 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessSerializedScriptValue, 55 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessSerializedScriptValue,
54 OnSuccessSerializedScriptValue) 56 OnSuccessSerializedScriptValue)
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 if (*ec) 374 if (*ec)
373 pending_callbacks_.Remove(params.response_id); 375 pending_callbacks_.Remove(params.response_id);
374 } 376 }
375 377
376 void IndexedDBDispatcher::RegisterWebIDBTransactionCallbacks( 378 void IndexedDBDispatcher::RegisterWebIDBTransactionCallbacks(
377 WebIDBTransactionCallbacks* callbacks, 379 WebIDBTransactionCallbacks* callbacks,
378 int32 id) { 380 int32 id) {
379 pending_transaction_callbacks_.AddWithID(callbacks, id); 381 pending_transaction_callbacks_.AddWithID(callbacks, id);
380 } 382 }
381 383
384 void IndexedDBDispatcher::CursorDestroyed(int32 cursor_id) {
385 cursors_.erase(cursor_id);
386 }
387
382 int32 IndexedDBDispatcher::TransactionId( 388 int32 IndexedDBDispatcher::TransactionId(
383 const WebIDBTransaction& transaction) { 389 const WebIDBTransaction& transaction) {
384 const RendererWebIDBTransactionImpl* impl = 390 const RendererWebIDBTransactionImpl* impl =
385 static_cast<const RendererWebIDBTransactionImpl*>(&transaction); 391 static_cast<const RendererWebIDBTransactionImpl*>(&transaction);
386 return impl->id(); 392 return impl->id();
387 } 393 }
388 394
389 void IndexedDBDispatcher::OnSuccessIDBDatabase(int32 response_id, 395 void IndexedDBDispatcher::OnSuccessIDBDatabase(int32 response_id,
390 int32 object_id) { 396 int32 object_id) {
391 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id); 397 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
(...skipping 27 matching lines...) Expand all
419 } 425 }
420 426
421 void IndexedDBDispatcher::OnSuccessSerializedScriptValue( 427 void IndexedDBDispatcher::OnSuccessSerializedScriptValue(
422 int32 response_id, const content::SerializedScriptValue& value) { 428 int32 response_id, const content::SerializedScriptValue& value) {
423 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id); 429 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
424 callbacks->onSuccess(value); 430 callbacks->onSuccess(value);
425 pending_callbacks_.Remove(response_id); 431 pending_callbacks_.Remove(response_id);
426 } 432 }
427 433
428 void IndexedDBDispatcher::OnSuccessOpenCursor(int32 repsonse_id, 434 void IndexedDBDispatcher::OnSuccessOpenCursor(int32 repsonse_id,
429 int32 object_id, const IndexedDBKey& key, const IndexedDBKey& primaryKey, 435 int32 object_id, const IndexedDBKey& key, const IndexedDBKey& primary_key,
430 const content::SerializedScriptValue& value) { 436 const content::SerializedScriptValue& value) {
431 WebIDBCallbacks* callbacks = 437 WebIDBCallbacks* callbacks =
432 pending_callbacks_.Lookup(repsonse_id); 438 pending_callbacks_.Lookup(repsonse_id);
433 callbacks->onSuccess(new RendererWebIDBCursorImpl(object_id, key, 439
434 primaryKey, value)); 440 RendererWebIDBCursorImpl* cursor = new RendererWebIDBCursorImpl(object_id);
441 cursors_[object_id] = cursor;
442 cursor->SetKeyAndValue(key, primary_key, value);
443 callbacks->onSuccess(cursor);
444
435 pending_callbacks_.Remove(repsonse_id); 445 pending_callbacks_.Remove(repsonse_id);
436 } 446 }
437 447
448 void IndexedDBDispatcher::OnSuccessCursorContinue(
449 int32 response_id,
450 int32 cursor_id,
451 const IndexedDBKey& key,
452 const IndexedDBKey& primary_key,
453 const content::SerializedScriptValue& value) {
454 RendererWebIDBCursorImpl* cursor = cursors_[cursor_id];
455 DCHECK(cursor);
456 cursor->SetKeyAndValue(key, primary_key, value);
457
458 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
459 callbacks->onSuccessWithContinuation();
460
461 pending_callbacks_.Remove(response_id);
462 }
463
438 void IndexedDBDispatcher::OnBlocked(int32 response_id) { 464 void IndexedDBDispatcher::OnBlocked(int32 response_id) {
439 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id); 465 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
440 callbacks->onBlocked(); 466 callbacks->onBlocked();
441 } 467 }
442 468
443 void IndexedDBDispatcher::OnError(int32 response_id, int code, 469 void IndexedDBDispatcher::OnError(int32 response_id, int code,
444 const string16& message) { 470 const string16& message) {
445 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id); 471 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(response_id);
446 callbacks->onError(WebIDBDatabaseError(code, message)); 472 callbacks->onError(WebIDBDatabaseError(code, message));
447 pending_callbacks_.Remove(response_id); 473 pending_callbacks_.Remove(response_id);
(...skipping 15 matching lines...) Expand all
463 489
464 void IndexedDBDispatcher::OnVersionChange(int32 database_id, 490 void IndexedDBDispatcher::OnVersionChange(int32 database_id,
465 const string16& newVersion) { 491 const string16& newVersion) {
466 WebIDBDatabaseCallbacks* callbacks = 492 WebIDBDatabaseCallbacks* callbacks =
467 pending_database_callbacks_.Lookup(database_id); 493 pending_database_callbacks_.Lookup(database_id);
468 // callbacks would be NULL if a versionchange event is received after close 494 // callbacks would be NULL if a versionchange event is received after close
469 // has been called. 495 // has been called.
470 if (callbacks) 496 if (callbacks)
471 callbacks->onVersionChange(newVersion); 497 callbacks->onVersionChange(newVersion);
472 } 498 }
OLDNEW
« no previous file with comments | « content/renderer/indexed_db_dispatcher.h ('k') | content/renderer/renderer_webidbcursor_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698