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

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

Issue 10870022: Change FaviconData to be able to return data for multiple bitmaps for same icon URL (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 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 <set> 5 #include <set>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/file_path.h" 9 #include "base/file_path.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 most_visited_list_.swap(data); 117 most_visited_list_.swap(data);
118 } 118 }
119 119
120 // Callback for QueryFiltered. 120 // Callback for QueryFiltered.
121 void OnQueryFiltered(CancelableRequestProvider::Handle handle, 121 void OnQueryFiltered(CancelableRequestProvider::Handle handle,
122 const history::FilteredURLList& data) { 122 const history::FilteredURLList& data) {
123 filtered_list_ = data; 123 filtered_list_ = data;
124 } 124 }
125 125
126 // Callback for UpdateFaviconMappingsAndFetch. 126 // Callback for UpdateFaviconMappingsAndFetch.
127 void OnFaviconData(FaviconService::Handle handle, 127 void OnFaviconResults(
128 history::FaviconData favicon_data) { 128 FaviconService::Handle handle,
129 std::vector<history::FaviconBitmapResult> favicon_bitmap_results,
130 history::IconURLSizesMap icon_url_sizes) {
129 } 131 }
130 132
131 const history::MostVisitedURLList& get_most_visited_list() const { 133 const history::MostVisitedURLList& get_most_visited_list() const {
132 return most_visited_list_; 134 return most_visited_list_;
133 } 135 }
134 136
135 const history::FilteredURLList& get_filtered_list() const { 137 const history::FilteredURLList& get_filtered_list() const {
136 return filtered_list_; 138 return filtered_list_;
137 } 139 }
138 140
(...skipping 1078 matching lines...) Expand 10 before | Expand all | Expand 10 after
1217 TEST_F(HistoryBackendTest, SetSameFaviconURLForTwoPages) { 1219 TEST_F(HistoryBackendTest, SetSameFaviconURLForTwoPages) {
1218 GURL favicon_url("http://www.google.com/favicon.ico"); 1220 GURL favicon_url("http://www.google.com/favicon.ico");
1219 GURL page_url1("http://www.google.com"); 1221 GURL page_url1("http://www.google.com");
1220 GURL page_url2("http://www.google.ca"); 1222 GURL page_url2("http://www.google.ca");
1221 1223
1222 scoped_refptr<base::RefCountedMemory> bitmap_data( 1224 scoped_refptr<base::RefCountedMemory> bitmap_data(
1223 new base::RefCountedBytes()); 1225 new base::RefCountedBytes());
1224 backend_->SetFavicon(page_url1, favicon_url, bitmap_data, FAVICON); 1226 backend_->SetFavicon(page_url1, favicon_url, bitmap_data, FAVICON);
1225 1227
1226 scoped_refptr<GetFaviconRequest> request(new GetFaviconRequest( 1228 scoped_refptr<GetFaviconRequest> request(new GetFaviconRequest(
1227 base::Bind(&HistoryBackendTest::OnFaviconData, base::Unretained(this)))); 1229 base::Bind(&HistoryBackendTest::OnFaviconResults,
1230 base::Unretained(this))));
1228 HistoryBackendCancelableRequest cancellable_request; 1231 HistoryBackendCancelableRequest cancellable_request;
1229 cancellable_request.MockScheduleOfRequest<GetFaviconRequest>(request); 1232 cancellable_request.MockScheduleOfRequest<GetFaviconRequest>(request);
1230 backend_->UpdateFaviconMappingAndFetch(request, page_url2, favicon_url, 1233 backend_->UpdateFaviconMappingAndFetch(request, page_url2, favicon_url,
1231 FAVICON); 1234 FAVICON);
1232 1235
1233 // Check that the same FaviconID is mapped to both page URLs. 1236 // Check that the same FaviconID is mapped to both page URLs.
1234 std::vector<IconMapping> icon_mappings1; 1237 std::vector<IconMapping> icon_mappings1;
1235 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL( 1238 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingsForPageURL(
1236 page_url1, &icon_mappings1)); 1239 page_url1, &icon_mappings1));
1237 EXPECT_EQ(1u, icon_mappings1.size()); 1240 EXPECT_EQ(1u, icon_mappings1.size());
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1284 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( 1287 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL(
1285 url, FAVICON, NULL)); 1288 url, FAVICON, NULL));
1286 1289
1287 // Add a touch_icon 1290 // Add a touch_icon
1288 backend_->SetFavicon( 1291 backend_->SetFavicon(
1289 url, icon_url, bytes.get(), TOUCH_ICON); 1292 url, icon_url, bytes.get(), TOUCH_ICON);
1290 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( 1293 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL(
1291 url, TOUCH_ICON, NULL)); 1294 url, TOUCH_ICON, NULL));
1292 1295
1293 // Test the Fav icon for this URL. 1296 // Test the Fav icon for this URL.
1294 FaviconData favicon; 1297 std::vector<FaviconBitmapResult> favicon_bitmap_results;
1295 ASSERT_TRUE(backend_->GetFaviconFromDB(url, FAVICON, &favicon)); 1298 ASSERT_TRUE(backend_->GetFaviconFromDB(url, FAVICON,
1299 &favicon_bitmap_results));
1300 EXPECT_EQ(1u, favicon_bitmap_results.size());
1301 FaviconBitmapResult bitmap_result = favicon_bitmap_results[0];
1296 std::string favicon_data( 1302 std::string favicon_data(
1297 favicon.image_data->front(), 1303 bitmap_result.bitmap_data->front(),
1298 favicon.image_data->front() + favicon.image_data->size()); 1304 bitmap_result.bitmap_data->front() + bitmap_result.bitmap_data->size());
1299 1305
1300 EXPECT_EQ(FAVICON, favicon.icon_type); 1306 EXPECT_EQ(FAVICON, bitmap_result.icon_type);
1301 EXPECT_EQ(icon_url, favicon.icon_url); 1307 EXPECT_EQ(icon_url, bitmap_result.icon_url);
1302 EXPECT_EQ(blob_data, favicon_data); 1308 EXPECT_EQ(blob_data, favicon_data);
1303 1309
1304 // Test the touch icon for this URL. 1310 // Test the touch icon for this URL.
1305 ASSERT_TRUE(backend_->GetFaviconFromDB(url, TOUCH_ICON, &favicon)); 1311 ASSERT_TRUE(backend_->GetFaviconFromDB(url, TOUCH_ICON,
1312 &favicon_bitmap_results));
1313 EXPECT_EQ(1u, favicon_bitmap_results.size());
1314 bitmap_result = favicon_bitmap_results[0];
1306 std::string touchicon_data( 1315 std::string touchicon_data(
1307 favicon.image_data->front(), 1316 bitmap_result.bitmap_data->front(),
1308 favicon.image_data->front() + favicon.image_data->size()); 1317 bitmap_result.bitmap_data->front() + bitmap_result.bitmap_data->size());
1309 1318
1310 EXPECT_EQ(TOUCH_ICON, favicon.icon_type); 1319 EXPECT_EQ(TOUCH_ICON, bitmap_result.icon_type);
1311 EXPECT_EQ(icon_url, favicon.icon_url); 1320 EXPECT_EQ(icon_url, bitmap_result.icon_url);
1312 EXPECT_EQ(blob_data, touchicon_data); 1321 EXPECT_EQ(blob_data, touchicon_data);
1313 } 1322 }
1314 1323
1315 TEST_F(HistoryBackendTest, CloneFaviconIsRestrictedToSameDomain) { 1324 TEST_F(HistoryBackendTest, CloneFaviconIsRestrictedToSameDomain) {
1316 const GURL url("http://www.google.com/"); 1325 const GURL url("http://www.google.com/");
1317 const GURL icon_url("http://www.google.com/icon"); 1326 const GURL icon_url("http://www.google.com/icon");
1318 const GURL same_domain_url("http://www.google.com/subdir/index.html"); 1327 const GURL same_domain_url("http://www.google.com/subdir/index.html");
1319 const GURL foreign_domain_url("http://www.not-google.com/"); 1328 const GURL foreign_domain_url("http://www.not-google.com/");
1320 1329
1321 // Add a favicon 1330 // Add a favicon
1322 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1)); 1331 std::vector<unsigned char> data(blob1, blob1 + sizeof(blob1));
1323 scoped_refptr<base::RefCountedBytes> bytes(new base::RefCountedBytes(data)); 1332 scoped_refptr<base::RefCountedBytes> bytes(new base::RefCountedBytes(data));
1324 backend_->SetFavicon( 1333 backend_->SetFavicon(
1325 url, icon_url, bytes.get(), FAVICON); 1334 url, icon_url, bytes.get(), FAVICON);
1326 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL( 1335 EXPECT_TRUE(backend_->thumbnail_db_->GetIconMappingForPageURL(
1327 url, FAVICON, NULL)); 1336 url, FAVICON, NULL));
1328 1337
1329 // Validate starting state. 1338 // Validate starting state.
1330 FaviconData favicon; 1339 std::vector<FaviconBitmapResult> favicon_bitmap_results;
1331 EXPECT_TRUE(backend_->GetFaviconFromDB(url, FAVICON, &favicon)); 1340 EXPECT_TRUE(backend_->GetFaviconFromDB(url, FAVICON,
1332 EXPECT_FALSE(backend_->GetFaviconFromDB(same_domain_url, FAVICON, &favicon)); 1341 &favicon_bitmap_results));
1333 EXPECT_FALSE(backend_->GetFaviconFromDB(foreign_domain_url, 1342 EXPECT_FALSE(backend_->GetFaviconFromDB(same_domain_url, FAVICON,
1334 FAVICON, &favicon)); 1343 &favicon_bitmap_results));
1344 EXPECT_FALSE(backend_->GetFaviconFromDB(foreign_domain_url, FAVICON,
1345 &favicon_bitmap_results));
1335 1346
1336 // Same-domain cloning should work. 1347 // Same-domain cloning should work.
1337 backend_->CloneFavicon(url, same_domain_url); 1348 backend_->CloneFavicon(url, same_domain_url);
1338 EXPECT_TRUE(backend_->GetFaviconFromDB(same_domain_url, FAVICON, &favicon)); 1349 EXPECT_TRUE(backend_->GetFaviconFromDB(same_domain_url, FAVICON,
1350 &favicon_bitmap_results));
1339 1351
1340 // Foreign-domain cloning is forbidden. 1352 // Foreign-domain cloning is forbidden.
1341 backend_->CloneFavicon(url, foreign_domain_url); 1353 backend_->CloneFavicon(url, foreign_domain_url);
1342 EXPECT_FALSE(backend_->GetFaviconFromDB(foreign_domain_url, 1354 EXPECT_FALSE(backend_->GetFaviconFromDB(foreign_domain_url, FAVICON,
1343 FAVICON, &favicon)); 1355 &favicon_bitmap_results));
1344 } 1356 }
1345 1357
1346 TEST_F(HistoryBackendTest, QueryFilteredURLs) { 1358 TEST_F(HistoryBackendTest, QueryFilteredURLs) {
1347 const char* google = "http://www.google.com/"; 1359 const char* google = "http://www.google.com/";
1348 const char* yahoo = "http://www.yahoo.com/"; 1360 const char* yahoo = "http://www.yahoo.com/";
1349 const char* yahoo_sports = "http://sports.yahoo.com/"; 1361 const char* yahoo_sports = "http://sports.yahoo.com/";
1350 const char* yahoo_sports_with_article1 = 1362 const char* yahoo_sports_with_article1 =
1351 "http://sports.yahoo.com/article1.htm"; 1363 "http://sports.yahoo.com/article1.htm";
1352 const char* yahoo_sports_with_article2 = 1364 const char* yahoo_sports_with_article2 =
1353 "http://sports.yahoo.com/article2.htm"; 1365 "http://sports.yahoo.com/article2.htm";
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
1667 1679
1668 backend_->DeleteURL(url); 1680 backend_->DeleteURL(url);
1669 backend_->AddPageNoVisitForBookmark(url, string16()); 1681 backend_->AddPageNoVisitForBookmark(url, string16());
1670 backend_->GetURL(url, &row); 1682 backend_->GetURL(url, &row);
1671 EXPECT_EQ(url, row.url()); 1683 EXPECT_EQ(url, row.url());
1672 EXPECT_EQ(UTF8ToUTF16(url.spec()), row.title()); 1684 EXPECT_EQ(UTF8ToUTF16(url.spec()), row.title());
1673 EXPECT_EQ(0, row.visit_count()); 1685 EXPECT_EQ(0, row.visit_count());
1674 } 1686 }
1675 1687
1676 } // namespace history 1688 } // namespace history
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698