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

Side by Side Diff: content/browser/in_process_webkit/indexed_db_dispatcher_host.cc

Issue 10083053: IndexedDB: Support get/getKey(keyRange) (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: address nits Created 8 years, 8 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
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/in_process_webkit/indexed_db_dispatcher_host.h" 5 #include "content/browser/in_process_webkit/indexed_db_dispatcher_host.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/utf_string_conversions.h" 9 #include "base/utf_string_conversions.h"
10 #include "content/browser/in_process_webkit/indexed_db_callbacks.h" 10 #include "content/browser/in_process_webkit/indexed_db_callbacks.h"
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexName, OnName) 499 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexName, OnName)
500 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexStoreName, OnStoreName) 500 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexStoreName, OnStoreName)
501 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexKeyPath, OnKeyPath) 501 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexKeyPath, OnKeyPath)
502 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexUnique, OnUnique) 502 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexUnique, OnUnique)
503 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexMultiEntry, OnMultiEntry) 503 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexMultiEntry, OnMultiEntry)
504 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexOpenObjectCursor, 504 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexOpenObjectCursor,
505 OnOpenObjectCursor) 505 OnOpenObjectCursor)
506 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexOpenKeyCursor, OnOpenKeyCursor) 506 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexOpenKeyCursor, OnOpenKeyCursor)
507 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexCount, OnCount) 507 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexCount, OnCount)
508 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexGetObject, OnGetObject) 508 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexGetObject, OnGetObject)
509 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexGetObjectByRange,
510 OnGetObjectByRange)
509 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexGetKey, OnGetKey) 511 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexGetKey, OnGetKey)
512 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexGetKeyByRange, OnGetKeyByRange)
510 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexDestroyed, OnDestroyed) 513 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexDestroyed, OnDestroyed)
511 IPC_MESSAGE_UNHANDLED(handled = false) 514 IPC_MESSAGE_UNHANDLED(handled = false)
512 IPC_END_MESSAGE_MAP() 515 IPC_END_MESSAGE_MAP()
513 return handled; 516 return handled;
514 } 517 }
515 518
516 void IndexedDBDispatcherHost::IndexDispatcherHost::Send( 519 void IndexedDBDispatcherHost::IndexDispatcherHost::Send(
517 IPC::Message* message) { 520 IPC::Message* message) {
518 parent_->Send(message); 521 parent_->Send(message);
519 } 522 }
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
625 if (!idb_transaction || !idb_index) 628 if (!idb_transaction || !idb_index)
626 return; 629 return;
627 630
628 *ec = 0; 631 *ec = 0;
629 scoped_ptr<WebIDBCallbacks> callbacks( 632 scoped_ptr<WebIDBCallbacks> callbacks(
630 new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, thread_id, 633 new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, thread_id,
631 response_id)); 634 response_id));
632 idb_index->getObject(key, callbacks.release(), *idb_transaction, *ec); 635 idb_index->getObject(key, callbacks.release(), *idb_transaction, *ec);
633 } 636 }
634 637
638 void IndexedDBDispatcherHost::IndexDispatcherHost::OnGetObjectByRange(
639 int idb_index_id,
640 int32 thread_id,
641 int32 response_id,
642 const IndexedDBKeyRange& key_range,
643 int32 transaction_id,
644 WebKit::WebExceptionCode* ec) {
645 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
646 WebIDBIndex* idb_index = parent_->GetOrTerminateProcess(
647 &map_, idb_index_id);
648 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess(
649 &parent_->transaction_dispatcher_host_->map_, transaction_id);
650 if (!idb_transaction || !idb_index)
651 return;
652
653 *ec = 0;
654 scoped_ptr<WebIDBCallbacks> callbacks(
655 new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, thread_id,
656 response_id));
657 idb_index->getObject(key_range, callbacks.release(), *idb_transaction, *ec);
658 }
659
635 void IndexedDBDispatcherHost::IndexDispatcherHost::OnGetKey( 660 void IndexedDBDispatcherHost::IndexDispatcherHost::OnGetKey(
636 int idb_index_id, 661 int idb_index_id,
637 int32 thread_id, 662 int32 thread_id,
638 int32 response_id, 663 int32 response_id,
639 const IndexedDBKey& key, 664 const IndexedDBKey& key,
640 int32 transaction_id, 665 int32 transaction_id,
641 WebKit::WebExceptionCode* ec) { 666 WebKit::WebExceptionCode* ec) {
642 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); 667 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
643 WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( 668 WebIDBIndex* idb_index = parent_->GetOrTerminateProcess(
644 &map_, idb_index_id); 669 &map_, idb_index_id);
645 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( 670 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess(
646 &parent_->transaction_dispatcher_host_->map_, transaction_id); 671 &parent_->transaction_dispatcher_host_->map_, transaction_id);
647 if (!idb_transaction || !idb_index) 672 if (!idb_transaction || !idb_index)
648 return; 673 return;
649 674
650 *ec = 0; 675 *ec = 0;
651 scoped_ptr<WebIDBCallbacks> callbacks( 676 scoped_ptr<WebIDBCallbacks> callbacks(
652 new IndexedDBCallbacks<WebIDBKey>(parent_, thread_id, response_id)); 677 new IndexedDBCallbacks<WebIDBKey>(parent_, thread_id, response_id));
653 idb_index->getKey(key, callbacks.release(), *idb_transaction, *ec); 678 idb_index->getKey(key, callbacks.release(), *idb_transaction, *ec);
654 } 679 }
655 680
681 void IndexedDBDispatcherHost::IndexDispatcherHost::OnGetKeyByRange(
682 int idb_index_id,
683 int32 thread_id,
684 int32 response_id,
685 const IndexedDBKeyRange& key_range,
686 int32 transaction_id,
687 WebKit::WebExceptionCode* ec) {
688 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
689 WebIDBIndex* idb_index = parent_->GetOrTerminateProcess(
690 &map_, idb_index_id);
691 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess(
692 &parent_->transaction_dispatcher_host_->map_, transaction_id);
693 if (!idb_transaction || !idb_index)
694 return;
695
696 *ec = 0;
697 scoped_ptr<WebIDBCallbacks> callbacks(
698 new IndexedDBCallbacks<WebIDBKey>(parent_, thread_id, response_id));
699 idb_index->getKey(key_range, callbacks.release(), *idb_transaction, *ec);
700 }
701
656 void IndexedDBDispatcherHost::IndexDispatcherHost::OnDestroyed( 702 void IndexedDBDispatcherHost::IndexDispatcherHost::OnDestroyed(
657 int32 object_id) { 703 int32 object_id) {
658 parent_->DestroyObject(&map_, object_id); 704 parent_->DestroyObject(&map_, object_id);
659 } 705 }
660 706
661 ////////////////////////////////////////////////////////////////////// 707 //////////////////////////////////////////////////////////////////////
662 // IndexedDBDispatcherHost::ObjectStoreDispatcherHost 708 // IndexedDBDispatcherHost::ObjectStoreDispatcherHost
663 // 709 //
664 710
665 IndexedDBDispatcherHost::ObjectStoreDispatcherHost::ObjectStoreDispatcherHost( 711 IndexedDBDispatcherHost::ObjectStoreDispatcherHost::ObjectStoreDispatcherHost(
666 IndexedDBDispatcherHost* parent) 712 IndexedDBDispatcherHost* parent)
667 : parent_(parent) { 713 : parent_(parent) {
668 map_.set_check_on_null_data(true); 714 map_.set_check_on_null_data(true);
669 } 715 }
670 716
671 IndexedDBDispatcherHost:: 717 IndexedDBDispatcherHost::
672 ObjectStoreDispatcherHost::~ObjectStoreDispatcherHost() { 718 ObjectStoreDispatcherHost::~ObjectStoreDispatcherHost() {
673 } 719 }
674 720
675 bool IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnMessageReceived( 721 bool IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnMessageReceived(
676 const IPC::Message& message, bool* msg_is_ok) { 722 const IPC::Message& message, bool* msg_is_ok) {
677 bool handled = true; 723 bool handled = true;
678 IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::ObjectStoreDispatcherHost, 724 IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::ObjectStoreDispatcherHost,
679 message, *msg_is_ok) 725 message, *msg_is_ok)
680 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreName, OnName) 726 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreName, OnName)
681 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreKeyPath, OnKeyPath) 727 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreKeyPath, OnKeyPath)
682 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreIndexNames, OnIndexNames) 728 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreIndexNames, OnIndexNames)
683 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreGet, OnGet) 729 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreGet, OnGet)
730 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreGetByRange, OnGetByRange)
684 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStorePut, OnPut) 731 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStorePut, OnPut)
685 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDelete, OnDelete) 732 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDelete, OnDelete)
686 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDeleteRange, OnDeleteRange) 733 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDeleteRange, OnDeleteRange)
687 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreClear, OnClear) 734 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreClear, OnClear)
688 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreCreateIndex, OnCreateIndex) 735 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreCreateIndex, OnCreateIndex)
689 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreIndex, OnIndex) 736 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreIndex, OnIndex)
690 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDeleteIndex, OnDeleteIndex) 737 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDeleteIndex, OnDeleteIndex)
691 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreOpenCursor, OnOpenCursor) 738 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreOpenCursor, OnOpenCursor)
692 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreCount, OnCount) 739 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreCount, OnCount)
693 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDestroyed, OnDestroyed) 740 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDestroyed, OnDestroyed)
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 if (!idb_transaction || !idb_object_store) 788 if (!idb_transaction || !idb_object_store)
742 return; 789 return;
743 790
744 *ec = 0; 791 *ec = 0;
745 scoped_ptr<WebIDBCallbacks> callbacks( 792 scoped_ptr<WebIDBCallbacks> callbacks(
746 new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, thread_id, 793 new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, thread_id,
747 response_id)); 794 response_id));
748 idb_object_store->get(key, callbacks.release(), *idb_transaction, *ec); 795 idb_object_store->get(key, callbacks.release(), *idb_transaction, *ec);
749 } 796 }
750 797
798 void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnGetByRange(
799 int idb_object_store_id,
800 int32 thread_id,
801 int32 response_id,
802 const IndexedDBKeyRange& key_range,
803 int32 transaction_id,
804 WebKit::WebExceptionCode* ec) {
805 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
806 WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess(
807 &map_, idb_object_store_id);
808 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess(
809 &parent_->transaction_dispatcher_host_->map_, transaction_id);
810 if (!idb_transaction || !idb_object_store)
811 return;
812
813 *ec = 0;
814 scoped_ptr<WebIDBCallbacks> callbacks(
815 new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, thread_id,
816 response_id));
817 idb_object_store->get(key_range, callbacks.release(), *idb_transaction, *ec);
818 }
819
751 void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnPut( 820 void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnPut(
752 const IndexedDBHostMsg_ObjectStorePut_Params& params, 821 const IndexedDBHostMsg_ObjectStorePut_Params& params,
753 WebKit::WebExceptionCode* ec) { 822 WebKit::WebExceptionCode* ec) {
754 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); 823 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
755 WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( 824 WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess(
756 &map_, params.idb_object_store_id); 825 &map_, params.idb_object_store_id);
757 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( 826 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess(
758 &parent_->transaction_dispatcher_host_->map_, params.transaction_id); 827 &parent_->transaction_dispatcher_host_->map_, params.transaction_id);
759 if (!idb_transaction || !idb_object_store) 828 if (!idb_transaction || !idb_object_store)
760 return; 829 return;
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
1193 } 1262 }
1194 idb_transaction->didCompleteTaskEvents(); 1263 idb_transaction->didCompleteTaskEvents();
1195 } 1264 }
1196 1265
1197 void IndexedDBDispatcherHost::TransactionDispatcherHost::OnDestroyed( 1266 void IndexedDBDispatcherHost::TransactionDispatcherHost::OnDestroyed(
1198 int32 object_id) { 1267 int32 object_id) {
1199 transaction_size_map_.erase(object_id); 1268 transaction_size_map_.erase(object_id);
1200 transaction_url_map_.erase(object_id); 1269 transaction_url_map_.erase(object_id);
1201 parent_->DestroyObject(&map_, object_id); 1270 parent_->DestroyObject(&map_, object_id);
1202 } 1271 }
OLDNEW
« no previous file with comments | « content/browser/in_process_webkit/indexed_db_dispatcher_host.h ('k') | content/common/indexed_db/indexed_db_dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698