| 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/browser/indexed_db/indexed_db_transaction.h" | 5 #include "content/browser/indexed_db/indexed_db_transaction.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 } | 58 } |
| 59 | 59 |
| 60 void RunPostedTasks() { base::RunLoop().RunUntilIdle(); } | 60 void RunPostedTasks() { base::RunLoop().RunUntilIdle(); } |
| 61 leveldb::Status DummyOperation(leveldb::Status result, | 61 leveldb::Status DummyOperation(leveldb::Status result, |
| 62 IndexedDBTransaction* transaction) { | 62 IndexedDBTransaction* transaction) { |
| 63 return result; | 63 return result; |
| 64 } | 64 } |
| 65 leveldb::Status AbortableOperation(AbortObserver* observer, | 65 leveldb::Status AbortableOperation(AbortObserver* observer, |
| 66 IndexedDBTransaction* transaction) { | 66 IndexedDBTransaction* transaction) { |
| 67 transaction->ScheduleAbortTask( | 67 transaction->ScheduleAbortTask( |
| 68 base::Bind(&AbortObserver::AbortTask, base::Unretained(observer))); | 68 base::BindOnce(&AbortObserver::AbortTask, base::Unretained(observer))); |
| 69 return leveldb::Status::OK(); | 69 return leveldb::Status::OK(); |
| 70 } | 70 } |
| 71 | 71 |
| 72 protected: | 72 protected: |
| 73 scoped_refptr<IndexedDBFakeBackingStore> backing_store_; | 73 scoped_refptr<IndexedDBFakeBackingStore> backing_store_; |
| 74 scoped_refptr<IndexedDBDatabase> db_; | 74 scoped_refptr<IndexedDBDatabase> db_; |
| 75 scoped_refptr<MockIndexedDBFactory> factory_; | 75 scoped_refptr<MockIndexedDBFactory> factory_; |
| 76 | 76 |
| 77 private: | 77 private: |
| 78 TestBrowserThreadBundle thread_bundle_; | 78 TestBrowserThreadBundle thread_bundle_; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 103 db_->TransactionCreated(transaction.get()); | 103 db_->TransactionCreated(transaction.get()); |
| 104 | 104 |
| 105 // No conflicting transactions, so coordinator will start it immediately: | 105 // No conflicting transactions, so coordinator will start it immediately: |
| 106 EXPECT_EQ(IndexedDBTransaction::STARTED, transaction->state()); | 106 EXPECT_EQ(IndexedDBTransaction::STARTED, transaction->state()); |
| 107 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); | 107 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); |
| 108 EXPECT_EQ(0, transaction->diagnostics().tasks_scheduled); | 108 EXPECT_EQ(0, transaction->diagnostics().tasks_scheduled); |
| 109 EXPECT_EQ(0, transaction->diagnostics().tasks_completed); | 109 EXPECT_EQ(0, transaction->diagnostics().tasks_completed); |
| 110 | 110 |
| 111 // Schedule a task - timer won't be started until it's processed. | 111 // Schedule a task - timer won't be started until it's processed. |
| 112 transaction->ScheduleTask( | 112 transaction->ScheduleTask( |
| 113 base::Bind(&IndexedDBTransactionTest::DummyOperation, | 113 base::BindOnce(&IndexedDBTransactionTest::DummyOperation, |
| 114 base::Unretained(this), leveldb::Status::OK())); | 114 base::Unretained(this), leveldb::Status::OK())); |
| 115 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); | 115 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); |
| 116 EXPECT_EQ(1, transaction->diagnostics().tasks_scheduled); | 116 EXPECT_EQ(1, transaction->diagnostics().tasks_scheduled); |
| 117 EXPECT_EQ(0, transaction->diagnostics().tasks_completed); | 117 EXPECT_EQ(0, transaction->diagnostics().tasks_completed); |
| 118 | 118 |
| 119 RunPostedTasks(); | 119 RunPostedTasks(); |
| 120 EXPECT_TRUE(transaction->IsTimeoutTimerRunning()); | 120 EXPECT_TRUE(transaction->IsTimeoutTimerRunning()); |
| 121 | 121 |
| 122 transaction->Timeout(); | 122 transaction->Timeout(); |
| 123 EXPECT_EQ(IndexedDBTransaction::FINISHED, transaction->state()); | 123 EXPECT_EQ(IndexedDBTransaction::FINISHED, transaction->state()); |
| 124 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); | 124 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); |
| 125 EXPECT_EQ(1, transaction->diagnostics().tasks_scheduled); | 125 EXPECT_EQ(1, transaction->diagnostics().tasks_scheduled); |
| 126 EXPECT_EQ(1, transaction->diagnostics().tasks_completed); | 126 EXPECT_EQ(1, transaction->diagnostics().tasks_completed); |
| 127 | 127 |
| 128 // This task will be ignored. | 128 // This task will be ignored. |
| 129 transaction->ScheduleTask( | 129 transaction->ScheduleTask( |
| 130 base::Bind(&IndexedDBTransactionTest::DummyOperation, | 130 base::BindOnce(&IndexedDBTransactionTest::DummyOperation, |
| 131 base::Unretained(this), leveldb::Status::OK())); | 131 base::Unretained(this), leveldb::Status::OK())); |
| 132 EXPECT_EQ(IndexedDBTransaction::FINISHED, transaction->state()); | 132 EXPECT_EQ(IndexedDBTransaction::FINISHED, transaction->state()); |
| 133 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); | 133 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); |
| 134 EXPECT_EQ(1, transaction->diagnostics().tasks_scheduled); | 134 EXPECT_EQ(1, transaction->diagnostics().tasks_scheduled); |
| 135 EXPECT_EQ(1, transaction->diagnostics().tasks_completed); | 135 EXPECT_EQ(1, transaction->diagnostics().tasks_completed); |
| 136 } | 136 } |
| 137 | 137 |
| 138 TEST_F(IndexedDBTransactionTest, NoTimeoutReadOnly) { | 138 TEST_F(IndexedDBTransactionTest, NoTimeoutReadOnly) { |
| 139 const int64_t id = 0; | 139 const int64_t id = 0; |
| 140 const std::set<int64_t> scope; | 140 const std::set<int64_t> scope; |
| 141 const leveldb::Status commit_success = leveldb::Status::OK(); | 141 const leveldb::Status commit_success = leveldb::Status::OK(); |
| 142 std::unique_ptr<IndexedDBConnection> connection( | 142 std::unique_ptr<IndexedDBConnection> connection( |
| 143 base::MakeUnique<IndexedDBConnection>( | 143 base::MakeUnique<IndexedDBConnection>( |
| 144 kFakeProcessId, db_, new MockIndexedDBDatabaseCallbacks())); | 144 kFakeProcessId, db_, new MockIndexedDBDatabaseCallbacks())); |
| 145 std::unique_ptr<IndexedDBTransaction> transaction = | 145 std::unique_ptr<IndexedDBTransaction> transaction = |
| 146 std::unique_ptr<IndexedDBTransaction>(new IndexedDBTransaction( | 146 std::unique_ptr<IndexedDBTransaction>(new IndexedDBTransaction( |
| 147 id, connection.get(), scope, blink::kWebIDBTransactionModeReadOnly, | 147 id, connection.get(), scope, blink::kWebIDBTransactionModeReadOnly, |
| 148 new IndexedDBFakeBackingStore::FakeTransaction(commit_success))); | 148 new IndexedDBFakeBackingStore::FakeTransaction(commit_success))); |
| 149 db_->TransactionCreated(transaction.get()); | 149 db_->TransactionCreated(transaction.get()); |
| 150 | 150 |
| 151 // No conflicting transactions, so coordinator will start it immediately: | 151 // No conflicting transactions, so coordinator will start it immediately: |
| 152 EXPECT_EQ(IndexedDBTransaction::STARTED, transaction->state()); | 152 EXPECT_EQ(IndexedDBTransaction::STARTED, transaction->state()); |
| 153 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); | 153 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); |
| 154 | 154 |
| 155 // Schedule a task - timer won't be started until it's processed. | 155 // Schedule a task - timer won't be started until it's processed. |
| 156 transaction->ScheduleTask( | 156 transaction->ScheduleTask( |
| 157 base::Bind(&IndexedDBTransactionTest::DummyOperation, | 157 base::BindOnce(&IndexedDBTransactionTest::DummyOperation, |
| 158 base::Unretained(this), leveldb::Status::OK())); | 158 base::Unretained(this), leveldb::Status::OK())); |
| 159 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); | 159 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); |
| 160 | 160 |
| 161 // Transaction is read-only, so no need to time it out. | 161 // Transaction is read-only, so no need to time it out. |
| 162 RunPostedTasks(); | 162 RunPostedTasks(); |
| 163 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); | 163 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); |
| 164 | 164 |
| 165 // Clean up to avoid leaks. | 165 // Clean up to avoid leaks. |
| 166 transaction->Abort(IndexedDBDatabaseError( | 166 transaction->Abort(IndexedDBDatabaseError( |
| 167 IndexedDBDatabaseError(blink::kWebIDBDatabaseExceptionAbortError, | 167 IndexedDBDatabaseError(blink::kWebIDBDatabaseExceptionAbortError, |
| 168 "Transaction aborted by user."))); | 168 "Transaction aborted by user."))); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 191 | 191 |
| 192 db_->TransactionCreated(transaction.get()); | 192 db_->TransactionCreated(transaction.get()); |
| 193 | 193 |
| 194 EXPECT_FALSE(transaction->HasPendingTasks()); | 194 EXPECT_FALSE(transaction->HasPendingTasks()); |
| 195 EXPECT_TRUE(transaction->IsTaskQueueEmpty()); | 195 EXPECT_TRUE(transaction->IsTaskQueueEmpty()); |
| 196 EXPECT_TRUE(transaction->task_queue_.empty()); | 196 EXPECT_TRUE(transaction->task_queue_.empty()); |
| 197 EXPECT_TRUE(transaction->preemptive_task_queue_.empty()); | 197 EXPECT_TRUE(transaction->preemptive_task_queue_.empty()); |
| 198 | 198 |
| 199 transaction->ScheduleTask( | 199 transaction->ScheduleTask( |
| 200 blink::kWebIDBTaskTypeNormal, | 200 blink::kWebIDBTaskTypeNormal, |
| 201 base::Bind(&IndexedDBTransactionTest::DummyOperation, | 201 base::BindOnce(&IndexedDBTransactionTest::DummyOperation, |
| 202 base::Unretained(this), leveldb::Status::OK())); | 202 base::Unretained(this), leveldb::Status::OK())); |
| 203 | 203 |
| 204 EXPECT_EQ(1, transaction->diagnostics().tasks_scheduled); | 204 EXPECT_EQ(1, transaction->diagnostics().tasks_scheduled); |
| 205 EXPECT_EQ(0, transaction->diagnostics().tasks_completed); | 205 EXPECT_EQ(0, transaction->diagnostics().tasks_completed); |
| 206 | 206 |
| 207 EXPECT_TRUE(transaction->HasPendingTasks()); | 207 EXPECT_TRUE(transaction->HasPendingTasks()); |
| 208 EXPECT_FALSE(transaction->IsTaskQueueEmpty()); | 208 EXPECT_FALSE(transaction->IsTaskQueueEmpty()); |
| 209 EXPECT_FALSE(transaction->task_queue_.empty()); | 209 EXPECT_FALSE(transaction->task_queue_.empty()); |
| 210 EXPECT_TRUE(transaction->preemptive_task_queue_.empty()); | 210 EXPECT_TRUE(transaction->preemptive_task_queue_.empty()); |
| 211 | 211 |
| 212 // Pump the message loop so that the transaction completes all pending tasks, | 212 // Pump the message loop so that the transaction completes all pending tasks, |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 | 255 |
| 256 EXPECT_FALSE(transaction->HasPendingTasks()); | 256 EXPECT_FALSE(transaction->HasPendingTasks()); |
| 257 EXPECT_TRUE(transaction->IsTaskQueueEmpty()); | 257 EXPECT_TRUE(transaction->IsTaskQueueEmpty()); |
| 258 EXPECT_TRUE(transaction->task_queue_.empty()); | 258 EXPECT_TRUE(transaction->task_queue_.empty()); |
| 259 EXPECT_TRUE(transaction->preemptive_task_queue_.empty()); | 259 EXPECT_TRUE(transaction->preemptive_task_queue_.empty()); |
| 260 | 260 |
| 261 EXPECT_CALL(*factory_, HandleBackingStoreFailure(testing::_)).Times(1); | 261 EXPECT_CALL(*factory_, HandleBackingStoreFailure(testing::_)).Times(1); |
| 262 | 262 |
| 263 transaction->ScheduleTask( | 263 transaction->ScheduleTask( |
| 264 blink::kWebIDBTaskTypeNormal, | 264 blink::kWebIDBTaskTypeNormal, |
| 265 base::Bind(&IndexedDBTransactionTest::DummyOperation, | 265 base::BindOnce(&IndexedDBTransactionTest::DummyOperation, |
| 266 base::Unretained(this), leveldb::Status::IOError("error"))); | 266 base::Unretained(this), |
| 267 leveldb::Status::IOError("error"))); |
| 267 | 268 |
| 268 EXPECT_EQ(1, transaction->diagnostics().tasks_scheduled); | 269 EXPECT_EQ(1, transaction->diagnostics().tasks_scheduled); |
| 269 EXPECT_EQ(0, transaction->diagnostics().tasks_completed); | 270 EXPECT_EQ(0, transaction->diagnostics().tasks_completed); |
| 270 | 271 |
| 271 EXPECT_TRUE(transaction->HasPendingTasks()); | 272 EXPECT_TRUE(transaction->HasPendingTasks()); |
| 272 EXPECT_FALSE(transaction->IsTaskQueueEmpty()); | 273 EXPECT_FALSE(transaction->IsTaskQueueEmpty()); |
| 273 EXPECT_FALSE(transaction->task_queue_.empty()); | 274 EXPECT_FALSE(transaction->task_queue_.empty()); |
| 274 EXPECT_TRUE(transaction->preemptive_task_queue_.empty()); | 275 EXPECT_TRUE(transaction->preemptive_task_queue_.empty()); |
| 275 | 276 |
| 276 // Pump the message loop so that the transaction completes all pending tasks, | 277 // Pump the message loop so that the transaction completes all pending tasks, |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 | 319 |
| 319 db_->TransactionCreated(transaction.get()); | 320 db_->TransactionCreated(transaction.get()); |
| 320 | 321 |
| 321 EXPECT_FALSE(transaction->HasPendingTasks()); | 322 EXPECT_FALSE(transaction->HasPendingTasks()); |
| 322 EXPECT_TRUE(transaction->IsTaskQueueEmpty()); | 323 EXPECT_TRUE(transaction->IsTaskQueueEmpty()); |
| 323 EXPECT_TRUE(transaction->task_queue_.empty()); | 324 EXPECT_TRUE(transaction->task_queue_.empty()); |
| 324 EXPECT_TRUE(transaction->preemptive_task_queue_.empty()); | 325 EXPECT_TRUE(transaction->preemptive_task_queue_.empty()); |
| 325 | 326 |
| 326 transaction->ScheduleTask( | 327 transaction->ScheduleTask( |
| 327 blink::kWebIDBTaskTypePreemptive, | 328 blink::kWebIDBTaskTypePreemptive, |
| 328 base::Bind(&IndexedDBTransactionTest::DummyOperation, | 329 base::BindOnce(&IndexedDBTransactionTest::DummyOperation, |
| 329 base::Unretained(this), leveldb::Status::OK())); | 330 base::Unretained(this), leveldb::Status::OK())); |
| 330 transaction->AddPreemptiveEvent(); | 331 transaction->AddPreemptiveEvent(); |
| 331 | 332 |
| 332 EXPECT_TRUE(transaction->HasPendingTasks()); | 333 EXPECT_TRUE(transaction->HasPendingTasks()); |
| 333 EXPECT_FALSE(transaction->IsTaskQueueEmpty()); | 334 EXPECT_FALSE(transaction->IsTaskQueueEmpty()); |
| 334 EXPECT_TRUE(transaction->task_queue_.empty()); | 335 EXPECT_TRUE(transaction->task_queue_.empty()); |
| 335 EXPECT_FALSE(transaction->preemptive_task_queue_.empty()); | 336 EXPECT_FALSE(transaction->preemptive_task_queue_.empty()); |
| 336 | 337 |
| 337 // Pump the message loop so that the transaction completes all pending tasks, | 338 // Pump the message loop so that the transaction completes all pending tasks, |
| 338 // otherwise it will defer the commit. | 339 // otherwise it will defer the commit. |
| 339 base::RunLoop().RunUntilIdle(); | 340 base::RunLoop().RunUntilIdle(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 366 base::MakeUnique<IndexedDBConnection>( | 367 base::MakeUnique<IndexedDBConnection>( |
| 367 kFakeProcessId, db_, new MockIndexedDBDatabaseCallbacks())); | 368 kFakeProcessId, db_, new MockIndexedDBDatabaseCallbacks())); |
| 368 std::unique_ptr<IndexedDBTransaction> transaction = | 369 std::unique_ptr<IndexedDBTransaction> transaction = |
| 369 std::unique_ptr<IndexedDBTransaction>(new IndexedDBTransaction( | 370 std::unique_ptr<IndexedDBTransaction>(new IndexedDBTransaction( |
| 370 id, connection.get(), scope, GetParam(), | 371 id, connection.get(), scope, GetParam(), |
| 371 new IndexedDBFakeBackingStore::FakeTransaction(commit_failure))); | 372 new IndexedDBFakeBackingStore::FakeTransaction(commit_failure))); |
| 372 db_->TransactionCreated(transaction.get()); | 373 db_->TransactionCreated(transaction.get()); |
| 373 | 374 |
| 374 AbortObserver observer; | 375 AbortObserver observer; |
| 375 transaction->ScheduleTask( | 376 transaction->ScheduleTask( |
| 376 base::Bind(&IndexedDBTransactionTest::AbortableOperation, | 377 base::BindOnce(&IndexedDBTransactionTest::AbortableOperation, |
| 377 base::Unretained(this), | 378 base::Unretained(this), base::Unretained(&observer))); |
| 378 base::Unretained(&observer))); | |
| 379 | 379 |
| 380 // Pump the message loop so that the transaction completes all pending tasks, | 380 // Pump the message loop so that the transaction completes all pending tasks, |
| 381 // otherwise it will defer the commit. | 381 // otherwise it will defer the commit. |
| 382 base::RunLoop().RunUntilIdle(); | 382 base::RunLoop().RunUntilIdle(); |
| 383 | 383 |
| 384 EXPECT_FALSE(observer.abort_task_called()); | 384 EXPECT_FALSE(observer.abort_task_called()); |
| 385 transaction->Commit(); | 385 transaction->Commit(); |
| 386 EXPECT_TRUE(observer.abort_task_called()); | 386 EXPECT_TRUE(observer.abort_task_called()); |
| 387 EXPECT_EQ(IndexedDBTransaction::FINISHED, transaction->state()); | 387 EXPECT_EQ(IndexedDBTransaction::FINISHED, transaction->state()); |
| 388 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); | 388 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 400 id, connection.get(), scope, GetParam(), | 400 id, connection.get(), scope, GetParam(), |
| 401 new IndexedDBFakeBackingStore::FakeTransaction(commit_success))); | 401 new IndexedDBFakeBackingStore::FakeTransaction(commit_success))); |
| 402 db_->TransactionCreated(transaction.get()); | 402 db_->TransactionCreated(transaction.get()); |
| 403 | 403 |
| 404 // No conflicting transactions, so coordinator will start it immediately: | 404 // No conflicting transactions, so coordinator will start it immediately: |
| 405 EXPECT_EQ(IndexedDBTransaction::STARTED, transaction->state()); | 405 EXPECT_EQ(IndexedDBTransaction::STARTED, transaction->state()); |
| 406 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); | 406 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); |
| 407 | 407 |
| 408 transaction->ScheduleTask( | 408 transaction->ScheduleTask( |
| 409 blink::kWebIDBTaskTypePreemptive, | 409 blink::kWebIDBTaskTypePreemptive, |
| 410 base::Bind(&IndexedDBTransactionTest::DummyOperation, | 410 base::BindOnce(&IndexedDBTransactionTest::DummyOperation, |
| 411 base::Unretained(this), leveldb::Status::OK())); | 411 base::Unretained(this), leveldb::Status::OK())); |
| 412 EXPECT_EQ(0, transaction->pending_preemptive_events_); | 412 EXPECT_EQ(0, transaction->pending_preemptive_events_); |
| 413 transaction->AddPreemptiveEvent(); | 413 transaction->AddPreemptiveEvent(); |
| 414 EXPECT_EQ(1, transaction->pending_preemptive_events_); | 414 EXPECT_EQ(1, transaction->pending_preemptive_events_); |
| 415 | 415 |
| 416 RunPostedTasks(); | 416 RunPostedTasks(); |
| 417 | 417 |
| 418 transaction->Abort( | 418 transaction->Abort( |
| 419 IndexedDBDatabaseError(blink::kWebIDBDatabaseExceptionAbortError, | 419 IndexedDBDatabaseError(blink::kWebIDBDatabaseExceptionAbortError, |
| 420 "Transaction aborted by user.")); | 420 "Transaction aborted by user.")); |
| 421 EXPECT_EQ(IndexedDBTransaction::FINISHED, transaction->state()); | 421 EXPECT_EQ(IndexedDBTransaction::FINISHED, transaction->state()); |
| 422 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); | 422 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); |
| 423 EXPECT_EQ(0, transaction->pending_preemptive_events_); | 423 EXPECT_EQ(0, transaction->pending_preemptive_events_); |
| 424 EXPECT_TRUE(transaction->preemptive_task_queue_.empty()); | 424 EXPECT_TRUE(transaction->preemptive_task_queue_.empty()); |
| 425 EXPECT_TRUE(transaction->task_queue_.empty()); | 425 EXPECT_TRUE(transaction->task_queue_.empty()); |
| 426 EXPECT_FALSE(transaction->HasPendingTasks()); | 426 EXPECT_FALSE(transaction->HasPendingTasks()); |
| 427 EXPECT_EQ(transaction->diagnostics().tasks_completed, | 427 EXPECT_EQ(transaction->diagnostics().tasks_completed, |
| 428 transaction->diagnostics().tasks_scheduled); | 428 transaction->diagnostics().tasks_scheduled); |
| 429 EXPECT_FALSE(transaction->should_process_queue_); | 429 EXPECT_FALSE(transaction->should_process_queue_); |
| 430 EXPECT_TRUE(transaction->backing_store_transaction_begun_); | 430 EXPECT_TRUE(transaction->backing_store_transaction_begun_); |
| 431 EXPECT_TRUE(transaction->used_); | 431 EXPECT_TRUE(transaction->used_); |
| 432 EXPECT_FALSE(transaction->commit_pending_); | 432 EXPECT_FALSE(transaction->commit_pending_); |
| 433 | 433 |
| 434 // This task will be ignored. | 434 // This task will be ignored. |
| 435 transaction->ScheduleTask( | 435 transaction->ScheduleTask( |
| 436 base::Bind(&IndexedDBTransactionTest::DummyOperation, | 436 base::BindOnce(&IndexedDBTransactionTest::DummyOperation, |
| 437 base::Unretained(this), leveldb::Status::OK())); | 437 base::Unretained(this), leveldb::Status::OK())); |
| 438 EXPECT_EQ(IndexedDBTransaction::FINISHED, transaction->state()); | 438 EXPECT_EQ(IndexedDBTransaction::FINISHED, transaction->state()); |
| 439 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); | 439 EXPECT_FALSE(transaction->IsTimeoutTimerRunning()); |
| 440 EXPECT_FALSE(transaction->HasPendingTasks()); | 440 EXPECT_FALSE(transaction->HasPendingTasks()); |
| 441 EXPECT_EQ(transaction->diagnostics().tasks_completed, | 441 EXPECT_EQ(transaction->diagnostics().tasks_completed, |
| 442 transaction->diagnostics().tasks_scheduled); | 442 transaction->diagnostics().tasks_scheduled); |
| 443 } | 443 } |
| 444 | 444 |
| 445 TEST_F(IndexedDBTransactionTest, IndexedDBObserver) { | 445 TEST_F(IndexedDBTransactionTest, IndexedDBObserver) { |
| 446 const int64_t id = 0; | 446 const int64_t id = 0; |
| 447 const std::set<int64_t> scope; | 447 const std::set<int64_t> scope; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 494 static const blink::WebIDBTransactionMode kTestModes[] = { | 494 static const blink::WebIDBTransactionMode kTestModes[] = { |
| 495 blink::kWebIDBTransactionModeReadOnly, | 495 blink::kWebIDBTransactionModeReadOnly, |
| 496 blink::kWebIDBTransactionModeReadWrite, | 496 blink::kWebIDBTransactionModeReadWrite, |
| 497 blink::kWebIDBTransactionModeVersionChange}; | 497 blink::kWebIDBTransactionModeVersionChange}; |
| 498 | 498 |
| 499 INSTANTIATE_TEST_CASE_P(IndexedDBTransactions, | 499 INSTANTIATE_TEST_CASE_P(IndexedDBTransactions, |
| 500 IndexedDBTransactionTestMode, | 500 IndexedDBTransactionTestMode, |
| 501 ::testing::ValuesIn(kTestModes)); | 501 ::testing::ValuesIn(kTestModes)); |
| 502 | 502 |
| 503 } // namespace content | 503 } // namespace content |
| OLD | NEW |