| 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/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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |