| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/child/indexed_db/indexed_db_dispatcher.h" | 5 #include "content/child/indexed_db/indexed_db_dispatcher.h" |
| 6 | 6 |
| 7 #include "base/format_macros.h" | 7 #include "base/format_macros.h" |
| 8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "base/threading/thread_local.h" | 10 #include "base/threading/thread_local.h" |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 272 // There won't be pending database callbacks if the transaction was aborted in | 272 // There won't be pending database callbacks if the transaction was aborted in |
| 273 // the initial upgradeneeded event handler. | 273 // the initial upgradeneeded event handler. |
| 274 if (pending_database_callbacks_.Lookup(ipc_database_callbacks_id)) | 274 if (pending_database_callbacks_.Lookup(ipc_database_callbacks_id)) |
| 275 pending_database_callbacks_.Remove(ipc_database_callbacks_id); | 275 pending_database_callbacks_.Remove(ipc_database_callbacks_id); |
| 276 } | 276 } |
| 277 | 277 |
| 278 void IndexedDBDispatcher::RequestIDBDatabaseCreateTransaction( | 278 void IndexedDBDispatcher::RequestIDBDatabaseCreateTransaction( |
| 279 int32 ipc_database_id, | 279 int32 ipc_database_id, |
| 280 int64 transaction_id, | 280 int64 transaction_id, |
| 281 WebIDBDatabaseCallbacks* database_callbacks_ptr, | 281 WebIDBDatabaseCallbacks* database_callbacks_ptr, |
| 282 WebKit::WebVector<long long> object_store_ids, | 282 WebVector<long long> object_store_ids, |
| 283 unsigned short mode) { | 283 unsigned short mode) { |
| 284 scoped_ptr<WebIDBDatabaseCallbacks> database_callbacks( | 284 scoped_ptr<WebIDBDatabaseCallbacks> database_callbacks( |
| 285 database_callbacks_ptr); | 285 database_callbacks_ptr); |
| 286 IndexedDBHostMsg_DatabaseCreateTransaction_Params params; | 286 IndexedDBHostMsg_DatabaseCreateTransaction_Params params; |
| 287 params.ipc_thread_id = CurrentWorkerId(); | 287 params.ipc_thread_id = CurrentWorkerId(); |
| 288 params.ipc_database_id = ipc_database_id; | 288 params.ipc_database_id = ipc_database_id; |
| 289 params.transaction_id = transaction_id; | 289 params.transaction_id = transaction_id; |
| 290 params.ipc_database_callbacks_id = | 290 params.ipc_database_callbacks_id = |
| 291 pending_database_callbacks_.Add(database_callbacks.release()); | 291 pending_database_callbacks_.Add(database_callbacks.release()); |
| 292 params.object_store_ids | 292 params.object_store_ids |
| (...skipping 26 matching lines...) Expand all Loading... |
| 319 | 319 |
| 320 void IndexedDBDispatcher::RequestIDBDatabasePut( | 320 void IndexedDBDispatcher::RequestIDBDatabasePut( |
| 321 int32 ipc_database_id, | 321 int32 ipc_database_id, |
| 322 int64 transaction_id, | 322 int64 transaction_id, |
| 323 int64 object_store_id, | 323 int64 object_store_id, |
| 324 const WebData& value, | 324 const WebData& value, |
| 325 const IndexedDBKey& key, | 325 const IndexedDBKey& key, |
| 326 WebIDBDatabase::PutMode put_mode, | 326 WebIDBDatabase::PutMode put_mode, |
| 327 WebIDBCallbacks* callbacks, | 327 WebIDBCallbacks* callbacks, |
| 328 const WebVector<long long>& index_ids, | 328 const WebVector<long long>& index_ids, |
| 329 const WebVector<WebKit::WebVector<WebIDBKey> >& index_keys) { | 329 const WebVector<WebVector<WebIDBKey> >& index_keys) { |
| 330 | 330 |
| 331 if (value.size() > kMaxIDBValueSizeInBytes) { | 331 if (value.size() > kMaxIDBValueSizeInBytes) { |
| 332 callbacks->onError(WebIDBDatabaseError( | 332 callbacks->onError(WebIDBDatabaseError( |
| 333 WebKit::WebIDBDatabaseExceptionUnknownError, | 333 WebKit::WebIDBDatabaseExceptionUnknownError, |
| 334 WebString::fromUTF8(base::StringPrintf( | 334 WebString::fromUTF8(base::StringPrintf( |
| 335 "The serialized value is too large" | 335 "The serialized value is too large" |
| 336 " (size=%" PRIuS " bytes, max=%" PRIuS " bytes).", | 336 " (size=%" PRIuS " bytes, max=%" PRIuS " bytes).", |
| 337 value.size(), | 337 value.size(), |
| 338 kMaxIDBValueSizeInBytes).c_str()))); | 338 kMaxIDBValueSizeInBytes).c_str()))); |
| 339 return; | 339 return; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 366 } | 366 } |
| 367 | 367 |
| 368 void IndexedDBDispatcher::RequestIDBDatabaseOpenCursor( | 368 void IndexedDBDispatcher::RequestIDBDatabaseOpenCursor( |
| 369 int32 ipc_database_id, | 369 int32 ipc_database_id, |
| 370 int64 transaction_id, | 370 int64 transaction_id, |
| 371 int64 object_store_id, | 371 int64 object_store_id, |
| 372 int64 index_id, | 372 int64 index_id, |
| 373 const IndexedDBKeyRange& key_range, | 373 const IndexedDBKeyRange& key_range, |
| 374 unsigned short direction, | 374 unsigned short direction, |
| 375 bool key_only, | 375 bool key_only, |
| 376 WebKit::WebIDBDatabase::TaskType task_type, | 376 WebIDBDatabase::TaskType task_type, |
| 377 WebIDBCallbacks* callbacks) { | 377 WebIDBCallbacks* callbacks) { |
| 378 ResetCursorPrefetchCaches(); | 378 ResetCursorPrefetchCaches(); |
| 379 IndexedDBHostMsg_DatabaseOpenCursor_Params params; | 379 IndexedDBHostMsg_DatabaseOpenCursor_Params params; |
| 380 init_params(params, callbacks); | 380 init_params(params, callbacks); |
| 381 params.ipc_database_id = ipc_database_id; | 381 params.ipc_database_id = ipc_database_id; |
| 382 params.transaction_id = transaction_id; | 382 params.transaction_id = transaction_id; |
| 383 params.object_store_id = object_store_id; | 383 params.object_store_id = object_store_id; |
| 384 params.index_id = index_id; | 384 params.index_id = index_id; |
| 385 params.key_range = IndexedDBKeyRange(key_range); | 385 params.key_range = key_range; |
| 386 params.direction = direction; | 386 params.direction = direction; |
| 387 params.key_only = key_only; | 387 params.key_only = key_only; |
| 388 params.task_type = task_type; | 388 params.task_type = task_type; |
| 389 Send(new IndexedDBHostMsg_DatabaseOpenCursor(params)); | 389 Send(new IndexedDBHostMsg_DatabaseOpenCursor(params)); |
| 390 } | 390 } |
| 391 | 391 |
| 392 void IndexedDBDispatcher::RequestIDBDatabaseCount( | 392 void IndexedDBDispatcher::RequestIDBDatabaseCount( |
| 393 int32 ipc_database_id, | 393 int32 ipc_database_id, |
| 394 int64 transaction_id, | 394 int64 transaction_id, |
| 395 int64 object_store_id, | 395 int64 object_store_id, |
| 396 int64 index_id, | 396 int64 index_id, |
| 397 const IndexedDBKeyRange& key_range, | 397 const IndexedDBKeyRange& key_range, |
| 398 WebKit::WebIDBCallbacks* callbacks) { | 398 WebIDBCallbacks* callbacks) { |
| 399 ResetCursorPrefetchCaches(); | 399 ResetCursorPrefetchCaches(); |
| 400 IndexedDBHostMsg_DatabaseCount_Params params; | 400 IndexedDBHostMsg_DatabaseCount_Params params; |
| 401 init_params(params, callbacks); | 401 init_params(params, callbacks); |
| 402 params.ipc_database_id = ipc_database_id; | 402 params.ipc_database_id = ipc_database_id; |
| 403 params.transaction_id = transaction_id; | 403 params.transaction_id = transaction_id; |
| 404 params.object_store_id = object_store_id; | 404 params.object_store_id = object_store_id; |
| 405 params.index_id = index_id; | 405 params.index_id = index_id; |
| 406 params.key_range = IndexedDBKeyRange(key_range); | 406 params.key_range = key_range; |
| 407 Send(new IndexedDBHostMsg_DatabaseCount(params)); | 407 Send(new IndexedDBHostMsg_DatabaseCount(params)); |
| 408 } | 408 } |
| 409 | 409 |
| 410 void IndexedDBDispatcher::RequestIDBDatabaseDeleteRange( | 410 void IndexedDBDispatcher::RequestIDBDatabaseDeleteRange( |
| 411 int32 ipc_database_id, | 411 int32 ipc_database_id, |
| 412 int64 transaction_id, | 412 int64 transaction_id, |
| 413 int64 object_store_id, | 413 int64 object_store_id, |
| 414 const IndexedDBKeyRange& key_range, | 414 const IndexedDBKeyRange& key_range, |
| 415 WebKit::WebIDBCallbacks* callbacks) { | 415 WebIDBCallbacks* callbacks) { |
| 416 ResetCursorPrefetchCaches(); | 416 ResetCursorPrefetchCaches(); |
| 417 IndexedDBHostMsg_DatabaseDeleteRange_Params params; | 417 IndexedDBHostMsg_DatabaseDeleteRange_Params params; |
| 418 init_params(params, callbacks); | 418 init_params(params, callbacks); |
| 419 params.ipc_database_id = ipc_database_id; | 419 params.ipc_database_id = ipc_database_id; |
| 420 params.transaction_id = transaction_id; | 420 params.transaction_id = transaction_id; |
| 421 params.object_store_id = object_store_id; | 421 params.object_store_id = object_store_id; |
| 422 params.key_range = key_range; | 422 params.key_range = key_range; |
| 423 Send(new IndexedDBHostMsg_DatabaseDeleteRange(params)); | 423 Send(new IndexedDBHostMsg_DatabaseDeleteRange(params)); |
| 424 } | 424 } |
| 425 | 425 |
| 426 void IndexedDBDispatcher::RequestIDBDatabaseClear( | 426 void IndexedDBDispatcher::RequestIDBDatabaseClear( |
| 427 int32 ipc_database_id, | 427 int32 ipc_database_id, |
| 428 int64 transaction_id, | 428 int64 transaction_id, |
| 429 int64 object_store_id, | 429 int64 object_store_id, |
| 430 WebKit::WebIDBCallbacks* callbacks_ptr) { | 430 WebIDBCallbacks* callbacks_ptr) { |
| 431 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 431 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
| 432 int32 ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); | 432 int32 ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); |
| 433 Send(new IndexedDBHostMsg_DatabaseClear(CurrentWorkerId(), | 433 Send(new IndexedDBHostMsg_DatabaseClear(CurrentWorkerId(), |
| 434 ipc_callbacks_id, | 434 ipc_callbacks_id, |
| 435 ipc_database_id, | 435 ipc_database_id, |
| 436 transaction_id, | 436 transaction_id, |
| 437 object_store_id)); | 437 object_store_id)); |
| 438 } | 438 } |
| 439 | 439 |
| 440 void IndexedDBDispatcher::CursorDestroyed(int32 ipc_cursor_id) { | 440 void IndexedDBDispatcher::CursorDestroyed(int32 ipc_cursor_id) { |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 int32 ipc_exception_cursor_id) { | 707 int32 ipc_exception_cursor_id) { |
| 708 typedef std::map<int32, RendererWebIDBCursorImpl*>::iterator Iterator; | 708 typedef std::map<int32, RendererWebIDBCursorImpl*>::iterator Iterator; |
| 709 for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) { | 709 for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) { |
| 710 if (i->first == ipc_exception_cursor_id) | 710 if (i->first == ipc_exception_cursor_id) |
| 711 continue; | 711 continue; |
| 712 i->second->ResetPrefetchCache(); | 712 i->second->ResetPrefetchCache(); |
| 713 } | 713 } |
| 714 } | 714 } |
| 715 | 715 |
| 716 } // namespace content | 716 } // namespace content |
| OLD | NEW |