123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // Copyright 2018 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 "ash/display/overscan_calibrator.h"
- #include "ash/display/cros_display_config.h"
- #include "ash/shell.h"
- #include "ash/test/ash_test_base.h"
- #include "base/callback_helpers.h"
- #include "base/strings/stringprintf.h"
- #include "ui/display/manager/display_manager.h"
- #include "ui/display/manager/managed_display_info.h"
- namespace ash {
- class OverscanCalibratorTest : public AshTestBase {
- public:
- OverscanCalibratorTest() = default;
- ~OverscanCalibratorTest() override = default;
- OverscanCalibratorTest(OverscanCalibratorTest&) = delete;
- OverscanCalibratorTest& operator=(const OverscanCalibratorTest&) = delete;
- OverscanCalibrator* StartCalibration(const std::string& id) {
- Shell::Get()->cros_display_config()->OverscanCalibration(
- id, crosapi::mojom::DisplayConfigOperation::kStart,
- gfx::Insets() /* not used */, base::DoNothing());
- return Shell::Get()->cros_display_config()->GetOverscanCalibrator(id);
- }
- };
- TEST_F(OverscanCalibratorTest, Rotation) {
- auto* display_manager = Shell::Get()->display_manager();
- int64_t display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id();
- std::string id_str = base::StringPrintf("%" PRId64, display_id);
- auto* calibrator = StartCalibration(id_str);
- calibrator->UpdateInsets(gfx::Insets::TLBR(100, 5, 10, 15));
- calibrator->Commit();
- display::ManagedDisplayInfo info =
- display_manager->GetDisplayInfo(display_id);
- EXPECT_EQ(gfx::Insets::TLBR(100, 5, 10, 15), info.overscan_insets_in_dip());
- display_manager->SetDisplayRotation(display_id,
- display::Display::Rotation::ROTATE_90,
- display::Display::RotationSource::USER);
- EXPECT_EQ(gfx::Size(490, 780),
- display::Screen::GetScreen()->GetPrimaryDisplay().size());
- calibrator = StartCalibration(id_str);
- // The insets will be rotated and applied in the host coordinates.
- gfx::Insets insets = calibrator->insets();
- insets.set_left(105);
- insets.set_top(0);
- calibrator->UpdateInsets(insets);
- calibrator->Commit();
- info = display_manager->GetDisplayInfo(display_id);
- EXPECT_EQ(gfx::Insets::TLBR(105, 5, 10, 0), info.overscan_insets_in_dip());
- }
- } // namespace ash
|