| OLD | NEW |
| 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/common/indexed_db/indexed_db_dispatcher.h" | 5 #include "content/common/indexed_db/indexed_db_dispatcher.h" |
| 6 | 6 |
| 7 #include "base/lazy_instance.h" | 7 #include "base/lazy_instance.h" |
| 8 #include "base/threading/thread_local.h" | 8 #include "base/threading/thread_local.h" |
| 9 #include "content/common/child_thread.h" | 9 #include "content/common/child_thread.h" |
| 10 #include "content/common/indexed_db/indexed_db_messages.h" | 10 #include "content/common/indexed_db/indexed_db_messages.h" |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 bool handled = true; | 126 bool handled = true; |
| 127 IPC_BEGIN_MESSAGE_MAP(IndexedDBDispatcher, msg) | 127 IPC_BEGIN_MESSAGE_MAP(IndexedDBDispatcher, msg) |
| 128 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBCursor, | 128 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBCursor, |
| 129 OnSuccessOpenCursor) | 129 OnSuccessOpenCursor) |
| 130 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessCursorAdvance, | 130 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessCursorAdvance, |
| 131 OnSuccessCursorContinue) | 131 OnSuccessCursorContinue) |
| 132 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessCursorContinue, | 132 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessCursorContinue, |
| 133 OnSuccessCursorContinue) | 133 OnSuccessCursorContinue) |
| 134 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessCursorPrefetch, | 134 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessCursorPrefetch, |
| 135 OnSuccessCursorPrefetch) | 135 OnSuccessCursorPrefetch) |
| 136 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBDatabaseOld, | |
| 137 OnSuccessIDBDatabaseOld) | |
| 138 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBDatabase, | 136 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIDBDatabase, |
| 139 OnSuccessIDBDatabase) | 137 OnSuccessIDBDatabase) |
| 140 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIndexedDBKey, | 138 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessIndexedDBKey, |
| 141 OnSuccessIndexedDBKey) | 139 OnSuccessIndexedDBKey) |
| 142 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessStringList, | 140 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessStringList, |
| 143 OnSuccessStringList) | 141 OnSuccessStringList) |
| 144 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessSerializedScriptValue, | 142 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessSerializedScriptValue, |
| 145 OnSuccessSerializedScriptValue) | 143 OnSuccessSerializedScriptValue) |
| 146 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessSerializedScriptValueWithKe
y, | 144 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessSerializedScriptValueWithKe
y, |
| 147 OnSuccessSerializedScriptValueWithKey) | 145 OnSuccessSerializedScriptValueWithKey) |
| 148 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessInteger, | 146 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessInteger, |
| 149 OnSuccessInteger) | 147 OnSuccessInteger) |
| 150 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessUndefined, | 148 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksSuccessUndefined, |
| 151 OnSuccessUndefined) | 149 OnSuccessUndefined) |
| 152 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksError, OnError) | 150 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksError, OnError) |
| 153 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksIntBlocked, OnIntBlocked) | 151 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksIntBlocked, OnIntBlocked) |
| 154 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksUpgradeNeededOld, | |
| 155 OnUpgradeNeededOld) | |
| 156 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksUpgradeNeeded, OnUpgradeNeeded) | 152 IPC_MESSAGE_HANDLER(IndexedDBMsg_CallbacksUpgradeNeeded, OnUpgradeNeeded) |
| 157 IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksForcedClose, | 153 IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksForcedClose, |
| 158 OnForcedClose) | 154 OnForcedClose) |
| 159 IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksIntVersionChange, | 155 IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksIntVersionChange, |
| 160 OnIntVersionChange) | 156 OnIntVersionChange) |
| 161 IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksVersionChange, | 157 IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksVersionChange, |
| 162 OnVersionChange) | 158 OnVersionChange) |
| 163 IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksAbort, OnAbort) | 159 IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksAbort, OnAbort) |
| 164 IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksComplete, OnComplete) | 160 IPC_MESSAGE_HANDLER(IndexedDBMsg_DatabaseCallbacksComplete, OnComplete) |
| 165 IPC_MESSAGE_UNHANDLED(handled = false) | 161 IPC_MESSAGE_UNHANDLED(handled = false) |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 | 496 |
| 501 void IndexedDBDispatcher::CursorDestroyed(int32 ipc_cursor_id) { | 497 void IndexedDBDispatcher::CursorDestroyed(int32 ipc_cursor_id) { |
| 502 cursors_.erase(ipc_cursor_id); | 498 cursors_.erase(ipc_cursor_id); |
| 503 } | 499 } |
| 504 | 500 |
| 505 void IndexedDBDispatcher::DatabaseDestroyed(int32 ipc_database_id) { | 501 void IndexedDBDispatcher::DatabaseDestroyed(int32 ipc_database_id) { |
| 506 DCHECK_EQ(databases_.count(ipc_database_id), 1u); | 502 DCHECK_EQ(databases_.count(ipc_database_id), 1u); |
| 507 databases_.erase(ipc_database_id); | 503 databases_.erase(ipc_database_id); |
| 508 } | 504 } |
| 509 | 505 |
| 510 void IndexedDBDispatcher::OnSuccessIDBDatabaseOld(int32 ipc_thread_id, | |
| 511 int32 ipc_response_id, | |
| 512 int32 ipc_object_id) { | |
| 513 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | |
| 514 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_response_id); | |
| 515 if (!callbacks) | |
| 516 return; | |
| 517 // If an upgrade was performed, count will be non-zero. | |
| 518 if (!databases_.count(ipc_object_id)) | |
| 519 databases_[ipc_object_id] = new RendererWebIDBDatabaseImpl(ipc_object_id); | |
| 520 DCHECK_EQ(databases_.count(ipc_object_id), 1u); | |
| 521 callbacks->onSuccess(databases_[ipc_object_id]); | |
| 522 pending_callbacks_.Remove(ipc_response_id); | |
| 523 } | |
| 524 | |
| 525 void IndexedDBDispatcher::OnSuccessIDBDatabase( | 506 void IndexedDBDispatcher::OnSuccessIDBDatabase( |
| 526 int32 ipc_thread_id, | 507 int32 ipc_thread_id, |
| 527 int32 ipc_response_id, | 508 int32 ipc_response_id, |
| 528 int32 ipc_object_id, | 509 int32 ipc_object_id, |
| 529 const IndexedDBDatabaseMetadata& idb_metadata) { | 510 const IndexedDBDatabaseMetadata& idb_metadata) { |
| 530 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 511 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 531 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_response_id); | 512 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_response_id); |
| 532 if (!callbacks) | 513 if (!callbacks) |
| 533 return; | 514 return; |
| 534 WebIDBMetadata metadata(ConvertMetadata(idb_metadata)); | 515 WebIDBMetadata metadata(ConvertMetadata(idb_metadata)); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 | 655 |
| 675 void IndexedDBDispatcher::OnIntBlocked(int32 ipc_thread_id, | 656 void IndexedDBDispatcher::OnIntBlocked(int32 ipc_thread_id, |
| 676 int32 ipc_response_id, | 657 int32 ipc_response_id, |
| 677 int64 existing_version) { | 658 int64 existing_version) { |
| 678 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 659 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 679 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_response_id); | 660 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_response_id); |
| 680 DCHECK(callbacks); | 661 DCHECK(callbacks); |
| 681 callbacks->onBlocked(existing_version); | 662 callbacks->onBlocked(existing_version); |
| 682 } | 663 } |
| 683 | 664 |
| 684 void IndexedDBDispatcher::OnUpgradeNeededOld(int32 ipc_thread_id, | |
| 685 int32 ipc_response_id, | |
| 686 int32 ipc_database_id, | |
| 687 int64 old_version) { | |
| 688 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | |
| 689 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_response_id); | |
| 690 DCHECK(callbacks); | |
| 691 DCHECK(!databases_.count(ipc_database_id)); | |
| 692 databases_[ipc_database_id] = new RendererWebIDBDatabaseImpl(ipc_database_id); | |
| 693 callbacks->onUpgradeNeeded( | |
| 694 old_version, | |
| 695 0, | |
| 696 databases_[ipc_database_id]); | |
| 697 } | |
| 698 | |
| 699 void IndexedDBDispatcher::OnUpgradeNeeded( | 665 void IndexedDBDispatcher::OnUpgradeNeeded( |
| 700 int32 ipc_thread_id, | 666 int32 ipc_thread_id, |
| 701 int32 ipc_response_id, | 667 int32 ipc_response_id, |
| 702 int32 ipc_database_id, | 668 int32 ipc_database_id, |
| 703 int64 old_version, | 669 int64 old_version, |
| 704 const IndexedDBDatabaseMetadata& idb_metadata) { | 670 const IndexedDBDatabaseMetadata& idb_metadata) { |
| 705 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 671 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 706 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_response_id); | 672 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_response_id); |
| 707 DCHECK(callbacks); | 673 DCHECK(callbacks); |
| 708 WebIDBMetadata metadata(ConvertMetadata(idb_metadata)); | 674 WebIDBMetadata metadata(ConvertMetadata(idb_metadata)); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 int32 ipc_exception_cursor_id) { | 754 int32 ipc_exception_cursor_id) { |
| 789 typedef std::map<int32, RendererWebIDBCursorImpl*>::iterator Iterator; | 755 typedef std::map<int32, RendererWebIDBCursorImpl*>::iterator Iterator; |
| 790 for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) { | 756 for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) { |
| 791 if (i->first == ipc_exception_cursor_id) | 757 if (i->first == ipc_exception_cursor_id) |
| 792 continue; | 758 continue; |
| 793 i->second->ResetPrefetchCache(); | 759 i->second->ResetPrefetchCache(); |
| 794 } | 760 } |
| 795 } | 761 } |
| 796 | 762 |
| 797 } // namespace content | 763 } // namespace content |
| OLD | NEW |