Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index 6d8aaa614416f7b54b4c6a1c3fb1b7ee04d38a5d..a5c066591f605c54cccb9d5c58fac159f4c0e88e 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -89,6 +89,7 @@ |
#include "gpu/command_buffer/client/gles2_interface.h" |
#include "ui/gfx/geometry/point_conversions.h" |
#include "ui/gfx/geometry/rect_conversions.h" |
+#include "ui/gfx/geometry/safe_integer_conversions.h" |
#include "ui/gfx/geometry/scroll_offset.h" |
#include "ui/gfx/geometry/size_conversions.h" |
#include "ui/gfx/geometry/vector2d_conversions.h" |
@@ -2408,7 +2409,7 @@ void LayerTreeHostImpl::SetViewportSize(const gfx::Size& device_viewport_size) { |
active_tree_->set_needs_update_draw_properties(); |
} |
-const gfx::Rect LayerTreeHostImpl::ViewportRectForTilePriority() const { |
+gfx::Rect LayerTreeHostImpl::ViewportRectForTilePriority() const { |
if (viewport_rect_for_tile_priority_.IsEmpty()) |
return DeviceViewport(); |
@@ -2416,9 +2417,37 @@ const gfx::Rect LayerTreeHostImpl::ViewportRectForTilePriority() const { |
} |
gfx::Size LayerTreeHostImpl::DrawViewportSize() const { |
+ // XXX DIE DIE DIE DIE |
enne (OOO)
2016/06/28 18:39:02
https://www.youtube.com/watch?v=UrHVBfSaPtA
|
return DeviceViewport().size(); |
} |
+gfx::Size LayerTreeHostImpl::GetStableScreenSize( |
enne (OOO)
2016/06/28 18:39:01
How does this relate to gfx::DeviceDisplayInfo::Ge
|
+ const LayerTreeImpl* tree) const { |
+ // TODO(crbug.com/622885): Get a stable screen size for any platform from |
+ // the embedder. |
+ |
+ // This size does not include an external viewport size. |
+ int width = device_viewport_size_.width(); |
+ int height = device_viewport_size_.height(); |
+ if (tree->top_controls_shrink_blink_size()) |
+ height += gfx::ToCeiledInt(tree->top_controls_height() * |
+ tree->device_scale_factor()); |
+ |
+ if (external_viewport_.IsEmpty()) |
+ return gfx::Size(width, height); |
+ |
+ int external_width = external_viewport_.width(); |
+ int external_height = external_viewport_.height(); |
+ if (tree->top_controls_shrink_blink_size()) |
+ external_height += gfx::ToCeiledInt(tree->top_controls_height() * |
+ tree->device_scale_factor()); |
+ |
+ // Take the smaller of the two. An external viewport may be much larger than |
+ // what will actually be on screen, or much smaller. |
+ return gfx::Size(std::min(width, external_width), |
+ std::min(height, external_height)); |
+} |
+ |
gfx::Rect LayerTreeHostImpl::DeviceViewport() const { |
if (external_viewport_.IsEmpty()) |
return gfx::Rect(device_viewport_size_); |