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

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

Issue 10381016: Remove the "autogenerate keyword" bit on TemplateURL. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 7 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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 keyword.show_in_default_list = true; 62 keyword.show_in_default_list = true;
63 keyword.safe_for_autoreplace = true; 63 keyword.safe_for_autoreplace = true;
64 keyword.input_encodings.push_back("UTF-8"); 64 keyword.input_encodings.push_back("UTF-8");
65 keyword.input_encodings.push_back("UTF-16"); 65 keyword.input_encodings.push_back("UTF-16");
66 keyword.id = 1; 66 keyword.id = 1;
67 keyword.date_created = Time::Now(); 67 keyword.date_created = Time::Now();
68 keyword.last_modified = keyword.date_created + TimeDelta::FromSeconds(10); 68 keyword.last_modified = keyword.date_created + TimeDelta::FromSeconds(10);
69 keyword.created_by_policy = true; 69 keyword.created_by_policy = true;
70 keyword.usage_count = 32; 70 keyword.usage_count = 32;
71 keyword.prepopulate_id = 10; 71 keyword.prepopulate_id = 10;
72 TemplateURL url(NULL, keyword); 72 EXPECT_TRUE(keyword_table->AddKeyword(keyword));
73 EXPECT_TRUE(keyword_table->AddKeyword(url));
74 73
75 KeywordTable::Keywords keywords; 74 KeywordTable::Keywords keywords;
76 EXPECT_TRUE(keyword_table->GetKeywords(&keywords)); 75 EXPECT_TRUE(keyword_table->GetKeywords(&keywords));
77 EXPECT_EQ(1U, keywords.size()); 76 EXPECT_EQ(1U, keywords.size());
78 const TemplateURLData& restored_keyword = keywords.front(); 77 const TemplateURLData& restored_keyword = keywords.front();
79 78
80 EXPECT_EQ(keyword.short_name, restored_keyword.short_name); 79 EXPECT_EQ(keyword.short_name, restored_keyword.short_name);
81 EXPECT_EQ(url.keyword(), TemplateURL(NULL, restored_keyword).keyword()); 80 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword());
82 EXPECT_EQ(keyword.autogenerate_keyword(),
83 restored_keyword.autogenerate_keyword());
84 EXPECT_EQ(keyword.url(), restored_keyword.url()); 81 EXPECT_EQ(keyword.url(), restored_keyword.url());
85 EXPECT_EQ(keyword.suggestions_url, restored_keyword.suggestions_url); 82 EXPECT_EQ(keyword.suggestions_url, restored_keyword.suggestions_url);
86 EXPECT_EQ(keyword.instant_url, restored_keyword.instant_url); 83 EXPECT_EQ(keyword.instant_url, restored_keyword.instant_url);
87 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); 84 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url);
88 EXPECT_EQ(keyword.originating_url, restored_keyword.originating_url); 85 EXPECT_EQ(keyword.originating_url, restored_keyword.originating_url);
89 EXPECT_EQ(keyword.show_in_default_list, 86 EXPECT_EQ(keyword.show_in_default_list,
90 restored_keyword.show_in_default_list); 87 restored_keyword.show_in_default_list);
91 EXPECT_EQ(keyword.safe_for_autoreplace, 88 EXPECT_EQ(keyword.safe_for_autoreplace,
92 restored_keyword.safe_for_autoreplace); 89 restored_keyword.safe_for_autoreplace);
93 EXPECT_EQ(keyword.input_encodings, restored_keyword.input_encodings); 90 EXPECT_EQ(keyword.input_encodings, restored_keyword.input_encodings);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 keyword.show_in_default_list = true; 123 keyword.show_in_default_list = true;
127 keyword.safe_for_autoreplace = true; 124 keyword.safe_for_autoreplace = true;
128 keyword.input_encodings.push_back("UTF-8"); 125 keyword.input_encodings.push_back("UTF-8");
129 keyword.input_encodings.push_back("UTF-16"); 126 keyword.input_encodings.push_back("UTF-16");
130 keyword.id = 10; 127 keyword.id = 10;
131 keyword.date_created = Time::Now(); 128 keyword.date_created = Time::Now();
132 keyword.last_modified = keyword.date_created + TimeDelta::FromSeconds(10); 129 keyword.last_modified = keyword.date_created + TimeDelta::FromSeconds(10);
133 keyword.created_by_policy = true; 130 keyword.created_by_policy = true;
134 keyword.usage_count = 32; 131 keyword.usage_count = 32;
135 keyword.prepopulate_id = 10; 132 keyword.prepopulate_id = 10;
136 TemplateURL url(NULL, keyword); 133 EXPECT_TRUE(keyword_table->AddKeyword(keyword));
137 EXPECT_TRUE(keyword_table->AddKeyword(url));
138 134
139 EXPECT_TRUE(keyword_table->SetDefaultSearchProviderID(10)); 135 EXPECT_TRUE(keyword_table->SetDefaultSearchProviderID(10));
140 EXPECT_TRUE(keyword_table->SetBuiltinKeywordVersion(11)); 136 EXPECT_TRUE(keyword_table->SetBuiltinKeywordVersion(11));
141 137
142 EXPECT_EQ(10, keyword_table->GetDefaultSearchProviderID()); 138 EXPECT_EQ(10, keyword_table->GetDefaultSearchProviderID());
143 EXPECT_EQ(11, keyword_table->GetBuiltinKeywordVersion()); 139 EXPECT_EQ(11, keyword_table->GetBuiltinKeywordVersion());
144 } 140 }
145 141
146 TEST_F(KeywordTableTest, DefaultSearchProviderBackup) { 142 TEST_F(KeywordTableTest, DefaultSearchProviderBackup) {
147 // TODO(ivankr): suppress keyword_table.cc ERROR logs. 143 // TODO(ivankr): suppress keyword_table.cc ERROR logs.
148 WebDatabase db; 144 WebDatabase db;
149 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); 145 ASSERT_EQ(sql::INIT_OK, db.Init(file_));
150 KeywordTable* keyword_table = db.GetKeywordTable(); 146 KeywordTable* keyword_table = db.GetKeywordTable();
151 147
152 EXPECT_EQ(kInvalidTemplateURLID, keyword_table->GetDefaultSearchProviderID()); 148 EXPECT_EQ(kInvalidTemplateURLID, keyword_table->GetDefaultSearchProviderID());
153 149
154 TemplateURLData keyword; 150 TemplateURLData keyword;
155 keyword.short_name = ASCIIToUTF16("short_name"); 151 keyword.short_name = ASCIIToUTF16("short_name");
156 keyword.SetKeyword(ASCIIToUTF16("keyword")); 152 keyword.SetKeyword(ASCIIToUTF16("keyword"));
157 keyword.SetURL("http://url/"); 153 keyword.SetURL("http://url/");
158 keyword.suggestions_url = "url2"; 154 keyword.suggestions_url = "url2";
159 keyword.favicon_url = GURL("http://favicon.url/"); 155 keyword.favicon_url = GURL("http://favicon.url/");
160 keyword.show_in_default_list = true; 156 keyword.show_in_default_list = true;
161 keyword.safe_for_autoreplace = true; 157 keyword.safe_for_autoreplace = true;
162 keyword.id = 1; 158 keyword.id = 1;
163 TemplateURL url(NULL, keyword); 159 EXPECT_TRUE(keyword_table->AddKeyword(keyword));
164 EXPECT_TRUE(keyword_table->AddKeyword(url));
165 160
166 EXPECT_TRUE(keyword_table->SetDefaultSearchProviderID(1)); 161 EXPECT_TRUE(keyword_table->SetDefaultSearchProviderID(1));
167 EXPECT_TRUE(keyword_table->IsBackupSignatureValid()); 162 EXPECT_TRUE(keyword_table->IsBackupSignatureValid(
163 WebDatabase::kCurrentVersionNumber));
168 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID()); 164 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID());
169 165
170 TemplateURLData backup; 166 TemplateURLData backup;
171 EXPECT_TRUE(keyword_table->GetDefaultSearchProviderBackup(&backup)); 167 EXPECT_TRUE(keyword_table->GetDefaultSearchProviderBackup(&backup));
172 // Backup URL should have an invalid ID. 168 // Backup URL should have an invalid ID.
173 EXPECT_EQ(kInvalidTemplateURLID, backup.id); 169 EXPECT_EQ(kInvalidTemplateURLID, backup.id);
174 EXPECT_EQ(keyword.short_name, backup.short_name); 170 EXPECT_EQ(keyword.short_name, backup.short_name);
175 EXPECT_EQ(url.keyword(), TemplateURL(NULL, backup).keyword()); 171 EXPECT_EQ(keyword.keyword(), backup.keyword());
176 EXPECT_EQ(keyword.url(), backup.url()); 172 EXPECT_EQ(keyword.url(), backup.url());
177 EXPECT_EQ(keyword.favicon_url, backup.favicon_url); 173 EXPECT_EQ(keyword.favicon_url, backup.favicon_url);
178 EXPECT_EQ(keyword.suggestions_url, backup.suggestions_url); 174 EXPECT_EQ(keyword.suggestions_url, backup.suggestions_url);
179 EXPECT_EQ(keyword.show_in_default_list, backup.show_in_default_list); 175 EXPECT_EQ(keyword.show_in_default_list, backup.show_in_default_list);
180 EXPECT_EQ(keyword.safe_for_autoreplace, backup.safe_for_autoreplace); 176 EXPECT_EQ(keyword.safe_for_autoreplace, backup.safe_for_autoreplace);
181 EXPECT_FALSE(keyword_table->DidDefaultSearchProviderChange()); 177 EXPECT_FALSE(keyword_table->DidDefaultSearchProviderChange());
182 178
183 // Change the actual setting. 179 // Change the actual setting.
184 EXPECT_TRUE(keyword_table->meta_table_->SetValue( 180 EXPECT_TRUE(keyword_table->meta_table_->SetValue(
185 KeywordTable::kDefaultSearchProviderKey, 2)); 181 KeywordTable::kDefaultSearchProviderKey, 2));
186 EXPECT_TRUE(keyword_table->IsBackupSignatureValid()); 182 EXPECT_TRUE(keyword_table->IsBackupSignatureValid(
183 WebDatabase::kCurrentVersionNumber));
187 EXPECT_EQ(2, keyword_table->GetDefaultSearchProviderID()); 184 EXPECT_EQ(2, keyword_table->GetDefaultSearchProviderID());
188 185
189 EXPECT_TRUE(keyword_table->GetDefaultSearchProviderBackup(&backup)); 186 EXPECT_TRUE(keyword_table->GetDefaultSearchProviderBackup(&backup));
190 EXPECT_EQ(kInvalidTemplateURLID, backup.id); 187 EXPECT_EQ(kInvalidTemplateURLID, backup.id);
191 EXPECT_EQ(keyword.short_name, backup.short_name); 188 EXPECT_EQ(keyword.short_name, backup.short_name);
192 EXPECT_EQ(url.keyword(), TemplateURL(NULL, backup).keyword()); 189 EXPECT_EQ(keyword.keyword(), backup.keyword());
193 EXPECT_EQ(keyword.url(), backup.url()); 190 EXPECT_EQ(keyword.url(), backup.url());
194 EXPECT_EQ(keyword.favicon_url, backup.favicon_url); 191 EXPECT_EQ(keyword.favicon_url, backup.favicon_url);
195 EXPECT_EQ(keyword.suggestions_url, backup.suggestions_url); 192 EXPECT_EQ(keyword.suggestions_url, backup.suggestions_url);
196 EXPECT_EQ(keyword.show_in_default_list, backup.show_in_default_list); 193 EXPECT_EQ(keyword.show_in_default_list, backup.show_in_default_list);
197 EXPECT_EQ(keyword.safe_for_autoreplace, backup.safe_for_autoreplace); 194 EXPECT_EQ(keyword.safe_for_autoreplace, backup.safe_for_autoreplace);
198 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange()); 195 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange());
199 196
200 // Change the backup. 197 // Change the backup.
201 EXPECT_TRUE(keyword_table->meta_table_->SetValue( 198 EXPECT_TRUE(keyword_table->meta_table_->SetValue(
202 KeywordTable::kDefaultSearchProviderKey, 1)); 199 KeywordTable::kDefaultSearchProviderKey, 1));
203 EXPECT_TRUE(keyword_table->meta_table_->SetValue( 200 EXPECT_TRUE(keyword_table->meta_table_->SetValue(
204 KeywordTable::kDefaultSearchIDBackupKey, 2)); 201 KeywordTable::kDefaultSearchIDBackupKey, 2));
205 EXPECT_FALSE(keyword_table->IsBackupSignatureValid()); 202 EXPECT_FALSE(keyword_table->IsBackupSignatureValid(
203 WebDatabase::kCurrentVersionNumber));
206 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID()); 204 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID());
207 EXPECT_FALSE(keyword_table->GetDefaultSearchProviderBackup(&backup)); 205 EXPECT_FALSE(keyword_table->GetDefaultSearchProviderBackup(&backup));
208 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange()); 206 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange());
209 207
210 // Change the signature. 208 // Change the signature.
211 EXPECT_TRUE(keyword_table->meta_table_->SetValue( 209 EXPECT_TRUE(keyword_table->meta_table_->SetValue(
212 KeywordTable::kDefaultSearchIDBackupKey, 1)); 210 KeywordTable::kDefaultSearchIDBackupKey, 1));
213 EXPECT_TRUE(keyword_table->meta_table_->SetValue( 211 EXPECT_TRUE(keyword_table->meta_table_->SetValue(
214 KeywordTable::kBackupSignatureKey, std::string())); 212 KeywordTable::kBackupSignatureKey, std::string()));
215 EXPECT_FALSE(keyword_table->IsBackupSignatureValid()); 213 EXPECT_FALSE(keyword_table->IsBackupSignatureValid(
214 WebDatabase::kCurrentVersionNumber));
216 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID()); 215 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID());
217 EXPECT_FALSE(keyword_table->GetDefaultSearchProviderBackup(&backup)); 216 EXPECT_FALSE(keyword_table->GetDefaultSearchProviderBackup(&backup));
218 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange()); 217 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange());
219 218
220 // Change keywords. 219 // Change keywords.
221 EXPECT_TRUE(keyword_table->UpdateBackupSignature()); 220 EXPECT_TRUE(keyword_table->UpdateBackupSignature(
221 WebDatabase::kCurrentVersionNumber));
222 sql::Statement remove_keyword(keyword_table->db_->GetUniqueStatement( 222 sql::Statement remove_keyword(keyword_table->db_->GetUniqueStatement(
223 "DELETE FROM keywords WHERE id=1")); 223 "DELETE FROM keywords WHERE id=1"));
224 EXPECT_TRUE(remove_keyword.Run()); 224 EXPECT_TRUE(remove_keyword.Run());
225 EXPECT_TRUE(keyword_table->IsBackupSignatureValid()); 225 EXPECT_TRUE(keyword_table->IsBackupSignatureValid(
226 WebDatabase::kCurrentVersionNumber));
226 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID()); 227 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID());
227 228
228 EXPECT_TRUE(keyword_table->GetDefaultSearchProviderBackup(&backup)); 229 EXPECT_TRUE(keyword_table->GetDefaultSearchProviderBackup(&backup));
229 EXPECT_EQ(kInvalidTemplateURLID, backup.id); 230 EXPECT_EQ(kInvalidTemplateURLID, backup.id);
230 EXPECT_EQ(keyword.short_name, backup.short_name); 231 EXPECT_EQ(keyword.short_name, backup.short_name);
231 EXPECT_EQ(url.keyword(), TemplateURL(NULL, backup).keyword()); 232 EXPECT_EQ(keyword.keyword(), backup.keyword());
232 EXPECT_EQ(keyword.url(), backup.url()); 233 EXPECT_EQ(keyword.url(), backup.url());
233 EXPECT_EQ(keyword.suggestions_url, backup.suggestions_url); 234 EXPECT_EQ(keyword.suggestions_url, backup.suggestions_url);
234 EXPECT_EQ(keyword.favicon_url, backup.favicon_url); 235 EXPECT_EQ(keyword.favicon_url, backup.favicon_url);
235 EXPECT_EQ(keyword.show_in_default_list, backup.show_in_default_list); 236 EXPECT_EQ(keyword.show_in_default_list, backup.show_in_default_list);
236 EXPECT_EQ(keyword.safe_for_autoreplace, backup.safe_for_autoreplace); 237 EXPECT_EQ(keyword.safe_for_autoreplace, backup.safe_for_autoreplace);
237 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange()); 238 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange());
238 239
239 // Change keywords backup. 240 // Change keywords backup.
240 sql::Statement remove_keyword_backup(keyword_table->db_->GetUniqueStatement( 241 sql::Statement remove_keyword_backup(keyword_table->db_->GetUniqueStatement(
241 "DELETE FROM keywords_backup WHERE id=1")); 242 "DELETE FROM keywords_backup WHERE id=1"));
242 EXPECT_TRUE(remove_keyword_backup.Run()); 243 EXPECT_TRUE(remove_keyword_backup.Run());
243 EXPECT_FALSE(keyword_table->IsBackupSignatureValid()); 244 EXPECT_FALSE(keyword_table->IsBackupSignatureValid(
245 WebDatabase::kCurrentVersionNumber));
244 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID()); 246 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID());
245 EXPECT_FALSE(keyword_table->GetDefaultSearchProviderBackup(&backup)); 247 EXPECT_FALSE(keyword_table->GetDefaultSearchProviderBackup(&backup));
246 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange()); 248 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange());
247 } 249 }
248 250
249 TEST_F(KeywordTableTest, GetTableContents) { 251 TEST_F(KeywordTableTest, GetTableContents) {
250 WebDatabase db; 252 WebDatabase db;
251 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); 253 ASSERT_EQ(sql::INIT_OK, db.Init(file_));
252 KeywordTable* keyword_table = db.GetKeywordTable(); 254 KeywordTable* keyword_table = db.GetKeywordTable();
253 255
254 TemplateURLData keyword; 256 TemplateURLData keyword;
255 keyword.short_name = ASCIIToUTF16("short_name"); 257 keyword.short_name = ASCIIToUTF16("short_name");
256 keyword.SetKeyword(ASCIIToUTF16("keyword")); 258 keyword.SetKeyword(ASCIIToUTF16("keyword"));
257 keyword.SetURL("http://url/"); 259 keyword.SetURL("http://url/");
258 keyword.suggestions_url = "url2"; 260 keyword.suggestions_url = "url2";
259 keyword.favicon_url = GURL("http://favicon.url/"); 261 keyword.favicon_url = GURL("http://favicon.url/");
260 keyword.show_in_default_list = true; 262 keyword.show_in_default_list = true;
261 keyword.safe_for_autoreplace = true; 263 keyword.safe_for_autoreplace = true;
262 keyword.id = 1; 264 keyword.id = 1;
263 keyword.date_created = base::Time::UnixEpoch(); 265 keyword.date_created = base::Time::UnixEpoch();
264 keyword.last_modified = base::Time::UnixEpoch(); 266 keyword.last_modified = base::Time::UnixEpoch();
265 keyword.sync_guid = "1234-5678-90AB-CDEF"; 267 keyword.sync_guid = "1234-5678-90AB-CDEF";
266 TemplateURL url(NULL, keyword); 268 EXPECT_TRUE(keyword_table->AddKeyword(keyword));
267 EXPECT_TRUE(keyword_table->AddKeyword(url));
268 269
269 keyword.SetAutogenerateKeyword(true); 270 keyword.SetKeyword(ASCIIToUTF16("url"));
270 keyword.instant_url = "http://instant2/"; 271 keyword.instant_url = "http://instant2/";
271 keyword.originating_url = GURL("http://originating.url/"); 272 keyword.originating_url = GURL("http://originating.url/");
272 keyword.input_encodings.push_back("Shift_JIS"); 273 keyword.input_encodings.push_back("Shift_JIS");
273 keyword.id = 2; 274 keyword.id = 2;
274 keyword.prepopulate_id = 5; 275 keyword.prepopulate_id = 5;
275 keyword.sync_guid = "FEDC-BA09-8765-4321"; 276 keyword.sync_guid = "FEDC-BA09-8765-4321";
276 TemplateURL url2(NULL, keyword); 277 EXPECT_TRUE(keyword_table->AddKeyword(keyword));
277 EXPECT_TRUE(keyword_table->AddKeyword(url2));
278 278
279 const char kTestContents[] = "1short_namekeywordhttp://favicon.url/" 279 const char kTestContents[] = "1short_namekeywordhttp://favicon.url/"
280 "http://url/1001url2000001234-5678-90AB-CDEF2short_nameurl" 280 "http://url/1001url20001234-5678-90AB-CDEF2short_nameurl"
281 "http://favicon.url/http://url/1http://originating.url/00Shift_JIS1url251" 281 "http://favicon.url/http://url/1http://originating.url/00Shift_JIS1url250"
282 "00http://instant2/0FEDC-BA09-8765-4321"; 282 "http://instant2/0FEDC-BA09-8765-4321";
283 283
284 std::string contents; 284 std::string contents;
285 EXPECT_TRUE(keyword_table->GetTableContents("keywords", &contents)); 285 EXPECT_TRUE(keyword_table->GetTableContents("keywords",
286 WebDatabase::kCurrentVersionNumber, &contents));
286 EXPECT_EQ(kTestContents, contents); 287 EXPECT_EQ(kTestContents, contents);
287 288
288 EXPECT_TRUE(keyword_table->GetTableContents("keywords_backup", &contents)); 289 EXPECT_TRUE(keyword_table->GetTableContents("keywords_backup",
290 WebDatabase::kCurrentVersionNumber, &contents));
289 EXPECT_EQ(kTestContents, contents); 291 EXPECT_EQ(kTestContents, contents);
290 } 292 }
291 293
292 TEST_F(KeywordTableTest, GetTableContentsOrdering) { 294 TEST_F(KeywordTableTest, GetTableContentsOrdering) {
293 WebDatabase db; 295 WebDatabase db;
294 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); 296 ASSERT_EQ(sql::INIT_OK, db.Init(file_));
295 KeywordTable* keyword_table = db.GetKeywordTable(); 297 KeywordTable* keyword_table = db.GetKeywordTable();
296 298
297 TemplateURLData keyword; 299 TemplateURLData keyword;
298 keyword.short_name = ASCIIToUTF16("short_name"); 300 keyword.short_name = ASCIIToUTF16("short_name");
299 keyword.SetKeyword(ASCIIToUTF16("keyword")); 301 keyword.SetKeyword(ASCIIToUTF16("keyword"));
300 keyword.SetURL("http://url/"); 302 keyword.SetURL("http://url/");
301 keyword.suggestions_url = "url2"; 303 keyword.suggestions_url = "url2";
302 keyword.favicon_url = GURL("http://favicon.url/"); 304 keyword.favicon_url = GURL("http://favicon.url/");
303 keyword.show_in_default_list = true; 305 keyword.show_in_default_list = true;
304 keyword.safe_for_autoreplace = true; 306 keyword.safe_for_autoreplace = true;
305 keyword.id = 2; 307 keyword.id = 2;
306 keyword.date_created = base::Time::UnixEpoch(); 308 keyword.date_created = base::Time::UnixEpoch();
307 keyword.last_modified = base::Time::UnixEpoch(); 309 keyword.last_modified = base::Time::UnixEpoch();
308 keyword.sync_guid = "1234-5678-90AB-CDEF"; 310 keyword.sync_guid = "1234-5678-90AB-CDEF";
309 TemplateURL url(NULL, keyword); 311 EXPECT_TRUE(keyword_table->AddKeyword(keyword));
310 EXPECT_TRUE(keyword_table->AddKeyword(url));
311 312
312 keyword.SetAutogenerateKeyword(true); 313 keyword.SetKeyword(ASCIIToUTF16("url"));
313 keyword.instant_url = "http://instant2/"; 314 keyword.instant_url = "http://instant2/";
314 keyword.originating_url = GURL("http://originating.url/"); 315 keyword.originating_url = GURL("http://originating.url/");
315 keyword.input_encodings.push_back("Shift_JIS"); 316 keyword.input_encodings.push_back("Shift_JIS");
316 keyword.id = 1; 317 keyword.id = 1;
317 keyword.prepopulate_id = 5; 318 keyword.prepopulate_id = 5;
318 keyword.sync_guid = "FEDC-BA09-8765-4321"; 319 keyword.sync_guid = "FEDC-BA09-8765-4321";
319 TemplateURL url2(NULL, keyword); 320 EXPECT_TRUE(keyword_table->AddKeyword(keyword));
320 EXPECT_TRUE(keyword_table->AddKeyword(url2));
321 321
322 const char kTestContents[] = "1short_nameurlhttp://favicon.url/http://url/1" 322 const char kTestContents[] = "1short_nameurlhttp://favicon.url/http://url/1"
323 "http://originating.url/00Shift_JIS1url25100http://instant2/0" 323 "http://originating.url/00Shift_JIS1url250http://instant2/0"
324 "FEDC-BA09-8765-43212short_namekeywordhttp://favicon.url/http://url/1001" 324 "FEDC-BA09-8765-43212short_namekeywordhttp://favicon.url/http://url/1001"
325 "url2000001234-5678-90AB-CDEF"; 325 "url20001234-5678-90AB-CDEF";
326 326
327 std::string contents; 327 std::string contents;
328 EXPECT_TRUE(keyword_table->GetTableContents("keywords", &contents)); 328 EXPECT_TRUE(keyword_table->GetTableContents("keywords",
329 WebDatabase::kCurrentVersionNumber, &contents));
329 EXPECT_EQ(kTestContents, contents); 330 EXPECT_EQ(kTestContents, contents);
330 331
331 EXPECT_TRUE(keyword_table->GetTableContents("keywords_backup", &contents)); 332 EXPECT_TRUE(keyword_table->GetTableContents("keywords_backup",
333 WebDatabase::kCurrentVersionNumber, &contents));
332 EXPECT_EQ(kTestContents, contents); 334 EXPECT_EQ(kTestContents, contents);
333 } 335 }
334 336
335 TEST_F(KeywordTableTest, UpdateKeyword) { 337 TEST_F(KeywordTableTest, UpdateKeyword) {
336 WebDatabase db; 338 WebDatabase db;
337 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); 339 ASSERT_EQ(sql::INIT_OK, db.Init(file_));
338 KeywordTable* keyword_table = db.GetKeywordTable(); 340 KeywordTable* keyword_table = db.GetKeywordTable();
339 341
340 TemplateURLData keyword; 342 TemplateURLData keyword;
341 keyword.short_name = ASCIIToUTF16("short_name"); 343 keyword.short_name = ASCIIToUTF16("short_name");
342 keyword.SetKeyword(ASCIIToUTF16("keyword")); 344 keyword.SetKeyword(ASCIIToUTF16("keyword"));
343 keyword.SetURL("http://url/"); 345 keyword.SetURL("http://url/");
344 keyword.suggestions_url = "url2"; 346 keyword.suggestions_url = "url2";
345 keyword.favicon_url = GURL("http://favicon.url/"); 347 keyword.favicon_url = GURL("http://favicon.url/");
346 keyword.show_in_default_list = true; 348 keyword.show_in_default_list = true;
347 keyword.safe_for_autoreplace = true; 349 keyword.safe_for_autoreplace = true;
348 keyword.id = 1; 350 keyword.id = 1;
349 TemplateURL url(NULL, keyword); 351 EXPECT_TRUE(keyword_table->AddKeyword(keyword));
350 EXPECT_TRUE(keyword_table->AddKeyword(url));
351 352
353 keyword.SetKeyword(ASCIIToUTF16("url"));
354 keyword.instant_url = "http://instant2/";
352 keyword.originating_url = GURL("http://originating.url/"); 355 keyword.originating_url = GURL("http://originating.url/");
353 keyword.SetAutogenerateKeyword(true);
354 keyword.instant_url = "http://instant2/";
355 keyword.input_encodings.push_back("Shift_JIS"); 356 keyword.input_encodings.push_back("Shift_JIS");
356 keyword.prepopulate_id = 5; 357 keyword.prepopulate_id = 5;
357 TemplateURL url2(NULL, keyword); 358 EXPECT_TRUE(keyword_table->UpdateKeyword(keyword));
358 EXPECT_TRUE(keyword_table->UpdateKeyword(url2));
359 359
360 KeywordTable::Keywords keywords; 360 KeywordTable::Keywords keywords;
361 EXPECT_TRUE(keyword_table->GetKeywords(&keywords)); 361 EXPECT_TRUE(keyword_table->GetKeywords(&keywords));
362 EXPECT_EQ(1U, keywords.size()); 362 EXPECT_EQ(1U, keywords.size());
363 const TemplateURLData& restored_keyword = keywords.front(); 363 const TemplateURLData& restored_keyword = keywords.front();
364 364
365 EXPECT_EQ(keyword.short_name, restored_keyword.short_name); 365 EXPECT_EQ(keyword.short_name, restored_keyword.short_name);
366 EXPECT_EQ(url2.keyword(), TemplateURL(NULL, restored_keyword).keyword()); 366 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword());
367 EXPECT_EQ(keyword.autogenerate_keyword(),
368 restored_keyword.autogenerate_keyword());
369 EXPECT_EQ(keyword.suggestions_url, restored_keyword.suggestions_url); 367 EXPECT_EQ(keyword.suggestions_url, restored_keyword.suggestions_url);
370 EXPECT_EQ(keyword.instant_url, restored_keyword.instant_url); 368 EXPECT_EQ(keyword.instant_url, restored_keyword.instant_url);
371 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); 369 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url);
372 EXPECT_EQ(keyword.originating_url, restored_keyword.originating_url); 370 EXPECT_EQ(keyword.originating_url, restored_keyword.originating_url);
373 EXPECT_EQ(keyword.show_in_default_list, 371 EXPECT_EQ(keyword.show_in_default_list,
374 restored_keyword.show_in_default_list); 372 restored_keyword.show_in_default_list);
375 EXPECT_EQ(keyword.safe_for_autoreplace, 373 EXPECT_EQ(keyword.safe_for_autoreplace,
376 restored_keyword.safe_for_autoreplace); 374 restored_keyword.safe_for_autoreplace);
377 EXPECT_EQ(keyword.input_encodings, restored_keyword.input_encodings); 375 EXPECT_EQ(keyword.input_encodings, restored_keyword.input_encodings);
378 EXPECT_EQ(keyword.id, restored_keyword.id); 376 EXPECT_EQ(keyword.id, restored_keyword.id);
379 EXPECT_EQ(keyword.prepopulate_id, restored_keyword.prepopulate_id); 377 EXPECT_EQ(keyword.prepopulate_id, restored_keyword.prepopulate_id);
380 } 378 }
381 379
382 TEST_F(KeywordTableTest, KeywordWithNoFavicon) { 380 TEST_F(KeywordTableTest, KeywordWithNoFavicon) {
383 WebDatabase db; 381 WebDatabase db;
384 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); 382 ASSERT_EQ(sql::INIT_OK, db.Init(file_));
385 KeywordTable* keyword_table = db.GetKeywordTable(); 383 KeywordTable* keyword_table = db.GetKeywordTable();
386 384
387 TemplateURLData keyword; 385 TemplateURLData keyword;
388 keyword.short_name = ASCIIToUTF16("short_name"); 386 keyword.short_name = ASCIIToUTF16("short_name");
389 keyword.SetKeyword(ASCIIToUTF16("keyword")); 387 keyword.SetKeyword(ASCIIToUTF16("keyword"));
390 keyword.SetURL("http://url/"); 388 keyword.SetURL("http://url/");
391 keyword.safe_for_autoreplace = true; 389 keyword.safe_for_autoreplace = true;
392 keyword.id = -100; 390 keyword.id = -100;
393 TemplateURL url(NULL, keyword); 391 EXPECT_TRUE(keyword_table->AddKeyword(keyword));
394 EXPECT_TRUE(keyword_table->AddKeyword(url));
395 392
396 KeywordTable::Keywords keywords; 393 KeywordTable::Keywords keywords;
397 EXPECT_TRUE(keyword_table->GetKeywords(&keywords)); 394 EXPECT_TRUE(keyword_table->GetKeywords(&keywords));
398 EXPECT_EQ(1U, keywords.size()); 395 EXPECT_EQ(1U, keywords.size());
399 const TemplateURLData& restored_keyword = keywords.front(); 396 const TemplateURLData& restored_keyword = keywords.front();
400 397
401 EXPECT_EQ(keyword.short_name, restored_keyword.short_name); 398 EXPECT_EQ(keyword.short_name, restored_keyword.short_name);
402 EXPECT_EQ(url.keyword(), TemplateURL(NULL, restored_keyword).keyword()); 399 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword());
403 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); 400 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url);
404 EXPECT_EQ(keyword.safe_for_autoreplace, 401 EXPECT_EQ(keyword.safe_for_autoreplace,
405 restored_keyword.safe_for_autoreplace); 402 restored_keyword.safe_for_autoreplace);
406 EXPECT_EQ(keyword.id, restored_keyword.id); 403 EXPECT_EQ(keyword.id, restored_keyword.id);
407 } 404 }
408 405
409 TEST_F(KeywordTableTest, SanitizeURLs) { 406 TEST_F(KeywordTableTest, SanitizeURLs) {
410 WebDatabase db; 407 WebDatabase db;
411 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); 408 ASSERT_EQ(sql::INIT_OK, db.Init(file_));
412 KeywordTable* keyword_table = db.GetKeywordTable(); 409 KeywordTable* keyword_table = db.GetKeywordTable();
413 410
414 TemplateURLData keyword; 411 TemplateURLData keyword;
415 keyword.short_name = ASCIIToUTF16("legit"); 412 keyword.short_name = ASCIIToUTF16("legit");
416 keyword.SetKeyword(ASCIIToUTF16("legit")); 413 keyword.SetKeyword(ASCIIToUTF16("legit"));
417 keyword.SetURL("http://url/"); 414 keyword.SetURL("http://url/");
418 keyword.id = 1000; 415 keyword.id = 1000;
419 TemplateURL url(NULL, keyword); 416 EXPECT_TRUE(keyword_table->AddKeyword(keyword));
420 EXPECT_TRUE(keyword_table->AddKeyword(url));
421 417
422 keyword.short_name = ASCIIToUTF16("bogus"); 418 keyword.short_name = ASCIIToUTF16("bogus");
423 keyword.SetKeyword(ASCIIToUTF16("bogus")); 419 keyword.SetKeyword(ASCIIToUTF16("bogus"));
424 keyword.id = 2000; 420 keyword.id = 2000;
425 TemplateURL url2(NULL, keyword); 421 EXPECT_TRUE(keyword_table->AddKeyword(keyword));
426 EXPECT_TRUE(keyword_table->AddKeyword(url2));
427 422
428 KeywordTable::Keywords keywords; 423 KeywordTable::Keywords keywords;
429 EXPECT_TRUE(keyword_table->GetKeywords(&keywords)); 424 EXPECT_TRUE(keyword_table->GetKeywords(&keywords));
430 EXPECT_EQ(2U, keywords.size()); 425 EXPECT_EQ(2U, keywords.size());
431 keywords.clear(); 426 keywords.clear();
432 427
433 // Erase the URL field for the second keyword to simulate having bogus data 428 // Erase the URL field for the second keyword to simulate having bogus data
434 // previously saved into the database. 429 // previously saved into the database.
435 sql::Statement s(keyword_table->db_->GetUniqueStatement( 430 sql::Statement s(keyword_table->db_->GetUniqueStatement(
436 "UPDATE keywords SET url=? WHERE id=?")); 431 "UPDATE keywords SET url=? WHERE id=?"));
437 s.BindString16(0, string16()); 432 s.BindString16(0, string16());
438 s.BindInt64(1, 2000); 433 s.BindInt64(1, 2000);
439 EXPECT_TRUE(s.Run()); 434 EXPECT_TRUE(s.Run());
440 EXPECT_TRUE(keyword_table->UpdateBackupSignature()); 435 EXPECT_TRUE(keyword_table->UpdateBackupSignature(
436 WebDatabase::kCurrentVersionNumber));
441 437
442 // GetKeywords() should erase the entry with the empty URL field. 438 // GetKeywords() should erase the entry with the empty URL field.
443 EXPECT_TRUE(keyword_table->GetKeywords(&keywords)); 439 EXPECT_TRUE(keyword_table->GetKeywords(&keywords));
444 EXPECT_EQ(1U, keywords.size()); 440 EXPECT_EQ(1U, keywords.size());
445 } 441 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698