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