| Index: chrome/browser/webdata/web_database.cc
 | 
| diff --git a/chrome/browser/webdata/web_database.cc b/chrome/browser/webdata/web_database.cc
 | 
| index 9cb7f23f3724ba86456a057a59d86d177b8fa740..71adceda4c5f58b870aa6019053391d3b7c64188 100644
 | 
| --- a/chrome/browser/webdata/web_database.cc
 | 
| +++ b/chrome/browser/webdata/web_database.cc
 | 
| @@ -6,12 +6,7 @@
 | 
|  
 | 
|  #include <algorithm>
 | 
|  
 | 
| -#include "chrome/browser/webdata/autofill_table.h"
 | 
| -#include "chrome/browser/webdata/keyword_table.h"
 | 
| -#include "chrome/browser/webdata/logins_table.h"
 | 
| -#include "chrome/browser/webdata/token_service_table.h"
 | 
| -#include "chrome/browser/webdata/web_apps_table.h"
 | 
| -#include "chrome/browser/webdata/web_intents_table.h"
 | 
| +#include "base/stl_util.h"
 | 
|  #include "content/public/browser/notification_service.h"
 | 
|  #include "sql/statement.h"
 | 
|  #include "sql/transaction.h"
 | 
| @@ -51,34 +46,23 @@ sql::InitStatus FailedMigrationTo(int version_num) {
 | 
|  
 | 
|  WebDatabase::WebDatabase() {}
 | 
|  
 | 
| -WebDatabase::~WebDatabase() {}
 | 
| -
 | 
| -void WebDatabase::BeginTransaction() {
 | 
| -  db_.BeginTransaction();
 | 
| -}
 | 
| -
 | 
| -void WebDatabase::CommitTransaction() {
 | 
| -  db_.CommitTransaction();
 | 
| +WebDatabase::~WebDatabase() {
 | 
|  }
 | 
|  
 | 
| -AutofillTable* WebDatabase::GetAutofillTable() {
 | 
| -  return autofill_table_;
 | 
| +void WebDatabase::AddTable(WebDatabaseTable* table) {
 | 
| +  tables_[table->GetTypeKey()] = table;
 | 
|  }
 | 
|  
 | 
| -KeywordTable* WebDatabase::GetKeywordTable() {
 | 
| -  return keyword_table_;
 | 
| +WebDatabaseTable* WebDatabase::GetTable(WebDatabaseTable::TypeKey key) {
 | 
| +  return tables_[key];
 | 
|  }
 | 
|  
 | 
| -LoginsTable* WebDatabase::GetLoginsTable() {
 | 
| -  return logins_table_;
 | 
| -}
 | 
| -
 | 
| -TokenServiceTable* WebDatabase::GetTokenServiceTable() {
 | 
| -  return token_service_table_;
 | 
| +void WebDatabase::BeginTransaction() {
 | 
| +  db_.BeginTransaction();
 | 
|  }
 | 
|  
 | 
| -WebAppsTable* WebDatabase::GetWebAppsTable() {
 | 
| -  return web_apps_table_;
 | 
| +void WebDatabase::CommitTransaction() {
 | 
| +  db_.CommitTransaction();
 | 
|  }
 | 
|  
 | 
|  sql::Connection* WebDatabase::GetSQLConnection() {
 | 
| @@ -123,36 +107,11 @@ sql::InitStatus WebDatabase::Init(const base::FilePath& db_name,
 | 
|      return sql::INIT_TOO_NEW;
 | 
|    }
 | 
|  
 | 
| -  // TODO(joi): Table creation should move out of this class; switch
 | 
| -  // to a two-phase init to accomplish this.
 | 
| -
 | 
| -  // Create the tables.
 | 
| -  autofill_table_ = new AutofillTable(&db_, &meta_table_);
 | 
| -  tables_.push_back(autofill_table_);
 | 
| -
 | 
| -  keyword_table_ = new KeywordTable(&db_, &meta_table_);
 | 
| -  tables_.push_back(keyword_table_);
 | 
| -
 | 
| -  // TODO(mdm): We only really need the LoginsTable on Windows for IE7 password
 | 
| -  // access, but for now, we still create it on all platforms since it deletes
 | 
| -  // the old logins table. We can remove this after a while, e.g. in M22 or so.
 | 
| -  logins_table_ = new LoginsTable(&db_, &meta_table_);
 | 
| -  tables_.push_back(logins_table_);
 | 
| -
 | 
| -  token_service_table_ = new TokenServiceTable(&db_, &meta_table_);
 | 
| -  tables_.push_back(token_service_table_);
 | 
| -
 | 
| -  web_apps_table_ = new WebAppsTable(&db_, &meta_table_);
 | 
| -  tables_.push_back(web_apps_table_);
 | 
| -
 | 
| -  web_intents_table_ = new WebIntentsTable(&db_, &meta_table_);
 | 
| -  tables_.push_back(web_intents_table_);
 | 
| -
 | 
|    // Initialize the tables.
 | 
| -  for (ScopedVector<WebDatabaseTable>::iterator it = tables_.begin();
 | 
| +  for (TableMap::iterator it = tables_.begin();
 | 
|         it != tables_.end();
 | 
|         ++it) {
 | 
| -    if (!(*it)->Init()) {
 | 
| +    if (!it->second->Init(&db_, &meta_table_)) {
 | 
|        LOG(WARNING) << "Unable to initialize the web database.";
 | 
|        return sql::INIT_FAILURE;
 | 
|      }
 | 
| @@ -199,14 +158,14 @@ sql::InitStatus WebDatabase::MigrateOldVersionsAsNeeded(
 | 
|         next_version <= kCurrentVersionNumber;
 | 
|         ++next_version) {
 | 
|      // Give each table a chance to migrate to this version.
 | 
| -    for (ScopedVector<WebDatabaseTable>::iterator it = tables_.begin();
 | 
| +    for (TableMap::iterator it = tables_.begin();
 | 
|           it != tables_.end();
 | 
|           ++it) {
 | 
|        // Any of the tables may set this to true, but by default it is false.
 | 
|        bool update_compatible_version = false;
 | 
| -      if (!(*it)->MigrateToVersion(next_version,
 | 
| -                                   app_locale,
 | 
| -                                   &update_compatible_version)) {
 | 
| +      if (!it->second->MigrateToVersion(next_version,
 | 
| +                                           app_locale,
 | 
| +                                           &update_compatible_version)) {
 | 
|          return FailedMigrationTo(next_version);
 | 
|        }
 | 
|  
 | 
| 
 |