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

Side by Side Diff: chrome/browser/net/sqlite_persistent_cookie_store.cc

Issue 9418021: Clear statement before closing db in cookie code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 10 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
« no previous file with comments | « no previous file | sql/statement.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 548 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 // Otherwise notify on IO thread. 559 // Otherwise notify on IO thread.
560 if (load_success && keys_to_load_.size() > 0) { 560 if (load_success && keys_to_load_.size() > 0) {
561 BrowserThread::PostTask( 561 BrowserThread::PostTask(
562 BrowserThread::DB, FROM_HERE, 562 BrowserThread::DB, FROM_HERE,
563 base::Bind(&Backend::ChainLoadCookies, this, loaded_callback)); 563 base::Bind(&Backend::ChainLoadCookies, this, loaded_callback));
564 } else { 564 } else {
565 BrowserThread::PostTask( 565 BrowserThread::PostTask(
566 BrowserThread::IO, FROM_HERE, 566 BrowserThread::IO, FROM_HERE,
567 base::Bind(&SQLitePersistentCookieStore::Backend::CompleteLoadOnIOThread, 567 base::Bind(&SQLitePersistentCookieStore::Backend::CompleteLoadOnIOThread,
568 this, loaded_callback, load_success)); 568 this, loaded_callback, load_success));
569 if (!restore_old_session_cookies_) 569 if (load_success && !restore_old_session_cookies_)
570 DeleteSessionCookies(); 570 DeleteSessionCookies();
571 } 571 }
572 } 572 }
573 573
574 bool SQLitePersistentCookieStore::Backend::LoadCookiesForDomains( 574 bool SQLitePersistentCookieStore::Backend::LoadCookiesForDomains(
575 const std::set<std::string>& domains) { 575 const std::set<std::string>& domains) {
576 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); 576 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
577 577
578 sql::Statement smt; 578 sql::Statement smt;
579 if (restore_old_session_cookies_) { 579 if (restore_old_session_cookies_) {
580 smt.Assign(db_->GetCachedStatement( 580 smt.Assign(db_->GetCachedStatement(
581 SQL_FROM_HERE, 581 SQL_FROM_HERE,
582 "SELECT creation_utc, host_key, name, value, path, expires_utc, " 582 "SELECT creation_utc, host_key, name, value, path, expires_utc, "
583 "secure, httponly, last_access_utc, has_expires, persistent " 583 "secure, httponly, last_access_utc, has_expires, persistent "
584 "FROM cookies WHERE host_key = ?")); 584 "FROM cookies WHERE host_key = ?"));
585 } else { 585 } else {
586 smt.Assign(db_->GetCachedStatement( 586 smt.Assign(db_->GetCachedStatement(
587 SQL_FROM_HERE, 587 SQL_FROM_HERE,
588 "SELECT creation_utc, host_key, name, value, path, expires_utc, " 588 "SELECT creation_utc, host_key, name, value, path, expires_utc, "
589 "secure, httponly, last_access_utc, has_expires, persistent " 589 "secure, httponly, last_access_utc, has_expires, persistent "
590 "FROM cookies WHERE host_key = ? AND persistent = 1")); 590 "FROM cookies WHERE host_key = ? AND persistent = 1"));
591 } 591 }
592 if (!smt) { 592 if (!smt.is_valid()) {
593 NOTREACHED() << "select statement prep failed"; 593 NOTREACHED() << "select statement prep failed";
594 smt.Clear(); // Disconnect smt_ref from db_.
594 db_.reset(); 595 db_.reset();
595 return false; 596 return false;
596 } 597 }
597 598
598 std::vector<net::CookieMonster::CanonicalCookie*> cookies; 599 std::vector<net::CookieMonster::CanonicalCookie*> cookies;
599 std::set<std::string>::const_iterator it = domains.begin(); 600 std::set<std::string>::const_iterator it = domains.begin();
600 for (; it != domains.end(); ++it) { 601 for (; it != domains.end(); ++it) {
601 smt.BindString(0, *it); 602 smt.BindString(0, *it);
602 while (smt.Step()) { 603 while (smt.Step()) {
603 scoped_ptr<net::CookieMonster::CanonicalCookie> cc( 604 scoped_ptr<net::CookieMonster::CanonicalCookie> cc(
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
963 if (backend_.get()) 964 if (backend_.get())
964 backend_->SetClearLocalStateOnExit(clear_local_state); 965 backend_->SetClearLocalStateOnExit(clear_local_state);
965 } 966 }
966 967
967 void SQLitePersistentCookieStore::Flush(const base::Closure& callback) { 968 void SQLitePersistentCookieStore::Flush(const base::Closure& callback) {
968 if (backend_.get()) 969 if (backend_.get())
969 backend_->Flush(callback); 970 backend_->Flush(callback);
970 else if (!callback.is_null()) 971 else if (!callback.is_null())
971 MessageLoop::current()->PostTask(FROM_HERE, callback); 972 MessageLoop::current()->PostTask(FROM_HERE, callback);
972 } 973 }
OLDNEW
« no previous file with comments | « no previous file | sql/statement.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698