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

Unified 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 side-by-side diff with in-line comments
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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/image/mojo/image_traits_unittest.cc
diff --git a/ui/gfx/image/mojo/image_traits_unittest.cc b/ui/gfx/image/mojo/image_traits_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..bce6866e21ebd0ea9eb6ce10a5e33c07ab808fcb
--- /dev/null
+++ b/ui/gfx/image/mojo/image_traits_unittest.cc
@@ -0,0 +1,186 @@
+// Copyright 2017 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 <vector>
+
+#include "base/macros.h"
+#include "base/message_loop/message_loop.h"
+#include "mojo/public/cpp/bindings/binding_set.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "third_party/skia/include/core/SkBitmap.h"
+#include "ui/gfx/geometry/size.h"
+#include "ui/gfx/image/image_skia_operations.h"
+#include "ui/gfx/image/image_skia_source.h"
+#include "ui/gfx/image/image_unittest_util.h"
+#include "ui/gfx/image/mojo/image_traits_test_service.mojom.h"
+
+namespace gfx {
+
+namespace {
+
+// A test ImageSkiaSource that creates an ImageSkiaRep for any scale.
+class TestImageSkiaSource : public ImageSkiaSource {
+ public:
+ explicit TestImageSkiaSource(const gfx::Size& dip_size)
+ : dip_size_(dip_size) {}
+ ~TestImageSkiaSource() override = default;
+
+ // ImageSkiaSource:
+ ImageSkiaRep GetImageForScale(float scale) override {
+ return ImageSkiaRep(ScaleToCeiledSize(dip_size_, scale), scale);
+ }
+
+ private:
+ const gfx::Size dip_size_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestImageSkiaSource);
+};
+
+class ImageTraitsTest : public testing::Test,
+ public mojom::ImageTraitsTestService {
+ public:
+ ImageTraitsTest() = default;
+
+ // testing::Test:
+ void SetUp() override {
+ service_ = bindings_.CreateInterfacePtrAndBind(this);
+ }
+
+ mojom::ImageTraitsTestServicePtr& service() { return service_; }
+
+ private:
+ // mojom::ImageTraitsTestService:
+ void EchoImageSkiaRep(const ImageSkiaRep& in,
+ const EchoImageSkiaRepCallback& callback) override {
+ callback.Run(in);
+ }
+ void EchoImageSkia(const ImageSkia& in,
+ const EchoImageSkiaCallback& callback) override {
+ callback.Run(in);
+ }
+
+ base::MessageLoop loop_;
+ mojo::BindingSet<ImageTraitsTestService> bindings_;
+ mojom::ImageTraitsTestServicePtr service_;
+
+ DISALLOW_COPY_AND_ASSIGN(ImageTraitsTest);
+};
+
+} // namespace
+
+TEST_F(ImageTraitsTest, NullImageSkiaRep) {
+ ImageSkiaRep null_rep;
+ ASSERT_TRUE(null_rep.is_null());
+
+ ImageSkiaRep output(gfx::Size(1, 1), 1.0f);
+ ASSERT_FALSE(output.is_null());
+ service()->EchoImageSkiaRep(null_rep, &output);
+ EXPECT_TRUE(output.is_null());
+}
+
+TEST_F(ImageTraitsTest, EmptyImageSkiaRep) {
+ SkBitmap empty_bitmap;
+ empty_bitmap.allocN32Pixels(0, 0);
+ // Empty SkBitmap is not null.
+ EXPECT_FALSE(empty_bitmap.isNull());
+ EXPECT_TRUE(empty_bitmap.drawsNothing());
+
+ ImageSkiaRep empty_rep(empty_bitmap, 1.0f);
+ // ImageSkiaRep with empty bitmap is not null.
+ ASSERT_FALSE(empty_rep.is_null());
+
+ ImageSkiaRep output(gfx::Size(1, 1), 1.0f);
+ ASSERT_FALSE(output.is_null());
+ service()->EchoImageSkiaRep(empty_rep, &output);
+ EXPECT_TRUE(empty_rep.sk_bitmap().drawsNothing());
+ EXPECT_TRUE(test::AreBitmapsEqual(empty_rep.sk_bitmap(), output.sk_bitmap()));
+}
+
+TEST_F(ImageTraitsTest, ImageSkiaRep) {
+ ImageSkiaRep image_rep(gfx::Size(2, 4), 2.0f);
+
+ ImageSkiaRep output;
+ service()->EchoImageSkiaRep(image_rep, &output);
+
+ EXPECT_FALSE(output.is_null());
+ EXPECT_EQ(image_rep.scale(), output.scale());
+ EXPECT_TRUE(test::AreBitmapsEqual(image_rep.sk_bitmap(), output.sk_bitmap()));
+}
+
+TEST_F(ImageTraitsTest, UnscaledImageSkiaRep) {
+ ImageSkiaRep image_rep(gfx::Size(2, 4), 0.0f);
+ ASSERT_TRUE(image_rep.unscaled());
+
+ ImageSkiaRep output(gfx::Size(1, 1), 1.0f);
+ EXPECT_FALSE(output.unscaled());
+ service()->EchoImageSkiaRep(image_rep, &output);
+ EXPECT_TRUE(output.unscaled());
+ EXPECT_TRUE(test::AreBitmapsEqual(image_rep.sk_bitmap(), output.sk_bitmap()));
+}
+
+TEST_F(ImageTraitsTest, NullImageSkia) {
+ ImageSkia null_image;
+ ASSERT_TRUE(null_image.isNull());
+
+ ImageSkia output(ImageSkiaRep(gfx::Size(1, 1), 1.0f));
+ ASSERT_FALSE(output.isNull());
+ service()->EchoImageSkia(null_image, &output);
+ EXPECT_TRUE(output.isNull());
+}
+
+TEST_F(ImageTraitsTest, ImageSkiaWithNoRepsTreatedAsNull) {
+ const gfx::Size kSize(1, 2);
+ ImageSkia image(new TestImageSkiaSource(kSize), kSize);
+ ASSERT_FALSE(image.isNull());
+
+ ImageSkia output(ImageSkiaRep(gfx::Size(1, 1), 1.0f));
+ ASSERT_FALSE(output.isNull());
+ service()->EchoImageSkia(image, &output);
+ EXPECT_TRUE(output.isNull());
+}
+
+TEST_F(ImageTraitsTest, ImageSkia) {
+ const gfx::Size kSize(1, 2);
+ ImageSkia image(new TestImageSkiaSource(kSize), kSize);
+ image.GetRepresentation(1.0f);
+ image.GetRepresentation(2.0f);
+
+ ImageSkia output;
+ service()->EchoImageSkia(image, &output);
+
+ EXPECT_TRUE(test::AreImagesEqual(Image(output), Image(image)));
+}
+
+TEST_F(ImageTraitsTest, EmptyRepPreserved) {
+ const gfx::Size kSize(1, 2);
+ ImageSkia image(new TestImageSkiaSource(kSize), kSize);
+ image.GetRepresentation(1.0f);
+
+ SkBitmap empty_bitmap;
+ empty_bitmap.allocN32Pixels(0, 0);
+ image.AddRepresentation(ImageSkiaRep(empty_bitmap, 2.0f));
+
+ ImageSkia output;
+ service()->EchoImageSkia(image, &output);
+
+ EXPECT_TRUE(test::AreImagesEqual(Image(output), Image(image)));
+}
+
+TEST_F(ImageTraitsTest, ImageSkiaWithOperations) {
+ const gfx::Size kSize(32, 32);
+ ImageSkia image(new TestImageSkiaSource(kSize), kSize);
+
+ const gfx::Size kNewSize(16, 16);
+ ImageSkia resized = ImageSkiaOperations::CreateResizedImage(
+ image, skia::ImageOperations::RESIZE_BEST, kNewSize);
+ resized.GetRepresentation(1.0f);
+ resized.GetRepresentation(2.0f);
+
+ ImageSkia output;
+ service()->EchoImageSkia(resized, &output);
+
+ EXPECT_TRUE(test::AreImagesEqual(Image(output), Image(resized)));
+}
+
+} // namespace gfx
« 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