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

Side by Side Diff: chrome/browser/webdata/web_intents_table.cc

Issue 207643002: Create new Autofill tables as part of DB migration. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 9 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 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/webdata/web_intents_table.h" 5 #include "chrome/browser/webdata/web_intents_table.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/i18n/case_conversion.h" 9 #include "base/i18n/case_conversion.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 23 matching lines...) Expand all
34 } 34 }
35 35
36 WebIntentsTable* WebIntentsTable::FromWebDatabase(WebDatabase* db) { 36 WebIntentsTable* WebIntentsTable::FromWebDatabase(WebDatabase* db) {
37 return static_cast<WebIntentsTable*>(db->GetTable(GetKey())); 37 return static_cast<WebIntentsTable*>(db->GetTable(GetKey()));
38 } 38 }
39 39
40 WebDatabaseTable::TypeKey WebIntentsTable::GetTypeKey() const { 40 WebDatabaseTable::TypeKey WebIntentsTable::GetTypeKey() const {
41 return GetKey(); 41 return GetKey();
42 } 42 }
43 43
44 bool WebIntentsTable::Init(sql::Connection* db, sql::MetaTable* meta_table) { 44 bool WebIntentsTable::CreateTablesIfNecessary() {
45 WebDatabaseTable::Init(db, meta_table);
46
47 if (!db_->DoesTableExist("web_intents")) { 45 if (!db_->DoesTableExist("web_intents")) {
48 if (!db_->Execute("CREATE TABLE web_intents (" 46 if (!db_->Execute("CREATE TABLE web_intents ("
49 " service_url LONGVARCHAR," 47 " service_url LONGVARCHAR,"
50 " action VARCHAR," 48 " action VARCHAR,"
51 " type VARCHAR," 49 " type VARCHAR,"
52 " title LONGVARCHAR," 50 " title LONGVARCHAR,"
53 " disposition VARCHAR," 51 " disposition VARCHAR,"
54 " scheme VARCHAR," 52 " scheme VARCHAR,"
55 " UNIQUE (service_url, action, scheme, type))")) { 53 " UNIQUE (service_url, action, scheme, type))")) {
56 return false; 54 return false;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 *update_compatible_version = true; 96 *update_compatible_version = true;
99 return MigrateToVersion46AddSchemeColumn(); 97 return MigrateToVersion46AddSchemeColumn();
100 } 98 }
101 99
102 return true; 100 return true;
103 } 101 }
104 102
105 // Updates the table by way of renaming the old tables, rerunning 103 // Updates the table by way of renaming the old tables, rerunning
106 // the Init method, then selecting old values into the new tables. 104 // the Init method, then selecting old values into the new tables.
107 bool WebIntentsTable::MigrateToVersion46AddSchemeColumn() { 105 bool WebIntentsTable::MigrateToVersion46AddSchemeColumn() {
106 // If the old table doesn't exist, there's nothing to migrate.
107 if (!db_->DoesTableExist("web_intents"))
108 return true;
108 109
109 if (!db_->Execute("ALTER TABLE web_intents RENAME TO old_web_intents")) { 110 if (!db_->Execute("ALTER TABLE web_intents RENAME TO old_web_intents"))
110 DLOG(WARNING) << "Could not backup web_intents table.";
111 return false; 111 return false;
112 }
113 112
114 if (!db_->Execute("ALTER TABLE web_intents_defaults" 113 if (!db_->Execute("ALTER TABLE web_intents_defaults"
115 " RENAME TO old_web_intents_defaults")) { 114 " RENAME TO old_web_intents_defaults"))
116 DLOG(WARNING) << "Could not backup web_intents_defaults table.";
117 return false; 115 return false;
118 }
119 116
120 if (!Init(db_, meta_table_)) return false; 117 if (!CreateTablesIfNecessary())
118 return false;
121 119
122 int error = db_->ExecuteAndReturnErrorCode( 120 int error = db_->ExecuteAndReturnErrorCode(
123 "INSERT INTO web_intents" 121 "INSERT INTO web_intents"
124 " (service_url, action, type, title, disposition)" 122 " (service_url, action, type, title, disposition)"
125 " SELECT " 123 " SELECT "
126 " service_url, action, type, title, disposition" 124 " service_url, action, type, title, disposition"
127 " FROM old_web_intents"); 125 " FROM old_web_intents");
128 126
129 if (error != SQLITE_OK) { 127 if (error != SQLITE_OK) {
130 DLOG(WARNING) << "Could not copy old intent data to upgraded table." 128 DLOG(WARNING) << "Could not copy old intent data to upgraded table."
(...skipping 18 matching lines...) Expand all
149 return false; 147 return false;
150 } 148 }
151 149
152 if (!db_->Execute("DROP table old_web_intents_defaults")) { 150 if (!db_->Execute("DROP table old_web_intents_defaults")) {
153 DLOG(WARNING) << "Could not drop backup web_intents_defaults table."; 151 DLOG(WARNING) << "Could not drop backup web_intents_defaults table.";
154 return false; 152 return false;
155 } 153 }
156 154
157 return true; 155 return true;
158 } 156 }
OLDNEW
« no previous file with comments | « chrome/browser/webdata/web_intents_table.h ('k') | components/autofill/core/browser/webdata/autofill_table.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698