summaryrefslogtreecommitdiffstats
path: root/ash/display
diff options
context:
space:
mode:
authoroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-27 20:58:22 +0000
committeroshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-27 20:58:22 +0000
commiteb1de3cc0720af512b8a9d3672b5025f0e80a79f (patch)
tree8c927b1795230bcb6129bc4d1ac3d8700401eae6 /ash/display
parent9178ece4a187a1c8fbefc5ac1a340f78f761ec75 (diff)
downloadchromium_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.cc2
-rw-r--r--ash/display/display_controller_unittest.cc14
-rw-r--r--ash/display/display_manager_unittest.cc3
-rw-r--r--ash/display/root_window_transformers.cc4
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 =