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/renderer/indexed_db_dispatcher.h" | 5 #include "content/renderer/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/indexed_db_messages.h" | 9 #include "content/common/indexed_db_messages.h" |
10 #include "content/renderer/render_thread_impl.h" | 10 #include "content/renderer/render_thread_impl.h" |
(...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 params.lower_open = idb_key_range.lowerOpen(); | 313 params.lower_open = idb_key_range.lowerOpen(); |
314 params.upper_open = idb_key_range.upperOpen(); | 314 params.upper_open = idb_key_range.upperOpen(); |
315 params.direction = direction; | 315 params.direction = direction; |
316 params.idb_index_id = idb_index_id; | 316 params.idb_index_id = idb_index_id; |
317 params.transaction_id = TransactionId(transaction); | 317 params.transaction_id = TransactionId(transaction); |
318 Send(new IndexedDBHostMsg_IndexOpenKeyCursor(params, ec)); | 318 Send(new IndexedDBHostMsg_IndexOpenKeyCursor(params, ec)); |
319 if (*ec) | 319 if (*ec) |
320 pending_callbacks_.Remove(params.response_id); | 320 pending_callbacks_.Remove(params.response_id); |
321 } | 321 } |
322 | 322 |
| 323 void IndexedDBDispatcher::RequestIDBIndexCount( |
| 324 const WebIDBKeyRange& idb_key_range, |
| 325 WebIDBCallbacks* callbacks_ptr, |
| 326 int32 idb_index_id, |
| 327 const WebIDBTransaction& transaction, |
| 328 WebExceptionCode* ec) { |
| 329 ResetCursorPrefetchCaches(); |
| 330 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
| 331 IndexedDBHostMsg_IndexCount_Params params; |
| 332 params.thread_id = CurrentWorkerId(); |
| 333 params.response_id = pending_callbacks_.Add(callbacks.release()); |
| 334 params.lower_key.Set(idb_key_range.lower()); |
| 335 params.upper_key.Set(idb_key_range.upper()); |
| 336 params.lower_open = idb_key_range.lowerOpen(); |
| 337 params.upper_open = idb_key_range.upperOpen(); |
| 338 params.idb_index_id = idb_index_id; |
| 339 params.transaction_id = TransactionId(transaction); |
| 340 Send(new IndexedDBHostMsg_IndexCount(params, ec)); |
| 341 if (*ec) |
| 342 pending_callbacks_.Remove(params.response_id); |
| 343 } |
| 344 |
323 void IndexedDBDispatcher::RequestIDBIndexGetObject( | 345 void IndexedDBDispatcher::RequestIDBIndexGetObject( |
324 const IndexedDBKey& key, | 346 const IndexedDBKey& key, |
325 WebIDBCallbacks* callbacks_ptr, | 347 WebIDBCallbacks* callbacks_ptr, |
326 int32 idb_index_id, | 348 int32 idb_index_id, |
327 const WebIDBTransaction& transaction, | 349 const WebIDBTransaction& transaction, |
328 WebExceptionCode* ec) { | 350 WebExceptionCode* ec) { |
329 ResetCursorPrefetchCaches(); | 351 ResetCursorPrefetchCaches(); |
330 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 352 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
331 int32 response_id = pending_callbacks_.Add(callbacks.release()); | 353 int32 response_id = pending_callbacks_.Add(callbacks.release()); |
332 Send(new IndexedDBHostMsg_IndexGetObject(idb_index_id, CurrentWorkerId(), | 354 Send(new IndexedDBHostMsg_IndexGetObject(idb_index_id, CurrentWorkerId(), |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 params.lower_open = idb_key_range.lowerOpen(); | 464 params.lower_open = idb_key_range.lowerOpen(); |
443 params.upper_open = idb_key_range.upperOpen(); | 465 params.upper_open = idb_key_range.upperOpen(); |
444 params.direction = direction; | 466 params.direction = direction; |
445 params.idb_object_store_id = idb_object_store_id; | 467 params.idb_object_store_id = idb_object_store_id; |
446 params.transaction_id = TransactionId(transaction); | 468 params.transaction_id = TransactionId(transaction); |
447 Send(new IndexedDBHostMsg_ObjectStoreOpenCursor(params, ec)); | 469 Send(new IndexedDBHostMsg_ObjectStoreOpenCursor(params, ec)); |
448 if (*ec) | 470 if (*ec) |
449 pending_callbacks_.Remove(params.response_id); | 471 pending_callbacks_.Remove(params.response_id); |
450 } | 472 } |
451 | 473 |
| 474 void IndexedDBDispatcher::RequestIDBObjectStoreCount( |
| 475 const WebIDBKeyRange& idb_key_range, |
| 476 WebIDBCallbacks* callbacks_ptr, |
| 477 int32 idb_object_store_id, |
| 478 const WebIDBTransaction& transaction, |
| 479 WebExceptionCode* ec) { |
| 480 ResetCursorPrefetchCaches(); |
| 481 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
| 482 IndexedDBHostMsg_ObjectStoreCount_Params params; |
| 483 params.thread_id = CurrentWorkerId(); |
| 484 params.response_id = pending_callbacks_.Add(callbacks.release()); |
| 485 params.lower_key.Set(idb_key_range.lower()); |
| 486 params.upper_key.Set(idb_key_range.upper()); |
| 487 params.lower_open = idb_key_range.lowerOpen(); |
| 488 params.upper_open = idb_key_range.upperOpen(); |
| 489 params.idb_object_store_id = idb_object_store_id; |
| 490 params.transaction_id = TransactionId(transaction); |
| 491 Send(new IndexedDBHostMsg_ObjectStoreCount(params, ec)); |
| 492 if (*ec) |
| 493 pending_callbacks_.Remove(params.response_id); |
| 494 } |
| 495 |
452 void IndexedDBDispatcher::RegisterWebIDBTransactionCallbacks( | 496 void IndexedDBDispatcher::RegisterWebIDBTransactionCallbacks( |
453 WebIDBTransactionCallbacks* callbacks, | 497 WebIDBTransactionCallbacks* callbacks, |
454 int32 id) { | 498 int32 id) { |
455 pending_transaction_callbacks_.AddWithID(callbacks, id); | 499 pending_transaction_callbacks_.AddWithID(callbacks, id); |
456 } | 500 } |
457 | 501 |
458 void IndexedDBDispatcher::CursorDestroyed(int32 cursor_id) { | 502 void IndexedDBDispatcher::CursorDestroyed(int32 cursor_id) { |
459 cursors_.erase(cursor_id); | 503 cursors_.erase(cursor_id); |
460 } | 504 } |
461 | 505 |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
634 } | 678 } |
635 | 679 |
636 void IndexedDBDispatcher::ResetCursorPrefetchCaches(int32 exception_cursor_id) { | 680 void IndexedDBDispatcher::ResetCursorPrefetchCaches(int32 exception_cursor_id) { |
637 typedef std::map<int32, RendererWebIDBCursorImpl*>::iterator Iterator; | 681 typedef std::map<int32, RendererWebIDBCursorImpl*>::iterator Iterator; |
638 for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) { | 682 for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) { |
639 if (i->first == exception_cursor_id) | 683 if (i->first == exception_cursor_id) |
640 continue; | 684 continue; |
641 i->second->ResetPrefetchCache(); | 685 i->second->ResetPrefetchCache(); |
642 } | 686 } |
643 } | 687 } |
OLD | NEW |