Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(28)

Side by Side Diff: ui/app_list/folder_image_unittest.cc

Issue 682843004: Experimental app list: "All apps" button has a folder-like icon. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ares-allapps-button
Patch Set: Use range-based for loops where possible. Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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 "ui/app_list/folder_image.h"
6
7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "third_party/skia/include/core/SkBitmap.h"
9 #include "third_party/skia/include/core/SkColor.h"
10 #include "ui/app_list/app_list_constants.h"
11 #include "ui/app_list/app_list_item.h"
12 #include "ui/app_list/app_list_item_list.h"
13 #include "ui/app_list/app_list_model.h"
14 #include "ui/gfx/skia_util.h"
15
16 namespace app_list {
17
18 namespace {
19
20 gfx::ImageSkia CreateSquareBitmapWithColor(int size, SkColor color) {
21 SkBitmap bitmap;
22 bitmap.allocN32Pixels(size, size);
23 bitmap.eraseColor(color);
24 return gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
25 }
26
27 bool ImagesAreEqual(const gfx::ImageSkia& image1,
28 const gfx::ImageSkia& image2) {
29 return gfx::BitmapsAreEqual(*image1.bitmap(), *image2.bitmap());
30 }
31
32 // Listens for OnFolderImageUpdated and sets a flag upon receiving the signal.
33 class TestFolderImageObserver : public FolderImageObserver {
34 public:
35 TestFolderImageObserver() : updated_flag_(false) {}
36
37 bool updated() const { return updated_flag_; }
38
39 void Reset() { updated_flag_ = false; }
40
41 // FolderImageObserver overrides:
42 void OnFolderImageUpdated() override { updated_flag_ = true; }
43
44 private:
45 bool updated_flag_;
calamity 2014/11/03 00:37:46 DISALLOW_COPY_AND_ASSIGN
Matt Giuca 2014/11/03 05:23:17 Done.
46 };
47
48 } // namespace
49
50 class FolderImageTest : public testing::Test {
51 public:
52 FolderImageTest() : folder_image_(app_list_model_.top_level_item_list()) {}
53
54 ~FolderImageTest() {}
55
56 void SetUp() {
57 // Populate the AppListModel with three items (to test that the FolderImage
58 // correctly supports having fewer than four icons).
59 AddAppWithColoredIcon("app1", SK_ColorRED);
60 AddAppWithColoredIcon("app2", SK_ColorGREEN);
61 AddAppWithColoredIcon("app3", SK_ColorBLUE);
62
63 observer_.Reset();
64 folder_image_.AddObserver(&observer_);
65 }
66
67 void TearDown() { folder_image_.RemoveObserver(&observer_); }
68
69 protected:
70 void AddAppWithColoredIcon(const std::string& id, SkColor icon_color) {
71 scoped_ptr<AppListItem> item(new AppListItem(id));
72 item->SetIcon(CreateSquareBitmapWithColor(kListIconSize, icon_color),
73 false);
74 app_list_model_.AddItem(item.Pass());
75 }
76
77 AppListModel app_list_model_;
78
79 FolderImage folder_image_;
80
81 TestFolderImageObserver observer_;
calamity 2014/11/03 00:37:46 DISALLOW_COPY_AND_ASSIGN
Matt Giuca 2014/11/03 05:23:17 Done.
82 };
83
84 TEST_F(FolderImageTest, UpdateListTest) {
85 gfx::ImageSkia icon1 = folder_image_.icon();
86
87 // Call UpdateIcon and ensure that the observer event fired.
88 folder_image_.UpdateIcon();
89 EXPECT_TRUE(observer_.updated());
90 observer_.Reset();
91 // The icon should not have changed.
92 EXPECT_TRUE(ImagesAreEqual(icon1, folder_image_.icon()));
93
94 // Swap two items. Ensure that the observer fired and the icon changed.
95 app_list_model_.top_level_item_list()->MoveItem(2, 1);
96 EXPECT_TRUE(observer_.updated());
97 observer_.Reset();
98 gfx::ImageSkia icon2 = folder_image_.icon();
99 EXPECT_FALSE(ImagesAreEqual(icon1, icon2));
100
101 // Swap back items. Ensure that the observer fired and the icon changed back.
102 app_list_model_.top_level_item_list()->MoveItem(2, 1);
103 EXPECT_TRUE(observer_.updated());
104 observer_.Reset();
105 EXPECT_TRUE(ImagesAreEqual(icon1, folder_image_.icon()));
106
107 // Add a new item. Ensure that the observer fired and the icon changed.
108 AddAppWithColoredIcon("app4", SK_ColorYELLOW);
109 EXPECT_TRUE(observer_.updated());
110 observer_.Reset();
111 gfx::ImageSkia icon3 = folder_image_.icon();
112 EXPECT_FALSE(ImagesAreEqual(icon1, icon3));
113
114 // Add a new item. The observer should not fire, nor should the icon change
115 // (because it does not affect the first four icons).
116 AddAppWithColoredIcon("app5", SK_ColorCYAN);
117 EXPECT_FALSE(observer_.updated());
118 observer_.Reset();
119 EXPECT_TRUE(ImagesAreEqual(icon3, folder_image_.icon()));
120
121 // Delete an item. Ensure that the observer fired and the icon changed.
122 app_list_model_.DeleteItem("app2");
123 EXPECT_TRUE(observer_.updated());
124 observer_.Reset();
125 gfx::ImageSkia icon4 = folder_image_.icon();
126 EXPECT_FALSE(ImagesAreEqual(icon3, icon4));
127 }
128
129 TEST_F(FolderImageTest, UpdateItemTest) {
130 gfx::ImageSkia icon1 = folder_image_.icon();
131
132 // Change an item's icon. Ensure that the observer fired and the icon changed.
133 app_list_model_.FindItem("app2")->SetIcon(
134 CreateSquareBitmapWithColor(kListIconSize, SK_ColorMAGENTA), false);
135 EXPECT_TRUE(observer_.updated());
136 observer_.Reset();
137 EXPECT_FALSE(ImagesAreEqual(icon1, folder_image_.icon()));
138 }
139
140 } // namespace app_list
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698