indexed_db_callbacks.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_CALLBACKS_H_ 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_CALLBACKS_H_ 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <string> 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <vector> 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/basictypes.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/logging.h" 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/memory/ref_counted.h" 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/memory/scoped_ptr.h" 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/strings/string16.h" 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/browser/indexed_db/indexed_db_database_error.h" 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/browser/indexed_db/indexed_db_dispatcher_host.h" 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/common/indexed_db/indexed_db_key.h" 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "content/common/indexed_db/indexed_db_key_path.h" 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "googleurl/src/gurl.h" 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "third_party/WebKit/public/platform/WebIDBCallbacks.h" 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace content { 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass IndexedDBConnection; 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass IndexedDBCursor; 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass IndexedDBDatabase; 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass IndexedDBDatabaseCallbacks; 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochstruct IndexedDBDatabaseMetadata; 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass CONTENT_EXPORT IndexedDBCallbacks 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch : public base::RefCounted<IndexedDBCallbacks> { 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Simple payload responses 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static scoped_refptr<IndexedDBCallbacks> Create( 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IndexedDBDispatcherHost* dispatcher_host, 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_thread_id, 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_callbacks_id) { 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return make_scoped_refptr(new IndexedDBCallbacks( 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch dispatcher_host, ipc_thread_id, ipc_callbacks_id)); 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBCursor responses 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static scoped_refptr<IndexedDBCallbacks> Create( 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IndexedDBDispatcherHost* dispatcher_host, 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_thread_id, 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_callbacks_id, 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_cursor_id) { 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return make_scoped_refptr(new IndexedDBCallbacks( 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch dispatcher_host, ipc_thread_id, ipc_callbacks_id, ipc_cursor_id)); 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBDatabase responses 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch static scoped_refptr<IndexedDBCallbacks> Create( 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IndexedDBDispatcherHost* dispatcher_host, 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_thread_id, 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_callbacks_id, 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_database_callbacks_id, 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int64 host_transaction_id, 58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const GURL& origin_url) { 59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return make_scoped_refptr(new IndexedDBCallbacks(dispatcher_host, 60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ipc_thread_id, 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ipc_callbacks_id, 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch ipc_database_callbacks_id, 63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch host_transaction_id, 64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch origin_url)); 65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch } 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnError(const IndexedDBDatabaseError& error); 68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBFactory::GetDatabaseNames 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnSuccess(const std::vector<string16>& string); 71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBFactory::Open / DeleteDatabase 73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnBlocked(int64 existing_version); 74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBFactory::Open 76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnUpgradeNeeded( 77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int64 old_version, 78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_ptr<IndexedDBConnection> connection, 79eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const content::IndexedDBDatabaseMetadata& metadata, 80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch WebKit::WebIDBCallbacks::DataLoss data_loss); 81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnSuccess(scoped_ptr<IndexedDBConnection> connection, 82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const content::IndexedDBDatabaseMetadata& metadata); 83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBDatabase::OpenCursor 85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnSuccess(scoped_refptr<IndexedDBCursor> cursor, 86eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const IndexedDBKey& key, 87eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const IndexedDBKey& primary_key, 88eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::vector<char>* value); 89eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 90eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBCursor::Continue / Advance 91eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnSuccess(const IndexedDBKey& key, 92eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const IndexedDBKey& primary_key, 93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch std::vector<char>* value); 94eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 95eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBCursor::PrefetchContinue 96eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnSuccessWithPrefetch( 97eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::vector<IndexedDBKey>& keys, 98eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::vector<IndexedDBKey>& primary_keys, 99eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const std::vector<std::vector<char> >& values); 100eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 101eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBDatabase::Get (with key injection) 102eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnSuccess(std::vector<char>* data, 103eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const IndexedDBKey& key, 104eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const IndexedDBKeyPath& key_path); 105eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 106eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBDatabase::Get 107eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnSuccess(std::vector<char>* value); 108eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 109eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBDatabase::Put / IndexedDBCursor::Update 110eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnSuccess(const IndexedDBKey& value); 111eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBDatabase::Count 113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnSuccess(int64 value); 114eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 115eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBDatabase::Delete 116eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBCursor::Continue / Advance (when complete) 117eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void OnSuccess(); 118eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 119eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch protected: 120eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~IndexedDBCallbacks(); 121eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 122eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Simple payload responses 123eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, 124eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_thread_id, 125eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_callbacks_id); 126eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBCursor responses 128eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, 129eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_thread_id, 130eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_callbacks_id, 131eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_cursor_id); 132eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 133eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBDatabase responses 134eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, 135eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_thread_id, 136eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_callbacks_id, 137eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_database_callbacks_id, 138eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int64 host_transaction_id, 139eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const GURL& origin_url); 140eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 141eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 142eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch friend class base::RefCounted<IndexedDBCallbacks>; 143eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 144eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Originally from IndexedDBCallbacks: 145eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch scoped_refptr<IndexedDBDispatcherHost> dispatcher_host_; 146eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_callbacks_id_; 147eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_thread_id_; 148eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 149eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBCursor callbacks ------------------------ 150eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_cursor_id_; 151eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 152eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IndexedDBDatabase callbacks ------------------------ 153eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int64 host_transaction_id_; 154eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch GURL origin_url_; 155eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_database_id_; 156eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32 ipc_database_callbacks_id_; 157eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 158eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 159eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace content 160eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 161eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif // CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_CALLBACKS_H_ 162