| Index: content/common_child/indexed_db/proxy_webidbcursor_impl_unittest.cc
|
| diff --git a/content/common_child/indexed_db/proxy_webidbcursor_impl_unittest.cc b/content/common_child/indexed_db/proxy_webidbcursor_impl_unittest.cc
|
| deleted file mode 100644
|
| index 0fb09426d6dfd98f89af3d736b440a8e0d4d7a08..0000000000000000000000000000000000000000
|
| --- a/content/common_child/indexed_db/proxy_webidbcursor_impl_unittest.cc
|
| +++ /dev/null
|
| @@ -1,151 +0,0 @@
|
| -// Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/values.h"
|
| -#include "content/common/indexed_db/indexed_db_key.h"
|
| -#include "content/common_child/indexed_db/indexed_db_dispatcher.h"
|
| -#include "content/common_child/indexed_db/proxy_webidbcursor_impl.h"
|
| -#include "testing/gtest/include/gtest/gtest.h"
|
| -#include "third_party/WebKit/public/platform/WebData.h"
|
| -#include "third_party/WebKit/public/platform/WebIDBCallbacks.h"
|
| -
|
| -using WebKit::WebData;
|
| -using WebKit::WebIDBCallbacks;
|
| -using WebKit::WebIDBDatabase;
|
| -using WebKit::WebIDBDatabaseError;
|
| -using WebKit::WebIDBKey;
|
| -
|
| -namespace content {
|
| -
|
| -namespace {
|
| -
|
| -class MockDispatcher : public IndexedDBDispatcher {
|
| - public:
|
| - MockDispatcher()
|
| - : prefetch_calls_(0),
|
| - last_prefetch_count_(0),
|
| - continue_calls_(0),
|
| - destroyed_cursor_id_(0) {}
|
| -
|
| - virtual void RequestIDBCursorPrefetch(int n,
|
| - WebIDBCallbacks* callbacks,
|
| - int32 ipc_cursor_id) OVERRIDE {
|
| - ++prefetch_calls_;
|
| - last_prefetch_count_ = n;
|
| - callbacks_.reset(callbacks);
|
| - }
|
| -
|
| - virtual void RequestIDBCursorContinue(const IndexedDBKey&,
|
| - WebIDBCallbacks* callbacks,
|
| - int32 ipc_cursor_id) OVERRIDE {
|
| - ++continue_calls_;
|
| - callbacks_.reset(callbacks);
|
| - }
|
| -
|
| - virtual void CursorDestroyed(int32 ipc_cursor_id) OVERRIDE {
|
| - destroyed_cursor_id_ = ipc_cursor_id;
|
| - }
|
| -
|
| - int prefetch_calls() { return prefetch_calls_; }
|
| - int continue_calls() { return continue_calls_; }
|
| - int last_prefetch_count() { return last_prefetch_count_; }
|
| - int32 destroyed_cursor_id() { return destroyed_cursor_id_; }
|
| -
|
| - private:
|
| - int prefetch_calls_;
|
| - int last_prefetch_count_;
|
| - int continue_calls_;
|
| - int32 destroyed_cursor_id_;
|
| - scoped_ptr<WebIDBCallbacks> callbacks_;
|
| -};
|
| -
|
| -class MockContinueCallbacks : public WebIDBCallbacks {
|
| - public:
|
| - MockContinueCallbacks(IndexedDBKey* key = 0) : key_(key) {}
|
| -
|
| - virtual void onSuccess(const WebIDBKey& key,
|
| - const WebIDBKey& primaryKey,
|
| - const WebData& value) {
|
| -
|
| - if (key_)
|
| - *key_ = IndexedDBKey(key);
|
| - }
|
| -
|
| - private:
|
| - IndexedDBKey* key_;
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -TEST(RendererWebIDBCursorImplTest, PrefetchTest) {
|
| -
|
| - WebIDBKey null_key;
|
| - null_key.assignNull();
|
| -
|
| - MockDispatcher dispatcher;
|
| -
|
| - {
|
| - RendererWebIDBCursorImpl cursor(RendererWebIDBCursorImpl::kInvalidCursorId);
|
| -
|
| - // Call continue() until prefetching should kick in.
|
| - int continue_calls = 0;
|
| - EXPECT_EQ(dispatcher.continue_calls(), 0);
|
| - for (int i = 0; i < RendererWebIDBCursorImpl::kPrefetchContinueThreshold;
|
| - ++i) {
|
| - cursor.continueFunction(null_key, new MockContinueCallbacks());
|
| - EXPECT_EQ(++continue_calls, dispatcher.continue_calls());
|
| - EXPECT_EQ(0, dispatcher.prefetch_calls());
|
| - }
|
| -
|
| - // Do enough repetitions to verify that the count grows each time,
|
| - // but not so many that the maximum limit is hit.
|
| - const int kPrefetchRepetitions = 5;
|
| -
|
| - int expected_key = 0;
|
| - int last_prefetch_count = 0;
|
| - for (int repetitions = 0; repetitions < kPrefetchRepetitions;
|
| - ++repetitions) {
|
| -
|
| - // Initiate the prefetch
|
| - cursor.continueFunction(null_key, new MockContinueCallbacks());
|
| - EXPECT_EQ(continue_calls, dispatcher.continue_calls());
|
| - EXPECT_EQ(repetitions + 1, dispatcher.prefetch_calls());
|
| -
|
| - // Verify that the requested count has increased since last time.
|
| - int prefetch_count = dispatcher.last_prefetch_count();
|
| - EXPECT_GT(prefetch_count, last_prefetch_count);
|
| - last_prefetch_count = prefetch_count;
|
| -
|
| - // Fill the prefetch cache as requested.
|
| - std::vector<IndexedDBKey> keys;
|
| - std::vector<IndexedDBKey> primary_keys(prefetch_count);
|
| - std::vector<WebData> values(prefetch_count);
|
| - for (int i = 0; i < prefetch_count; ++i) {
|
| - keys.push_back(IndexedDBKey(expected_key + i, WebIDBKey::NumberType));
|
| - }
|
| - cursor.SetPrefetchData(keys, primary_keys, values);
|
| -
|
| - // Note that the real dispatcher would call cursor->CachedContinue()
|
| - // immediately after cursor->SetPrefetchData() to service the request
|
| - // that initiated the prefetch.
|
| -
|
| - // Verify that the cache is used for subsequent continue() calls.
|
| - for (int i = 0; i < prefetch_count; ++i) {
|
| - IndexedDBKey key;
|
| - cursor.continueFunction(null_key, new MockContinueCallbacks(&key));
|
| - EXPECT_EQ(continue_calls, dispatcher.continue_calls());
|
| - EXPECT_EQ(repetitions + 1, dispatcher.prefetch_calls());
|
| -
|
| - EXPECT_EQ(WebIDBKey::NumberType, key.type());
|
| - EXPECT_EQ(expected_key++, key.number());
|
| - }
|
| - }
|
| - }
|
| -
|
| - EXPECT_EQ(dispatcher.destroyed_cursor_id(),
|
| - RendererWebIDBCursorImpl::kInvalidCursorId);
|
| -}
|
| -
|
| -} // namespace content
|
|
|