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 <algorithm> | 5 #include <algorithm> |
6 #include <vector> | 6 #include <vector> |
7 | 7 |
8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/file_path.h" | 10 #include "base/file_path.h" |
(...skipping 28 matching lines...) Expand all Loading... | |
39 "goiwuegrqrcomizqyzkjalitbahxfjytrqvpqeroicxmnlkhlzunacxaneviawrtxcywhgef"; | 39 "goiwuegrqrcomizqyzkjalitbahxfjytrqvpqeroicxmnlkhlzunacxaneviawrtxcywhgef"; |
40 static const unsigned char blob3[] = | 40 static const unsigned char blob3[] = |
41 "3716871354098370776510470746794707624107647054607467847164027"; | 41 "3716871354098370776510470746794707624107647054607467847164027"; |
42 const double kBoringness = 0.25; | 42 const double kBoringness = 0.25; |
43 const double kWorseBoringness = 0.50; | 43 const double kWorseBoringness = 0.50; |
44 const double kBetterBoringness = 0.10; | 44 const double kBetterBoringness = 0.10; |
45 const double kTotallyBoring = 1.0; | 45 const double kTotallyBoring = 1.0; |
46 | 46 |
47 const int64 kPage1 = 1234; | 47 const int64 kPage1 = 1234; |
48 | 48 |
49 const gfx::Size kSmallSize = gfx::Size(16, 16); | |
50 const gfx::Size kLargeSize = gfx::Size(32, 32); | |
51 | |
52 const std::string kSizesSmallAndLarge = "16 16 32 32"; | |
53 | |
49 } // namespace | 54 } // namespace |
50 | 55 |
51 class ThumbnailDatabaseTest : public testing::Test { | 56 class ThumbnailDatabaseTest : public testing::Test { |
52 public: | 57 public: |
53 ThumbnailDatabaseTest() { | 58 ThumbnailDatabaseTest() { |
54 } | 59 } |
55 ~ThumbnailDatabaseTest() { | 60 ~ThumbnailDatabaseTest() { |
56 } | 61 } |
57 | 62 |
58 protected: | 63 protected: |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
112 | 117 |
113 TEST_F(ThumbnailDatabaseTest, GetFaviconAfterMigrationToTopSites) { | 118 TEST_F(ThumbnailDatabaseTest, GetFaviconAfterMigrationToTopSites) { |
114 ThumbnailDatabase db; | 119 ThumbnailDatabase db; |
115 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 120 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
116 db.BeginTransaction(); | 121 db.BeginTransaction(); |
117 | 122 |
118 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 123 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
119 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 124 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
120 | 125 |
121 GURL url("http://google.com"); | 126 GURL url("http://google.com"); |
122 FaviconID id = db.AddFavicon(url, FAVICON); | 127 FaviconID icon_id = db.AddFavicon(url, FAVICON); |
128 db.SetFaviconSizes(icon_id, kSizesSmallAndLarge); | |
123 base::Time time = base::Time::Now(); | 129 base::Time time = base::Time::Now(); |
124 db.SetFavicon(id, favicon, time); | 130 FaviconBitmapID bitmap1_id = db.AddFaviconBitmap(icon_id, favicon, time, |
131 kSmallSize); | |
132 FaviconBitmapID bitmap2_id = db.AddFaviconBitmap(icon_id, favicon, time, | |
133 kLargeSize); | |
125 EXPECT_TRUE(db.RenameAndDropThumbnails(file_name_, new_file_name_)); | 134 EXPECT_TRUE(db.RenameAndDropThumbnails(file_name_, new_file_name_)); |
126 EXPECT_TRUE(db.IsLatestVersion()); | 135 EXPECT_TRUE(db.IsLatestVersion()); |
127 | 136 |
128 base::Time time_out; | |
129 std::vector<unsigned char> favicon_out; | |
130 GURL url_out; | 137 GURL url_out; |
131 IconType icon_type_out; | 138 IconType icon_type_out; |
132 EXPECT_TRUE(db.GetFavicon(id, &time_out, &favicon_out, &url_out, | 139 std::string sizes_out; |
133 &icon_type_out)); | 140 EXPECT_TRUE(db.GetFaviconHeader(icon_id, &url_out, &icon_type_out, |
141 &sizes_out)); | |
142 | |
134 EXPECT_EQ(url, url_out); | 143 EXPECT_EQ(url, url_out); |
135 EXPECT_EQ(time.ToTimeT(), time_out.ToTimeT()); | 144 EXPECT_EQ(FAVICON, icon_type_out); |
136 ASSERT_EQ(data.size(), favicon_out.size()); | 145 EXPECT_STREQ(kSizesSmallAndLarge.c_str(), sizes_out.c_str()); |
146 | |
147 std::vector<FaviconBitmap> favicon_bitmaps_out; | |
148 EXPECT_TRUE(db.GetFaviconBitmaps(icon_id, &favicon_bitmaps_out)); | |
149 EXPECT_EQ(2u, favicon_bitmaps_out.size()); | |
150 | |
151 FaviconBitmap favicon_bitmap1 = favicon_bitmaps_out[0]; | |
152 FaviconBitmap favicon_bitmap2 = favicon_bitmaps_out[1]; | |
153 | |
154 // Bitmaps do not need to be in particular order. | |
155 if (favicon_bitmap1.bitmap_id == bitmap2_id) { | |
156 FaviconBitmap tmp_favicon_bitmap = favicon_bitmap1; | |
157 favicon_bitmap1 = favicon_bitmap2; | |
158 favicon_bitmap2 = tmp_favicon_bitmap; | |
159 } | |
160 | |
161 EXPECT_EQ(bitmap1_id, favicon_bitmap1.bitmap_id); | |
162 EXPECT_EQ(icon_id, favicon_bitmap1.icon_id); | |
163 EXPECT_EQ(time.ToTimeT(), favicon_bitmap1.last_updated.ToTimeT()); | |
164 EXPECT_EQ(data.size(), favicon_bitmap1.bitmap_data->size()); | |
137 EXPECT_TRUE(std::equal(data.begin(), | 165 EXPECT_TRUE(std::equal(data.begin(), |
138 data.end(), | 166 data.end(), |
139 favicon_out.begin())); | 167 favicon_bitmap1.bitmap_data->front())); |
140 EXPECT_EQ(FAVICON, icon_type_out); | 168 EXPECT_EQ(kSmallSize, favicon_bitmap1.pixel_size); |
169 | |
170 EXPECT_EQ(bitmap2_id, favicon_bitmap2.bitmap_id); | |
171 EXPECT_EQ(icon_id, favicon_bitmap2.icon_id); | |
172 EXPECT_EQ(time.ToTimeT(), favicon_bitmap2.last_updated.ToTimeT()); | |
173 EXPECT_EQ(data.size(), favicon_bitmap2.bitmap_data->size()); | |
174 EXPECT_TRUE(std::equal(data.begin(), | |
175 data.end(), | |
176 favicon_bitmap2.bitmap_data->front())); | |
177 EXPECT_EQ(kLargeSize, favicon_bitmap2.pixel_size); | |
141 } | 178 } |
142 | 179 |
143 TEST_F(ThumbnailDatabaseTest, AddIconMapping) { | 180 TEST_F(ThumbnailDatabaseTest, AddIconMapping) { |
144 ThumbnailDatabase db; | 181 ThumbnailDatabase db; |
145 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 182 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
146 db.BeginTransaction(); | 183 db.BeginTransaction(); |
147 | 184 |
148 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 185 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
149 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 186 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
150 | 187 |
151 GURL url("http://google.com"); | 188 GURL url("http://google.com"); |
152 FaviconID id = db.AddFavicon(url, TOUCH_ICON); | 189 FaviconID id = db.AddFavicon(url, TOUCH_ICON); |
153 EXPECT_NE(0, id); | 190 EXPECT_NE(0, id); |
154 base::Time time = base::Time::Now(); | 191 base::Time time = base::Time::Now(); |
155 db.SetFavicon(id, favicon, time); | 192 db.AddFaviconBitmap(id, favicon, time, gfx::Size()); |
156 | 193 |
157 EXPECT_NE(0, db.AddIconMapping(url, id)); | 194 EXPECT_NE(0, db.AddIconMapping(url, id)); |
158 std::vector<IconMapping> icon_mapping; | 195 std::vector<IconMapping> icon_mapping; |
159 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 196 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); |
160 EXPECT_EQ(1u, icon_mapping.size()); | 197 EXPECT_EQ(1u, icon_mapping.size()); |
161 EXPECT_EQ(url, icon_mapping.front().page_url); | 198 EXPECT_EQ(url, icon_mapping.front().page_url); |
162 EXPECT_EQ(id, icon_mapping.front().icon_id); | 199 EXPECT_EQ(id, icon_mapping.front().icon_id); |
163 } | 200 } |
164 | 201 |
165 TEST_F(ThumbnailDatabaseTest, UpdateIconMapping) { | 202 TEST_F(ThumbnailDatabaseTest, UpdateIconMapping) { |
166 ThumbnailDatabase db; | 203 ThumbnailDatabase db; |
167 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 204 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
168 db.BeginTransaction(); | 205 db.BeginTransaction(); |
169 | 206 |
170 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 207 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
171 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 208 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
172 | 209 |
173 GURL url("http://google.com"); | 210 GURL url("http://google.com"); |
174 FaviconID id = db.AddFavicon(url, TOUCH_ICON); | 211 FaviconID id = db.AddFavicon(url, TOUCH_ICON); |
175 base::Time time = base::Time::Now(); | 212 base::Time time = base::Time::Now(); |
176 db.SetFavicon(id, favicon, time); | 213 db.AddFaviconBitmap(id, favicon, time, gfx::Size()); |
177 | 214 |
178 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); | 215 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); |
179 std::vector<IconMapping> icon_mapping; | 216 std::vector<IconMapping> icon_mapping; |
180 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 217 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); |
181 ASSERT_EQ(1u, icon_mapping.size()); | 218 ASSERT_EQ(1u, icon_mapping.size()); |
182 EXPECT_EQ(url, icon_mapping.front().page_url); | 219 EXPECT_EQ(url, icon_mapping.front().page_url); |
183 EXPECT_EQ(id, icon_mapping.front().icon_id); | 220 EXPECT_EQ(id, icon_mapping.front().icon_id); |
184 | 221 |
185 GURL url1("http://www.google.com/"); | 222 GURL url1("http://www.google.com/"); |
186 FaviconID new_id = db.AddFavicon(url1, TOUCH_ICON); | 223 FaviconID new_id = db.AddFavicon(url1, TOUCH_ICON); |
(...skipping 11 matching lines...) Expand all Loading... | |
198 ThumbnailDatabase db; | 235 ThumbnailDatabase db; |
199 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 236 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
200 db.BeginTransaction(); | 237 db.BeginTransaction(); |
201 | 238 |
202 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 239 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
203 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 240 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
204 | 241 |
205 GURL url("http://google.com"); | 242 GURL url("http://google.com"); |
206 FaviconID id = db.AddFavicon(url, TOUCH_ICON); | 243 FaviconID id = db.AddFavicon(url, TOUCH_ICON); |
207 base::Time time = base::Time::Now(); | 244 base::Time time = base::Time::Now(); |
208 db.SetFavicon(id, favicon, time); | 245 db.AddFaviconBitmap(id, favicon, time, gfx::Size()); |
209 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); | 246 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); |
210 | 247 |
211 FaviconID id2 = db.AddFavicon(url, FAVICON); | 248 FaviconID id2 = db.AddFavicon(url, FAVICON); |
212 db.SetFavicon(id2, favicon, time); | 249 db.AddFaviconBitmap(id2, favicon, time, gfx::Size()); |
213 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); | 250 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); |
214 ASSERT_NE(id, id2); | 251 ASSERT_NE(id, id2); |
215 | 252 |
216 std::vector<IconMapping> icon_mapping; | 253 std::vector<IconMapping> icon_mapping; |
217 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 254 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); |
218 ASSERT_EQ(2u, icon_mapping.size()); | 255 ASSERT_EQ(2u, icon_mapping.size()); |
219 EXPECT_EQ(icon_mapping.front().icon_type, TOUCH_ICON); | 256 EXPECT_EQ(icon_mapping.front().icon_type, TOUCH_ICON); |
220 EXPECT_TRUE(db.GetIconMappingForPageURL(url, FAVICON, NULL)); | 257 EXPECT_TRUE(db.GetIconMappingForPageURL(url, FAVICON, NULL)); |
221 | 258 |
222 db.DeleteIconMappings(url); | 259 db.DeleteIconMappings(url); |
223 | 260 |
224 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, NULL)); | 261 EXPECT_FALSE(db.GetIconMappingsForPageURL(url, NULL)); |
225 EXPECT_FALSE(db.GetIconMappingForPageURL(url, FAVICON, NULL)); | 262 EXPECT_FALSE(db.GetIconMappingForPageURL(url, FAVICON, NULL)); |
226 } | 263 } |
227 | 264 |
228 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURL) { | 265 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURL) { |
229 ThumbnailDatabase db; | 266 ThumbnailDatabase db; |
230 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 267 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
231 db.BeginTransaction(); | 268 db.BeginTransaction(); |
232 | 269 |
233 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 270 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
234 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 271 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
235 | 272 |
236 GURL url("http://google.com"); | 273 GURL url("http://google.com"); |
237 | 274 |
238 FaviconID id1 = db.AddFavicon(url, TOUCH_ICON); | 275 FaviconID id1 = db.AddFavicon(url, TOUCH_ICON); |
239 base::Time time = base::Time::Now(); | 276 base::Time time = base::Time::Now(); |
240 db.SetFavicon(id1, favicon, time); | 277 db.AddFaviconBitmap(id1, favicon, time, kSmallSize); |
278 db.AddFaviconBitmap(id1, favicon, time, kLargeSize); | |
241 EXPECT_TRUE(0 < db.AddIconMapping(url, id1)); | 279 EXPECT_TRUE(0 < db.AddIconMapping(url, id1)); |
242 | 280 |
243 FaviconID id2 = db.AddFavicon(url, FAVICON); | 281 FaviconID id2 = db.AddFavicon(url, FAVICON); |
244 EXPECT_NE(id1, id2); | 282 EXPECT_NE(id1, id2); |
245 db.SetFavicon(id2, favicon, time); | 283 db.AddFaviconBitmap(id2, favicon, time, kSmallSize); |
246 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); | 284 EXPECT_TRUE(0 < db.AddIconMapping(url, id2)); |
247 | 285 |
248 std::vector<IconMapping> icon_mapping; | 286 std::vector<IconMapping> icon_mappings; |
249 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 287 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mappings)); |
250 ASSERT_EQ(2u, icon_mapping.size()); | 288 ASSERT_EQ(2u, icon_mappings.size()); |
251 EXPECT_NE(icon_mapping[0].icon_id, icon_mapping[1].icon_id); | 289 EXPECT_EQ(id1, icon_mappings[0].icon_id); |
252 EXPECT_TRUE(icon_mapping[0].icon_id == id1 && icon_mapping[1].icon_id == id2); | 290 EXPECT_EQ(id2, icon_mappings[1].icon_id); |
253 } | 291 } |
254 | 292 |
255 TEST_F(ThumbnailDatabaseTest, UpgradeToVersion4) { | 293 TEST_F(ThumbnailDatabaseTest, UpgradeToVersion4) { |
256 ThumbnailDatabase db; | 294 ThumbnailDatabase db; |
257 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 295 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
258 db.BeginTransaction(); | 296 db.BeginTransaction(); |
259 | 297 |
260 const char* name = "favicons"; | 298 const char* name = "favicons"; |
261 std::string sql; | 299 std::string sql; |
262 sql.append("DROP TABLE IF EXISTS "); | 300 sql.append("DROP TABLE IF EXISTS "); |
263 sql.append(name); | 301 sql.append(name); |
264 EXPECT_TRUE(db.db_.Execute(sql.c_str())); | 302 EXPECT_TRUE(db.db_.Execute(sql.c_str())); |
265 | 303 |
266 sql.resize(0); | 304 sql.resize(0); |
267 sql.append("CREATE TABLE "); | 305 sql.append("CREATE TABLE "); |
268 sql.append(name); | 306 sql.append(name); |
269 sql.append("(" | 307 sql.append("(" |
270 "id INTEGER PRIMARY KEY," | 308 "id INTEGER PRIMARY KEY," |
271 "url LONGVARCHAR NOT NULL," | 309 "url LONGVARCHAR NOT NULL," |
272 "last_updated INTEGER DEFAULT 0," | 310 "last_updated INTEGER DEFAULT 0," |
273 "image_data BLOB)"); | 311 "image_data BLOB)"); |
274 EXPECT_TRUE(db.db_.Execute(sql.c_str())); | 312 EXPECT_TRUE(db.db_.Execute(sql.c_str())); |
275 | 313 |
276 EXPECT_TRUE(db.UpgradeToVersion4()); | 314 EXPECT_TRUE(db.UpgradeToVersion4()); |
277 | 315 |
278 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 316 GURL url("http://google.com"); |
279 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | |
280 | 317 |
281 GURL url("http://google.com"); | 318 sql::Statement statement; |
282 FaviconID id = db.AddFavicon(url, TOUCH_ICON); | 319 statement.Assign(db.db_.GetCachedStatement(SQL_FROM_HERE, |
283 base::Time time = base::Time::Now(); | 320 "INSERT INTO favicons (url, icon_type) VALUES (?, ?)")); |
284 db.SetFavicon(id, favicon, time); | 321 statement.BindString(0, URLDatabase::GURLToDatabaseURL(url)); |
322 statement.BindInt(1, TOUCH_ICON); | |
323 EXPECT_TRUE(statement.Run()); | |
285 | 324 |
286 EXPECT_TRUE(0 < db.AddIconMapping(url, id)); | 325 statement.Assign(db.db_.GetCachedStatement(SQL_FROM_HERE, |
287 IconMapping icon_mapping; | 326 "SELECT icon_type FROM favicons")); |
288 EXPECT_TRUE(db.GetIconMappingForPageURL(url, TOUCH_ICON, &icon_mapping)); | 327 EXPECT_TRUE(statement.Step()); |
289 EXPECT_EQ(url, icon_mapping.page_url); | 328 |
290 EXPECT_EQ(id, icon_mapping.icon_id); | 329 EXPECT_EQ(TOUCH_ICON, static_cast<IconType>(statement.ColumnInt(0))); |
291 } | 330 } |
292 | 331 |
293 TEST_F(ThumbnailDatabaseTest, UpgradeToVersion5) { | 332 TEST_F(ThumbnailDatabaseTest, UpgradeToVersion5) { |
294 ThumbnailDatabase db; | 333 ThumbnailDatabase db; |
295 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 334 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
296 db.BeginTransaction(); | 335 db.BeginTransaction(); |
297 | 336 |
298 const char* name = "favicons"; | 337 const char* name = "favicons"; |
299 std::string sql; | 338 std::string sql; |
300 sql.append("DROP TABLE IF EXISTS "); | 339 sql.append("DROP TABLE IF EXISTS "); |
(...skipping 10 matching lines...) Expand all Loading... | |
311 "image_data BLOB," | 350 "image_data BLOB," |
312 "icon_type INTEGER DEFAULT 1)"); | 351 "icon_type INTEGER DEFAULT 1)"); |
313 ASSERT_TRUE(db.db_.Execute(sql.c_str())); | 352 ASSERT_TRUE(db.db_.Execute(sql.c_str())); |
314 | 353 |
315 ASSERT_TRUE(db.UpgradeToVersion5()); | 354 ASSERT_TRUE(db.UpgradeToVersion5()); |
316 | 355 |
317 sql = "SELECT sizes FROM favicons"; | 356 sql = "SELECT sizes FROM favicons"; |
318 EXPECT_TRUE(db.db_.Execute(sql.c_str())); | 357 EXPECT_TRUE(db.db_.Execute(sql.c_str())); |
319 } | 358 } |
320 | 359 |
321 TEST_F(ThumbnailDatabaseTest, TemporayIconMapping) { | 360 TEST_F(ThumbnailDatabaseTest, UpgradeToVersion6) { |
361 ThumbnailDatabase db; | |
362 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | |
363 db.BeginTransaction(); | |
364 | |
365 const char* name = "favicons"; | |
366 | |
367 std::string sql; | |
368 sql.append("DROP TABLE IF EXISTS "); | |
369 sql.append(name); | |
370 EXPECT_TRUE(db.db_.Execute(sql.c_str())); | |
371 | |
372 sql.clear(); | |
373 sql.append("CREATE TABLE "); | |
374 sql.append(name); | |
375 sql.append("(" | |
376 "id INTEGER PRIMARY KEY," | |
377 "url LONGVARCHAR NOT NULL," | |
378 "last_updated INTEGER DEFAULT 0," | |
379 "image_data BLOB," | |
380 "icon_type INTEGER DEFAULT 1," | |
381 "sizes LONGVARCHAR)"); | |
382 EXPECT_TRUE(db.db_.Execute(sql.c_str())); | |
383 | |
384 int favicon_id = 1; | |
385 GURL url("http://google.com"); | |
386 time_t last_updated = Time::Now().ToTimeT(); | |
387 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | |
388 scoped_refptr<base::RefCountedBytes> bitmap_data( | |
389 new base::RefCountedBytes(data)); | |
390 | |
391 sql::Statement statement; | |
392 statement.Assign(db.db_.GetCachedStatement(SQL_FROM_HERE, | |
393 "INSERT INTO favicons (id, url, last_updated, image_data, icon_type, " | |
394 "sizes) VALUES (?, ?, ?, ?, ?, ?)")); | |
395 statement.BindInt(0, favicon_id); | |
396 statement.BindString(1, URLDatabase::GURLToDatabaseURL(url)); | |
397 statement.BindInt64(2, last_updated); | |
398 statement.BindBlob(3, bitmap_data->front(), | |
399 static_cast<int>(bitmap_data->size())); | |
400 statement.BindInt(4, TOUCH_ICON); | |
401 statement.BindCString(5, "Data which happened to be there"); | |
402 EXPECT_TRUE(statement.Run()); | |
403 | |
404 EXPECT_TRUE(db.UpgradeToVersion6()); | |
405 | |
406 statement.Assign(db.db_.GetCachedStatement(SQL_FROM_HERE, | |
407 "SELECT id, url, icon_type, sizes FROM favicons")); | |
408 EXPECT_TRUE(statement.Step()); | |
409 EXPECT_EQ(favicon_id, statement.ColumnInt(0)); | |
410 EXPECT_EQ(url, GURL(statement.ColumnString(1))); | |
411 EXPECT_EQ(TOUCH_ICON, statement.ColumnInt(2)); | |
412 // sizes should be set to "0 0". | |
413 EXPECT_EQ(std::string("0 0"), statement.ColumnString(3)); | |
414 | |
415 statement.Assign(db.db_.GetCachedStatement(SQL_FROM_HERE, | |
416 "SELECT icon_id, last_updated, image_data, width, height " | |
417 "FROM favicon_bitmaps")); | |
418 EXPECT_TRUE(statement.Step()); | |
419 EXPECT_EQ(favicon_id, statement.ColumnInt(0)); | |
420 EXPECT_EQ(last_updated, statement.ColumnInt64(1)); | |
421 EXPECT_EQ(static_cast<int>(bitmap_data->size()), | |
422 statement.ColumnByteLength(2)); | |
423 EXPECT_EQ(0, statement.ColumnInt(3)); | |
424 EXPECT_EQ(0, statement.ColumnInt(4)); | |
425 } | |
426 | |
427 TEST_F(ThumbnailDatabaseTest, TemporaryTables) { | |
322 ThumbnailDatabase db; | 428 ThumbnailDatabase db; |
323 | 429 |
324 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 430 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
325 | 431 |
326 db.BeginTransaction(); | 432 db.BeginTransaction(); |
327 | 433 |
328 EXPECT_TRUE(db.InitTemporaryIconMappingTable()); | 434 EXPECT_TRUE(db.InitTemporaryTables()); |
329 | 435 |
330 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 436 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
331 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 437 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
332 | 438 |
439 GURL unkept_url("http://google.com/favicon2.ico"); | |
440 FaviconID unkept_id = db.AddFavicon(unkept_url, FAVICON); | |
441 db.AddFaviconBitmap(unkept_id, favicon, base::Time::Now(), kSmallSize); | |
442 | |
443 GURL kept_url("http://google.com/favicon.ico"); | |
444 FaviconID kept_id = db.AddFavicon(kept_url, FAVICON); | |
445 db.AddFaviconBitmap(kept_id, favicon, base::Time::Now(), kLargeSize); | |
446 | |
447 GURL page_url("http://google.com"); | |
448 db.AddIconMapping(page_url, unkept_id); | |
449 db.AddIconMapping(page_url, kept_id); | |
450 | |
451 FaviconID new_favicon_id = | |
452 db.CopyFaviconAndFaviconBitmapsToTemporaryTables(kept_id); | |
453 EXPECT_NE(0, new_favicon_id); | |
454 EXPECT_TRUE(db.AddToTemporaryIconMappingTable(page_url, new_favicon_id)); | |
455 | |
456 EXPECT_TRUE(db.CommitTemporaryTables()); | |
457 | |
458 // Only copied data should be left. | |
459 IconMapping icon_mapping; | |
460 EXPECT_TRUE(db.GetIconMappingForPageURL(page_url, FAVICON, &icon_mapping)); | |
461 EXPECT_EQ(new_favicon_id, icon_mapping.icon_id); | |
462 EXPECT_EQ(page_url, icon_mapping.page_url); | |
463 | |
464 std::vector<FaviconBitmap> favicon_bitmaps; | |
465 EXPECT_TRUE(db.GetFaviconBitmaps(icon_mapping.icon_id, &favicon_bitmaps)); | |
466 EXPECT_EQ(1u, favicon_bitmaps.size()); | |
467 EXPECT_EQ(kLargeSize, favicon_bitmaps[0].pixel_size); | |
468 | |
469 EXPECT_FALSE(db.GetFaviconIDForFaviconURL(unkept_url, false, NULL)); | |
470 } | |
471 | |
472 TEST_F(ThumbnailDatabaseTest, DeleteFavicon) { | |
sky
2012/08/16 16:12:57
Add a short description for tests.
| |
473 ThumbnailDatabase db; | |
474 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | |
475 db.BeginTransaction(); | |
476 | |
477 std::vector<unsigned char> data1(blob1, blob1 + sizeof(blob1)); | |
478 scoped_refptr<base::RefCountedBytes> favicon1( | |
479 new base::RefCountedBytes(data1)); | |
480 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2)); | |
481 scoped_refptr<base::RefCountedBytes> favicon2( | |
482 new base::RefCountedBytes(data2)); | |
483 | |
333 GURL url("http://google.com"); | 484 GURL url("http://google.com"); |
334 FaviconID id = db.AddFavicon(url, FAVICON); | 485 FaviconID id = db.AddFavicon(url, FAVICON); |
335 base::Time time = base::Time::Now(); | 486 base::Time last_updated = base::Time::Now(); |
336 db.SetFavicon(id, favicon, time); | 487 db.AddFaviconBitmap(id, favicon1, last_updated, kSmallSize); |
488 db.AddFaviconBitmap(id, favicon2, last_updated, kLargeSize); | |
337 | 489 |
338 db.AddToTemporaryIconMappingTable(url, id); | 490 EXPECT_TRUE(db.GetFaviconBitmaps(id, NULL)); |
339 db.CommitTemporaryIconMappingTable(); | 491 |
340 IconMapping icon_mapping; | 492 EXPECT_TRUE(db.DeleteFavicon(id)); |
341 EXPECT_TRUE(db.GetIconMappingForPageURL(url, FAVICON, &icon_mapping)); | 493 EXPECT_FALSE(db.GetFaviconBitmaps(id, NULL)); |
342 EXPECT_EQ(id, icon_mapping.icon_id); | |
343 EXPECT_EQ(url, icon_mapping.page_url); | |
344 } | 494 } |
345 | 495 |
346 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLForReturnOrder) { | 496 TEST_F(ThumbnailDatabaseTest, GetIconMappingsForPageURLForReturnOrder) { |
347 ThumbnailDatabase db; | 497 ThumbnailDatabase db; |
348 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 498 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
349 db.BeginTransaction(); | 499 db.BeginTransaction(); |
350 | 500 |
351 // Add a favicon | 501 // Add a favicon |
352 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 502 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
353 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 503 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
354 | 504 |
355 GURL url("http://google.com"); | 505 GURL url("http://google.com"); |
356 FaviconID id = db.AddFavicon(url, FAVICON); | 506 FaviconID id = db.AddFavicon(url, FAVICON); |
357 base::Time time = base::Time::Now(); | 507 base::Time time = base::Time::Now(); |
358 db.SetFavicon(id, favicon, time); | 508 db.AddFaviconBitmap(id, favicon, time, gfx::Size()); |
359 | 509 |
360 EXPECT_NE(0, db.AddIconMapping(url, id)); | 510 EXPECT_NE(0, db.AddIconMapping(url, id)); |
361 std::vector<IconMapping> icon_mapping; | 511 std::vector<IconMapping> icon_mapping; |
362 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 512 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); |
363 | 513 |
364 EXPECT_EQ(url, icon_mapping.front().page_url); | 514 EXPECT_EQ(url, icon_mapping.front().page_url); |
365 EXPECT_EQ(id, icon_mapping.front().icon_id); | 515 EXPECT_EQ(id, icon_mapping.front().icon_id); |
366 EXPECT_EQ(FAVICON, icon_mapping.front().icon_type); | 516 EXPECT_EQ(FAVICON, icon_mapping.front().icon_type); |
367 | 517 |
368 // Add a touch icon | 518 // Add a touch icon |
369 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2)); | 519 std::vector<unsigned char> data2(blob2, blob2 + sizeof(blob2)); |
370 scoped_refptr<base::RefCountedBytes> favicon2 = | 520 scoped_refptr<base::RefCountedBytes> favicon2 = |
371 new base::RefCountedBytes(data); | 521 new base::RefCountedBytes(data); |
372 | 522 |
373 FaviconID id2 = db.AddFavicon(url, TOUCH_ICON); | 523 FaviconID id2 = db.AddFavicon(url, TOUCH_ICON); |
374 db.SetFavicon(id2, favicon2, time); | 524 db.AddFaviconBitmap(id2, favicon2, time, gfx::Size()); |
375 EXPECT_NE(0, db.AddIconMapping(url, id2)); | 525 EXPECT_NE(0, db.AddIconMapping(url, id2)); |
376 | 526 |
377 icon_mapping.clear(); | 527 icon_mapping.clear(); |
378 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 528 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); |
379 | 529 |
380 EXPECT_EQ(url, icon_mapping.front().page_url); | 530 EXPECT_EQ(url, icon_mapping.front().page_url); |
381 EXPECT_EQ(id2, icon_mapping.front().icon_id); | 531 EXPECT_EQ(id2, icon_mapping.front().icon_id); |
382 EXPECT_EQ(TOUCH_ICON, icon_mapping.front().icon_type); | 532 EXPECT_EQ(TOUCH_ICON, icon_mapping.front().icon_type); |
383 | 533 |
384 // Add a touch precomposed icon | 534 // Add a touch precomposed icon |
385 scoped_refptr<base::RefCountedBytes> favicon3 = | 535 scoped_refptr<base::RefCountedBytes> favicon3 = |
386 new base::RefCountedBytes(data2); | 536 new base::RefCountedBytes(data2); |
387 | 537 |
388 FaviconID id3 = db.AddFavicon(url, TOUCH_PRECOMPOSED_ICON); | 538 FaviconID id3 = db.AddFavicon(url, TOUCH_PRECOMPOSED_ICON); |
389 db.SetFavicon(id3, favicon3, time); | 539 db.AddFaviconBitmap(id3, favicon3, time, gfx::Size()); |
390 EXPECT_NE(0, db.AddIconMapping(url, id3)); | 540 EXPECT_NE(0, db.AddIconMapping(url, id3)); |
391 | 541 |
392 icon_mapping.clear(); | 542 icon_mapping.clear(); |
393 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); | 543 EXPECT_TRUE(db.GetIconMappingsForPageURL(url, &icon_mapping)); |
394 | 544 |
395 EXPECT_EQ(url, icon_mapping.front().page_url); | 545 EXPECT_EQ(url, icon_mapping.front().page_url); |
396 EXPECT_EQ(id3, icon_mapping.front().icon_id); | 546 EXPECT_EQ(id3, icon_mapping.front().icon_id); |
397 EXPECT_EQ(TOUCH_PRECOMPOSED_ICON, icon_mapping.front().icon_type); | 547 EXPECT_EQ(TOUCH_PRECOMPOSED_ICON, icon_mapping.front().icon_type); |
398 } | 548 } |
399 | 549 |
400 TEST_F(ThumbnailDatabaseTest, HasMappingFor) { | 550 TEST_F(ThumbnailDatabaseTest, HasMappingFor) { |
401 ThumbnailDatabase db; | 551 ThumbnailDatabase db; |
402 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 552 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
403 db.BeginTransaction(); | 553 db.BeginTransaction(); |
404 | 554 |
405 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 555 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
406 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 556 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
407 | 557 |
408 // Add a favicon which will have icon_mappings | 558 // Add a favicon which will have icon_mappings |
409 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); | 559 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); |
410 EXPECT_NE(id1, 0); | 560 EXPECT_NE(id1, 0); |
411 base::Time time = base::Time::Now(); | 561 base::Time time = base::Time::Now(); |
412 db.SetFavicon(id1, favicon, time); | 562 db.AddFaviconBitmap(id1, favicon, time, gfx::Size()); |
413 | 563 |
414 // Add another type of favicon | 564 // Add another type of favicon |
415 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); | 565 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); |
416 EXPECT_NE(id2, 0); | 566 EXPECT_NE(id2, 0); |
417 time = base::Time::Now(); | 567 time = base::Time::Now(); |
418 db.SetFavicon(id2, favicon, time); | 568 db.AddFaviconBitmap(id2, favicon, time, gfx::Size()); |
419 | 569 |
420 // Add 3rd favicon | 570 // Add 3rd favicon |
421 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); | 571 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); |
422 EXPECT_NE(id3, 0); | 572 EXPECT_NE(id3, 0); |
423 time = base::Time::Now(); | 573 time = base::Time::Now(); |
424 db.SetFavicon(id3, favicon, time); | 574 db.AddFaviconBitmap(id3, favicon, time, gfx::Size()); |
425 | 575 |
426 // Add 2 icon mapping | 576 // Add 2 icon mapping |
427 GURL page_url("http://www.google.com"); | 577 GURL page_url("http://www.google.com"); |
428 EXPECT_TRUE(db.AddIconMapping(page_url, id1)); | 578 EXPECT_TRUE(db.AddIconMapping(page_url, id1)); |
429 EXPECT_TRUE(db.AddIconMapping(page_url, id2)); | 579 EXPECT_TRUE(db.AddIconMapping(page_url, id2)); |
430 | 580 |
431 EXPECT_TRUE(db.HasMappingFor(id1)); | 581 EXPECT_TRUE(db.HasMappingFor(id1)); |
432 EXPECT_TRUE(db.HasMappingFor(id2)); | 582 EXPECT_TRUE(db.HasMappingFor(id2)); |
433 EXPECT_FALSE(db.HasMappingFor(id3)); | 583 EXPECT_FALSE(db.HasMappingFor(id3)); |
434 | 584 |
435 // Remove all mappings | 585 // Remove all mappings |
436 db.DeleteIconMappings(page_url); | 586 db.DeleteIconMappings(page_url); |
437 EXPECT_FALSE(db.HasMappingFor(id1)); | 587 EXPECT_FALSE(db.HasMappingFor(id1)); |
438 EXPECT_FALSE(db.HasMappingFor(id2)); | 588 EXPECT_FALSE(db.HasMappingFor(id2)); |
439 EXPECT_FALSE(db.HasMappingFor(id3)); | 589 EXPECT_FALSE(db.HasMappingFor(id3)); |
440 } | 590 } |
441 | 591 |
442 TEST_F(ThumbnailDatabaseTest, CloneIconMapping) { | 592 TEST_F(ThumbnailDatabaseTest, CloneIconMapping) { |
443 ThumbnailDatabase db; | 593 ThumbnailDatabase db; |
444 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 594 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
445 db.BeginTransaction(); | 595 db.BeginTransaction(); |
446 | 596 |
447 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 597 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
448 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 598 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
449 | 599 |
450 // Add a favicon which will have icon_mappings | 600 // Add a favicon which will have icon_mappings |
451 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); | 601 FaviconID id1 = db.AddFavicon(GURL("http://google.com"), FAVICON); |
452 EXPECT_NE(0, id1); | 602 EXPECT_NE(0, id1); |
453 base::Time time = base::Time::Now(); | 603 base::Time time = base::Time::Now(); |
454 db.SetFavicon(id1, favicon, time); | 604 db.AddFaviconBitmap(id1, favicon, time, gfx::Size()); |
455 | 605 |
456 // Add another type of favicon | 606 // Add another type of favicon |
457 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); | 607 FaviconID id2 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); |
458 EXPECT_NE(0, id2); | 608 EXPECT_NE(0, id2); |
459 time = base::Time::Now(); | 609 time = base::Time::Now(); |
460 db.SetFavicon(id2, favicon, time); | 610 db.AddFaviconBitmap(id2, favicon, time, gfx::Size()); |
461 | 611 |
462 // Add 3rd favicon | 612 // Add 3rd favicon |
463 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); | 613 FaviconID id3 = db.AddFavicon(GURL("http://www.google.com/icon"), TOUCH_ICON); |
464 EXPECT_NE(0, id3); | 614 EXPECT_NE(0, id3); |
465 time = base::Time::Now(); | 615 time = base::Time::Now(); |
466 db.SetFavicon(id3, favicon, time); | 616 db.AddFaviconBitmap(id3, favicon, time, gfx::Size()); |
467 | 617 |
468 GURL page1_url("http://page1.com"); | 618 GURL page1_url("http://page1.com"); |
469 EXPECT_TRUE(db.AddIconMapping(page1_url, id1)); | 619 EXPECT_TRUE(db.AddIconMapping(page1_url, id1)); |
470 EXPECT_TRUE(db.AddIconMapping(page1_url, id2)); | 620 EXPECT_TRUE(db.AddIconMapping(page1_url, id2)); |
471 | 621 |
472 GURL page2_url("http://page2.com"); | 622 GURL page2_url("http://page2.com"); |
473 EXPECT_TRUE(db.AddIconMapping(page2_url, id3)); | 623 EXPECT_TRUE(db.AddIconMapping(page2_url, id3)); |
474 | 624 |
475 // Test we do nothing with existing mappings. | 625 // Test we do nothing with existing mappings. |
476 std::vector<IconMapping> icon_mapping; | 626 std::vector<IconMapping> icon_mapping; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
516 // Migration should be done. | 666 // Migration should be done. |
517 // Test one icon_mapping. | 667 // Test one icon_mapping. |
518 GURL page_url1 = GURL("http://google.com/"); | 668 GURL page_url1 = GURL("http://google.com/"); |
519 std::vector<IconMapping> icon_mappings; | 669 std::vector<IconMapping> icon_mappings; |
520 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url1, &icon_mappings)); | 670 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url1, &icon_mappings)); |
521 ASSERT_EQ(1u, icon_mappings.size()); | 671 ASSERT_EQ(1u, icon_mappings.size()); |
522 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); | 672 EXPECT_EQ(FAVICON, icon_mappings[0].icon_type); |
523 EXPECT_EQ(page_url1, icon_mappings[0].page_url); | 673 EXPECT_EQ(page_url1, icon_mappings[0].page_url); |
524 EXPECT_EQ(1, icon_mappings[0].icon_id); | 674 EXPECT_EQ(1, icon_mappings[0].icon_id); |
525 base::Time time; | 675 base::Time time; |
526 std::vector<unsigned char> out_data; | 676 scoped_refptr<base::RefCountedMemory> out_data; |
527 GURL out_icon_url; | 677 GURL out_icon_url; |
528 ASSERT_TRUE(db.GetFavicon( | 678 ASSERT_TRUE(db.GetFavicon( |
529 icon_mappings[0].icon_id, &time, &out_data, &out_icon_url, NULL)); | 679 icon_mappings[0].icon_id, &time, &out_data, &out_icon_url, NULL)); |
530 EXPECT_EQ(icon1, out_icon_url); | 680 EXPECT_EQ(icon1, out_icon_url); |
531 | 681 |
532 // Test a page which has the same icon. | 682 // Test a page which has the same icon. |
533 GURL page_url3 = GURL("http://www.google.com/"); | 683 GURL page_url3 = GURL("http://www.google.com/"); |
534 icon_mappings.clear(); | 684 icon_mappings.clear(); |
535 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url3, &icon_mappings)); | 685 EXPECT_TRUE(db.GetIconMappingsForPageURL(page_url3, &icon_mappings)); |
536 ASSERT_EQ(1u, icon_mappings.size()); | 686 ASSERT_EQ(1u, icon_mappings.size()); |
(...skipping 22 matching lines...) Expand all Loading... | |
559 ThumbnailDatabase db; | 709 ThumbnailDatabase db; |
560 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); | 710 ASSERT_EQ(sql::INIT_OK, db.Init(file_name_, NULL, NULL)); |
561 db.BeginTransaction(); | 711 db.BeginTransaction(); |
562 | 712 |
563 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); | 713 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); |
564 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); | 714 scoped_refptr<base::RefCountedBytes> favicon(new base::RefCountedBytes(data)); |
565 | 715 |
566 GURL url("http://google.com"); | 716 GURL url("http://google.com"); |
567 FaviconID touch_icon_id1 = db.AddFavicon(url, TOUCH_ICON); | 717 FaviconID touch_icon_id1 = db.AddFavicon(url, TOUCH_ICON); |
568 ASSERT_NE(0, touch_icon_id1); | 718 ASSERT_NE(0, touch_icon_id1); |
569 ASSERT_TRUE(db.SetFavicon(touch_icon_id1, favicon, base::Time::Now())); | 719 ASSERT_TRUE(db.AddFaviconBitmap(touch_icon_id1, favicon, base::Time::Now(), |
720 gfx::Size())); | |
570 IconMappingID touch_mapping_id1 = db.AddIconMapping(url, touch_icon_id1); | 721 IconMappingID touch_mapping_id1 = db.AddIconMapping(url, touch_icon_id1); |
571 ASSERT_NE(0, touch_mapping_id1); | 722 ASSERT_NE(0, touch_mapping_id1); |
572 | 723 |
573 FaviconID favicon_id1 = db.AddFavicon(url, FAVICON); | 724 FaviconID favicon_id1 = db.AddFavicon(url, FAVICON); |
574 ASSERT_NE(0, favicon_id1); | 725 ASSERT_NE(0, favicon_id1); |
575 ASSERT_TRUE(db.SetFavicon(favicon_id1, favicon, base::Time::Now())); | 726 ASSERT_TRUE(db.AddFaviconBitmap(favicon_id1, favicon, base::Time::Now(), |
727 gfx::Size())); | |
576 IconMappingID favicon_mapping_id1 = db.AddIconMapping(url, favicon_id1); | 728 IconMappingID favicon_mapping_id1 = db.AddIconMapping(url, favicon_id1); |
577 ASSERT_NE(0, favicon_mapping_id1); | 729 ASSERT_NE(0, favicon_mapping_id1); |
578 | 730 |
579 GURL url2("http://chromium.org"); | 731 GURL url2("http://chromium.org"); |
580 FaviconID favicon_id2 = db.AddFavicon(url2, FAVICON); | 732 FaviconID favicon_id2 = db.AddFavicon(url2, FAVICON); |
581 ASSERT_NE(0, favicon_id2); | 733 ASSERT_NE(0, favicon_id2); |
582 ASSERT_TRUE(db.SetFavicon(favicon_id2, favicon, base::Time::Now())); | 734 ASSERT_TRUE(db.AddFaviconBitmap(favicon_id2, favicon, base::Time::Now(), |
735 gfx::Size())); | |
583 IconMappingID favicon_mapping_id2 = db.AddIconMapping(url2, favicon_id2); | 736 IconMappingID favicon_mapping_id2 = db.AddIconMapping(url2, favicon_id2); |
584 ASSERT_NE(0, favicon_mapping_id2); | 737 ASSERT_NE(0, favicon_mapping_id2); |
585 | 738 |
586 IconMapping icon_mapping; | 739 IconMapping icon_mapping; |
587 ThumbnailDatabase::IconMappingEnumerator enumerator1; | 740 ThumbnailDatabase::IconMappingEnumerator enumerator1; |
588 ASSERT_TRUE(db.InitIconMappingEnumerator(FAVICON, &enumerator1)); | 741 ASSERT_TRUE(db.InitIconMappingEnumerator(FAVICON, &enumerator1)); |
589 // There are 2 favicon mappings. | 742 // There are 2 favicon mappings. |
590 bool has_favicon_mapping1 = false; | 743 bool has_favicon_mapping1 = false; |
591 bool has_favicon_mapping2 = false; | 744 bool has_favicon_mapping2 = false; |
592 int mapping_count = 0; | 745 int mapping_count = 0; |
(...skipping 20 matching lines...) Expand all Loading... | |
613 ASSERT_TRUE(enumerator2.GetNextIconMapping(&icon_mapping)); | 766 ASSERT_TRUE(enumerator2.GetNextIconMapping(&icon_mapping)); |
614 EXPECT_EQ(touch_mapping_id1, icon_mapping.mapping_id); | 767 EXPECT_EQ(touch_mapping_id1, icon_mapping.mapping_id); |
615 EXPECT_EQ(url, icon_mapping.page_url); | 768 EXPECT_EQ(url, icon_mapping.page_url); |
616 EXPECT_EQ(touch_icon_id1, icon_mapping.icon_id); | 769 EXPECT_EQ(touch_icon_id1, icon_mapping.icon_id); |
617 EXPECT_EQ(TOUCH_ICON, icon_mapping.icon_type); | 770 EXPECT_EQ(TOUCH_ICON, icon_mapping.icon_type); |
618 | 771 |
619 EXPECT_FALSE(enumerator2.GetNextIconMapping(&icon_mapping)); | 772 EXPECT_FALSE(enumerator2.GetNextIconMapping(&icon_mapping)); |
620 } | 773 } |
621 | 774 |
622 } // namespace history | 775 } // namespace history |
OLD | NEW |