Index: cc/trees/property_tree.cc |
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc |
index bc4e7363f9f726b8d9340df9c80a951cc741e416..e5aba10a6fea9aa6298e5f255e11060921555069 100644 |
--- a/cc/trees/property_tree.cc |
+++ b/cc/trees/property_tree.cc |
@@ -847,9 +847,16 @@ void EffectTree::UpdateSurfaceContentsScale(EffectNode* effect_node) { |
transform_tree.Node(effect_node->transform_id); |
if (transform_node->in_subtree_of_page_scale_layer) |
layer_scale_factor *= transform_tree.page_scale_factor(); |
+ |
+ // Note: Copy requests currently expect transform to effect output size. |
+ bool use_transform_for_contents_scale = |
+ property_trees()->can_adjust_raster_scales || |
+ effect_node->has_copy_request; |
effect_node->surface_contents_scale = |
- MathUtil::ComputeTransform2dScaleComponents( |
- transform_tree.ToScreen(transform_node->id), layer_scale_factor); |
+ use_transform_for_contents_scale |
+ ? MathUtil::ComputeTransform2dScaleComponents( |
+ transform_tree.ToScreen(transform_node->id), layer_scale_factor) |
+ : gfx::Vector2dF(layer_scale_factor, layer_scale_factor); |
} |
EffectNode* EffectTree::FindNodeFromElementId(ElementId id) { |
@@ -1600,6 +1607,7 @@ PropertyTreesCachedData::~PropertyTreesCachedData() {} |
PropertyTrees::PropertyTrees() |
: needs_rebuild(true), |
non_root_surfaces_enabled(true), |
+ can_adjust_raster_scales(true), |
changed(false), |
full_tree_damaged(false), |
sequence_number(0), |
@@ -1630,6 +1638,7 @@ bool PropertyTrees::operator==(const PropertyTrees& other) const { |
is_main_thread == other.is_main_thread && |
is_active == other.is_active && |
non_root_surfaces_enabled == other.non_root_surfaces_enabled && |
+ can_adjust_raster_scales == other.can_adjust_raster_scales && |
sequence_number == other.sequence_number; |
} |
@@ -1647,6 +1656,7 @@ PropertyTrees& PropertyTrees::operator=(const PropertyTrees& from) { |
changed = from.changed; |
full_tree_damaged = from.full_tree_damaged; |
non_root_surfaces_enabled = from.non_root_surfaces_enabled; |
+ can_adjust_raster_scales = from.can_adjust_raster_scales; |
sequence_number = from.sequence_number; |
is_main_thread = from.is_main_thread; |
is_active = from.is_active; |
@@ -1678,6 +1688,7 @@ void PropertyTrees::clear() { |
full_tree_damaged = false; |
changed = false; |
non_root_surfaces_enabled = true; |
+ can_adjust_raster_scales = true; |
sequence_number++; |
#if DCHECK_IS_ON() |