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

Side by Side Diff: chrome/browser/history/thumbnail_database_unittest.cc

Issue 10815068: Changes favicon database to support storing bitmaps of different sizes for the same icon_url (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Moved some of the android stuff to 10831341 Created 8 years, 4 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 <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
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
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
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
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
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
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
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
OLDNEW
« chrome/browser/history/thumbnail_database.cc ('K') | « chrome/browser/history/thumbnail_database.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698