| Index: ui/gfx/color_profile_mac_unittest.mm
|
| diff --git a/ui/gfx/color_profile_mac_unittest.mm b/ui/gfx/color_profile_mac_unittest.mm
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..482092850f1ea57b9c1ef4e14e926748f0de06a5
|
| --- /dev/null
|
| +++ b/ui/gfx/color_profile_mac_unittest.mm
|
| @@ -0,0 +1,96 @@
|
| +// 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.
|
| +
|
| +#import <Cocoa/Cocoa.h>
|
| +
|
| +#include "base/mac/scoped_nsobject.h"
|
| +#include "testing/gtest/include/gtest/gtest.h"
|
| +#include "ui/gfx/color_profile.h"
|
| +#include "ui/gfx/mac/coordinate_conversion.h"
|
| +#import "ui/gfx/test/ui_cocoa_test_helper.h"
|
| +
|
| +namespace {
|
| +
|
| +class ColorProfileTest : public ui::CocoaTest {
|
| + public:
|
| + virtual void SetUp() OVERRIDE {
|
| + ui::CocoaTest::SetUp();
|
| +
|
| + // Verify the primary screen origin.
|
| + NSRect primary_screen_frame = PrimaryScreenFrame();
|
| + EXPECT_EQ(0, primary_screen_frame.origin.x);
|
| + EXPECT_EQ(0, primary_screen_frame.origin.y);
|
| +
|
| + // Move the test window onto the screen.
|
| + MoveTestWindowTo(gfx::Rect(0, 0, 200, 200));
|
| +
|
| + // Verify it is contained by the screen.
|
| + BOOL screen_contains_test_window = NSContainsRect(
|
| + primary_screen_frame, [test_window() frame]);
|
| + EXPECT_TRUE(screen_contains_test_window);
|
| + }
|
| +
|
| + void MoveTestWindowTo(gfx::Rect bounds) {
|
| + [test_window() setFrame:gfx::ScreenRectToNSRect(bounds) display:NO];
|
| + EXPECT_EQ(bounds.ToString(), TestWindowBounds().ToString());
|
| + }
|
| +
|
| + gfx::Rect TestWindowBounds() {
|
| + return gfx::ScreenRectFromNSRect([test_window() frame]);
|
| + }
|
| +
|
| + BOOL TestWindowOnScreen() {
|
| + return NSIntersectsRect(PrimaryScreenFrame(), [test_window() frame]);
|
| + }
|
| +
|
| + BOOL TestWindowContainedOnScreen() {
|
| + return NSContainsRect(PrimaryScreenFrame(), [test_window() frame]);
|
| + }
|
| +
|
| + NSRect PrimaryScreenFrame() {
|
| + return [[[NSScreen screens] objectAtIndex:0] frame];
|
| + }
|
| +};
|
| +
|
| +bool TestColorProfileForBounds(const gfx::Rect& bounds) {
|
| + std::vector<char> color_profile;
|
| + return gfx::GetDisplayColorProfile(bounds, &color_profile);
|
| +}
|
| +
|
| +TEST_F(ColorProfileTest, GetDisplayColorProfileForOnScreenBounds) {
|
| + MoveTestWindowTo(gfx::Rect(10, 10, 100, 100));
|
| + EXPECT_FALSE(TestWindowBounds().IsEmpty());
|
| + EXPECT_TRUE(TestWindowContainedOnScreen());
|
| + EXPECT_TRUE(TestColorProfileForBounds(TestWindowBounds()));
|
| +}
|
| +
|
| +TEST_F(ColorProfileTest, GetDisplayColorProfileForPartiallyOnScreenBounds) {
|
| + MoveTestWindowTo(gfx::Rect(-50, -50, 80, 80));
|
| + EXPECT_FALSE(TestWindowBounds().IsEmpty());
|
| + EXPECT_TRUE(TestWindowOnScreen());
|
| + EXPECT_TRUE(TestColorProfileForBounds(TestWindowBounds()));
|
| +}
|
| +
|
| +TEST_F(ColorProfileTest, GetDisplayColorProfileForOffScreenBounds) {
|
| + MoveTestWindowTo(gfx::Rect(-100, -100, 10, 10));
|
| + EXPECT_FALSE(TestWindowBounds().IsEmpty());
|
| + EXPECT_FALSE(TestWindowOnScreen());
|
| + EXPECT_FALSE(TestColorProfileForBounds(TestWindowBounds()));
|
| +}
|
| +
|
| +TEST_F(ColorProfileTest, GetDisplayColorProfileForEmptyOnScreenBounds) {
|
| + MoveTestWindowTo(gfx::Rect(10, 10, 0, 0));
|
| + EXPECT_TRUE(TestWindowBounds().IsEmpty());
|
| + EXPECT_FALSE(TestWindowOnScreen());
|
| + EXPECT_FALSE(TestColorProfileForBounds(TestWindowBounds()));
|
| +}
|
| +
|
| +TEST_F(ColorProfileTest, GetDisplayColorProfileForEmptyOffScreenBounds) {
|
| + MoveTestWindowTo(gfx::Rect(-100, -100, 0, 0));
|
| + EXPECT_TRUE(TestWindowBounds().IsEmpty());
|
| + EXPECT_FALSE(TestWindowOnScreen());
|
| + EXPECT_FALSE(TestColorProfileForBounds(TestWindowBounds()));
|
| +}
|
| +
|
| +} // namespace
|
|
|