OLD | NEW |
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 | 8 |
9 #include "content/browser/indexed_db/indexed_db_connection.h" | 9 #include "content/browser/indexed_db/indexed_db_connection.h" |
10 #include "content/browser/indexed_db/indexed_db_cursor.h" | 10 #include "content/browser/indexed_db/indexed_db_cursor.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 | 25 |
26 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, | 26 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, |
27 int32 ipc_thread_id, | 27 int32 ipc_thread_id, |
28 int32 ipc_callbacks_id) | 28 int32 ipc_callbacks_id) |
29 : dispatcher_host_(dispatcher_host), | 29 : dispatcher_host_(dispatcher_host), |
30 ipc_callbacks_id_(ipc_callbacks_id), | 30 ipc_callbacks_id_(ipc_callbacks_id), |
31 ipc_thread_id_(ipc_thread_id), | 31 ipc_thread_id_(ipc_thread_id), |
32 ipc_cursor_id_(kNoCursor), | 32 ipc_cursor_id_(kNoCursor), |
33 host_transaction_id_(kNoTransaction), | 33 host_transaction_id_(kNoTransaction), |
34 ipc_database_id_(kNoDatabase), | 34 ipc_database_id_(kNoDatabase), |
35 ipc_database_callbacks_id_(kNoDatabaseCallbacks) {} | 35 ipc_database_callbacks_id_(kNoDatabaseCallbacks), |
| 36 data_loss_(blink::WebIDBDataLossNone) {} |
36 | 37 |
37 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, | 38 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, |
38 int32 ipc_thread_id, | 39 int32 ipc_thread_id, |
39 int32 ipc_callbacks_id, | 40 int32 ipc_callbacks_id, |
40 int32 ipc_cursor_id) | 41 int32 ipc_cursor_id) |
41 : dispatcher_host_(dispatcher_host), | 42 : dispatcher_host_(dispatcher_host), |
42 ipc_callbacks_id_(ipc_callbacks_id), | 43 ipc_callbacks_id_(ipc_callbacks_id), |
43 ipc_thread_id_(ipc_thread_id), | 44 ipc_thread_id_(ipc_thread_id), |
44 ipc_cursor_id_(ipc_cursor_id), | 45 ipc_cursor_id_(ipc_cursor_id), |
45 host_transaction_id_(kNoTransaction), | 46 host_transaction_id_(kNoTransaction), |
46 ipc_database_id_(kNoDatabase), | 47 ipc_database_id_(kNoDatabase), |
47 ipc_database_callbacks_id_(kNoDatabaseCallbacks) {} | 48 ipc_database_callbacks_id_(kNoDatabaseCallbacks), |
| 49 data_loss_(blink::WebIDBDataLossNone) {} |
48 | 50 |
49 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, | 51 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, |
50 int32 ipc_thread_id, | 52 int32 ipc_thread_id, |
51 int32 ipc_callbacks_id, | 53 int32 ipc_callbacks_id, |
52 int32 ipc_database_callbacks_id, | 54 int32 ipc_database_callbacks_id, |
53 int64 host_transaction_id, | 55 int64 host_transaction_id, |
54 const GURL& origin_url) | 56 const GURL& origin_url) |
55 : dispatcher_host_(dispatcher_host), | 57 : dispatcher_host_(dispatcher_host), |
56 ipc_callbacks_id_(ipc_callbacks_id), | 58 ipc_callbacks_id_(ipc_callbacks_id), |
57 ipc_thread_id_(ipc_thread_id), | 59 ipc_thread_id_(ipc_thread_id), |
58 ipc_cursor_id_(kNoCursor), | 60 ipc_cursor_id_(kNoCursor), |
59 host_transaction_id_(host_transaction_id), | 61 host_transaction_id_(host_transaction_id), |
60 origin_url_(origin_url), | 62 origin_url_(origin_url), |
61 ipc_database_id_(kNoDatabase), | 63 ipc_database_id_(kNoDatabase), |
62 ipc_database_callbacks_id_(ipc_database_callbacks_id) {} | 64 ipc_database_callbacks_id_(ipc_database_callbacks_id), |
| 65 data_loss_(blink::WebIDBDataLossNone) {} |
63 | 66 |
64 IndexedDBCallbacks::~IndexedDBCallbacks() {} | 67 IndexedDBCallbacks::~IndexedDBCallbacks() {} |
65 | 68 |
66 void IndexedDBCallbacks::OnError(const IndexedDBDatabaseError& error) { | 69 void IndexedDBCallbacks::OnError(const IndexedDBDatabaseError& error) { |
67 DCHECK(dispatcher_host_.get()); | 70 DCHECK(dispatcher_host_.get()); |
68 | 71 |
69 dispatcher_host_->Send(new IndexedDBMsg_CallbacksError( | 72 dispatcher_host_->Send(new IndexedDBMsg_CallbacksError( |
70 ipc_thread_id_, ipc_callbacks_id_, error.code(), error.message())); | 73 ipc_thread_id_, ipc_callbacks_id_, error.code(), error.message())); |
71 dispatcher_host_ = NULL; | 74 dispatcher_host_ = NULL; |
72 } | 75 } |
73 | 76 |
74 void IndexedDBCallbacks::OnSuccess(const std::vector<base::string16>& value) { | 77 void IndexedDBCallbacks::OnSuccess(const std::vector<base::string16>& value) { |
75 DCHECK(dispatcher_host_.get()); | 78 DCHECK(dispatcher_host_.get()); |
76 | 79 |
77 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 80 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
78 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 81 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
79 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 82 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
80 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 83 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 84 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
81 | 85 |
82 std::vector<base::string16> list; | 86 std::vector<base::string16> list; |
83 for (unsigned i = 0; i < value.size(); ++i) | 87 for (unsigned i = 0; i < value.size(); ++i) |
84 list.push_back(value[i]); | 88 list.push_back(value[i]); |
85 | 89 |
86 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessStringList( | 90 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessStringList( |
87 ipc_thread_id_, ipc_callbacks_id_, list)); | 91 ipc_thread_id_, ipc_callbacks_id_, list)); |
88 dispatcher_host_ = NULL; | 92 dispatcher_host_ = NULL; |
89 } | 93 } |
90 | 94 |
91 void IndexedDBCallbacks::OnBlocked(int64 existing_version) { | 95 void IndexedDBCallbacks::OnBlocked(int64 existing_version) { |
92 DCHECK(dispatcher_host_.get()); | 96 DCHECK(dispatcher_host_.get()); |
93 | 97 |
94 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 98 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
95 // No transaction/db callbacks for DeleteDatabase. | 99 // No transaction/db callbacks for DeleteDatabase. |
96 DCHECK_EQ(kNoTransaction == host_transaction_id_, | 100 DCHECK_EQ(kNoTransaction == host_transaction_id_, |
97 kNoDatabaseCallbacks == ipc_database_callbacks_id_); | 101 kNoDatabaseCallbacks == ipc_database_callbacks_id_); |
98 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 102 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
99 | 103 |
100 dispatcher_host_->Send(new IndexedDBMsg_CallbacksIntBlocked( | 104 dispatcher_host_->Send(new IndexedDBMsg_CallbacksIntBlocked( |
101 ipc_thread_id_, ipc_callbacks_id_, existing_version)); | 105 ipc_thread_id_, ipc_callbacks_id_, existing_version)); |
102 } | 106 } |
103 | 107 |
| 108 void IndexedDBCallbacks::OnDataLoss(blink::WebIDBDataLoss data_loss, |
| 109 std::string data_loss_message) { |
| 110 DCHECK_NE(blink::WebIDBDataLossNone, data_loss); |
| 111 data_loss_ = data_loss; |
| 112 data_loss_message_ = data_loss_message; |
| 113 } |
| 114 |
104 void IndexedDBCallbacks::OnUpgradeNeeded( | 115 void IndexedDBCallbacks::OnUpgradeNeeded( |
105 int64 old_version, | 116 int64 old_version, |
106 scoped_ptr<IndexedDBConnection> connection, | 117 scoped_ptr<IndexedDBConnection> connection, |
107 const IndexedDBDatabaseMetadata& metadata, | 118 const IndexedDBDatabaseMetadata& metadata) { |
108 blink::WebIDBDataLoss data_loss, | |
109 std::string data_loss_message) { | |
110 DCHECK(dispatcher_host_.get()); | 119 DCHECK(dispatcher_host_.get()); |
111 | 120 |
112 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 121 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
113 DCHECK_NE(kNoTransaction, host_transaction_id_); | 122 DCHECK_NE(kNoTransaction, host_transaction_id_); |
114 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 123 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
115 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 124 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
116 | 125 |
117 dispatcher_host_->RegisterTransactionId(host_transaction_id_, origin_url_); | 126 dispatcher_host_->RegisterTransactionId(host_transaction_id_, origin_url_); |
118 int32 ipc_database_id = | 127 int32 ipc_database_id = |
119 dispatcher_host_->Add(connection.release(), ipc_thread_id_, origin_url_); | 128 dispatcher_host_->Add(connection.release(), ipc_thread_id_, origin_url_); |
120 if (ipc_database_id < 0) | 129 if (ipc_database_id < 0) |
121 return; | 130 return; |
122 ipc_database_id_ = ipc_database_id; | 131 ipc_database_id_ = ipc_database_id; |
123 IndexedDBMsg_CallbacksUpgradeNeeded_Params params; | 132 IndexedDBMsg_CallbacksUpgradeNeeded_Params params; |
124 params.ipc_thread_id = ipc_thread_id_; | 133 params.ipc_thread_id = ipc_thread_id_; |
125 params.ipc_callbacks_id = ipc_callbacks_id_; | 134 params.ipc_callbacks_id = ipc_callbacks_id_; |
126 params.ipc_database_id = ipc_database_id; | 135 params.ipc_database_id = ipc_database_id; |
127 params.ipc_database_callbacks_id = ipc_database_callbacks_id_; | 136 params.ipc_database_callbacks_id = ipc_database_callbacks_id_; |
128 params.old_version = old_version; | 137 params.old_version = old_version; |
129 params.idb_metadata = IndexedDBDispatcherHost::ConvertMetadata(metadata); | 138 params.idb_metadata = IndexedDBDispatcherHost::ConvertMetadata(metadata); |
130 params.data_loss = data_loss; | 139 params.data_loss = data_loss_; |
131 params.data_loss_message = data_loss_message; | 140 params.data_loss_message = data_loss_message_; |
132 dispatcher_host_->Send(new IndexedDBMsg_CallbacksUpgradeNeeded(params)); | 141 dispatcher_host_->Send(new IndexedDBMsg_CallbacksUpgradeNeeded(params)); |
133 } | 142 } |
134 | 143 |
135 void IndexedDBCallbacks::OnSuccess(scoped_ptr<IndexedDBConnection> connection, | 144 void IndexedDBCallbacks::OnSuccess(scoped_ptr<IndexedDBConnection> connection, |
136 const IndexedDBDatabaseMetadata& metadata) { | 145 const IndexedDBDatabaseMetadata& metadata) { |
137 DCHECK(dispatcher_host_.get()); | 146 DCHECK(dispatcher_host_.get()); |
138 | 147 |
139 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 148 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
140 DCHECK_NE(kNoTransaction, host_transaction_id_); | 149 DCHECK_NE(kNoTransaction, host_transaction_id_); |
141 DCHECK_NE(ipc_database_id_ == kNoDatabase, !connection); | 150 DCHECK_NE(ipc_database_id_ == kNoDatabase, !connection); |
(...skipping 20 matching lines...) Expand all Loading... |
162 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, | 171 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, |
163 const IndexedDBKey& key, | 172 const IndexedDBKey& key, |
164 const IndexedDBKey& primary_key, | 173 const IndexedDBKey& primary_key, |
165 std::string* value) { | 174 std::string* value) { |
166 DCHECK(dispatcher_host_.get()); | 175 DCHECK(dispatcher_host_.get()); |
167 | 176 |
168 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 177 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
169 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 178 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
170 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 179 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
171 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 180 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 181 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
172 | 182 |
173 int32 ipc_object_id = dispatcher_host_->Add(cursor.get()); | 183 int32 ipc_object_id = dispatcher_host_->Add(cursor.get()); |
174 IndexedDBMsg_CallbacksSuccessIDBCursor_Params params; | 184 IndexedDBMsg_CallbacksSuccessIDBCursor_Params params; |
175 params.ipc_thread_id = ipc_thread_id_; | 185 params.ipc_thread_id = ipc_thread_id_; |
176 params.ipc_callbacks_id = ipc_callbacks_id_; | 186 params.ipc_callbacks_id = ipc_callbacks_id_; |
177 params.ipc_cursor_id = ipc_object_id; | 187 params.ipc_cursor_id = ipc_object_id; |
178 params.key = key; | 188 params.key = key; |
179 params.primary_key = primary_key; | 189 params.primary_key = primary_key; |
180 if (value && !value->empty()) | 190 if (value && !value->empty()) |
181 std::swap(params.value, *value); | 191 std::swap(params.value, *value); |
182 // TODO(alecflett): Avoid a copy here: the whole params object is | 192 // TODO(alecflett): Avoid a copy here: the whole params object is |
183 // being copied into the message. | 193 // being copied into the message. |
184 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIDBCursor(params)); | 194 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIDBCursor(params)); |
185 | 195 |
186 dispatcher_host_ = NULL; | 196 dispatcher_host_ = NULL; |
187 } | 197 } |
188 | 198 |
189 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, | 199 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, |
190 const IndexedDBKey& primary_key, | 200 const IndexedDBKey& primary_key, |
191 std::string* value) { | 201 std::string* value) { |
192 DCHECK(dispatcher_host_.get()); | 202 DCHECK(dispatcher_host_.get()); |
193 | 203 |
194 DCHECK_NE(kNoCursor, ipc_cursor_id_); | 204 DCHECK_NE(kNoCursor, ipc_cursor_id_); |
195 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 205 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
196 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 206 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
197 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 207 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 208 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
198 | 209 |
199 IndexedDBCursor* idb_cursor = | 210 IndexedDBCursor* idb_cursor = |
200 dispatcher_host_->GetCursorFromId(ipc_cursor_id_); | 211 dispatcher_host_->GetCursorFromId(ipc_cursor_id_); |
201 | 212 |
202 DCHECK(idb_cursor); | 213 DCHECK(idb_cursor); |
203 if (!idb_cursor) | 214 if (!idb_cursor) |
204 return; | 215 return; |
205 IndexedDBMsg_CallbacksSuccessCursorContinue_Params params; | 216 IndexedDBMsg_CallbacksSuccessCursorContinue_Params params; |
206 params.ipc_thread_id = ipc_thread_id_; | 217 params.ipc_thread_id = ipc_thread_id_; |
207 params.ipc_callbacks_id = ipc_callbacks_id_; | 218 params.ipc_callbacks_id = ipc_callbacks_id_; |
(...skipping 15 matching lines...) Expand all Loading... |
223 const std::vector<std::string>& values) { | 234 const std::vector<std::string>& values) { |
224 DCHECK_EQ(keys.size(), primary_keys.size()); | 235 DCHECK_EQ(keys.size(), primary_keys.size()); |
225 DCHECK_EQ(keys.size(), values.size()); | 236 DCHECK_EQ(keys.size(), values.size()); |
226 | 237 |
227 DCHECK(dispatcher_host_.get()); | 238 DCHECK(dispatcher_host_.get()); |
228 | 239 |
229 DCHECK_NE(kNoCursor, ipc_cursor_id_); | 240 DCHECK_NE(kNoCursor, ipc_cursor_id_); |
230 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 241 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
231 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 242 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
232 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 243 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 244 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
233 | 245 |
234 std::vector<IndexedDBKey> msgKeys; | 246 std::vector<IndexedDBKey> msgKeys; |
235 std::vector<IndexedDBKey> msgPrimaryKeys; | 247 std::vector<IndexedDBKey> msgPrimaryKeys; |
236 | 248 |
237 for (size_t i = 0; i < keys.size(); ++i) { | 249 for (size_t i = 0; i < keys.size(); ++i) { |
238 msgKeys.push_back(keys[i]); | 250 msgKeys.push_back(keys[i]); |
239 msgPrimaryKeys.push_back(primary_keys[i]); | 251 msgPrimaryKeys.push_back(primary_keys[i]); |
240 } | 252 } |
241 | 253 |
242 IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params params; | 254 IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params params; |
(...skipping 10 matching lines...) Expand all Loading... |
253 | 265 |
254 void IndexedDBCallbacks::OnSuccess(std::string* value, | 266 void IndexedDBCallbacks::OnSuccess(std::string* value, |
255 const IndexedDBKey& key, | 267 const IndexedDBKey& key, |
256 const IndexedDBKeyPath& key_path) { | 268 const IndexedDBKeyPath& key_path) { |
257 DCHECK(dispatcher_host_.get()); | 269 DCHECK(dispatcher_host_.get()); |
258 | 270 |
259 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 271 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
260 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 272 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
261 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 273 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
262 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 274 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 275 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
263 | 276 |
264 std::string value_copy; | 277 std::string value_copy; |
265 if (value && !value->empty()) | 278 if (value && !value->empty()) |
266 std::swap(value_copy, *value); | 279 std::swap(value_copy, *value); |
267 | 280 |
268 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValueWithKey( | 281 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValueWithKey( |
269 ipc_thread_id_, | 282 ipc_thread_id_, |
270 ipc_callbacks_id_, | 283 ipc_callbacks_id_, |
271 // TODO(alecflett): Avoid a copy here. | 284 // TODO(alecflett): Avoid a copy here. |
272 value_copy, | 285 value_copy, |
273 key, | 286 key, |
274 key_path)); | 287 key_path)); |
275 dispatcher_host_ = NULL; | 288 dispatcher_host_ = NULL; |
276 } | 289 } |
277 | 290 |
278 void IndexedDBCallbacks::OnSuccess(std::string* value) { | 291 void IndexedDBCallbacks::OnSuccess(std::string* value) { |
279 DCHECK(dispatcher_host_.get()); | 292 DCHECK(dispatcher_host_.get()); |
280 | 293 |
281 DCHECK(kNoCursor == ipc_cursor_id_ || value == NULL); | 294 DCHECK(kNoCursor == ipc_cursor_id_ || value == NULL); |
282 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 295 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
283 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 296 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
284 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 297 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 298 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
285 | 299 |
286 std::string value_copy; | 300 std::string value_copy; |
287 if (value && !value->empty()) | 301 if (value && !value->empty()) |
288 std::swap(value_copy, *value); | 302 std::swap(value_copy, *value); |
289 | 303 |
290 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValue( | 304 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValue( |
291 ipc_thread_id_, | 305 ipc_thread_id_, |
292 ipc_callbacks_id_, | 306 ipc_callbacks_id_, |
293 // TODO(alecflett): avoid a copy here. | 307 // TODO(alecflett): avoid a copy here. |
294 value_copy)); | 308 value_copy)); |
295 dispatcher_host_ = NULL; | 309 dispatcher_host_ = NULL; |
296 } | 310 } |
297 | 311 |
298 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { | 312 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { |
299 DCHECK(dispatcher_host_.get()); | 313 DCHECK(dispatcher_host_.get()); |
300 | 314 |
301 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 315 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
302 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 316 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
303 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 317 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
304 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 318 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 319 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
305 | 320 |
306 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIndexedDBKey( | 321 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIndexedDBKey( |
307 ipc_thread_id_, ipc_callbacks_id_, value)); | 322 ipc_thread_id_, ipc_callbacks_id_, value)); |
308 dispatcher_host_ = NULL; | 323 dispatcher_host_ = NULL; |
309 } | 324 } |
310 | 325 |
311 void IndexedDBCallbacks::OnSuccess(int64 value) { | 326 void IndexedDBCallbacks::OnSuccess(int64 value) { |
312 DCHECK(dispatcher_host_.get()); | 327 DCHECK(dispatcher_host_.get()); |
313 | 328 |
314 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 329 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
315 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 330 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
316 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 331 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
317 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 332 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 333 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
318 | 334 |
319 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessInteger( | 335 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessInteger( |
320 ipc_thread_id_, ipc_callbacks_id_, value)); | 336 ipc_thread_id_, ipc_callbacks_id_, value)); |
321 dispatcher_host_ = NULL; | 337 dispatcher_host_ = NULL; |
322 } | 338 } |
323 | 339 |
324 void IndexedDBCallbacks::OnSuccess() { | 340 void IndexedDBCallbacks::OnSuccess() { |
325 DCHECK(dispatcher_host_.get()); | 341 DCHECK(dispatcher_host_.get()); |
326 | 342 |
327 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 343 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
328 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 344 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
329 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 345 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
330 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 346 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 347 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
331 | 348 |
332 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined( | 349 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined( |
333 ipc_thread_id_, ipc_callbacks_id_)); | 350 ipc_thread_id_, ipc_callbacks_id_)); |
334 dispatcher_host_ = NULL; | 351 dispatcher_host_ = NULL; |
335 } | 352 } |
336 | 353 |
337 } // namespace content | 354 } // namespace content |
OLD | NEW |