| 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 #include <vector> | |
| 9 | 8 |
| 10 #include "content/browser/indexed_db/indexed_db_connection.h" | 9 #include "content/browser/indexed_db/indexed_db_connection.h" |
| 11 #include "content/browser/indexed_db/indexed_db_cursor.h" | 10 #include "content/browser/indexed_db/indexed_db_cursor.h" |
| 12 #include "content/browser/indexed_db/indexed_db_database_callbacks.h" | 11 #include "content/browser/indexed_db/indexed_db_database_callbacks.h" |
| 13 #include "content/browser/indexed_db/indexed_db_database_error.h" | 12 #include "content/browser/indexed_db/indexed_db_database_error.h" |
| 14 #include "content/browser/indexed_db/indexed_db_metadata.h" | 13 #include "content/browser/indexed_db/indexed_db_metadata.h" |
| 15 #include "content/common/indexed_db/indexed_db_messages.h" | 14 #include "content/common/indexed_db/indexed_db_messages.h" |
| 16 #include "webkit/browser/quota/quota_manager.h" | 15 #include "webkit/browser/quota/quota_manager.h" |
| 17 | 16 |
| 18 using WebKit::WebIDBCallbacks; | 17 using WebKit::WebIDBCallbacks; |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 153 ipc_callbacks_id_, | 152 ipc_callbacks_id_, |
| 154 ipc_database_callbacks_id_, | 153 ipc_database_callbacks_id_, |
| 155 ipc_object_id, | 154 ipc_object_id, |
| 156 IndexedDBDispatcherHost::ConvertMetadata(metadata))); | 155 IndexedDBDispatcherHost::ConvertMetadata(metadata))); |
| 157 dispatcher_host_ = NULL; | 156 dispatcher_host_ = NULL; |
| 158 } | 157 } |
| 159 | 158 |
| 160 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, | 159 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, |
| 161 const IndexedDBKey& key, | 160 const IndexedDBKey& key, |
| 162 const IndexedDBKey& primary_key, | 161 const IndexedDBKey& primary_key, |
| 163 std::vector<char>* value) { | 162 std::string* value) { |
| 164 DCHECK(dispatcher_host_.get()); | 163 DCHECK(dispatcher_host_.get()); |
| 165 | 164 |
| 166 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 165 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 167 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 166 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 168 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 167 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 169 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 168 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 170 | 169 |
| 171 int32 ipc_object_id = dispatcher_host_->Add(cursor.get()); | 170 int32 ipc_object_id = dispatcher_host_->Add(cursor.get()); |
| 172 IndexedDBMsg_CallbacksSuccessIDBCursor_Params params; | 171 IndexedDBMsg_CallbacksSuccessIDBCursor_Params params; |
| 173 params.ipc_thread_id = ipc_thread_id_; | 172 params.ipc_thread_id = ipc_thread_id_; |
| 174 params.ipc_callbacks_id = ipc_callbacks_id_; | 173 params.ipc_callbacks_id = ipc_callbacks_id_; |
| 175 params.ipc_cursor_id = ipc_object_id; | 174 params.ipc_cursor_id = ipc_object_id; |
| 176 params.key = key; | 175 params.key = key; |
| 177 params.primary_key = primary_key; | 176 params.primary_key = primary_key; |
| 178 if (value && !value->empty()) | 177 if (value && !value->empty()) |
| 179 std::swap(params.value, *value); | 178 std::swap(params.value, *value); |
| 180 // TODO(alecflett): Avoid a copy here: the whole params object is | 179 // TODO(alecflett): Avoid a copy here: the whole params object is |
| 181 // being copied into the message. | 180 // being copied into the message. |
| 182 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIDBCursor(params)); | 181 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIDBCursor(params)); |
| 183 | 182 |
| 184 dispatcher_host_ = NULL; | 183 dispatcher_host_ = NULL; |
| 185 } | 184 } |
| 186 | 185 |
| 187 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, | 186 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, |
| 188 const IndexedDBKey& primary_key, | 187 const IndexedDBKey& primary_key, |
| 189 std::vector<char>* value) { | 188 std::string* value) { |
| 190 DCHECK(dispatcher_host_.get()); | 189 DCHECK(dispatcher_host_.get()); |
| 191 | 190 |
| 192 DCHECK_NE(kNoCursor, ipc_cursor_id_); | 191 DCHECK_NE(kNoCursor, ipc_cursor_id_); |
| 193 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 192 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 194 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 193 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 195 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 194 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 196 | 195 |
| 197 IndexedDBCursor* idb_cursor = | 196 IndexedDBCursor* idb_cursor = |
| 198 dispatcher_host_->GetCursorFromId(ipc_cursor_id_); | 197 dispatcher_host_->GetCursorFromId(ipc_cursor_id_); |
| 199 | 198 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 211 // TODO(alecflett): Avoid a copy here: the whole params object is | 210 // TODO(alecflett): Avoid a copy here: the whole params object is |
| 212 // being copied into the message. | 211 // being copied into the message. |
| 213 dispatcher_host_->Send( | 212 dispatcher_host_->Send( |
| 214 new IndexedDBMsg_CallbacksSuccessCursorContinue(params)); | 213 new IndexedDBMsg_CallbacksSuccessCursorContinue(params)); |
| 215 dispatcher_host_ = NULL; | 214 dispatcher_host_ = NULL; |
| 216 } | 215 } |
| 217 | 216 |
| 218 void IndexedDBCallbacks::OnSuccessWithPrefetch( | 217 void IndexedDBCallbacks::OnSuccessWithPrefetch( |
| 219 const std::vector<IndexedDBKey>& keys, | 218 const std::vector<IndexedDBKey>& keys, |
| 220 const std::vector<IndexedDBKey>& primary_keys, | 219 const std::vector<IndexedDBKey>& primary_keys, |
| 221 const std::vector<std::vector<char> >& values) { | 220 const std::vector<std::string>& values) { |
| 222 DCHECK_EQ(keys.size(), primary_keys.size()); | 221 DCHECK_EQ(keys.size(), primary_keys.size()); |
| 223 DCHECK_EQ(keys.size(), values.size()); | 222 DCHECK_EQ(keys.size(), values.size()); |
| 224 | 223 |
| 225 DCHECK(dispatcher_host_.get()); | 224 DCHECK(dispatcher_host_.get()); |
| 226 | 225 |
| 227 DCHECK_NE(kNoCursor, ipc_cursor_id_); | 226 DCHECK_NE(kNoCursor, ipc_cursor_id_); |
| 228 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 227 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 229 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 228 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 230 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 229 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 231 | 230 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 242 params.ipc_callbacks_id = ipc_callbacks_id_; | 241 params.ipc_callbacks_id = ipc_callbacks_id_; |
| 243 params.ipc_cursor_id = ipc_cursor_id_; | 242 params.ipc_cursor_id = ipc_cursor_id_; |
| 244 params.keys = msgKeys; | 243 params.keys = msgKeys; |
| 245 params.primary_keys = msgPrimaryKeys; | 244 params.primary_keys = msgPrimaryKeys; |
| 246 params.values = values; | 245 params.values = values; |
| 247 dispatcher_host_->Send( | 246 dispatcher_host_->Send( |
| 248 new IndexedDBMsg_CallbacksSuccessCursorPrefetch(params)); | 247 new IndexedDBMsg_CallbacksSuccessCursorPrefetch(params)); |
| 249 dispatcher_host_ = NULL; | 248 dispatcher_host_ = NULL; |
| 250 } | 249 } |
| 251 | 250 |
| 252 void IndexedDBCallbacks::OnSuccess(std::vector<char>* value, | 251 void IndexedDBCallbacks::OnSuccess(std::string* value, |
| 253 const IndexedDBKey& key, | 252 const IndexedDBKey& key, |
| 254 const IndexedDBKeyPath& key_path) { | 253 const IndexedDBKeyPath& key_path) { |
| 255 DCHECK(dispatcher_host_.get()); | 254 DCHECK(dispatcher_host_.get()); |
| 256 | 255 |
| 257 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 256 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 258 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 257 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 259 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 258 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 260 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 259 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 261 | 260 |
| 262 std::vector<char> value_copy; | 261 std::string value_copy; |
| 263 if (value && !value->empty()) | 262 if (value && !value->empty()) |
| 264 std::swap(value_copy, *value); | 263 std::swap(value_copy, *value); |
| 264 |
| 265 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValueWithKey( | 265 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValueWithKey( |
| 266 ipc_thread_id_, | 266 ipc_thread_id_, |
| 267 ipc_callbacks_id_, | 267 ipc_callbacks_id_, |
| 268 // TODO(alecflett): Avoid a copy here. | 268 // TODO(alecflett): Avoid a copy here. |
| 269 value_copy, | 269 value_copy, |
| 270 key, | 270 key, |
| 271 key_path)); | 271 key_path)); |
| 272 dispatcher_host_ = NULL; | 272 dispatcher_host_ = NULL; |
| 273 } | 273 } |
| 274 | 274 |
| 275 void IndexedDBCallbacks::OnSuccess(std::vector<char>* value) { | 275 void IndexedDBCallbacks::OnSuccess(std::string* value) { |
| 276 DCHECK(dispatcher_host_.get()); | 276 DCHECK(dispatcher_host_.get()); |
| 277 | 277 |
| 278 DCHECK(kNoCursor == ipc_cursor_id_ || value == NULL); | 278 DCHECK(kNoCursor == ipc_cursor_id_ || value == NULL); |
| 279 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 279 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 280 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 280 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 281 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 281 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 282 | 282 |
| 283 std::vector<char> value_copy; | 283 std::string value_copy; |
| 284 if (value && !value->empty()) | 284 if (value && !value->empty()) |
| 285 std::swap(value_copy, *value); | 285 std::swap(value_copy, *value); |
| 286 |
| 286 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValue( | 287 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessValue( |
| 287 ipc_thread_id_, | 288 ipc_thread_id_, |
| 288 ipc_callbacks_id_, | 289 ipc_callbacks_id_, |
| 289 // TODO(alecflett): avoid a copy here. | 290 // TODO(alecflett): avoid a copy here. |
| 290 value_copy)); | 291 value_copy)); |
| 291 dispatcher_host_ = NULL; | 292 dispatcher_host_ = NULL; |
| 292 } | 293 } |
| 293 | 294 |
| 294 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { | 295 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { |
| 295 DCHECK(dispatcher_host_.get()); | 296 DCHECK(dispatcher_host_.get()); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 324 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 325 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 325 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 326 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 326 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 327 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 327 | 328 |
| 328 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined( | 329 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined( |
| 329 ipc_thread_id_, ipc_callbacks_id_)); | 330 ipc_thread_id_, ipc_callbacks_id_)); |
| 330 dispatcher_host_ = NULL; | 331 dispatcher_host_ = NULL; |
| 331 } | 332 } |
| 332 | 333 |
| 333 } // namespace content | 334 } // namespace content |
| OLD | NEW |