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 |