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

Side by Side Diff: storage/browser/database/database_tracker_unittest.cc

Issue 2820143005: Move a browser-side WebSQL unittest next to the file it covers. (Closed)
Patch Set: Created 3 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
« no previous file with comments | « storage/browser/BUILD.gn ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <memory> 8 #include <memory>
9 9
10 #include "base/files/file.h" 10 #include "base/files/file.h"
(...skipping 21 matching lines...) Expand all
32 namespace { 32 namespace {
33 33
34 const char kOrigin1Url[] = "http://origin1"; 34 const char kOrigin1Url[] = "http://origin1";
35 const char kOrigin2Url[] = "http://protected_origin2"; 35 const char kOrigin2Url[] = "http://protected_origin2";
36 36
37 class TestObserver : public storage::DatabaseTracker::Observer { 37 class TestObserver : public storage::DatabaseTracker::Observer {
38 public: 38 public:
39 TestObserver() 39 TestObserver()
40 : new_notification_received_(false), 40 : new_notification_received_(false),
41 observe_size_changes_(true), 41 observe_size_changes_(true),
42 observe_scheduled_deletions_(true) { 42 observe_scheduled_deletions_(true) {}
43 }
44 TestObserver(bool observe_size_changes, bool observe_scheduled_deletions) 43 TestObserver(bool observe_size_changes, bool observe_scheduled_deletions)
45 : new_notification_received_(false), 44 : new_notification_received_(false),
46 observe_size_changes_(observe_size_changes), 45 observe_size_changes_(observe_size_changes),
47 observe_scheduled_deletions_(observe_scheduled_deletions) { 46 observe_scheduled_deletions_(observe_scheduled_deletions) {}
48 }
49 47
50 ~TestObserver() override {} 48 ~TestObserver() override {}
51 void OnDatabaseSizeChanged(const std::string& origin_identifier, 49 void OnDatabaseSizeChanged(const std::string& origin_identifier,
52 const base::string16& database_name, 50 const base::string16& database_name,
53 int64_t database_size) override { 51 int64_t database_size) override {
54 if (!observe_size_changes_) 52 if (!observe_size_changes_)
55 return; 53 return;
56 new_notification_received_ = true; 54 new_notification_received_ = true;
57 origin_identifier_ = origin_identifier; 55 origin_identifier_ = origin_identifier;
58 database_name_ = database_name; 56 database_name_ = database_name;
59 database_size_ = database_size; 57 database_size_ = database_size;
60 } 58 }
61 void OnDatabaseScheduledForDeletion( 59 void OnDatabaseScheduledForDeletion(
62 const std::string& origin_identifier, 60 const std::string& origin_identifier,
63 const base::string16& database_name) override { 61 const base::string16& database_name) override {
64 if (!observe_scheduled_deletions_) 62 if (!observe_scheduled_deletions_)
65 return; 63 return;
66 new_notification_received_ = true; 64 new_notification_received_ = true;
67 origin_identifier_ = origin_identifier; 65 origin_identifier_ = origin_identifier;
68 database_name_ = database_name; 66 database_name_ = database_name;
69 } 67 }
70 bool DidReceiveNewNotification() { 68 bool DidReceiveNewNotification() {
71 bool temp_new_notification_received = new_notification_received_; 69 bool temp_new_notification_received = new_notification_received_;
72 new_notification_received_ = false; 70 new_notification_received_ = false;
73 return temp_new_notification_received; 71 return temp_new_notification_received;
74 } 72 }
75 std::string GetNotificationOriginIdentifier() { 73 std::string GetNotificationOriginIdentifier() { return origin_identifier_; }
76 return origin_identifier_;
77 }
78 base::string16 GetNotificationDatabaseName() { return database_name_; } 74 base::string16 GetNotificationDatabaseName() { return database_name_; }
79 int64_t GetNotificationDatabaseSize() { return database_size_; } 75 int64_t GetNotificationDatabaseSize() { return database_size_; }
80 76
81 private: 77 private:
82 bool new_notification_received_; 78 bool new_notification_received_;
83 bool observe_size_changes_; 79 bool observe_size_changes_;
84 bool observe_scheduled_deletions_; 80 bool observe_scheduled_deletions_;
85 std::string origin_identifier_; 81 std::string origin_identifier_;
86 base::string16 database_name_; 82 base::string16 database_name_;
87 int64_t database_size_; 83 int64_t database_size_;
88 }; 84 };
89 85
90 void CheckNotificationReceived(TestObserver* observer, 86 void CheckNotificationReceived(TestObserver* observer,
91 const std::string& expected_origin_identifier, 87 const std::string& expected_origin_identifier,
92 const base::string16& expected_database_name, 88 const base::string16& expected_database_name,
93 int64_t expected_database_size) { 89 int64_t expected_database_size) {
94 EXPECT_TRUE(observer->DidReceiveNewNotification()); 90 EXPECT_TRUE(observer->DidReceiveNewNotification());
95 EXPECT_EQ(expected_origin_identifier, 91 EXPECT_EQ(expected_origin_identifier,
96 observer->GetNotificationOriginIdentifier()); 92 observer->GetNotificationOriginIdentifier());
97 EXPECT_EQ(expected_database_name, 93 EXPECT_EQ(expected_database_name, observer->GetNotificationDatabaseName());
98 observer->GetNotificationDatabaseName()); 94 EXPECT_EQ(expected_database_size, observer->GetNotificationDatabaseSize());
99 EXPECT_EQ(expected_database_size,
100 observer->GetNotificationDatabaseSize());
101 } 95 }
102 96
103 class TestQuotaManagerProxy : public storage::QuotaManagerProxy { 97 class TestQuotaManagerProxy : public storage::QuotaManagerProxy {
104 public: 98 public:
105 TestQuotaManagerProxy() 99 TestQuotaManagerProxy()
106 : QuotaManagerProxy(NULL, NULL), 100 : QuotaManagerProxy(NULL, NULL), registered_client_(NULL) {}
107 registered_client_(NULL) {
108 }
109 101
110 void RegisterClient(storage::QuotaClient* client) override { 102 void RegisterClient(storage::QuotaClient* client) override {
111 EXPECT_FALSE(registered_client_); 103 EXPECT_FALSE(registered_client_);
112 registered_client_ = client; 104 registered_client_ = client;
113 } 105 }
114 106
115 void NotifyStorageAccessed(storage::QuotaClient::ID client_id, 107 void NotifyStorageAccessed(storage::QuotaClient::ID client_id,
116 const GURL& origin, 108 const GURL& origin,
117 storage::StorageType type) override { 109 storage::StorageType type) override {
118 EXPECT_EQ(storage::QuotaClient::kDatabase, client_id); 110 EXPECT_EQ(storage::QuotaClient::kDatabase, client_id);
(...skipping 23 matching lines...) Expand all
142 storage::StorageType type, 134 storage::StorageType type,
143 const UsageAndQuotaCallback& callback) override {} 135 const UsageAndQuotaCallback& callback) override {}
144 136
145 void SimulateQuotaManagerDestroyed() { 137 void SimulateQuotaManagerDestroyed() {
146 if (registered_client_) { 138 if (registered_client_) {
147 registered_client_->OnQuotaManagerDestroyed(); 139 registered_client_->OnQuotaManagerDestroyed();
148 registered_client_ = NULL; 140 registered_client_ = NULL;
149 } 141 }
150 } 142 }
151 143
152 bool WasAccessNotified(const GURL& origin) { 144 bool WasAccessNotified(const GURL& origin) { return accesses_[origin] != 0; }
153 return accesses_[origin] != 0;
154 }
155 145
156 bool WasModificationNotified(const GURL& origin, int64_t amount) { 146 bool WasModificationNotified(const GURL& origin, int64_t amount) {
157 return modifications_[origin].first != 0 && 147 return modifications_[origin].first != 0 &&
158 modifications_[origin].second == amount; 148 modifications_[origin].second == amount;
159 } 149 }
160 150
161 void reset() { 151 void reset() {
162 accesses_.clear(); 152 accesses_.clear();
163 modifications_.clear(); 153 modifications_.clear();
164 } 154 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
209 int64_t database_size = 0; 199 int64_t database_size = 0;
210 const std::string kOrigin1 = 200 const std::string kOrigin1 =
211 storage::GetIdentifierFromOrigin(GURL(kOrigin1Url)); 201 storage::GetIdentifierFromOrigin(GURL(kOrigin1Url));
212 const std::string kOrigin2 = 202 const std::string kOrigin2 =
213 storage::GetIdentifierFromOrigin(GURL(kOrigin2Url)); 203 storage::GetIdentifierFromOrigin(GURL(kOrigin2Url));
214 const base::string16 kDB1 = ASCIIToUTF16("db1"); 204 const base::string16 kDB1 = ASCIIToUTF16("db1");
215 const base::string16 kDB2 = ASCIIToUTF16("db2"); 205 const base::string16 kDB2 = ASCIIToUTF16("db2");
216 const base::string16 kDB3 = ASCIIToUTF16("db3"); 206 const base::string16 kDB3 = ASCIIToUTF16("db3");
217 const base::string16 kDescription = ASCIIToUTF16("database_description"); 207 const base::string16 kDescription = ASCIIToUTF16("database_description");
218 208
219 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, 209 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, &database_size);
220 &database_size); 210 tracker->DatabaseOpened(kOrigin2, kDB2, kDescription, 0, &database_size);
221 tracker->DatabaseOpened(kOrigin2, kDB2, kDescription, 0, 211 tracker->DatabaseOpened(kOrigin2, kDB3, kDescription, 0, &database_size);
222 &database_size);
223 tracker->DatabaseOpened(kOrigin2, kDB3, kDescription, 0,
224 &database_size);
225 212
226 EXPECT_TRUE(base::CreateDirectory( 213 EXPECT_TRUE(base::CreateDirectory(
227 tracker->DatabaseDirectory().Append(base::FilePath::FromUTF16Unsafe( 214 tracker->DatabaseDirectory().Append(base::FilePath::FromUTF16Unsafe(
228 tracker->GetOriginDirectory(kOrigin1))))); 215 tracker->GetOriginDirectory(kOrigin1)))));
229 EXPECT_TRUE(base::CreateDirectory( 216 EXPECT_TRUE(base::CreateDirectory(
230 tracker->DatabaseDirectory().Append(base::FilePath::FromUTF16Unsafe( 217 tracker->DatabaseDirectory().Append(base::FilePath::FromUTF16Unsafe(
231 tracker->GetOriginDirectory(kOrigin2))))); 218 tracker->GetOriginDirectory(kOrigin2)))));
232 EXPECT_EQ(1, base::WriteFile( 219 EXPECT_EQ(
233 tracker->GetFullDBFilePath(kOrigin1, kDB1), "a", 1)); 220 1, base::WriteFile(tracker->GetFullDBFilePath(kOrigin1, kDB1), "a", 1));
234 EXPECT_EQ(2, base::WriteFile( 221 EXPECT_EQ(2, base::WriteFile(tracker->GetFullDBFilePath(kOrigin2, kDB2),
235 tracker->GetFullDBFilePath(kOrigin2, kDB2), "aa", 2)); 222 "aa", 2));
236 EXPECT_EQ(3, base::WriteFile( 223 EXPECT_EQ(3, base::WriteFile(tracker->GetFullDBFilePath(kOrigin2, kDB3),
237 tracker->GetFullDBFilePath(kOrigin2, kDB3), "aaa", 3)); 224 "aaa", 3));
238 tracker->DatabaseModified(kOrigin1, kDB1); 225 tracker->DatabaseModified(kOrigin1, kDB1);
239 tracker->DatabaseModified(kOrigin2, kDB2); 226 tracker->DatabaseModified(kOrigin2, kDB2);
240 tracker->DatabaseModified(kOrigin2, kDB3); 227 tracker->DatabaseModified(kOrigin2, kDB3);
241 228
242 // Delete db1. Should also delete origin1. 229 // Delete db1. Should also delete origin1.
243 TestObserver observer; 230 TestObserver observer;
244 tracker->AddObserver(&observer); 231 tracker->AddObserver(&observer);
245 net::TestCompletionCallback callback; 232 net::TestCompletionCallback callback;
246 int result = tracker->DeleteDatabase(kOrigin1, kDB1, callback.callback()); 233 int result = tracker->DeleteDatabase(kOrigin1, kDB1, callback.callback());
247 EXPECT_EQ(net::ERR_IO_PENDING, result); 234 EXPECT_EQ(net::ERR_IO_PENDING, result);
248 ASSERT_FALSE(callback.have_result()); 235 ASSERT_FALSE(callback.have_result());
249 EXPECT_TRUE(observer.DidReceiveNewNotification()); 236 EXPECT_TRUE(observer.DidReceiveNewNotification());
250 EXPECT_EQ(kOrigin1, observer.GetNotificationOriginIdentifier()); 237 EXPECT_EQ(kOrigin1, observer.GetNotificationOriginIdentifier());
251 EXPECT_EQ(kDB1, observer.GetNotificationDatabaseName()); 238 EXPECT_EQ(kDB1, observer.GetNotificationDatabaseName());
252 tracker->DatabaseClosed(kOrigin1, kDB1); 239 tracker->DatabaseClosed(kOrigin1, kDB1);
253 result = callback.GetResult(result); 240 result = callback.GetResult(result);
254 EXPECT_EQ(net::OK, result); 241 EXPECT_EQ(net::OK, result);
255 EXPECT_FALSE(base::PathExists( 242 EXPECT_FALSE(
256 tracker->DatabaseDirectory().AppendASCII(kOrigin1))); 243 base::PathExists(tracker->DatabaseDirectory().AppendASCII(kOrigin1)));
257 244
258 // Recreate db1. 245 // Recreate db1.
259 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, 246 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, &database_size);
260 &database_size);
261 EXPECT_TRUE(base::CreateDirectory( 247 EXPECT_TRUE(base::CreateDirectory(
262 tracker->DatabaseDirectory().Append(base::FilePath::FromUTF16Unsafe( 248 tracker->DatabaseDirectory().Append(base::FilePath::FromUTF16Unsafe(
263 tracker->GetOriginDirectory(kOrigin1))))); 249 tracker->GetOriginDirectory(kOrigin1)))));
264 EXPECT_EQ(1, base::WriteFile( 250 EXPECT_EQ(
265 tracker->GetFullDBFilePath(kOrigin1, kDB1), "a", 1)); 251 1, base::WriteFile(tracker->GetFullDBFilePath(kOrigin1, kDB1), "a", 1));
266 tracker->DatabaseModified(kOrigin1, kDB1); 252 tracker->DatabaseModified(kOrigin1, kDB1);
267 253
268 // Setup file modification times. db1 and db2 are modified now, db3 three 254 // Setup file modification times. db1 and db2 are modified now, db3 three
269 // days ago. 255 // days ago.
270 base::Time now = base::Time::Now(); 256 base::Time now = base::Time::Now();
271 EXPECT_TRUE(base::TouchFile(tracker->GetFullDBFilePath(kOrigin1, kDB1), 257 EXPECT_TRUE(
272 now, now)); 258 base::TouchFile(tracker->GetFullDBFilePath(kOrigin1, kDB1), now, now));
273 EXPECT_TRUE(base::TouchFile(tracker->GetFullDBFilePath(kOrigin2, kDB2), 259 EXPECT_TRUE(
274 now, now)); 260 base::TouchFile(tracker->GetFullDBFilePath(kOrigin2, kDB2), now, now));
275 base::Time three_days_ago = now - base::TimeDelta::FromDays(3); 261 base::Time three_days_ago = now - base::TimeDelta::FromDays(3);
276 EXPECT_TRUE(base::TouchFile(tracker->GetFullDBFilePath(kOrigin2, kDB3), 262 EXPECT_TRUE(base::TouchFile(tracker->GetFullDBFilePath(kOrigin2, kDB3),
277 three_days_ago, three_days_ago)); 263 three_days_ago, three_days_ago));
278 264
279 // Delete databases modified since yesterday. db2 is whitelisted. 265 // Delete databases modified since yesterday. db2 is whitelisted.
280 base::Time yesterday = base::Time::Now(); 266 base::Time yesterday = base::Time::Now();
281 yesterday -= base::TimeDelta::FromDays(1); 267 yesterday -= base::TimeDelta::FromDays(1);
282 result = tracker->DeleteDataModifiedSince( 268 result = tracker->DeleteDataModifiedSince(yesterday, callback.callback());
283 yesterday, callback.callback());
284 EXPECT_EQ(net::ERR_IO_PENDING, result); 269 EXPECT_EQ(net::ERR_IO_PENDING, result);
285 ASSERT_FALSE(callback.have_result()); 270 ASSERT_FALSE(callback.have_result());
286 EXPECT_TRUE(observer.DidReceiveNewNotification()); 271 EXPECT_TRUE(observer.DidReceiveNewNotification());
287 tracker->DatabaseClosed(kOrigin1, kDB1); 272 tracker->DatabaseClosed(kOrigin1, kDB1);
288 tracker->DatabaseClosed(kOrigin2, kDB2); 273 tracker->DatabaseClosed(kOrigin2, kDB2);
289 result = callback.GetResult(result); 274 result = callback.GetResult(result);
290 EXPECT_EQ(net::OK, result); 275 EXPECT_EQ(net::OK, result);
291 EXPECT_FALSE(base::PathExists( 276 EXPECT_FALSE(
292 tracker->DatabaseDirectory().AppendASCII(kOrigin1))); 277 base::PathExists(tracker->DatabaseDirectory().AppendASCII(kOrigin1)));
293 EXPECT_TRUE( 278 EXPECT_TRUE(base::PathExists(tracker->GetFullDBFilePath(kOrigin2, kDB2)));
294 base::PathExists(tracker->GetFullDBFilePath(kOrigin2, kDB2))); 279 EXPECT_TRUE(base::PathExists(tracker->GetFullDBFilePath(kOrigin2, kDB3)));
295 EXPECT_TRUE(
296 base::PathExists(tracker->GetFullDBFilePath(kOrigin2, kDB3)));
297 280
298 tracker->DatabaseClosed(kOrigin2, kDB3); 281 tracker->DatabaseClosed(kOrigin2, kDB3);
299 tracker->RemoveObserver(&observer); 282 tracker->RemoveObserver(&observer);
300 } 283 }
301 284
302 static void TestDatabaseTracker(bool incognito_mode) { 285 static void TestDatabaseTracker(bool incognito_mode) {
303 // Initialize the tracker database. 286 // Initialize the tracker database.
304 base::ScopedTempDir temp_dir; 287 base::ScopedTempDir temp_dir;
305 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 288 ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
306 scoped_refptr<MockSpecialStoragePolicy> special_storage_policy = 289 scoped_refptr<MockSpecialStoragePolicy> special_storage_policy =
(...skipping 21 matching lines...) Expand all
328 const base::string16 kDescription = ASCIIToUTF16("database_description"); 311 const base::string16 kDescription = ASCIIToUTF16("database_description");
329 312
330 // Get the info for kOrigin1 and kOrigin2 313 // Get the info for kOrigin1 and kOrigin2
331 DatabaseTracker::CachedOriginInfo* origin1_info = 314 DatabaseTracker::CachedOriginInfo* origin1_info =
332 tracker->GetCachedOriginInfo(kOrigin1); 315 tracker->GetCachedOriginInfo(kOrigin1);
333 DatabaseTracker::CachedOriginInfo* origin2_info = 316 DatabaseTracker::CachedOriginInfo* origin2_info =
334 tracker->GetCachedOriginInfo(kOrigin1); 317 tracker->GetCachedOriginInfo(kOrigin1);
335 EXPECT_TRUE(origin1_info); 318 EXPECT_TRUE(origin1_info);
336 EXPECT_TRUE(origin2_info); 319 EXPECT_TRUE(origin2_info);
337 320
338 321 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, &database_size);
339 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0,
340 &database_size);
341 EXPECT_EQ(0, database_size); 322 EXPECT_EQ(0, database_size);
342 tracker->DatabaseOpened(kOrigin2, kDB2, kDescription, 0, 323 tracker->DatabaseOpened(kOrigin2, kDB2, kDescription, 0, &database_size);
343 &database_size);
344 EXPECT_EQ(0, database_size); 324 EXPECT_EQ(0, database_size);
345 tracker->DatabaseOpened(kOrigin1, kDB3, kDescription, 0, 325 tracker->DatabaseOpened(kOrigin1, kDB3, kDescription, 0, &database_size);
346 &database_size);
347 EXPECT_EQ(0, database_size); 326 EXPECT_EQ(0, database_size);
348 327
349 // Write some data to each file and check that the listeners are 328 // Write some data to each file and check that the listeners are
350 // called with the appropriate values. 329 // called with the appropriate values.
351 EXPECT_TRUE(base::CreateDirectory( 330 EXPECT_TRUE(base::CreateDirectory(
352 tracker->DatabaseDirectory().Append(base::FilePath::FromUTF16Unsafe( 331 tracker->DatabaseDirectory().Append(base::FilePath::FromUTF16Unsafe(
353 tracker->GetOriginDirectory(kOrigin1))))); 332 tracker->GetOriginDirectory(kOrigin1)))));
354 EXPECT_TRUE(base::CreateDirectory( 333 EXPECT_TRUE(base::CreateDirectory(
355 tracker->DatabaseDirectory().Append(base::FilePath::FromUTF16Unsafe( 334 tracker->DatabaseDirectory().Append(base::FilePath::FromUTF16Unsafe(
356 tracker->GetOriginDirectory(kOrigin2))))); 335 tracker->GetOriginDirectory(kOrigin2)))));
357 EXPECT_EQ(1, base::WriteFile( 336 EXPECT_EQ(
358 tracker->GetFullDBFilePath(kOrigin1, kDB1), "a", 1)); 337 1, base::WriteFile(tracker->GetFullDBFilePath(kOrigin1, kDB1), "a", 1));
359 EXPECT_EQ(2, base::WriteFile( 338 EXPECT_EQ(2, base::WriteFile(tracker->GetFullDBFilePath(kOrigin2, kDB2),
360 tracker->GetFullDBFilePath(kOrigin2, kDB2), "aa", 2)); 339 "aa", 2));
361 EXPECT_EQ(4, base::WriteFile( 340 EXPECT_EQ(4, base::WriteFile(tracker->GetFullDBFilePath(kOrigin1, kDB3),
362 tracker->GetFullDBFilePath(kOrigin1, kDB3), "aaaa", 4)); 341 "aaaa", 4));
363 tracker->DatabaseModified(kOrigin1, kDB1); 342 tracker->DatabaseModified(kOrigin1, kDB1);
364 CheckNotificationReceived(&observer1, kOrigin1, kDB1, 1); 343 CheckNotificationReceived(&observer1, kOrigin1, kDB1, 1);
365 CheckNotificationReceived(&observer2, kOrigin1, kDB1, 1); 344 CheckNotificationReceived(&observer2, kOrigin1, kDB1, 1);
366 tracker->DatabaseModified(kOrigin2, kDB2); 345 tracker->DatabaseModified(kOrigin2, kDB2);
367 CheckNotificationReceived(&observer1, kOrigin2, kDB2, 2); 346 CheckNotificationReceived(&observer1, kOrigin2, kDB2, 2);
368 CheckNotificationReceived(&observer2, kOrigin2, kDB2, 2); 347 CheckNotificationReceived(&observer2, kOrigin2, kDB2, 2);
369 tracker->DatabaseModified(kOrigin1, kDB3); 348 tracker->DatabaseModified(kOrigin1, kDB3);
370 CheckNotificationReceived(&observer1, kOrigin1, kDB3, 4); 349 CheckNotificationReceived(&observer1, kOrigin1, kDB3, 4);
371 CheckNotificationReceived(&observer2, kOrigin1, kDB3, 4); 350 CheckNotificationReceived(&observer2, kOrigin1, kDB3, 4);
372 351
373 // Close all databases 352 // Close all databases
374 tracker->DatabaseClosed(kOrigin1, kDB1); 353 tracker->DatabaseClosed(kOrigin1, kDB1);
375 tracker->DatabaseClosed(kOrigin2, kDB2); 354 tracker->DatabaseClosed(kOrigin2, kDB2);
376 tracker->DatabaseClosed(kOrigin1, kDB3); 355 tracker->DatabaseClosed(kOrigin1, kDB3);
377 356
378 // Open an existing database and check the reported size 357 // Open an existing database and check the reported size
379 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, 358 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, &database_size);
380 &database_size);
381 EXPECT_EQ(1, database_size); 359 EXPECT_EQ(1, database_size);
382 tracker->DatabaseClosed(kOrigin1, kDB1); 360 tracker->DatabaseClosed(kOrigin1, kDB1);
383 361
384 // Remove an observer; this should clear all caches. 362 // Remove an observer; this should clear all caches.
385 tracker->RemoveObserver(&observer2); 363 tracker->RemoveObserver(&observer2);
386 364
387 // Close the tracker database and clear all caches. 365 // Close the tracker database and clear all caches.
388 // Then make sure that DatabaseOpened() still returns the correct result. 366 // Then make sure that DatabaseOpened() still returns the correct result.
389 tracker->CloseTrackerDatabaseAndClearCaches(); 367 tracker->CloseTrackerDatabaseAndClearCaches();
390 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, 368 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, &database_size);
391 &database_size);
392 EXPECT_EQ(1, database_size); 369 EXPECT_EQ(1, database_size);
393 tracker->DatabaseClosed(kOrigin1, kDB1); 370 tracker->DatabaseClosed(kOrigin1, kDB1);
394 371
395 // Remove all observers. 372 // Remove all observers.
396 tracker->RemoveObserver(&observer1); 373 tracker->RemoveObserver(&observer1);
397 374
398 // Trying to delete a database in use should fail 375 // Trying to delete a database in use should fail
399 tracker->DatabaseOpened(kOrigin1, kDB3, kDescription, 0, 376 tracker->DatabaseOpened(kOrigin1, kDB3, kDescription, 0, &database_size);
400 &database_size);
401 EXPECT_FALSE(tracker->DeleteClosedDatabase(kOrigin1, kDB3)); 377 EXPECT_FALSE(tracker->DeleteClosedDatabase(kOrigin1, kDB3));
402 origin1_info = tracker->GetCachedOriginInfo(kOrigin1); 378 origin1_info = tracker->GetCachedOriginInfo(kOrigin1);
403 EXPECT_TRUE(origin1_info); 379 EXPECT_TRUE(origin1_info);
404 EXPECT_EQ(4, origin1_info->GetDatabaseSize(kDB3)); 380 EXPECT_EQ(4, origin1_info->GetDatabaseSize(kDB3));
405 tracker->DatabaseClosed(kOrigin1, kDB3); 381 tracker->DatabaseClosed(kOrigin1, kDB3);
406 382
407 // Delete a database and make sure the space used by that origin is updated 383 // Delete a database and make sure the space used by that origin is updated
408 EXPECT_TRUE(tracker->DeleteClosedDatabase(kOrigin1, kDB3)); 384 EXPECT_TRUE(tracker->DeleteClosedDatabase(kOrigin1, kDB3));
409 origin1_info = tracker->GetCachedOriginInfo(kOrigin1); 385 origin1_info = tracker->GetCachedOriginInfo(kOrigin1);
410 EXPECT_TRUE(origin1_info); 386 EXPECT_TRUE(origin1_info);
411 EXPECT_EQ(1, origin1_info->GetDatabaseSize(kDB1)); 387 EXPECT_EQ(1, origin1_info->GetDatabaseSize(kDB1));
412 EXPECT_EQ(0, origin1_info->GetDatabaseSize(kDB3)); 388 EXPECT_EQ(0, origin1_info->GetDatabaseSize(kDB3));
413 389
414 // Get all data for all origins 390 // Get all data for all origins
415 std::vector<OriginInfo> origins_info; 391 std::vector<OriginInfo> origins_info;
416 EXPECT_TRUE(tracker->GetAllOriginsInfo(&origins_info)); 392 EXPECT_TRUE(tracker->GetAllOriginsInfo(&origins_info));
417 EXPECT_EQ(size_t(2), origins_info.size()); 393 EXPECT_EQ(size_t(2), origins_info.size());
418 EXPECT_EQ(kOrigin1, origins_info[0].GetOriginIdentifier()); 394 EXPECT_EQ(kOrigin1, origins_info[0].GetOriginIdentifier());
419 EXPECT_EQ(1, origins_info[0].TotalSize()); 395 EXPECT_EQ(1, origins_info[0].TotalSize());
420 EXPECT_EQ(1, origins_info[0].GetDatabaseSize(kDB1)); 396 EXPECT_EQ(1, origins_info[0].GetDatabaseSize(kDB1));
421 EXPECT_EQ(0, origins_info[0].GetDatabaseSize(kDB3)); 397 EXPECT_EQ(0, origins_info[0].GetDatabaseSize(kDB3));
422 398
423 EXPECT_EQ(kOrigin2, origins_info[1].GetOriginIdentifier()); 399 EXPECT_EQ(kOrigin2, origins_info[1].GetOriginIdentifier());
424 EXPECT_EQ(2, origins_info[1].TotalSize()); 400 EXPECT_EQ(2, origins_info[1].TotalSize());
425 401
426 // Trying to delete an origin with databases in use should fail 402 // Trying to delete an origin with databases in use should fail
427 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, 403 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, &database_size);
428 &database_size);
429 EXPECT_FALSE(tracker->DeleteOrigin(kOrigin1, false)); 404 EXPECT_FALSE(tracker->DeleteOrigin(kOrigin1, false));
430 origin1_info = tracker->GetCachedOriginInfo(kOrigin1); 405 origin1_info = tracker->GetCachedOriginInfo(kOrigin1);
431 EXPECT_TRUE(origin1_info); 406 EXPECT_TRUE(origin1_info);
432 EXPECT_EQ(1, origin1_info->GetDatabaseSize(kDB1)); 407 EXPECT_EQ(1, origin1_info->GetDatabaseSize(kDB1));
433 tracker->DatabaseClosed(kOrigin1, kDB1); 408 tracker->DatabaseClosed(kOrigin1, kDB1);
434 409
435 // Delete an origin that doesn't have any database in use 410 // Delete an origin that doesn't have any database in use
436 EXPECT_TRUE(tracker->DeleteOrigin(kOrigin1, false)); 411 EXPECT_TRUE(tracker->DeleteOrigin(kOrigin1, false));
437 origins_info.clear(); 412 origins_info.clear();
438 EXPECT_TRUE(tracker->GetAllOriginsInfo(&origins_info)); 413 EXPECT_TRUE(tracker->GetAllOriginsInfo(&origins_info));
(...skipping 19 matching lines...) Expand all
458 new TestQuotaManagerProxy); 433 new TestQuotaManagerProxy);
459 scoped_refptr<DatabaseTracker> tracker( 434 scoped_refptr<DatabaseTracker> tracker(
460 new DatabaseTracker(temp_dir.GetPath(), false /* incognito */, NULL, 435 new DatabaseTracker(temp_dir.GetPath(), false /* incognito */, NULL,
461 test_quota_proxy.get(), NULL)); 436 test_quota_proxy.get(), NULL));
462 EXPECT_TRUE(test_quota_proxy->registered_client_); 437 EXPECT_TRUE(test_quota_proxy->registered_client_);
463 438
464 // Create a database and modify it a couple of times, close it, 439 // Create a database and modify it a couple of times, close it,
465 // then delete it. Observe the tracker notifies accordingly. 440 // then delete it. Observe the tracker notifies accordingly.
466 441
467 int64_t database_size = 0; 442 int64_t database_size = 0;
468 tracker->DatabaseOpened(kOriginId, kName, kDescription, 0, 443 tracker->DatabaseOpened(kOriginId, kName, kDescription, 0, &database_size);
469 &database_size);
470 EXPECT_TRUE(test_quota_proxy->WasAccessNotified(kOrigin)); 444 EXPECT_TRUE(test_quota_proxy->WasAccessNotified(kOrigin));
471 test_quota_proxy->reset(); 445 test_quota_proxy->reset();
472 446
473 base::FilePath db_file(tracker->GetFullDBFilePath(kOriginId, kName)); 447 base::FilePath db_file(tracker->GetFullDBFilePath(kOriginId, kName));
474 EXPECT_TRUE(base::CreateDirectory(db_file.DirName())); 448 EXPECT_TRUE(base::CreateDirectory(db_file.DirName()));
475 EXPECT_TRUE(EnsureFileOfSize(db_file, 10)); 449 EXPECT_TRUE(EnsureFileOfSize(db_file, 10));
476 tracker->DatabaseModified(kOriginId, kName); 450 tracker->DatabaseModified(kOriginId, kName);
477 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, 10)); 451 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, 10));
478 test_quota_proxy->reset(); 452 test_quota_proxy->reset();
479 453
480 EXPECT_TRUE(EnsureFileOfSize(db_file, 100)); 454 EXPECT_TRUE(EnsureFileOfSize(db_file, 100));
481 tracker->DatabaseModified(kOriginId, kName); 455 tracker->DatabaseModified(kOriginId, kName);
482 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, 90)); 456 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, 90));
483 test_quota_proxy->reset(); 457 test_quota_proxy->reset();
484 458
485 tracker->DatabaseClosed(kOriginId, kName); 459 tracker->DatabaseClosed(kOriginId, kName);
486 EXPECT_TRUE(test_quota_proxy->WasAccessNotified(kOrigin)); 460 EXPECT_TRUE(test_quota_proxy->WasAccessNotified(kOrigin));
487 EXPECT_EQ(net::OK, tracker->DeleteDatabase( 461 EXPECT_EQ(net::OK, tracker->DeleteDatabase(kOriginId, kName,
488 kOriginId, kName, net::CompletionCallback())); 462 net::CompletionCallback()));
489 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, -100)); 463 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, -100));
490 test_quota_proxy->reset(); 464 test_quota_proxy->reset();
491 465
492 // Create a database and modify it, try to delete it while open, 466 // Create a database and modify it, try to delete it while open,
493 // then close it (at which time deletion will actually occur). 467 // then close it (at which time deletion will actually occur).
494 // Observe the tracker notifies accordingly. 468 // Observe the tracker notifies accordingly.
495 469
496 tracker->DatabaseOpened(kOriginId, kName, kDescription, 0, 470 tracker->DatabaseOpened(kOriginId, kName, kDescription, 0, &database_size);
497 &database_size);
498 EXPECT_TRUE(test_quota_proxy->WasAccessNotified(kOrigin)); 471 EXPECT_TRUE(test_quota_proxy->WasAccessNotified(kOrigin));
499 test_quota_proxy->reset(); 472 test_quota_proxy->reset();
500 473
501 db_file = tracker->GetFullDBFilePath(kOriginId, kName); 474 db_file = tracker->GetFullDBFilePath(kOriginId, kName);
502 EXPECT_TRUE(base::CreateDirectory(db_file.DirName())); 475 EXPECT_TRUE(base::CreateDirectory(db_file.DirName()));
503 EXPECT_TRUE(EnsureFileOfSize(db_file, 100)); 476 EXPECT_TRUE(EnsureFileOfSize(db_file, 100));
504 tracker->DatabaseModified(kOriginId, kName); 477 tracker->DatabaseModified(kOriginId, kName);
505 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, 100)); 478 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, 100));
506 test_quota_proxy->reset(); 479 test_quota_proxy->reset();
507 480
508 EXPECT_EQ(net::ERR_IO_PENDING, 481 EXPECT_EQ(
509 tracker->DeleteDatabase(kOriginId, kName, 482 net::ERR_IO_PENDING,
510 net::CompletionCallback())); 483 tracker->DeleteDatabase(kOriginId, kName, net::CompletionCallback()));
511 EXPECT_FALSE(test_quota_proxy->WasModificationNotified(kOrigin, -100)); 484 EXPECT_FALSE(test_quota_proxy->WasModificationNotified(kOrigin, -100));
512 485
513 tracker->DatabaseClosed(kOriginId, kName); 486 tracker->DatabaseClosed(kOriginId, kName);
514 EXPECT_TRUE(test_quota_proxy->WasAccessNotified(kOrigin)); 487 EXPECT_TRUE(test_quota_proxy->WasAccessNotified(kOrigin));
515 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, -100)); 488 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, -100));
516 test_quota_proxy->reset(); 489 test_quota_proxy->reset();
517 490
518 // Create a database and up the file size without telling 491 // Create a database and up the file size without telling
519 // the tracker about the modification, than simulate a 492 // the tracker about the modification, than simulate a
520 // a renderer crash. 493 // a renderer crash.
521 // Observe the tracker notifies accordingly. 494 // Observe the tracker notifies accordingly.
522 495
523 tracker->DatabaseOpened(kOriginId, kName, kDescription, 0, 496 tracker->DatabaseOpened(kOriginId, kName, kDescription, 0, &database_size);
524 &database_size);
525 EXPECT_TRUE(test_quota_proxy->WasAccessNotified(kOrigin)); 497 EXPECT_TRUE(test_quota_proxy->WasAccessNotified(kOrigin));
526 test_quota_proxy->reset(); 498 test_quota_proxy->reset();
527 db_file = tracker->GetFullDBFilePath(kOriginId, kName); 499 db_file = tracker->GetFullDBFilePath(kOriginId, kName);
528 EXPECT_TRUE(base::CreateDirectory(db_file.DirName())); 500 EXPECT_TRUE(base::CreateDirectory(db_file.DirName()));
529 EXPECT_TRUE(EnsureFileOfSize(db_file, 100)); 501 EXPECT_TRUE(EnsureFileOfSize(db_file, 100));
530 DatabaseConnections crashed_renderer_connections; 502 DatabaseConnections crashed_renderer_connections;
531 crashed_renderer_connections.AddConnection(kOriginId, kName); 503 crashed_renderer_connections.AddConnection(kOriginId, kName);
532 EXPECT_FALSE(test_quota_proxy->WasModificationNotified(kOrigin, 100)); 504 EXPECT_FALSE(test_quota_proxy->WasModificationNotified(kOrigin, 100));
533 tracker->CloseDatabases(crashed_renderer_connections); 505 tracker->CloseDatabases(crashed_renderer_connections);
534 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, 100)); 506 EXPECT_TRUE(test_quota_proxy->WasModificationNotified(kOrigin, 100));
(...skipping 21 matching lines...) Expand all
556 base::FilePath origin2_db_dir; 528 base::FilePath origin2_db_dir;
557 { 529 {
558 scoped_refptr<MockSpecialStoragePolicy> special_storage_policy = 530 scoped_refptr<MockSpecialStoragePolicy> special_storage_policy =
559 new MockSpecialStoragePolicy; 531 new MockSpecialStoragePolicy;
560 special_storage_policy->AddSessionOnly(GURL(kOrigin2Url)); 532 special_storage_policy->AddSessionOnly(GURL(kOrigin2Url));
561 scoped_refptr<DatabaseTracker> tracker(new DatabaseTracker( 533 scoped_refptr<DatabaseTracker> tracker(new DatabaseTracker(
562 temp_dir.GetPath(), false, special_storage_policy.get(), NULL, 534 temp_dir.GetPath(), false, special_storage_policy.get(), NULL,
563 base::ThreadTaskRunnerHandle::Get().get())); 535 base::ThreadTaskRunnerHandle::Get().get()));
564 536
565 // Open two new databases. 537 // Open two new databases.
566 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, 538 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, &database_size);
567 &database_size);
568 EXPECT_EQ(0, database_size); 539 EXPECT_EQ(0, database_size);
569 tracker->DatabaseOpened(kOrigin2, kDB2, kDescription, 0, 540 tracker->DatabaseOpened(kOrigin2, kDB2, kDescription, 0, &database_size);
570 &database_size);
571 EXPECT_EQ(0, database_size); 541 EXPECT_EQ(0, database_size);
572 542
573 // Write some data to each file. 543 // Write some data to each file.
574 base::FilePath db_file; 544 base::FilePath db_file;
575 db_file = tracker->GetFullDBFilePath(kOrigin1, kDB1); 545 db_file = tracker->GetFullDBFilePath(kOrigin1, kDB1);
576 EXPECT_TRUE(base::CreateDirectory(db_file.DirName())); 546 EXPECT_TRUE(base::CreateDirectory(db_file.DirName()));
577 EXPECT_TRUE(EnsureFileOfSize(db_file, 1)); 547 EXPECT_TRUE(EnsureFileOfSize(db_file, 1));
578 548
579 db_file = tracker->GetFullDBFilePath(kOrigin2, kDB2); 549 db_file = tracker->GetFullDBFilePath(kOrigin2, kDB2);
580 EXPECT_TRUE(base::CreateDirectory(db_file.DirName())); 550 EXPECT_TRUE(base::CreateDirectory(db_file.DirName()));
(...skipping 17 matching lines...) Expand all
598 scoped_refptr<DatabaseTracker> tracker( 568 scoped_refptr<DatabaseTracker> tracker(
599 new DatabaseTracker(temp_dir.GetPath(), false, NULL, NULL, NULL)); 569 new DatabaseTracker(temp_dir.GetPath(), false, NULL, NULL, NULL));
600 570
601 // Get all data for all origins. 571 // Get all data for all origins.
602 std::vector<OriginInfo> origins_info; 572 std::vector<OriginInfo> origins_info;
603 EXPECT_TRUE(tracker->GetAllOriginsInfo(&origins_info)); 573 EXPECT_TRUE(tracker->GetAllOriginsInfo(&origins_info));
604 // kOrigin1 was not session-only, so it survived. kOrigin2 was session-only 574 // kOrigin1 was not session-only, so it survived. kOrigin2 was session-only
605 // and it got deleted. 575 // and it got deleted.
606 EXPECT_EQ(size_t(1), origins_info.size()); 576 EXPECT_EQ(size_t(1), origins_info.size());
607 EXPECT_EQ(kOrigin1, origins_info[0].GetOriginIdentifier()); 577 EXPECT_EQ(kOrigin1, origins_info[0].GetOriginIdentifier());
608 EXPECT_TRUE( 578 EXPECT_TRUE(base::PathExists(tracker->GetFullDBFilePath(kOrigin1, kDB1)));
609 base::PathExists(tracker->GetFullDBFilePath(kOrigin1, kDB1)));
610 EXPECT_EQ(base::FilePath(), tracker->GetFullDBFilePath(kOrigin2, kDB2)); 579 EXPECT_EQ(base::FilePath(), tracker->GetFullDBFilePath(kOrigin2, kDB2));
611 580
612 // The origin directory of kOrigin1 remains, but the origin directory of 581 // The origin directory of kOrigin1 remains, but the origin directory of
613 // kOrigin2 is deleted. 582 // kOrigin2 is deleted.
614 EXPECT_TRUE(base::PathExists(origin1_db_dir)); 583 EXPECT_TRUE(base::PathExists(origin1_db_dir));
615 EXPECT_FALSE(base::PathExists(origin2_db_dir)); 584 EXPECT_FALSE(base::PathExists(origin2_db_dir));
616 } 585 }
617 586
618 static void DatabaseTrackerSetForceKeepSessionState() { 587 static void DatabaseTrackerSetForceKeepSessionState() {
619 int64_t database_size = 0; 588 int64_t database_size = 0;
(...skipping 14 matching lines...) Expand all
634 { 603 {
635 scoped_refptr<MockSpecialStoragePolicy> special_storage_policy = 604 scoped_refptr<MockSpecialStoragePolicy> special_storage_policy =
636 new MockSpecialStoragePolicy; 605 new MockSpecialStoragePolicy;
637 special_storage_policy->AddSessionOnly(GURL(kOrigin2Url)); 606 special_storage_policy->AddSessionOnly(GURL(kOrigin2Url));
638 scoped_refptr<DatabaseTracker> tracker(new DatabaseTracker( 607 scoped_refptr<DatabaseTracker> tracker(new DatabaseTracker(
639 temp_dir.GetPath(), false, special_storage_policy.get(), NULL, 608 temp_dir.GetPath(), false, special_storage_policy.get(), NULL,
640 base::ThreadTaskRunnerHandle::Get().get())); 609 base::ThreadTaskRunnerHandle::Get().get()));
641 tracker->SetForceKeepSessionState(); 610 tracker->SetForceKeepSessionState();
642 611
643 // Open two new databases. 612 // Open two new databases.
644 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, 613 tracker->DatabaseOpened(kOrigin1, kDB1, kDescription, 0, &database_size);
645 &database_size);
646 EXPECT_EQ(0, database_size); 614 EXPECT_EQ(0, database_size);
647 tracker->DatabaseOpened(kOrigin2, kDB2, kDescription, 0, 615 tracker->DatabaseOpened(kOrigin2, kDB2, kDescription, 0, &database_size);
648 &database_size);
649 EXPECT_EQ(0, database_size); 616 EXPECT_EQ(0, database_size);
650 617
651 // Write some data to each file. 618 // Write some data to each file.
652 base::FilePath db_file; 619 base::FilePath db_file;
653 db_file = tracker->GetFullDBFilePath(kOrigin1, kDB1); 620 db_file = tracker->GetFullDBFilePath(kOrigin1, kDB1);
654 EXPECT_TRUE(base::CreateDirectory(db_file.DirName())); 621 EXPECT_TRUE(base::CreateDirectory(db_file.DirName()));
655 EXPECT_TRUE(EnsureFileOfSize(db_file, 1)); 622 EXPECT_TRUE(EnsureFileOfSize(db_file, 1));
656 623
657 db_file = tracker->GetFullDBFilePath(kOrigin2, kDB2); 624 db_file = tracker->GetFullDBFilePath(kOrigin2, kDB2);
658 EXPECT_TRUE(base::CreateDirectory(db_file.DirName())); 625 EXPECT_TRUE(base::CreateDirectory(db_file.DirName()));
(...skipping 15 matching lines...) Expand all
674 641
675 // At this point, the database tracker should be gone. Create a new one. 642 // At this point, the database tracker should be gone. Create a new one.
676 scoped_refptr<DatabaseTracker> tracker( 643 scoped_refptr<DatabaseTracker> tracker(
677 new DatabaseTracker(temp_dir.GetPath(), false, NULL, NULL, NULL)); 644 new DatabaseTracker(temp_dir.GetPath(), false, NULL, NULL, NULL));
678 645
679 // Get all data for all origins. 646 // Get all data for all origins.
680 std::vector<OriginInfo> origins_info; 647 std::vector<OriginInfo> origins_info;
681 EXPECT_TRUE(tracker->GetAllOriginsInfo(&origins_info)); 648 EXPECT_TRUE(tracker->GetAllOriginsInfo(&origins_info));
682 // No origins were deleted. 649 // No origins were deleted.
683 EXPECT_EQ(size_t(2), origins_info.size()); 650 EXPECT_EQ(size_t(2), origins_info.size());
684 EXPECT_TRUE( 651 EXPECT_TRUE(base::PathExists(tracker->GetFullDBFilePath(kOrigin1, kDB1)));
685 base::PathExists(tracker->GetFullDBFilePath(kOrigin1, kDB1))); 652 EXPECT_TRUE(base::PathExists(tracker->GetFullDBFilePath(kOrigin2, kDB2)));
686 EXPECT_TRUE(
687 base::PathExists(tracker->GetFullDBFilePath(kOrigin2, kDB2)));
688 653
689 EXPECT_TRUE(base::PathExists(origin1_db_dir)); 654 EXPECT_TRUE(base::PathExists(origin1_db_dir));
690 EXPECT_TRUE(base::PathExists(origin2_db_dir)); 655 EXPECT_TRUE(base::PathExists(origin2_db_dir));
691 } 656 }
692 657
693 static void EmptyDatabaseNameIsValid() { 658 static void EmptyDatabaseNameIsValid() {
694 const GURL kOrigin(kOrigin1Url); 659 const GURL kOrigin(kOrigin1Url);
695 const std::string kOriginId = storage::GetIdentifierFromOrigin(kOrigin); 660 const std::string kOriginId = storage::GetIdentifierFromOrigin(kOrigin);
696 const base::string16 kEmptyName; 661 const base::string16 kEmptyName;
697 const base::string16 kDescription(ASCIIToUTF16("description")); 662 const base::string16 kDescription(ASCIIToUTF16("description"));
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 721
757 // Verify does no harm when there is no such database. 722 // Verify does no harm when there is no such database.
758 tracker->HandleSqliteError(kOriginId, kName, SQLITE_CORRUPT); 723 tracker->HandleSqliteError(kOriginId, kName, SQLITE_CORRUPT);
759 EXPECT_FALSE(tracker->IsDatabaseScheduledForDeletion(kOriginId, kName)); 724 EXPECT_FALSE(tracker->IsDatabaseScheduledForDeletion(kOriginId, kName));
760 EXPECT_FALSE(observer.DidReceiveNewNotification()); 725 EXPECT_FALSE(observer.DidReceiveNewNotification());
761 726
762 // -------------------------------------------------------- 727 // --------------------------------------------------------
763 // Create a record of a database in the tracker db and create 728 // Create a record of a database in the tracker db and create
764 // a spoof_db_file on disk in the expected location. 729 // a spoof_db_file on disk in the expected location.
765 int64_t database_size = 0; 730 int64_t database_size = 0;
766 tracker->DatabaseOpened(kOriginId, kName, kDescription, 0, 731 tracker->DatabaseOpened(kOriginId, kName, kDescription, 0, &database_size);
767 &database_size);
768 base::FilePath spoof_db_file = tracker->GetFullDBFilePath(kOriginId, kName); 732 base::FilePath spoof_db_file = tracker->GetFullDBFilePath(kOriginId, kName);
769 EXPECT_FALSE(tracker->GetFullDBFilePath(kOriginId, kName).empty()); 733 EXPECT_FALSE(tracker->GetFullDBFilePath(kOriginId, kName).empty());
770 EXPECT_TRUE(base::CreateDirectory(spoof_db_file.DirName())); 734 EXPECT_TRUE(base::CreateDirectory(spoof_db_file.DirName()));
771 EXPECT_TRUE(EnsureFileOfSize(spoof_db_file, 1)); 735 EXPECT_TRUE(EnsureFileOfSize(spoof_db_file, 1));
772 736
773 // Verify does no harm with a non-error is reported. 737 // Verify does no harm with a non-error is reported.
774 tracker->HandleSqliteError(kOriginId, kName, SQLITE_OK); 738 tracker->HandleSqliteError(kOriginId, kName, SQLITE_OK);
775 EXPECT_FALSE(tracker->IsDatabaseScheduledForDeletion(kOriginId, kName)); 739 EXPECT_FALSE(tracker->IsDatabaseScheduledForDeletion(kOriginId, kName));
776 EXPECT_FALSE(observer.DidReceiveNewNotification()); 740 EXPECT_FALSE(observer.DidReceiveNewNotification());
777 741
778 // Verify that with a connection open, the db is scheduled for deletion, 742 // Verify that with a connection open, the db is scheduled for deletion,
779 // but that the file still exists. 743 // but that the file still exists.
780 tracker->HandleSqliteError(kOriginId, kName, SQLITE_CORRUPT); 744 tracker->HandleSqliteError(kOriginId, kName, SQLITE_CORRUPT);
781 EXPECT_TRUE(tracker->IsDatabaseScheduledForDeletion(kOriginId, kName)); 745 EXPECT_TRUE(tracker->IsDatabaseScheduledForDeletion(kOriginId, kName));
782 EXPECT_TRUE(observer.DidReceiveNewNotification()); 746 EXPECT_TRUE(observer.DidReceiveNewNotification());
783 EXPECT_TRUE(base::PathExists(spoof_db_file)); 747 EXPECT_TRUE(base::PathExists(spoof_db_file));
784 748
785 // Verify that once closed, the file is deleted and the record in the 749 // Verify that once closed, the file is deleted and the record in the
786 // tracker db is removed. 750 // tracker db is removed.
787 tracker->DatabaseClosed(kOriginId, kName); 751 tracker->DatabaseClosed(kOriginId, kName);
788 EXPECT_FALSE(base::PathExists(spoof_db_file)); 752 EXPECT_FALSE(base::PathExists(spoof_db_file));
789 EXPECT_TRUE(tracker->GetFullDBFilePath(kOriginId, kName).empty()); 753 EXPECT_TRUE(tracker->GetFullDBFilePath(kOriginId, kName).empty());
790 754
791 // -------------------------------------------------------- 755 // --------------------------------------------------------
792 // Create another record of a database in the tracker db and create 756 // Create another record of a database in the tracker db and create
793 // a spoof_db_file on disk in the expected location. 757 // a spoof_db_file on disk in the expected location.
794 tracker->DatabaseOpened(kOriginId, kName, kDescription, 0, 758 tracker->DatabaseOpened(kOriginId, kName, kDescription, 0, &database_size);
795 &database_size); 759 base::FilePath spoof_db_file2 =
796 base::FilePath spoof_db_file2 = tracker->GetFullDBFilePath(kOriginId, 760 tracker->GetFullDBFilePath(kOriginId, kName);
797 kName);
798 EXPECT_FALSE(tracker->GetFullDBFilePath(kOriginId, kName).empty()); 761 EXPECT_FALSE(tracker->GetFullDBFilePath(kOriginId, kName).empty());
799 EXPECT_NE(spoof_db_file, spoof_db_file2); 762 EXPECT_NE(spoof_db_file, spoof_db_file2);
800 EXPECT_TRUE(base::CreateDirectory(spoof_db_file2.DirName())); 763 EXPECT_TRUE(base::CreateDirectory(spoof_db_file2.DirName()));
801 EXPECT_TRUE(EnsureFileOfSize(spoof_db_file2, 1)); 764 EXPECT_TRUE(EnsureFileOfSize(spoof_db_file2, 1));
802 765
803 // Verify that with no connection open, the db is deleted immediately. 766 // Verify that with no connection open, the db is deleted immediately.
804 tracker->DatabaseClosed(kOriginId, kName); 767 tracker->DatabaseClosed(kOriginId, kName);
805 tracker->HandleSqliteError(kOriginId, kName, SQLITE_CORRUPT); 768 tracker->HandleSqliteError(kOriginId, kName, SQLITE_CORRUPT);
806 EXPECT_FALSE(tracker->IsDatabaseScheduledForDeletion(kOriginId, kName)); 769 EXPECT_FALSE(tracker->IsDatabaseScheduledForDeletion(kOriginId, kName));
807 EXPECT_FALSE(observer.DidReceiveNewNotification()); 770 EXPECT_FALSE(observer.DidReceiveNewNotification());
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 809
847 TEST(DatabaseTrackerTest, EmptyDatabaseNameIsValid) { 810 TEST(DatabaseTrackerTest, EmptyDatabaseNameIsValid) {
848 DatabaseTracker_TestHelper_Test::EmptyDatabaseNameIsValid(); 811 DatabaseTracker_TestHelper_Test::EmptyDatabaseNameIsValid();
849 } 812 }
850 813
851 TEST(DatabaseTrackerTest, HandleSqliteError) { 814 TEST(DatabaseTrackerTest, HandleSqliteError) {
852 DatabaseTracker_TestHelper_Test::HandleSqliteError(); 815 DatabaseTracker_TestHelper_Test::HandleSqliteError();
853 } 816 }
854 817
855 } // namespace content 818 } // namespace content
OLDNEW
« no previous file with comments | « storage/browser/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698