1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "chrome/browser/browsing_data/browsing_data_indexed_db_helper.h"
6
7#include "base/message_loop/message_loop_proxy.h"
8#include "base/strings/utf_string_conversions.h"
9#include "chrome/test/base/testing_profile.h"
10#include "content/public/browser/browser_context.h"
11#include "content/public/browser/storage_partition.h"
12#include "content/public/test/test_browser_thread_bundle.h"
13#include "testing/gtest/include/gtest/gtest.h"
14
15namespace {
16
17class CannedBrowsingDataIndexedDBHelperTest : public testing::Test {
18 public:
19  virtual void SetUp() OVERRIDE {
20    IndexedDBContext()->SetTaskRunnerForTesting(
21        base::MessageLoopProxy::current().get());
22  }
23
24  content::IndexedDBContext* IndexedDBContext() {
25    return content::BrowserContext::GetDefaultStoragePartition(&profile_)->
26        GetIndexedDBContext();
27  }
28
29 private:
30  content::TestBrowserThreadBundle thread_bundle_;
31  TestingProfile profile_;
32};
33
34TEST_F(CannedBrowsingDataIndexedDBHelperTest, Empty) {
35  const GURL origin("http://host1:1/");
36  const base::string16 description(base::ASCIIToUTF16("description"));
37
38  scoped_refptr<CannedBrowsingDataIndexedDBHelper> helper(
39      new CannedBrowsingDataIndexedDBHelper(IndexedDBContext()));
40
41  ASSERT_TRUE(helper->empty());
42  helper->AddIndexedDB(origin, description);
43  ASSERT_FALSE(helper->empty());
44  helper->Reset();
45  ASSERT_TRUE(helper->empty());
46}
47
48TEST_F(CannedBrowsingDataIndexedDBHelperTest, Delete) {
49  const GURL origin1("http://host1:9000");
50  const base::string16 db1(base::ASCIIToUTF16("db1"));
51
52  const GURL origin2("http://example.com");
53  const base::string16 db2(base::ASCIIToUTF16("db2"));
54  const base::string16 db3(base::ASCIIToUTF16("db3"));
55
56  scoped_refptr<CannedBrowsingDataIndexedDBHelper> helper(
57      new CannedBrowsingDataIndexedDBHelper(IndexedDBContext()));
58
59  EXPECT_TRUE(helper->empty());
60  helper->AddIndexedDB(origin1, db1);
61  helper->AddIndexedDB(origin2, db2);
62  helper->AddIndexedDB(origin2, db3);
63  EXPECT_EQ(3u, helper->GetIndexedDBCount());
64  helper->DeleteIndexedDB(origin2);
65  EXPECT_EQ(1u, helper->GetIndexedDBCount());
66}
67
68TEST_F(CannedBrowsingDataIndexedDBHelperTest, IgnoreExtensionsAndDevTools) {
69  const GURL origin1("chrome-extension://abcdefghijklmnopqrstuvwxyz/");
70  const GURL origin2("chrome-devtools://abcdefghijklmnopqrstuvwxyz/");
71  const base::string16 description(base::ASCIIToUTF16("description"));
72
73  scoped_refptr<CannedBrowsingDataIndexedDBHelper> helper(
74      new CannedBrowsingDataIndexedDBHelper(IndexedDBContext()));
75
76  ASSERT_TRUE(helper->empty());
77  helper->AddIndexedDB(origin1, description);
78  ASSERT_TRUE(helper->empty());
79  helper->AddIndexedDB(origin2, description);
80  ASSERT_TRUE(helper->empty());
81}
82
83}  // namespace
84