Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1333)

Unified Diff: cc/trees/layer_tree_host_common.cc

Issue 786123002: Update from https://crrev.com/307330 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/layer_tree_host_common.h ('k') | cc/trees/layer_tree_host_common_perftest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/layer_tree_host_common.cc
diff --git a/cc/trees/layer_tree_host_common.cc b/cc/trees/layer_tree_host_common.cc
index 6d75687201a55b640db73bb1d10ac125bdf63c5a..9a9650f520c0471828168bd4ef90810c180a66e1 100644
--- a/cc/trees/layer_tree_host_common.cc
+++ b/cc/trees/layer_tree_host_common.cc
@@ -17,6 +17,7 @@
#include "cc/trees/layer_sorter.h"
#include "cc/trees/layer_tree_impl.h"
#include "ui/gfx/geometry/rect_conversions.h"
+#include "ui/gfx/geometry/vector2d_conversions.h"
#include "ui/gfx/transform.h"
namespace cc {
@@ -1267,6 +1268,8 @@ struct SubtreeGlobals {
float device_scale_factor;
float page_scale_factor;
const LayerType* page_scale_application_layer;
+ gfx::Vector2dF elastic_overscroll;
+ const LayerType* elastic_overscroll_application_layer;
bool can_adjust_raster_scales;
bool can_render_to_separate_surface;
bool layers_always_allowed_lcd_text;
@@ -1418,6 +1421,14 @@ static LayerImplList* GetLayerListForSorting(LayerImplList* layer_list) {
return layer_list;
}
+static inline gfx::Vector2d BoundsDelta(Layer* layer) {
+ return gfx::Vector2d();
+}
+
+static inline gfx::Vector2d BoundsDelta(LayerImpl* layer) {
+ return gfx::ToCeiledVector2d(layer->bounds_delta());
+}
+
template <typename LayerType, typename GetIndexAndCountType>
static void SortLayerListContributions(
const LayerType& parent,
@@ -1806,8 +1817,6 @@ static void CalculateDrawPropertiesInternal(
layer->contents_opaque();
}
- gfx::Rect content_rect(layer->content_bounds());
-
// full_hierarchy_matrix is the matrix that transforms objects between screen
// space (except projection matrix) and the most recent RenderSurfaceImpl's
// space. next_hierarchy_matrix will only change if this layer uses a new
@@ -2044,8 +2053,22 @@ static void CalculateDrawPropertiesInternal(
if (adjust_text_aa)
layer_draw_properties.can_use_lcd_text = layer_can_use_lcd_text;
- gfx::Rect rect_in_target_space =
- MathUtil::MapEnclosingClippedRect(layer->draw_transform(), content_rect);
+ gfx::Size content_size_affected_by_delta(layer->content_bounds());
+
+ // Non-zero BoundsDelta imply the contents_scale of 1.0
+ // because BoundsDela is only set on Android where
+ // ContentScalingLayer is never used.
+ DCHECK_IMPLIES(!BoundsDelta(layer).IsZero(),
+ (layer->contents_scale_x() == 1.0 &&
+ layer->contents_scale_y() == 1.0));
+
+ // Thus we can omit contents scale in the following calculation.
+ gfx::Vector2d bounds_delta = BoundsDelta(layer);
+ content_size_affected_by_delta.Enlarge(bounds_delta.x(), bounds_delta.y());
+
+ gfx::Rect rect_in_target_space = MathUtil::MapEnclosingClippedRect(
+ layer->draw_transform(),
+ gfx::Rect(content_size_affected_by_delta));
if (LayerClipsSubtree(layer)) {
layer_or_ancestor_clips_descendants = true;
@@ -2100,6 +2123,10 @@ static void CalculateDrawPropertiesInternal(
globals.page_scale_factor);
data_for_children.in_subtree_of_page_scale_application_layer = true;
}
+ if (layer == globals.elastic_overscroll_application_layer) {
+ data_for_children.parent_matrix.Translate(globals.elastic_overscroll.x(),
+ globals.elastic_overscroll.y());
+ }
// Flatten to 2D if the layer doesn't preserve 3D.
if (layer->should_flatten_transform())
@@ -2378,6 +2405,9 @@ static void ProcessCalcDrawPropsInputs(
inputs.device_scale_factor * device_transform_scale;
globals->page_scale_factor = inputs.page_scale_factor;
globals->page_scale_application_layer = inputs.page_scale_application_layer;
+ globals->elastic_overscroll = inputs.elastic_overscroll;
+ globals->elastic_overscroll_application_layer =
+ inputs.elastic_overscroll_application_layer;
globals->can_render_to_separate_surface =
inputs.can_render_to_separate_surface;
globals->can_adjust_raster_scales = inputs.can_adjust_raster_scales;
« no previous file with comments | « cc/trees/layer_tree_host_common.h ('k') | cc/trees/layer_tree_host_common_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698