| OLD | NEW |
| 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/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
| 10 #include "base/path_service.h" | 10 #include "base/path_service.h" |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 keyword.prepopulate_id = 10; | 126 keyword.prepopulate_id = 10; |
| 127 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); | 127 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); |
| 128 | 128 |
| 129 EXPECT_TRUE(keyword_table->SetDefaultSearchProviderID(10)); | 129 EXPECT_TRUE(keyword_table->SetDefaultSearchProviderID(10)); |
| 130 EXPECT_TRUE(keyword_table->SetBuiltinKeywordVersion(11)); | 130 EXPECT_TRUE(keyword_table->SetBuiltinKeywordVersion(11)); |
| 131 | 131 |
| 132 EXPECT_EQ(10, keyword_table->GetDefaultSearchProviderID()); | 132 EXPECT_EQ(10, keyword_table->GetDefaultSearchProviderID()); |
| 133 EXPECT_EQ(11, keyword_table->GetBuiltinKeywordVersion()); | 133 EXPECT_EQ(11, keyword_table->GetBuiltinKeywordVersion()); |
| 134 } | 134 } |
| 135 | 135 |
| 136 TEST_F(KeywordTableTest, DefaultSearchProviderBackup) { | |
| 137 // TODO(ivankr): suppress keyword_table.cc ERROR logs. | |
| 138 WebDatabase db; | |
| 139 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | |
| 140 KeywordTable* keyword_table = db.GetKeywordTable(); | |
| 141 | |
| 142 EXPECT_EQ(kInvalidTemplateURLID, keyword_table->GetDefaultSearchProviderID()); | |
| 143 | |
| 144 TemplateURLData keyword; | |
| 145 keyword.short_name = ASCIIToUTF16("short_name"); | |
| 146 keyword.SetKeyword(ASCIIToUTF16("keyword")); | |
| 147 keyword.SetURL("http://url/"); | |
| 148 keyword.suggestions_url = "url2"; | |
| 149 keyword.favicon_url = GURL("http://favicon.url/"); | |
| 150 keyword.show_in_default_list = true; | |
| 151 keyword.safe_for_autoreplace = true; | |
| 152 keyword.id = 1; | |
| 153 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); | |
| 154 | |
| 155 EXPECT_TRUE(keyword_table->SetDefaultSearchProviderID(1)); | |
| 156 EXPECT_TRUE(keyword_table->IsBackupSignatureValid( | |
| 157 WebDatabase::kCurrentVersionNumber)); | |
| 158 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID()); | |
| 159 | |
| 160 TemplateURLData backup; | |
| 161 EXPECT_TRUE(keyword_table->GetDefaultSearchProviderBackup(&backup)); | |
| 162 // Backup URL should have an invalid ID. | |
| 163 EXPECT_EQ(kInvalidTemplateURLID, backup.id); | |
| 164 EXPECT_EQ(keyword.short_name, backup.short_name); | |
| 165 EXPECT_EQ(keyword.keyword(), backup.keyword()); | |
| 166 EXPECT_EQ(keyword.url(), backup.url()); | |
| 167 EXPECT_EQ(keyword.favicon_url, backup.favicon_url); | |
| 168 EXPECT_EQ(keyword.suggestions_url, backup.suggestions_url); | |
| 169 EXPECT_EQ(keyword.show_in_default_list, backup.show_in_default_list); | |
| 170 EXPECT_EQ(keyword.safe_for_autoreplace, backup.safe_for_autoreplace); | |
| 171 EXPECT_FALSE(keyword_table->DidDefaultSearchProviderChange()); | |
| 172 | |
| 173 // Change the actual setting. | |
| 174 EXPECT_TRUE(keyword_table->meta_table_->SetValue( | |
| 175 KeywordTable::kDefaultSearchProviderKey, 2)); | |
| 176 EXPECT_TRUE(keyword_table->IsBackupSignatureValid( | |
| 177 WebDatabase::kCurrentVersionNumber)); | |
| 178 EXPECT_EQ(2, keyword_table->GetDefaultSearchProviderID()); | |
| 179 | |
| 180 EXPECT_TRUE(keyword_table->GetDefaultSearchProviderBackup(&backup)); | |
| 181 EXPECT_EQ(kInvalidTemplateURLID, backup.id); | |
| 182 EXPECT_EQ(keyword.short_name, backup.short_name); | |
| 183 EXPECT_EQ(keyword.keyword(), backup.keyword()); | |
| 184 EXPECT_EQ(keyword.url(), backup.url()); | |
| 185 EXPECT_EQ(keyword.favicon_url, backup.favicon_url); | |
| 186 EXPECT_EQ(keyword.suggestions_url, backup.suggestions_url); | |
| 187 EXPECT_EQ(keyword.show_in_default_list, backup.show_in_default_list); | |
| 188 EXPECT_EQ(keyword.safe_for_autoreplace, backup.safe_for_autoreplace); | |
| 189 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange()); | |
| 190 | |
| 191 // Change the backup. | |
| 192 EXPECT_TRUE(keyword_table->meta_table_->SetValue( | |
| 193 KeywordTable::kDefaultSearchProviderKey, 1)); | |
| 194 EXPECT_TRUE(keyword_table->meta_table_->SetValue( | |
| 195 KeywordTable::kDefaultSearchIDBackupKey, 2)); | |
| 196 EXPECT_FALSE(keyword_table->IsBackupSignatureValid( | |
| 197 WebDatabase::kCurrentVersionNumber)); | |
| 198 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID()); | |
| 199 EXPECT_FALSE(keyword_table->GetDefaultSearchProviderBackup(&backup)); | |
| 200 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange()); | |
| 201 | |
| 202 // Change the signature. | |
| 203 EXPECT_TRUE(keyword_table->meta_table_->SetValue( | |
| 204 KeywordTable::kDefaultSearchIDBackupKey, 1)); | |
| 205 EXPECT_TRUE(keyword_table->meta_table_->SetValue( | |
| 206 KeywordTable::kBackupSignatureKey, std::string())); | |
| 207 EXPECT_FALSE(keyword_table->IsBackupSignatureValid( | |
| 208 WebDatabase::kCurrentVersionNumber)); | |
| 209 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID()); | |
| 210 EXPECT_FALSE(keyword_table->GetDefaultSearchProviderBackup(&backup)); | |
| 211 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange()); | |
| 212 | |
| 213 // Change keywords. | |
| 214 EXPECT_TRUE(keyword_table->UpdateBackupSignature( | |
| 215 WebDatabase::kCurrentVersionNumber)); | |
| 216 sql::Statement remove_keyword(keyword_table->db_->GetUniqueStatement( | |
| 217 "DELETE FROM keywords WHERE id=1")); | |
| 218 EXPECT_TRUE(remove_keyword.Run()); | |
| 219 EXPECT_TRUE(keyword_table->IsBackupSignatureValid( | |
| 220 WebDatabase::kCurrentVersionNumber)); | |
| 221 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID()); | |
| 222 | |
| 223 EXPECT_TRUE(keyword_table->GetDefaultSearchProviderBackup(&backup)); | |
| 224 EXPECT_EQ(kInvalidTemplateURLID, backup.id); | |
| 225 EXPECT_EQ(keyword.short_name, backup.short_name); | |
| 226 EXPECT_EQ(keyword.keyword(), backup.keyword()); | |
| 227 EXPECT_EQ(keyword.url(), backup.url()); | |
| 228 EXPECT_EQ(keyword.suggestions_url, backup.suggestions_url); | |
| 229 EXPECT_EQ(keyword.favicon_url, backup.favicon_url); | |
| 230 EXPECT_EQ(keyword.show_in_default_list, backup.show_in_default_list); | |
| 231 EXPECT_EQ(keyword.safe_for_autoreplace, backup.safe_for_autoreplace); | |
| 232 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange()); | |
| 233 | |
| 234 // Change keywords backup. | |
| 235 sql::Statement remove_keyword_backup(keyword_table->db_->GetUniqueStatement( | |
| 236 "DELETE FROM keywords_backup WHERE id=1")); | |
| 237 EXPECT_TRUE(remove_keyword_backup.Run()); | |
| 238 EXPECT_FALSE(keyword_table->IsBackupSignatureValid( | |
| 239 WebDatabase::kCurrentVersionNumber)); | |
| 240 EXPECT_EQ(1, keyword_table->GetDefaultSearchProviderID()); | |
| 241 EXPECT_FALSE(keyword_table->GetDefaultSearchProviderBackup(&backup)); | |
| 242 EXPECT_TRUE(keyword_table->DidDefaultSearchProviderChange()); | |
| 243 } | |
| 244 | |
| 245 TEST_F(KeywordTableTest, GetTableContents) { | 136 TEST_F(KeywordTableTest, GetTableContents) { |
| 246 WebDatabase db; | 137 WebDatabase db; |
| 247 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 138 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 248 KeywordTable* keyword_table = db.GetKeywordTable(); | 139 KeywordTable* keyword_table = db.GetKeywordTable(); |
| 249 | 140 |
| 250 TemplateURLData keyword; | 141 TemplateURLData keyword; |
| 251 keyword.short_name = ASCIIToUTF16("short_name"); | 142 keyword.short_name = ASCIIToUTF16("short_name"); |
| 252 keyword.SetKeyword(ASCIIToUTF16("keyword")); | 143 keyword.SetKeyword(ASCIIToUTF16("keyword")); |
| 253 keyword.SetURL("http://url/"); | 144 keyword.SetURL("http://url/"); |
| 254 keyword.suggestions_url = "url2"; | 145 keyword.suggestions_url = "url2"; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 275 | 166 |
| 276 const char kTestContents[] = "1short_namekeywordhttp://favicon.url/" | 167 const char kTestContents[] = "1short_namekeywordhttp://favicon.url/" |
| 277 "http://url/1001url20001234-5678-90AB-CDEF[\"a_url1\",\"a_url2\"]" | 168 "http://url/1001url20001234-5678-90AB-CDEF[\"a_url1\",\"a_url2\"]" |
| 278 "2short_nameurlhttp://favicon.url/http://url/1http://originating.url/00" | 169 "2short_nameurlhttp://favicon.url/http://url/1http://originating.url/00" |
| 279 "Shift_JIS1url250http://instant2/0FEDC-BA09-8765-4321[]"; | 170 "Shift_JIS1url250http://instant2/0FEDC-BA09-8765-4321[]"; |
| 280 | 171 |
| 281 std::string contents; | 172 std::string contents; |
| 282 EXPECT_TRUE(keyword_table->GetTableContents("keywords", | 173 EXPECT_TRUE(keyword_table->GetTableContents("keywords", |
| 283 WebDatabase::kCurrentVersionNumber, &contents)); | 174 WebDatabase::kCurrentVersionNumber, &contents)); |
| 284 EXPECT_EQ(kTestContents, contents); | 175 EXPECT_EQ(kTestContents, contents); |
| 285 | |
| 286 EXPECT_TRUE(keyword_table->GetTableContents("keywords_backup", | |
| 287 WebDatabase::kCurrentVersionNumber, &contents)); | |
| 288 EXPECT_EQ(kTestContents, contents); | |
| 289 } | 176 } |
| 290 | 177 |
| 291 TEST_F(KeywordTableTest, GetTableContentsOrdering) { | 178 TEST_F(KeywordTableTest, GetTableContentsOrdering) { |
| 292 WebDatabase db; | 179 WebDatabase db; |
| 293 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 180 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 294 KeywordTable* keyword_table = db.GetKeywordTable(); | 181 KeywordTable* keyword_table = db.GetKeywordTable(); |
| 295 | 182 |
| 296 TemplateURLData keyword; | 183 TemplateURLData keyword; |
| 297 keyword.short_name = ASCIIToUTF16("short_name"); | 184 keyword.short_name = ASCIIToUTF16("short_name"); |
| 298 keyword.SetKeyword(ASCIIToUTF16("keyword")); | 185 keyword.SetKeyword(ASCIIToUTF16("keyword")); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 322 const char kTestContents[] = "1short_nameurlhttp://favicon.url/http://url/1" | 209 const char kTestContents[] = "1short_nameurlhttp://favicon.url/http://url/1" |
| 323 "http://originating.url/00Shift_JIS1url250http://instant2/0" | 210 "http://originating.url/00Shift_JIS1url250http://instant2/0" |
| 324 "FEDC-BA09-8765-4321[]" | 211 "FEDC-BA09-8765-4321[]" |
| 325 "2short_namekeywordhttp://favicon.url/http://url/1001" | 212 "2short_namekeywordhttp://favicon.url/http://url/1001" |
| 326 "url20001234-5678-90AB-CDEF[\"a_url1\",\"a_url2\"]"; | 213 "url20001234-5678-90AB-CDEF[\"a_url1\",\"a_url2\"]"; |
| 327 | 214 |
| 328 std::string contents; | 215 std::string contents; |
| 329 EXPECT_TRUE(keyword_table->GetTableContents("keywords", | 216 EXPECT_TRUE(keyword_table->GetTableContents("keywords", |
| 330 WebDatabase::kCurrentVersionNumber, &contents)); | 217 WebDatabase::kCurrentVersionNumber, &contents)); |
| 331 EXPECT_EQ(kTestContents, contents); | 218 EXPECT_EQ(kTestContents, contents); |
| 332 | |
| 333 EXPECT_TRUE(keyword_table->GetTableContents("keywords_backup", | |
| 334 WebDatabase::kCurrentVersionNumber, &contents)); | |
| 335 EXPECT_EQ(kTestContents, contents); | |
| 336 } | 219 } |
| 337 | 220 |
| 338 TEST_F(KeywordTableTest, UpdateKeyword) { | 221 TEST_F(KeywordTableTest, UpdateKeyword) { |
| 339 WebDatabase db; | 222 WebDatabase db; |
| 340 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); | 223 ASSERT_EQ(sql::INIT_OK, db.Init(file_)); |
| 341 KeywordTable* keyword_table = db.GetKeywordTable(); | 224 KeywordTable* keyword_table = db.GetKeywordTable(); |
| 342 | 225 |
| 343 TemplateURLData keyword; | 226 TemplateURLData keyword; |
| 344 keyword.short_name = ASCIIToUTF16("short_name"); | 227 keyword.short_name = ASCIIToUTF16("short_name"); |
| 345 keyword.SetKeyword(ASCIIToUTF16("keyword")); | 228 keyword.SetKeyword(ASCIIToUTF16("keyword")); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 426 EXPECT_EQ(2U, keywords.size()); | 309 EXPECT_EQ(2U, keywords.size()); |
| 427 keywords.clear(); | 310 keywords.clear(); |
| 428 | 311 |
| 429 // Erase the URL field for the second keyword to simulate having bogus data | 312 // Erase the URL field for the second keyword to simulate having bogus data |
| 430 // previously saved into the database. | 313 // previously saved into the database. |
| 431 sql::Statement s(keyword_table->db_->GetUniqueStatement( | 314 sql::Statement s(keyword_table->db_->GetUniqueStatement( |
| 432 "UPDATE keywords SET url=? WHERE id=?")); | 315 "UPDATE keywords SET url=? WHERE id=?")); |
| 433 s.BindString16(0, string16()); | 316 s.BindString16(0, string16()); |
| 434 s.BindInt64(1, 2000); | 317 s.BindInt64(1, 2000); |
| 435 EXPECT_TRUE(s.Run()); | 318 EXPECT_TRUE(s.Run()); |
| 436 EXPECT_TRUE(keyword_table->UpdateBackupSignature( | |
| 437 WebDatabase::kCurrentVersionNumber)); | |
| 438 | 319 |
| 439 // GetKeywords() should erase the entry with the empty URL field. | 320 // GetKeywords() should erase the entry with the empty URL field. |
| 440 EXPECT_TRUE(keyword_table->GetKeywords(&keywords)); | 321 EXPECT_TRUE(keyword_table->GetKeywords(&keywords)); |
| 441 EXPECT_EQ(1U, keywords.size()); | 322 EXPECT_EQ(1U, keywords.size()); |
| 442 } | 323 } |
| OLD | NEW |