Bug 1352773 - Take into account DefaultScaleOverride in Screen::GetDefaultCSSScaleFactor. r?kanru draft
authorMasatoshi Kimura <VYV03354@nifty.ne.jp>
Wed, 05 Apr 2017 22:11:34 +0900
changeset 557002 d3336cc056bc503ff50670b23c7c225a064956fa
parent 557001 b0885800f6916e8fc22ebd1dc29f104ab0b6f7c9
child 622996 7580d687dc10b74587859d26d492a34c9c8caa12
push id52659
push userVYV03354@nifty.ne.jp
push dateThu, 06 Apr 2017 14:35:08 +0000
reviewerskanru
bugs1352773
milestone55.0a1
Bug 1352773 - Take into account DefaultScaleOverride in Screen::GetDefaultCSSScaleFactor. r?kanru MozReview-Commit-ID: EJidy1NH3DX
widget/Screen.cpp
widget/gtk/ScreenHelperGTK.cpp
widget/windows/ScreenHelperWin.cpp
--- a/widget/Screen.cpp
+++ b/widget/Screen.cpp
@@ -131,14 +131,19 @@ Screen::GetContentsScaleFactor(double *a
 {
   *aOutScale = mContentsScale.scale;
   return NS_OK;
 }
 
 NS_IMETHODIMP
 Screen::GetDefaultCSSScaleFactor(double *aOutScale)
 {
-  *aOutScale = mDefaultCssScale.scale;
+  double scale = nsIWidget::DefaultScaleOverride();
+  if (scale > 0.0) {
+    *aOutScale = scale;
+  } else {
+    *aOutScale = mDefaultCssScale.scale;
+  }
   return NS_OK;
 }
 
 } // namespace widget
 } // namespace mozilla
--- a/widget/gtk/ScreenHelperGTK.cpp
+++ b/widget/gtk/ScreenHelperGTK.cpp
@@ -140,27 +140,27 @@ ScreenHelperGTK::GetGTKMonitorScaleFacto
   }
 #endif
   return 1;
 }
 
 static float
 GetDefaultCssScale()
 {
-  double scale = nsIWidget::DefaultScaleOverride();
-  if (scale <= 0.0) {
-    scale = ScreenHelperGTK::GetGTKMonitorScaleFactor() * gfxPlatformGtk::GetDPIScale();
-  }
-  return scale;
+  return ScreenHelperGTK::GetGTKMonitorScaleFactor() * gfxPlatformGtk::GetDPIScale();
 }
 
 float
 ScreenHelperGTK::GetSystemDefaultScale()
 {
-  return GetDefaultCssScale();
+  double scale = nsIWidget::DefaultScaleOverride();
+  if (scale <= 0.0) {
+    scale = GetDefaultCssScale();
+  }
+  return scale;
 }
 
 static uint32_t
 GetGTKPixelDepth()
 {
   GdkVisual * visual = gdk_screen_get_system_visual(gdk_screen_get_default());
   return gdk_visual_get_depth(visual);
 }
--- a/widget/windows/ScreenHelperWin.cpp
+++ b/widget/windows/ScreenHelperWin.cpp
@@ -29,20 +29,17 @@ CollectMonitors(HMONITOR aMon, HDC, LPRE
   }
   double scale = WinUtils::LogToPhysFactor(aMon);
   DesktopToLayoutDeviceScale contentsScaleFactor;
   if (WinUtils::IsPerMonitorDPIAware()) {
     contentsScaleFactor.scale = 1.0;
   } else {
     contentsScaleFactor.scale = scale;
   }
-  CSSToLayoutDeviceScale defaultCssScaleFactor(nsIWidget::DefaultScaleOverride());
-  if (defaultCssScaleFactor.scale <= 0.0) {
-    defaultCssScaleFactor.scale = scale;
-  }
+  CSSToLayoutDeviceScale defaultCssScaleFactor(scale);
   LayoutDeviceIntRect rect(info.rcMonitor.left, info.rcMonitor.top,
                            info.rcMonitor.right - info.rcMonitor.left,
                            info.rcMonitor.bottom - info.rcMonitor.top);
   LayoutDeviceIntRect availRect(info.rcWork.left, info.rcWork.top,
                                 info.rcWork.right - info.rcWork.left,
                                 info.rcWork.bottom - info.rcWork.top);
   //XXX not sure how to get this info for multiple monitors, this might be ok...
   HDC hDCScreen = ::GetDC(nullptr);