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 |