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/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/files/file_util.h" | 10 #include "base/files/file_util.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 #include "chrome/test/base/testing_browser_process.h" | 24 #include "chrome/test/base/testing_browser_process.h" |
25 #include "chrome/test/base/testing_profile.h" | 25 #include "chrome/test/base/testing_profile.h" |
26 #include "chrome/test/base/testing_profile_manager.h" | 26 #include "chrome/test/base/testing_profile_manager.h" |
27 #include "components/bookmarks/browser/bookmark_model.h" | 27 #include "components/bookmarks/browser/bookmark_model.h" |
28 #include "components/bookmarks/test/bookmark_test_helpers.h" | 28 #include "components/bookmarks/test/bookmark_test_helpers.h" |
29 #include "components/history/core/browser/keyword_search_term.h" | 29 #include "components/history/core/browser/keyword_search_term.h" |
30 #include "content/public/browser/browser_thread.h" | 30 #include "content/public/browser/browser_thread.h" |
31 #include "content/public/test/test_browser_thread.h" | 31 #include "content/public/test/test_browser_thread.h" |
32 #include "content/public/test/test_utils.h" | 32 #include "content/public/test/test_utils.h" |
33 #include "testing/gtest/include/gtest/gtest.h" | 33 #include "testing/gtest/include/gtest/gtest.h" |
| 34 #include "third_party/skia/include/core/SkBitmap.h" |
34 | 35 |
35 using base::Time; | 36 using base::Time; |
36 using base::TimeDelta; | 37 using base::TimeDelta; |
37 using base::UTF8ToUTF16; | 38 using base::UTF8ToUTF16; |
38 using content::BrowserThread; | 39 using content::BrowserThread; |
39 | 40 |
40 namespace history { | 41 namespace history { |
41 | 42 |
42 namespace { | 43 namespace { |
43 | 44 |
44 struct BookmarkCacheRow { | 45 struct BookmarkCacheRow { |
45 public: | 46 public: |
46 BookmarkCacheRow() | 47 BookmarkCacheRow() |
47 : url_id_(0), | 48 : url_id_(0), |
48 bookmark_(false), | 49 bookmark_(false), |
49 favicon_id_(0) { | 50 favicon_id_(0) { |
50 } | 51 } |
51 URLID url_id_; | 52 URLID url_id_; |
52 Time create_time_; | 53 Time create_time_; |
53 Time last_visit_time_; | 54 Time last_visit_time_; |
54 bool bookmark_; | 55 bool bookmark_; |
55 favicon_base::FaviconID favicon_id_; | 56 favicon_base::FaviconID favicon_id_; |
56 }; | 57 }; |
57 | 58 |
| 59 // Creates a 16x16 bitmap. |
| 60 SkBitmap CreateBitmap() { |
| 61 SkBitmap bitmap; |
| 62 bitmap.allocN32Pixels(16, 16); |
| 63 bitmap.eraseColor(SK_ColorBLUE); |
| 64 return bitmap; |
| 65 } |
| 66 |
58 } // namespace | 67 } // namespace |
59 | 68 |
60 class AndroidProviderBackendDelegate : public HistoryBackend::Delegate { | 69 class AndroidProviderBackendDelegate : public HistoryBackend::Delegate { |
61 public: | 70 public: |
62 AndroidProviderBackendDelegate() {} | 71 AndroidProviderBackendDelegate() {} |
63 | 72 |
64 virtual void NotifyProfileError(sql::InitStatus init_status) OVERRIDE {} | 73 virtual void NotifyProfileError(sql::InitStatus init_status) OVERRIDE {} |
65 virtual void SetInMemoryBackend( | 74 virtual void SetInMemoryBackend( |
66 scoped_ptr<InMemoryHistoryBackend> backend) OVERRIDE {} | 75 scoped_ptr<InMemoryHistoryBackend> backend) OVERRIDE {} |
67 virtual void BroadcastNotifications( | 76 virtual void BroadcastNotifications( |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 history_backend->AddVisits(url1, visits1, history::SOURCE_SYNCED); | 258 history_backend->AddVisits(url1, visits1, history::SOURCE_SYNCED); |
250 history_backend->AddVisits(url2, visits2, history::SOURCE_SYNCED); | 259 history_backend->AddVisits(url2, visits2, history::SOURCE_SYNCED); |
251 URLRow url_row; | 260 URLRow url_row; |
252 | 261 |
253 ASSERT_TRUE(history_backend->GetURL(url1, &url_row)); | 262 ASSERT_TRUE(history_backend->GetURL(url1, &url_row)); |
254 url_id1 = url_row.id(); | 263 url_id1 = url_row.id(); |
255 ASSERT_TRUE(history_backend->GetURL(url2, &url_row)); | 264 ASSERT_TRUE(history_backend->GetURL(url2, &url_row)); |
256 url_id2 = url_row.id(); | 265 url_id2 = url_row.id(); |
257 | 266 |
258 // Set favicon to url2. | 267 // Set favicon to url2. |
259 std::vector<unsigned char> data; | 268 std::vector<SkBitmap> bitmaps(1u, CreateBitmap()); |
260 data.push_back('1'); | 269 history_backend->SetFavicons(url2, favicon_base::FAVICON, GURL(), bitmaps); |
261 favicon_base::FaviconRawBitmapData bitmap_data_element; | |
262 bitmap_data_element.bitmap_data = new base::RefCountedBytes(data); | |
263 bitmap_data_element.pixel_size = gfx::Size(); | |
264 bitmap_data_element.icon_url = GURL(); | |
265 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | |
266 favicon_bitmap_data.push_back(bitmap_data_element); | |
267 | |
268 history_backend->SetFavicons( | |
269 url2, favicon_base::FAVICON, favicon_bitmap_data); | |
270 history_backend->Closing(); | 270 history_backend->Closing(); |
271 } | 271 } |
272 | 272 |
273 // The history_db_name and thumbnail_db_name files should be created by | 273 // The history_db_name and thumbnail_db_name files should be created by |
274 // HistoryBackend. We need to open the same database files. | 274 // HistoryBackend. We need to open the same database files. |
275 ASSERT_TRUE(base::PathExists(history_db_name_)); | 275 ASSERT_TRUE(base::PathExists(history_db_name_)); |
276 ASSERT_TRUE(base::PathExists(thumbnail_db_name_)); | 276 ASSERT_TRUE(base::PathExists(thumbnail_db_name_)); |
277 | 277 |
278 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_)); | 278 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_)); |
279 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_)); | 279 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_)); |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
396 history_backend->AddVisits(url2, visits2, history::SOURCE_SYNCED); | 396 history_backend->AddVisits(url2, visits2, history::SOURCE_SYNCED); |
397 | 397 |
398 history::URLRows url_rows(2u); | 398 history::URLRows url_rows(2u); |
399 ASSERT_TRUE(history_backend->GetURL(url1, &url_rows[0])); | 399 ASSERT_TRUE(history_backend->GetURL(url1, &url_rows[0])); |
400 ASSERT_TRUE(history_backend->GetURL(url2, &url_rows[1])); | 400 ASSERT_TRUE(history_backend->GetURL(url2, &url_rows[1])); |
401 url_rows[0].set_title(title1); | 401 url_rows[0].set_title(title1); |
402 url_rows[1].set_title(title2); | 402 url_rows[1].set_title(title2); |
403 ASSERT_EQ(2u, history_backend->UpdateURLs(url_rows)); | 403 ASSERT_EQ(2u, history_backend->UpdateURLs(url_rows)); |
404 | 404 |
405 // Set favicon to url2. | 405 // Set favicon to url2. |
406 std::vector<unsigned char> data; | 406 std::vector<SkBitmap> bitmaps(1u, CreateBitmap()); |
407 data.push_back('1'); | 407 history_backend->SetFavicons(url2, favicon_base::FAVICON, GURL(), bitmaps); |
408 favicon_base::FaviconRawBitmapData bitmap_data_element; | |
409 bitmap_data_element.bitmap_data = new base::RefCountedBytes(data); | |
410 bitmap_data_element.pixel_size = gfx::Size(); | |
411 bitmap_data_element.icon_url = GURL(); | |
412 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | |
413 favicon_bitmap_data.push_back(bitmap_data_element); | |
414 | |
415 history_backend->SetFavicons( | |
416 url2, favicon_base::FAVICON, favicon_bitmap_data); | |
417 history_backend->Closing(); | 408 history_backend->Closing(); |
418 } | 409 } |
419 | 410 |
420 // The history_db_name and thumbnail_db_name files should be created by | 411 // The history_db_name and thumbnail_db_name files should be created by |
421 // HistoryBackend. We need to open the same database files. | 412 // HistoryBackend. We need to open the same database files. |
422 ASSERT_TRUE(base::PathExists(history_db_name_)); | 413 ASSERT_TRUE(base::PathExists(history_db_name_)); |
423 ASSERT_TRUE(base::PathExists(thumbnail_db_name_)); | 414 ASSERT_TRUE(base::PathExists(thumbnail_db_name_)); |
424 | 415 |
425 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_)); | 416 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_)); |
426 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_)); | 417 ASSERT_EQ(sql::INIT_OK, thumbnail_db_.Init(thumbnail_db_name_)); |
(...skipping 1415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1842 URLRow url_row; | 1833 URLRow url_row; |
1843 | 1834 |
1844 history::URLRows url_rows(2u); | 1835 history::URLRows url_rows(2u); |
1845 ASSERT_TRUE(history_backend->GetURL(url1, &url_rows[0])); | 1836 ASSERT_TRUE(history_backend->GetURL(url1, &url_rows[0])); |
1846 ASSERT_TRUE(history_backend->GetURL(url2, &url_rows[1])); | 1837 ASSERT_TRUE(history_backend->GetURL(url2, &url_rows[1])); |
1847 url_rows[0].set_title(title1); | 1838 url_rows[0].set_title(title1); |
1848 url_rows[1].set_title(title2); | 1839 url_rows[1].set_title(title2); |
1849 ASSERT_EQ(2u, history_backend->UpdateURLs(url_rows)); | 1840 ASSERT_EQ(2u, history_backend->UpdateURLs(url_rows)); |
1850 | 1841 |
1851 // Set favicon to url2. | 1842 // Set favicon to url2. |
1852 std::vector<unsigned char> data; | 1843 std::vector<SkBitmap> bitmaps(1u, CreateBitmap()); |
1853 data.push_back('1'); | 1844 history_backend->SetFavicons(url2, favicon_base::FAVICON, GURL(), bitmaps); |
1854 favicon_base::FaviconRawBitmapData bitmap_data_element; | |
1855 bitmap_data_element.bitmap_data = new base::RefCountedBytes(data); | |
1856 bitmap_data_element.pixel_size = gfx::Size(); | |
1857 bitmap_data_element.icon_url = GURL(); | |
1858 std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data; | |
1859 favicon_bitmap_data.push_back(bitmap_data_element); | |
1860 | |
1861 history_backend->SetFavicons( | |
1862 url2, favicon_base::FAVICON, favicon_bitmap_data); | |
1863 history_backend->Closing(); | 1845 history_backend->Closing(); |
1864 } | 1846 } |
1865 | 1847 |
1866 // The history_db_name and thumbnail_db_name files should be created by | 1848 // The history_db_name and thumbnail_db_name files should be created by |
1867 // HistoryBackend. We need to open the same database files. | 1849 // HistoryBackend. We need to open the same database files. |
1868 ASSERT_TRUE(base::PathExists(history_db_name_)); | 1850 ASSERT_TRUE(base::PathExists(history_db_name_)); |
1869 ASSERT_TRUE(base::PathExists(thumbnail_db_name_)); | 1851 ASSERT_TRUE(base::PathExists(thumbnail_db_name_)); |
1870 | 1852 |
1871 // Only creates the history database | 1853 // Only creates the history database |
1872 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_)); | 1854 ASSERT_EQ(sql::INIT_OK, history_db_.Init(history_db_name_)); |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2126 update_args, &update_count)); | 2108 update_args, &update_count)); |
2127 // Verify notifications. | 2109 // Verify notifications. |
2128 EXPECT_FALSE(delegate_.deleted_details()); | 2110 EXPECT_FALSE(delegate_.deleted_details()); |
2129 ASSERT_TRUE(delegate_.modified_details()); | 2111 ASSERT_TRUE(delegate_.modified_details()); |
2130 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); | 2112 ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size()); |
2131 // No favicon will be updated as thumbnail database is missing. | 2113 // No favicon will be updated as thumbnail database is missing. |
2132 EXPECT_FALSE(delegate_.favicon_details()); | 2114 EXPECT_FALSE(delegate_.favicon_details()); |
2133 } | 2115 } |
2134 | 2116 |
2135 } // namespace history | 2117 } // namespace history |
OLD | NEW |