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

Side by Side Diff: net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc

Issue 2319513003: //[chrome/browser/]net: Change ScopedTempDir::path() to GetPath() (Closed)
Patch Set: Just rebased Created 4 years, 3 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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 "net/extras/sqlite/sqlite_persistent_cookie_store.h" 5 #include "net/extras/sqlite/sqlite_persistent_cookie_store.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 // Create a new pool for the few tests that create multiple stores. In other 137 // Create a new pool for the few tests that create multiple stores. In other
138 // cases this is wasted but harmless. 138 // cases this is wasted but harmless.
139 pool_owner_.reset(new base::SequencedWorkerPoolOwner(3, "Background Pool")); 139 pool_owner_.reset(new base::SequencedWorkerPoolOwner(3, "Background Pool"));
140 } 140 }
141 141
142 void Create(bool crypt_cookies, bool restore_old_session_cookies) { 142 void Create(bool crypt_cookies, bool restore_old_session_cookies) {
143 if (crypt_cookies) 143 if (crypt_cookies)
144 cookie_crypto_delegate_.reset(new CookieCryptor()); 144 cookie_crypto_delegate_.reset(new CookieCryptor());
145 145
146 store_ = new SQLitePersistentCookieStore( 146 store_ = new SQLitePersistentCookieStore(
147 temp_dir_.path().Append(kCookieFilename), client_task_runner(), 147 temp_dir_.GetPath().Append(kCookieFilename), client_task_runner(),
148 background_task_runner(), restore_old_session_cookies, 148 background_task_runner(), restore_old_session_cookies,
149 cookie_crypto_delegate_.get()); 149 cookie_crypto_delegate_.get());
150 } 150 }
151 151
152 void CreateAndLoad(bool crypt_cookies, 152 void CreateAndLoad(bool crypt_cookies,
153 bool restore_old_session_cookies, 153 bool restore_old_session_cookies,
154 CanonicalCookieVector* cookies) { 154 CanonicalCookieVector* cookies) {
155 Create(crypt_cookies, restore_old_session_cookies); 155 Create(crypt_cookies, restore_old_session_cookies);
156 Load(cookies); 156 Load(cookies);
157 } 157 }
(...skipping 27 matching lines...) Expand all
185 const std::string& path, 185 const std::string& path,
186 const base::Time& creation, 186 const base::Time& creation,
187 const base::Time& expiration) { 187 const base::Time& expiration) {
188 store_->AddCookie(*CanonicalCookie::Create( 188 store_->AddCookie(*CanonicalCookie::Create(
189 url, name, value, domain, path, creation, expiration, false, false, 189 url, name, value, domain, path, creation, expiration, false, false,
190 CookieSameSite::DEFAULT_MODE, false, COOKIE_PRIORITY_DEFAULT)); 190 CookieSameSite::DEFAULT_MODE, false, COOKIE_PRIORITY_DEFAULT));
191 } 191 }
192 192
193 std::string ReadRawDBContents() { 193 std::string ReadRawDBContents() {
194 std::string contents; 194 std::string contents;
195 if (!base::ReadFileToString(temp_dir_.path().Append(kCookieFilename), 195 if (!base::ReadFileToString(temp_dir_.GetPath().Append(kCookieFilename),
196 &contents)) 196 &contents))
197 return std::string(); 197 return std::string();
198 return contents; 198 return contents;
199 } 199 }
200 200
201 void SetUp() override { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); } 201 void SetUp() override { ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); }
202 202
203 void TearDown() override { 203 void TearDown() override {
204 DestroyStore(); 204 DestroyStore();
205 } 205 }
(...skipping 21 matching lines...) Expand all
227 ASSERT_EQ(1U, cookies.size()); 227 ASSERT_EQ(1U, cookies.size());
228 ASSERT_STREQ("foo.bar", cookies[0]->Domain().c_str()); 228 ASSERT_STREQ("foo.bar", cookies[0]->Domain().c_str());
229 ASSERT_STREQ("A", cookies[0]->Name().c_str()); 229 ASSERT_STREQ("A", cookies[0]->Name().c_str());
230 ASSERT_STREQ("B", cookies[0]->Value().c_str()); 230 ASSERT_STREQ("B", cookies[0]->Value().c_str());
231 DestroyStore(); 231 DestroyStore();
232 base::STLDeleteElements(&cookies); 232 base::STLDeleteElements(&cookies);
233 233
234 // Now corrupt the meta table. 234 // Now corrupt the meta table.
235 { 235 {
236 sql::Connection db; 236 sql::Connection db;
237 ASSERT_TRUE(db.Open(temp_dir_.path().Append(kCookieFilename))); 237 ASSERT_TRUE(db.Open(temp_dir_.GetPath().Append(kCookieFilename)));
238 sql::MetaTable meta_table_; 238 sql::MetaTable meta_table_;
239 meta_table_.Init(&db, 1, 1); 239 meta_table_.Init(&db, 1, 1);
240 ASSERT_TRUE(db.Execute("DELETE FROM meta")); 240 ASSERT_TRUE(db.Execute("DELETE FROM meta"));
241 db.Close(); 241 db.Close();
242 } 242 }
243 243
244 // Upon loading, the database should be reset to a good, blank state. 244 // Upon loading, the database should be reset to a good, blank state.
245 CreateAndLoad(false, false, &cookies); 245 CreateAndLoad(false, false, &cookies);
246 ASSERT_EQ(0U, cookies.size()); 246 ASSERT_EQ(0U, cookies.size());
247 247
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 AddCookieWithExpiration(GURL("http://b4.com"), "A", "B", std::string(), "/", 311 AddCookieWithExpiration(GURL("http://b4.com"), "A", "B", std::string(), "/",
312 t, base::Time()); 312 t, base::Time());
313 t += base::TimeDelta::FromInternalValue(10); 313 t += base::TimeDelta::FromInternalValue(10);
314 AddCookieWithExpiration(GURL("http://b5.com"), "A", "B", std::string(), "/", 314 AddCookieWithExpiration(GURL("http://b5.com"), "A", "B", std::string(), "/",
315 t, base::Time()); 315 t, base::Time());
316 DestroyStore(); 316 DestroyStore();
317 317
318 // Load the store a second time. Before the store finishes loading, add a 318 // Load the store a second time. Before the store finishes loading, add a
319 // transient cookie and flush it to disk. 319 // transient cookie and flush it to disk.
320 store_ = new SQLitePersistentCookieStore( 320 store_ = new SQLitePersistentCookieStore(
321 temp_dir_.path().Append(kCookieFilename), client_task_runner(), 321 temp_dir_.GetPath().Append(kCookieFilename), client_task_runner(),
322 background_task_runner(), false, nullptr); 322 background_task_runner(), false, nullptr);
323 323
324 // Posting a blocking task to db_thread_ makes sure that the DB thread waits 324 // Posting a blocking task to db_thread_ makes sure that the DB thread waits
325 // until both Load and Flush have been posted to its task queue. 325 // until both Load and Flush have been posted to its task queue.
326 background_task_runner()->PostTask( 326 background_task_runner()->PostTask(
327 FROM_HERE, base::Bind(&SQLitePersistentCookieStoreTest::WaitOnDBEvent, 327 FROM_HERE, base::Bind(&SQLitePersistentCookieStoreTest::WaitOnDBEvent,
328 base::Unretained(this))); 328 base::Unretained(this)));
329 store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded, 329 store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded,
330 base::Unretained(this))); 330 base::Unretained(this)));
331 t += base::TimeDelta::FromInternalValue(10); 331 t += base::TimeDelta::FromInternalValue(10);
(...skipping 14 matching lines...) Expand all
346 db_thread_event_.Signal(); 346 db_thread_event_.Signal();
347 event.Wait(); 347 event.Wait();
348 loaded_event_.Wait(); 348 loaded_event_.Wait();
349 base::STLDeleteElements(&cookies_); 349 base::STLDeleteElements(&cookies_);
350 DestroyStore(); 350 DestroyStore();
351 351
352 // Load the store a third time, this time restoring session cookies. The 352 // Load the store a third time, this time restoring session cookies. The
353 // store should contain exactly 4 cookies: the 3 persistent, and "c.com", 353 // store should contain exactly 4 cookies: the 3 persistent, and "c.com",
354 // which was added during the second cookie store load. 354 // which was added during the second cookie store load.
355 store_ = new SQLitePersistentCookieStore( 355 store_ = new SQLitePersistentCookieStore(
356 temp_dir_.path().Append(kCookieFilename), client_task_runner(), 356 temp_dir_.GetPath().Append(kCookieFilename), client_task_runner(),
357 background_task_runner(), true, nullptr); 357 background_task_runner(), true, nullptr);
358 store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded, 358 store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded,
359 base::Unretained(this))); 359 base::Unretained(this)));
360 loaded_event_.Wait(); 360 loaded_event_.Wait();
361 ASSERT_EQ(4u, cookies_.size()); 361 ASSERT_EQ(4u, cookies_.size());
362 base::STLDeleteElements(&cookies_); 362 base::STLDeleteElements(&cookies_);
363 } 363 }
364 364
365 // Test that priority load of cookies for a specfic domain key could be 365 // Test that priority load of cookies for a specfic domain key could be
366 // completed before the entire store is loaded 366 // completed before the entire store is loaded
367 TEST_F(SQLitePersistentCookieStoreTest, TestLoadCookiesForKey) { 367 TEST_F(SQLitePersistentCookieStoreTest, TestLoadCookiesForKey) {
368 InitializeStore(false, false); 368 InitializeStore(false, false);
369 base::Time t = base::Time::Now(); 369 base::Time t = base::Time::Now();
370 AddCookie(GURL("http://foo.bar"), "A", "B", std::string(), "/", t); 370 AddCookie(GURL("http://foo.bar"), "A", "B", std::string(), "/", t);
371 t += base::TimeDelta::FromInternalValue(10); 371 t += base::TimeDelta::FromInternalValue(10);
372 AddCookie(GURL("http://www.aaa.com"), "A", "B", std::string(), "/", t); 372 AddCookie(GURL("http://www.aaa.com"), "A", "B", std::string(), "/", t);
373 t += base::TimeDelta::FromInternalValue(10); 373 t += base::TimeDelta::FromInternalValue(10);
374 AddCookie(GURL("http://travel.aaa.com"), "A", "B", std::string(), "/", t); 374 AddCookie(GURL("http://travel.aaa.com"), "A", "B", std::string(), "/", t);
375 t += base::TimeDelta::FromInternalValue(10); 375 t += base::TimeDelta::FromInternalValue(10);
376 AddCookie(GURL("http://www.bbb.com"), "A", "B", std::string(), "/", t); 376 AddCookie(GURL("http://www.bbb.com"), "A", "B", std::string(), "/", t);
377 DestroyStore(); 377 DestroyStore();
378 378
379 store_ = new SQLitePersistentCookieStore( 379 store_ = new SQLitePersistentCookieStore(
380 temp_dir_.path().Append(kCookieFilename), client_task_runner(), 380 temp_dir_.GetPath().Append(kCookieFilename), client_task_runner(),
381 background_task_runner(), false, nullptr); 381 background_task_runner(), false, nullptr);
382 382
383 // Posting a blocking task to db_thread_ makes sure that the DB thread waits 383 // Posting a blocking task to db_thread_ makes sure that the DB thread waits
384 // until both Load and LoadCookiesForKey have been posted to its task queue. 384 // until both Load and LoadCookiesForKey have been posted to its task queue.
385 background_task_runner()->PostTask( 385 background_task_runner()->PostTask(
386 FROM_HERE, base::Bind(&SQLitePersistentCookieStoreTest::WaitOnDBEvent, 386 FROM_HERE, base::Bind(&SQLitePersistentCookieStoreTest::WaitOnDBEvent,
387 base::Unretained(this))); 387 base::Unretained(this)));
388 store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded, 388 store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded,
389 base::Unretained(this))); 389 base::Unretained(this)));
390 store_->LoadCookiesForKey( 390 store_->LoadCookiesForKey(
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 ASSERT_EQ(cookies_loaded.find("foo.bar") != cookies_loaded.end(), true); 425 ASSERT_EQ(cookies_loaded.find("foo.bar") != cookies_loaded.end(), true);
426 ASSERT_EQ(cookies_loaded.find("www.bbb.com") != cookies_loaded.end(), true); 426 ASSERT_EQ(cookies_loaded.find("www.bbb.com") != cookies_loaded.end(), true);
427 base::STLDeleteElements(&cookies_); 427 base::STLDeleteElements(&cookies_);
428 } 428 }
429 429
430 // Test that we can force the database to be written by calling Flush(). 430 // Test that we can force the database to be written by calling Flush().
431 TEST_F(SQLitePersistentCookieStoreTest, TestFlush) { 431 TEST_F(SQLitePersistentCookieStoreTest, TestFlush) {
432 InitializeStore(false, false); 432 InitializeStore(false, false);
433 // File timestamps don't work well on all platforms, so we'll determine 433 // File timestamps don't work well on all platforms, so we'll determine
434 // whether the DB file has been modified by checking its size. 434 // whether the DB file has been modified by checking its size.
435 base::FilePath path = temp_dir_.path().Append(kCookieFilename); 435 base::FilePath path = temp_dir_.GetPath().Append(kCookieFilename);
436 base::File::Info info; 436 base::File::Info info;
437 ASSERT_TRUE(base::GetFileInfo(path, &info)); 437 ASSERT_TRUE(base::GetFileInfo(path, &info));
438 int64_t base_size = info.size; 438 int64_t base_size = info.size;
439 439
440 // Write some large cookies, so the DB will have to expand by several KB. 440 // Write some large cookies, so the DB will have to expand by several KB.
441 for (char c = 'a'; c < 'z'; ++c) { 441 for (char c = 'a'; c < 'z'; ++c) {
442 // Each cookie needs a unique timestamp for creation_utc (see DB schema). 442 // Each cookie needs a unique timestamp for creation_utc (see DB schema).
443 base::Time t = base::Time::Now() + base::TimeDelta::FromMicroseconds(c); 443 base::Time t = base::Time::Now() + base::TimeDelta::FromMicroseconds(c);
444 std::string name(1, c); 444 std::string name(1, c);
445 std::string value(1000, c); 445 std::string value(1000, c);
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
719 } 719 }
720 EXPECT_EQ("encrypted_value123XYZ", cookie_name->Value()); 720 EXPECT_EQ("encrypted_value123XYZ", cookie_name->Value());
721 EXPECT_EQ("something456ABC", cookie_other->Value()); 721 EXPECT_EQ("something456ABC", cookie_other->Value());
722 DestroyStore(); 722 DestroyStore();
723 base::STLDeleteElements(&cookies_); 723 base::STLDeleteElements(&cookies_);
724 724
725 // Examine the real record to make sure plaintext version doesn't exist. 725 // Examine the real record to make sure plaintext version doesn't exist.
726 sql::Connection db; 726 sql::Connection db;
727 sql::Statement smt; 727 sql::Statement smt;
728 int resultcount = 0; 728 int resultcount = 0;
729 ASSERT_TRUE(db.Open(temp_dir_.path().Append(kCookieFilename))); 729 ASSERT_TRUE(db.Open(temp_dir_.GetPath().Append(kCookieFilename)));
730 smt.Assign(db.GetCachedStatement(SQL_FROM_HERE, 730 smt.Assign(db.GetCachedStatement(SQL_FROM_HERE,
731 "SELECT * " 731 "SELECT * "
732 "FROM cookies " 732 "FROM cookies "
733 "WHERE host_key = 'foo.bar'")); 733 "WHERE host_key = 'foo.bar'"));
734 while (smt.Step()) { 734 while (smt.Step()) {
735 resultcount++; 735 resultcount++;
736 for (int i = 0; i < smt.ColumnCount(); i++) { 736 for (int i = 0; i < smt.ColumnCount(); i++) {
737 EXPECT_EQ(smt.ColumnString(i).find("value"), std::string::npos); 737 EXPECT_EQ(smt.ColumnString(i).find("value"), std::string::npos);
738 EXPECT_EQ(smt.ColumnString(i).find("something"), std::string::npos); 738 EXPECT_EQ(smt.ColumnString(i).find("something"), std::string::npos);
739 } 739 }
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 EXPECT_TRUE(was_called_with_no_cookies); 825 EXPECT_TRUE(was_called_with_no_cookies);
826 826
827 // Same with trying to load a specific cookie. 827 // Same with trying to load a specific cookie.
828 was_called_with_no_cookies = false; 828 was_called_with_no_cookies = false;
829 store_->LoadCookiesForKey("foo.bar", base::Bind(WasCalledWithNoCookies, 829 store_->LoadCookiesForKey("foo.bar", base::Bind(WasCalledWithNoCookies,
830 &was_called_with_no_cookies)); 830 &was_called_with_no_cookies));
831 EXPECT_TRUE(was_called_with_no_cookies); 831 EXPECT_TRUE(was_called_with_no_cookies);
832 } 832 }
833 833
834 } // namespace net 834 } // namespace net
OLDNEW
« no previous file with comments | « net/extras/sqlite/sqlite_persistent_cookie_store_perftest.cc ('k') | net/http/http_stream_parser_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698