Index: chrome/browser/notifications/sync_notifier/image_holder_unittest.cc |
diff --git a/chrome/browser/notifications/sync_notifier/image_holder_unittest.cc b/chrome/browser/notifications/sync_notifier/image_holder_unittest.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..534228e54202d04cc34bc3d716f43a753b80900c |
--- /dev/null |
+++ b/chrome/browser/notifications/sync_notifier/image_holder_unittest.cc |
@@ -0,0 +1,103 @@ |
+// Copyright 2014 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include <string> |
+ |
+#include "chrome/browser/notifications/sync_notifier/image_holder.h" |
+#include "chrome/browser/notifications/sync_notifier/sync_notifier_test_utils.h" |
+ |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+namespace { |
+ |
+class TestDelegate : public notifier::ImageHolderDelegate { |
+ public: |
+ TestDelegate() : on_fetch_complete_called_(false) {} |
+ virtual void OnFetchComplete() OVERRIDE { |
+ on_fetch_complete_called_ = true; |
+ } |
+ bool on_fetch_complete_called_; |
+}; |
+ |
+} // namespace. |
+ |
+namespace notifier { |
+ |
+typedef testing::Test ImageHolderTest; |
+ |
+TEST_F(ImageHolderTest, CreateBitmapFetcherTest) { |
+ TestDelegate delegate; |
+ ImageHolder image_holder(GURL(kIconUrl1), GURL(kIconUrl2), NULL, &delegate); |
+ |
+ EXPECT_EQ(GURL(kIconUrl1), image_holder.fetchers_[0]->url()); |
+ EXPECT_EQ(GURL(kIconUrl2), image_holder.fetchers_[1]->url()); |
+ EXPECT_EQ(static_cast<unsigned int>(2), image_holder.fetchers_.size()); |
+ |
+ // Adding a dup of an existing URL shouldn't change anything. |
+ image_holder.CreateBitmapFetcher(GURL(kIconUrl2)); |
+ EXPECT_EQ(GURL(kIconUrl1), image_holder.fetchers_[0]->url()); |
+ EXPECT_EQ(GURL(kIconUrl2), image_holder.fetchers_[1]->url()); |
+ EXPECT_EQ(static_cast<unsigned int>(2), image_holder.fetchers_.size()); |
+} |
+ |
+TEST_F(ImageHolderTest, OnFetchCompleteTest) { |
+ TestDelegate delegate; |
+ ImageHolder image_holder(GURL(kIconUrl1), GURL(), NULL, &delegate); |
+ |
+ // Put a real bitmap into "bitmap". 2x2 bitmap of green 32 bit pixels. |
+ SkBitmap bitmap; |
+ bitmap.setConfig(SkBitmap::kARGB_8888_Config, 2, 2); |
+ bitmap.allocPixels(); |
+ bitmap.eraseColor(SK_ColorGREEN); |
+ |
+ image_holder.OnFetchComplete(GURL(kIconUrl1), &bitmap); |
+ |
+ // Expect that the app icon has some data in it. |
+ EXPECT_FALSE(image_holder.low_dpi_image().IsEmpty()); |
+ |
+ // Expect that we reported the fetch done to the delegate. |
+ EXPECT_TRUE(delegate.on_fetch_complete_called_); |
+} |
+ |
+TEST_F(ImageHolderTest, IsFetchingDoneTest) { |
+ TestDelegate delegate; |
+ ImageHolder image_holder1(GURL(kIconUrl1), GURL(kIconUrl2), NULL, &delegate); |
+ ImageHolder image_holder2(GURL(kIconUrl1), GURL(), NULL, &delegate); |
+ ImageHolder image_holder3(GURL(), GURL(kIconUrl2), NULL, &delegate); |
+ ImageHolder image_holder4(GURL(), GURL(), NULL, &delegate); |
+ |
+ // Initially, image holder 4 with no URLs should report done, but no others. |
+ EXPECT_FALSE(image_holder1.IsFetchingDone()); |
+ EXPECT_FALSE(image_holder2.IsFetchingDone()); |
+ EXPECT_FALSE(image_holder3.IsFetchingDone()); |
+ EXPECT_TRUE(image_holder4.IsFetchingDone()); |
+ |
+ // Put a real bitmap into "bitmap". 2x2 bitmap of green 32 bit pixels. |
+ SkBitmap bitmap; |
+ bitmap.setConfig(SkBitmap::kARGB_8888_Config, 2, 2); |
+ bitmap.allocPixels(); |
+ bitmap.eraseColor(SK_ColorGREEN); |
+ |
+ // Add the first icon, and image holder 2 should now also report done. |
+ image_holder1.OnFetchComplete(GURL(kIconUrl1), &bitmap); |
+ image_holder2.OnFetchComplete(GURL(kIconUrl1), &bitmap); |
+ image_holder3.OnFetchComplete(GURL(kIconUrl1), &bitmap); |
+ image_holder4.OnFetchComplete(GURL(kIconUrl1), &bitmap); |
+ EXPECT_FALSE(image_holder1.IsFetchingDone()); |
+ EXPECT_TRUE(image_holder2.IsFetchingDone()); |
+ EXPECT_FALSE(image_holder3.IsFetchingDone()); |
+ EXPECT_TRUE(image_holder4.IsFetchingDone()); |
+ |
+ // Add the second image, and now all 4 should report done. |
+ image_holder1.OnFetchComplete(GURL(kIconUrl2), &bitmap); |
+ image_holder2.OnFetchComplete(GURL(kIconUrl2), &bitmap); |
+ image_holder3.OnFetchComplete(GURL(kIconUrl2), &bitmap); |
+ image_holder4.OnFetchComplete(GURL(kIconUrl2), &bitmap); |
+ EXPECT_TRUE(image_holder1.IsFetchingDone()); |
+ EXPECT_TRUE(image_holder2.IsFetchingDone()); |
+ EXPECT_TRUE(image_holder3.IsFetchingDone()); |
+ EXPECT_TRUE(image_holder4.IsFetchingDone()); |
+} |
+ |
+} // namespace notifier. |