OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <map> | 5 #include <map> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/message_loop/message_loop_proxy.h" | 9 #include "base/message_loop/message_loop_proxy.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
12 #include "net/base/completion_callback.h" | 12 #include "net/base/completion_callback.h" |
13 #include "net/base/net_errors.h" | 13 #include "net/base/net_errors.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
15 #include "webkit/browser/database/database_quota_client.h" | 15 #include "webkit/browser/database/database_quota_client.h" |
16 #include "webkit/browser/database/database_tracker.h" | 16 #include "webkit/browser/database/database_tracker.h" |
17 #include "webkit/browser/database/database_util.h" | 17 #include "webkit/browser/database/database_util.h" |
18 #include "webkit/common/database/database_identifier.h" | 18 #include "webkit/common/database/database_identifier.h" |
19 | 19 |
20 using webkit_database::DatabaseQuotaClient; | 20 using storage::DatabaseQuotaClient; |
21 using webkit_database::DatabaseTracker; | 21 using storage::DatabaseTracker; |
22 using webkit_database::OriginInfo; | 22 using storage::OriginInfo; |
23 | 23 |
24 namespace content { | 24 namespace content { |
25 | 25 |
26 // Declared to shorten the line lengths. | 26 // Declared to shorten the line lengths. |
27 static const quota::StorageType kTemp = quota::kStorageTypeTemporary; | 27 static const storage::StorageType kTemp = storage::kStorageTypeTemporary; |
28 static const quota::StorageType kPerm = quota::kStorageTypePersistent; | 28 static const storage::StorageType kPerm = storage::kStorageTypePersistent; |
29 | 29 |
30 // Mock tracker class the mocks up those methods of the tracker | 30 // Mock tracker class the mocks up those methods of the tracker |
31 // that are used by the QuotaClient. | 31 // that are used by the QuotaClient. |
32 class MockDatabaseTracker : public DatabaseTracker { | 32 class MockDatabaseTracker : public DatabaseTracker { |
33 public: | 33 public: |
34 MockDatabaseTracker() | 34 MockDatabaseTracker() |
35 : DatabaseTracker(base::FilePath(), false, NULL, NULL, NULL), | 35 : DatabaseTracker(base::FilePath(), false, NULL, NULL, NULL), |
36 delete_called_count_(0), | 36 delete_called_count_(0), |
37 async_delete_(false) {} | 37 async_delete_(false) {} |
38 | 38 |
39 virtual bool GetOriginInfo( | 39 virtual bool GetOriginInfo( |
40 const std::string& origin_identifier, | 40 const std::string& origin_identifier, |
41 OriginInfo* info) OVERRIDE { | 41 OriginInfo* info) OVERRIDE { |
42 std::map<GURL, MockOriginInfo>::const_iterator found = | 42 std::map<GURL, MockOriginInfo>::const_iterator found = |
43 mock_origin_infos_.find( | 43 mock_origin_infos_.find( |
44 webkit_database::GetOriginFromIdentifier(origin_identifier)); | 44 storage::GetOriginFromIdentifier(origin_identifier)); |
45 if (found == mock_origin_infos_.end()) | 45 if (found == mock_origin_infos_.end()) |
46 return false; | 46 return false; |
47 *info = OriginInfo(found->second); | 47 *info = OriginInfo(found->second); |
48 return true; | 48 return true; |
49 } | 49 } |
50 | 50 |
51 virtual bool GetAllOriginIdentifiers( | 51 virtual bool GetAllOriginIdentifiers( |
52 std::vector<std::string>* origins_identifiers) OVERRIDE { | 52 std::vector<std::string>* origins_identifiers) OVERRIDE { |
53 std::map<GURL, MockOriginInfo>::const_iterator iter; | 53 std::map<GURL, MockOriginInfo>::const_iterator iter; |
54 for (iter = mock_origin_infos_.begin(); | 54 for (iter = mock_origin_infos_.begin(); |
(...skipping 28 matching lines...) Expand all Loading... |
83 } | 83 } |
84 return net::OK; | 84 return net::OK; |
85 } | 85 } |
86 | 86 |
87 void AsyncDeleteDataForOrigin(const net::CompletionCallback& callback) { | 87 void AsyncDeleteDataForOrigin(const net::CompletionCallback& callback) { |
88 callback.Run(net::OK); | 88 callback.Run(net::OK); |
89 } | 89 } |
90 | 90 |
91 void AddMockDatabase(const GURL& origin, const char* name, int size) { | 91 void AddMockDatabase(const GURL& origin, const char* name, int size) { |
92 MockOriginInfo& info = mock_origin_infos_[origin]; | 92 MockOriginInfo& info = mock_origin_infos_[origin]; |
93 info.set_origin(webkit_database::GetIdentifierFromOrigin(origin)); | 93 info.set_origin(storage::GetIdentifierFromOrigin(origin)); |
94 info.AddMockDatabase(base::ASCIIToUTF16(name), size); | 94 info.AddMockDatabase(base::ASCIIToUTF16(name), size); |
95 } | 95 } |
96 | 96 |
97 int delete_called_count() { return delete_called_count_; } | 97 int delete_called_count() { return delete_called_count_; } |
98 bool async_delete() { return async_delete_; } | 98 bool async_delete() { return async_delete_; } |
99 void set_async_delete(bool async) { async_delete_ = async; } | 99 void set_async_delete(bool async) { async_delete_ = async; } |
100 | 100 |
101 protected: | 101 protected: |
102 virtual ~MockDatabaseTracker() {} | 102 virtual ~MockDatabaseTracker() {} |
103 | 103 |
(...skipping 26 matching lines...) Expand all Loading... |
130 | 130 |
131 DatabaseQuotaClientTest() | 131 DatabaseQuotaClientTest() |
132 : kOriginA("http://host"), | 132 : kOriginA("http://host"), |
133 kOriginB("http://host:8000"), | 133 kOriginB("http://host:8000"), |
134 kOriginOther("http://other"), | 134 kOriginOther("http://other"), |
135 usage_(0), | 135 usage_(0), |
136 mock_tracker_(new MockDatabaseTracker), | 136 mock_tracker_(new MockDatabaseTracker), |
137 weak_factory_(this) { | 137 weak_factory_(this) { |
138 } | 138 } |
139 | 139 |
140 int64 GetOriginUsage( | 140 int64 GetOriginUsage(storage::QuotaClient* client, |
141 quota::QuotaClient* client, | 141 const GURL& origin, |
142 const GURL& origin, | 142 storage::StorageType type) { |
143 quota::StorageType type) { | |
144 usage_ = 0; | 143 usage_ = 0; |
145 client->GetOriginUsage( | 144 client->GetOriginUsage( |
146 origin, type, | 145 origin, type, |
147 base::Bind(&DatabaseQuotaClientTest::OnGetOriginUsageComplete, | 146 base::Bind(&DatabaseQuotaClientTest::OnGetOriginUsageComplete, |
148 weak_factory_.GetWeakPtr())); | 147 weak_factory_.GetWeakPtr())); |
149 base::RunLoop().RunUntilIdle(); | 148 base::RunLoop().RunUntilIdle(); |
150 return usage_; | 149 return usage_; |
151 } | 150 } |
152 | 151 |
153 const std::set<GURL>& GetOriginsForType( | 152 const std::set<GURL>& GetOriginsForType(storage::QuotaClient* client, |
154 quota::QuotaClient* client, | 153 storage::StorageType type) { |
155 quota::StorageType type) { | |
156 origins_.clear(); | 154 origins_.clear(); |
157 client->GetOriginsForType( | 155 client->GetOriginsForType( |
158 type, | 156 type, |
159 base::Bind(&DatabaseQuotaClientTest::OnGetOriginsComplete, | 157 base::Bind(&DatabaseQuotaClientTest::OnGetOriginsComplete, |
160 weak_factory_.GetWeakPtr())); | 158 weak_factory_.GetWeakPtr())); |
161 base::RunLoop().RunUntilIdle(); | 159 base::RunLoop().RunUntilIdle(); |
162 return origins_; | 160 return origins_; |
163 } | 161 } |
164 | 162 |
165 const std::set<GURL>& GetOriginsForHost( | 163 const std::set<GURL>& GetOriginsForHost(storage::QuotaClient* client, |
166 quota::QuotaClient* client, | 164 storage::StorageType type, |
167 quota::StorageType type, | 165 const std::string& host) { |
168 const std::string& host) { | |
169 origins_.clear(); | 166 origins_.clear(); |
170 client->GetOriginsForHost( | 167 client->GetOriginsForHost( |
171 type, host, | 168 type, host, |
172 base::Bind(&DatabaseQuotaClientTest::OnGetOriginsComplete, | 169 base::Bind(&DatabaseQuotaClientTest::OnGetOriginsComplete, |
173 weak_factory_.GetWeakPtr())); | 170 weak_factory_.GetWeakPtr())); |
174 base::RunLoop().RunUntilIdle(); | 171 base::RunLoop().RunUntilIdle(); |
175 return origins_; | 172 return origins_; |
176 } | 173 } |
177 | 174 |
178 bool DeleteOriginData( | 175 bool DeleteOriginData(storage::QuotaClient* client, |
179 quota::QuotaClient* client, | 176 storage::StorageType type, |
180 quota::StorageType type, | 177 const GURL& origin) { |
181 const GURL& origin) { | 178 delete_status_ = storage::kQuotaStatusUnknown; |
182 delete_status_ = quota::kQuotaStatusUnknown; | |
183 client->DeleteOriginData( | 179 client->DeleteOriginData( |
184 origin, type, | 180 origin, type, |
185 base::Bind(&DatabaseQuotaClientTest::OnDeleteOriginDataComplete, | 181 base::Bind(&DatabaseQuotaClientTest::OnDeleteOriginDataComplete, |
186 weak_factory_.GetWeakPtr())); | 182 weak_factory_.GetWeakPtr())); |
187 base::RunLoop().RunUntilIdle(); | 183 base::RunLoop().RunUntilIdle(); |
188 return delete_status_ == quota::kQuotaStatusOk; | 184 return delete_status_ == storage::kQuotaStatusOk; |
189 } | 185 } |
190 | 186 |
191 MockDatabaseTracker* mock_tracker() { return mock_tracker_.get(); } | 187 MockDatabaseTracker* mock_tracker() { return mock_tracker_.get(); } |
192 | 188 |
193 | 189 |
194 private: | 190 private: |
195 void OnGetOriginUsageComplete(int64 usage) { | 191 void OnGetOriginUsageComplete(int64 usage) { |
196 usage_ = usage; | 192 usage_ = usage; |
197 } | 193 } |
198 | 194 |
199 void OnGetOriginsComplete(const std::set<GURL>& origins) { | 195 void OnGetOriginsComplete(const std::set<GURL>& origins) { |
200 origins_ = origins; | 196 origins_ = origins; |
201 } | 197 } |
202 | 198 |
203 void OnDeleteOriginDataComplete(quota::QuotaStatusCode status) { | 199 void OnDeleteOriginDataComplete(storage::QuotaStatusCode status) { |
204 delete_status_ = status; | 200 delete_status_ = status; |
205 } | 201 } |
206 | 202 |
207 base::MessageLoop message_loop_; | 203 base::MessageLoop message_loop_; |
208 int64 usage_; | 204 int64 usage_; |
209 std::set<GURL> origins_; | 205 std::set<GURL> origins_; |
210 quota::QuotaStatusCode delete_status_; | 206 storage::QuotaStatusCode delete_status_; |
211 scoped_refptr<MockDatabaseTracker> mock_tracker_; | 207 scoped_refptr<MockDatabaseTracker> mock_tracker_; |
212 base::WeakPtrFactory<DatabaseQuotaClientTest> weak_factory_; | 208 base::WeakPtrFactory<DatabaseQuotaClientTest> weak_factory_; |
213 }; | 209 }; |
214 | 210 |
215 | 211 |
216 TEST_F(DatabaseQuotaClientTest, GetOriginUsage) { | 212 TEST_F(DatabaseQuotaClientTest, GetOriginUsage) { |
217 DatabaseQuotaClient client(base::MessageLoopProxy::current().get(), | 213 DatabaseQuotaClient client(base::MessageLoopProxy::current().get(), |
218 mock_tracker()); | 214 mock_tracker()); |
219 | 215 |
220 EXPECT_EQ(0, GetOriginUsage(&client, kOriginA, kTemp)); | 216 EXPECT_EQ(0, GetOriginUsage(&client, kOriginA, kTemp)); |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 mock_tracker()->set_async_delete(false); | 276 mock_tracker()->set_async_delete(false); |
281 EXPECT_TRUE(DeleteOriginData(&client, kTemp, kOriginA)); | 277 EXPECT_TRUE(DeleteOriginData(&client, kTemp, kOriginA)); |
282 EXPECT_EQ(1, mock_tracker()->delete_called_count()); | 278 EXPECT_EQ(1, mock_tracker()->delete_called_count()); |
283 | 279 |
284 mock_tracker()->set_async_delete(true); | 280 mock_tracker()->set_async_delete(true); |
285 EXPECT_TRUE(DeleteOriginData(&client, kTemp, kOriginA)); | 281 EXPECT_TRUE(DeleteOriginData(&client, kTemp, kOriginA)); |
286 EXPECT_EQ(2, mock_tracker()->delete_called_count()); | 282 EXPECT_EQ(2, mock_tracker()->delete_called_count()); |
287 } | 283 } |
288 | 284 |
289 } // namespace content | 285 } // namespace content |
OLD | NEW |