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 3 // found in the LICENSE file. 4 5 #ifndef CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_CALLBACKS_H_ 6 #define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_CALLBACKS_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/basictypes.h" 12 #include "base/logging.h" 13 #include "base/memory/ref_counted.h" 14 #include "base/memory/scoped_ptr.h" 15 #include "base/strings/string16.h" 16 #include "content/browser/indexed_db/indexed_db_database_error.h" 17 #include "content/browser/indexed_db/indexed_db_dispatcher_host.h" 18 #include "content/common/indexed_db/indexed_db_key.h" 19 #include "content/common/indexed_db/indexed_db_key_path.h" 20 #include "url/gurl.h" 21 22 namespace content { 23 class IndexedDBConnection; 24 class IndexedDBCursor; 25 class IndexedDBDatabase; 26 class IndexedDBDatabaseCallbacks; 27 struct IndexedDBDatabaseMetadata; 28 29 class CONTENT_EXPORT IndexedDBCallbacks 30 : public base::RefCounted<IndexedDBCallbacks> { 31 public: 32 // Simple payload responses 33 IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, 34 int32 ipc_thread_id, 35 int32 ipc_callbacks_id); 36 37 // IndexedDBCursor responses 38 IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, 39 int32 ipc_thread_id, 40 int32 ipc_callbacks_id, 41 int32 ipc_cursor_id); 42 43 // IndexedDBDatabase responses 44 IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, 45 int32 ipc_thread_id, 46 int32 ipc_callbacks_id, 47 int32 ipc_database_callbacks_id, 48 int64 host_transaction_id, 49 const GURL& origin_url); 50 51 virtual void OnError(const IndexedDBDatabaseError& error); 52 53 // IndexedDBFactory::GetDatabaseNames 54 virtual void OnSuccess(const std::vector<base::string16>& string); 55 56 // IndexedDBFactory::Open / DeleteDatabase 57 virtual void OnBlocked(int64 existing_version); 58 59 // IndexedDBFactory::Open 60 virtual void OnUpgradeNeeded( 61 int64 old_version, 62 scoped_ptr<IndexedDBConnection> connection, 63 const content::IndexedDBDatabaseMetadata& metadata, 64 blink::WebIDBDataLoss data_loss, 65 std::string data_loss_message); 66 virtual void OnSuccess(scoped_ptr<IndexedDBConnection> connection, 67 const content::IndexedDBDatabaseMetadata& metadata); 68 69 // IndexedDBDatabase::OpenCursor 70 virtual void OnSuccess(scoped_refptr<IndexedDBCursor> cursor, 71 const IndexedDBKey& key, 72 const IndexedDBKey& primary_key, 73 std::string* value); 74 75 // IndexedDBCursor::Continue / Advance 76 virtual void OnSuccess(const IndexedDBKey& key, 77 const IndexedDBKey& primary_key, 78 std::string* value); 79 80 // IndexedDBCursor::PrefetchContinue 81 virtual void OnSuccessWithPrefetch( 82 const std::vector<IndexedDBKey>& keys, 83 const std::vector<IndexedDBKey>& primary_keys, 84 const std::vector<std::string>& values); 85 86 // IndexedDBDatabase::Get (with key injection) 87 virtual void OnSuccess(std::string* data, 88 const IndexedDBKey& key, 89 const IndexedDBKeyPath& key_path); 90 91 // IndexedDBDatabase::Get 92 virtual void OnSuccess(std::string* value); 93 94 // IndexedDBDatabase::Put / IndexedDBCursor::Update 95 virtual void OnSuccess(const IndexedDBKey& value); 96 97 // IndexedDBDatabase::Count 98 virtual void OnSuccess(int64 value); 99 100 // IndexedDBDatabase::Delete 101 // IndexedDBCursor::Continue / Advance (when complete) 102 virtual void OnSuccess(); 103 104 protected: 105 virtual ~IndexedDBCallbacks(); 106 107 private: 108 friend class base::RefCounted<IndexedDBCallbacks>; 109 110 // Originally from IndexedDBCallbacks: 111 scoped_refptr<IndexedDBDispatcherHost> dispatcher_host_; 112 int32 ipc_callbacks_id_; 113 int32 ipc_thread_id_; 114 115 // IndexedDBCursor callbacks ------------------------ 116 int32 ipc_cursor_id_; 117 118 // IndexedDBDatabase callbacks ------------------------ 119 int64 host_transaction_id_; 120 GURL origin_url_; 121 int32 ipc_database_id_; 122 int32 ipc_database_callbacks_id_; 123 }; 124 125 } // namespace content 126 127 #endif // CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_CALLBACKS_H_ 128