Home | History | Annotate | Download | only in webdata
      1 // Copyright 2014 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 "components/password_manager/core/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 
     13 namespace {
     14 
     15 WebDatabaseTable::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 
     24 LoginsTable* LoginsTable::FromWebDatabase(WebDatabase* db) {
     25   return static_cast<LoginsTable*>(db->GetTable(GetKey()));
     26 }
     27 
     28 WebDatabaseTable::TypeKey LoginsTable::GetTypeKey() const {
     29   return GetKey();
     30 }
     31 
     32 bool 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 
     61 bool LoginsTable::IsSyncable() {
     62   return true;
     63 }
     64 
     65 bool LoginsTable::MigrateToVersion(int version,
     66                                    bool* update_compatible_version) {
     67   return true;
     68 }
     69