overscan_calibrator_unittest.cc 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Copyright 2018 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. #include "ash/display/overscan_calibrator.h"
  5. #include "ash/display/cros_display_config.h"
  6. #include "ash/shell.h"
  7. #include "ash/test/ash_test_base.h"
  8. #include "base/callback_helpers.h"
  9. #include "base/strings/stringprintf.h"
  10. #include "ui/display/manager/display_manager.h"
  11. #include "ui/display/manager/managed_display_info.h"
  12. namespace ash {
  13. class OverscanCalibratorTest : public AshTestBase {
  14. public:
  15. OverscanCalibratorTest() = default;
  16. ~OverscanCalibratorTest() override = default;
  17. OverscanCalibratorTest(OverscanCalibratorTest&) = delete;
  18. OverscanCalibratorTest& operator=(const OverscanCalibratorTest&) = delete;
  19. OverscanCalibrator* StartCalibration(const std::string& id) {
  20. Shell::Get()->cros_display_config()->OverscanCalibration(
  21. id, crosapi::mojom::DisplayConfigOperation::kStart,
  22. gfx::Insets() /* not used */, base::DoNothing());
  23. return Shell::Get()->cros_display_config()->GetOverscanCalibrator(id);
  24. }
  25. };
  26. TEST_F(OverscanCalibratorTest, Rotation) {
  27. auto* display_manager = Shell::Get()->display_manager();
  28. int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id();
  29. std::string id_str = base::StringPrintf("%" PRId64, display_id);
  30. auto* calibrator = StartCalibration(id_str);
  31. calibrator->UpdateInsets(gfx::Insets::TLBR(100, 5, 10, 15));
  32. calibrator->Commit();
  33. display::ManagedDisplayInfo info =
  34. display_manager->GetDisplayInfo(display_id);
  35. EXPECT_EQ(gfx::Insets::TLBR(100, 5, 10, 15), info.overscan_insets_in_dip());
  36. display_manager->SetDisplayRotation(display_id,
  37. display::Display::Rotation::ROTATE_90,
  38. display::Display::RotationSource::USER);
  39. EXPECT_EQ(gfx::Size(490, 780),
  40. display::Screen::GetScreen()->GetPrimaryDisplay().size());
  41. calibrator = StartCalibration(id_str);
  42. // The insets will be rotated and applied in the host coordinates.
  43. gfx::Insets insets = calibrator->insets();
  44. insets.set_left(105);
  45. insets.set_top(0);
  46. calibrator->UpdateInsets(insets);
  47. calibrator->Commit();
  48. info = display_manager->GetDisplayInfo(display_id);
  49. EXPECT_EQ(gfx::Insets::TLBR(105, 5, 10, 0), info.overscan_insets_in_dip());
  50. }
  51. } // namespace ash