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

Side by Side Diff: content/browser/indexed_db/indexed_db_callbacks.cc

Issue 18241003: IndexedDB: Remove IndexedDBCallbacksWrapper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Include/Forward Declare tidying Created 7 years, 5 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/indexed_db/indexed_db_callbacks.h" 5 #include "content/browser/indexed_db/indexed_db_callbacks.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "content/browser/indexed_db/indexed_db_cursor.h"
11 #include "content/browser/indexed_db/indexed_db_database_callbacks.h"
10 #include "content/browser/indexed_db/indexed_db_database_error.h" 12 #include "content/browser/indexed_db/indexed_db_database_error.h"
11 #include "content/browser/indexed_db/indexed_db_metadata.h" 13 #include "content/browser/indexed_db/indexed_db_metadata.h"
12 #include "content/browser/indexed_db/webidbdatabase_impl.h" 14 #include "content/browser/indexed_db/webidbdatabase_impl.h"
13 #include "content/common/indexed_db/indexed_db_messages.h" 15 #include "content/common/indexed_db/indexed_db_messages.h"
14 #include "webkit/browser/quota/quota_manager.h" 16 #include "webkit/browser/quota/quota_manager.h"
15 17
16 using WebKit::WebIDBCallbacks; 18 using WebKit::WebIDBCallbacks;
17 19
18 namespace content { 20 namespace content {
19 21
20 namespace { 22 namespace {
21 const int32 kDatabaseNotAdded = -1; 23 const int32 kNoCursor = -1;
22 } 24 const int32 kNoDatabase = -1;
23 25 const int32 kNoDatabaseCallbacks = -1;
24 IndexedDBCallbacksBase::IndexedDBCallbacksBase( 26 const int64 kNoTransaction = -1;
25 IndexedDBDispatcherHost* dispatcher_host, 27 }
26 int32 ipc_thread_id, 28
27 int32 ipc_callbacks_id) 29 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host,
28 : dispatcher_host_(dispatcher_host), 30 int32 ipc_thread_id,
31 int32 ipc_callbacks_id)
32 : did_complete_(false),
33 did_create_proxy_(false),
34 dispatcher_host_(dispatcher_host),
29 ipc_callbacks_id_(ipc_callbacks_id), 35 ipc_callbacks_id_(ipc_callbacks_id),
30 ipc_thread_id_(ipc_thread_id) {} 36 ipc_thread_id_(ipc_thread_id),
31 37 ipc_cursor_id_(kNoCursor),
32 IndexedDBCallbacksBase::~IndexedDBCallbacksBase() {} 38 host_transaction_id_(kNoTransaction),
33 39 ipc_database_id_(kNoDatabase),
34 void IndexedDBCallbacksBase::onError(const IndexedDBDatabaseError& error) { 40 ipc_database_callbacks_id_(kNoDatabaseCallbacks) {}
41
42 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host,
43 int32 ipc_thread_id,
44 int32 ipc_callbacks_id,
45 int32 ipc_cursor_id)
46 : did_complete_(false),
47 did_create_proxy_(false),
48 dispatcher_host_(dispatcher_host),
49 ipc_callbacks_id_(ipc_callbacks_id),
50 ipc_thread_id_(ipc_thread_id),
51 ipc_cursor_id_(ipc_cursor_id),
52 host_transaction_id_(kNoTransaction),
53 ipc_database_id_(kNoDatabase),
54 ipc_database_callbacks_id_(kNoDatabaseCallbacks) {}
55
56 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host,
57 int32 ipc_thread_id,
58 int32 ipc_callbacks_id,
59 int32 ipc_database_callbacks_id,
60 int64 host_transaction_id,
61 const GURL& origin_url)
62 : did_complete_(false),
63 did_create_proxy_(false),
64 dispatcher_host_(dispatcher_host),
65 ipc_callbacks_id_(ipc_callbacks_id),
66 ipc_thread_id_(ipc_thread_id),
67 ipc_cursor_id_(kNoCursor),
68 host_transaction_id_(host_transaction_id),
69 origin_url_(origin_url),
70 ipc_database_id_(kNoDatabase),
71 ipc_database_callbacks_id_(ipc_database_callbacks_id) {}
72
73 IndexedDBCallbacks::~IndexedDBCallbacks() {}
74
75 void IndexedDBCallbacks::OnError(const IndexedDBDatabaseError& error) {
76 DCHECK(dispatcher_host_);
77
35 dispatcher_host_->Send(new IndexedDBMsg_CallbacksError( 78 dispatcher_host_->Send(new IndexedDBMsg_CallbacksError(
36 ipc_thread_id_, ipc_callbacks_id_, error.code(), error.message())); 79 ipc_thread_id_, ipc_callbacks_id_, error.code(), error.message()));
37 } 80 dispatcher_host_ = NULL;
38 81 }
39 void IndexedDBCallbacksBase::onBlocked(long long old_version) { 82
83 void IndexedDBCallbacks::OnSuccess(const std::vector<string16>& value) {
84 DCHECK(dispatcher_host_);
85
86 DCHECK_EQ(kNoCursor, ipc_cursor_id_);
87 DCHECK_EQ(kNoTransaction, host_transaction_id_);
88 DCHECK_EQ(kNoDatabase, ipc_database_id_);
89 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
90
91 std::vector<string16> list;
92 for (unsigned i = 0; i < value.size(); ++i)
93 list.push_back(value[i]);
94
95 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessStringList(
96 ipc_thread_id_, ipc_callbacks_id_, list));
97 dispatcher_host_ = NULL;
98 }
99
100 void IndexedDBCallbacks::OnBlocked(int64 existing_version) {
101 DCHECK(dispatcher_host_);
102 DCHECK_EQ(kNoCursor, ipc_cursor_id_);
103
40 dispatcher_host_->Send(new IndexedDBMsg_CallbacksIntBlocked( 104 dispatcher_host_->Send(new IndexedDBMsg_CallbacksIntBlocked(
41 ipc_thread_id_, ipc_callbacks_id_, old_version)); 105 ipc_thread_id_, ipc_callbacks_id_, existing_version));
42 } 106 }
43 107
44 void IndexedDBCallbacksBase::onSuccess(const std::vector<string16>& value) { 108 void IndexedDBCallbacks::OnUpgradeNeeded(
45 NOTREACHED(); 109 int64 old_version,
46 } 110 scoped_refptr<IndexedDBDatabase> database,
47
48 void IndexedDBCallbacksBase::onSuccess(
49 WebIDBDatabaseImpl* idb_object,
50 const IndexedDBDatabaseMetadata& metadata) {
51 NOTREACHED();
52 }
53
54 void IndexedDBCallbacksBase::onUpgradeNeeded(
55 long long old_version,
56 WebIDBDatabaseImpl* database,
57 const IndexedDBDatabaseMetadata& /*metadata*/,
58 WebKit::WebIDBCallbacks::DataLoss data_loss) {
59 NOTREACHED();
60 }
61
62 void IndexedDBCallbacksBase::onSuccess(IndexedDBCursor* idb_object,
63 const IndexedDBKey& key,
64 const IndexedDBKey& primaryKey,
65 std::vector<char>* value) {
66 NOTREACHED();
67 }
68
69 void IndexedDBCallbacksBase::onSuccess(const IndexedDBKey& key,
70 const IndexedDBKey& primaryKey,
71 std::vector<char>* value) {
72 NOTREACHED();
73 }
74
75 void IndexedDBCallbacksBase::onSuccess(std::vector<char>* value) {
76 NOTREACHED();
77 }
78
79 void IndexedDBCallbacksBase::onSuccessWithPrefetch(
80 const std::vector<IndexedDBKey>& keys,
81 const std::vector<IndexedDBKey>& primaryKeys,
82 const std::vector<std::vector<char> >& values) {
83 NOTREACHED();
84 }
85
86 void IndexedDBCallbacksBase::onSuccess(const IndexedDBKey& value) {
87 NOTREACHED();
88 }
89
90 void IndexedDBCallbacksBase::onSuccess(std::vector<char>* value,
91 const IndexedDBKey& key,
92 const IndexedDBKeyPath& keyPath) {
93 NOTREACHED();
94 }
95
96 void IndexedDBCallbacksBase::onSuccess(long long value) { NOTREACHED(); }
97
98 void IndexedDBCallbacksBase::onSuccess() { NOTREACHED(); }
99
100 IndexedDBCallbacksDatabase::IndexedDBCallbacksDatabase(
101 IndexedDBDispatcherHost* dispatcher_host,
102 int32 ipc_thread_id,
103 int32 ipc_callbacks_id,
104 int32 ipc_database_callbacks_id,
105 int64 host_transaction_id,
106 const GURL& origin_url)
107 : IndexedDBCallbacksBase(dispatcher_host, ipc_thread_id, ipc_callbacks_id),
108 host_transaction_id_(host_transaction_id),
109 origin_url_(origin_url),
110 ipc_database_id_(kDatabaseNotAdded),
111 ipc_database_callbacks_id_(ipc_database_callbacks_id) {}
112
113 void IndexedDBCallbacksDatabase::onSuccess(
114 WebIDBDatabaseImpl* idb_object,
115 const IndexedDBDatabaseMetadata& metadata) {
116 int32 ipc_object_id = ipc_database_id_;
117 if (ipc_object_id == kDatabaseNotAdded) {
118 ipc_object_id =
119 dispatcher_host()->Add(idb_object, ipc_thread_id(), origin_url_);
120 } else {
121 // We already have this database and don't need a new copy of it.
122 delete idb_object;
123 }
124 const ::IndexedDBDatabaseMetadata idb_metadata =
125 IndexedDBDispatcherHost::ConvertMetadata(metadata);
126
127 dispatcher_host()->Send(
128 new IndexedDBMsg_CallbacksSuccessIDBDatabase(ipc_thread_id(),
129 ipc_callbacks_id(),
130 ipc_database_callbacks_id_,
131 ipc_object_id,
132 idb_metadata));
133 }
134
135 void IndexedDBCallbacksDatabase::onUpgradeNeeded(
136 long long old_version,
137 WebIDBDatabaseImpl* database,
138 const IndexedDBDatabaseMetadata& metadata, 111 const IndexedDBDatabaseMetadata& metadata,
139 WebIDBCallbacks::DataLoss data_loss) { 112 WebIDBCallbacks::DataLoss data_loss) {
140 dispatcher_host()->RegisterTransactionId(host_transaction_id_, origin_url_); 113 DCHECK(dispatcher_host_);
114 DCHECK_EQ(kNoCursor, ipc_cursor_id_);
115 did_create_proxy_ = true;
116
117 WebIDBDatabaseImpl* web_database =
118 new WebIDBDatabaseImpl(database, database_callbacks_);
119
120 dispatcher_host_->RegisterTransactionId(host_transaction_id_, origin_url_);
141 int32 ipc_database_id = 121 int32 ipc_database_id =
142 dispatcher_host()->Add(database, ipc_thread_id(), origin_url_); 122 dispatcher_host_->Add(web_database, ipc_thread_id_, origin_url_);
143 ipc_database_id_ = ipc_database_id; 123 ipc_database_id_ = ipc_database_id;
144 IndexedDBMsg_CallbacksUpgradeNeeded_Params params; 124 IndexedDBMsg_CallbacksUpgradeNeeded_Params params;
145 params.ipc_thread_id = ipc_thread_id(); 125 params.ipc_thread_id = ipc_thread_id_;
146 params.ipc_callbacks_id = ipc_callbacks_id(); 126 params.ipc_callbacks_id = ipc_callbacks_id_;
147 params.ipc_database_id = ipc_database_id; 127 params.ipc_database_id = ipc_database_id;
148 params.ipc_database_callbacks_id = ipc_database_callbacks_id_; 128 params.ipc_database_callbacks_id = ipc_database_callbacks_id_;
149 params.old_version = old_version; 129 params.old_version = old_version;
150 params.idb_metadata = IndexedDBDispatcherHost::ConvertMetadata(metadata); 130 params.idb_metadata = IndexedDBDispatcherHost::ConvertMetadata(metadata);
151 params.data_loss = data_loss; 131 params.data_loss = data_loss;
152 dispatcher_host()->Send(new IndexedDBMsg_CallbacksUpgradeNeeded(params)); 132 dispatcher_host_->Send(new IndexedDBMsg_CallbacksUpgradeNeeded(params));
153 } 133
154 134 database_callbacks_ = NULL;
155 void IndexedDBCallbacks<IndexedDBCursor>::onSuccess( 135 }
156 IndexedDBCursor* idb_cursor, 136
157 const IndexedDBKey& key, 137 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBDatabase> database,
158 const IndexedDBKey& primaryKey, 138 const IndexedDBDatabaseMetadata& metadata) {
159 std::vector<char>* value) { 139 DCHECK(dispatcher_host_);
160 int32 ipc_object_id = dispatcher_host()->Add(idb_cursor); 140 DCHECK_EQ(kNoCursor, ipc_cursor_id_);
141
142 scoped_refptr<IndexedDBCallbacks> self(this);
143
144 WebIDBDatabaseImpl* impl =
145 did_create_proxy_ ? 0
146 : new WebIDBDatabaseImpl(database, database_callbacks_);
147 database_callbacks_ = NULL;
148
149 int32 ipc_object_id = ipc_database_id_;
150 if (ipc_object_id == kNoDatabase)
151 ipc_object_id = dispatcher_host_->Add(impl, ipc_thread_id_, origin_url_);
152
153 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIDBDatabase(
154 ipc_thread_id_,
155 ipc_callbacks_id_,
156 ipc_database_callbacks_id_,
157 ipc_object_id,
158 IndexedDBDispatcherHost::ConvertMetadata(metadata)));
159 dispatcher_host_ = NULL;
160 }
161
162 void IndexedDBCallbacks::SetDatabaseCallbacks(
163 scoped_refptr<IndexedDBDatabaseCallbacks> database_callbacks) {
164 database_callbacks_ = database_callbacks;
165 }
166
167 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor,
168 const IndexedDBKey& key,
169 const IndexedDBKey& primary_key,
170 std::vector<char>* value) {
171 DCHECK(dispatcher_host_);
172
173 DCHECK_EQ(kNoTransaction, host_transaction_id_);
174 DCHECK_EQ(kNoDatabase, ipc_database_id_);
175 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
176
177 int32 ipc_object_id = dispatcher_host_->Add(cursor);
161 IndexedDBMsg_CallbacksSuccessIDBCursor_Params params; 178 IndexedDBMsg_CallbacksSuccessIDBCursor_Params params;
162 params.ipc_thread_id = ipc_thread_id(); 179 params.ipc_thread_id = ipc_thread_id_;
163 params.ipc_callbacks_id = ipc_callbacks_id(); 180 params.ipc_callbacks_id = ipc_callbacks_id_;
164 params.ipc_cursor_id = ipc_object_id; 181 params.ipc_cursor_id = ipc_object_id;
165 params.key = key; 182 params.key = key;
166 params.primary_key = primaryKey; 183 params.primary_key = primary_key;
167 if (value && !value->empty()) 184 if (value && !value->empty())
168 std::swap(params.value, *value); 185 std::swap(params.value, *value);
169 // TODO(alecflett): Avoid a copy here: the whole params object is 186 // TODO(alecflett): Avoid a copy here: the whole params object is
170 // being copied into the message. 187 // being copied into the message.
171 dispatcher_host()->Send(new IndexedDBMsg_CallbacksSuccessIDBCursor(params)); 188 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIDBCursor(params));
172 } 189
173 190 dispatcher_host_ = NULL;
174 void IndexedDBCallbacks<IndexedDBCursor>::onSuccess(std::vector<char>* value) { 191 }
175 std::vector<char> value_copy; 192
176 if (value && !value->empty()) 193 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key,
177 std::swap(value_copy, *value); 194 const IndexedDBKey& primary_key,
178 dispatcher_host()->Send(new IndexedDBMsg_CallbacksSuccessValue( 195 std::vector<char>* value) {
179 ipc_thread_id(), 196 DCHECK(dispatcher_host_);
180 ipc_callbacks_id(), 197
181 // TODO(alecflett): avoid a copy here. 198 DCHECK_NE(kNoCursor, ipc_cursor_id_);
182 value_copy)); 199 DCHECK_EQ(kNoTransaction, host_transaction_id_);
183 } 200 DCHECK_EQ(kNoDatabase, ipc_database_id_);
184 201 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
185 void IndexedDBCallbacks<IndexedDBCursor>::onSuccess( 202
186 const IndexedDBKey& key,
187 const IndexedDBKey& primaryKey,
188 std::vector<char>* value) {
189 DCHECK_NE(ipc_cursor_id_, -1);
190 IndexedDBCursor* idb_cursor = 203 IndexedDBCursor* idb_cursor =
191 dispatcher_host()->GetCursorFromId(ipc_cursor_id_); 204 dispatcher_host_->GetCursorFromId(ipc_cursor_id_);
192 205
193 DCHECK(idb_cursor); 206 DCHECK(idb_cursor);
194 if (!idb_cursor) 207 if (!idb_cursor)
195 return; 208 return;
196 IndexedDBMsg_CallbacksSuccessCursorContinue_Params params; 209 IndexedDBMsg_CallbacksSuccessCursorContinue_Params params;
197 params.ipc_thread_id = ipc_thread_id(); 210 params.ipc_thread_id = ipc_thread_id_;
198 params.ipc_callbacks_id = ipc_callbacks_id(); 211 params.ipc_callbacks_id = ipc_callbacks_id_;
199 params.ipc_cursor_id = ipc_cursor_id_; 212 params.ipc_cursor_id = ipc_cursor_id_;
200 params.key = key; 213 params.key = key;
201 params.primary_key = primaryKey; 214 params.primary_key = primary_key;
202 if (value && !value->empty()) 215 if (value && !value->empty())
203 std::swap(params.value, *value); 216 std::swap(params.value, *value);
204 // TODO(alecflett): Avoid a copy here: the whole params object is 217 // TODO(alecflett): Avoid a copy here: the whole params object is
205 // being copied into the message. 218 // being copied into the message.
206 dispatcher_host()->Send( 219 dispatcher_host_->Send(
207 new IndexedDBMsg_CallbacksSuccessCursorContinue(params)); 220 new IndexedDBMsg_CallbacksSuccessCursorContinue(params));
208 } 221 dispatcher_host_ = NULL;
209 222 }
210 void IndexedDBCallbacks<IndexedDBCursor>::onSuccessWithPrefetch( 223
224 void IndexedDBCallbacks::OnSuccessWithPrefetch(
211 const std::vector<IndexedDBKey>& keys, 225 const std::vector<IndexedDBKey>& keys,
212 const std::vector<IndexedDBKey>& primaryKeys, 226 const std::vector<IndexedDBKey>& primary_keys,
213 const std::vector<std::vector<char> >& values) { 227 const std::vector<std::vector<char> >& values) {
214 DCHECK_NE(ipc_cursor_id_, -1); 228 DCHECK_EQ(keys.size(), primary_keys.size());
229 DCHECK_EQ(keys.size(), values.size());
230
231 DCHECK(dispatcher_host_);
232
233 DCHECK_NE(kNoCursor, ipc_cursor_id_);
234 DCHECK_EQ(kNoTransaction, host_transaction_id_);
235 DCHECK_EQ(kNoDatabase, ipc_database_id_);
236 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
215 237
216 std::vector<IndexedDBKey> msgKeys; 238 std::vector<IndexedDBKey> msgKeys;
217 std::vector<IndexedDBKey> msgPrimaryKeys; 239 std::vector<IndexedDBKey> msgPrimaryKeys;
218 240
219 for (size_t i = 0; i < keys.size(); ++i) { 241 for (size_t i = 0; i < keys.size(); ++i) {
220 msgKeys.push_back(keys[i]); 242 msgKeys.push_back(keys[i]);
221 msgPrimaryKeys.push_back(primaryKeys[i]); 243 msgPrimaryKeys.push_back(primary_keys[i]);
222 } 244 }
223 245
224 IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params params; 246 IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params params;
225 params.ipc_thread_id = ipc_thread_id(); 247 params.ipc_thread_id = ipc_thread_id_;
226 params.ipc_callbacks_id = ipc_callbacks_id(); 248 params.ipc_callbacks_id = ipc_callbacks_id_;
227 params.ipc_cursor_id = ipc_cursor_id_; 249 params.ipc_cursor_id = ipc_cursor_id_;
228 params.keys = msgKeys; 250 params.keys = msgKeys;
229 params.primary_keys = msgPrimaryKeys; 251 params.primary_keys = msgPrimaryKeys;
230 params.values = values; 252 params.values = values;
231 dispatcher_host()->Send( 253 dispatcher_host_->Send(
232 new IndexedDBMsg_CallbacksSuccessCursorPrefetch(params)); 254 new IndexedDBMsg_CallbacksSuccessCursorPrefetch(params));
233 } 255 dispatcher_host_ = NULL;
234 256 }
235 void IndexedDBCallbacks<IndexedDBKey>::onSuccess(const IndexedDBKey& value) { 257
236 dispatcher_host()->Send(new IndexedDBMsg_CallbacksSuccessIndexedDBKey( 258 void IndexedDBCallbacks::OnSuccess(std::vector<char>* value,
237 ipc_thread_id(), ipc_callbacks_id(), IndexedDBKey(value))); 259 const IndexedDBKey& key,
238 } 260 const IndexedDBKeyPath& key_path) {
239 261 DCHECK(dispatcher_host_);
240 void IndexedDBCallbacks<std::vector<string16> >::onSuccess( 262
241 const std::vector<string16>& value) { 263 DCHECK_EQ(kNoCursor, ipc_cursor_id_);
242 264 DCHECK_EQ(kNoTransaction, host_transaction_id_);
243 std::vector<string16> list; 265 DCHECK_EQ(kNoDatabase, ipc_database_id_);
244 for (unsigned i = 0; i < value.size(); ++i) 266 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
245 list.push_back(value[i]); 267
246
247 dispatcher_host()->Send(new IndexedDBMsg_CallbacksSuccessStringList(
248 ipc_thread_id(), ipc_callbacks_id(), list));
249 }
250
251 void IndexedDBCallbacks<std::vector<char> >::onSuccess(
252 std::vector<char>* value) {
253 std::vector<char> value_copy; 268 std::vector<char> value_copy;
254 if (value && !value->empty()) 269 if (value && !value->empty())
255 std::swap(value_copy, *value); 270 std::swap(value_copy, *value);
256 dispatcher_host()->Send(new IndexedDBMsg_CallbacksSuccessValue( 271 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValueWithKey(
257 ipc_thread_id(), 272 ipc_thread_id_,
258 ipc_callbacks_id(), 273 ipc_callbacks_id_,
259 // TODO(alecflett): avoid a copy here 274 // TODO(alecflett): Avoid a copy here.
260 value_copy)); 275 value_copy,
261 } 276 key,
262 277 key_path));
263 void IndexedDBCallbacks<std::vector<char> >::onSuccess( 278 dispatcher_host_ = NULL;
264 std::vector<char>* value, 279 }
265 const IndexedDBKey& primaryKey, 280
266 const IndexedDBKeyPath& keyPath) { 281 void IndexedDBCallbacks::OnSuccess(std::vector<char>* value) {
282 DCHECK(dispatcher_host_);
283
284 DCHECK_EQ(kNoTransaction, host_transaction_id_);
285 DCHECK_EQ(kNoDatabase, ipc_database_id_);
286 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
287
267 std::vector<char> value_copy; 288 std::vector<char> value_copy;
268 if (value && !value->empty()) 289 if (value && !value->empty())
269 std::swap(value_copy, *value); 290 std::swap(value_copy, *value);
270 dispatcher_host()->Send(new IndexedDBMsg_CallbacksSuccessValueWithKey( 291 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValue(
271 ipc_thread_id(), 292 ipc_thread_id_,
272 ipc_callbacks_id(), 293 ipc_callbacks_id_,
273 // TODO(alecflett): Avoid a copy here. 294 // TODO(alecflett): avoid a copy here.
274 value_copy, 295 value_copy));
275 IndexedDBKey(primaryKey), 296 dispatcher_host_ = NULL;
276 IndexedDBKeyPath(keyPath))); 297 }
277 } 298
278 299 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) {
279 void IndexedDBCallbacks<std::vector<char> >::onSuccess(long long value) { 300 DCHECK(dispatcher_host_);
280 dispatcher_host()->Send(new IndexedDBMsg_CallbacksSuccessInteger( 301
281 ipc_thread_id(), ipc_callbacks_id(), value)); 302 DCHECK_EQ(kNoCursor, ipc_cursor_id_);
282 } 303 DCHECK_EQ(kNoTransaction, host_transaction_id_);
283 304 DCHECK_EQ(kNoDatabase, ipc_database_id_);
284 void IndexedDBCallbacks<std::vector<char> >::onSuccess() { 305 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
285 dispatcher_host()->Send(new IndexedDBMsg_CallbacksSuccessUndefined( 306
286 ipc_thread_id(), ipc_callbacks_id())); 307 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIndexedDBKey(
287 } 308 ipc_thread_id_, ipc_callbacks_id_, value));
288 309 dispatcher_host_ = NULL;
289 void IndexedDBCallbacks<std::vector<char> >::onSuccess( 310 }
290 const IndexedDBKey& value) { 311
291 dispatcher_host()->Send(new IndexedDBMsg_CallbacksSuccessIndexedDBKey( 312 void IndexedDBCallbacks::OnSuccess(int64 value) {
292 ipc_thread_id(), ipc_callbacks_id(), value)); 313 DCHECK(dispatcher_host_);
314
315 DCHECK_EQ(kNoCursor, ipc_cursor_id_);
316 DCHECK_EQ(kNoTransaction, host_transaction_id_);
317 DCHECK_EQ(kNoDatabase, ipc_database_id_);
318 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
319
320 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessInteger(
321 ipc_thread_id_, ipc_callbacks_id_, value));
322 dispatcher_host_ = NULL;
323 }
324
325 void IndexedDBCallbacks::OnSuccess() {
326 DCHECK(dispatcher_host_);
327
328 DCHECK_EQ(kNoTransaction, host_transaction_id_);
329 DCHECK_EQ(kNoDatabase, ipc_database_id_);
330 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_);
331
332 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined(
333 ipc_thread_id_, ipc_callbacks_id_));
334 dispatcher_host_ = NULL;
293 } 335 }
294 336
295 } // namespace content 337 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_callbacks.h ('k') | content/browser/indexed_db/indexed_db_callbacks_wrapper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698