Index: content/browser/indexed_db/indexed_db_dispatcher_host.h |
diff --git a/content/browser/indexed_db/indexed_db_dispatcher_host.h b/content/browser/indexed_db/indexed_db_dispatcher_host.h |
index 5a77838ad928238be4d754ebf61e5715fe54d7aa..e5d7b8d983a2ce09be18c0a14a2a83ceb5e43534 100644 |
--- a/content/browser/indexed_db/indexed_db_dispatcher_host.h |
+++ b/content/browser/indexed_db/indexed_db_dispatcher_host.h |
@@ -16,29 +16,15 @@ |
#include "base/id_map.h" |
#include "base/macros.h" |
#include "base/memory/ref_counted.h" |
-#include "base/memory/weak_ptr.h" |
#include "content/browser/blob_storage/chrome_blob_storage_context.h" |
#include "content/common/indexed_db/indexed_db.mojom.h" |
#include "content/public/browser/browser_associated_interface.h" |
#include "content/public/browser/browser_message_filter.h" |
#include "net/url_request/url_request_context_getter.h" |
#include "storage/browser/blob/blob_data_handle.h" |
-#include "storage/browser/quota/quota_manager.h" |
-#include "storage/common/quota/quota_status_code.h" |
#include "url/gurl.h" |
-struct IndexedDBDatabaseMetadata; |
-struct IndexedDBHostMsg_DatabaseCount_Params; |
-struct IndexedDBHostMsg_DatabaseCreateIndex_Params; |
-struct IndexedDBHostMsg_DatabaseCreateObjectStore_Params; |
-struct IndexedDBHostMsg_DatabaseCreateTransaction_Params; |
-struct IndexedDBHostMsg_DatabaseDeleteRange_Params; |
-struct IndexedDBHostMsg_DatabaseGet_Params; |
-struct IndexedDBHostMsg_DatabaseGetAll_Params; |
struct IndexedDBHostMsg_DatabaseObserve_Params; |
-struct IndexedDBHostMsg_DatabaseOpenCursor_Params; |
-struct IndexedDBHostMsg_DatabasePut_Params; |
-struct IndexedDBHostMsg_DatabaseSetIndexKeys_Params; |
struct IndexedDBMsg_Observation; |
struct IndexedDBMsg_ObserverChanges; |
@@ -56,7 +42,6 @@ class IndexedDBDatabaseCallbacks; |
class IndexedDBKey; |
class IndexedDBObservation; |
class IndexedDBObserverChanges; |
-struct IndexedDBDatabaseMetadata; |
// Handles all IndexedDB related messages from a particular renderer process. |
class IndexedDBDispatcherHost |
@@ -89,15 +74,17 @@ class IndexedDBDispatcherHost |
storage::BlobStorageContext* blob_storage_context() const { |
return blob_storage_context_->context(); |
} |
+ int ipc_process_id() const { return ipc_process_id_; } |
// IndexedDBCallbacks call these methods to add the results into the |
// applicable map. See below for more details. |
int32_t Add(IndexedDBCursor* cursor); |
- int32_t Add(IndexedDBConnection* connection, |
- const url::Origin& origin); |
- void RegisterTransactionId(int64_t host_transaction_id, |
+ bool RegisterTransactionId(int64_t host_transaction_id, |
const url::Origin& origin); |
+ bool GetTransactionSize(int64_t host_transaction_id, |
+ int64_t* transaction_size); |
+ void AddToTransaction(int64_t host_transaction_id, int64_t value_length); |
IndexedDBCursor* GetCursorFromId(int32_t ipc_cursor_id); |
@@ -113,6 +100,7 @@ class IndexedDBDispatcherHost |
static uint32_t TransactionIdToProcessId(int64_t host_transaction_id); |
std::string HoldBlobData(const IndexedDBBlobInfo& blob_info); |
+ void DropBlobData(const std::string& uuid); |
// True if the channel is closing/closed and outstanding requests |
// can be abandoned. Only access on IndexedDB thread. |
@@ -125,9 +113,8 @@ class IndexedDBDispatcherHost |
// Used in nested classes. |
typedef std::map<int64_t, int64_t> TransactionIDToDatabaseIDMap; |
- typedef std::map<int64_t, uint64_t> TransactionIDToSizeMap; |
+ typedef std::map<int64_t, int64_t> TransactionIDToSizeMap; |
typedef std::map<int64_t, url::Origin> TransactionIDToOriginMap; |
- typedef std::map<int32_t, url::Origin> WebIDBObjectIDToOriginMap; |
// IDMap for RefCounted types |
template <typename RefCountedType> |
@@ -161,90 +148,6 @@ class IndexedDBDispatcherHost |
DISALLOW_COPY_AND_ASSIGN(RefIDMap); |
}; |
- class DatabaseDispatcherHost { |
- public: |
- explicit DatabaseDispatcherHost(IndexedDBDispatcherHost* parent); |
- ~DatabaseDispatcherHost(); |
- |
- void CloseAll(); |
- bool OnMessageReceived(const IPC::Message& message); |
- |
- void OnCreateObjectStore( |
- const IndexedDBHostMsg_DatabaseCreateObjectStore_Params& params); |
- void OnDeleteObjectStore(int32_t ipc_database_id, |
- int64_t transaction_id, |
- int64_t object_store_id); |
- void OnRenameObjectStore(int32_t ipc_database_id, |
- int64_t transaction_id, |
- int64_t object_store_id, |
- const base::string16& new_name); |
- void OnCreateTransaction( |
- const IndexedDBHostMsg_DatabaseCreateTransaction_Params&); |
- void OnClose(int32_t ipc_database_id); |
- void OnVersionChangeIgnored(int32_t ipc_database_id); |
- void OnDestroyed(int32_t ipc_database_id); |
- |
- void OnObserve(const IndexedDBHostMsg_DatabaseObserve_Params&); |
- void OnUnobserve(int32_t ipc_database_id, |
- const std::vector<int32_t>& observer_ids_to_remove); |
- |
- void OnGet(const IndexedDBHostMsg_DatabaseGet_Params& params); |
- void OnGetAll(const IndexedDBHostMsg_DatabaseGetAll_Params& params); |
- // OnPutWrapper starts on the IO thread so that it can grab BlobDataHandles |
- // before posting to the IDB TaskRunner for the rest of the job. |
- void OnPutWrapper(const IndexedDBHostMsg_DatabasePut_Params& params); |
- void OnPut(const IndexedDBHostMsg_DatabasePut_Params& params, |
- std::vector<std::unique_ptr<storage::BlobDataHandle>> handles); |
- void OnSetIndexKeys( |
- const IndexedDBHostMsg_DatabaseSetIndexKeys_Params& params); |
- void OnSetIndexesReady(int32_t ipc_database_id, |
- int64_t transaction_id, |
- int64_t object_store_id, |
- const std::vector<int64_t>& ids); |
- void OnOpenCursor(const IndexedDBHostMsg_DatabaseOpenCursor_Params& params); |
- void OnCount(const IndexedDBHostMsg_DatabaseCount_Params& params); |
- void OnDeleteRange( |
- const IndexedDBHostMsg_DatabaseDeleteRange_Params& params); |
- void OnClear(int32_t ipc_thread_id, |
- int32_t ipc_callbacks_id, |
- int32_t ipc_database_id, |
- int64_t transaction_id, |
- int64_t object_store_id); |
- void OnCreateIndex( |
- const IndexedDBHostMsg_DatabaseCreateIndex_Params& params); |
- void OnDeleteIndex(int32_t ipc_database_id, |
- int64_t transaction_id, |
- int64_t object_store_id, |
- int64_t index_id); |
- void OnRenameIndex(int32_t ipc_database_id, |
- int64_t transaction_id, |
- int64_t object_store_id, |
- int64_t index_id, |
- const base::string16& new_name); |
- |
- void OnAbort(int32_t ipc_database_id, int64_t transaction_id); |
- void OnCommit(int32_t ipc_database_id, int64_t transaction_id); |
- void OnGotUsageAndQuotaForCommit(int32_t ipc_database_id, |
- int64_t transaction_id, |
- storage::QuotaStatusCode status, |
- int64_t usage, |
- int64_t quota); |
- |
- IndexedDBDispatcherHost* parent_; |
- IDMap<IndexedDBConnection, IDMapOwnPointer> map_; |
- WebIDBObjectIDToOriginMap database_origin_map_; |
- TransactionIDToSizeMap transaction_size_map_; |
- TransactionIDToOriginMap transaction_origin_map_; |
- TransactionIDToDatabaseIDMap transaction_database_map_; |
- |
- // Weak pointers are used when an asynchronous quota request is made, in |
- // case the dispatcher is torn down before the response returns. |
- base::WeakPtrFactory<DatabaseDispatcherHost> weak_factory_; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(DatabaseDispatcherHost); |
- }; |
- |
class CursorDispatcherHost { |
public: |
explicit CursorDispatcherHost(IndexedDBDispatcherHost* parent); |
@@ -281,9 +184,6 @@ class IndexedDBDispatcherHost |
// Helper templates. |
template <class ReturnType> |
- ReturnType* GetOrTerminateProcess(IDMap<ReturnType, IDMapOwnPointer>* map, |
- int32_t ipc_return_object_id); |
- template <class ReturnType> |
ReturnType* GetOrTerminateProcess(RefIDMap<ReturnType>* map, |
int32_t ipc_return_object_id); |
@@ -323,12 +223,8 @@ class IndexedDBDispatcherHost |
// Message processing. Most of the work is delegated to the dispatcher hosts |
// below. |
void OnAckReceivedBlobs(const std::vector<std::string>& uuids); |
- void OnPutHelper( |
- const IndexedDBHostMsg_DatabasePut_Params& params, |
- std::vector<std::unique_ptr<storage::BlobDataHandle>> handles); |
void ResetDispatcherHosts(); |
- void DropBlobData(const std::string& uuid); |
scoped_refptr<net::URLRequestContextGetter> request_context_getter_; |
scoped_refptr<IndexedDBContextImpl> indexed_db_context_; |
@@ -343,7 +239,8 @@ class IndexedDBDispatcherHost |
// Only access on IndexedDB thread. |
bool is_open_ = true; |
- std::unique_ptr<DatabaseDispatcherHost> database_dispatcher_host_; |
+ TransactionIDToSizeMap transaction_size_map_; |
+ TransactionIDToOriginMap transaction_origin_map_; |
std::unique_ptr<CursorDispatcherHost> cursor_dispatcher_host_; |
// Used to set file permissions for blob storage. |