Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(833)

Side by Side Diff: webkit/browser/quota/mock_quota_manager_unittest.cc

Issue 214233005: Move mock_quota_manager and friends from webkit/ to content/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: use FORWARD_DECLARE_TEST to fix compile errors Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include <set>
6
7 #include "base/bind.h"
8 #include "base/file_util.h"
9 #include "base/files/scoped_temp_dir.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "base/message_loop/message_loop_proxy.h"
12 #include "base/run_loop.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "webkit/browser/quota/mock_quota_manager.h"
15 #include "webkit/browser/quota/mock_special_storage_policy.h"
16 #include "webkit/browser/quota/mock_storage_client.h"
17
18 namespace quota {
19
20 const char kTestOrigin1[] = "http://host1:1/";
21 const char kTestOrigin2[] = "http://host2:1/";
22 const char kTestOrigin3[] = "http://host3:1/";
23
24 const GURL kOrigin1(kTestOrigin1);
25 const GURL kOrigin2(kTestOrigin2);
26 const GURL kOrigin3(kTestOrigin3);
27
28 const StorageType kTemporary = kStorageTypeTemporary;
29 const StorageType kPersistent = kStorageTypePersistent;
30
31 const QuotaClient::ID kClientFile = QuotaClient::kFileSystem;
32 const QuotaClient::ID kClientDB = QuotaClient::kIndexedDatabase;
33
34 class MockQuotaManagerTest : public testing::Test {
35 public:
36 MockQuotaManagerTest()
37 : deletion_callback_count_(0),
38 weak_factory_(this) {
39 }
40
41 virtual void SetUp() {
42 ASSERT_TRUE(data_dir_.CreateUniqueTempDir());
43 policy_ = new MockSpecialStoragePolicy;
44 manager_ = new MockQuotaManager(false /* is_incognito */,
45 data_dir_.path(),
46 base::MessageLoopProxy::current().get(),
47 base::MessageLoopProxy::current().get(),
48 policy_.get());
49 }
50
51 virtual void TearDown() {
52 // Make sure the quota manager cleans up correctly.
53 manager_ = NULL;
54 base::RunLoop().RunUntilIdle();
55 }
56
57 void GetModifiedOrigins(StorageType type, base::Time since) {
58 manager_->GetOriginsModifiedSince(
59 type, since,
60 base::Bind(&MockQuotaManagerTest::GotModifiedOrigins,
61 weak_factory_.GetWeakPtr()));
62 }
63
64 void GotModifiedOrigins(const std::set<GURL>& origins, StorageType type) {
65 origins_ = origins;
66 type_ = type;
67 }
68
69 void DeleteOriginData(const GURL& origin, StorageType type,
70 int quota_client_mask) {
71 manager_->DeleteOriginData(
72 origin, type, quota_client_mask,
73 base::Bind(&MockQuotaManagerTest::DeletedOriginData,
74 weak_factory_.GetWeakPtr()));
75 }
76
77 void DeletedOriginData(QuotaStatusCode status) {
78 ++deletion_callback_count_;
79 EXPECT_EQ(quota::kQuotaStatusOk, status);
80 }
81
82 int deletion_callback_count() const {
83 return deletion_callback_count_;
84 }
85
86 MockQuotaManager* manager() const {
87 return manager_.get();
88 }
89
90 const std::set<GURL>& origins() const {
91 return origins_;
92 }
93
94 const StorageType& type() const {
95 return type_;
96 }
97
98 private:
99 base::MessageLoop message_loop_;
100 base::ScopedTempDir data_dir_;
101 scoped_refptr<MockQuotaManager> manager_;
102 scoped_refptr<MockSpecialStoragePolicy> policy_;
103
104 int deletion_callback_count_;
105
106 std::set<GURL> origins_;
107 StorageType type_;
108
109 base::WeakPtrFactory<MockQuotaManagerTest> weak_factory_;
110
111 DISALLOW_COPY_AND_ASSIGN(MockQuotaManagerTest);
112 };
113
114 TEST_F(MockQuotaManagerTest, BasicOriginManipulation) {
115 EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kTemporary, kClientFile));
116 EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kTemporary, kClientDB));
117 EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kPersistent, kClientFile));
118 EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kPersistent, kClientDB));
119 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientFile));
120 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientDB));
121 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientFile));
122 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientDB));
123
124 manager()->AddOrigin(kOrigin1, kTemporary, kClientFile, base::Time::Now());
125 EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kTemporary, kClientFile));
126 EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kTemporary, kClientDB));
127 EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kPersistent, kClientFile));
128 EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kPersistent, kClientDB));
129 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientFile));
130 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientDB));
131 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientFile));
132 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientDB));
133
134 manager()->AddOrigin(kOrigin1, kPersistent, kClientFile, base::Time::Now());
135 EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kTemporary, kClientFile));
136 EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kTemporary, kClientDB));
137 EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kPersistent, kClientFile));
138 EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kPersistent, kClientDB));
139 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientFile));
140 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientDB));
141 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientFile));
142 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientDB));
143
144 manager()->AddOrigin(kOrigin2, kTemporary, kClientFile | kClientDB,
145 base::Time::Now());
146 EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kTemporary, kClientFile));
147 EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kTemporary, kClientDB));
148 EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kPersistent, kClientFile));
149 EXPECT_FALSE(manager()->OriginHasData(kOrigin1, kPersistent, kClientDB));
150 EXPECT_TRUE(manager()->OriginHasData(kOrigin2, kTemporary, kClientFile));
151 EXPECT_TRUE(manager()->OriginHasData(kOrigin2, kTemporary, kClientDB));
152 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientFile));
153 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kPersistent, kClientDB));
154 }
155
156 TEST_F(MockQuotaManagerTest, OriginDeletion) {
157 manager()->AddOrigin(kOrigin1, kTemporary, kClientFile, base::Time::Now());
158 manager()->AddOrigin(kOrigin2, kTemporary, kClientFile | kClientDB,
159 base::Time::Now());
160 manager()->AddOrigin(kOrigin3, kTemporary, kClientFile | kClientDB,
161 base::Time::Now());
162
163 DeleteOriginData(kOrigin2, kTemporary, kClientFile);
164 base::RunLoop().RunUntilIdle();
165
166 EXPECT_EQ(1, deletion_callback_count());
167 EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kTemporary, kClientFile));
168 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientFile));
169 EXPECT_TRUE(manager()->OriginHasData(kOrigin2, kTemporary, kClientDB));
170 EXPECT_TRUE(manager()->OriginHasData(kOrigin3, kTemporary, kClientFile));
171 EXPECT_TRUE(manager()->OriginHasData(kOrigin3, kTemporary, kClientDB));
172
173 DeleteOriginData(kOrigin3, kTemporary, kClientFile | kClientDB);
174 base::RunLoop().RunUntilIdle();
175
176 EXPECT_EQ(2, deletion_callback_count());
177 EXPECT_TRUE(manager()->OriginHasData(kOrigin1, kTemporary, kClientFile));
178 EXPECT_FALSE(manager()->OriginHasData(kOrigin2, kTemporary, kClientFile));
179 EXPECT_TRUE(manager()->OriginHasData(kOrigin2, kTemporary, kClientDB));
180 EXPECT_FALSE(manager()->OriginHasData(kOrigin3, kTemporary, kClientFile));
181 EXPECT_FALSE(manager()->OriginHasData(kOrigin3, kTemporary, kClientDB));
182 }
183
184 TEST_F(MockQuotaManagerTest, ModifiedOrigins) {
185 base::Time now = base::Time::Now();
186 base::Time then = base::Time();
187 base::TimeDelta an_hour = base::TimeDelta::FromMilliseconds(3600000);
188 base::TimeDelta a_minute = base::TimeDelta::FromMilliseconds(60000);
189
190 GetModifiedOrigins(kTemporary, then);
191 base::RunLoop().RunUntilIdle();
192 EXPECT_TRUE(origins().empty());
193
194 manager()->AddOrigin(kOrigin1, kTemporary, kClientFile, now - an_hour);
195
196 GetModifiedOrigins(kTemporary, then);
197 base::RunLoop().RunUntilIdle();
198
199 EXPECT_EQ(kTemporary, type());
200 EXPECT_EQ(1UL, origins().size());
201 EXPECT_EQ(1UL, origins().count(kOrigin1));
202 EXPECT_EQ(0UL, origins().count(kOrigin2));
203
204 manager()->AddOrigin(kOrigin2, kTemporary, kClientFile, now);
205
206 GetModifiedOrigins(kTemporary, then);
207 base::RunLoop().RunUntilIdle();
208
209 EXPECT_EQ(kTemporary, type());
210 EXPECT_EQ(2UL, origins().size());
211 EXPECT_EQ(1UL, origins().count(kOrigin1));
212 EXPECT_EQ(1UL, origins().count(kOrigin2));
213
214 GetModifiedOrigins(kTemporary, now - a_minute);
215 base::RunLoop().RunUntilIdle();
216
217 EXPECT_EQ(kTemporary, type());
218 EXPECT_EQ(1UL, origins().size());
219 EXPECT_EQ(0UL, origins().count(kOrigin1));
220 EXPECT_EQ(1UL, origins().count(kOrigin2));
221 }
222 } // Namespace quota
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698