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 |