| Index: cc/layers/layer.cc
|
| diff --git a/cc/layers/layer.cc b/cc/layers/layer.cc
|
| index 1b7bb3fc6e15582ba8ea2f1dd6b316ba881c41f7..43a0335a889f2aadd0040ff26c87958adfd0e161 100644
|
| --- a/cc/layers/layer.cc
|
| +++ b/cc/layers/layer.cc
|
| @@ -121,6 +121,16 @@ void Layer::SetNeedsFullTreeSync() {
|
| layer_tree_host_->SetNeedsFullTreeSync();
|
| }
|
|
|
| +bool Layer::IsPropertyChangeAllowed() const {
|
| + if (!layer_tree_host_)
|
| + return true;
|
| +
|
| + if (!layer_tree_host_->settings().strict_layer_property_change_checking)
|
| + return true;
|
| +
|
| + return !layer_tree_host_->in_paint_layer_contents();
|
| +}
|
| +
|
| gfx::Rect Layer::LayerRectToContentRect(const gfx::RectF& layer_rect) const {
|
| gfx::RectF content_rect =
|
| gfx::ScaleRect(layer_rect, contents_scale_x(), contents_scale_y());
|
| @@ -177,6 +187,7 @@ void Layer::AddChild(scoped_refptr<Layer> child) {
|
| }
|
|
|
| void Layer::InsertChild(scoped_refptr<Layer> child, size_t index) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| child->RemoveFromParent();
|
| child->SetParent(this);
|
| child->stacking_order_changed_ = true;
|
| @@ -187,6 +198,7 @@ void Layer::InsertChild(scoped_refptr<Layer> child, size_t index) {
|
| }
|
|
|
| void Layer::RemoveFromParent() {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (parent_)
|
| parent_->RemoveChildOrDependent(this);
|
| }
|
| @@ -221,6 +233,7 @@ void Layer::RemoveChildOrDependent(Layer* child) {
|
| void Layer::ReplaceChild(Layer* reference, scoped_refptr<Layer> new_layer) {
|
| DCHECK(reference);
|
| DCHECK_EQ(reference->parent(), this);
|
| + DCHECK(IsPropertyChangeAllowed());
|
|
|
| if (reference == new_layer)
|
| return;
|
| @@ -248,6 +261,7 @@ int Layer::IndexOfChild(const Layer* reference) {
|
| }
|
|
|
| void Layer::SetBounds(gfx::Size size) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (bounds() == size)
|
| return;
|
|
|
| @@ -269,6 +283,7 @@ Layer* Layer::RootLayer() {
|
| }
|
|
|
| void Layer::RemoveAllChildren() {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| while (children_.size()) {
|
| Layer* layer = children_[0].get();
|
| DCHECK_EQ(this, layer->parent());
|
| @@ -277,6 +292,7 @@ void Layer::RemoveAllChildren() {
|
| }
|
|
|
| void Layer::SetChildren(const LayerList& children) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (children == children_)
|
| return;
|
|
|
| @@ -286,6 +302,7 @@ void Layer::SetChildren(const LayerList& children) {
|
| }
|
|
|
| void Layer::SetAnchorPoint(gfx::PointF anchor_point) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (anchor_point_ == anchor_point)
|
| return;
|
| anchor_point_ = anchor_point;
|
| @@ -293,6 +310,7 @@ void Layer::SetAnchorPoint(gfx::PointF anchor_point) {
|
| }
|
|
|
| void Layer::SetAnchorPointZ(float anchor_point_z) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (anchor_point_z_ == anchor_point_z)
|
| return;
|
| anchor_point_z_ = anchor_point_z;
|
| @@ -300,6 +318,7 @@ void Layer::SetAnchorPointZ(float anchor_point_z) {
|
| }
|
|
|
| void Layer::SetBackgroundColor(SkColor background_color) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (background_color_ == background_color)
|
| return;
|
| background_color_ = background_color;
|
| @@ -318,6 +337,7 @@ void Layer::CalculateContentsScale(
|
| }
|
|
|
| void Layer::SetMasksToBounds(bool masks_to_bounds) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (masks_to_bounds_ == masks_to_bounds)
|
| return;
|
| masks_to_bounds_ = masks_to_bounds;
|
| @@ -325,6 +345,7 @@ void Layer::SetMasksToBounds(bool masks_to_bounds) {
|
| }
|
|
|
| void Layer::SetMaskLayer(Layer* mask_layer) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (mask_layer_ == mask_layer)
|
| return;
|
| if (mask_layer_) {
|
| @@ -342,6 +363,7 @@ void Layer::SetMaskLayer(Layer* mask_layer) {
|
| }
|
|
|
| void Layer::SetReplicaLayer(Layer* layer) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (replica_layer_ == layer)
|
| return;
|
| if (replica_layer_) {
|
| @@ -358,6 +380,7 @@ void Layer::SetReplicaLayer(Layer* layer) {
|
| }
|
|
|
| void Layer::SetFilters(const WebKit::WebFilterOperations& filters) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (filters_ == filters)
|
| return;
|
| DCHECK(!filter_);
|
| @@ -368,6 +391,7 @@ void Layer::SetFilters(const WebKit::WebFilterOperations& filters) {
|
| }
|
|
|
| void Layer::SetFilter(const skia::RefPtr<SkImageFilter>& filter) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (filter_.get() == filter.get())
|
| return;
|
| DCHECK(filters_.isEmpty());
|
| @@ -378,6 +402,7 @@ void Layer::SetFilter(const skia::RefPtr<SkImageFilter>& filter) {
|
| }
|
|
|
| void Layer::SetBackgroundFilters(const WebKit::WebFilterOperations& filters) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (background_filters_ == filters)
|
| return;
|
| background_filters_ = filters;
|
| @@ -387,6 +412,7 @@ void Layer::SetBackgroundFilters(const WebKit::WebFilterOperations& filters) {
|
| }
|
|
|
| void Layer::SetOpacity(float opacity) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (opacity_ == opacity)
|
| return;
|
| opacity_ = opacity;
|
| @@ -402,6 +428,7 @@ bool Layer::OpacityCanAnimateOnImplThread() const {
|
| }
|
|
|
| void Layer::SetContentsOpaque(bool opaque) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (contents_opaque_ == opaque)
|
| return;
|
| contents_opaque_ = opaque;
|
| @@ -409,6 +436,7 @@ void Layer::SetContentsOpaque(bool opaque) {
|
| }
|
|
|
| void Layer::SetPosition(gfx::PointF position) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (position_ == position)
|
| return;
|
| position_ = position;
|
| @@ -424,6 +452,7 @@ bool Layer::IsContainerForFixedPositionLayers() const {
|
| }
|
|
|
| void Layer::SetSublayerTransform(const gfx::Transform& sublayer_transform) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (sublayer_transform_ == sublayer_transform)
|
| return;
|
| sublayer_transform_ = sublayer_transform;
|
| @@ -431,6 +460,7 @@ void Layer::SetSublayerTransform(const gfx::Transform& sublayer_transform) {
|
| }
|
|
|
| void Layer::SetTransform(const gfx::Transform& transform) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (transform_ == transform)
|
| return;
|
| transform_ = transform;
|
| @@ -442,6 +472,7 @@ bool Layer::TransformIsAnimating() const {
|
| }
|
|
|
| void Layer::SetScrollOffset(gfx::Vector2d scroll_offset) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (scroll_offset_ == scroll_offset)
|
| return;
|
| scroll_offset_ = scroll_offset;
|
| @@ -451,6 +482,7 @@ void Layer::SetScrollOffset(gfx::Vector2d scroll_offset) {
|
| }
|
|
|
| void Layer::SetMaxScrollOffset(gfx::Vector2d max_scroll_offset) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (max_scroll_offset_ == max_scroll_offset)
|
| return;
|
| max_scroll_offset_ = max_scroll_offset;
|
| @@ -458,6 +490,7 @@ void Layer::SetMaxScrollOffset(gfx::Vector2d max_scroll_offset) {
|
| }
|
|
|
| void Layer::SetScrollable(bool scrollable) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (scrollable_ == scrollable)
|
| return;
|
| scrollable_ = scrollable;
|
| @@ -465,6 +498,7 @@ void Layer::SetScrollable(bool scrollable) {
|
| }
|
|
|
| void Layer::SetShouldScrollOnMainThread(bool should_scroll_on_main_thread) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (should_scroll_on_main_thread_ == should_scroll_on_main_thread)
|
| return;
|
| should_scroll_on_main_thread_ = should_scroll_on_main_thread;
|
| @@ -472,6 +506,7 @@ void Layer::SetShouldScrollOnMainThread(bool should_scroll_on_main_thread) {
|
| }
|
|
|
| void Layer::SetHaveWheelEventHandlers(bool have_wheel_event_handlers) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (have_wheel_event_handlers_ == have_wheel_event_handlers)
|
| return;
|
| have_wheel_event_handlers_ = have_wheel_event_handlers;
|
| @@ -479,6 +514,7 @@ void Layer::SetHaveWheelEventHandlers(bool have_wheel_event_handlers) {
|
| }
|
|
|
| void Layer::SetNonFastScrollableRegion(const Region& region) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (non_fast_scrollable_region_ == region)
|
| return;
|
| non_fast_scrollable_region_ = region;
|
| @@ -486,12 +522,14 @@ void Layer::SetNonFastScrollableRegion(const Region& region) {
|
| }
|
|
|
| void Layer::SetTouchEventHandlerRegion(const Region& region) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (touch_event_handler_region_ == region)
|
| return;
|
| touch_event_handler_region_ = region;
|
| }
|
|
|
| void Layer::SetDrawCheckerboardForMissingTiles(bool checkerboard) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (draw_checkerboard_for_missing_tiles_ == checkerboard)
|
| return;
|
| draw_checkerboard_for_missing_tiles_ = checkerboard;
|
| @@ -499,6 +537,7 @@ void Layer::SetDrawCheckerboardForMissingTiles(bool checkerboard) {
|
| }
|
|
|
| void Layer::SetForceRenderSurface(bool force) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (force_render_surface_ == force)
|
| return;
|
| force_render_surface_ = force;
|
| @@ -506,6 +545,7 @@ void Layer::SetForceRenderSurface(bool force) {
|
| }
|
|
|
| void Layer::SetImplTransform(const gfx::Transform& transform) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (impl_transform_ == transform)
|
| return;
|
| impl_transform_ = transform;
|
| @@ -513,6 +553,7 @@ void Layer::SetImplTransform(const gfx::Transform& transform) {
|
| }
|
|
|
| void Layer::SetDoubleSided(bool double_sided) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (double_sided_ == double_sided)
|
| return;
|
| double_sided_ = double_sided;
|
| @@ -520,6 +561,7 @@ void Layer::SetDoubleSided(bool double_sided) {
|
| }
|
|
|
| void Layer::SetIsDrawable(bool is_drawable) {
|
| + DCHECK(IsPropertyChangeAllowed());
|
| if (is_drawable_ == is_drawable)
|
| return;
|
|
|
| @@ -561,17 +603,18 @@ void Layer::SetIsContainerForFixedPositionLayers(bool container) {
|
| }
|
|
|
| void Layer::SetPositionConstraint(const LayerPositionConstraint& constraint) {
|
| - if (position_constraint_ == constraint)
|
| - return;
|
| - position_constraint_ = constraint;
|
| - SetNeedsCommit();
|
| + DCHECK(IsPropertyChangeAllowed());
|
| + if (position_constraint_ == constraint)
|
| + return;
|
| + position_constraint_ = constraint;
|
| + SetNeedsCommit();
|
| }
|
|
|
| void Layer::PushPropertiesTo(LayerImpl* layer) {
|
| layer->SetAnchorPoint(anchor_point_);
|
| layer->SetAnchorPointZ(anchor_point_z_);
|
| layer->SetBackgroundColor(background_color_);
|
| - layer->SetBounds(bounds_);
|
| + layer->SetBounds(paint_properties_.bounds);
|
| layer->SetContentBounds(content_bounds());
|
| layer->SetContentsScale(contents_scale_x(), contents_scale_y());
|
| layer->SetDebugName(debug_name_);
|
| @@ -650,6 +693,12 @@ bool Layer::DrawsContent() const {
|
| return is_drawable_;
|
| }
|
|
|
| +void Layer::SavePaintProperties() {
|
| + // TODO(reveman): Save all layer properties that we depend on not
|
| + // changing until PushProperties() has been called. crbug.com/231016
|
| + paint_properties_.bounds = bounds_;
|
| +}
|
| +
|
| bool Layer::NeedMoreUpdates() {
|
| return false;
|
| }
|
|
|