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 3// found in the LICENSE file. 4 5#include "chrome/browser/webdata/logins_table.h" 6 7#include <limits> 8 9#include "base/logging.h" 10#include "components/webdata/common/web_database.h" 11#include "sql/statement.h" 12 13namespace { 14 15WebDatabaseTable::TypeKey GetKey() { 16 // We just need a unique constant. Use the address of a static that 17 // COMDAT folding won't touch in an optimizing linker. 18 static int table_key = 0; 19 return reinterpret_cast<void*>(&table_key); 20} 21 22} // namespace 23 24LoginsTable* LoginsTable::FromWebDatabase(WebDatabase* db) { 25 return static_cast<LoginsTable*>(db->GetTable(GetKey())); 26} 27 28WebDatabaseTable::TypeKey LoginsTable::GetTypeKey() const { 29 return GetKey(); 30} 31 32bool LoginsTable::CreateTablesIfNecessary() { 33 if (db_->DoesTableExist("logins")) { 34 // We don't check for success. It doesn't matter that much. 35 // If we fail we'll just try again later anyway. 36 ignore_result(db_->Execute("DROP TABLE logins")); 37 } 38 39#if defined(OS_WIN) 40 if (!db_->DoesTableExist("ie7_logins")) { 41 if (!db_->Execute("CREATE TABLE ie7_logins (" 42 "url_hash VARCHAR NOT NULL, " 43 "password_value BLOB, " 44 "date_created INTEGER NOT NULL," 45 "UNIQUE " 46 "(url_hash))")) { 47 NOTREACHED(); 48 return false; 49 } 50 if (!db_->Execute("CREATE INDEX ie7_logins_hash ON " 51 "ie7_logins (url_hash)")) { 52 NOTREACHED(); 53 return false; 54 } 55 } 56#endif 57 58 return true; 59} 60 61bool LoginsTable::IsSyncable() { 62 return true; 63} 64 65bool LoginsTable::MigrateToVersion(int version, 66 bool* update_compatible_version) { 67 return true; 68} 69