diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-27 20:58:22 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-27 20:58:22 +0000 |
commit | eb1de3cc0720af512b8a9d3672b5025f0e80a79f (patch) | |
tree | 8c927b1795230bcb6129bc4d1ac3d8700401eae6 /ash/display | |
parent | 9178ece4a187a1c8fbefc5ac1a340f78f761ec75 (diff) | |
download | chromium_src-eb1de3cc0720af512b8a9d3672b5025f0e80a79f.zip chromium_src-eb1de3cc0720af512b8a9d3672b5025f0e80a79f.tar.gz chromium_src-eb1de3cc0720af512b8a9d3672b5025f0e80a79f.tar.bz2 |
Create RootWindowTransformer after root window's bounds and scale factor are updated.
Added SupportsHostWindowResize and updated tests that fails on win8.
BUG=253690
TEST=covered by test
Review URL: https://chromiumcodereview.appspot.com/17704003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@209000 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash/display')
-rw-r--r-- | ash/display/display_controller.cc | 2 | ||||
-rw-r--r-- | ash/display/display_controller_unittest.cc | 14 | ||||
-rw-r--r-- | ash/display/display_manager_unittest.cc | 3 | ||||
-rw-r--r-- | ash/display/root_window_transformers.cc | 4 |
4 files changed, 22 insertions, 1 deletions
diff --git a/ash/display/display_controller.cc b/ash/display/display_controller.cc index 84bf827..241d841 100644 --- a/ash/display/display_controller.cc +++ b/ash/display/display_controller.cc @@ -807,8 +807,8 @@ void DisplayController::OnDisplayBoundsChanged(const gfx::Display& display) { UpdateDisplayBoundsForLayout(); aura::RootWindow* root = root_windows_[display.id()]; - SetDisplayPropertiesOnHostWindow(root, display); root->SetHostBounds(display_info.bounds_in_pixel()); + SetDisplayPropertiesOnHostWindow(root, display); } void DisplayController::OnDisplayAdded(const gfx::Display& display) { diff --git a/ash/display/display_controller_unittest.cc b/ash/display/display_controller_unittest.cc index 06168da..374c025 100644 --- a/ash/display/display_controller_unittest.cc +++ b/ash/display/display_controller_unittest.cc @@ -753,6 +753,20 @@ TEST_F(DisplayControllerTest, OverscanInsets) { generator.MoveMouseToInHost(30, 20); EXPECT_EQ("30,20", event_handler.GetLocationAndReset()); + + // Make sure the root window transformer uses correct scale + // factor when swapping display. Test crbug.com/253690. + UpdateDisplay("400x300*2,600x400/o"); + root_windows = Shell::GetAllRootWindows(); + gfx::Point point; + Shell::GetAllRootWindows()[1]->GetRootTransform().TransformPoint(point); + EXPECT_EQ("15,10", point.ToString()); + + display_controller->SwapPrimaryDisplay(); + point.SetPoint(0, 0); + Shell::GetAllRootWindows()[1]->GetRootTransform().TransformPoint(point); + EXPECT_EQ("15,10", point.ToString()); + Shell::GetInstance()->RemovePreTargetHandler(&event_handler); } diff --git a/ash/display/display_manager_unittest.cc b/ash/display/display_manager_unittest.cc index f1fc5de..bfc87e4 100644 --- a/ash/display/display_manager_unittest.cc +++ b/ash/display/display_manager_unittest.cc @@ -374,6 +374,9 @@ TEST_F(DisplayManagerTest, ZeroOverscanInsets) { } TEST_F(DisplayManagerTest, TestDeviceScaleOnlyChange) { + if (!SupportsHostWindowResize()) + return; + UpdateDisplay("1000x600"); EXPECT_EQ(1, Shell::GetPrimaryRootWindow()->compositor()->device_scale_factor()); diff --git a/ash/display/root_window_transformers.cc b/ash/display/root_window_transformers.cc index 6142839..a698fa4 100644 --- a/ash/display/root_window_transformers.cc +++ b/ash/display/root_window_transformers.cc @@ -44,6 +44,10 @@ void RoundNearZero(gfx::Transform* transform) { } } +// TODO(oshima): Transformers should be able to adjust itself +// when the device scale factor is changed, instead of +// precalculating the transform using fixed value. + gfx::Transform CreateRotationTransform(aura::RootWindow* root_window, const gfx::Display& display) { DisplayInfo info = |