Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1416)

Side by Side Diff: content/browser/in_process_webkit/indexed_db_dispatcher_host.cc

Issue 12217049: Proxy WebData-based WebIDBDatabase::put (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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"
11 #include "base/process.h" 11 #include "base/process.h"
12 #include "base/process_util.h" 12 #include "base/process_util.h"
13 #include "base/utf_string_conversions.h" 13 #include "base/utf_string_conversions.h"
14 #include "content/browser/in_process_webkit/indexed_db_callbacks.h" 14 #include "content/browser/in_process_webkit/indexed_db_callbacks.h"
15 #include "content/browser/in_process_webkit/indexed_db_context_impl.h" 15 #include "content/browser/in_process_webkit/indexed_db_context_impl.h"
16 #include "content/browser/in_process_webkit/indexed_db_database_callbacks.h" 16 #include "content/browser/in_process_webkit/indexed_db_database_callbacks.h"
17 #include "content/browser/renderer_host/render_message_filter.h" 17 #include "content/browser/renderer_host/render_message_filter.h"
18 #include "content/common/indexed_db/indexed_db_messages.h" 18 #include "content/common/indexed_db/indexed_db_messages.h"
19 #include "content/public/browser/browser_thread.h" 19 #include "content/public/browser/browser_thread.h"
20 #include "content/public/browser/user_metrics.h" 20 #include "content/public/browser/user_metrics.h"
21 #include "content/public/common/content_switches.h" 21 #include "content/public/common/content_switches.h"
22 #include "content/public/common/result_codes.h" 22 #include "content/public/common/result_codes.h"
23 #include "googleurl/src/gurl.h" 23 #include "googleurl/src/gurl.h"
24 #include "third_party/WebKit/Source/Platform/chromium/public/WebData.h"
24 #include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h" 25 #include "third_party/WebKit/Source/Platform/chromium/public/WebVector.h"
25 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDOMStringList.h" 26 #include "third_party/WebKit/Source/WebKit/chromium/public/WebDOMStringList.h"
26 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBCursor.h" 27 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBCursor.h"
27 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabase.h" 28 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabase.h"
28 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabaseCallbac ks.h" 29 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabaseCallbac ks.h"
29 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabaseError.h " 30 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabaseError.h "
30 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabaseExcepti on.h" 31 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabaseExcepti on.h"
31 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBFactory.h" 32 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBFactory.h"
32 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBMetadata.h" 33 #include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBMetadata.h"
33 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" 34 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h"
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
335 message, *msg_is_ok) 336 message, *msg_is_ok)
336 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateObjectStore, 337 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateObjectStore,
337 OnCreateObjectStore) 338 OnCreateObjectStore)
338 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDeleteObjectStore, 339 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDeleteObjectStore,
339 OnDeleteObjectStore) 340 OnDeleteObjectStore)
340 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateTransaction, 341 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateTransaction,
341 OnCreateTransaction) 342 OnCreateTransaction)
342 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseClose, OnClose) 343 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseClose, OnClose)
343 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDestroyed, OnDestroyed) 344 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDestroyed, OnDestroyed)
344 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseGet, OnGet) 345 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseGet, OnGet)
346 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabasePutOld, OnPutOld)
345 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabasePut, OnPut) 347 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabasePut, OnPut)
346 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseSetIndexKeys, 348 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseSetIndexKeys,
347 OnSetIndexKeys) 349 OnSetIndexKeys)
348 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseSetIndexesReady, 350 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseSetIndexesReady,
349 OnSetIndexesReady) 351 OnSetIndexesReady)
350 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseOpenCursor, OnOpenCursor) 352 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseOpenCursor, OnOpenCursor)
351 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCount, OnCount) 353 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCount, OnCount)
352 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDeleteRange, OnDeleteRange) 354 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDeleteRange, OnDeleteRange)
353 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseClear, OnClear) 355 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseClear, OnClear)
354 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateIndex, 356 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateIndex,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
453 scoped_ptr<WebIDBCallbacks> callbacks( 455 scoped_ptr<WebIDBCallbacks> callbacks(
454 new IndexedDBCallbacks<WebSerializedScriptValue>( 456 new IndexedDBCallbacks<WebSerializedScriptValue>(
455 parent_, params.ipc_thread_id, 457 parent_, params.ipc_thread_id,
456 params.ipc_response_id)); 458 params.ipc_response_id));
457 database->get(parent_->HostTransactionId(params.transaction_id), 459 database->get(parent_->HostTransactionId(params.transaction_id),
458 params.object_store_id, 460 params.object_store_id,
459 params.index_id, 461 params.index_id,
460 params.key_range, params.key_only, callbacks.release()); 462 params.key_range, params.key_only, callbacks.release());
461 } 463 }
462 464
463 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnPut( 465 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnPutOld(
464 const IndexedDBHostMsg_DatabasePut_Params& params) { 466 const IndexedDBHostMsg_DatabasePutOld_Params& params) {
465 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); 467 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
466 468
467 WebIDBDatabase* database = parent_->GetOrTerminateProcess( 469 WebIDBDatabase* database = parent_->GetOrTerminateProcess(
468 &map_, params.ipc_database_id); 470 &map_, params.ipc_database_id);
469 if (!database) 471 if (!database)
470 return; 472 return;
471 scoped_ptr<WebIDBCallbacks> callbacks( 473 scoped_ptr<WebIDBCallbacks> callbacks(
472 new IndexedDBCallbacks<WebIDBKey>(parent_, params.ipc_thread_id, 474 new IndexedDBCallbacks<WebIDBKey>(parent_, params.ipc_thread_id,
473 params.ipc_response_id)); 475 params.ipc_response_id));
474 476
475 WebVector<unsigned char> value(params.value); 477 WebVector<unsigned char> value(params.value);
476 int64 host_transaction_id = parent_->HostTransactionId(params.transaction_id); 478 int64 host_transaction_id = parent_->HostTransactionId(params.transaction_id);
477 database->put(host_transaction_id, 479 database->put(host_transaction_id,
478 params.object_store_id, 480 params.object_store_id,
479 &value, params.key, 481 &value, params.key,
480 params.put_mode, callbacks.release(), 482 params.put_mode, callbacks.release(),
481 params.index_ids, 483 params.index_ids,
482 params.index_keys); 484 params.index_keys);
483 WebIDBTransactionIDToSizeMap* map = 485 WebIDBTransactionIDToSizeMap* map =
484 &parent_->database_dispatcher_host_->transaction_size_map_; 486 &parent_->database_dispatcher_host_->transaction_size_map_;
485 // Size can't be big enough to overflow because it represents the 487 // Size can't be big enough to overflow because it represents the
486 // actual bytes passed through IPC. 488 // actual bytes passed through IPC.
487 (*map)[host_transaction_id] += params.value.size(); 489 (*map)[host_transaction_id] += params.value.size();
488 } 490 }
489 491
492 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnPut(
493 const IndexedDBHostMsg_DatabasePut_Params& params) {
494 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
495
496 WebIDBDatabase* database = parent_->GetOrTerminateProcess(
497 &map_, params.ipc_database_id);
498 if (!database)
499 return;
500 scoped_ptr<WebIDBCallbacks> callbacks(
501 new IndexedDBCallbacks<WebIDBKey>(parent_, params.ipc_thread_id,
502 params.ipc_response_id));
503
504 WebKit::WebData value(params.value);
jsbell 2013/02/07 00:06:07 In .cc files we typically add a "using" line near
505 int64 host_transaction_id = parent_->HostTransactionId(params.transaction_id);
506 database->put(host_transaction_id,
507 params.object_store_id,
508 value, params.key,
509 params.put_mode, callbacks.release(),
510 params.index_ids,
511 params.index_keys);
512 WebIDBTransactionIDToSizeMap* map =
513 &parent_->database_dispatcher_host_->transaction_size_map_;
514 // Size can't be big enough to overflow because it represents the
515 // actual bytes passed through IPC.
516 (*map)[host_transaction_id] += params.value.size();
517 }
518
490 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexKeys( 519 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexKeys(
491 const IndexedDBHostMsg_DatabaseSetIndexKeys_Params& params) { 520 const IndexedDBHostMsg_DatabaseSetIndexKeys_Params& params) {
492 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); 521 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
493 WebIDBDatabase* database = parent_->GetOrTerminateProcess( 522 WebIDBDatabase* database = parent_->GetOrTerminateProcess(
494 &map_, params.ipc_database_id); 523 &map_, params.ipc_database_id);
495 if (!database) 524 if (!database)
496 return; 525 return;
497 526
498 database->setIndexKeys(parent_->HostTransactionId(params.transaction_id), 527 database->setIndexKeys(parent_->HostTransactionId(params.transaction_id),
499 params.object_store_id, 528 params.object_store_id,
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
785 ipc_response_id), ec); 814 ipc_response_id), ec);
786 DCHECK(!ec); 815 DCHECK(!ec);
787 } 816 }
788 817
789 void IndexedDBDispatcherHost::CursorDispatcherHost::OnDestroyed( 818 void IndexedDBDispatcherHost::CursorDispatcherHost::OnDestroyed(
790 int32 ipc_object_id) { 819 int32 ipc_object_id) {
791 parent_->DestroyObject(&map_, ipc_object_id); 820 parent_->DestroyObject(&map_, ipc_object_id);
792 } 821 }
793 822
794 } // namespace content 823 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698