diff options
author | jaydasika <jaydasika@chromium.org> | 2015-08-06 14:55:34 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-06 21:56:13 +0000 |
commit | 67d7989e6dad1905bddf00e539ee78e4abcbd606 (patch) | |
tree | 6ed4e75d8eb50bab12e8b5370ef0e5df80b912d2 /cc/trees/property_tree.cc | |
parent | 11736e158e8dca479603988a804a6d93b65c4ec7 (diff) | |
download | chromium_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.cc | 10 |
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; |