logins_table_win.cc revision ddb351dbec246cf1fab5ec20d2d5520909041de1
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 3// found in the LICENSE file. 4 5#include "chrome/browser/webdata/logins_table.h" 6 7#include "app/sql/statement.h" 8#include "base/logging.h" 9#include "base/time.h" 10#include "base/utf_string_conversions.h" 11#include "chrome/browser/password_manager/ie7_password.h" 12 13bool LoginsTable::AddIE7Login(const IE7PasswordInfo& info) { 14 sql::Statement s(db_->GetUniqueStatement( 15 "INSERT OR REPLACE INTO ie7_logins " 16 "(url_hash, password_value, date_created) " 17 "VALUES (?,?,?)")); 18 if (!s) { 19 NOTREACHED() << db_->GetErrorMessage(); 20 return false; 21 } 22 23 s.BindString(0, WideToUTF8(info.url_hash)); 24 s.BindBlob(1, &info.encrypted_data.front(), 25 static_cast<int>(info.encrypted_data.size())); 26 s.BindInt64(2, info.date_created.ToTimeT()); 27 if (!s.Run()) { 28 NOTREACHED(); 29 return false; 30 } 31 return true; 32} 33 34bool LoginsTable::RemoveIE7Login(const IE7PasswordInfo& info) { 35 // Remove a login by UNIQUE-constrained fields. 36 sql::Statement s(db_->GetUniqueStatement( 37 "DELETE FROM ie7_logins WHERE url_hash = ?")); 38 if (!s) { 39 NOTREACHED() << db_->GetErrorMessage(); 40 return false; 41 } 42 s.BindString(0, WideToUTF8(info.url_hash)); 43 44 if (!s.Run()) { 45 NOTREACHED(); 46 return false; 47 } 48 return true; 49} 50 51bool LoginsTable::GetIE7Login(const IE7PasswordInfo& info, 52 IE7PasswordInfo* result) { 53 DCHECK(result); 54 sql::Statement s(db_->GetUniqueStatement( 55 "SELECT password_value, date_created FROM ie7_logins " 56 "WHERE url_hash == ? ")); 57 if (!s) { 58 NOTREACHED() << db_->GetErrorMessage(); 59 return false; 60 } 61 62 s.BindString(0, WideToUTF8(info.url_hash)); 63 if (s.Step()) { 64 s.ColumnBlobAsVector(0, &result->encrypted_data); 65 result->date_created = base::Time::FromTimeT(s.ColumnInt64(1)); 66 result->url_hash = info.url_hash; 67 } 68 return s.Succeeded(); 69} 70