Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / ui / gfx / win / dpi.cc
index 88766ce..6ea9ba8 100644 (file)
@@ -5,12 +5,8 @@
 #include "ui/gfx/win/dpi.h"
 
 #include <windows.h>
-#include "base/command_line.h"
 #include "base/win/scoped_hdc.h"
-#include "base/win/windows_version.h"
-#include "base/win/registry.h"
 #include "ui/gfx/display.h"
-#include "ui/gfx/switches.h"
 #include "ui/gfx/point_conversions.h"
 #include "ui/gfx/rect_conversions.h"
 #include "ui/gfx/size_conversions.h"
@@ -22,90 +18,17 @@ int kDefaultDPIY = 96;
 
 bool force_highdpi_for_testing = false;
 
-BOOL IsProcessDPIAwareWrapper() {
-  typedef BOOL(WINAPI *IsProcessDPIAwarePtr)(VOID);
-  IsProcessDPIAwarePtr is_process_dpi_aware_func =
-      reinterpret_cast<IsProcessDPIAwarePtr>(
-          GetProcAddress(GetModuleHandleA("user32.dll"), "IsProcessDPIAware"));
-  if (is_process_dpi_aware_func)
-    return is_process_dpi_aware_func();
-  return FALSE;
-}
-
 float g_device_scale_factor = 0.0f;
 
 float GetUnforcedDeviceScaleFactor() {
   // If the global device scale factor is initialized use it. This is to ensure
-  // we use the same scale factor across all callsites. We don't use the
-  // GetDeviceScaleFactor function here because it fires a DCHECK if the
-  // g_device_scale_factor global is 0.
+  // we use the same scale factor across all callsites.
   if (g_device_scale_factor)
     return g_device_scale_factor;
   return static_cast<float>(gfx::GetDPI().width()) /
       static_cast<float>(kDefaultDPIX);
 }
 
-// Duplicated from Win8.1 SDK ShellScalingApi.h
-typedef enum PROCESS_DPI_AWARENESS {
-    PROCESS_DPI_UNAWARE = 0,
-    PROCESS_SYSTEM_DPI_AWARE = 1,
-    PROCESS_PER_MONITOR_DPI_AWARE = 2
-} PROCESS_DPI_AWARENESS;
-
-typedef enum MONITOR_DPI_TYPE {
-    MDT_EFFECTIVE_DPI = 0,
-    MDT_ANGULAR_DPI = 1,
-    MDT_RAW_DPI = 2,
-    MDT_DEFAULT = MDT_EFFECTIVE_DPI
-} MONITOR_DPI_TYPE;
-
-// Win8.1 supports monitor-specific DPI scaling.
-bool SetProcessDpiAwarenessWrapper(PROCESS_DPI_AWARENESS value) {
-  typedef BOOL(WINAPI *SetProcessDpiAwarenessPtr)(PROCESS_DPI_AWARENESS);
-  SetProcessDpiAwarenessPtr set_process_dpi_awareness_func =
-      reinterpret_cast<SetProcessDpiAwarenessPtr>(
-          GetProcAddress(GetModuleHandleA("user32.dll"),
-                          "SetProcessDpiAwarenessInternal"));
-  if (set_process_dpi_awareness_func) {
-    HRESULT hr = set_process_dpi_awareness_func(value);
-    if (SUCCEEDED(hr)) {
-      VLOG(1) << "SetProcessDpiAwareness succeeded.";
-      return true;
-    } else if (hr == E_ACCESSDENIED) {
-      LOG(ERROR) << "Access denied error from SetProcessDpiAwareness. "
-          "Function called twice, or manifest was used.";
-    }
-  }
-  return false;
-}
-
-// This function works for Windows Vista through Win8. Win8.1 must use
-// SetProcessDpiAwareness[Wrapper]
-BOOL SetProcessDPIAwareWrapper() {
-  typedef BOOL(WINAPI *SetProcessDPIAwarePtr)(VOID);
-  SetProcessDPIAwarePtr set_process_dpi_aware_func =
-      reinterpret_cast<SetProcessDPIAwarePtr>(
-      GetProcAddress(GetModuleHandleA("user32.dll"),
-                      "SetProcessDPIAware"));
-  return set_process_dpi_aware_func &&
-    set_process_dpi_aware_func();
-}
-
-DWORD ReadRegistryValue(HKEY root,
-                        const wchar_t* base_key,
-                        const wchar_t* value_name,
-                        DWORD default_value) {
-  base::win::RegKey reg_key(HKEY_CURRENT_USER,
-                            base_key,
-                            KEY_QUERY_VALUE);
-  DWORD value;
-  if (reg_key.Valid() &&
-      reg_key.ReadValueDW(value_name, &value) == ERROR_SUCCESS) {
-    return value;
-  }
-  return default_value;
-}
-
 }  // namespace
 
 namespace gfx {
@@ -133,63 +56,25 @@ Size GetDPI() {
 }
 
 float GetDPIScale() {
-  if (IsHighDPIEnabled()) {
-    if (gfx::Display::HasForceDeviceScaleFactor())
-      return gfx::Display::GetForcedDeviceScaleFactor();
-    float dpi_scale = GetUnforcedDeviceScaleFactor();
-    if (dpi_scale <= 1.25) {
-      // Force 125% and below to 100% scale. We do this to maintain previous
-      // (non-DPI-aware) behavior where only the font size was boosted.
-      dpi_scale = 1.0;
-    }
-    return dpi_scale;
-  }
-  return 1.0;
-}
-
-void ForceHighDPISupportForTesting(float scale) {
-  g_device_scale_factor = scale;
-}
-
-bool IsHighDPIEnabled() {
-  // Flag stored in HKEY_CURRENT_USER\SOFTWARE\\Google\\Chrome\\Profile,
-  // under the DWORD value high-dpi-support.
-  // Default is disabled.
-  static DWORD value = ReadRegistryValue(
-      HKEY_CURRENT_USER, gfx::win::kRegistryProfilePath,
-      gfx::win::kHighDPISupportW, TRUE);
-  return value != 0;
-}
-
-bool IsInHighDPIMode() {
-  return GetDPIScale() > 1.0;
-}
-
-void EnableHighDPISupport() {
-  if (IsHighDPIEnabled() &&
-      !SetProcessDpiAwarenessWrapper(PROCESS_SYSTEM_DPI_AWARE)) {
-    SetProcessDPIAwareWrapper();
+  if (gfx::Display::HasForceDeviceScaleFactor())
+    return gfx::Display::GetForcedDeviceScaleFactor();
+  float dpi_scale = GetUnforcedDeviceScaleFactor();
+  if (dpi_scale <= 1.25) {
+    // Force 125% and below to 100% scale. We do this to maintain previous
+    // (non-DPI-aware) behavior where only the font size was boosted.
+    dpi_scale = 1.0;
   }
+  return dpi_scale;
 }
 
 namespace win {
 
-GFX_EXPORT const wchar_t kRegistryProfilePath[] =
-    L"Software\\Google\\Chrome\\Profile";
-GFX_EXPORT const wchar_t kHighDPISupportW[] = L"high-dpi-support";
-
-float GetDeviceScaleFactor() {
-  DCHECK_NE(0.0f, g_device_scale_factor);
-  return g_device_scale_factor;
-}
-
 Point ScreenToDIPPoint(const Point& pixel_point) {
-  return ToFlooredPoint(ScalePoint(pixel_point,
-                                   1.0f / GetDeviceScaleFactor()));
+  return ToFlooredPoint(ScalePoint(pixel_point, 1.0f / GetDPIScale()));
 }
 
 Point DIPToScreenPoint(const Point& dip_point) {
-  return ToFlooredPoint(ScalePoint(dip_point, GetDeviceScaleFactor()));
+  return ToFlooredPoint(ScalePoint(dip_point, GetDPIScale()));
 }
 
 Rect ScreenToDIPRect(const Rect& pixel_bounds) {
@@ -210,22 +95,16 @@ Rect DIPToScreenRect(const Rect& dip_bounds) {
 
 Size ScreenToDIPSize(const Size& size_in_pixels) {
   // Always ceil sizes. Otherwise we may be leaving off part of the bounds.
-  return ToCeiledSize(
-      ScaleSize(size_in_pixels, 1.0f / GetDeviceScaleFactor()));
+  return ToCeiledSize(ScaleSize(size_in_pixels, 1.0f / GetDPIScale()));
 }
 
 Size DIPToScreenSize(const Size& dip_size) {
   // Always ceil sizes. Otherwise we may be leaving off part of the bounds.
-  return ToCeiledSize(ScaleSize(dip_size, GetDeviceScaleFactor()));
+  return ToCeiledSize(ScaleSize(dip_size, GetDPIScale()));
 }
 
 int GetSystemMetricsInDIP(int metric) {
-  return static_cast<int>(GetSystemMetrics(metric) /
-      GetDeviceScaleFactor() + 0.5);
-}
-
-bool IsDeviceScaleFactorSet() {
-  return g_device_scale_factor != 0.0f;
+  return static_cast<int>(GetSystemMetrics(metric) / GetDPIScale() + 0.5);
 }
 
 }  // namespace win