| OLD | NEW |
| 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/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 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 if (!transaction_dispatcher_host_.get()) { | 183 if (!transaction_dispatcher_host_.get()) { |
| 184 delete idb_transaction; | 184 delete idb_transaction; |
| 185 return 0; | 185 return 0; |
| 186 } | 186 } |
| 187 int32 id = transaction_dispatcher_host_->map_.Add(idb_transaction); | 187 int32 id = transaction_dispatcher_host_->map_.Add(idb_transaction); |
| 188 idb_transaction->setCallbacks(new IndexedDBTransactionCallbacks(this, id)); | 188 idb_transaction->setCallbacks(new IndexedDBTransactionCallbacks(this, id)); |
| 189 transaction_dispatcher_host_->transaction_url_map_[id] = url; | 189 transaction_dispatcher_host_->transaction_url_map_[id] = url; |
| 190 return id; | 190 return id; |
| 191 } | 191 } |
| 192 | 192 |
| 193 WebIDBCursor* IndexedDBDispatcherHost::GetCursorFromId(int32 cursor_id) { |
| 194 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); |
| 195 return cursor_dispatcher_host_->map_.Lookup(cursor_id); |
| 196 } |
| 197 |
| 193 void IndexedDBDispatcherHost::OnIDBFactoryGetDatabaseNames( | 198 void IndexedDBDispatcherHost::OnIDBFactoryGetDatabaseNames( |
| 194 const IndexedDBHostMsg_FactoryGetDatabaseNames_Params& params) { | 199 const IndexedDBHostMsg_FactoryGetDatabaseNames_Params& params) { |
| 195 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 200 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); |
| 196 FilePath base_path = webkit_context_->data_path(); | 201 FilePath base_path = webkit_context_->data_path(); |
| 197 FilePath indexed_db_path; | 202 FilePath indexed_db_path; |
| 198 if (!base_path.empty()) { | 203 if (!base_path.empty()) { |
| 199 indexed_db_path = base_path.Append( | 204 indexed_db_path = base_path.Append( |
| 200 IndexedDBContext::kIndexedDBDirectory); | 205 IndexedDBContext::kIndexedDBDirectory); |
| 201 } | 206 } |
| 202 | 207 |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 550 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); |
| 546 WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( | 551 WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( |
| 547 &map_, params.idb_index_id); | 552 &map_, params.idb_index_id); |
| 548 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 553 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( |
| 549 &parent_->transaction_dispatcher_host_->map_, params.transaction_id); | 554 &parent_->transaction_dispatcher_host_->map_, params.transaction_id); |
| 550 if (!idb_transaction || !idb_index) | 555 if (!idb_transaction || !idb_index) |
| 551 return; | 556 return; |
| 552 | 557 |
| 553 *ec = 0; | 558 *ec = 0; |
| 554 scoped_ptr<WebIDBCallbacks> callbacks( | 559 scoped_ptr<WebIDBCallbacks> callbacks( |
| 555 new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id)); | 560 new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id, -1)); |
| 556 idb_index->openObjectCursor( | 561 idb_index->openObjectCursor( |
| 557 WebIDBKeyRange(params.lower_key, params.upper_key, params.lower_open, | 562 WebIDBKeyRange(params.lower_key, params.upper_key, params.lower_open, |
| 558 params.upper_open), | 563 params.upper_open), |
| 559 params.direction, callbacks.release(), *idb_transaction, *ec); | 564 params.direction, callbacks.release(), *idb_transaction, *ec); |
| 560 } | 565 } |
| 561 | 566 |
| 562 void IndexedDBDispatcherHost::IndexDispatcherHost::OnOpenKeyCursor( | 567 void IndexedDBDispatcherHost::IndexDispatcherHost::OnOpenKeyCursor( |
| 563 const IndexedDBHostMsg_IndexOpenCursor_Params& params, | 568 const IndexedDBHostMsg_IndexOpenCursor_Params& params, |
| 564 WebKit::WebExceptionCode* ec) { | 569 WebKit::WebExceptionCode* ec) { |
| 565 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 570 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); |
| 566 WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( | 571 WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( |
| 567 &map_, params.idb_index_id); | 572 &map_, params.idb_index_id); |
| 568 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 573 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( |
| 569 &parent_->transaction_dispatcher_host_->map_, params.transaction_id); | 574 &parent_->transaction_dispatcher_host_->map_, params.transaction_id); |
| 570 if (!idb_transaction || !idb_index) | 575 if (!idb_transaction || !idb_index) |
| 571 return; | 576 return; |
| 572 | 577 |
| 573 *ec = 0; | 578 *ec = 0; |
| 574 scoped_ptr<WebIDBCallbacks> callbacks( | 579 scoped_ptr<WebIDBCallbacks> callbacks( |
| 575 new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id)); | 580 new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id, -1)); |
| 576 idb_index->openKeyCursor( | 581 idb_index->openKeyCursor( |
| 577 WebIDBKeyRange(params.lower_key, params.upper_key, params.lower_open, | 582 WebIDBKeyRange(params.lower_key, params.upper_key, params.lower_open, |
| 578 params.upper_open), | 583 params.upper_open), |
| 579 params.direction, callbacks.release(), *idb_transaction, *ec); | 584 params.direction, callbacks.release(), *idb_transaction, *ec); |
| 580 } | 585 } |
| 581 | 586 |
| 582 void IndexedDBDispatcherHost::IndexDispatcherHost::OnGetObject( | 587 void IndexedDBDispatcherHost::IndexDispatcherHost::OnGetObject( |
| 583 int idb_index_id, | 588 int idb_index_id, |
| 584 int32 response_id, | 589 int32 response_id, |
| 585 const IndexedDBKey& key, | 590 const IndexedDBKey& key, |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 836 WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( | 841 WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( |
| 837 &parent_->object_store_dispatcher_host_->map_, | 842 &parent_->object_store_dispatcher_host_->map_, |
| 838 params.idb_object_store_id); | 843 params.idb_object_store_id); |
| 839 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( | 844 WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( |
| 840 &parent_->transaction_dispatcher_host_->map_, params.transaction_id); | 845 &parent_->transaction_dispatcher_host_->map_, params.transaction_id); |
| 841 if (!idb_transaction || !idb_object_store) | 846 if (!idb_transaction || !idb_object_store) |
| 842 return; | 847 return; |
| 843 | 848 |
| 844 *ec = 0; | 849 *ec = 0; |
| 845 scoped_ptr<WebIDBCallbacks> callbacks( | 850 scoped_ptr<WebIDBCallbacks> callbacks( |
| 846 new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id)); | 851 new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id, -1)); |
| 847 idb_object_store->openCursor( | 852 idb_object_store->openCursor( |
| 848 WebIDBKeyRange(params.lower_key, params.upper_key, params.lower_open, | 853 WebIDBKeyRange(params.lower_key, params.upper_key, params.lower_open, |
| 849 params.upper_open), | 854 params.upper_open), |
| 850 params.direction, callbacks.release(), *idb_transaction, *ec); | 855 params.direction, callbacks.release(), *idb_transaction, *ec); |
| 851 } | 856 } |
| 852 | 857 |
| 853 void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnDestroyed( | 858 void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnDestroyed( |
| 854 int32 object_id) { | 859 int32 object_id) { |
| 855 parent_->DestroyObject(&map_, object_id); | 860 parent_->DestroyObject(&map_, object_id); |
| 856 } | 861 } |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 946 int32 response_id, | 951 int32 response_id, |
| 947 const IndexedDBKey& key, | 952 const IndexedDBKey& key, |
| 948 WebKit::WebExceptionCode* ec) { | 953 WebKit::WebExceptionCode* ec) { |
| 949 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 954 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); |
| 950 WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess(&map_, cursor_id); | 955 WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess(&map_, cursor_id); |
| 951 if (!idb_cursor) | 956 if (!idb_cursor) |
| 952 return; | 957 return; |
| 953 | 958 |
| 954 *ec = 0; | 959 *ec = 0; |
| 955 idb_cursor->continueFunction( | 960 idb_cursor->continueFunction( |
| 956 key, new IndexedDBCallbacks<WebIDBCursor>(parent_, response_id), *ec); | 961 key, new IndexedDBCallbacks<WebIDBCursor>(parent_, response_id, |
| 962 cursor_id), *ec); |
| 957 } | 963 } |
| 958 | 964 |
| 959 void IndexedDBDispatcherHost::CursorDispatcherHost::OnDelete( | 965 void IndexedDBDispatcherHost::CursorDispatcherHost::OnDelete( |
| 960 int32 cursor_id, | 966 int32 cursor_id, |
| 961 int32 response_id, | 967 int32 response_id, |
| 962 WebKit::WebExceptionCode* ec) { | 968 WebKit::WebExceptionCode* ec) { |
| 963 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); | 969 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); |
| 964 WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess(&map_, cursor_id); | 970 WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess(&map_, cursor_id); |
| 965 if (!idb_cursor) | 971 if (!idb_cursor) |
| 966 return; | 972 return; |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1066 } | 1072 } |
| 1067 idb_transaction->didCompleteTaskEvents(); | 1073 idb_transaction->didCompleteTaskEvents(); |
| 1068 } | 1074 } |
| 1069 | 1075 |
| 1070 void IndexedDBDispatcherHost::TransactionDispatcherHost::OnDestroyed( | 1076 void IndexedDBDispatcherHost::TransactionDispatcherHost::OnDestroyed( |
| 1071 int32 object_id) { | 1077 int32 object_id) { |
| 1072 transaction_size_map_.erase(object_id); | 1078 transaction_size_map_.erase(object_id); |
| 1073 transaction_url_map_.erase(object_id); | 1079 transaction_url_map_.erase(object_id); |
| 1074 parent_->DestroyObject(&map_, object_id); | 1080 parent_->DestroyObject(&map_, object_id); |
| 1075 } | 1081 } |
| OLD | NEW |