summaryrefslogtreecommitdiffstats
path: root/ash
diff options
context:
space:
mode:
Diffstat (limited to 'ash')
-rw-r--r--ash/monitor/multi_monitor_manager.cc4
-rw-r--r--ash/monitor/multi_monitor_manager_unittest.cc15
2 files changed, 18 insertions, 1 deletions
diff --git a/ash/monitor/multi_monitor_manager.cc b/ash/monitor/multi_monitor_manager.cc
index 1b97b02..8538eb7 100644
--- a/ash/monitor/multi_monitor_manager.cc
+++ b/ash/monitor/multi_monitor_manager.cc
@@ -79,7 +79,9 @@ void MultiMonitorManager::OnNativeMonitorsChanged(
for (size_t i = 0; i < min; ++i) {
gfx::Display& current_display = displays_[i];
const gfx::Display& new_display = new_displays[i];
- if (current_display.bounds_in_pixel() != new_display.bounds_in_pixel()) {
+ if (current_display.bounds_in_pixel() != new_display.bounds_in_pixel() ||
+ current_display.device_scale_factor() !=
+ new_display.device_scale_factor()) {
current_display.SetScaleAndBounds(new_display.device_scale_factor(),
new_display.bounds_in_pixel());
NotifyBoundsChanged(current_display);
diff --git a/ash/monitor/multi_monitor_manager_unittest.cc b/ash/monitor/multi_monitor_manager_unittest.cc
index 7850f77..ac44dc8 100644
--- a/ash/monitor/multi_monitor_manager_unittest.cc
+++ b/ash/monitor/multi_monitor_manager_unittest.cc
@@ -231,5 +231,20 @@ TEST_F(MultiMonitorManagerTest, EmulatorTest) {
reset();
}
+TEST_F(MultiMonitorManagerTest, TestDeviceScaleOnlyChange) {
+ aura::MonitorManager::set_use_fullscreen_host_window(true);
+ UpdateMonitor("0+0-1000x600");
+ EXPECT_EQ(1,
+ Shell::GetPrimaryRootWindow()->compositor()->device_scale_factor());
+ EXPECT_EQ("1000x600",
+ Shell::GetPrimaryRootWindow()->bounds().size().ToString());
+ UpdateMonitor("0+0-1000x600*2");
+ EXPECT_EQ(2,
+ Shell::GetPrimaryRootWindow()->compositor()->device_scale_factor());
+ EXPECT_EQ("500x300",
+ Shell::GetPrimaryRootWindow()->bounds().size().ToString());
+ aura::MonitorManager::set_use_fullscreen_host_window(false);
+}
+
} // namespace test
} // namespace ash