summaryrefslogtreecommitdiffstats
path: root/cc/trees/property_tree.cc
diff options
context:
space:
mode:
authorjaydasika <jaydasika@chromium.org>2015-08-06 14:55:34 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-06 21:56:13 +0000
commit67d7989e6dad1905bddf00e539ee78e4abcbd606 (patch)
tree6ed4e75d8eb50bab12e8b5370ef0e5df80b912d2 /cc/trees/property_tree.cc
parent11736e158e8dca479603988a804a6d93b65c4ec7 (diff)
downloadchromium_src-67d7989e6dad1905bddf00e539ee78e4abcbd606.zip
chromium_src-67d7989e6dad1905bddf00e539ee78e4abcbd606.tar.gz
chromium_src-67d7989e6dad1905bddf00e539ee78e4abcbd606.tar.bz2
Add ClipNode when Render Surface Inherits Clip.
The differences are because property trees don't create a clip node in the case where a layer : has_render_surface=true, ancestor_clips_subtee=true and data_for_children->ancestor_clips_subtee=false. We need a clip node in this case. This patch adds a clip node for this case and computes the clip required in this case. BUG=510185 TEST=visible rects from CDP and property trees match in http://www.clicktorelease.com/code/css3dclouds with this patch. CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1252313004 Cr-Commit-Position: refs/heads/master@{#342209}
Diffstat (limited to 'cc/trees/property_tree.cc')
-rw-r--r--cc/trees/property_tree.cc10
1 files changed, 8 insertions, 2 deletions
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
index 05fa394..0b60d27 100644
--- a/cc/trees/property_tree.cc
+++ b/cc/trees/property_tree.cc
@@ -94,8 +94,10 @@ void TransformNodeData::update_post_local_transform(
transform_origin.z());
}
-ClipNodeData::ClipNodeData() : transform_id(-1), target_id(-1) {
-}
+ClipNodeData::ClipNodeData()
+ : transform_id(-1),
+ target_id(-1),
+ inherit_parent_target_space_clip(false) {}
OpacityNodeData::OpacityNodeData() : opacity(1.f), screen_space_opacity(1.f) {
}
@@ -147,6 +149,10 @@ bool TransformTree::ComputeTransformWithSourceSublayerScale(
if (!source_node->data.needs_sublayer_scale)
return success;
+ if (source_node->data.sublayer_scale.x() == 0 ||
+ source_node->data.sublayer_scale.y() == 0)
+ return false;
+
transform->Scale(1.f / source_node->data.sublayer_scale.x(),
1.f / source_node->data.sublayer_scale.y());
return success;