| 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/browser/indexed_db/indexed_db_dispatcher_host.h" | 5 #include "content/browser/indexed_db/indexed_db_dispatcher_host.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 IndexedDBDispatcherHost::IndexedDBDispatcherHost( | 58 IndexedDBDispatcherHost::IndexedDBDispatcherHost( |
| 59 int ipc_process_id, | 59 int ipc_process_id, |
| 60 net::URLRequestContextGetter* request_context_getter, | 60 net::URLRequestContextGetter* request_context_getter, |
| 61 IndexedDBContextImpl* indexed_db_context, | 61 IndexedDBContextImpl* indexed_db_context, |
| 62 ChromeBlobStorageContext* blob_storage_context) | 62 ChromeBlobStorageContext* blob_storage_context) |
| 63 : BrowserMessageFilter(IndexedDBMsgStart), | 63 : BrowserMessageFilter(IndexedDBMsgStart), |
| 64 request_context_getter_(request_context_getter), | 64 request_context_getter_(request_context_getter), |
| 65 request_context_(NULL), | 65 request_context_(NULL), |
| 66 indexed_db_context_(indexed_db_context), | 66 indexed_db_context_(indexed_db_context), |
| 67 blob_storage_context_(blob_storage_context), | 67 blob_storage_context_(blob_storage_context), |
| 68 database_dispatcher_host_(new DatabaseDispatcherHost(this)), | 68 database_dispatcher_host_(base::MakeUnique<DatabaseDispatcherHost>(this)), |
| 69 cursor_dispatcher_host_(new CursorDispatcherHost(this)), | 69 cursor_dispatcher_host_(base::MakeUnique<CursorDispatcherHost>(this)), |
| 70 ipc_process_id_(ipc_process_id) { | 70 ipc_process_id_(ipc_process_id) { |
| 71 DCHECK(indexed_db_context_.get()); | 71 DCHECK(indexed_db_context_.get()); |
| 72 } | 72 } |
| 73 | 73 |
| 74 IndexedDBDispatcherHost::IndexedDBDispatcherHost( | 74 IndexedDBDispatcherHost::IndexedDBDispatcherHost( |
| 75 int ipc_process_id, | 75 int ipc_process_id, |
| 76 net::URLRequestContext* request_context, | 76 net::URLRequestContext* request_context, |
| 77 IndexedDBContextImpl* indexed_db_context, | 77 IndexedDBContextImpl* indexed_db_context, |
| 78 ChromeBlobStorageContext* blob_storage_context) | 78 ChromeBlobStorageContext* blob_storage_context) |
| 79 : BrowserMessageFilter(IndexedDBMsgStart), | 79 : BrowserMessageFilter(IndexedDBMsgStart), |
| 80 request_context_(request_context), | 80 request_context_(request_context), |
| 81 indexed_db_context_(indexed_db_context), | 81 indexed_db_context_(indexed_db_context), |
| 82 blob_storage_context_(blob_storage_context), | 82 blob_storage_context_(blob_storage_context), |
| 83 database_dispatcher_host_(new DatabaseDispatcherHost(this)), | 83 database_dispatcher_host_(base::MakeUnique<DatabaseDispatcherHost>(this)), |
| 84 cursor_dispatcher_host_(new CursorDispatcherHost(this)), | 84 cursor_dispatcher_host_(base::MakeUnique<CursorDispatcherHost>(this)), |
| 85 ipc_process_id_(ipc_process_id) { | 85 ipc_process_id_(ipc_process_id) { |
| 86 DCHECK(indexed_db_context_.get()); | 86 DCHECK(indexed_db_context_.get()); |
| 87 } | 87 } |
| 88 | 88 |
| 89 IndexedDBDispatcherHost::~IndexedDBDispatcherHost() { | 89 IndexedDBDispatcherHost::~IndexedDBDispatcherHost() { |
| 90 for (auto& iter : blob_data_handle_map_) | 90 for (auto& iter : blob_data_handle_map_) |
| 91 delete iter.second.first; | 91 delete iter.second.first; |
| 92 } | 92 } |
| 93 | 93 |
| 94 void IndexedDBDispatcherHost::OnChannelConnected(int32_t peer_pid) { | 94 void IndexedDBDispatcherHost::OnChannelConnected(int32_t peer_pid) { |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 // TODO(dgrogan): Don't let a non-existing database be opened (and therefore | 373 // TODO(dgrogan): Don't let a non-existing database be opened (and therefore |
| 374 // created) if this origin is already over quota. | 374 // created) if this origin is already over quota. |
| 375 scoped_refptr<IndexedDBCallbacks> callbacks = new IndexedDBCallbacks( | 375 scoped_refptr<IndexedDBCallbacks> callbacks = new IndexedDBCallbacks( |
| 376 this, params.ipc_thread_id, params.ipc_callbacks_id, | 376 this, params.ipc_thread_id, params.ipc_callbacks_id, |
| 377 params.ipc_database_callbacks_id, host_transaction_id, params.origin); | 377 params.ipc_database_callbacks_id, host_transaction_id, params.origin); |
| 378 callbacks->SetConnectionOpenStartTime(begin_time); | 378 callbacks->SetConnectionOpenStartTime(begin_time); |
| 379 scoped_refptr<IndexedDBDatabaseCallbacks> database_callbacks = | 379 scoped_refptr<IndexedDBDatabaseCallbacks> database_callbacks = |
| 380 new IndexedDBDatabaseCallbacks( | 380 new IndexedDBDatabaseCallbacks( |
| 381 this, params.ipc_thread_id, params.ipc_database_callbacks_id); | 381 this, params.ipc_thread_id, params.ipc_database_callbacks_id); |
| 382 std::unique_ptr<IndexedDBPendingConnection> connection = | 382 std::unique_ptr<IndexedDBPendingConnection> connection = |
| 383 base::WrapUnique(new IndexedDBPendingConnection( | 383 base::MakeUnique<IndexedDBPendingConnection>( |
| 384 callbacks, database_callbacks, ipc_process_id_, host_transaction_id, | 384 callbacks, database_callbacks, ipc_process_id_, host_transaction_id, |
| 385 params.version)); | 385 params.version); |
| 386 DCHECK(request_context_); | 386 DCHECK(request_context_); |
| 387 context()->GetIDBFactory()->Open(params.name, std::move(connection), | 387 context()->GetIDBFactory()->Open(params.name, std::move(connection), |
| 388 request_context_, params.origin, | 388 request_context_, params.origin, |
| 389 indexed_db_path); | 389 indexed_db_path); |
| 390 } | 390 } |
| 391 | 391 |
| 392 void IndexedDBDispatcherHost::OnIDBFactoryDeleteDatabase( | 392 void IndexedDBDispatcherHost::OnIDBFactoryDeleteDatabase( |
| 393 const IndexedDBHostMsg_FactoryDeleteDatabase_Params& params) { | 393 const IndexedDBHostMsg_FactoryDeleteDatabase_Params& params) { |
| 394 DCHECK(indexed_db_context_->TaskRunner()->RunsTasksOnCurrentThread()); | 394 DCHECK(indexed_db_context_->TaskRunner()->RunsTasksOnCurrentThread()); |
| 395 | 395 |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 686 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); | 686 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); |
| 687 IndexedDBConnection* connection = | 687 IndexedDBConnection* connection = |
| 688 parent_->GetOrTerminateProcess(&map_, params.ipc_database_id); | 688 parent_->GetOrTerminateProcess(&map_, params.ipc_database_id); |
| 689 if (!connection || !connection->IsConnected()) | 689 if (!connection || !connection->IsConnected()) |
| 690 return; | 690 return; |
| 691 | 691 |
| 692 scoped_refptr<IndexedDBCallbacks> callbacks(new IndexedDBCallbacks( | 692 scoped_refptr<IndexedDBCallbacks> callbacks(new IndexedDBCallbacks( |
| 693 parent_, params.ipc_thread_id, params.ipc_callbacks_id)); | 693 parent_, params.ipc_thread_id, params.ipc_callbacks_id)); |
| 694 connection->database()->Get( | 694 connection->database()->Get( |
| 695 parent_->HostTransactionId(params.transaction_id), params.object_store_id, | 695 parent_->HostTransactionId(params.transaction_id), params.object_store_id, |
| 696 params.index_id, | 696 params.index_id, base::MakeUnique<IndexedDBKeyRange>(params.key_range), |
| 697 base::WrapUnique(new IndexedDBKeyRange(params.key_range)), | |
| 698 params.key_only, callbacks); | 697 params.key_only, callbacks); |
| 699 } | 698 } |
| 700 | 699 |
| 701 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnGetAll( | 700 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnGetAll( |
| 702 const IndexedDBHostMsg_DatabaseGetAll_Params& params) { | 701 const IndexedDBHostMsg_DatabaseGetAll_Params& params) { |
| 703 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); | 702 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); |
| 704 IndexedDBConnection* connection = | 703 IndexedDBConnection* connection = |
| 705 parent_->GetOrTerminateProcess(&map_, params.ipc_database_id); | 704 parent_->GetOrTerminateProcess(&map_, params.ipc_database_id); |
| 706 if (!connection || !connection->IsConnected()) | 705 if (!connection || !connection->IsConnected()) |
| 707 return; | 706 return; |
| 708 | 707 |
| 709 scoped_refptr<IndexedDBCallbacks> callbacks(new IndexedDBCallbacks( | 708 scoped_refptr<IndexedDBCallbacks> callbacks(new IndexedDBCallbacks( |
| 710 parent_, params.ipc_thread_id, params.ipc_callbacks_id)); | 709 parent_, params.ipc_thread_id, params.ipc_callbacks_id)); |
| 711 connection->database()->GetAll( | 710 connection->database()->GetAll( |
| 712 parent_->HostTransactionId(params.transaction_id), params.object_store_id, | 711 parent_->HostTransactionId(params.transaction_id), params.object_store_id, |
| 713 params.index_id, | 712 params.index_id, base::MakeUnique<IndexedDBKeyRange>(params.key_range), |
| 714 base::WrapUnique(new IndexedDBKeyRange(params.key_range)), | |
| 715 params.key_only, params.max_count, callbacks); | 713 params.key_only, params.max_count, callbacks); |
| 716 } | 714 } |
| 717 | 715 |
| 718 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnPutWrapper( | 716 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnPutWrapper( |
| 719 const IndexedDBHostMsg_DatabasePut_Params& params) { | 717 const IndexedDBHostMsg_DatabasePut_Params& params) { |
| 720 std::vector<storage::BlobDataHandle*> handles; | 718 std::vector<storage::BlobDataHandle*> handles; |
| 721 for (size_t i = 0; i < params.value.blob_or_file_info.size(); ++i) { | 719 for (size_t i = 0; i < params.value.blob_or_file_info.size(); ++i) { |
| 722 const IndexedDBMsg_BlobOrFileInfo& info = params.value.blob_or_file_info[i]; | 720 const IndexedDBMsg_BlobOrFileInfo& info = params.value.blob_or_file_info[i]; |
| 723 handles.push_back(parent_->blob_storage_context_->context() | 721 handles.push_back(parent_->blob_storage_context_->context() |
| 724 ->GetBlobDataFromUUID(info.uuid) | 722 ->GetBlobDataFromUUID(info.uuid) |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 776 blob_info[i] = IndexedDBBlobInfo(info.uuid, info.mime_type, info.size); | 774 blob_info[i] = IndexedDBBlobInfo(info.uuid, info.mime_type, info.size); |
| 777 } | 775 } |
| 778 } | 776 } |
| 779 | 777 |
| 780 // TODO(alecflett): Avoid a copy here. | 778 // TODO(alecflett): Avoid a copy here. |
| 781 IndexedDBValue value; | 779 IndexedDBValue value; |
| 782 value.bits = params.value.bits; | 780 value.bits = params.value.bits; |
| 783 value.blob_info.swap(blob_info); | 781 value.blob_info.swap(blob_info); |
| 784 connection->database()->Put(host_transaction_id, params.object_store_id, | 782 connection->database()->Put(host_transaction_id, params.object_store_id, |
| 785 &value, &scoped_handles, | 783 &value, &scoped_handles, |
| 786 base::WrapUnique(new IndexedDBKey(params.key)), | 784 base::MakeUnique<IndexedDBKey>(params.key), |
| 787 params.put_mode, callbacks, params.index_keys); | 785 params.put_mode, callbacks, params.index_keys); |
| 788 // Size can't be big enough to overflow because it represents the | 786 // Size can't be big enough to overflow because it represents the |
| 789 // actual bytes passed through IPC. | 787 // actual bytes passed through IPC. |
| 790 transaction_size_map_[host_transaction_id] += params.value.bits.size(); | 788 transaction_size_map_[host_transaction_id] += params.value.bits.size(); |
| 791 } | 789 } |
| 792 | 790 |
| 793 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexKeys( | 791 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexKeys( |
| 794 const IndexedDBHostMsg_DatabaseSetIndexKeys_Params& params) { | 792 const IndexedDBHostMsg_DatabaseSetIndexKeys_Params& params) { |
| 795 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); | 793 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); |
| 796 IndexedDBConnection* connection = | 794 IndexedDBConnection* connection = |
| 797 parent_->GetOrTerminateProcess(&map_, params.ipc_database_id); | 795 parent_->GetOrTerminateProcess(&map_, params.ipc_database_id); |
| 798 if (!connection || !connection->IsConnected()) | 796 if (!connection || !connection->IsConnected()) |
| 799 return; | 797 return; |
| 800 | 798 |
| 801 int64_t host_transaction_id = | 799 int64_t host_transaction_id = |
| 802 parent_->HostTransactionId(params.transaction_id); | 800 parent_->HostTransactionId(params.transaction_id); |
| 803 connection->database()->SetIndexKeys( | 801 connection->database()->SetIndexKeys( |
| 804 host_transaction_id, params.object_store_id, | 802 host_transaction_id, params.object_store_id, |
| 805 base::WrapUnique(new IndexedDBKey(params.primary_key)), | 803 base::MakeUnique<IndexedDBKey>(params.primary_key), params.index_keys); |
| 806 params.index_keys); | |
| 807 } | 804 } |
| 808 | 805 |
| 809 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexesReady( | 806 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexesReady( |
| 810 int32_t ipc_database_id, | 807 int32_t ipc_database_id, |
| 811 int64_t transaction_id, | 808 int64_t transaction_id, |
| 812 int64_t object_store_id, | 809 int64_t object_store_id, |
| 813 const std::vector<int64_t>& index_ids) { | 810 const std::vector<int64_t>& index_ids) { |
| 814 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); | 811 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); |
| 815 IndexedDBConnection* connection = | 812 IndexedDBConnection* connection = |
| 816 parent_->GetOrTerminateProcess(&map_, ipc_database_id); | 813 parent_->GetOrTerminateProcess(&map_, ipc_database_id); |
| 817 if (!connection || !connection->IsConnected()) | 814 if (!connection || !connection->IsConnected()) |
| 818 return; | 815 return; |
| 819 | 816 |
| 820 connection->database()->SetIndexesReady( | 817 connection->database()->SetIndexesReady( |
| 821 parent_->HostTransactionId(transaction_id), object_store_id, index_ids); | 818 parent_->HostTransactionId(transaction_id), object_store_id, index_ids); |
| 822 } | 819 } |
| 823 | 820 |
| 824 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnOpenCursor( | 821 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnOpenCursor( |
| 825 const IndexedDBHostMsg_DatabaseOpenCursor_Params& params) { | 822 const IndexedDBHostMsg_DatabaseOpenCursor_Params& params) { |
| 826 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); | 823 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); |
| 827 IndexedDBConnection* connection = | 824 IndexedDBConnection* connection = |
| 828 parent_->GetOrTerminateProcess(&map_, params.ipc_database_id); | 825 parent_->GetOrTerminateProcess(&map_, params.ipc_database_id); |
| 829 if (!connection || !connection->IsConnected()) | 826 if (!connection || !connection->IsConnected()) |
| 830 return; | 827 return; |
| 831 | 828 |
| 832 scoped_refptr<IndexedDBCallbacks> callbacks(new IndexedDBCallbacks( | 829 scoped_refptr<IndexedDBCallbacks> callbacks(new IndexedDBCallbacks( |
| 833 parent_, params.ipc_thread_id, params.ipc_callbacks_id, -1)); | 830 parent_, params.ipc_thread_id, params.ipc_callbacks_id, -1)); |
| 834 connection->database()->OpenCursor( | 831 connection->database()->OpenCursor( |
| 835 parent_->HostTransactionId(params.transaction_id), params.object_store_id, | 832 parent_->HostTransactionId(params.transaction_id), params.object_store_id, |
| 836 params.index_id, | 833 params.index_id, base::MakeUnique<IndexedDBKeyRange>(params.key_range), |
| 837 base::WrapUnique(new IndexedDBKeyRange(params.key_range)), | |
| 838 params.direction, params.key_only, params.task_type, callbacks); | 834 params.direction, params.key_only, params.task_type, callbacks); |
| 839 } | 835 } |
| 840 | 836 |
| 841 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnCount( | 837 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnCount( |
| 842 const IndexedDBHostMsg_DatabaseCount_Params& params) { | 838 const IndexedDBHostMsg_DatabaseCount_Params& params) { |
| 843 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); | 839 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); |
| 844 IndexedDBConnection* connection = | 840 IndexedDBConnection* connection = |
| 845 parent_->GetOrTerminateProcess(&map_, params.ipc_database_id); | 841 parent_->GetOrTerminateProcess(&map_, params.ipc_database_id); |
| 846 if (!connection || !connection->IsConnected()) | 842 if (!connection || !connection->IsConnected()) |
| 847 return; | 843 return; |
| 848 | 844 |
| 849 scoped_refptr<IndexedDBCallbacks> callbacks(new IndexedDBCallbacks( | 845 scoped_refptr<IndexedDBCallbacks> callbacks(new IndexedDBCallbacks( |
| 850 parent_, params.ipc_thread_id, params.ipc_callbacks_id)); | 846 parent_, params.ipc_thread_id, params.ipc_callbacks_id)); |
| 851 connection->database()->Count( | 847 connection->database()->Count( |
| 852 parent_->HostTransactionId(params.transaction_id), params.object_store_id, | 848 parent_->HostTransactionId(params.transaction_id), params.object_store_id, |
| 853 params.index_id, | 849 params.index_id, base::MakeUnique<IndexedDBKeyRange>(params.key_range), |
| 854 base::WrapUnique(new IndexedDBKeyRange(params.key_range)), callbacks); | 850 callbacks); |
| 855 } | 851 } |
| 856 | 852 |
| 857 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnDeleteRange( | 853 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnDeleteRange( |
| 858 const IndexedDBHostMsg_DatabaseDeleteRange_Params& params) { | 854 const IndexedDBHostMsg_DatabaseDeleteRange_Params& params) { |
| 859 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); | 855 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); |
| 860 IndexedDBConnection* connection = | 856 IndexedDBConnection* connection = |
| 861 parent_->GetOrTerminateProcess(&map_, params.ipc_database_id); | 857 parent_->GetOrTerminateProcess(&map_, params.ipc_database_id); |
| 862 if (!connection || !connection->IsConnected()) | 858 if (!connection || !connection->IsConnected()) |
| 863 return; | 859 return; |
| 864 | 860 |
| 865 scoped_refptr<IndexedDBCallbacks> callbacks(new IndexedDBCallbacks( | 861 scoped_refptr<IndexedDBCallbacks> callbacks(new IndexedDBCallbacks( |
| 866 parent_, params.ipc_thread_id, params.ipc_callbacks_id)); | 862 parent_, params.ipc_thread_id, params.ipc_callbacks_id)); |
| 867 connection->database()->DeleteRange( | 863 connection->database()->DeleteRange( |
| 868 parent_->HostTransactionId(params.transaction_id), params.object_store_id, | 864 parent_->HostTransactionId(params.transaction_id), params.object_store_id, |
| 869 base::WrapUnique(new IndexedDBKeyRange(params.key_range)), callbacks); | 865 base::MakeUnique<IndexedDBKeyRange>(params.key_range), callbacks); |
| 870 } | 866 } |
| 871 | 867 |
| 872 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnClear( | 868 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnClear( |
| 873 int32_t ipc_thread_id, | 869 int32_t ipc_thread_id, |
| 874 int32_t ipc_callbacks_id, | 870 int32_t ipc_callbacks_id, |
| 875 int32_t ipc_database_id, | 871 int32_t ipc_database_id, |
| 876 int64_t transaction_id, | 872 int64_t transaction_id, |
| 877 int64_t object_store_id) { | 873 int64_t object_store_id) { |
| 878 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); | 874 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); |
| 879 IndexedDBConnection* connection = | 875 IndexedDBConnection* connection = |
| (...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1044 int32_t ipc_thread_id, | 1040 int32_t ipc_thread_id, |
| 1045 int32_t ipc_callbacks_id, | 1041 int32_t ipc_callbacks_id, |
| 1046 const IndexedDBKey& key, | 1042 const IndexedDBKey& key, |
| 1047 const IndexedDBKey& primary_key) { | 1043 const IndexedDBKey& primary_key) { |
| 1048 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); | 1044 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); |
| 1049 IndexedDBCursor* idb_cursor = | 1045 IndexedDBCursor* idb_cursor = |
| 1050 parent_->GetOrTerminateProcess(&map_, ipc_cursor_id); | 1046 parent_->GetOrTerminateProcess(&map_, ipc_cursor_id); |
| 1051 if (!idb_cursor) | 1047 if (!idb_cursor) |
| 1052 return; | 1048 return; |
| 1053 | 1049 |
| 1054 idb_cursor->Continue(key.IsValid() ? base::WrapUnique(new IndexedDBKey(key)) | 1050 idb_cursor->Continue(key.IsValid() ? base::MakeUnique<IndexedDBKey>(key) |
| 1055 : std::unique_ptr<IndexedDBKey>(), | 1051 : std::unique_ptr<IndexedDBKey>(), |
| 1056 primary_key.IsValid() | 1052 primary_key.IsValid() |
| 1057 ? base::WrapUnique(new IndexedDBKey(primary_key)) | 1053 ? base::MakeUnique<IndexedDBKey>(primary_key) |
| 1058 : std::unique_ptr<IndexedDBKey>(), | 1054 : std::unique_ptr<IndexedDBKey>(), |
| 1059 new IndexedDBCallbacks(parent_, ipc_thread_id, | 1055 new IndexedDBCallbacks(parent_, ipc_thread_id, |
| 1060 ipc_callbacks_id, ipc_cursor_id)); | 1056 ipc_callbacks_id, ipc_cursor_id)); |
| 1061 } | 1057 } |
| 1062 | 1058 |
| 1063 void IndexedDBDispatcherHost::CursorDispatcherHost::OnPrefetch( | 1059 void IndexedDBDispatcherHost::CursorDispatcherHost::OnPrefetch( |
| 1064 int32_t ipc_cursor_id, | 1060 int32_t ipc_cursor_id, |
| 1065 int32_t ipc_thread_id, | 1061 int32_t ipc_thread_id, |
| 1066 int32_t ipc_callbacks_id, | 1062 int32_t ipc_callbacks_id, |
| 1067 int n) { | 1063 int n) { |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1094 DLOG(ERROR) << "Unable to reset prefetch"; | 1090 DLOG(ERROR) << "Unable to reset prefetch"; |
| 1095 } | 1091 } |
| 1096 | 1092 |
| 1097 void IndexedDBDispatcherHost::CursorDispatcherHost::OnDestroyed( | 1093 void IndexedDBDispatcherHost::CursorDispatcherHost::OnDestroyed( |
| 1098 int32_t ipc_object_id) { | 1094 int32_t ipc_object_id) { |
| 1099 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); | 1095 DCHECK(parent_->context()->TaskRunner()->RunsTasksOnCurrentThread()); |
| 1100 parent_->DestroyObject(&map_, ipc_object_id); | 1096 parent_->DestroyObject(&map_, ipc_object_id); |
| 1101 } | 1097 } |
| 1102 | 1098 |
| 1103 } // namespace content | 1099 } // namespace content |
| OLD | NEW |