| 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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
| 6 #include "base/values.h" | 6 #include "base/values.h" |
| 7 #include "content/child/indexed_db/indexed_db_dispatcher.h" | 7 #include "content/child/indexed_db/indexed_db_dispatcher.h" |
| 8 #include "content/child/indexed_db/indexed_db_key_builders.h" | 8 #include "content/child/indexed_db/indexed_db_key_builders.h" |
| 9 #include "content/child/indexed_db/webidbcursor_impl.h" | 9 #include "content/child/indexed_db/webidbcursor_impl.h" |
| 10 #include "content/child/thread_safe_sender.h" | 10 #include "content/child/thread_safe_sender.h" |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 WebIDBKey null_key_; | 131 WebIDBKey null_key_; |
| 132 scoped_refptr<ThreadSafeSender> thread_safe_sender_; | 132 scoped_refptr<ThreadSafeSender> thread_safe_sender_; |
| 133 scoped_ptr<MockDispatcher> dispatcher_; | 133 scoped_ptr<MockDispatcher> dispatcher_; |
| 134 | 134 |
| 135 private: | 135 private: |
| 136 scoped_refptr<IPC::SyncMessageFilter> sync_message_filter_; | 136 scoped_refptr<IPC::SyncMessageFilter> sync_message_filter_; |
| 137 | 137 |
| 138 DISALLOW_COPY_AND_ASSIGN(WebIDBCursorImplTest); | 138 DISALLOW_COPY_AND_ASSIGN(WebIDBCursorImplTest); |
| 139 }; | 139 }; |
| 140 | 140 |
| 141 // Fails under Linux ASAN: crbug.com/389647 | 141 TEST_F(WebIDBCursorImplTest, PrefetchTest) { |
| 142 #if defined(OS_LINUX) | |
| 143 #define MAYBE_PrefetchTest DISABLED_PrefetchTest | |
| 144 #else | |
| 145 #define MAYBE_PrefetchTest PrefetchTest | |
| 146 #endif | |
| 147 TEST_F(WebIDBCursorImplTest, MAYBE_PrefetchTest) { | |
| 148 const int64 transaction_id = 1; | 142 const int64 transaction_id = 1; |
| 149 { | 143 { |
| 150 WebIDBCursorImpl cursor(WebIDBCursorImpl::kInvalidCursorId, | 144 WebIDBCursorImpl cursor(WebIDBCursorImpl::kInvalidCursorId, |
| 151 transaction_id, | 145 transaction_id, |
| 152 thread_safe_sender_.get()); | 146 thread_safe_sender_.get()); |
| 153 | 147 |
| 154 // Call continue() until prefetching should kick in. | 148 // Call continue() until prefetching should kick in. |
| 155 int continue_calls = 0; | 149 int continue_calls = 0; |
| 156 EXPECT_EQ(dispatcher_->continue_calls(), 0); | 150 EXPECT_EQ(dispatcher_->continue_calls(), 0); |
| 157 for (int i = 0; i < WebIDBCursorImpl::kPrefetchContinueThreshold; ++i) { | 151 for (int i = 0; i < WebIDBCursorImpl::kPrefetchContinueThreshold; ++i) { |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 EXPECT_EQ(expected_key, static_cast<int>(web_blob_info.size())); | 201 EXPECT_EQ(expected_key, static_cast<int>(web_blob_info.size())); |
| 208 EXPECT_EQ(expected_key++, key.number()); | 202 EXPECT_EQ(expected_key++, key.number()); |
| 209 } | 203 } |
| 210 } | 204 } |
| 211 } | 205 } |
| 212 | 206 |
| 213 EXPECT_EQ(dispatcher_->destroyed_cursor_id(), | 207 EXPECT_EQ(dispatcher_->destroyed_cursor_id(), |
| 214 WebIDBCursorImpl::kInvalidCursorId); | 208 WebIDBCursorImpl::kInvalidCursorId); |
| 215 } | 209 } |
| 216 | 210 |
| 217 // Fails under Linux ASAN: crbug.com/389647 | 211 TEST_F(WebIDBCursorImplTest, AdvancePrefetchTest) { |
| 218 #if defined(OS_LINUX) | |
| 219 #define MAYBE_AdvancePrefetchTest DISABLED_AdvancePrefetchTest | |
| 220 #else | |
| 221 #define MAYBE_AdvancePrefetchTest AdvancePrefetchTest | |
| 222 #endif | |
| 223 TEST_F(WebIDBCursorImplTest, MAYBE_AdvancePrefetchTest) { | |
| 224 const int64 transaction_id = 1; | 212 const int64 transaction_id = 1; |
| 225 WebIDBCursorImpl cursor(WebIDBCursorImpl::kInvalidCursorId, | 213 WebIDBCursorImpl cursor(WebIDBCursorImpl::kInvalidCursorId, |
| 226 transaction_id, | 214 transaction_id, |
| 227 thread_safe_sender_.get()); | 215 thread_safe_sender_.get()); |
| 228 | 216 |
| 229 // Call continue() until prefetching should kick in. | 217 // Call continue() until prefetching should kick in. |
| 230 EXPECT_EQ(0, dispatcher_->continue_calls()); | 218 EXPECT_EQ(0, dispatcher_->continue_calls()); |
| 231 for (int i = 0; i < WebIDBCursorImpl::kPrefetchContinueThreshold; ++i) { | 219 for (int i = 0; i < WebIDBCursorImpl::kPrefetchContinueThreshold; ++i) { |
| 232 cursor.continueFunction(null_key_, new MockContinueCallbacks()); | 220 cursor.continueFunction(null_key_, new MockContinueCallbacks()); |
| 233 } | 221 } |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 // The real dispatcher would call cursor->CachedContinue(), so do that: | 320 // The real dispatcher would call cursor->CachedContinue(), so do that: |
| 333 scoped_ptr<WebIDBCallbacks> callbacks(new MockContinueCallbacks()); | 321 scoped_ptr<WebIDBCallbacks> callbacks(new MockContinueCallbacks()); |
| 334 cursor.CachedContinue(callbacks.get()); | 322 cursor.CachedContinue(callbacks.get()); |
| 335 | 323 |
| 336 // Now the cursor should have reset the rest of the cache. | 324 // Now the cursor should have reset the rest of the cache. |
| 337 EXPECT_EQ(1, dispatcher_->reset_calls()); | 325 EXPECT_EQ(1, dispatcher_->reset_calls()); |
| 338 EXPECT_EQ(1, dispatcher_->last_used_count()); | 326 EXPECT_EQ(1, dispatcher_->last_used_count()); |
| 339 } | 327 } |
| 340 | 328 |
| 341 } // namespace content | 329 } // namespace content |
| OLD | NEW |