Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index 040f73add67bba73e3defc7e8ac54a1426f81f57..a12963f2ac14849b375456a8497a7ee60e72182d 100644 |
--- a/cc/layers/layer_impl.cc |
+++ b/cc/layers/layer_impl.cc |
@@ -82,7 +82,8 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, int id) |
element_id_(0), |
mutable_properties_(MutableProperty::kNone), |
debug_info_(nullptr), |
- scrolls_drawn_descendant_(false) { |
+ scrolls_drawn_descendant_(false), |
+ has_will_change_transform_hint_(false) { |
DCHECK_GT(layer_id_, 0); |
DCHECK(layer_tree_impl_); |
@@ -145,6 +146,13 @@ void LayerImpl::ClearLinksToOtherLayers() { |
replica_layer_ = nullptr; |
} |
+void LayerImpl::SetHasWillChangeTransformHint(bool has_will_change) { |
+ if (has_will_change_transform_hint_ == has_will_change) |
+ return; |
+ has_will_change_transform_hint_ = has_will_change; |
+ SetNeedsPushProperties(); |
+} |
+ |
void LayerImpl::SetDebugInfo( |
std::unique_ptr<base::trace_event::ConvertableToTraceFormat> debug_info) { |
owned_debug_info_ = std::move(debug_info); |
@@ -492,6 +500,8 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) { |
if (owned_debug_info_) |
layer->SetDebugInfo(std::move(owned_debug_info_)); |
+ layer->SetHasWillChangeTransformHint(has_will_change_transform_hint()); |
+ |
// Reset any state that should be cleared for the next update. |
layer_property_changed_ = false; |
update_rect_ = gfx::Rect(); |
@@ -1258,6 +1268,9 @@ void LayerImpl::AsValueInto(base::trace_event::TracedValue* state) const { |
state->SetBoolean("has_animation_bounds", |
layer_tree_impl_->HasAnimationThatInflatesBounds(this)); |
+ state->SetBoolean("has_will_change_transform_hint", |
+ has_will_change_transform_hint()); |
+ |
gfx::BoxF box; |
if (LayerUtils::GetAnimationBounds(*this, &box)) |
MathUtil::AddToTracedValue("animation_bounds", box, state); |