| 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/common/indexed_db/indexed_db_dispatcher.h" |    5 #include "content/common/indexed_db/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/child_thread.h" |    9 #include "content/common/child_thread.h" | 
|   10 #include "content/common/indexed_db/indexed_db_messages.h" |   10 #include "content/common/indexed_db/indexed_db_messages.h" | 
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  362   ResetCursorPrefetchCaches(); |  362   ResetCursorPrefetchCaches(); | 
|  363   scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |  363   scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 
|  364   int32 response_id = pending_callbacks_.Add(callbacks.release()); |  364   int32 response_id = pending_callbacks_.Add(callbacks.release()); | 
|  365   Send(new IndexedDBHostMsg_IndexGetObject(idb_index_id, CurrentWorkerId(), |  365   Send(new IndexedDBHostMsg_IndexGetObject(idb_index_id, CurrentWorkerId(), | 
|  366                                            response_id, key, |  366                                            response_id, key, | 
|  367                                            TransactionId(transaction), ec)); |  367                                            TransactionId(transaction), ec)); | 
|  368   if (*ec) |  368   if (*ec) | 
|  369     pending_callbacks_.Remove(response_id); |  369     pending_callbacks_.Remove(response_id); | 
|  370 } |  370 } | 
|  371  |  371  | 
 |  372 void IndexedDBDispatcher::RequestIDBIndexGetObjectByRange( | 
 |  373     const IndexedDBKeyRange& key_range, | 
 |  374     WebIDBCallbacks* callbacks_ptr, | 
 |  375     int32 idb_index_id, | 
 |  376     const WebIDBTransaction& transaction, | 
 |  377     WebExceptionCode* ec) { | 
 |  378   ResetCursorPrefetchCaches(); | 
 |  379   scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 
 |  380   int32 response_id = pending_callbacks_.Add(callbacks.release()); | 
 |  381   Send(new IndexedDBHostMsg_IndexGetObjectByRange( | 
 |  382            idb_index_id, CurrentWorkerId(), | 
 |  383            response_id, key_range, | 
 |  384            TransactionId(transaction), ec)); | 
 |  385   if (*ec) | 
 |  386     pending_callbacks_.Remove(response_id); | 
 |  387 } | 
 |  388  | 
|  372 void IndexedDBDispatcher::RequestIDBIndexGetKey( |  389 void IndexedDBDispatcher::RequestIDBIndexGetKey( | 
|  373     const IndexedDBKey& key, |  390     const IndexedDBKey& key, | 
|  374     WebIDBCallbacks* callbacks_ptr, |  391     WebIDBCallbacks* callbacks_ptr, | 
|  375     int32 idb_index_id, |  392     int32 idb_index_id, | 
|  376     const WebIDBTransaction& transaction, |  393     const WebIDBTransaction& transaction, | 
|  377     WebExceptionCode* ec) { |  394     WebExceptionCode* ec) { | 
|  378   ResetCursorPrefetchCaches(); |  395   ResetCursorPrefetchCaches(); | 
|  379   scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |  396   scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 
|  380   int32 response_id = pending_callbacks_.Add(callbacks.release()); |  397   int32 response_id = pending_callbacks_.Add(callbacks.release()); | 
|  381   Send(new IndexedDBHostMsg_IndexGetKey( |  398   Send(new IndexedDBHostMsg_IndexGetKey( | 
|  382            idb_index_id, CurrentWorkerId(), response_id, key, |  399            idb_index_id, CurrentWorkerId(), response_id, key, | 
|  383            TransactionId(transaction), ec)); |  400            TransactionId(transaction), ec)); | 
|  384   if (*ec) |  401   if (*ec) | 
|  385     pending_callbacks_.Remove(response_id); |  402     pending_callbacks_.Remove(response_id); | 
|  386 } |  403 } | 
|  387  |  404  | 
 |  405 void IndexedDBDispatcher::RequestIDBIndexGetKeyByRange( | 
 |  406     const IndexedDBKeyRange& key_range, | 
 |  407     WebIDBCallbacks* callbacks_ptr, | 
 |  408     int32 idb_index_id, | 
 |  409     const WebIDBTransaction& transaction, | 
 |  410     WebExceptionCode* ec) { | 
 |  411   ResetCursorPrefetchCaches(); | 
 |  412   scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 
 |  413   int32 response_id = pending_callbacks_.Add(callbacks.release()); | 
 |  414   Send(new IndexedDBHostMsg_IndexGetKeyByRange( | 
 |  415            idb_index_id, CurrentWorkerId(), response_id, key_range, | 
 |  416            TransactionId(transaction), ec)); | 
 |  417   if (*ec) | 
 |  418     pending_callbacks_.Remove(response_id); | 
 |  419 } | 
 |  420  | 
|  388 void IndexedDBDispatcher::RequestIDBObjectStoreGet( |  421 void IndexedDBDispatcher::RequestIDBObjectStoreGet( | 
|  389     const IndexedDBKey& key, |  422     const IndexedDBKey& key, | 
|  390     WebIDBCallbacks* callbacks_ptr, |  423     WebIDBCallbacks* callbacks_ptr, | 
|  391     int32 idb_object_store_id, |  424     int32 idb_object_store_id, | 
|  392     const WebIDBTransaction& transaction, |  425     const WebIDBTransaction& transaction, | 
|  393     WebExceptionCode* ec) { |  426     WebExceptionCode* ec) { | 
|  394   ResetCursorPrefetchCaches(); |  427   ResetCursorPrefetchCaches(); | 
|  395   scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |  428   scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 
|  396  |  429  | 
|  397   int32 response_id = pending_callbacks_.Add(callbacks.release()); |  430   int32 response_id = pending_callbacks_.Add(callbacks.release()); | 
|  398   Send(new IndexedDBHostMsg_ObjectStoreGet( |  431   Send(new IndexedDBHostMsg_ObjectStoreGet( | 
|  399            idb_object_store_id, CurrentWorkerId(), response_id, |  432            idb_object_store_id, CurrentWorkerId(), response_id, | 
|  400            key, TransactionId(transaction), ec)); |  433            key, TransactionId(transaction), ec)); | 
|  401   if (*ec) |  434   if (*ec) | 
|  402     pending_callbacks_.Remove(response_id); |  435     pending_callbacks_.Remove(response_id); | 
|  403 } |  436 } | 
|  404  |  437  | 
 |  438 void IndexedDBDispatcher::RequestIDBObjectStoreGetByRange( | 
 |  439     const IndexedDBKeyRange& key_range, | 
 |  440     WebIDBCallbacks* callbacks_ptr, | 
 |  441     int32 idb_object_store_id, | 
 |  442     const WebIDBTransaction& transaction, | 
 |  443     WebExceptionCode* ec) { | 
 |  444   ResetCursorPrefetchCaches(); | 
 |  445   scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 
 |  446  | 
 |  447   int32 response_id = pending_callbacks_.Add(callbacks.release()); | 
 |  448   Send(new IndexedDBHostMsg_ObjectStoreGetByRange( | 
 |  449            idb_object_store_id, CurrentWorkerId(), response_id, | 
 |  450            key_range, TransactionId(transaction), ec)); | 
 |  451   if (*ec) | 
 |  452     pending_callbacks_.Remove(response_id); | 
 |  453 } | 
 |  454  | 
|  405 void IndexedDBDispatcher::RequestIDBObjectStorePut( |  455 void IndexedDBDispatcher::RequestIDBObjectStorePut( | 
|  406     const content::SerializedScriptValue& value, |  456     const content::SerializedScriptValue& value, | 
|  407     const IndexedDBKey& key, |  457     const IndexedDBKey& key, | 
|  408     WebKit::WebIDBObjectStore::PutMode put_mode, |  458     WebKit::WebIDBObjectStore::PutMode put_mode, | 
|  409     WebIDBCallbacks* callbacks_ptr, |  459     WebIDBCallbacks* callbacks_ptr, | 
|  410     int32 idb_object_store_id, |  460     int32 idb_object_store_id, | 
|  411     const WebIDBTransaction& transaction, |  461     const WebIDBTransaction& transaction, | 
|  412     WebExceptionCode* ec) { |  462     WebExceptionCode* ec) { | 
|  413   ResetCursorPrefetchCaches(); |  463   ResetCursorPrefetchCaches(); | 
|  414   scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |  464   scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 
| (...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  713 } |  763 } | 
|  714  |  764  | 
|  715 void IndexedDBDispatcher::ResetCursorPrefetchCaches(int32 exception_cursor_id) { |  765 void IndexedDBDispatcher::ResetCursorPrefetchCaches(int32 exception_cursor_id) { | 
|  716   typedef std::map<int32, RendererWebIDBCursorImpl*>::iterator Iterator; |  766   typedef std::map<int32, RendererWebIDBCursorImpl*>::iterator Iterator; | 
|  717   for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) { |  767   for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) { | 
|  718     if (i->first == exception_cursor_id) |  768     if (i->first == exception_cursor_id) | 
|  719       continue; |  769       continue; | 
|  720     i->second->ResetPrefetchCache(); |  770     i->second->ResetPrefetchCache(); | 
|  721   } |  771   } | 
|  722 } |  772 } | 
| OLD | NEW |