Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / history / android / android_provider_backend_unittest.cc
index 49137a2..efc8ecc 100644 (file)
@@ -6,15 +6,14 @@
 
 #include <vector>
 
-#include "base/file_util.h"
 #include "base/files/file_path.h"
+#include "base/files/file_util.h"
 #include "base/files/scoped_temp_dir.h"
 #include "base/memory/ref_counted.h"
 #include "base/strings/stringprintf.h"
 #include "base/strings/utf_string_conversions.h"
 #include "chrome/browser/bookmarks/bookmark_model_factory.h"
 #include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/favicon/favicon_changed_details.h"
 #include "chrome/browser/history/android/android_time.h"
 #include "chrome/browser/history/chrome_history_client.h"
 #include "chrome/browser/history/chrome_history_client_factory.h"
@@ -31,6 +30,7 @@
 #include "content/public/test/test_browser_thread.h"
 #include "content/public/test/test_utils.h"
 #include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/skia/include/core/SkBitmap.h"
 
 using base::Time;
 using base::TimeDelta;
@@ -55,6 +55,14 @@ struct BookmarkCacheRow {
   favicon_base::FaviconID favicon_id_;
 };
 
+// Creates a 16x16 bitmap.
+SkBitmap CreateBitmap() {
+  SkBitmap bitmap;
+  bitmap.allocN32Pixels(16, 16);
+  bitmap.eraseColor(SK_ColorBLUE);
+  return bitmap;
+}
+
 }  // namespace
 
 class AndroidProviderBackendDelegate : public HistoryBackend::Delegate {
@@ -64,6 +72,9 @@ class AndroidProviderBackendDelegate : public HistoryBackend::Delegate {
   virtual void NotifyProfileError(sql::InitStatus init_status) OVERRIDE {}
   virtual void SetInMemoryBackend(
       scoped_ptr<InMemoryHistoryBackend> backend) OVERRIDE {}
+  virtual void NotifyFaviconChanged(const std::set<GURL>& url) OVERRIDE {
+    favicon_changed_.reset(new std::set<GURL>(url.begin(), url.end()));
+  }
   virtual void BroadcastNotifications(
       int type,
       scoped_ptr<HistoryDetails> details) OVERRIDE {
@@ -72,10 +83,6 @@ class AndroidProviderBackendDelegate : public HistoryBackend::Delegate {
         deleted_details_.reset(
             static_cast<URLsDeletedDetails*>(details.release()));
         break;
-      case chrome::NOTIFICATION_FAVICON_CHANGED:
-        favicon_details_.reset(
-            static_cast<FaviconChangedDetails*>(details.release()));
-        break;
       case chrome::NOTIFICATION_HISTORY_URLS_MODIFIED:
         modified_details_.reset(
             static_cast<URLsModifiedDetails*>(details.release()));
@@ -94,20 +101,18 @@ class AndroidProviderBackendDelegate : public HistoryBackend::Delegate {
     return modified_details_.get();
   }
 
-  FaviconChangedDetails* favicon_details() const {
-    return favicon_details_.get();
-  }
+  std::set<GURL>* favicon_changed() const { return favicon_changed_.get(); }
 
   void ResetDetails() {
     deleted_details_.reset();
     modified_details_.reset();
-    favicon_details_.reset();
+    favicon_changed_.reset();
   }
 
  private:
   scoped_ptr<URLsDeletedDetails> deleted_details_;
   scoped_ptr<URLsModifiedDetails> modified_details_;
-  scoped_ptr<FaviconChangedDetails> favicon_details_;
+  scoped_ptr<std::set<GURL> > favicon_changed_;
 
   DISALLOW_COPY_AND_ASSIGN(AndroidProviderBackendDelegate);
 };
@@ -219,20 +224,20 @@ TEST_F(AndroidProviderBackendTest, UpdateTables) {
   std::vector<VisitInfo> visits1;
   Time last_visited1 = Time::Now() - TimeDelta::FromDays(1);
   Time created1 = last_visited1 - TimeDelta::FromDays(20);
-  visits1.push_back(VisitInfo(created1, content::PAGE_TRANSITION_LINK));
+  visits1.push_back(VisitInfo(created1, ui::PAGE_TRANSITION_LINK));
   visits1.push_back(VisitInfo(last_visited1 - TimeDelta::FromDays(1),
-                              content::PAGE_TRANSITION_LINK));
-  visits1.push_back(VisitInfo(last_visited1, content::PAGE_TRANSITION_LINK));
+                              ui::PAGE_TRANSITION_LINK));
+  visits1.push_back(VisitInfo(last_visited1, ui::PAGE_TRANSITION_LINK));
 
   GURL url2("http://www.example.com");
   URLID url_id2 = 0;
   std::vector<VisitInfo> visits2;
   Time last_visited2 = Time::Now();
   Time created2 = last_visited2 - TimeDelta::FromDays(10);
-  visits2.push_back(VisitInfo(created2, content::PAGE_TRANSITION_LINK));
+  visits2.push_back(VisitInfo(created2, ui::PAGE_TRANSITION_LINK));
   visits2.push_back(VisitInfo(last_visited2 - TimeDelta::FromDays(5),
-                              content::PAGE_TRANSITION_LINK));
-  visits2.push_back(VisitInfo(last_visited2, content::PAGE_TRANSITION_LINK));
+                              ui::PAGE_TRANSITION_LINK));
+  visits2.push_back(VisitInfo(last_visited2, ui::PAGE_TRANSITION_LINK));
 
   // Add a bookmark which is not in the history.
   GURL url3("http://www.bookmark.com");
@@ -256,17 +261,8 @@ TEST_F(AndroidProviderBackendTest, UpdateTables) {
   url_id2 = url_row.id();
 
   // Set favicon to url2.
-  std::vector<unsigned char> data;
-  data.push_back('1');
-  favicon_base::FaviconRawBitmapData bitmap_data_element;
-  bitmap_data_element.bitmap_data = new base::RefCountedBytes(data);
-  bitmap_data_element.pixel_size = gfx::Size();
-  bitmap_data_element.icon_url = GURL();
-  std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
-  favicon_bitmap_data.push_back(bitmap_data_element);
-
-  history_backend->SetFavicons(
-      url2, favicon_base::FAVICON, favicon_bitmap_data);
+  std::vector<SkBitmap> bitmaps(1u, CreateBitmap());
+  history_backend->SetFavicons(url2, favicon_base::FAVICON, GURL(), bitmaps);
   history_backend->Closing();
   }
 
@@ -370,20 +366,20 @@ TEST_F(AndroidProviderBackendTest, QueryHistoryAndBookmarks) {
   std::vector<VisitInfo> visits1;
   Time last_visited1 = Time::Now() - TimeDelta::FromDays(1);
   Time created1 = last_visited1 - TimeDelta::FromDays(20);
-  visits1.push_back(VisitInfo(created1, content::PAGE_TRANSITION_LINK));
+  visits1.push_back(VisitInfo(created1, ui::PAGE_TRANSITION_LINK));
   visits1.push_back(VisitInfo(last_visited1 - TimeDelta::FromDays(1),
-                              content::PAGE_TRANSITION_LINK));
-  visits1.push_back(VisitInfo(last_visited1, content::PAGE_TRANSITION_LINK));
+                              ui::PAGE_TRANSITION_LINK));
+  visits1.push_back(VisitInfo(last_visited1, ui::PAGE_TRANSITION_LINK));
 
   GURL url2("http://www.example.com");
   std::vector<VisitInfo> visits2;
   const base::string16 title2(UTF8ToUTF16("example"));
   Time last_visited2 = Time::Now();
   Time created2 = last_visited2 - TimeDelta::FromDays(10);
-  visits2.push_back(VisitInfo(created2, content::PAGE_TRANSITION_LINK));
+  visits2.push_back(VisitInfo(created2, ui::PAGE_TRANSITION_LINK));
   visits2.push_back(VisitInfo(last_visited2 - TimeDelta::FromDays(5),
-                              content::PAGE_TRANSITION_LINK));
-  visits2.push_back(VisitInfo(last_visited2, content::PAGE_TRANSITION_LINK));
+                              ui::PAGE_TRANSITION_LINK));
+  visits2.push_back(VisitInfo(last_visited2, ui::PAGE_TRANSITION_LINK));
 
   // Only use the HistoryBackend to generate the test data.
   // HistoryBackend will shutdown after that.
@@ -403,17 +399,8 @@ TEST_F(AndroidProviderBackendTest, QueryHistoryAndBookmarks) {
   ASSERT_EQ(2u, history_backend->UpdateURLs(url_rows));
 
   // Set favicon to url2.
-  std::vector<unsigned char> data;
-  data.push_back('1');
-  favicon_base::FaviconRawBitmapData bitmap_data_element;
-  bitmap_data_element.bitmap_data = new base::RefCountedBytes(data);
-  bitmap_data_element.pixel_size = gfx::Size();
-  bitmap_data_element.icon_url = GURL();
-  std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
-  favicon_bitmap_data.push_back(bitmap_data_element);
-
-  history_backend->SetFavicons(
-      url2, favicon_base::FAVICON, favicon_bitmap_data);
+  std::vector<SkBitmap> bitmaps(1u, CreateBitmap());
+  history_backend->SetFavicons(url2, favicon_base::FAVICON, GURL(), bitmaps);
   history_backend->Closing();
   }
 
@@ -534,7 +521,7 @@ TEST_F(AndroidProviderBackendTest, InsertHistoryAndBookmark) {
             delegate_.modified_details()->changed_urls[0].visit_count());
   EXPECT_EQ(row1.title(),
             delegate_.modified_details()->changed_urls[0].title());
-  EXPECT_FALSE(delegate_.favicon_details());
+  EXPECT_FALSE(delegate_.favicon_changed());
   content::RunAllPendingInMessageLoop();
   ASSERT_EQ(1, bookmark_model_->mobile_node()->child_count());
   const BookmarkNode* child = bookmark_model_->mobile_node()->GetChild(0);
@@ -552,10 +539,10 @@ TEST_F(AndroidProviderBackendTest, InsertHistoryAndBookmark) {
             delegate_.modified_details()->changed_urls[0].last_visit());
   EXPECT_EQ(row2.title(),
             delegate_.modified_details()->changed_urls[0].title());
-  ASSERT_TRUE(delegate_.favicon_details());
-  ASSERT_EQ(1u, delegate_.favicon_details()->urls.size());
-  ASSERT_TRUE(delegate_.favicon_details()->urls.end() !=
-              delegate_.favicon_details()->urls.find(row2.url()));
+  ASSERT_TRUE(delegate_.favicon_changed());
+  ASSERT_EQ(1u, delegate_.favicon_changed()->size());
+  ASSERT_TRUE(delegate_.favicon_changed()->end() !=
+              delegate_.favicon_changed()->find(row2.url()));
 
   std::vector<HistoryAndBookmarkRow::ColumnID> projections;
   projections.push_back(HistoryAndBookmarkRow::ID);
@@ -665,7 +652,7 @@ TEST_F(AndroidProviderBackendTest, DeleteHistoryAndBookmarks) {
             delegate_.deleted_details()->rows[0].last_visit());
   EXPECT_EQ(row1.title(),
             delegate_.deleted_details()->rows[0].title());
-  EXPECT_FALSE(delegate_.favicon_details());
+  EXPECT_FALSE(delegate_.favicon_changed());
 
   std::vector<HistoryAndBookmarkRow::ColumnID> projections;
   projections.push_back(HistoryAndBookmarkRow::ID);
@@ -712,10 +699,10 @@ TEST_F(AndroidProviderBackendTest, DeleteHistoryAndBookmarks) {
             delegate_.deleted_details()->rows[0].last_visit());
   EXPECT_EQ(row2.title(),
             delegate_.deleted_details()->rows[0].title());
-  ASSERT_TRUE(delegate_.favicon_details());
-  ASSERT_EQ(1u, delegate_.favicon_details()->urls.size());
-  ASSERT_TRUE(delegate_.favicon_details()->urls.end() !=
-              delegate_.favicon_details()->urls.find(row2.url()));
+  ASSERT_TRUE(delegate_.favicon_changed());
+  ASSERT_EQ(1u, delegate_.favicon_changed()->size());
+  ASSERT_TRUE(delegate_.favicon_changed()->end() !=
+              delegate_.favicon_changed()->find(row2.url()));
 
   ASSERT_EQ(1, deleted_count);
   scoped_ptr<AndroidStatement> statement1(backend->QueryHistoryAndBookmarks(
@@ -887,7 +874,7 @@ TEST_F(AndroidProviderBackendTest, UpdateURL) {
                 delegate_.modified_details()->changed_urls[0].last_visit()));
   EXPECT_EQ(row1.title(),
             delegate_.modified_details()->changed_urls[0].title());
-  EXPECT_FALSE(delegate_.favicon_details());
+  EXPECT_FALSE(delegate_.favicon_changed());
 
   EXPECT_EQ(1, update_count);
   // We shouldn't find orignal url anymore.
@@ -947,12 +934,12 @@ TEST_F(AndroidProviderBackendTest, UpdateURL) {
                 delegate_.modified_details()->changed_urls[0].last_visit()));
   EXPECT_EQ(update_row2.visit_count(),
             delegate_.modified_details()->changed_urls[0].visit_count());
-  ASSERT_TRUE(delegate_.favicon_details());
-  ASSERT_EQ(2u, delegate_.favicon_details()->urls.size());
-  ASSERT_TRUE(delegate_.favicon_details()->urls.end() !=
-              delegate_.favicon_details()->urls.find(row2.url()));
-  ASSERT_TRUE(delegate_.favicon_details()->urls.end() !=
-              delegate_.favicon_details()->urls.find(update_row2.url()));
+  ASSERT_TRUE(delegate_.favicon_changed());
+  ASSERT_EQ(2u, delegate_.favicon_changed()->size());
+  ASSERT_TRUE(delegate_.favicon_changed()->end() !=
+              delegate_.favicon_changed()->find(row2.url()));
+  ASSERT_TRUE(delegate_.favicon_changed()->end() !=
+              delegate_.favicon_changed()->find(update_row2.url()));
 
   EXPECT_EQ(1, update_count);
   // We shouldn't find orignal url anymore.
@@ -1034,7 +1021,7 @@ TEST_F(AndroidProviderBackendTest, UpdateVisitCount) {
                 delegate_.modified_details()->changed_urls[0].last_visit()));
   EXPECT_EQ(update_row1.visit_count(),
             delegate_.modified_details()->changed_urls[0].visit_count());
-  EXPECT_FALSE(delegate_.favicon_details());
+  EXPECT_FALSE(delegate_.favicon_changed());
 
   // All visits should be removed, and 5 new visit insertted.
   URLRow new_row1;
@@ -1115,7 +1102,7 @@ TEST_F(AndroidProviderBackendTest, UpdateLastVisitTime) {
   EXPECT_EQ(ToDatabaseTime(update_row1.last_visit_time()),
             ToDatabaseTime(
                 delegate_.modified_details()->changed_urls[0].last_visit()));
-  EXPECT_FALSE(delegate_.favicon_details());
+  EXPECT_FALSE(delegate_.favicon_changed());
 
   URLRow new_row1;
   ASSERT_TRUE(history_db_.GetRowForURL(row1.url(), &new_row1));
@@ -1175,10 +1162,10 @@ TEST_F(AndroidProviderBackendTest, UpdateFavicon) {
   // Verify notifications.
   EXPECT_FALSE(delegate_.deleted_details());
   EXPECT_FALSE(delegate_.modified_details());
-  ASSERT_TRUE(delegate_.favicon_details());
-  ASSERT_EQ(1u, delegate_.favicon_details()->urls.size());
-  ASSERT_TRUE(delegate_.favicon_details()->urls.end() !=
-              delegate_.favicon_details()->urls.find(row1.url()));
+  ASSERT_TRUE(delegate_.favicon_changed());
+  ASSERT_EQ(1u, delegate_.favicon_changed()->size());
+  ASSERT_TRUE(delegate_.favicon_changed()->end() !=
+              delegate_.favicon_changed()->find(row1.url()));
 
   std::vector<IconMapping> icon_mappings;
   EXPECT_TRUE(thumbnail_db_.GetIconMappingsForPageURL(
@@ -1205,10 +1192,10 @@ TEST_F(AndroidProviderBackendTest, UpdateFavicon) {
   // Verify notifications.
   EXPECT_FALSE(delegate_.deleted_details());
   EXPECT_FALSE(delegate_.modified_details());
-  ASSERT_TRUE(delegate_.favicon_details());
-  ASSERT_EQ(1u, delegate_.favicon_details()->urls.size());
-  ASSERT_TRUE(delegate_.favicon_details()->urls.end() !=
-              delegate_.favicon_details()->urls.find(row1.url()));
+  ASSERT_TRUE(delegate_.favicon_changed());
+  ASSERT_EQ(1u, delegate_.favicon_changed()->size());
+  ASSERT_TRUE(delegate_.favicon_changed()->end() !=
+              delegate_.favicon_changed()->find(row1.url()));
 
   EXPECT_FALSE(thumbnail_db_.GetIconMappingsForPageURL(
       row1.url(), favicon_base::FAVICON, NULL));
@@ -1658,7 +1645,7 @@ TEST_F(AndroidProviderBackendTest, DeleteHistory) {
             delegate_.modified_details()->changed_urls[0].url());
   EXPECT_EQ(Time::UnixEpoch(),
             delegate_.modified_details()->changed_urls[0].last_visit());
-  EXPECT_EQ(1u, delegate_.favicon_details()->urls.size());
+  EXPECT_EQ(1u, delegate_.favicon_changed()->size());
 }
 
 TEST_F(AndroidProviderBackendTest, TestMultipleNestingTransaction) {
@@ -1815,20 +1802,20 @@ TEST_F(AndroidProviderBackendTest, QueryWithoutThumbnailDB) {
   std::vector<VisitInfo> visits1;
   Time last_visited1 = Time::Now() - TimeDelta::FromDays(1);
   Time created1 = last_visited1 - TimeDelta::FromDays(20);
-  visits1.push_back(VisitInfo(created1, content::PAGE_TRANSITION_LINK));
+  visits1.push_back(VisitInfo(created1, ui::PAGE_TRANSITION_LINK));
   visits1.push_back(VisitInfo(last_visited1 - TimeDelta::FromDays(1),
-                              content::PAGE_TRANSITION_LINK));
-  visits1.push_back(VisitInfo(last_visited1, content::PAGE_TRANSITION_LINK));
+                              ui::PAGE_TRANSITION_LINK));
+  visits1.push_back(VisitInfo(last_visited1, ui::PAGE_TRANSITION_LINK));
 
   GURL url2("http://www.example.com");
   std::vector<VisitInfo> visits2;
   const base::string16 title2(UTF8ToUTF16("example"));
   Time last_visited2 = Time::Now();
   Time created2 = last_visited2 - TimeDelta::FromDays(10);
-  visits2.push_back(VisitInfo(created2, content::PAGE_TRANSITION_LINK));
+  visits2.push_back(VisitInfo(created2, ui::PAGE_TRANSITION_LINK));
   visits2.push_back(VisitInfo(last_visited2 - TimeDelta::FromDays(5),
-                              content::PAGE_TRANSITION_LINK));
-  visits2.push_back(VisitInfo(last_visited2, content::PAGE_TRANSITION_LINK));
+                              ui::PAGE_TRANSITION_LINK));
+  visits2.push_back(VisitInfo(last_visited2, ui::PAGE_TRANSITION_LINK));
 
   // Only use the HistoryBackend to generate the test data.
   // HistoryBackend will shutdown after that.
@@ -1849,17 +1836,8 @@ TEST_F(AndroidProviderBackendTest, QueryWithoutThumbnailDB) {
   ASSERT_EQ(2u, history_backend->UpdateURLs(url_rows));
 
   // Set favicon to url2.
-  std::vector<unsigned char> data;
-  data.push_back('1');
-  favicon_base::FaviconRawBitmapData bitmap_data_element;
-  bitmap_data_element.bitmap_data = new base::RefCountedBytes(data);
-  bitmap_data_element.pixel_size = gfx::Size();
-  bitmap_data_element.icon_url = GURL();
-  std::vector<favicon_base::FaviconRawBitmapData> favicon_bitmap_data;
-  favicon_bitmap_data.push_back(bitmap_data_element);
-
-  history_backend->SetFavicons(
-      url2, favicon_base::FAVICON, favicon_bitmap_data);
+  std::vector<SkBitmap> bitmaps(1u, CreateBitmap());
+  history_backend->SetFavicons(url2, favicon_base::FAVICON, GURL(), bitmaps);
   history_backend->Closing();
   }
 
@@ -1965,7 +1943,7 @@ TEST_F(AndroidProviderBackendTest, InsertWithoutThumbnailDB) {
             delegate_.modified_details()->changed_urls[0].visit_count());
   EXPECT_EQ(row1.title(),
             delegate_.modified_details()->changed_urls[0].title());
-  EXPECT_FALSE(delegate_.favicon_details());
+  EXPECT_FALSE(delegate_.favicon_changed());
   content::RunAllPendingInMessageLoop();
   ASSERT_EQ(1, bookmark_model_->mobile_node()->child_count());
   const BookmarkNode* child = bookmark_model_->mobile_node()->GetChild(0);
@@ -1985,7 +1963,7 @@ TEST_F(AndroidProviderBackendTest, InsertWithoutThumbnailDB) {
             delegate_.modified_details()->changed_urls[0].title());
   // Favicon details is still false because thumbnail database wasn't
   // initialized, we ignore any changes of favicon.
-  ASSERT_FALSE(delegate_.favicon_details());
+  ASSERT_FALSE(delegate_.favicon_changed());
 }
 
 TEST_F(AndroidProviderBackendTest, DeleteWithoutThumbnailDB) {
@@ -2056,7 +2034,7 @@ TEST_F(AndroidProviderBackendTest, DeleteWithoutThumbnailDB) {
   EXPECT_FALSE(delegate_.modified_details());
   EXPECT_EQ(2u, delegate_.deleted_details()->rows.size());
   // No favicon has been deleted.
-  EXPECT_FALSE(delegate_.favicon_details());
+  EXPECT_FALSE(delegate_.favicon_changed());
 
   // No row exists.
   std::vector<HistoryAndBookmarkRow::ColumnID> projections;
@@ -2129,7 +2107,7 @@ TEST_F(AndroidProviderBackendTest, UpdateFaviconWithoutThumbnail) {
   ASSERT_TRUE(delegate_.modified_details());
   ASSERT_EQ(1u, delegate_.modified_details()->changed_urls.size());
   // No favicon will be updated as thumbnail database is missing.
-  EXPECT_FALSE(delegate_.favicon_details());
+  EXPECT_FALSE(delegate_.favicon_changed());
 }
 
 }  // namespace history