Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(216)

Side by Side Diff: chrome/browser/webdata/keyword_table_unittest.cc

Issue 217613002: Misc. cleanup found while mucking with search engines code: (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698