Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / image_holder_unittest.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include <string>
6
7 #include "chrome/browser/image_holder.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace {
11
12 const char kIconUrl1[] = "http://www.google.com/icon1.jpg";
13 const char kIconUrl2[] = "http://www.google.com/icon2.jpg";
14
15 class TestDelegate : public chrome::ImageHolderDelegate {
16  public:
17   TestDelegate() : on_fetch_complete_called_(false) {}
18   void OnFetchComplete() override { on_fetch_complete_called_ = true; }
19   bool on_fetch_complete_called_;
20 };
21
22 }  // namespace.
23
24 namespace chrome {
25
26 typedef testing::Test ImageHolderTest;
27
28 TEST_F(ImageHolderTest, CreateBitmapFetcherTest) {
29   TestDelegate delegate;
30   ImageHolder image_holder(GURL(kIconUrl1), GURL(kIconUrl2), NULL, &delegate);
31
32   EXPECT_EQ(GURL(kIconUrl1), image_holder.fetchers_[0]->url());
33   EXPECT_EQ(GURL(kIconUrl2), image_holder.fetchers_[1]->url());
34   EXPECT_EQ(static_cast<unsigned int>(2), image_holder.fetchers_.size());
35
36   // Adding a dup of an existing URL shouldn't change anything.
37   image_holder.CreateBitmapFetcher(GURL(kIconUrl2));
38   EXPECT_EQ(GURL(kIconUrl1), image_holder.fetchers_[0]->url());
39   EXPECT_EQ(GURL(kIconUrl2), image_holder.fetchers_[1]->url());
40   EXPECT_EQ(static_cast<unsigned int>(2), image_holder.fetchers_.size());
41 }
42
43 TEST_F(ImageHolderTest, OnFetchCompleteTest) {
44   TestDelegate delegate;
45   ImageHolder image_holder(GURL(kIconUrl1), GURL(), NULL, &delegate);
46
47   // Put a real bitmap into "bitmap".  2x2 bitmap of green 32 bit pixels.
48   SkBitmap bitmap;
49   bitmap.allocN32Pixels(2, 2);
50   bitmap.eraseColor(SK_ColorGREEN);
51
52   image_holder.OnFetchComplete(GURL(kIconUrl1), &bitmap);
53
54   // Expect that the app icon has some data in it.
55   EXPECT_FALSE(image_holder.low_dpi_image().IsEmpty());
56
57   // Expect that we reported the fetch done to the delegate.
58   EXPECT_TRUE(delegate.on_fetch_complete_called_);
59 }
60
61 TEST_F(ImageHolderTest, IsFetchingDoneTest) {
62   TestDelegate delegate;
63   ImageHolder image_holder1(GURL(kIconUrl1), GURL(kIconUrl2), NULL, &delegate);
64   ImageHolder image_holder2(GURL(kIconUrl1), GURL(), NULL, &delegate);
65   ImageHolder image_holder3(GURL(), GURL(kIconUrl2), NULL, &delegate);
66   ImageHolder image_holder4(GURL(), GURL(), NULL, &delegate);
67
68   // Initially, image holder 4 with no URLs should report done, but no others.
69   EXPECT_FALSE(image_holder1.IsFetchingDone());
70   EXPECT_FALSE(image_holder2.IsFetchingDone());
71   EXPECT_FALSE(image_holder3.IsFetchingDone());
72   EXPECT_TRUE(image_holder4.IsFetchingDone());
73
74   // Put a real bitmap into "bitmap".  2x2 bitmap of green 32 bit pixels.
75   SkBitmap bitmap;
76   bitmap.allocN32Pixels(2, 2);
77   bitmap.eraseColor(SK_ColorGREEN);
78
79   // Add the first icon, and image holder 2 should now also report done.
80   image_holder1.OnFetchComplete(GURL(kIconUrl1), &bitmap);
81   image_holder2.OnFetchComplete(GURL(kIconUrl1), &bitmap);
82   image_holder3.OnFetchComplete(GURL(kIconUrl1), &bitmap);
83   image_holder4.OnFetchComplete(GURL(kIconUrl1), &bitmap);
84   EXPECT_FALSE(image_holder1.IsFetchingDone());
85   EXPECT_TRUE(image_holder2.IsFetchingDone());
86   EXPECT_FALSE(image_holder3.IsFetchingDone());
87   EXPECT_TRUE(image_holder4.IsFetchingDone());
88
89   // Add the second image, and now all 4 should report done.
90   image_holder1.OnFetchComplete(GURL(kIconUrl2), &bitmap);
91   image_holder2.OnFetchComplete(GURL(kIconUrl2), &bitmap);
92   image_holder3.OnFetchComplete(GURL(kIconUrl2), &bitmap);
93   image_holder4.OnFetchComplete(GURL(kIconUrl2), &bitmap);
94   EXPECT_TRUE(image_holder1.IsFetchingDone());
95   EXPECT_TRUE(image_holder2.IsFetchingDone());
96   EXPECT_TRUE(image_holder3.IsFetchingDone());
97   EXPECT_TRUE(image_holder4.IsFetchingDone());
98 }
99
100 }  // namespace chrome.