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

Side by Side Diff: ui/gfx/image/mojo/image_traits_unittest.cc

Issue 2770693002: ash: HiDPI user avatar for SessionController (Closed)
Patch Set: nits, and gn check Created 3 years, 9 months 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
« no previous file with comments | « ui/gfx/image/mojo/image_traits_test_service.mojom ('k') | ui/gfx/typemaps.gni » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2017 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 <vector>
6
7 #include "base/macros.h"
8 #include "base/message_loop/message_loop.h"
9 #include "mojo/public/cpp/bindings/binding_set.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11 #include "third_party/skia/include/core/SkBitmap.h"
12 #include "ui/gfx/geometry/size.h"
13 #include "ui/gfx/image/image_skia_operations.h"
14 #include "ui/gfx/image/image_skia_source.h"
15 #include "ui/gfx/image/image_unittest_util.h"
16 #include "ui/gfx/image/mojo/image_traits_test_service.mojom.h"
17
18 namespace gfx {
19
20 namespace {
21
22 // A test ImageSkiaSource that creates an ImageSkiaRep for any scale.
23 class TestImageSkiaSource : public ImageSkiaSource {
24 public:
25 explicit TestImageSkiaSource(const gfx::Size& dip_size)
26 : dip_size_(dip_size) {}
27 ~TestImageSkiaSource() override = default;
28
29 // ImageSkiaSource:
30 ImageSkiaRep GetImageForScale(float scale) override {
31 return ImageSkiaRep(ScaleToCeiledSize(dip_size_, scale), scale);
32 }
33
34 private:
35 const gfx::Size dip_size_;
36
37 DISALLOW_COPY_AND_ASSIGN(TestImageSkiaSource);
38 };
39
40 class ImageTraitsTest : public testing::Test,
41 public mojom::ImageTraitsTestService {
42 public:
43 ImageTraitsTest() = default;
44
45 // testing::Test:
46 void SetUp() override {
47 service_ = bindings_.CreateInterfacePtrAndBind(this);
48 }
49
50 mojom::ImageTraitsTestServicePtr& service() { return service_; }
51
52 private:
53 // mojom::ImageTraitsTestService:
54 void EchoImageSkiaRep(const ImageSkiaRep& in,
55 const EchoImageSkiaRepCallback& callback) override {
56 callback.Run(in);
57 }
58 void EchoImageSkia(const ImageSkia& in,
59 const EchoImageSkiaCallback& callback) override {
60 callback.Run(in);
61 }
62
63 base::MessageLoop loop_;
64 mojo::BindingSet<ImageTraitsTestService> bindings_;
65 mojom::ImageTraitsTestServicePtr service_;
66
67 DISALLOW_COPY_AND_ASSIGN(ImageTraitsTest);
68 };
69
70 } // namespace
71
72 TEST_F(ImageTraitsTest, NullImageSkiaRep) {
73 ImageSkiaRep null_rep;
74 ASSERT_TRUE(null_rep.is_null());
75
76 ImageSkiaRep output(gfx::Size(1, 1), 1.0f);
77 ASSERT_FALSE(output.is_null());
78 service()->EchoImageSkiaRep(null_rep, &output);
79 EXPECT_TRUE(output.is_null());
80 }
81
82 TEST_F(ImageTraitsTest, EmptyImageSkiaRep) {
83 SkBitmap empty_bitmap;
84 empty_bitmap.allocN32Pixels(0, 0);
85 // Empty SkBitmap is not null.
86 EXPECT_FALSE(empty_bitmap.isNull());
87 EXPECT_TRUE(empty_bitmap.drawsNothing());
88
89 ImageSkiaRep empty_rep(empty_bitmap, 1.0f);
90 // ImageSkiaRep with empty bitmap is not null.
91 ASSERT_FALSE(empty_rep.is_null());
92
93 ImageSkiaRep output(gfx::Size(1, 1), 1.0f);
94 ASSERT_FALSE(output.is_null());
95 service()->EchoImageSkiaRep(empty_rep, &output);
96 EXPECT_TRUE(empty_rep.sk_bitmap().drawsNothing());
97 EXPECT_TRUE(test::AreBitmapsEqual(empty_rep.sk_bitmap(), output.sk_bitmap()));
98 }
99
100 TEST_F(ImageTraitsTest, ImageSkiaRep) {
101 ImageSkiaRep image_rep(gfx::Size(2, 4), 2.0f);
102
103 ImageSkiaRep output;
104 service()->EchoImageSkiaRep(image_rep, &output);
105
106 EXPECT_FALSE(output.is_null());
107 EXPECT_EQ(image_rep.scale(), output.scale());
108 EXPECT_TRUE(test::AreBitmapsEqual(image_rep.sk_bitmap(), output.sk_bitmap()));
109 }
110
111 TEST_F(ImageTraitsTest, UnscaledImageSkiaRep) {
112 ImageSkiaRep image_rep(gfx::Size(2, 4), 0.0f);
113 ASSERT_TRUE(image_rep.unscaled());
114
115 ImageSkiaRep output(gfx::Size(1, 1), 1.0f);
116 EXPECT_FALSE(output.unscaled());
117 service()->EchoImageSkiaRep(image_rep, &output);
118 EXPECT_TRUE(output.unscaled());
119 EXPECT_TRUE(test::AreBitmapsEqual(image_rep.sk_bitmap(), output.sk_bitmap()));
120 }
121
122 TEST_F(ImageTraitsTest, NullImageSkia) {
123 ImageSkia null_image;
124 ASSERT_TRUE(null_image.isNull());
125
126 ImageSkia output(ImageSkiaRep(gfx::Size(1, 1), 1.0f));
127 ASSERT_FALSE(output.isNull());
128 service()->EchoImageSkia(null_image, &output);
129 EXPECT_TRUE(output.isNull());
130 }
131
132 TEST_F(ImageTraitsTest, ImageSkiaWithNoRepsTreatedAsNull) {
133 const gfx::Size kSize(1, 2);
134 ImageSkia image(new TestImageSkiaSource(kSize), kSize);
135 ASSERT_FALSE(image.isNull());
136
137 ImageSkia output(ImageSkiaRep(gfx::Size(1, 1), 1.0f));
138 ASSERT_FALSE(output.isNull());
139 service()->EchoImageSkia(image, &output);
140 EXPECT_TRUE(output.isNull());
141 }
142
143 TEST_F(ImageTraitsTest, ImageSkia) {
144 const gfx::Size kSize(1, 2);
145 ImageSkia image(new TestImageSkiaSource(kSize), kSize);
146 image.GetRepresentation(1.0f);
147 image.GetRepresentation(2.0f);
148
149 ImageSkia output;
150 service()->EchoImageSkia(image, &output);
151
152 EXPECT_TRUE(test::AreImagesEqual(Image(output), Image(image)));
153 }
154
155 TEST_F(ImageTraitsTest, EmptyRepPreserved) {
156 const gfx::Size kSize(1, 2);
157 ImageSkia image(new TestImageSkiaSource(kSize), kSize);
158 image.GetRepresentation(1.0f);
159
160 SkBitmap empty_bitmap;
161 empty_bitmap.allocN32Pixels(0, 0);
162 image.AddRepresentation(ImageSkiaRep(empty_bitmap, 2.0f));
163
164 ImageSkia output;
165 service()->EchoImageSkia(image, &output);
166
167 EXPECT_TRUE(test::AreImagesEqual(Image(output), Image(image)));
168 }
169
170 TEST_F(ImageTraitsTest, ImageSkiaWithOperations) {
171 const gfx::Size kSize(32, 32);
172 ImageSkia image(new TestImageSkiaSource(kSize), kSize);
173
174 const gfx::Size kNewSize(16, 16);
175 ImageSkia resized = ImageSkiaOperations::CreateResizedImage(
176 image, skia::ImageOperations::RESIZE_BEST, kNewSize);
177 resized.GetRepresentation(1.0f);
178 resized.GetRepresentation(2.0f);
179
180 ImageSkia output;
181 service()->EchoImageSkia(resized, &output);
182
183 EXPECT_TRUE(test::AreImagesEqual(Image(output), Image(resized)));
184 }
185
186 } // namespace gfx
OLDNEW
« no previous file with comments | « ui/gfx/image/mojo/image_traits_test_service.mojom ('k') | ui/gfx/typemaps.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698