| 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/files/scoped_temp_dir.h" | 8 #include "base/files/scoped_temp_dir.h" |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 db_->AddTable(table_.get()); | 35 db_->AddTable(table_.get()); |
| 36 ASSERT_EQ(sql::INIT_OK, db_->Init(file_)); | 36 ASSERT_EQ(sql::INIT_OK, db_->Init(file_)); |
| 37 } | 37 } |
| 38 | 38 |
| 39 void AddKeyword(const TemplateURLData& keyword) const { | 39 void AddKeyword(const TemplateURLData& keyword) const { |
| 40 EXPECT_TRUE(table_->AddKeyword(keyword)); | 40 EXPECT_TRUE(table_->AddKeyword(keyword)); |
| 41 } | 41 } |
| 42 | 42 |
| 43 TemplateURLData CreateAndAddKeyword() const { | 43 TemplateURLData CreateAndAddKeyword() const { |
| 44 TemplateURLData keyword; | 44 TemplateURLData keyword; |
| 45 keyword.short_name = ASCIIToUTF16("short_name"); | 45 keyword.SetShortName(ASCIIToUTF16("short_name")); |
| 46 keyword.SetKeyword(ASCIIToUTF16("keyword")); | 46 keyword.SetKeyword(ASCIIToUTF16("keyword")); |
| 47 keyword.SetURL("http://url/"); | 47 keyword.SetURL("http://url/"); |
| 48 keyword.suggestions_url = "url2"; | 48 keyword.suggestions_url = "url2"; |
| 49 keyword.instant_url = "http://instant/"; | 49 keyword.instant_url = "http://instant/"; |
| 50 keyword.image_url = "http://image-search-url/"; | 50 keyword.image_url = "http://image-search-url/"; |
| 51 keyword.new_tab_url = "http://new-tab-url/"; | 51 keyword.new_tab_url = "http://new-tab-url/"; |
| 52 keyword.search_url_post_params = "ie=utf-8,oe=utf-8"; | 52 keyword.search_url_post_params = "ie=utf-8,oe=utf-8"; |
| 53 keyword.image_url_post_params = "name=1,value=2"; | 53 keyword.image_url_post_params = "name=1,value=2"; |
| 54 keyword.favicon_url = GURL("http://favicon.url/"); | 54 keyword.favicon_url = GURL("http://favicon.url/"); |
| 55 keyword.originating_url = GURL("http://google.com/"); | 55 keyword.originating_url = GURL("http://google.com/"); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 }; | 110 }; |
| 111 | 111 |
| 112 | 112 |
| 113 TEST_F(KeywordTableTest, Keywords) { | 113 TEST_F(KeywordTableTest, Keywords) { |
| 114 TemplateURLData keyword(CreateAndAddKeyword()); | 114 TemplateURLData keyword(CreateAndAddKeyword()); |
| 115 | 115 |
| 116 KeywordTable::Keywords keywords(GetKeywords()); | 116 KeywordTable::Keywords keywords(GetKeywords()); |
| 117 EXPECT_EQ(1U, keywords.size()); | 117 EXPECT_EQ(1U, keywords.size()); |
| 118 const TemplateURLData& restored_keyword = keywords.front(); | 118 const TemplateURLData& restored_keyword = keywords.front(); |
| 119 | 119 |
| 120 EXPECT_EQ(keyword.short_name, restored_keyword.short_name); | 120 EXPECT_EQ(keyword.short_name(), restored_keyword.short_name()); |
| 121 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword()); | 121 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword()); |
| 122 EXPECT_EQ(keyword.url(), restored_keyword.url()); | 122 EXPECT_EQ(keyword.url(), restored_keyword.url()); |
| 123 EXPECT_EQ(keyword.suggestions_url, restored_keyword.suggestions_url); | 123 EXPECT_EQ(keyword.suggestions_url, restored_keyword.suggestions_url); |
| 124 EXPECT_EQ(keyword.instant_url, restored_keyword.instant_url); | 124 EXPECT_EQ(keyword.instant_url, restored_keyword.instant_url); |
| 125 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); | 125 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); |
| 126 EXPECT_EQ(keyword.originating_url, restored_keyword.originating_url); | 126 EXPECT_EQ(keyword.originating_url, restored_keyword.originating_url); |
| 127 EXPECT_EQ(keyword.show_in_default_list, | 127 EXPECT_EQ(keyword.show_in_default_list, |
| 128 restored_keyword.show_in_default_list); | 128 restored_keyword.show_in_default_list); |
| 129 EXPECT_EQ(keyword.safe_for_autoreplace, | 129 EXPECT_EQ(keyword.safe_for_autoreplace, |
| 130 restored_keyword.safe_for_autoreplace); | 130 restored_keyword.safe_for_autoreplace); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 155 keyword.instant_url = "http://instant2/"; | 155 keyword.instant_url = "http://instant2/"; |
| 156 keyword.originating_url = GURL("http://originating.url/"); | 156 keyword.originating_url = GURL("http://originating.url/"); |
| 157 keyword.input_encodings.push_back("Shift_JIS"); | 157 keyword.input_encodings.push_back("Shift_JIS"); |
| 158 keyword.prepopulate_id = 5; | 158 keyword.prepopulate_id = 5; |
| 159 UpdateKeyword(keyword); | 159 UpdateKeyword(keyword); |
| 160 | 160 |
| 161 KeywordTable::Keywords keywords(GetKeywords()); | 161 KeywordTable::Keywords keywords(GetKeywords()); |
| 162 EXPECT_EQ(1U, keywords.size()); | 162 EXPECT_EQ(1U, keywords.size()); |
| 163 const TemplateURLData& restored_keyword = keywords.front(); | 163 const TemplateURLData& restored_keyword = keywords.front(); |
| 164 | 164 |
| 165 EXPECT_EQ(keyword.short_name, restored_keyword.short_name); | 165 EXPECT_EQ(keyword.short_name(), restored_keyword.short_name()); |
| 166 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword()); | 166 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword()); |
| 167 EXPECT_EQ(keyword.suggestions_url, restored_keyword.suggestions_url); | 167 EXPECT_EQ(keyword.suggestions_url, restored_keyword.suggestions_url); |
| 168 EXPECT_EQ(keyword.instant_url, restored_keyword.instant_url); | 168 EXPECT_EQ(keyword.instant_url, restored_keyword.instant_url); |
| 169 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); | 169 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); |
| 170 EXPECT_EQ(keyword.originating_url, restored_keyword.originating_url); | 170 EXPECT_EQ(keyword.originating_url, restored_keyword.originating_url); |
| 171 EXPECT_EQ(keyword.show_in_default_list, | 171 EXPECT_EQ(keyword.show_in_default_list, |
| 172 restored_keyword.show_in_default_list); | 172 restored_keyword.show_in_default_list); |
| 173 EXPECT_EQ(keyword.safe_for_autoreplace, | 173 EXPECT_EQ(keyword.safe_for_autoreplace, |
| 174 restored_keyword.safe_for_autoreplace); | 174 restored_keyword.safe_for_autoreplace); |
| 175 EXPECT_EQ(keyword.input_encodings, restored_keyword.input_encodings); | 175 EXPECT_EQ(keyword.input_encodings, restored_keyword.input_encodings); |
| 176 EXPECT_EQ(keyword.id, restored_keyword.id); | 176 EXPECT_EQ(keyword.id, restored_keyword.id); |
| 177 EXPECT_EQ(keyword.prepopulate_id, restored_keyword.prepopulate_id); | 177 EXPECT_EQ(keyword.prepopulate_id, restored_keyword.prepopulate_id); |
| 178 } | 178 } |
| 179 | 179 |
| 180 TEST_F(KeywordTableTest, KeywordWithNoFavicon) { | 180 TEST_F(KeywordTableTest, KeywordWithNoFavicon) { |
| 181 TemplateURLData keyword; | 181 TemplateURLData keyword; |
| 182 keyword.short_name = ASCIIToUTF16("short_name"); | 182 keyword.SetShortName(ASCIIToUTF16("short_name")); |
| 183 keyword.SetKeyword(ASCIIToUTF16("keyword")); | 183 keyword.SetKeyword(ASCIIToUTF16("keyword")); |
| 184 keyword.SetURL("http://url/"); | 184 keyword.SetURL("http://url/"); |
| 185 keyword.safe_for_autoreplace = true; | 185 keyword.safe_for_autoreplace = true; |
| 186 keyword.id = -100; | 186 keyword.id = -100; |
| 187 AddKeyword(keyword); | 187 AddKeyword(keyword); |
| 188 | 188 |
| 189 KeywordTable::Keywords keywords(GetKeywords()); | 189 KeywordTable::Keywords keywords(GetKeywords()); |
| 190 EXPECT_EQ(1U, keywords.size()); | 190 EXPECT_EQ(1U, keywords.size()); |
| 191 const TemplateURLData& restored_keyword = keywords.front(); | 191 const TemplateURLData& restored_keyword = keywords.front(); |
| 192 | 192 |
| 193 EXPECT_EQ(keyword.short_name, restored_keyword.short_name); | 193 EXPECT_EQ(keyword.short_name(), restored_keyword.short_name()); |
| 194 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword()); | 194 EXPECT_EQ(keyword.keyword(), restored_keyword.keyword()); |
| 195 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); | 195 EXPECT_EQ(keyword.favicon_url, restored_keyword.favicon_url); |
| 196 EXPECT_EQ(keyword.safe_for_autoreplace, | 196 EXPECT_EQ(keyword.safe_for_autoreplace, |
| 197 restored_keyword.safe_for_autoreplace); | 197 restored_keyword.safe_for_autoreplace); |
| 198 EXPECT_EQ(keyword.id, restored_keyword.id); | 198 EXPECT_EQ(keyword.id, restored_keyword.id); |
| 199 } | 199 } |
| 200 | 200 |
| 201 TEST_F(KeywordTableTest, SanitizeURLs) { | 201 TEST_F(KeywordTableTest, SanitizeURLs) { |
| 202 TemplateURLData keyword; | 202 TemplateURLData keyword; |
| 203 keyword.short_name = ASCIIToUTF16("legit"); | 203 keyword.SetShortName(ASCIIToUTF16("legit")); |
| 204 keyword.SetKeyword(ASCIIToUTF16("legit")); | 204 keyword.SetKeyword(ASCIIToUTF16("legit")); |
| 205 keyword.SetURL("http://url/"); | 205 keyword.SetURL("http://url/"); |
| 206 keyword.id = 1000; | 206 keyword.id = 1000; |
| 207 AddKeyword(keyword); | 207 AddKeyword(keyword); |
| 208 | 208 |
| 209 keyword.short_name = ASCIIToUTF16("bogus"); | 209 keyword.SetShortName(ASCIIToUTF16("bogus")); |
| 210 keyword.SetKeyword(ASCIIToUTF16("bogus")); | 210 keyword.SetKeyword(ASCIIToUTF16("bogus")); |
| 211 keyword.id = 2000; | 211 keyword.id = 2000; |
| 212 AddKeyword(keyword); | 212 AddKeyword(keyword); |
| 213 | 213 |
| 214 EXPECT_EQ(2U, GetKeywords().size()); | 214 EXPECT_EQ(2U, GetKeywords().size()); |
| 215 | 215 |
| 216 // Erase the URL field for the second keyword to simulate having bogus data | 216 // Erase the URL field for the second keyword to simulate having bogus data |
| 217 // previously saved into the database. | 217 // previously saved into the database. |
| 218 sql::Statement s; | 218 sql::Statement s; |
| 219 GetStatement("UPDATE keywords SET url=? WHERE id=?", &s); | 219 GetStatement("UPDATE keywords SET url=? WHERE id=?", &s); |
| 220 s.BindString16(0, base::string16()); | 220 s.BindString16(0, base::string16()); |
| 221 s.BindInt64(1, 2000); | 221 s.BindInt64(1, 2000); |
| 222 EXPECT_TRUE(s.Run()); | 222 EXPECT_TRUE(s.Run()); |
| 223 | 223 |
| 224 // GetKeywords() should erase the entry with the empty URL field. | 224 // GetKeywords() should erase the entry with the empty URL field. |
| 225 EXPECT_EQ(1U, GetKeywords().size()); | 225 EXPECT_EQ(1U, GetKeywords().size()); |
| 226 } | 226 } |
| 227 |
| 228 TEST_F(KeywordTableTest, SanitizeShortName) { |
| 229 TemplateURLData keyword; |
| 230 { |
| 231 keyword.SetShortName(ASCIIToUTF16("legit name")); |
| 232 keyword.SetKeyword(ASCIIToUTF16("legit")); |
| 233 keyword.SetURL("http://url/"); |
| 234 keyword.id = 1000; |
| 235 AddKeyword(keyword); |
| 236 KeywordTable::Keywords keywords(GetKeywords()); |
| 237 EXPECT_EQ(1U, keywords.size()); |
| 238 const TemplateURLData& keyword_from_database = keywords.front(); |
| 239 EXPECT_EQ(keyword.id, keyword_from_database.id); |
| 240 EXPECT_EQ(ASCIIToUTF16("legit name"), keyword_from_database.short_name()); |
| 241 RemoveKeyword(keyword.id); |
| 242 } |
| 243 |
| 244 { |
| 245 keyword.SetShortName(ASCIIToUTF16("\t\tbogus \tname \n")); |
| 246 keyword.SetKeyword(ASCIIToUTF16("bogus")); |
| 247 keyword.id = 2000; |
| 248 AddKeyword(keyword); |
| 249 KeywordTable::Keywords keywords(GetKeywords()); |
| 250 EXPECT_EQ(1U, keywords.size()); |
| 251 const TemplateURLData& keyword_from_database = keywords.front(); |
| 252 EXPECT_EQ(keyword.id, keyword_from_database.id); |
| 253 EXPECT_EQ(ASCIIToUTF16("bogus name"), keyword_from_database.short_name()); |
| 254 RemoveKeyword(keyword.id); |
| 255 } |
| 256 } |
| OLD | NEW |