| 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 13 matching lines...) Expand all Loading... |
| 24 | 24 |
| 25 class KeywordTableTest : public testing::Test { | 25 class KeywordTableTest : public testing::Test { |
| 26 public: | 26 public: |
| 27 KeywordTableTest() {} | 27 KeywordTableTest() {} |
| 28 virtual ~KeywordTableTest() {} | 28 virtual ~KeywordTableTest() {} |
| 29 | 29 |
| 30 protected: | 30 protected: |
| 31 virtual void SetUp() { | 31 virtual void SetUp() { |
| 32 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 32 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| 33 file_ = temp_dir_.path().AppendASCII("TestWebDatabase"); | 33 file_ = temp_dir_.path().AppendASCII("TestWebDatabase"); |
| 34 |
| 35 table_.reset(new KeywordTable); |
| 36 db_.reset(new WebDatabase); |
| 37 db_->AddTable(table_.get()); |
| 38 ASSERT_EQ(sql::INIT_OK, db_->Init(file_, std::string())); |
| 34 } | 39 } |
| 35 | 40 |
| 36 base::FilePath file_; | 41 base::FilePath file_; |
| 37 base::ScopedTempDir temp_dir_; | 42 base::ScopedTempDir temp_dir_; |
| 43 scoped_ptr<KeywordTable> table_; |
| 44 scoped_ptr<WebDatabase> db_; |
| 38 | 45 |
| 39 private: | 46 private: |
| 40 DISALLOW_COPY_AND_ASSIGN(KeywordTableTest); | 47 DISALLOW_COPY_AND_ASSIGN(KeywordTableTest); |
| 41 }; | 48 }; |
| 42 | 49 |
| 43 | 50 |
| 44 TEST_F(KeywordTableTest, Keywords) { | 51 TEST_F(KeywordTableTest, Keywords) { |
| 45 WebDatabase db; | |
| 46 ASSERT_EQ(sql::INIT_OK, db.Init(file_, std::string())); | |
| 47 KeywordTable* keyword_table = db.GetKeywordTable(); | |
| 48 | |
| 49 TemplateURLData keyword; | 52 TemplateURLData keyword; |
| 50 keyword.short_name = ASCIIToUTF16("short_name"); | 53 keyword.short_name = ASCIIToUTF16("short_name"); |
| 51 keyword.SetKeyword(ASCIIToUTF16("keyword")); | 54 keyword.SetKeyword(ASCIIToUTF16("keyword")); |
| 52 keyword.SetURL("http://url/"); | 55 keyword.SetURL("http://url/"); |
| 53 keyword.instant_url = "http://instant/"; | 56 keyword.instant_url = "http://instant/"; |
| 54 keyword.favicon_url = GURL("http://favicon.url/"); | 57 keyword.favicon_url = GURL("http://favicon.url/"); |
| 55 keyword.originating_url = GURL("http://google.com/"); | 58 keyword.originating_url = GURL("http://google.com/"); |
| 56 keyword.show_in_default_list = true; | 59 keyword.show_in_default_list = true; |
| 57 keyword.safe_for_autoreplace = true; | 60 keyword.safe_for_autoreplace = true; |
| 58 keyword.input_encodings.push_back("UTF-8"); | 61 keyword.input_encodings.push_back("UTF-8"); |
| 59 keyword.input_encodings.push_back("UTF-16"); | 62 keyword.input_encodings.push_back("UTF-16"); |
| 60 keyword.id = 1; | 63 keyword.id = 1; |
| 61 keyword.date_created = Time::Now(); | 64 keyword.date_created = Time::Now(); |
| 62 keyword.last_modified = keyword.date_created + TimeDelta::FromSeconds(10); | 65 keyword.last_modified = keyword.date_created + TimeDelta::FromSeconds(10); |
| 63 keyword.created_by_policy = true; | 66 keyword.created_by_policy = true; |
| 64 keyword.usage_count = 32; | 67 keyword.usage_count = 32; |
| 65 keyword.prepopulate_id = 10; | 68 keyword.prepopulate_id = 10; |
| 66 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); | 69 EXPECT_TRUE(table_->AddKeyword(keyword)); |
| 67 | 70 |
| 68 KeywordTable::Keywords keywords; | 71 KeywordTable::Keywords keywords; |
| 69 EXPECT_TRUE(keyword_table->GetKeywords(&keywords)); | 72 EXPECT_TRUE(table_->GetKeywords(&keywords)); |
| 70 EXPECT_EQ(1U, keywords.size()); | 73 EXPECT_EQ(1U, keywords.size()); |
| 71 const TemplateURLData& restored_keyword = keywords.front(); | 74 const TemplateURLData& restored_keyword = keywords.front(); |
| 72 | 75 |
| 73 EXPECT_EQ(keyword.short_name, restored_keyword.short_name); | 76 EXPECT_EQ(keyword.short_name, restored_keyword.short_name); |
| 74 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword()); | 77 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword()); |
| 75 EXPECT_EQ(keyword.url(), restored_keyword.url()); | 78 EXPECT_EQ(keyword.url(), restored_keyword.url()); |
| 76 EXPECT_EQ(keyword.suggestions_url, restored_keyword.suggestions_url); | 79 EXPECT_EQ(keyword.suggestions_url, restored_keyword.suggestions_url); |
| 77 EXPECT_EQ(keyword.instant_url, restored_keyword.instant_url); | 80 EXPECT_EQ(keyword.instant_url, restored_keyword.instant_url); |
| 78 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); | 81 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); |
| 79 EXPECT_EQ(keyword.originating_url, restored_keyword.originating_url); | 82 EXPECT_EQ(keyword.originating_url, restored_keyword.originating_url); |
| 80 EXPECT_EQ(keyword.show_in_default_list, | 83 EXPECT_EQ(keyword.show_in_default_list, |
| 81 restored_keyword.show_in_default_list); | 84 restored_keyword.show_in_default_list); |
| 82 EXPECT_EQ(keyword.safe_for_autoreplace, | 85 EXPECT_EQ(keyword.safe_for_autoreplace, |
| 83 restored_keyword.safe_for_autoreplace); | 86 restored_keyword.safe_for_autoreplace); |
| 84 EXPECT_EQ(keyword.input_encodings, restored_keyword.input_encodings); | 87 EXPECT_EQ(keyword.input_encodings, restored_keyword.input_encodings); |
| 85 EXPECT_EQ(keyword.id, restored_keyword.id); | 88 EXPECT_EQ(keyword.id, restored_keyword.id); |
| 86 // The database stores time only at the resolution of a second. | 89 // The database stores time only at the resolution of a second. |
| 87 EXPECT_EQ(keyword.date_created.ToTimeT(), | 90 EXPECT_EQ(keyword.date_created.ToTimeT(), |
| 88 restored_keyword.date_created.ToTimeT()); | 91 restored_keyword.date_created.ToTimeT()); |
| 89 EXPECT_EQ(keyword.last_modified.ToTimeT(), | 92 EXPECT_EQ(keyword.last_modified.ToTimeT(), |
| 90 restored_keyword.last_modified.ToTimeT()); | 93 restored_keyword.last_modified.ToTimeT()); |
| 91 EXPECT_EQ(keyword.created_by_policy, restored_keyword.created_by_policy); | 94 EXPECT_EQ(keyword.created_by_policy, restored_keyword.created_by_policy); |
| 92 EXPECT_EQ(keyword.usage_count, restored_keyword.usage_count); | 95 EXPECT_EQ(keyword.usage_count, restored_keyword.usage_count); |
| 93 EXPECT_EQ(keyword.prepopulate_id, restored_keyword.prepopulate_id); | 96 EXPECT_EQ(keyword.prepopulate_id, restored_keyword.prepopulate_id); |
| 94 | 97 |
| 95 EXPECT_TRUE(keyword_table->RemoveKeyword(restored_keyword.id)); | 98 EXPECT_TRUE(table_->RemoveKeyword(restored_keyword.id)); |
| 96 | 99 |
| 97 KeywordTable::Keywords empty_keywords; | 100 KeywordTable::Keywords empty_keywords; |
| 98 EXPECT_TRUE(keyword_table->GetKeywords(&empty_keywords)); | 101 EXPECT_TRUE(table_->GetKeywords(&empty_keywords)); |
| 99 EXPECT_EQ(0U, empty_keywords.size()); | 102 EXPECT_EQ(0U, empty_keywords.size()); |
| 100 } | 103 } |
| 101 | 104 |
| 102 TEST_F(KeywordTableTest, KeywordMisc) { | 105 TEST_F(KeywordTableTest, KeywordMisc) { |
| 103 WebDatabase db; | 106 EXPECT_EQ(kInvalidTemplateURLID, table_->GetDefaultSearchProviderID()); |
| 104 ASSERT_EQ(sql::INIT_OK, db.Init(file_, std::string())); | 107 EXPECT_EQ(0, table_->GetBuiltinKeywordVersion()); |
| 105 KeywordTable* keyword_table = db.GetKeywordTable(); | |
| 106 | |
| 107 EXPECT_EQ(kInvalidTemplateURLID, keyword_table->GetDefaultSearchProviderID()); | |
| 108 EXPECT_EQ(0, keyword_table->GetBuiltinKeywordVersion()); | |
| 109 | 108 |
| 110 TemplateURLData keyword; | 109 TemplateURLData keyword; |
| 111 keyword.short_name = ASCIIToUTF16("short_name"); | 110 keyword.short_name = ASCIIToUTF16("short_name"); |
| 112 keyword.SetKeyword(ASCIIToUTF16("keyword")); | 111 keyword.SetKeyword(ASCIIToUTF16("keyword")); |
| 113 keyword.SetURL("http://url/"); | 112 keyword.SetURL("http://url/"); |
| 114 keyword.instant_url = "http://instant/"; | 113 keyword.instant_url = "http://instant/"; |
| 115 keyword.favicon_url = GURL("http://favicon.url/"); | 114 keyword.favicon_url = GURL("http://favicon.url/"); |
| 116 keyword.originating_url = GURL("http://google.com/"); | 115 keyword.originating_url = GURL("http://google.com/"); |
| 117 keyword.show_in_default_list = true; | 116 keyword.show_in_default_list = true; |
| 118 keyword.safe_for_autoreplace = true; | 117 keyword.safe_for_autoreplace = true; |
| 119 keyword.input_encodings.push_back("UTF-8"); | 118 keyword.input_encodings.push_back("UTF-8"); |
| 120 keyword.input_encodings.push_back("UTF-16"); | 119 keyword.input_encodings.push_back("UTF-16"); |
| 121 keyword.id = 10; | 120 keyword.id = 10; |
| 122 keyword.date_created = Time::Now(); | 121 keyword.date_created = Time::Now(); |
| 123 keyword.last_modified = keyword.date_created + TimeDelta::FromSeconds(10); | 122 keyword.last_modified = keyword.date_created + TimeDelta::FromSeconds(10); |
| 124 keyword.created_by_policy = true; | 123 keyword.created_by_policy = true; |
| 125 keyword.usage_count = 32; | 124 keyword.usage_count = 32; |
| 126 keyword.prepopulate_id = 10; | 125 keyword.prepopulate_id = 10; |
| 127 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); | 126 EXPECT_TRUE(table_->AddKeyword(keyword)); |
| 128 | 127 |
| 129 EXPECT_TRUE(keyword_table->SetDefaultSearchProviderID(10)); | 128 EXPECT_TRUE(table_->SetDefaultSearchProviderID(10)); |
| 130 EXPECT_TRUE(keyword_table->SetBuiltinKeywordVersion(11)); | 129 EXPECT_TRUE(table_->SetBuiltinKeywordVersion(11)); |
| 131 | 130 |
| 132 EXPECT_EQ(10, keyword_table->GetDefaultSearchProviderID()); | 131 EXPECT_EQ(10, table_->GetDefaultSearchProviderID()); |
| 133 EXPECT_EQ(11, keyword_table->GetBuiltinKeywordVersion()); | 132 EXPECT_EQ(11, table_->GetBuiltinKeywordVersion()); |
| 134 } | 133 } |
| 135 | 134 |
| 136 TEST_F(KeywordTableTest, GetTableContents) { | 135 TEST_F(KeywordTableTest, GetTableContents) { |
| 137 WebDatabase db; | |
| 138 ASSERT_EQ(sql::INIT_OK, db.Init(file_, std::string())); | |
| 139 KeywordTable* keyword_table = db.GetKeywordTable(); | |
| 140 | |
| 141 TemplateURLData keyword; | 136 TemplateURLData keyword; |
| 142 keyword.short_name = ASCIIToUTF16("short_name"); | 137 keyword.short_name = ASCIIToUTF16("short_name"); |
| 143 keyword.SetKeyword(ASCIIToUTF16("keyword")); | 138 keyword.SetKeyword(ASCIIToUTF16("keyword")); |
| 144 keyword.SetURL("http://url/"); | 139 keyword.SetURL("http://url/"); |
| 145 keyword.suggestions_url = "url2"; | 140 keyword.suggestions_url = "url2"; |
| 146 keyword.favicon_url = GURL("http://favicon.url/"); | 141 keyword.favicon_url = GURL("http://favicon.url/"); |
| 147 keyword.show_in_default_list = true; | 142 keyword.show_in_default_list = true; |
| 148 keyword.safe_for_autoreplace = true; | 143 keyword.safe_for_autoreplace = true; |
| 149 keyword.id = 1; | 144 keyword.id = 1; |
| 150 keyword.date_created = base::Time::UnixEpoch(); | 145 keyword.date_created = base::Time::UnixEpoch(); |
| 151 keyword.last_modified = base::Time::UnixEpoch(); | 146 keyword.last_modified = base::Time::UnixEpoch(); |
| 152 keyword.sync_guid = "1234-5678-90AB-CDEF"; | 147 keyword.sync_guid = "1234-5678-90AB-CDEF"; |
| 153 keyword.alternate_urls.push_back("a_url1"); | 148 keyword.alternate_urls.push_back("a_url1"); |
| 154 keyword.alternate_urls.push_back("a_url2"); | 149 keyword.alternate_urls.push_back("a_url2"); |
| 155 keyword.search_terms_replacement_key = "espv"; | 150 keyword.search_terms_replacement_key = "espv"; |
| 156 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); | 151 EXPECT_TRUE(table_->AddKeyword(keyword)); |
| 157 | 152 |
| 158 keyword.SetKeyword(ASCIIToUTF16("url")); | 153 keyword.SetKeyword(ASCIIToUTF16("url")); |
| 159 keyword.instant_url = "http://instant2/"; | 154 keyword.instant_url = "http://instant2/"; |
| 160 keyword.originating_url = GURL("http://originating.url/"); | 155 keyword.originating_url = GURL("http://originating.url/"); |
| 161 keyword.input_encodings.push_back("Shift_JIS"); | 156 keyword.input_encodings.push_back("Shift_JIS"); |
| 162 keyword.id = 2; | 157 keyword.id = 2; |
| 163 keyword.prepopulate_id = 5; | 158 keyword.prepopulate_id = 5; |
| 164 keyword.sync_guid = "FEDC-BA09-8765-4321"; | 159 keyword.sync_guid = "FEDC-BA09-8765-4321"; |
| 165 keyword.alternate_urls.clear(); | 160 keyword.alternate_urls.clear(); |
| 166 keyword.search_terms_replacement_key.clear(); | 161 keyword.search_terms_replacement_key.clear(); |
| 167 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); | 162 EXPECT_TRUE(table_->AddKeyword(keyword)); |
| 168 | 163 |
| 169 const char kTestContents[] = "1short_namekeywordhttp://favicon.url/" | 164 const char kTestContents[] = "1short_namekeywordhttp://favicon.url/" |
| 170 "http://url/1001url20001234-5678-90AB-CDEF[\"a_url1\",\"a_url2\"]espv" | 165 "http://url/1001url20001234-5678-90AB-CDEF[\"a_url1\",\"a_url2\"]espv" |
| 171 "2short_nameurlhttp://favicon.url/http://url/1http://originating.url/00" | 166 "2short_nameurlhttp://favicon.url/http://url/1http://originating.url/00" |
| 172 "Shift_JIS1url250http://instant2/0FEDC-BA09-8765-4321[]"; | 167 "Shift_JIS1url250http://instant2/0FEDC-BA09-8765-4321[]"; |
| 173 | 168 |
| 174 std::string contents; | 169 std::string contents; |
| 175 EXPECT_TRUE(keyword_table->GetTableContents("keywords", | 170 EXPECT_TRUE(table_->GetTableContents("keywords", |
| 176 WebDatabase::kCurrentVersionNumber, &contents)); | 171 WebDatabase::kCurrentVersionNumber, &contents)); |
| 177 EXPECT_EQ(kTestContents, contents); | 172 EXPECT_EQ(kTestContents, contents); |
| 178 } | 173 } |
| 179 | 174 |
| 180 TEST_F(KeywordTableTest, GetTableContentsOrdering) { | 175 TEST_F(KeywordTableTest, GetTableContentsOrdering) { |
| 181 WebDatabase db; | |
| 182 ASSERT_EQ(sql::INIT_OK, db.Init(file_, std::string())); | |
| 183 KeywordTable* keyword_table = db.GetKeywordTable(); | |
| 184 | |
| 185 TemplateURLData keyword; | 176 TemplateURLData keyword; |
| 186 keyword.short_name = ASCIIToUTF16("short_name"); | 177 keyword.short_name = ASCIIToUTF16("short_name"); |
| 187 keyword.SetKeyword(ASCIIToUTF16("keyword")); | 178 keyword.SetKeyword(ASCIIToUTF16("keyword")); |
| 188 keyword.SetURL("http://url/"); | 179 keyword.SetURL("http://url/"); |
| 189 keyword.suggestions_url = "url2"; | 180 keyword.suggestions_url = "url2"; |
| 190 keyword.favicon_url = GURL("http://favicon.url/"); | 181 keyword.favicon_url = GURL("http://favicon.url/"); |
| 191 keyword.show_in_default_list = true; | 182 keyword.show_in_default_list = true; |
| 192 keyword.safe_for_autoreplace = true; | 183 keyword.safe_for_autoreplace = true; |
| 193 keyword.id = 2; | 184 keyword.id = 2; |
| 194 keyword.date_created = base::Time::UnixEpoch(); | 185 keyword.date_created = base::Time::UnixEpoch(); |
| 195 keyword.last_modified = base::Time::UnixEpoch(); | 186 keyword.last_modified = base::Time::UnixEpoch(); |
| 196 keyword.sync_guid = "1234-5678-90AB-CDEF"; | 187 keyword.sync_guid = "1234-5678-90AB-CDEF"; |
| 197 keyword.alternate_urls.push_back("a_url1"); | 188 keyword.alternate_urls.push_back("a_url1"); |
| 198 keyword.alternate_urls.push_back("a_url2"); | 189 keyword.alternate_urls.push_back("a_url2"); |
| 199 keyword.search_terms_replacement_key = "espv"; | 190 keyword.search_terms_replacement_key = "espv"; |
| 200 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); | 191 EXPECT_TRUE(table_->AddKeyword(keyword)); |
| 201 | 192 |
| 202 keyword.SetKeyword(ASCIIToUTF16("url")); | 193 keyword.SetKeyword(ASCIIToUTF16("url")); |
| 203 keyword.instant_url = "http://instant2/"; | 194 keyword.instant_url = "http://instant2/"; |
| 204 keyword.originating_url = GURL("http://originating.url/"); | 195 keyword.originating_url = GURL("http://originating.url/"); |
| 205 keyword.input_encodings.push_back("Shift_JIS"); | 196 keyword.input_encodings.push_back("Shift_JIS"); |
| 206 keyword.id = 1; | 197 keyword.id = 1; |
| 207 keyword.prepopulate_id = 5; | 198 keyword.prepopulate_id = 5; |
| 208 keyword.sync_guid = "FEDC-BA09-8765-4321"; | 199 keyword.sync_guid = "FEDC-BA09-8765-4321"; |
| 209 keyword.alternate_urls.clear(); | 200 keyword.alternate_urls.clear(); |
| 210 keyword.search_terms_replacement_key.clear(); | 201 keyword.search_terms_replacement_key.clear(); |
| 211 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); | 202 EXPECT_TRUE(table_->AddKeyword(keyword)); |
| 212 | 203 |
| 213 const char kTestContents[] = "1short_nameurlhttp://favicon.url/http://url/1" | 204 const char kTestContents[] = "1short_nameurlhttp://favicon.url/http://url/1" |
| 214 "http://originating.url/00Shift_JIS1url250http://instant2/0" | 205 "http://originating.url/00Shift_JIS1url250http://instant2/0" |
| 215 "FEDC-BA09-8765-4321[]" | 206 "FEDC-BA09-8765-4321[]" |
| 216 "2short_namekeywordhttp://favicon.url/http://url/1001" | 207 "2short_namekeywordhttp://favicon.url/http://url/1001" |
| 217 "url20001234-5678-90AB-CDEF[\"a_url1\",\"a_url2\"]espv"; | 208 "url20001234-5678-90AB-CDEF[\"a_url1\",\"a_url2\"]espv"; |
| 218 | 209 |
| 219 std::string contents; | 210 std::string contents; |
| 220 EXPECT_TRUE(keyword_table->GetTableContents("keywords", | 211 EXPECT_TRUE(table_->GetTableContents("keywords", |
| 221 WebDatabase::kCurrentVersionNumber, &contents)); | 212 WebDatabase::kCurrentVersionNumber, &contents)); |
| 222 EXPECT_EQ(kTestContents, contents); | 213 EXPECT_EQ(kTestContents, contents); |
| 223 } | 214 } |
| 224 | 215 |
| 225 TEST_F(KeywordTableTest, UpdateKeyword) { | 216 TEST_F(KeywordTableTest, UpdateKeyword) { |
| 226 WebDatabase db; | |
| 227 ASSERT_EQ(sql::INIT_OK, db.Init(file_, std::string())); | |
| 228 KeywordTable* keyword_table = db.GetKeywordTable(); | |
| 229 | |
| 230 TemplateURLData keyword; | 217 TemplateURLData keyword; |
| 231 keyword.short_name = ASCIIToUTF16("short_name"); | 218 keyword.short_name = ASCIIToUTF16("short_name"); |
| 232 keyword.SetKeyword(ASCIIToUTF16("keyword")); | 219 keyword.SetKeyword(ASCIIToUTF16("keyword")); |
| 233 keyword.SetURL("http://url/"); | 220 keyword.SetURL("http://url/"); |
| 234 keyword.suggestions_url = "url2"; | 221 keyword.suggestions_url = "url2"; |
| 235 keyword.favicon_url = GURL("http://favicon.url/"); | 222 keyword.favicon_url = GURL("http://favicon.url/"); |
| 236 keyword.show_in_default_list = true; | 223 keyword.show_in_default_list = true; |
| 237 keyword.safe_for_autoreplace = true; | 224 keyword.safe_for_autoreplace = true; |
| 238 keyword.id = 1; | 225 keyword.id = 1; |
| 239 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); | 226 EXPECT_TRUE(table_->AddKeyword(keyword)); |
| 240 | 227 |
| 241 keyword.SetKeyword(ASCIIToUTF16("url")); | 228 keyword.SetKeyword(ASCIIToUTF16("url")); |
| 242 keyword.instant_url = "http://instant2/"; | 229 keyword.instant_url = "http://instant2/"; |
| 243 keyword.originating_url = GURL("http://originating.url/"); | 230 keyword.originating_url = GURL("http://originating.url/"); |
| 244 keyword.input_encodings.push_back("Shift_JIS"); | 231 keyword.input_encodings.push_back("Shift_JIS"); |
| 245 keyword.prepopulate_id = 5; | 232 keyword.prepopulate_id = 5; |
| 246 EXPECT_TRUE(keyword_table->UpdateKeyword(keyword)); | 233 EXPECT_TRUE(table_->UpdateKeyword(keyword)); |
| 247 | 234 |
| 248 KeywordTable::Keywords keywords; | 235 KeywordTable::Keywords keywords; |
| 249 EXPECT_TRUE(keyword_table->GetKeywords(&keywords)); | 236 EXPECT_TRUE(table_->GetKeywords(&keywords)); |
| 250 EXPECT_EQ(1U, keywords.size()); | 237 EXPECT_EQ(1U, keywords.size()); |
| 251 const TemplateURLData& restored_keyword = keywords.front(); | 238 const TemplateURLData& restored_keyword = keywords.front(); |
| 252 | 239 |
| 253 EXPECT_EQ(keyword.short_name, restored_keyword.short_name); | 240 EXPECT_EQ(keyword.short_name, restored_keyword.short_name); |
| 254 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword()); | 241 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword()); |
| 255 EXPECT_EQ(keyword.suggestions_url, restored_keyword.suggestions_url); | 242 EXPECT_EQ(keyword.suggestions_url, restored_keyword.suggestions_url); |
| 256 EXPECT_EQ(keyword.instant_url, restored_keyword.instant_url); | 243 EXPECT_EQ(keyword.instant_url, restored_keyword.instant_url); |
| 257 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); | 244 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); |
| 258 EXPECT_EQ(keyword.originating_url, restored_keyword.originating_url); | 245 EXPECT_EQ(keyword.originating_url, restored_keyword.originating_url); |
| 259 EXPECT_EQ(keyword.show_in_default_list, | 246 EXPECT_EQ(keyword.show_in_default_list, |
| 260 restored_keyword.show_in_default_list); | 247 restored_keyword.show_in_default_list); |
| 261 EXPECT_EQ(keyword.safe_for_autoreplace, | 248 EXPECT_EQ(keyword.safe_for_autoreplace, |
| 262 restored_keyword.safe_for_autoreplace); | 249 restored_keyword.safe_for_autoreplace); |
| 263 EXPECT_EQ(keyword.input_encodings, restored_keyword.input_encodings); | 250 EXPECT_EQ(keyword.input_encodings, restored_keyword.input_encodings); |
| 264 EXPECT_EQ(keyword.id, restored_keyword.id); | 251 EXPECT_EQ(keyword.id, restored_keyword.id); |
| 265 EXPECT_EQ(keyword.prepopulate_id, restored_keyword.prepopulate_id); | 252 EXPECT_EQ(keyword.prepopulate_id, restored_keyword.prepopulate_id); |
| 266 } | 253 } |
| 267 | 254 |
| 268 TEST_F(KeywordTableTest, KeywordWithNoFavicon) { | 255 TEST_F(KeywordTableTest, KeywordWithNoFavicon) { |
| 269 WebDatabase db; | |
| 270 ASSERT_EQ(sql::INIT_OK, db.Init(file_, std::string())); | |
| 271 KeywordTable* keyword_table = db.GetKeywordTable(); | |
| 272 | |
| 273 TemplateURLData keyword; | 256 TemplateURLData keyword; |
| 274 keyword.short_name = ASCIIToUTF16("short_name"); | 257 keyword.short_name = ASCIIToUTF16("short_name"); |
| 275 keyword.SetKeyword(ASCIIToUTF16("keyword")); | 258 keyword.SetKeyword(ASCIIToUTF16("keyword")); |
| 276 keyword.SetURL("http://url/"); | 259 keyword.SetURL("http://url/"); |
| 277 keyword.safe_for_autoreplace = true; | 260 keyword.safe_for_autoreplace = true; |
| 278 keyword.id = -100; | 261 keyword.id = -100; |
| 279 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); | 262 EXPECT_TRUE(table_->AddKeyword(keyword)); |
| 280 | 263 |
| 281 KeywordTable::Keywords keywords; | 264 KeywordTable::Keywords keywords; |
| 282 EXPECT_TRUE(keyword_table->GetKeywords(&keywords)); | 265 EXPECT_TRUE(table_->GetKeywords(&keywords)); |
| 283 EXPECT_EQ(1U, keywords.size()); | 266 EXPECT_EQ(1U, keywords.size()); |
| 284 const TemplateURLData& restored_keyword = keywords.front(); | 267 const TemplateURLData& restored_keyword = keywords.front(); |
| 285 | 268 |
| 286 EXPECT_EQ(keyword.short_name, restored_keyword.short_name); | 269 EXPECT_EQ(keyword.short_name, restored_keyword.short_name); |
| 287 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword()); | 270 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword()); |
| 288 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); | 271 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); |
| 289 EXPECT_EQ(keyword.safe_for_autoreplace, | 272 EXPECT_EQ(keyword.safe_for_autoreplace, |
| 290 restored_keyword.safe_for_autoreplace); | 273 restored_keyword.safe_for_autoreplace); |
| 291 EXPECT_EQ(keyword.id, restored_keyword.id); | 274 EXPECT_EQ(keyword.id, restored_keyword.id); |
| 292 } | 275 } |
| 293 | 276 |
| 294 TEST_F(KeywordTableTest, SanitizeURLs) { | 277 TEST_F(KeywordTableTest, SanitizeURLs) { |
| 295 WebDatabase db; | |
| 296 ASSERT_EQ(sql::INIT_OK, db.Init(file_, std::string())); | |
| 297 KeywordTable* keyword_table = db.GetKeywordTable(); | |
| 298 | |
| 299 TemplateURLData keyword; | 278 TemplateURLData keyword; |
| 300 keyword.short_name = ASCIIToUTF16("legit"); | 279 keyword.short_name = ASCIIToUTF16("legit"); |
| 301 keyword.SetKeyword(ASCIIToUTF16("legit")); | 280 keyword.SetKeyword(ASCIIToUTF16("legit")); |
| 302 keyword.SetURL("http://url/"); | 281 keyword.SetURL("http://url/"); |
| 303 keyword.id = 1000; | 282 keyword.id = 1000; |
| 304 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); | 283 EXPECT_TRUE(table_->AddKeyword(keyword)); |
| 305 | 284 |
| 306 keyword.short_name = ASCIIToUTF16("bogus"); | 285 keyword.short_name = ASCIIToUTF16("bogus"); |
| 307 keyword.SetKeyword(ASCIIToUTF16("bogus")); | 286 keyword.SetKeyword(ASCIIToUTF16("bogus")); |
| 308 keyword.id = 2000; | 287 keyword.id = 2000; |
| 309 EXPECT_TRUE(keyword_table->AddKeyword(keyword)); | 288 EXPECT_TRUE(table_->AddKeyword(keyword)); |
| 310 | 289 |
| 311 KeywordTable::Keywords keywords; | 290 KeywordTable::Keywords keywords; |
| 312 EXPECT_TRUE(keyword_table->GetKeywords(&keywords)); | 291 EXPECT_TRUE(table_->GetKeywords(&keywords)); |
| 313 EXPECT_EQ(2U, keywords.size()); | 292 EXPECT_EQ(2U, keywords.size()); |
| 314 keywords.clear(); | 293 keywords.clear(); |
| 315 | 294 |
| 316 // Erase the URL field for the second keyword to simulate having bogus data | 295 // Erase the URL field for the second keyword to simulate having bogus data |
| 317 // previously saved into the database. | 296 // previously saved into the database. |
| 318 sql::Statement s(keyword_table->db_->GetUniqueStatement( | 297 sql::Statement s(table_->db_->GetUniqueStatement( |
| 319 "UPDATE keywords SET url=? WHERE id=?")); | 298 "UPDATE keywords SET url=? WHERE id=?")); |
| 320 s.BindString16(0, string16()); | 299 s.BindString16(0, string16()); |
| 321 s.BindInt64(1, 2000); | 300 s.BindInt64(1, 2000); |
| 322 EXPECT_TRUE(s.Run()); | 301 EXPECT_TRUE(s.Run()); |
| 323 | 302 |
| 324 // GetKeywords() should erase the entry with the empty URL field. | 303 // GetKeywords() should erase the entry with the empty URL field. |
| 325 EXPECT_TRUE(keyword_table->GetKeywords(&keywords)); | 304 EXPECT_TRUE(table_->GetKeywords(&keywords)); |
| 326 EXPECT_EQ(1U, keywords.size()); | 305 EXPECT_EQ(1U, keywords.size()); |
| 327 } | 306 } |
| OLD | NEW |