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 "chrome/browser/history/android/android_provider_backend.h" | 5 #include "chrome/browser/history/android/android_provider_backend.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
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 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 URLRow url_row; | 244 URLRow url_row; |
245 | 245 |
246 ASSERT_TRUE(history_backend->GetURL(url1, &url_row)); | 246 ASSERT_TRUE(history_backend->GetURL(url1, &url_row)); |
247 url_id1 = url_row.id(); | 247 url_id1 = url_row.id(); |
248 ASSERT_TRUE(history_backend->GetURL(url2, &url_row)); | 248 ASSERT_TRUE(history_backend->GetURL(url2, &url_row)); |
249 url_id2 = url_row.id(); | 249 url_id2 = url_row.id(); |
250 | 250 |
251 // Set favicon to url2. | 251 // Set favicon to url2. |
252 std::vector<unsigned char> data; | 252 std::vector<unsigned char> data; |
253 data.push_back('1'); | 253 data.push_back('1'); |
254 history_backend->SetFavicon(url2, | 254 FaviconDataElement element; |
255 GURL(), | 255 element.bitmap_data = new base::RefCountedBytes(data); |
256 new base::RefCountedBytes(data), | 256 element.pixel_size = gfx::Size(); |
257 FAVICON); | 257 element.icon_url = GURL(); |
| 258 std::vector<FaviconDataElement> elements; |
| 259 elements.push_back(element); |
| 260 |
| 261 IconURLFaviconIDMap icon_url_favicon_ids; |
| 262 icon_url_favicon_ids[GURL()] = FaviconSizes("0 0"); |
| 263 |
| 264 history_backend->SetFavicons(url2, |
| 265 FAVICON, |
| 266 elements, |
| 267 icon_url_favicon_ids); |
258 history_backend->Closing(); | 268 history_backend->Closing(); |
259 } | 269 } |
260 | 270 |
261 // The history_db_name and thumbnail_db_name files should be created by | 271 // The history_db_name and thumbnail_db_name files should be created by |
262 // HistoryBackend. We need to open the same database files. | 272 // HistoryBackend. We need to open the same database files. |
263 ASSERT_TRUE(file_util::PathExists(history_db_name_)); | 273 ASSERT_TRUE(file_util::PathExists(history_db_name_)); |
264 ASSERT_TRUE(file_util::PathExists(thumbnail_db_name_)); | 274 ASSERT_TRUE(file_util::PathExists(thumbnail_db_name_)); |
265 | 275 |
266 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_, bookmark_temp_)); | 276 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_, bookmark_temp_)); |
267 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, NULL, | 277 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, NULL, |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 ASSERT_TRUE(history_backend->UpdateURL(url_id1, url_row)); | 400 ASSERT_TRUE(history_backend->UpdateURL(url_id1, url_row)); |
391 | 401 |
392 ASSERT_TRUE(history_backend->GetURL(url2, &url_row)); | 402 ASSERT_TRUE(history_backend->GetURL(url2, &url_row)); |
393 url_id2 = url_row.id(); | 403 url_id2 = url_row.id(); |
394 url_row.set_title(title2); | 404 url_row.set_title(title2); |
395 ASSERT_TRUE(history_backend->UpdateURL(url_id2, url_row)); | 405 ASSERT_TRUE(history_backend->UpdateURL(url_id2, url_row)); |
396 | 406 |
397 // Set favicon to url2. | 407 // Set favicon to url2. |
398 std::vector<unsigned char> data; | 408 std::vector<unsigned char> data; |
399 data.push_back('1'); | 409 data.push_back('1'); |
400 history_backend->SetFavicon(url2, | 410 FaviconDataElement element; |
401 GURL(), | 411 element.bitmap_data = new base::RefCountedBytes(data); |
402 new base::RefCountedBytes(data), | 412 element.pixel_size = gfx::Size(); |
403 FAVICON); | 413 element.icon_url = GURL(); |
| 414 std::vector<FaviconDataElement> elements; |
| 415 elements.push_back(element); |
| 416 |
| 417 IconURLFaviconIDMap icon_url_favicon_ids; |
| 418 icon_url_favicon_ids[GURL()] = FaviconSizes("0 0"); |
| 419 |
| 420 history_backend->SetFavicons(url2, |
| 421 FAVICON, |
| 422 elements, |
| 423 icon_url_favicon_ids); |
404 history_backend->Closing(); | 424 history_backend->Closing(); |
405 } | 425 } |
406 | 426 |
407 // The history_db_name and thumbnail_db_name files should be created by | 427 // The history_db_name and thumbnail_db_name files should be created by |
408 // HistoryBackend. We need to open the same database files. | 428 // HistoryBackend. We need to open the same database files. |
409 ASSERT_TRUE(file_util::PathExists(history_db_name_)); | 429 ASSERT_TRUE(file_util::PathExists(history_db_name_)); |
410 ASSERT_TRUE(file_util::PathExists(thumbnail_db_name_)); | 430 ASSERT_TRUE(file_util::PathExists(thumbnail_db_name_)); |
411 | 431 |
412 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_, bookmark_temp_)); | 432 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_, bookmark_temp_)); |
413 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, NULL, | 433 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, NULL, |
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1144 ASSERT_TRUE(backend->UpdateHistoryAndBookmarks(update_row1, "url = ?", | 1164 ASSERT_TRUE(backend->UpdateHistoryAndBookmarks(update_row1, "url = ?", |
1145 update_args, &update_count)); | 1165 update_args, &update_count)); |
1146 // Verify notifications. | 1166 // Verify notifications. |
1147 EXPECT_FALSE(delegate_.deleted_details()); | 1167 EXPECT_FALSE(delegate_.deleted_details()); |
1148 EXPECT_FALSE(delegate_.modified_details()); | 1168 EXPECT_FALSE(delegate_.modified_details()); |
1149 ASSERT_TRUE(delegate_.favicon_details()); | 1169 ASSERT_TRUE(delegate_.favicon_details()); |
1150 ASSERT_EQ(1u, delegate_.favicon_details()->urls.size()); | 1170 ASSERT_EQ(1u, delegate_.favicon_details()->urls.size()); |
1151 ASSERT_TRUE(delegate_.favicon_details()->urls.end() != | 1171 ASSERT_TRUE(delegate_.favicon_details()->urls.end() != |
1152 delegate_.favicon_details()->urls.find(row1.url())); | 1172 delegate_.favicon_details()->urls.find(row1.url())); |
1153 | 1173 |
1154 IconMapping icon_mapping; | 1174 std::vector<IconMapping> icon_mappings; |
1155 EXPECT_TRUE(thumbnail_db_.GetIconMappingForPageURL(row1.url(), FAVICON, | 1175 EXPECT_TRUE(thumbnail_db_.GetIconMappingsForPageURL(row1.url(), FAVICON, |
1156 &icon_mapping)); | 1176 &icon_mappings)); |
1157 Time last_updated; | 1177 EXPECT_EQ(1u, icon_mappings.size()); |
1158 scoped_refptr<base::RefCountedMemory> png_icon_data; | 1178 std::vector<FaviconBitmap> favicon_bitmaps; |
1159 EXPECT_TRUE(thumbnail_db_.GetFavicon(icon_mapping.icon_id, &last_updated, | 1179 EXPECT_TRUE(thumbnail_db_.GetFaviconBitmaps(icon_mappings[0].icon_id, |
1160 &png_icon_data, NULL, NULL)); | 1180 &favicon_bitmaps)); |
1161 std::string png_icon_data_as_string(png_icon_data->front(), | 1181 EXPECT_EQ(1u, favicon_bitmaps.size()); |
1162 png_icon_data->front() + png_icon_data->size()); | 1182 EXPECT_TRUE(favicon_bitmaps[0].bitmap_data.get()); |
1163 EXPECT_EQ(1u, png_icon_data_as_string.size()); | 1183 EXPECT_EQ(1u, favicon_bitmaps[0].bitmap_data->size()); |
1164 EXPECT_EQ('1', png_icon_data_as_string[0]); | 1184 EXPECT_EQ('1', *favicon_bitmaps[0]->front()); |
1165 | 1185 |
1166 // Remove favicon. | 1186 // Remove favicon. |
1167 HistoryAndBookmarkRow update_row2; | 1187 HistoryAndBookmarkRow update_row2; |
1168 | 1188 |
1169 // Set favicon. | 1189 // Set favicon. |
1170 update_row1.set_favicon(new base::RefCountedBytes()); | 1190 update_row1.set_favicon(new base::RefCountedBytes()); |
1171 update_args.clear(); | 1191 update_args.clear(); |
1172 update_args.push_back(UTF8ToUTF16(row1.raw_url())); | 1192 update_args.push_back(UTF8ToUTF16(row1.raw_url())); |
1173 delegate_.ResetDetails(); | 1193 delegate_.ResetDetails(); |
1174 ASSERT_TRUE(backend->UpdateHistoryAndBookmarks(update_row1, "url = ?", | 1194 ASSERT_TRUE(backend->UpdateHistoryAndBookmarks(update_row1, "url = ?", |
1175 update_args, &update_count)); | 1195 update_args, &update_count)); |
1176 // Verify notifications. | 1196 // Verify notifications. |
1177 EXPECT_FALSE(delegate_.deleted_details()); | 1197 EXPECT_FALSE(delegate_.deleted_details()); |
1178 EXPECT_FALSE(delegate_.modified_details()); | 1198 EXPECT_FALSE(delegate_.modified_details()); |
1179 ASSERT_TRUE(delegate_.favicon_details()); | 1199 ASSERT_TRUE(delegate_.favicon_details()); |
1180 ASSERT_EQ(1u, delegate_.favicon_details()->urls.size()); | 1200 ASSERT_EQ(1u, delegate_.favicon_details()->urls.size()); |
1181 ASSERT_TRUE(delegate_.favicon_details()->urls.end() != | 1201 ASSERT_TRUE(delegate_.favicon_details()->urls.end() != |
1182 delegate_.favicon_details()->urls.find(row1.url())); | 1202 delegate_.favicon_details()->urls.find(row1.url())); |
1183 | 1203 |
1184 EXPECT_FALSE(thumbnail_db_.GetIconMappingForPageURL(row1.url(), FAVICON, | 1204 EXPECT_FALSE(thumbnail_db_.GetIconMappingsForPageURL(row1.url(), FAVICON, |
1185 NULL)); | 1205 NULL)); |
1186 } | 1206 } |
1187 | 1207 |
1188 TEST_F(AndroidProviderBackendTest, UpdateSearchTermTable) { | 1208 TEST_F(AndroidProviderBackendTest, UpdateSearchTermTable) { |
1189 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_, bookmark_temp_)); | 1209 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_, bookmark_temp_)); |
1190 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, NULL, | 1210 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_, NULL, |
1191 &history_db_)); | 1211 &history_db_)); |
1192 scoped_ptr<AndroidProviderBackend> backend( | 1212 scoped_ptr<AndroidProviderBackend> backend( |
1193 new AndroidProviderBackend(android_cache_db_name_, &history_db_, | 1213 new AndroidProviderBackend(android_cache_db_name_, &history_db_, |
1194 &thumbnail_db_, bookmark_model_, &delegate_)); | 1214 &thumbnail_db_, bookmark_model_, &delegate_)); |
1195 // Insert a keyword search item to verify if the update succeeds. | 1215 // Insert a keyword search item to verify if the update succeeds. |
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1754 // Query by folder=1, the row2 should returned. | 1774 // Query by folder=1, the row2 should returned. |
1755 statement.reset(backend->QueryHistoryAndBookmarks( | 1775 statement.reset(backend->QueryHistoryAndBookmarks( |
1756 projections, std::string("folder=1"), std::vector<string16>(), | 1776 projections, std::string("folder=1"), std::vector<string16>(), |
1757 std::string("url ASC"))); | 1777 std::string("url ASC"))); |
1758 ASSERT_TRUE(statement->statement()->Step()); | 1778 ASSERT_TRUE(statement->statement()->Step()); |
1759 EXPECT_EQ(row2.url(), GURL(statement->statement()->ColumnString(0))); | 1779 EXPECT_EQ(row2.url(), GURL(statement->statement()->ColumnString(0))); |
1760 EXPECT_FALSE(statement->statement()->Step()); | 1780 EXPECT_FALSE(statement->statement()->Step()); |
1761 } | 1781 } |
1762 | 1782 |
1763 } // namespace history | 1783 } // namespace history |
OLD | NEW |