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

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: Update to use explicit &front() 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"
34 #include "webkit/base/file_path_string_conversions.h" 35 #include "webkit/base/file_path_string_conversions.h"
35 #include "webkit/database/database_util.h" 36 #include "webkit/database/database_util.h"
36 37
37 using webkit_database::DatabaseUtil; 38 using webkit_database::DatabaseUtil;
38 using WebKit::WebDOMStringList; 39 using WebKit::WebDOMStringList;
40 using WebKit::WebData;
39 using WebKit::WebExceptionCode; 41 using WebKit::WebExceptionCode;
40 using WebKit::WebIDBCallbacks; 42 using WebKit::WebIDBCallbacks;
41 using WebKit::WebIDBCursor; 43 using WebKit::WebIDBCursor;
42 using WebKit::WebIDBDatabase; 44 using WebKit::WebIDBDatabase;
43 using WebKit::WebIDBDatabaseError; 45 using WebKit::WebIDBDatabaseError;
44 using WebKit::WebIDBIndex; 46 using WebKit::WebIDBIndex;
45 using WebKit::WebIDBKey; 47 using WebKit::WebIDBKey;
46 using WebKit::WebIDBMetadata; 48 using WebKit::WebIDBMetadata;
47 using WebKit::WebIDBObjectStore; 49 using WebKit::WebIDBObjectStore;
48 using WebKit::WebSecurityOrigin; 50 using WebKit::WebSecurityOrigin;
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 message, *msg_is_ok) 341 message, *msg_is_ok)
340 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateObjectStore, 342 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateObjectStore,
341 OnCreateObjectStore) 343 OnCreateObjectStore)
342 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDeleteObjectStore, 344 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDeleteObjectStore,
343 OnDeleteObjectStore) 345 OnDeleteObjectStore)
344 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateTransaction, 346 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateTransaction,
345 OnCreateTransaction) 347 OnCreateTransaction)
346 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseClose, OnClose) 348 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseClose, OnClose)
347 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDestroyed, OnDestroyed) 349 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDestroyed, OnDestroyed)
348 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseGet, OnGet) 350 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseGet, OnGet)
351 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabasePutOld, OnPutOld)
349 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabasePut, OnPut) 352 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabasePut, OnPut)
350 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseSetIndexKeys, 353 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseSetIndexKeys,
351 OnSetIndexKeys) 354 OnSetIndexKeys)
352 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseSetIndexesReady, 355 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseSetIndexesReady,
353 OnSetIndexesReady) 356 OnSetIndexesReady)
354 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseOpenCursor, OnOpenCursor) 357 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseOpenCursor, OnOpenCursor)
355 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCount, OnCount) 358 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCount, OnCount)
356 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDeleteRange, OnDeleteRange) 359 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDeleteRange, OnDeleteRange)
357 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseClear, OnClear) 360 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseClear, OnClear)
358 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateIndex, 361 IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateIndex,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 scoped_ptr<WebIDBCallbacks> callbacks( 460 scoped_ptr<WebIDBCallbacks> callbacks(
458 new IndexedDBCallbacks<WebSerializedScriptValue>( 461 new IndexedDBCallbacks<WebSerializedScriptValue>(
459 parent_, params.ipc_thread_id, 462 parent_, params.ipc_thread_id,
460 params.ipc_response_id)); 463 params.ipc_response_id));
461 database->get(parent_->HostTransactionId(params.transaction_id), 464 database->get(parent_->HostTransactionId(params.transaction_id),
462 params.object_store_id, 465 params.object_store_id,
463 params.index_id, 466 params.index_id,
464 params.key_range, params.key_only, callbacks.release()); 467 params.key_range, params.key_only, callbacks.release());
465 } 468 }
466 469
467 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnPut( 470 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnPutOld(
468 const IndexedDBHostMsg_DatabasePut_Params& params) { 471 const IndexedDBHostMsg_DatabasePutOld_Params& params) {
469 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); 472 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
470 473
471 WebIDBDatabase* database = parent_->GetOrTerminateProcess( 474 WebIDBDatabase* database = parent_->GetOrTerminateProcess(
472 &map_, params.ipc_database_id); 475 &map_, params.ipc_database_id);
473 if (!database) 476 if (!database)
474 return; 477 return;
475 scoped_ptr<WebIDBCallbacks> callbacks( 478 scoped_ptr<WebIDBCallbacks> callbacks(
476 new IndexedDBCallbacks<WebIDBKey>(parent_, params.ipc_thread_id, 479 new IndexedDBCallbacks<WebIDBKey>(parent_, params.ipc_thread_id,
477 params.ipc_response_id)); 480 params.ipc_response_id));
478 if (params.index_ids.size() != params.index_keys.size()) { 481 if (params.index_ids.size() != params.index_keys.size()) {
(...skipping 11 matching lines...) Expand all
490 params.put_mode, callbacks.release(), 493 params.put_mode, callbacks.release(),
491 params.index_ids, 494 params.index_ids,
492 params.index_keys); 495 params.index_keys);
493 TransactionIDToSizeMap* map = 496 TransactionIDToSizeMap* map =
494 &parent_->database_dispatcher_host_->transaction_size_map_; 497 &parent_->database_dispatcher_host_->transaction_size_map_;
495 // Size can't be big enough to overflow because it represents the 498 // Size can't be big enough to overflow because it represents the
496 // actual bytes passed through IPC. 499 // actual bytes passed through IPC.
497 (*map)[host_transaction_id] += params.value.size(); 500 (*map)[host_transaction_id] += params.value.size();
498 } 501 }
499 502
503 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnPut(
504 const IndexedDBHostMsg_DatabasePut_Params& params) {
505 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
506
507 WebIDBDatabase* database = parent_->GetOrTerminateProcess(
508 &map_, params.ipc_database_id);
509 if (!database)
510 return;
511 scoped_ptr<WebIDBCallbacks> callbacks(
512 new IndexedDBCallbacks<WebIDBKey>(parent_, params.ipc_thread_id,
513 params.ipc_response_id));
514 // Be careful with empty vectors.
515 WebData value;
516 if (params.value.size())
517 value.assign(&params.value.front(), params.value.size());
518 int64 host_transaction_id = parent_->HostTransactionId(params.transaction_id);
519 database->put(host_transaction_id,
520 params.object_store_id,
521 value, params.key,
522 params.put_mode, callbacks.release(),
523 params.index_ids,
524 params.index_keys);
525 TransactionIDToSizeMap* map =
526 &parent_->database_dispatcher_host_->transaction_size_map_;
527 // Size can't be big enough to overflow because it represents the
528 // actual bytes passed through IPC.
529 (*map)[host_transaction_id] += params.value.size();
530 }
531
500 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexKeys( 532 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetIndexKeys(
501 const IndexedDBHostMsg_DatabaseSetIndexKeys_Params& params) { 533 const IndexedDBHostMsg_DatabaseSetIndexKeys_Params& params) {
502 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); 534 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
503 WebIDBDatabase* database = parent_->GetOrTerminateProcess( 535 WebIDBDatabase* database = parent_->GetOrTerminateProcess(
504 &map_, params.ipc_database_id); 536 &map_, params.ipc_database_id);
505 if (!database) 537 if (!database)
506 return; 538 return;
507 539
508 int64 host_transaction_id = parent_->HostTransactionId(params.transaction_id); 540 int64 host_transaction_id = parent_->HostTransactionId(params.transaction_id);
509 if (params.index_ids.size() != params.index_keys.size()) { 541 if (params.index_ids.size() != params.index_keys.size()) {
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 ipc_response_id), ec); 834 ipc_response_id), ec);
803 DCHECK(!ec); 835 DCHECK(!ec);
804 } 836 }
805 837
806 void IndexedDBDispatcherHost::CursorDispatcherHost::OnDestroyed( 838 void IndexedDBDispatcherHost::CursorDispatcherHost::OnDestroyed(
807 int32 ipc_object_id) { 839 int32 ipc_object_id) {
808 parent_->DestroyObject(&map_, ipc_object_id); 840 parent_->DestroyObject(&map_, ipc_object_id);
809 } 841 }
810 842
811 } // namespace content 843 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/in_process_webkit/indexed_db_dispatcher_host.h ('k') | content/common/indexed_db/indexed_db_dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698