| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/child/indexed_db/indexed_db_dispatcher.h" | 5 #include "content/child/indexed_db/indexed_db_dispatcher.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
| 10 #include "base/lazy_instance.h" | 10 #include "base/lazy_instance.h" |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 << IPC_MESSAGE_ID_LINE(msg.type()); | 164 << IPC_MESSAGE_ID_LINE(msg.type()); |
| 165 } | 165 } |
| 166 | 166 |
| 167 bool IndexedDBDispatcher::Send(IPC::Message* msg) { | 167 bool IndexedDBDispatcher::Send(IPC::Message* msg) { |
| 168 return thread_safe_sender_->Send(msg); | 168 return thread_safe_sender_->Send(msg); |
| 169 } | 169 } |
| 170 | 170 |
| 171 void IndexedDBDispatcher::RequestIDBCursorAdvance( | 171 void IndexedDBDispatcher::RequestIDBCursorAdvance( |
| 172 unsigned long count, | 172 unsigned long count, |
| 173 WebIDBCallbacks* callbacks_ptr, | 173 WebIDBCallbacks* callbacks_ptr, |
| 174 int32 ipc_cursor_id, | 174 int32_t ipc_cursor_id, |
| 175 int64 transaction_id) { | 175 int64_t transaction_id) { |
| 176 // Reset all cursor prefetch caches except for this cursor. | 176 // Reset all cursor prefetch caches except for this cursor. |
| 177 ResetCursorPrefetchCaches(transaction_id, ipc_cursor_id); | 177 ResetCursorPrefetchCaches(transaction_id, ipc_cursor_id); |
| 178 | 178 |
| 179 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 179 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
| 180 | 180 |
| 181 int32 ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); | 181 int32_t ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); |
| 182 Send(new IndexedDBHostMsg_CursorAdvance( | 182 Send(new IndexedDBHostMsg_CursorAdvance( |
| 183 ipc_cursor_id, CurrentWorkerId(), ipc_callbacks_id, count)); | 183 ipc_cursor_id, CurrentWorkerId(), ipc_callbacks_id, count)); |
| 184 } | 184 } |
| 185 | 185 |
| 186 void IndexedDBDispatcher::RequestIDBCursorContinue( | 186 void IndexedDBDispatcher::RequestIDBCursorContinue( |
| 187 const IndexedDBKey& key, | 187 const IndexedDBKey& key, |
| 188 const IndexedDBKey& primary_key, | 188 const IndexedDBKey& primary_key, |
| 189 WebIDBCallbacks* callbacks_ptr, | 189 WebIDBCallbacks* callbacks_ptr, |
| 190 int32 ipc_cursor_id, | 190 int32_t ipc_cursor_id, |
| 191 int64 transaction_id) { | 191 int64_t transaction_id) { |
| 192 // Reset all cursor prefetch caches except for this cursor. | 192 // Reset all cursor prefetch caches except for this cursor. |
| 193 ResetCursorPrefetchCaches(transaction_id, ipc_cursor_id); | 193 ResetCursorPrefetchCaches(transaction_id, ipc_cursor_id); |
| 194 | 194 |
| 195 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 195 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
| 196 | 196 |
| 197 int32 ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); | 197 int32_t ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); |
| 198 Send(new IndexedDBHostMsg_CursorContinue( | 198 Send(new IndexedDBHostMsg_CursorContinue( |
| 199 ipc_cursor_id, CurrentWorkerId(), ipc_callbacks_id, key, primary_key)); | 199 ipc_cursor_id, CurrentWorkerId(), ipc_callbacks_id, key, primary_key)); |
| 200 } | 200 } |
| 201 | 201 |
| 202 void IndexedDBDispatcher::RequestIDBCursorPrefetch( | 202 void IndexedDBDispatcher::RequestIDBCursorPrefetch( |
| 203 int n, | 203 int n, |
| 204 WebIDBCallbacks* callbacks_ptr, | 204 WebIDBCallbacks* callbacks_ptr, |
| 205 int32 ipc_cursor_id) { | 205 int32_t ipc_cursor_id) { |
| 206 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 206 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
| 207 | 207 |
| 208 int32 ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); | 208 int32_t ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); |
| 209 Send(new IndexedDBHostMsg_CursorPrefetch( | 209 Send(new IndexedDBHostMsg_CursorPrefetch( |
| 210 ipc_cursor_id, CurrentWorkerId(), ipc_callbacks_id, n)); | 210 ipc_cursor_id, CurrentWorkerId(), ipc_callbacks_id, n)); |
| 211 } | 211 } |
| 212 | 212 |
| 213 void IndexedDBDispatcher::RequestIDBCursorPrefetchReset(int used_prefetches, | 213 void IndexedDBDispatcher::RequestIDBCursorPrefetchReset(int used_prefetches, |
| 214 int unused_prefetches, | 214 int unused_prefetches, |
| 215 int32 ipc_cursor_id) { | 215 int32_t ipc_cursor_id) { |
| 216 Send(new IndexedDBHostMsg_CursorPrefetchReset( | 216 Send(new IndexedDBHostMsg_CursorPrefetchReset( |
| 217 ipc_cursor_id, used_prefetches, unused_prefetches)); | 217 ipc_cursor_id, used_prefetches, unused_prefetches)); |
| 218 } | 218 } |
| 219 | 219 |
| 220 void IndexedDBDispatcher::RequestIDBFactoryOpen( | 220 void IndexedDBDispatcher::RequestIDBFactoryOpen( |
| 221 const base::string16& name, | 221 const base::string16& name, |
| 222 int64 version, | 222 int64_t version, |
| 223 int64 transaction_id, | 223 int64_t transaction_id, |
| 224 WebIDBCallbacks* callbacks_ptr, | 224 WebIDBCallbacks* callbacks_ptr, |
| 225 WebIDBDatabaseCallbacks* database_callbacks_ptr, | 225 WebIDBDatabaseCallbacks* database_callbacks_ptr, |
| 226 const std::string& database_identifier) { | 226 const std::string& database_identifier) { |
| 227 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 227 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
| 228 scoped_ptr<WebIDBDatabaseCallbacks> database_callbacks( | 228 scoped_ptr<WebIDBDatabaseCallbacks> database_callbacks( |
| 229 database_callbacks_ptr); | 229 database_callbacks_ptr); |
| 230 | 230 |
| 231 IndexedDBHostMsg_FactoryOpen_Params params; | 231 IndexedDBHostMsg_FactoryOpen_Params params; |
| 232 params.ipc_thread_id = CurrentWorkerId(); | 232 params.ipc_thread_id = CurrentWorkerId(); |
| 233 params.ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); | 233 params.ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 260 | 260 |
| 261 IndexedDBHostMsg_FactoryDeleteDatabase_Params params; | 261 IndexedDBHostMsg_FactoryDeleteDatabase_Params params; |
| 262 params.ipc_thread_id = CurrentWorkerId(); | 262 params.ipc_thread_id = CurrentWorkerId(); |
| 263 params.ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); | 263 params.ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); |
| 264 params.database_identifier = database_identifier; | 264 params.database_identifier = database_identifier; |
| 265 params.name = name; | 265 params.name = name; |
| 266 Send(new IndexedDBHostMsg_FactoryDeleteDatabase(params)); | 266 Send(new IndexedDBHostMsg_FactoryDeleteDatabase(params)); |
| 267 } | 267 } |
| 268 | 268 |
| 269 void IndexedDBDispatcher::RequestIDBDatabaseClose( | 269 void IndexedDBDispatcher::RequestIDBDatabaseClose( |
| 270 int32 ipc_database_id, | 270 int32_t ipc_database_id, |
| 271 int32 ipc_database_callbacks_id) { | 271 int32_t ipc_database_callbacks_id) { |
| 272 Send(new IndexedDBHostMsg_DatabaseClose(ipc_database_id)); | 272 Send(new IndexedDBHostMsg_DatabaseClose(ipc_database_id)); |
| 273 // There won't be pending database callbacks if the transaction was aborted in | 273 // There won't be pending database callbacks if the transaction was aborted in |
| 274 // the initial upgradeneeded event handler. | 274 // the initial upgradeneeded event handler. |
| 275 if (pending_database_callbacks_.Lookup(ipc_database_callbacks_id)) | 275 if (pending_database_callbacks_.Lookup(ipc_database_callbacks_id)) |
| 276 pending_database_callbacks_.Remove(ipc_database_callbacks_id); | 276 pending_database_callbacks_.Remove(ipc_database_callbacks_id); |
| 277 } | 277 } |
| 278 | 278 |
| 279 void IndexedDBDispatcher::NotifyIDBDatabaseVersionChangeIgnored( | 279 void IndexedDBDispatcher::NotifyIDBDatabaseVersionChangeIgnored( |
| 280 int32 ipc_database_id) { | 280 int32_t ipc_database_id) { |
| 281 Send(new IndexedDBHostMsg_DatabaseVersionChangeIgnored(ipc_database_id)); | 281 Send(new IndexedDBHostMsg_DatabaseVersionChangeIgnored(ipc_database_id)); |
| 282 } | 282 } |
| 283 | 283 |
| 284 void IndexedDBDispatcher::RequestIDBDatabaseCreateTransaction( | 284 void IndexedDBDispatcher::RequestIDBDatabaseCreateTransaction( |
| 285 int32 ipc_database_id, | 285 int32_t ipc_database_id, |
| 286 int64 transaction_id, | 286 int64_t transaction_id, |
| 287 WebIDBDatabaseCallbacks* database_callbacks_ptr, | 287 WebIDBDatabaseCallbacks* database_callbacks_ptr, |
| 288 WebVector<long long> object_store_ids, | 288 WebVector<long long> object_store_ids, |
| 289 blink::WebIDBTransactionMode mode) { | 289 blink::WebIDBTransactionMode mode) { |
| 290 scoped_ptr<WebIDBDatabaseCallbacks> database_callbacks( | 290 scoped_ptr<WebIDBDatabaseCallbacks> database_callbacks( |
| 291 database_callbacks_ptr); | 291 database_callbacks_ptr); |
| 292 IndexedDBHostMsg_DatabaseCreateTransaction_Params params; | 292 IndexedDBHostMsg_DatabaseCreateTransaction_Params params; |
| 293 params.ipc_thread_id = CurrentWorkerId(); | 293 params.ipc_thread_id = CurrentWorkerId(); |
| 294 params.ipc_database_id = ipc_database_id; | 294 params.ipc_database_id = ipc_database_id; |
| 295 params.transaction_id = transaction_id; | 295 params.transaction_id = transaction_id; |
| 296 params.ipc_database_callbacks_id = | 296 params.ipc_database_callbacks_id = |
| 297 pending_database_callbacks_.Add(database_callbacks.release()); | 297 pending_database_callbacks_.Add(database_callbacks.release()); |
| 298 params.object_store_ids | 298 params.object_store_ids |
| 299 .assign(object_store_ids.data(), | 299 .assign(object_store_ids.data(), |
| 300 object_store_ids.data() + object_store_ids.size()); | 300 object_store_ids.data() + object_store_ids.size()); |
| 301 params.mode = mode; | 301 params.mode = mode; |
| 302 | 302 |
| 303 Send(new IndexedDBHostMsg_DatabaseCreateTransaction(params)); | 303 Send(new IndexedDBHostMsg_DatabaseCreateTransaction(params)); |
| 304 } | 304 } |
| 305 | 305 |
| 306 void IndexedDBDispatcher::RequestIDBDatabaseGet( | 306 void IndexedDBDispatcher::RequestIDBDatabaseGet( |
| 307 int32 ipc_database_id, | 307 int32_t ipc_database_id, |
| 308 int64 transaction_id, | 308 int64_t transaction_id, |
| 309 int64 object_store_id, | 309 int64_t object_store_id, |
| 310 int64 index_id, | 310 int64_t index_id, |
| 311 const IndexedDBKeyRange& key_range, | 311 const IndexedDBKeyRange& key_range, |
| 312 bool key_only, | 312 bool key_only, |
| 313 WebIDBCallbacks* callbacks) { | 313 WebIDBCallbacks* callbacks) { |
| 314 ResetCursorPrefetchCaches(transaction_id, kAllCursors); | 314 ResetCursorPrefetchCaches(transaction_id, kAllCursors); |
| 315 IndexedDBHostMsg_DatabaseGet_Params params; | 315 IndexedDBHostMsg_DatabaseGet_Params params; |
| 316 init_params(¶ms, callbacks); | 316 init_params(¶ms, callbacks); |
| 317 params.ipc_database_id = ipc_database_id; | 317 params.ipc_database_id = ipc_database_id; |
| 318 params.transaction_id = transaction_id; | 318 params.transaction_id = transaction_id; |
| 319 params.object_store_id = object_store_id; | 319 params.object_store_id = object_store_id; |
| 320 params.index_id = index_id; | 320 params.index_id = index_id; |
| 321 params.key_range = key_range; | 321 params.key_range = key_range; |
| 322 params.key_only = key_only; | 322 params.key_only = key_only; |
| 323 Send(new IndexedDBHostMsg_DatabaseGet(params)); | 323 Send(new IndexedDBHostMsg_DatabaseGet(params)); |
| 324 } | 324 } |
| 325 | 325 |
| 326 void IndexedDBDispatcher::RequestIDBDatabaseGetAll( | 326 void IndexedDBDispatcher::RequestIDBDatabaseGetAll( |
| 327 int32 ipc_database_id, | 327 int32_t ipc_database_id, |
| 328 int64 transaction_id, | 328 int64_t transaction_id, |
| 329 int64 object_store_id, | 329 int64_t object_store_id, |
| 330 int64 index_id, | 330 int64_t index_id, |
| 331 const IndexedDBKeyRange& key_range, | 331 const IndexedDBKeyRange& key_range, |
| 332 bool key_only, | 332 bool key_only, |
| 333 int64 max_count, | 333 int64_t max_count, |
| 334 WebIDBCallbacks* callbacks) { | 334 WebIDBCallbacks* callbacks) { |
| 335 ResetCursorPrefetchCaches(transaction_id, kAllCursors); | 335 ResetCursorPrefetchCaches(transaction_id, kAllCursors); |
| 336 IndexedDBHostMsg_DatabaseGetAll_Params params; | 336 IndexedDBHostMsg_DatabaseGetAll_Params params; |
| 337 init_params(¶ms, callbacks); | 337 init_params(¶ms, callbacks); |
| 338 params.ipc_database_id = ipc_database_id; | 338 params.ipc_database_id = ipc_database_id; |
| 339 params.transaction_id = transaction_id; | 339 params.transaction_id = transaction_id; |
| 340 params.object_store_id = object_store_id; | 340 params.object_store_id = object_store_id; |
| 341 params.index_id = index_id; | 341 params.index_id = index_id; |
| 342 params.key_range = key_range; | 342 params.key_range = key_range; |
| 343 params.key_only = key_only; | 343 params.key_only = key_only; |
| 344 params.max_count = max_count; | 344 params.max_count = max_count; |
| 345 Send(new IndexedDBHostMsg_DatabaseGetAll(params)); | 345 Send(new IndexedDBHostMsg_DatabaseGetAll(params)); |
| 346 } | 346 } |
| 347 | 347 |
| 348 void IndexedDBDispatcher::RequestIDBDatabasePut( | 348 void IndexedDBDispatcher::RequestIDBDatabasePut( |
| 349 int32 ipc_database_id, | 349 int32_t ipc_database_id, |
| 350 int64 transaction_id, | 350 int64_t transaction_id, |
| 351 int64 object_store_id, | 351 int64_t object_store_id, |
| 352 const WebData& value, | 352 const WebData& value, |
| 353 const blink::WebVector<WebBlobInfo>& web_blob_info, | 353 const blink::WebVector<WebBlobInfo>& web_blob_info, |
| 354 const IndexedDBKey& key, | 354 const IndexedDBKey& key, |
| 355 blink::WebIDBPutMode put_mode, | 355 blink::WebIDBPutMode put_mode, |
| 356 WebIDBCallbacks* callbacks, | 356 WebIDBCallbacks* callbacks, |
| 357 const WebVector<long long>& index_ids, | 357 const WebVector<long long>& index_ids, |
| 358 const WebVector<WebVector<WebIDBKey> >& index_keys) { | 358 const WebVector<WebVector<WebIDBKey>>& index_keys) { |
| 359 if (value.size() + key.size_estimate() > max_put_value_size_) { | 359 if (value.size() + key.size_estimate() > max_put_value_size_) { |
| 360 callbacks->onError(WebIDBDatabaseError( | 360 callbacks->onError(WebIDBDatabaseError( |
| 361 blink::WebIDBDatabaseExceptionUnknownError, | 361 blink::WebIDBDatabaseExceptionUnknownError, |
| 362 WebString::fromUTF8(base::StringPrintf( | 362 WebString::fromUTF8(base::StringPrintf( |
| 363 "The serialized value is too large" | 363 "The serialized value is too large" |
| 364 " (size=%" PRIuS " bytes, max=%" PRIuS " bytes).", | 364 " (size=%" PRIuS " bytes, max=%" PRIuS " bytes).", |
| 365 value.size(), | 365 value.size(), |
| 366 max_put_value_size_).c_str()))); | 366 max_put_value_size_).c_str()))); |
| 367 return; | 367 return; |
| 368 } | 368 } |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 403 blob_or_file_info.size = info.size(); | 403 blob_or_file_info.size = info.size(); |
| 404 blob_or_file_info.uuid = info.uuid().latin1(); | 404 blob_or_file_info.uuid = info.uuid().latin1(); |
| 405 DCHECK(blob_or_file_info.uuid.size()); | 405 DCHECK(blob_or_file_info.uuid.size()); |
| 406 blob_or_file_info.mime_type = info.type(); | 406 blob_or_file_info.mime_type = info.type(); |
| 407 } | 407 } |
| 408 | 408 |
| 409 Send(new IndexedDBHostMsg_DatabasePut(params)); | 409 Send(new IndexedDBHostMsg_DatabasePut(params)); |
| 410 } | 410 } |
| 411 | 411 |
| 412 void IndexedDBDispatcher::RequestIDBDatabaseOpenCursor( | 412 void IndexedDBDispatcher::RequestIDBDatabaseOpenCursor( |
| 413 int32 ipc_database_id, | 413 int32_t ipc_database_id, |
| 414 int64 transaction_id, | 414 int64_t transaction_id, |
| 415 int64 object_store_id, | 415 int64_t object_store_id, |
| 416 int64 index_id, | 416 int64_t index_id, |
| 417 const IndexedDBKeyRange& key_range, | 417 const IndexedDBKeyRange& key_range, |
| 418 blink::WebIDBCursorDirection direction, | 418 blink::WebIDBCursorDirection direction, |
| 419 bool key_only, | 419 bool key_only, |
| 420 blink::WebIDBTaskType task_type, | 420 blink::WebIDBTaskType task_type, |
| 421 WebIDBCallbacks* callbacks) { | 421 WebIDBCallbacks* callbacks) { |
| 422 ResetCursorPrefetchCaches(transaction_id, kAllCursors); | 422 ResetCursorPrefetchCaches(transaction_id, kAllCursors); |
| 423 IndexedDBHostMsg_DatabaseOpenCursor_Params params; | 423 IndexedDBHostMsg_DatabaseOpenCursor_Params params; |
| 424 init_params(¶ms, callbacks); | 424 init_params(¶ms, callbacks); |
| 425 params.ipc_database_id = ipc_database_id; | 425 params.ipc_database_id = ipc_database_id; |
| 426 params.transaction_id = transaction_id; | 426 params.transaction_id = transaction_id; |
| 427 params.object_store_id = object_store_id; | 427 params.object_store_id = object_store_id; |
| 428 params.index_id = index_id; | 428 params.index_id = index_id; |
| 429 params.key_range = key_range; | 429 params.key_range = key_range; |
| 430 params.direction = direction; | 430 params.direction = direction; |
| 431 params.key_only = key_only; | 431 params.key_only = key_only; |
| 432 params.task_type = task_type; | 432 params.task_type = task_type; |
| 433 Send(new IndexedDBHostMsg_DatabaseOpenCursor(params)); | 433 Send(new IndexedDBHostMsg_DatabaseOpenCursor(params)); |
| 434 | 434 |
| 435 DCHECK(cursor_transaction_ids_.find(params.ipc_callbacks_id) == | 435 DCHECK(cursor_transaction_ids_.find(params.ipc_callbacks_id) == |
| 436 cursor_transaction_ids_.end()); | 436 cursor_transaction_ids_.end()); |
| 437 cursor_transaction_ids_[params.ipc_callbacks_id] = transaction_id; | 437 cursor_transaction_ids_[params.ipc_callbacks_id] = transaction_id; |
| 438 } | 438 } |
| 439 | 439 |
| 440 void IndexedDBDispatcher::RequestIDBDatabaseCount( | 440 void IndexedDBDispatcher::RequestIDBDatabaseCount( |
| 441 int32 ipc_database_id, | 441 int32_t ipc_database_id, |
| 442 int64 transaction_id, | 442 int64_t transaction_id, |
| 443 int64 object_store_id, | 443 int64_t object_store_id, |
| 444 int64 index_id, | 444 int64_t index_id, |
| 445 const IndexedDBKeyRange& key_range, | 445 const IndexedDBKeyRange& key_range, |
| 446 WebIDBCallbacks* callbacks) { | 446 WebIDBCallbacks* callbacks) { |
| 447 ResetCursorPrefetchCaches(transaction_id, kAllCursors); | 447 ResetCursorPrefetchCaches(transaction_id, kAllCursors); |
| 448 IndexedDBHostMsg_DatabaseCount_Params params; | 448 IndexedDBHostMsg_DatabaseCount_Params params; |
| 449 init_params(¶ms, callbacks); | 449 init_params(¶ms, callbacks); |
| 450 params.ipc_database_id = ipc_database_id; | 450 params.ipc_database_id = ipc_database_id; |
| 451 params.transaction_id = transaction_id; | 451 params.transaction_id = transaction_id; |
| 452 params.object_store_id = object_store_id; | 452 params.object_store_id = object_store_id; |
| 453 params.index_id = index_id; | 453 params.index_id = index_id; |
| 454 params.key_range = key_range; | 454 params.key_range = key_range; |
| 455 Send(new IndexedDBHostMsg_DatabaseCount(params)); | 455 Send(new IndexedDBHostMsg_DatabaseCount(params)); |
| 456 } | 456 } |
| 457 | 457 |
| 458 void IndexedDBDispatcher::RequestIDBDatabaseDeleteRange( | 458 void IndexedDBDispatcher::RequestIDBDatabaseDeleteRange( |
| 459 int32 ipc_database_id, | 459 int32_t ipc_database_id, |
| 460 int64 transaction_id, | 460 int64_t transaction_id, |
| 461 int64 object_store_id, | 461 int64_t object_store_id, |
| 462 const IndexedDBKeyRange& key_range, | 462 const IndexedDBKeyRange& key_range, |
| 463 WebIDBCallbacks* callbacks) { | 463 WebIDBCallbacks* callbacks) { |
| 464 ResetCursorPrefetchCaches(transaction_id, kAllCursors); | 464 ResetCursorPrefetchCaches(transaction_id, kAllCursors); |
| 465 IndexedDBHostMsg_DatabaseDeleteRange_Params params; | 465 IndexedDBHostMsg_DatabaseDeleteRange_Params params; |
| 466 init_params(¶ms, callbacks); | 466 init_params(¶ms, callbacks); |
| 467 params.ipc_database_id = ipc_database_id; | 467 params.ipc_database_id = ipc_database_id; |
| 468 params.transaction_id = transaction_id; | 468 params.transaction_id = transaction_id; |
| 469 params.object_store_id = object_store_id; | 469 params.object_store_id = object_store_id; |
| 470 params.key_range = key_range; | 470 params.key_range = key_range; |
| 471 Send(new IndexedDBHostMsg_DatabaseDeleteRange(params)); | 471 Send(new IndexedDBHostMsg_DatabaseDeleteRange(params)); |
| 472 } | 472 } |
| 473 | 473 |
| 474 void IndexedDBDispatcher::RequestIDBDatabaseClear( | 474 void IndexedDBDispatcher::RequestIDBDatabaseClear( |
| 475 int32 ipc_database_id, | 475 int32_t ipc_database_id, |
| 476 int64 transaction_id, | 476 int64_t transaction_id, |
| 477 int64 object_store_id, | 477 int64_t object_store_id, |
| 478 WebIDBCallbacks* callbacks_ptr) { | 478 WebIDBCallbacks* callbacks_ptr) { |
| 479 ResetCursorPrefetchCaches(transaction_id, kAllCursors); | 479 ResetCursorPrefetchCaches(transaction_id, kAllCursors); |
| 480 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); | 480 scoped_ptr<WebIDBCallbacks> callbacks(callbacks_ptr); |
| 481 int32 ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); | 481 int32_t ipc_callbacks_id = pending_callbacks_.Add(callbacks.release()); |
| 482 Send(new IndexedDBHostMsg_DatabaseClear(CurrentWorkerId(), | 482 Send(new IndexedDBHostMsg_DatabaseClear(CurrentWorkerId(), |
| 483 ipc_callbacks_id, | 483 ipc_callbacks_id, |
| 484 ipc_database_id, | 484 ipc_database_id, |
| 485 transaction_id, | 485 transaction_id, |
| 486 object_store_id)); | 486 object_store_id)); |
| 487 } | 487 } |
| 488 | 488 |
| 489 void IndexedDBDispatcher::CursorDestroyed(int32 ipc_cursor_id) { | 489 void IndexedDBDispatcher::CursorDestroyed(int32_t ipc_cursor_id) { |
| 490 cursors_.erase(ipc_cursor_id); | 490 cursors_.erase(ipc_cursor_id); |
| 491 } | 491 } |
| 492 | 492 |
| 493 void IndexedDBDispatcher::DatabaseDestroyed(int32 ipc_database_id) { | 493 void IndexedDBDispatcher::DatabaseDestroyed(int32_t ipc_database_id) { |
| 494 DCHECK_EQ(databases_.count(ipc_database_id), 1u); | 494 DCHECK_EQ(databases_.count(ipc_database_id), 1u); |
| 495 databases_.erase(ipc_database_id); | 495 databases_.erase(ipc_database_id); |
| 496 } | 496 } |
| 497 | 497 |
| 498 void IndexedDBDispatcher::OnSuccessIDBDatabase( | 498 void IndexedDBDispatcher::OnSuccessIDBDatabase( |
| 499 int32 ipc_thread_id, | 499 int32_t ipc_thread_id, |
| 500 int32 ipc_callbacks_id, | 500 int32_t ipc_callbacks_id, |
| 501 int32 ipc_database_callbacks_id, | 501 int32_t ipc_database_callbacks_id, |
| 502 int32 ipc_object_id, | 502 int32_t ipc_object_id, |
| 503 const IndexedDBDatabaseMetadata& idb_metadata) { | 503 const IndexedDBDatabaseMetadata& idb_metadata) { |
| 504 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 504 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 505 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); | 505 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); |
| 506 if (!callbacks) | 506 if (!callbacks) |
| 507 return; | 507 return; |
| 508 WebIDBMetadata metadata(ConvertMetadata(idb_metadata)); | 508 WebIDBMetadata metadata(ConvertMetadata(idb_metadata)); |
| 509 // If an upgrade was performed, count will be non-zero. | 509 // If an upgrade was performed, count will be non-zero. |
| 510 WebIDBDatabase* database = NULL; | 510 WebIDBDatabase* database = NULL; |
| 511 | 511 |
| 512 // Back-end will send kNoDatabase if it was already sent in OnUpgradeNeeded. | 512 // Back-end will send kNoDatabase if it was already sent in OnUpgradeNeeded. |
| 513 // May already be deleted and removed from the table, but do not recreate.. | 513 // May already be deleted and removed from the table, but do not recreate.. |
| 514 if (ipc_object_id != kNoDatabase) { | 514 if (ipc_object_id != kNoDatabase) { |
| 515 DCHECK(!databases_.count(ipc_object_id)); | 515 DCHECK(!databases_.count(ipc_object_id)); |
| 516 database = databases_[ipc_object_id] = new WebIDBDatabaseImpl( | 516 database = databases_[ipc_object_id] = new WebIDBDatabaseImpl( |
| 517 ipc_object_id, ipc_database_callbacks_id, thread_safe_sender_.get()); | 517 ipc_object_id, ipc_database_callbacks_id, thread_safe_sender_.get()); |
| 518 } | 518 } |
| 519 | 519 |
| 520 callbacks->onSuccess(database, metadata); | 520 callbacks->onSuccess(database, metadata); |
| 521 pending_callbacks_.Remove(ipc_callbacks_id); | 521 pending_callbacks_.Remove(ipc_callbacks_id); |
| 522 } | 522 } |
| 523 | 523 |
| 524 void IndexedDBDispatcher::OnSuccessIndexedDBKey(int32 ipc_thread_id, | 524 void IndexedDBDispatcher::OnSuccessIndexedDBKey(int32_t ipc_thread_id, |
| 525 int32 ipc_callbacks_id, | 525 int32_t ipc_callbacks_id, |
| 526 const IndexedDBKey& key) { | 526 const IndexedDBKey& key) { |
| 527 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 527 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 528 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); | 528 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); |
| 529 if (!callbacks) | 529 if (!callbacks) |
| 530 return; | 530 return; |
| 531 callbacks->onSuccess(WebIDBKeyBuilder::Build(key)); | 531 callbacks->onSuccess(WebIDBKeyBuilder::Build(key)); |
| 532 pending_callbacks_.Remove(ipc_callbacks_id); | 532 pending_callbacks_.Remove(ipc_callbacks_id); |
| 533 } | 533 } |
| 534 | 534 |
| 535 void IndexedDBDispatcher::OnSuccessStringList( | 535 void IndexedDBDispatcher::OnSuccessStringList( |
| 536 int32 ipc_thread_id, | 536 int32_t ipc_thread_id, |
| 537 int32 ipc_callbacks_id, | 537 int32_t ipc_callbacks_id, |
| 538 const std::vector<base::string16>& value) { | 538 const std::vector<base::string16>& value) { |
| 539 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 539 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 540 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); | 540 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); |
| 541 if (!callbacks) | 541 if (!callbacks) |
| 542 return; | 542 return; |
| 543 callbacks->onSuccess(WebVector<WebString>(value)); | 543 callbacks->onSuccess(WebVector<WebString>(value)); |
| 544 pending_callbacks_.Remove(ipc_callbacks_id); | 544 pending_callbacks_.Remove(ipc_callbacks_id); |
| 545 } | 545 } |
| 546 | 546 |
| 547 // Populate some WebIDBValue members (data & blob info) from the supplied | 547 // Populate some WebIDBValue members (data & blob info) from the supplied |
| (...skipping 24 matching lines...) Expand all Loading... |
| 572 static void PrepareReturnWebValue(const IndexedDBMsg_ReturnValue& value, | 572 static void PrepareReturnWebValue(const IndexedDBMsg_ReturnValue& value, |
| 573 WebIDBValue* web_value) { | 573 WebIDBValue* web_value) { |
| 574 PrepareWebValue(value, web_value); | 574 PrepareWebValue(value, web_value); |
| 575 web_value->primaryKey = WebIDBKeyBuilder::Build(value.primary_key); | 575 web_value->primaryKey = WebIDBKeyBuilder::Build(value.primary_key); |
| 576 web_value->keyPath = WebIDBKeyPathBuilder::Build(value.key_path); | 576 web_value->keyPath = WebIDBKeyPathBuilder::Build(value.key_path); |
| 577 } | 577 } |
| 578 | 578 |
| 579 void IndexedDBDispatcher::OnSuccessArray( | 579 void IndexedDBDispatcher::OnSuccessArray( |
| 580 const IndexedDBMsg_CallbacksSuccessArray_Params& p) { | 580 const IndexedDBMsg_CallbacksSuccessArray_Params& p) { |
| 581 DCHECK_EQ(p.ipc_thread_id, CurrentWorkerId()); | 581 DCHECK_EQ(p.ipc_thread_id, CurrentWorkerId()); |
| 582 int32 ipc_callbacks_id = p.ipc_callbacks_id; | 582 int32_t ipc_callbacks_id = p.ipc_callbacks_id; |
| 583 blink::WebVector<WebIDBValue> web_values(p.values.size()); | 583 blink::WebVector<WebIDBValue> web_values(p.values.size()); |
| 584 for (size_t i = 0; i < p.values.size(); ++i) | 584 for (size_t i = 0; i < p.values.size(); ++i) |
| 585 PrepareReturnWebValue(p.values[i], &web_values[i]); | 585 PrepareReturnWebValue(p.values[i], &web_values[i]); |
| 586 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); | 586 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); |
| 587 DCHECK(callbacks); | 587 DCHECK(callbacks); |
| 588 callbacks->onSuccess(web_values); | 588 callbacks->onSuccess(web_values); |
| 589 pending_callbacks_.Remove(ipc_callbacks_id); | 589 pending_callbacks_.Remove(ipc_callbacks_id); |
| 590 } | 590 } |
| 591 | 591 |
| 592 void IndexedDBDispatcher::OnSuccessValue( | 592 void IndexedDBDispatcher::OnSuccessValue( |
| 593 const IndexedDBMsg_CallbacksSuccessValue_Params& params) { | 593 const IndexedDBMsg_CallbacksSuccessValue_Params& params) { |
| 594 DCHECK_EQ(params.ipc_thread_id, CurrentWorkerId()); | 594 DCHECK_EQ(params.ipc_thread_id, CurrentWorkerId()); |
| 595 WebIDBCallbacks* callbacks = | 595 WebIDBCallbacks* callbacks = |
| 596 pending_callbacks_.Lookup(params.ipc_callbacks_id); | 596 pending_callbacks_.Lookup(params.ipc_callbacks_id); |
| 597 if (!callbacks) | 597 if (!callbacks) |
| 598 return; | 598 return; |
| 599 WebIDBValue web_value; | 599 WebIDBValue web_value; |
| 600 PrepareReturnWebValue(params.value, &web_value); | 600 PrepareReturnWebValue(params.value, &web_value); |
| 601 if (params.value.primary_key.IsValid()) { | 601 if (params.value.primary_key.IsValid()) { |
| 602 web_value.primaryKey = WebIDBKeyBuilder::Build(params.value.primary_key); | 602 web_value.primaryKey = WebIDBKeyBuilder::Build(params.value.primary_key); |
| 603 web_value.keyPath = WebIDBKeyPathBuilder::Build(params.value.key_path); | 603 web_value.keyPath = WebIDBKeyPathBuilder::Build(params.value.key_path); |
| 604 } | 604 } |
| 605 callbacks->onSuccess(web_value); | 605 callbacks->onSuccess(web_value); |
| 606 cursor_transaction_ids_.erase(params.ipc_callbacks_id); | 606 cursor_transaction_ids_.erase(params.ipc_callbacks_id); |
| 607 pending_callbacks_.Remove(params.ipc_callbacks_id); | 607 pending_callbacks_.Remove(params.ipc_callbacks_id); |
| 608 } | 608 } |
| 609 | 609 |
| 610 void IndexedDBDispatcher::OnSuccessInteger(int32 ipc_thread_id, | 610 void IndexedDBDispatcher::OnSuccessInteger(int32_t ipc_thread_id, |
| 611 int32 ipc_callbacks_id, | 611 int32_t ipc_callbacks_id, |
| 612 int64 value) { | 612 int64_t value) { |
| 613 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 613 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 614 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); | 614 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); |
| 615 if (!callbacks) | 615 if (!callbacks) |
| 616 return; | 616 return; |
| 617 callbacks->onSuccess(value); | 617 callbacks->onSuccess(value); |
| 618 pending_callbacks_.Remove(ipc_callbacks_id); | 618 pending_callbacks_.Remove(ipc_callbacks_id); |
| 619 } | 619 } |
| 620 | 620 |
| 621 void IndexedDBDispatcher::OnSuccessUndefined(int32 ipc_thread_id, | 621 void IndexedDBDispatcher::OnSuccessUndefined(int32_t ipc_thread_id, |
| 622 int32 ipc_callbacks_id) { | 622 int32_t ipc_callbacks_id) { |
| 623 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 623 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 624 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); | 624 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); |
| 625 if (!callbacks) | 625 if (!callbacks) |
| 626 return; | 626 return; |
| 627 callbacks->onSuccess(); | 627 callbacks->onSuccess(); |
| 628 pending_callbacks_.Remove(ipc_callbacks_id); | 628 pending_callbacks_.Remove(ipc_callbacks_id); |
| 629 } | 629 } |
| 630 | 630 |
| 631 void IndexedDBDispatcher::OnSuccessOpenCursor( | 631 void IndexedDBDispatcher::OnSuccessOpenCursor( |
| 632 const IndexedDBMsg_CallbacksSuccessIDBCursor_Params& p) { | 632 const IndexedDBMsg_CallbacksSuccessIDBCursor_Params& p) { |
| 633 DCHECK_EQ(p.ipc_thread_id, CurrentWorkerId()); | 633 DCHECK_EQ(p.ipc_thread_id, CurrentWorkerId()); |
| 634 int32 ipc_callbacks_id = p.ipc_callbacks_id; | 634 int32_t ipc_callbacks_id = p.ipc_callbacks_id; |
| 635 int32 ipc_object_id = p.ipc_cursor_id; | 635 int32_t ipc_object_id = p.ipc_cursor_id; |
| 636 const IndexedDBKey& key = p.key; | 636 const IndexedDBKey& key = p.key; |
| 637 const IndexedDBKey& primary_key = p.primary_key; | 637 const IndexedDBKey& primary_key = p.primary_key; |
| 638 WebIDBValue web_value; | 638 WebIDBValue web_value; |
| 639 PrepareWebValue(p.value, &web_value); | 639 PrepareWebValue(p.value, &web_value); |
| 640 | 640 |
| 641 DCHECK(cursor_transaction_ids_.find(ipc_callbacks_id) != | 641 DCHECK(cursor_transaction_ids_.find(ipc_callbacks_id) != |
| 642 cursor_transaction_ids_.end()); | 642 cursor_transaction_ids_.end()); |
| 643 int64 transaction_id = cursor_transaction_ids_[ipc_callbacks_id]; | 643 int64_t transaction_id = cursor_transaction_ids_[ipc_callbacks_id]; |
| 644 cursor_transaction_ids_.erase(ipc_callbacks_id); | 644 cursor_transaction_ids_.erase(ipc_callbacks_id); |
| 645 | 645 |
| 646 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); | 646 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); |
| 647 if (!callbacks) | 647 if (!callbacks) |
| 648 return; | 648 return; |
| 649 | 649 |
| 650 WebIDBCursorImpl* cursor = new WebIDBCursorImpl( | 650 WebIDBCursorImpl* cursor = new WebIDBCursorImpl( |
| 651 ipc_object_id, transaction_id, thread_safe_sender_.get()); | 651 ipc_object_id, transaction_id, thread_safe_sender_.get()); |
| 652 cursors_[ipc_object_id] = cursor; | 652 cursors_[ipc_object_id] = cursor; |
| 653 callbacks->onSuccess(cursor, WebIDBKeyBuilder::Build(key), | 653 callbacks->onSuccess(cursor, WebIDBKeyBuilder::Build(key), |
| 654 WebIDBKeyBuilder::Build(primary_key), web_value); | 654 WebIDBKeyBuilder::Build(primary_key), web_value); |
| 655 | 655 |
| 656 pending_callbacks_.Remove(ipc_callbacks_id); | 656 pending_callbacks_.Remove(ipc_callbacks_id); |
| 657 } | 657 } |
| 658 | 658 |
| 659 void IndexedDBDispatcher::OnSuccessCursorContinue( | 659 void IndexedDBDispatcher::OnSuccessCursorContinue( |
| 660 const IndexedDBMsg_CallbacksSuccessCursorContinue_Params& p) { | 660 const IndexedDBMsg_CallbacksSuccessCursorContinue_Params& p) { |
| 661 DCHECK_EQ(p.ipc_thread_id, CurrentWorkerId()); | 661 DCHECK_EQ(p.ipc_thread_id, CurrentWorkerId()); |
| 662 int32 ipc_callbacks_id = p.ipc_callbacks_id; | 662 int32_t ipc_callbacks_id = p.ipc_callbacks_id; |
| 663 int32 ipc_cursor_id = p.ipc_cursor_id; | 663 int32_t ipc_cursor_id = p.ipc_cursor_id; |
| 664 const IndexedDBKey& key = p.key; | 664 const IndexedDBKey& key = p.key; |
| 665 const IndexedDBKey& primary_key = p.primary_key; | 665 const IndexedDBKey& primary_key = p.primary_key; |
| 666 | 666 |
| 667 if (cursors_.find(ipc_cursor_id) == cursors_.end()) | 667 if (cursors_.find(ipc_cursor_id) == cursors_.end()) |
| 668 return; | 668 return; |
| 669 | 669 |
| 670 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); | 670 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); |
| 671 if (!callbacks) | 671 if (!callbacks) |
| 672 return; | 672 return; |
| 673 | 673 |
| 674 WebIDBValue web_value; | 674 WebIDBValue web_value; |
| 675 PrepareWebValue(p.value, &web_value); | 675 PrepareWebValue(p.value, &web_value); |
| 676 callbacks->onSuccess(WebIDBKeyBuilder::Build(key), | 676 callbacks->onSuccess(WebIDBKeyBuilder::Build(key), |
| 677 WebIDBKeyBuilder::Build(primary_key), web_value); | 677 WebIDBKeyBuilder::Build(primary_key), web_value); |
| 678 | 678 |
| 679 pending_callbacks_.Remove(ipc_callbacks_id); | 679 pending_callbacks_.Remove(ipc_callbacks_id); |
| 680 } | 680 } |
| 681 | 681 |
| 682 void IndexedDBDispatcher::OnSuccessCursorPrefetch( | 682 void IndexedDBDispatcher::OnSuccessCursorPrefetch( |
| 683 const IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params& p) { | 683 const IndexedDBMsg_CallbacksSuccessCursorPrefetch_Params& p) { |
| 684 DCHECK_EQ(p.ipc_thread_id, CurrentWorkerId()); | 684 DCHECK_EQ(p.ipc_thread_id, CurrentWorkerId()); |
| 685 int32 ipc_callbacks_id = p.ipc_callbacks_id; | 685 int32_t ipc_callbacks_id = p.ipc_callbacks_id; |
| 686 int32 ipc_cursor_id = p.ipc_cursor_id; | 686 int32_t ipc_cursor_id = p.ipc_cursor_id; |
| 687 std::vector<WebIDBValue> values(p.values.size()); | 687 std::vector<WebIDBValue> values(p.values.size()); |
| 688 for (size_t i = 0; i < p.values.size(); ++i) | 688 for (size_t i = 0; i < p.values.size(); ++i) |
| 689 PrepareWebValue(p.values[i], &values[i]); | 689 PrepareWebValue(p.values[i], &values[i]); |
| 690 std::map<int32, WebIDBCursorImpl*>::const_iterator cur_iter = | 690 std::map<int32_t, WebIDBCursorImpl*>::const_iterator cur_iter = |
| 691 cursors_.find(ipc_cursor_id); | 691 cursors_.find(ipc_cursor_id); |
| 692 if (cur_iter == cursors_.end()) | 692 if (cur_iter == cursors_.end()) |
| 693 return; | 693 return; |
| 694 | 694 |
| 695 cur_iter->second->SetPrefetchData(p.keys, p.primary_keys, values); | 695 cur_iter->second->SetPrefetchData(p.keys, p.primary_keys, values); |
| 696 | 696 |
| 697 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); | 697 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); |
| 698 DCHECK(callbacks); | 698 DCHECK(callbacks); |
| 699 cur_iter->second->CachedContinue(callbacks); | 699 cur_iter->second->CachedContinue(callbacks); |
| 700 pending_callbacks_.Remove(ipc_callbacks_id); | 700 pending_callbacks_.Remove(ipc_callbacks_id); |
| 701 } | 701 } |
| 702 | 702 |
| 703 void IndexedDBDispatcher::OnIntBlocked(int32 ipc_thread_id, | 703 void IndexedDBDispatcher::OnIntBlocked(int32_t ipc_thread_id, |
| 704 int32 ipc_callbacks_id, | 704 int32_t ipc_callbacks_id, |
| 705 int64 existing_version) { | 705 int64_t existing_version) { |
| 706 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 706 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 707 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); | 707 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); |
| 708 DCHECK(callbacks); | 708 DCHECK(callbacks); |
| 709 callbacks->onBlocked(existing_version); | 709 callbacks->onBlocked(existing_version); |
| 710 } | 710 } |
| 711 | 711 |
| 712 void IndexedDBDispatcher::OnUpgradeNeeded( | 712 void IndexedDBDispatcher::OnUpgradeNeeded( |
| 713 const IndexedDBMsg_CallbacksUpgradeNeeded_Params& p) { | 713 const IndexedDBMsg_CallbacksUpgradeNeeded_Params& p) { |
| 714 DCHECK_EQ(p.ipc_thread_id, CurrentWorkerId()); | 714 DCHECK_EQ(p.ipc_thread_id, CurrentWorkerId()); |
| 715 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(p.ipc_callbacks_id); | 715 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(p.ipc_callbacks_id); |
| 716 DCHECK(callbacks); | 716 DCHECK(callbacks); |
| 717 WebIDBMetadata metadata(ConvertMetadata(p.idb_metadata)); | 717 WebIDBMetadata metadata(ConvertMetadata(p.idb_metadata)); |
| 718 DCHECK(!databases_.count(p.ipc_database_id)); | 718 DCHECK(!databases_.count(p.ipc_database_id)); |
| 719 databases_[p.ipc_database_id] = | 719 databases_[p.ipc_database_id] = |
| 720 new WebIDBDatabaseImpl(p.ipc_database_id, | 720 new WebIDBDatabaseImpl(p.ipc_database_id, |
| 721 p.ipc_database_callbacks_id, | 721 p.ipc_database_callbacks_id, |
| 722 thread_safe_sender_.get()); | 722 thread_safe_sender_.get()); |
| 723 callbacks->onUpgradeNeeded( | 723 callbacks->onUpgradeNeeded( |
| 724 p.old_version, | 724 p.old_version, |
| 725 databases_[p.ipc_database_id], | 725 databases_[p.ipc_database_id], |
| 726 metadata, | 726 metadata, |
| 727 static_cast<blink::WebIDBDataLoss>(p.data_loss), | 727 static_cast<blink::WebIDBDataLoss>(p.data_loss), |
| 728 WebString::fromUTF8(p.data_loss_message)); | 728 WebString::fromUTF8(p.data_loss_message)); |
| 729 } | 729 } |
| 730 | 730 |
| 731 void IndexedDBDispatcher::OnError(int32 ipc_thread_id, | 731 void IndexedDBDispatcher::OnError(int32_t ipc_thread_id, |
| 732 int32 ipc_callbacks_id, | 732 int32_t ipc_callbacks_id, |
| 733 int code, | 733 int code, |
| 734 const base::string16& message) { | 734 const base::string16& message) { |
| 735 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 735 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 736 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); | 736 WebIDBCallbacks* callbacks = pending_callbacks_.Lookup(ipc_callbacks_id); |
| 737 if (!callbacks) | 737 if (!callbacks) |
| 738 return; | 738 return; |
| 739 if (message.empty()) | 739 if (message.empty()) |
| 740 callbacks->onError(WebIDBDatabaseError(code)); | 740 callbacks->onError(WebIDBDatabaseError(code)); |
| 741 else | 741 else |
| 742 callbacks->onError(WebIDBDatabaseError(code, message)); | 742 callbacks->onError(WebIDBDatabaseError(code, message)); |
| 743 pending_callbacks_.Remove(ipc_callbacks_id); | 743 pending_callbacks_.Remove(ipc_callbacks_id); |
| 744 cursor_transaction_ids_.erase(ipc_callbacks_id); | 744 cursor_transaction_ids_.erase(ipc_callbacks_id); |
| 745 } | 745 } |
| 746 | 746 |
| 747 void IndexedDBDispatcher::OnAbort(int32 ipc_thread_id, | 747 void IndexedDBDispatcher::OnAbort(int32_t ipc_thread_id, |
| 748 int32 ipc_database_callbacks_id, | 748 int32_t ipc_database_callbacks_id, |
| 749 int64 transaction_id, | 749 int64_t transaction_id, |
| 750 int code, | 750 int code, |
| 751 const base::string16& message) { | 751 const base::string16& message) { |
| 752 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 752 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 753 WebIDBDatabaseCallbacks* callbacks = | 753 WebIDBDatabaseCallbacks* callbacks = |
| 754 pending_database_callbacks_.Lookup(ipc_database_callbacks_id); | 754 pending_database_callbacks_.Lookup(ipc_database_callbacks_id); |
| 755 if (!callbacks) | 755 if (!callbacks) |
| 756 return; | 756 return; |
| 757 if (message.empty()) | 757 if (message.empty()) |
| 758 callbacks->onAbort(transaction_id, WebIDBDatabaseError(code)); | 758 callbacks->onAbort(transaction_id, WebIDBDatabaseError(code)); |
| 759 else | 759 else |
| 760 callbacks->onAbort(transaction_id, WebIDBDatabaseError(code, message)); | 760 callbacks->onAbort(transaction_id, WebIDBDatabaseError(code, message)); |
| 761 } | 761 } |
| 762 | 762 |
| 763 void IndexedDBDispatcher::OnComplete(int32 ipc_thread_id, | 763 void IndexedDBDispatcher::OnComplete(int32_t ipc_thread_id, |
| 764 int32 ipc_database_callbacks_id, | 764 int32_t ipc_database_callbacks_id, |
| 765 int64 transaction_id) { | 765 int64_t transaction_id) { |
| 766 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 766 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 767 WebIDBDatabaseCallbacks* callbacks = | 767 WebIDBDatabaseCallbacks* callbacks = |
| 768 pending_database_callbacks_.Lookup(ipc_database_callbacks_id); | 768 pending_database_callbacks_.Lookup(ipc_database_callbacks_id); |
| 769 if (!callbacks) | 769 if (!callbacks) |
| 770 return; | 770 return; |
| 771 callbacks->onComplete(transaction_id); | 771 callbacks->onComplete(transaction_id); |
| 772 } | 772 } |
| 773 | 773 |
| 774 void IndexedDBDispatcher::OnForcedClose(int32 ipc_thread_id, | 774 void IndexedDBDispatcher::OnForcedClose(int32_t ipc_thread_id, |
| 775 int32 ipc_database_callbacks_id) { | 775 int32_t ipc_database_callbacks_id) { |
| 776 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 776 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 777 WebIDBDatabaseCallbacks* callbacks = | 777 WebIDBDatabaseCallbacks* callbacks = |
| 778 pending_database_callbacks_.Lookup(ipc_database_callbacks_id); | 778 pending_database_callbacks_.Lookup(ipc_database_callbacks_id); |
| 779 if (!callbacks) | 779 if (!callbacks) |
| 780 return; | 780 return; |
| 781 callbacks->onForcedClose(); | 781 callbacks->onForcedClose(); |
| 782 } | 782 } |
| 783 | 783 |
| 784 void IndexedDBDispatcher::OnIntVersionChange(int32 ipc_thread_id, | 784 void IndexedDBDispatcher::OnIntVersionChange(int32_t ipc_thread_id, |
| 785 int32 ipc_database_callbacks_id, | 785 int32_t ipc_database_callbacks_id, |
| 786 int64 old_version, | 786 int64_t old_version, |
| 787 int64 new_version) { | 787 int64_t new_version) { |
| 788 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); | 788 DCHECK_EQ(ipc_thread_id, CurrentWorkerId()); |
| 789 WebIDBDatabaseCallbacks* callbacks = | 789 WebIDBDatabaseCallbacks* callbacks = |
| 790 pending_database_callbacks_.Lookup(ipc_database_callbacks_id); | 790 pending_database_callbacks_.Lookup(ipc_database_callbacks_id); |
| 791 // callbacks would be NULL if a versionchange event is received after close | 791 // callbacks would be NULL if a versionchange event is received after close |
| 792 // has been called. | 792 // has been called. |
| 793 if (!callbacks) | 793 if (!callbacks) |
| 794 return; | 794 return; |
| 795 callbacks->onVersionChange(old_version, new_version); | 795 callbacks->onVersionChange(old_version, new_version); |
| 796 } | 796 } |
| 797 | 797 |
| 798 void IndexedDBDispatcher::ResetCursorPrefetchCaches( | 798 void IndexedDBDispatcher::ResetCursorPrefetchCaches( |
| 799 int64 transaction_id, | 799 int64_t transaction_id, |
| 800 int32 ipc_exception_cursor_id) { | 800 int32_t ipc_exception_cursor_id) { |
| 801 typedef std::map<int32, WebIDBCursorImpl*>::iterator Iterator; | 801 typedef std::map<int32_t, WebIDBCursorImpl*>::iterator Iterator; |
| 802 for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) { | 802 for (Iterator i = cursors_.begin(); i != cursors_.end(); ++i) { |
| 803 if (i->first == ipc_exception_cursor_id || | 803 if (i->first == ipc_exception_cursor_id || |
| 804 i->second->transaction_id() != transaction_id) | 804 i->second->transaction_id() != transaction_id) |
| 805 continue; | 805 continue; |
| 806 i->second->ResetPrefetchCache(); | 806 i->second->ResetPrefetchCache(); |
| 807 } | 807 } |
| 808 } | 808 } |
| 809 | 809 |
| 810 } // namespace content | 810 } // namespace content |
| OLD | NEW |