| Index: cc/layers/layer_impl.cc
|
| diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
|
| index b0c5399d32e3a3fd06c1963eb585e671e52a6ca4..f1ce691601897f409cec7188e8bf35d03b3544a7 100644
|
| --- a/cc/layers/layer_impl.cc
|
| +++ b/cc/layers/layer_impl.cc
|
| @@ -50,6 +50,8 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, int id)
|
| masks_to_bounds_(false),
|
| contents_opaque_(false),
|
| opacity_(1.0),
|
| + blend_mode_(SkXfermode::kSrcOver_Mode),
|
| + is_root_for_isolated_group_(false),
|
| preserves_3d_(false),
|
| use_parent_backface_visibility_(false),
|
| draw_checkerboard_for_missing_tiles_(false),
|
| @@ -243,7 +245,8 @@ scoped_ptr<SharedQuadState> LayerImpl::CreateSharedQuadState() const {
|
| draw_properties_.visible_content_rect,
|
| draw_properties_.clip_rect,
|
| draw_properties_.is_clipped,
|
| - draw_properties_.opacity);
|
| + draw_properties_.opacity,
|
| + blend_mode_);
|
| return state.Pass();
|
| }
|
|
|
| @@ -509,6 +512,8 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) {
|
| layer->SetTouchEventHandlerRegion(touch_event_handler_region_);
|
| layer->SetContentsOpaque(contents_opaque_);
|
| layer->SetOpacity(opacity_);
|
| + layer->SetBlendMode(blend_mode_);
|
| + layer->SetIsRootForIsolatedGroup(is_root_for_isolated_group_);
|
| layer->SetPosition(position_);
|
| layer->SetIsContainerForFixedPositionLayers(
|
| is_container_for_fixed_position_layers_);
|
| @@ -875,6 +880,22 @@ bool LayerImpl::OpacityIsAnimatingOnImplOnly() const {
|
| return opacity_animation && opacity_animation->is_impl_only();
|
| }
|
|
|
| +void LayerImpl::SetBlendMode(SkXfermode::Mode blendMode) {
|
| + if (blend_mode_ == blendMode)
|
| + return;
|
| +
|
| + blend_mode_ = blendMode;
|
| + NoteLayerSurfacePropertyChanged();
|
| +}
|
| +
|
| +void LayerImpl::SetIsRootForIsolatedGroup(bool root) {
|
| + if (is_root_for_isolated_group_ == root)
|
| + return;
|
| +
|
| + is_root_for_isolated_group_ = root;
|
| + NoteLayerSurfacePropertyChanged();
|
| +}
|
| +
|
| void LayerImpl::SetPosition(gfx::PointF position) {
|
| if (position_ == position)
|
| return;
|
| @@ -1266,6 +1287,9 @@ CompositingReasonsAsValue(CompositingReasons reasons) {
|
| if (reasons & kCompositingReasonOutOfFlowClipping)
|
| reason_list->AppendString("Has clipping ancestor");
|
|
|
| + if (reasons & kCompositingReasonIsolateCompositedDescendants)
|
| + reason_list->AppendString("Should isolate composited dscendants");
|
| +
|
| return reason_list.PassAs<base::Value>();
|
| }
|
|
|
|
|