Index: ui/aura/mus/client_surface_embedder.cc |
diff --git a/ui/aura/mus/client_surface_embedder.cc b/ui/aura/mus/client_surface_embedder.cc |
index 94ad333da35c65548becc266d33d6c1deaeb255f..4458206266e05b3322dc1170b2e4aed70fbab637 100644 |
--- a/ui/aura/mus/client_surface_embedder.cc |
+++ b/ui/aura/mus/client_surface_embedder.cc |
@@ -6,6 +6,7 @@ |
#include "cc/surfaces/surface_reference_factory.h" |
#include "ui/aura/window.h" |
+#include "ui/gfx/geometry/dip_util.h" |
namespace aura { |
namespace { |
@@ -65,22 +66,26 @@ void ClientSurfaceEmbedder::SetFallbackSurfaceInfo( |
void ClientSurfaceEmbedder::UpdateSizeAndGutters() { |
surface_layer_->SetBounds(gfx::Rect(window_->bounds().size())); |
- // TODO(fsamuel): Fix this for high DPI. |
- gfx::Size fallback_surface_size( |
- surface_layer_->GetFallbackSurfaceInfo() |
- ? surface_layer_->GetFallbackSurfaceInfo()->size_in_pixels() |
- : gfx::Size()); |
+ gfx::Size fallback_surface_size_in_dip; |
+ const cc::SurfaceInfo* fallback_surface_info = |
+ surface_layer_->GetFallbackSurfaceInfo(); |
+ if (fallback_surface_info) { |
+ float fallback_device_scale_factor = |
+ fallback_surface_info->device_scale_factor(); |
+ fallback_surface_size_in_dip = gfx::ConvertSizeToDIP( |
+ fallback_device_scale_factor, fallback_surface_info->size_in_pixels()); |
+ } |
gfx::Rect window_bounds(window_->bounds()); |
- if (fallback_surface_size.width() < window_bounds.width()) { |
+ if (fallback_surface_size_in_dip.width() < window_bounds.width()) { |
right_gutter_ = base::MakeUnique<ui::Layer>(ui::LAYER_SOLID_COLOR); |
// TODO(fsamuel): Use the embedded client's background color. |
right_gutter_->SetColor(SK_ColorWHITE); |
- int width = window_bounds.width() - fallback_surface_size.width(); |
+ int width = window_bounds.width() - fallback_surface_size_in_dip.width(); |
// The right gutter also includes the bottom-right corner, if necessary. |
int height = window_bounds.height() - client_area_insets_.height(); |
- right_gutter_->SetBounds( |
- gfx::Rect(client_area_insets_.left() + fallback_surface_size.width(), |
- client_area_insets_.top(), width, height)); |
+ right_gutter_->SetBounds(gfx::Rect( |
+ client_area_insets_.left() + fallback_surface_size_in_dip.width(), |
+ client_area_insets_.top(), width, height)); |
window_->layer()->Add(right_gutter_.get()); |
} else { |
right_gutter_.reset(); |
@@ -88,15 +93,15 @@ void ClientSurfaceEmbedder::UpdateSizeAndGutters() { |
// Only create a bottom gutter if a fallback surface is available. Otherwise, |
// the right gutter will fill the whole window until a fallback is available. |
- if (!fallback_surface_size.IsEmpty() && |
- fallback_surface_size.height() < window_bounds.height()) { |
+ if (!fallback_surface_size_in_dip.IsEmpty() && |
+ fallback_surface_size_in_dip.height() < window_bounds.height()) { |
bottom_gutter_ = base::MakeUnique<ui::Layer>(ui::LAYER_SOLID_COLOR); |
// TODO(fsamuel): Use the embedded client's background color. |
bottom_gutter_->SetColor(SK_ColorWHITE); |
- int width = fallback_surface_size.width(); |
- int height = window_bounds.height() - fallback_surface_size.height(); |
+ int width = fallback_surface_size_in_dip.width(); |
+ int height = window_bounds.height() - fallback_surface_size_in_dip.height(); |
bottom_gutter_->SetBounds( |
- gfx::Rect(0, fallback_surface_size.height(), width, height)); |
+ gfx::Rect(0, fallback_surface_size_in_dip.height(), width, height)); |
window_->layer()->Add(bottom_gutter_.get()); |
} else { |
bottom_gutter_.reset(); |