1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
// Copyright (c) 2010 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/file_util.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/browsing_data_database_helper.h"
#include "chrome/browser/browser_thread.h"
#include "chrome/test/in_process_browser_test.h"
#include "chrome/test/testing_profile.h"
#include "chrome/test/ui_test_utils.h"
static const char kTestIdentifier1[] = "http_www.google.com_0";
static const char kTestIdentifierExtension[] =
"chrome-extension_behllobkkfkfnphdnhnkndlbkcpglgmj_0";
class BrowsingDataDatabaseHelperTest : public InProcessBrowserTest {
public:
virtual void CreateDatabases() {
webkit_database::DatabaseTracker* db_tracker =
testing_profile_.GetDatabaseTracker();
string16 db_name = ASCIIToUTF16("db");
string16 description = ASCIIToUTF16("db_description");
int64 size;
int64 available;
string16 identifier1(UTF8ToUTF16(kTestIdentifier1));
db_tracker->DatabaseOpened(identifier1, db_name, description, 1, &size,
&available);
db_tracker->DatabaseClosed(identifier1, db_name);
FilePath db_path1 = db_tracker->GetFullDBFilePath(identifier1, db_name);
file_util::CreateDirectory(db_path1.DirName());
ASSERT_EQ(0, file_util::WriteFile(db_path1, NULL, 0));
string16 identifierExtension(UTF8ToUTF16(kTestIdentifierExtension));
db_tracker->DatabaseOpened(identifierExtension, db_name, description, 1,
&size, &available);
db_tracker->DatabaseClosed(identifierExtension, db_name);
FilePath db_path2 =
db_tracker->GetFullDBFilePath(identifierExtension, db_name);
file_util::CreateDirectory(db_path2.DirName());
ASSERT_EQ(0, file_util::WriteFile(db_path2, NULL, 0));
std::vector<webkit_database::OriginInfo> origins;
db_tracker->GetAllOriginsInfo(&origins);
ASSERT_EQ(2U, origins.size());
}
protected:
TestingProfile testing_profile_;
};
// Called back by BrowsingDataDatabaseHelper on the UI thread once the database
// information has been retrieved.
class StopTestOnCallback {
public:
explicit StopTestOnCallback(
BrowsingDataDatabaseHelper* database_helper)
: database_helper_(database_helper) {
DCHECK(database_helper_);
}
void Callback(const std::vector<BrowsingDataDatabaseHelper::DatabaseInfo>&
database_info_list) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
ASSERT_EQ(1UL, database_info_list.size());
EXPECT_EQ(std::string(kTestIdentifier1),
database_info_list.at(0).origin_identifier);
MessageLoop::current()->Quit();
}
private:
BrowsingDataDatabaseHelper* database_helper_;
};
IN_PROC_BROWSER_TEST_F(BrowsingDataDatabaseHelperTest, FetchData) {
CreateDatabases();
scoped_refptr<BrowsingDataDatabaseHelper> database_helper(
new BrowsingDataDatabaseHelper(&testing_profile_));
StopTestOnCallback stop_test_on_callback(database_helper);
database_helper->StartFetching(
NewCallback(&stop_test_on_callback, &StopTestOnCallback::Callback));
// Blocks until StopTestOnCallback::Callback is notified.
ui_test_utils::RunMessageLoop();
}
|