Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/net/sqlite_persistent_cookie_store.h" | 5 #include "chrome/browser/net/sqlite_persistent_cookie_store.h" |
| 6 | 6 |
| 7 #include <list> | 7 #include <list> |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <utility> | 10 #include <utility> |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 287 "expires_utc INTEGER NOT NULL," | 287 "expires_utc INTEGER NOT NULL," |
| 288 "secure INTEGER NOT NULL," | 288 "secure INTEGER NOT NULL," |
| 289 "httponly INTEGER NOT NULL," | 289 "httponly INTEGER NOT NULL," |
| 290 "last_access_utc INTEGER NOT NULL, " | 290 "last_access_utc INTEGER NOT NULL, " |
| 291 "has_expires INTEGER NOT NULL DEFAULT 1, " | 291 "has_expires INTEGER NOT NULL DEFAULT 1, " |
| 292 "persistent INTEGER NOT NULL DEFAULT 1)")) | 292 "persistent INTEGER NOT NULL DEFAULT 1)")) |
| 293 return false; | 293 return false; |
| 294 } | 294 } |
| 295 | 295 |
| 296 // Try to create the index every time. Older versions did not have this index, | 296 // Try to create the index every time. Older versions did not have this index, |
| 297 // so we want those people to get it. Ignore errors, since it may exist. | 297 // so we want those people to get it. |
|
wtc
2011/12/21 01:16:17
shess: please confirm that you want this function
Scott Hess - ex-Googler
2011/12/21 02:41:01
Yeah, the "CREATE INDEX IF NOT EXISTS" will succee
| |
| 298 db->Execute("CREATE INDEX IF NOT EXISTS cookie_times ON cookies" | 298 if (!db->Execute("CREATE INDEX IF NOT EXISTS cookie_times ON cookies" |
| 299 " (creation_utc)"); | 299 " (creation_utc)")) |
| 300 return false; | |
| 300 | 301 |
| 301 db->Execute("CREATE INDEX IF NOT EXISTS domain ON cookies(host_key)"); | 302 if (!db->Execute("CREATE INDEX IF NOT EXISTS domain ON cookies(host_key)")) |
| 303 return false; | |
| 302 | 304 |
| 303 return true; | 305 return true; |
| 304 } | 306 } |
| 305 | 307 |
| 306 } // namespace | 308 } // namespace |
| 307 | 309 |
| 308 void SQLitePersistentCookieStore::Backend::Load( | 310 void SQLitePersistentCookieStore::Backend::Load( |
| 309 const LoadedCallback& loaded_callback) { | 311 const LoadedCallback& loaded_callback) { |
| 310 // This function should be called only once per instance. | 312 // This function should be called only once per instance. |
| 311 DCHECK(!db_.get()); | 313 DCHECK(!db_.get()); |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 664 if (cur_version == 3) { | 666 if (cur_version == 3) { |
| 665 // The time epoch changed for Mac & Linux in this version to match Windows. | 667 // The time epoch changed for Mac & Linux in this version to match Windows. |
| 666 // This patch came after the main epoch change happened, so some | 668 // This patch came after the main epoch change happened, so some |
| 667 // developers have "good" times for cookies added by the more recent | 669 // developers have "good" times for cookies added by the more recent |
| 668 // versions. So we have to be careful to only update times that are under | 670 // versions. So we have to be careful to only update times that are under |
| 669 // the old system (which will appear to be from before 1970 in the new | 671 // the old system (which will appear to be from before 1970 in the new |
| 670 // system). The magic number used below is 1970 in our time units. | 672 // system). The magic number used below is 1970 in our time units. |
| 671 sql::Transaction transaction(db_.get()); | 673 sql::Transaction transaction(db_.get()); |
| 672 transaction.Begin(); | 674 transaction.Begin(); |
| 673 #if !defined(OS_WIN) | 675 #if !defined(OS_WIN) |
| 674 db_->Execute( | 676 ignore_result(db_->Execute( |
| 675 "UPDATE cookies " | 677 "UPDATE cookies " |
| 676 "SET creation_utc = creation_utc + 11644473600000000 " | 678 "SET creation_utc = creation_utc + 11644473600000000 " |
| 677 "WHERE rowid IN " | 679 "WHERE rowid IN " |
| 678 "(SELECT rowid FROM cookies WHERE " | 680 "(SELECT rowid FROM cookies WHERE " |
| 679 "creation_utc > 0 AND creation_utc < 11644473600000000)"); | 681 "creation_utc > 0 AND creation_utc < 11644473600000000)")); |
| 680 db_->Execute( | 682 ignore_result(db_->Execute( |
| 681 "UPDATE cookies " | 683 "UPDATE cookies " |
| 682 "SET expires_utc = expires_utc + 11644473600000000 " | 684 "SET expires_utc = expires_utc + 11644473600000000 " |
| 683 "WHERE rowid IN " | 685 "WHERE rowid IN " |
| 684 "(SELECT rowid FROM cookies WHERE " | 686 "(SELECT rowid FROM cookies WHERE " |
| 685 "expires_utc > 0 AND expires_utc < 11644473600000000)"); | 687 "expires_utc > 0 AND expires_utc < 11644473600000000)")); |
| 686 db_->Execute( | 688 ignore_result(db_->Execute( |
| 687 "UPDATE cookies " | 689 "UPDATE cookies " |
| 688 "SET last_access_utc = last_access_utc + 11644473600000000 " | 690 "SET last_access_utc = last_access_utc + 11644473600000000 " |
| 689 "WHERE rowid IN " | 691 "WHERE rowid IN " |
| 690 "(SELECT rowid FROM cookies WHERE " | 692 "(SELECT rowid FROM cookies WHERE " |
| 691 "last_access_utc > 0 AND last_access_utc < 11644473600000000)"); | 693 "last_access_utc > 0 AND last_access_utc < 11644473600000000)")); |
| 692 #endif | 694 #endif |
| 693 ++cur_version; | 695 ++cur_version; |
| 694 meta_table_.SetVersionNumber(cur_version); | 696 meta_table_.SetVersionNumber(cur_version); |
| 695 transaction.Commit(); | 697 transaction.Commit(); |
| 696 } | 698 } |
| 697 | 699 |
| 698 if (cur_version == 4) { | 700 if (cur_version == 4) { |
| 699 const base::TimeTicks start_time = base::TimeTicks::Now(); | 701 const base::TimeTicks start_time = base::TimeTicks::Now(); |
| 700 sql::Transaction transaction(db_.get()); | 702 sql::Transaction transaction(db_.get()); |
| 701 if (!transaction.Begin()) | 703 if (!transaction.Begin()) |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 963 if (backend_.get()) | 965 if (backend_.get()) |
| 964 backend_->SetClearLocalStateOnExit(clear_local_state); | 966 backend_->SetClearLocalStateOnExit(clear_local_state); |
| 965 } | 967 } |
| 966 | 968 |
| 967 void SQLitePersistentCookieStore::Flush(const base::Closure& callback) { | 969 void SQLitePersistentCookieStore::Flush(const base::Closure& callback) { |
| 968 if (backend_.get()) | 970 if (backend_.get()) |
| 969 backend_->Flush(callback); | 971 backend_->Flush(callback); |
| 970 else if (!callback.is_null()) | 972 else if (!callback.is_null()) |
| 971 MessageLoop::current()->PostTask(FROM_HERE, callback); | 973 MessageLoop::current()->PostTask(FROM_HERE, callback); |
| 972 } | 974 } |
| OLD | NEW |