chromium/chromecast/graphics/cast_screen_unittest.cc

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chromecast/graphics/cast_screen.h"

#include "testing/gmock/include/gmock/gmock.h"
#include "ui/aura/test/aura_test_base.h"
#include "ui/display/display_observer.h"

using testing::_;
using testing::AllOf;
using testing::Property;

namespace chromecast {
namespace test {

namespace {
constexpr int64_t kMockDisplayId = 0xcafebabe;
}

using CastScreenTest = aura::test::AuraTestBase;

class MockDisplayObserver : public display::DisplayObserver {
 public:
  MOCK_METHOD2(OnDisplayMetricsChanged,
               void(const display::Display& display, uint32_t changed_metrics));
};

TEST_F(CastScreenTest, OverrideAndRestore) {
  MockDisplayObserver mock_display_observer;
  CastScreen screen;
  // Set up initial screen.
  screen.OnDisplayChanged(kMockDisplayId, 1.0,
                          display::Display::Rotation::ROTATE_0,
                          gfx::Rect(0, 0, 1920, 1080));

  EXPECT_CALL(mock_display_observer,
              OnDisplayMetricsChanged(
                  AllOf(Property(&display::Display::id, kMockDisplayId),
                        Property(&display::Display::device_scale_factor, 2.2),
                        Property(&display::Display::rotation,
                                 display::Display::Rotation::ROTATE_270)),
                  _));
  EXPECT_CALL(mock_display_observer,
              OnDisplayMetricsChanged(
                  AllOf(Property(&display::Display::id, kMockDisplayId),
                        Property(&display::Display::device_scale_factor, 1.0),
                        Property(&display::Display::rotation,
                                 display::Display::Rotation::ROTATE_0)),
                  _));
  screen.AddObserver(&mock_display_observer);
  screen.OverridePrimaryDisplaySettings(gfx::Rect(0, 0, 1000, 1000), 2.2,
                                        display::Display::Rotation::ROTATE_270);
  screen.RestorePrimaryDisplaySettings();
}

}  // namespace test
}  // namespace chromecast