| 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/in_process_webkit/indexed_db_dispatcher_host.h" | 5 #include "content/browser/in_process_webkit/indexed_db_dispatcher_host.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 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 457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 const IndexedDBHostMsg_DatabasePut_Params& params) { | 468 const IndexedDBHostMsg_DatabasePut_Params& params) { |
| 469 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); | 469 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); |
| 470 | 470 |
| 471 WebIDBDatabase* database = parent_->GetOrTerminateProcess( | 471 WebIDBDatabase* database = parent_->GetOrTerminateProcess( |
| 472 &map_, params.ipc_database_id); | 472 &map_, params.ipc_database_id); |
| 473 if (!database) | 473 if (!database) |
| 474 return; | 474 return; |
| 475 scoped_ptr<WebIDBCallbacks> callbacks( | 475 scoped_ptr<WebIDBCallbacks> callbacks( |
| 476 new IndexedDBCallbacks<WebIDBKey>(parent_, params.ipc_thread_id, | 476 new IndexedDBCallbacks<WebIDBKey>(parent_, params.ipc_thread_id, |
| 477 params.ipc_response_id)); | 477 params.ipc_response_id)); |
| 478 if (params.index_ids.size() != params.index_keys.size()) { |
| 479 callbacks->onError(WebIDBDatabaseError( |
| 480 WebKit::WebIDBDatabaseExceptionUnknownError, |
| 481 "Malformed IPC message: index_ids.size() != index_keys.size()")); |
| 482 return; |
| 483 } |
| 478 | 484 |
| 479 WebVector<unsigned char> value(params.value); | 485 WebVector<unsigned char> value(params.value); |
| 480 int64 host_transaction_id = parent_->HostTransactionId(params.transaction_id); | 486 int64 host_transaction_id = parent_->HostTransactionId(params.transaction_id); |
| 481 database->put(host_transaction_id, | 487 database->put(host_transaction_id, |
| 482 params.object_store_id, | 488 params.object_store_id, |
| 483 &value, params.key, | 489 &value, params.key, |
| 484 params.put_mode, callbacks.release(), | 490 params.put_mode, callbacks.release(), |
| 485 params.index_ids, | 491 params.index_ids, |
| 486 params.index_keys); | 492 params.index_keys); |
| 487 TransactionIDToSizeMap* map = | 493 TransactionIDToSizeMap* map = |
| 488 &parent_->database_dispatcher_host_->transaction_size_map_; | 494 &parent_->database_dispatcher_host_->transaction_size_map_; |
| 489 // Size can't be big enough to overflow because it represents the | 495 // Size can't be big enough to overflow because it represents the |
| 490 // actual bytes passed through IPC. | 496 // actual bytes passed through IPC. |
| 491 (*map)[host_transaction_id] += params.value.size(); | 497 (*map)[host_transaction_id] += params.value.size(); |
| 492 } | 498 } |
| 493 | 499 |
| 494 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexKeys( | 500 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexKeys( |
| 495 const IndexedDBHostMsg_DatabaseSetIndexKeys_Params& params) { | 501 const IndexedDBHostMsg_DatabaseSetIndexKeys_Params& params) { |
| 496 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); | 502 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); |
| 497 WebIDBDatabase* database = parent_->GetOrTerminateProcess( | 503 WebIDBDatabase* database = parent_->GetOrTerminateProcess( |
| 498 &map_, params.ipc_database_id); | 504 &map_, params.ipc_database_id); |
| 499 if (!database) | 505 if (!database) |
| 500 return; | 506 return; |
| 501 | 507 |
| 502 database->setIndexKeys(parent_->HostTransactionId(params.transaction_id), | 508 int64 host_transaction_id = parent_->HostTransactionId(params.transaction_id); |
| 509 if (params.index_ids.size() != params.index_keys.size()) { |
| 510 database->abort(host_transaction_id, WebIDBDatabaseError( |
| 511 WebKit::WebIDBDatabaseExceptionUnknownError, |
| 512 "Malformed IPC message: index_ids.size() != index_keys.size()")); |
| 513 return; |
| 514 } |
| 515 |
| 516 database->setIndexKeys(host_transaction_id, |
| 503 params.object_store_id, | 517 params.object_store_id, |
| 504 params.primary_key, params.index_ids, | 518 params.primary_key, params.index_ids, |
| 505 params.index_keys); | 519 params.index_keys); |
| 506 } | 520 } |
| 507 | 521 |
| 508 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexesReady( | 522 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexesReady( |
| 509 int32 ipc_database_id, | 523 int32 ipc_database_id, |
| 510 int64 transaction_id, | 524 int64 transaction_id, |
| 511 int64 object_store_id, | 525 int64 object_store_id, |
| 512 const std::vector<int64>& index_ids) { | 526 const std::vector<int64>& index_ids) { |
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 788 ipc_response_id), ec); | 802 ipc_response_id), ec); |
| 789 DCHECK(!ec); | 803 DCHECK(!ec); |
| 790 } | 804 } |
| 791 | 805 |
| 792 void IndexedDBDispatcherHost::CursorDispatcherHost::OnDestroyed( | 806 void IndexedDBDispatcherHost::CursorDispatcherHost::OnDestroyed( |
| 793 int32 ipc_object_id) { | 807 int32 ipc_object_id) { |
| 794 parent_->DestroyObject(&map_, ipc_object_id); | 808 parent_->DestroyObject(&map_, ipc_object_id); |
| 795 } | 809 } |
| 796 | 810 |
| 797 } // namespace content | 811 } // namespace content |
| OLD | NEW |