OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 2189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2200 // might impl animate). | 2200 // might impl animate). |
2201 // | 2201 // |
2202 // mutable properties: | 2202 // mutable properties: |
2203 // Only if you have a compositor proxy. | 2203 // Only if you have a compositor proxy. |
2204 // | 2204 // |
2205 // The element id for the scroll layers is assigned when they're constructed, | 2205 // The element id for the scroll layers is assigned when they're constructed, |
2206 // since this is unconditional. However, the element id for the primary layer as | 2206 // since this is unconditional. However, the element id for the primary layer as |
2207 // well as the mutable properties for all layers may change according to the | 2207 // well as the mutable properties for all layers may change according to the |
2208 // rules above so we update those values here. | 2208 // rules above so we update those values here. |
2209 void CompositedLayerMapping::UpdateElementIdAndCompositorMutableProperties() { | 2209 void CompositedLayerMapping::UpdateElementIdAndCompositorMutableProperties() { |
2210 int element_id = 0; | |
2211 uint32_t primary_mutable_properties = CompositorMutableProperty::kNone; | 2210 uint32_t primary_mutable_properties = CompositorMutableProperty::kNone; |
2212 uint32_t scroll_mutable_properties = CompositorMutableProperty::kNone; | 2211 uint32_t scroll_mutable_properties = CompositorMutableProperty::kNone; |
2213 | 2212 |
2214 Node* owning_node = owning_layer_.GetLayoutObject().GetNode(); | 2213 Node* owning_node = owning_layer_.GetLayoutObject().GetNode(); |
2215 Element* animating_element = nullptr; | 2214 Element* animating_element = nullptr; |
2216 const ComputedStyle* animating_style = nullptr; | 2215 const ComputedStyle* animating_style = nullptr; |
2217 if (owning_node) { | 2216 if (owning_node) { |
2218 Document& document = owning_node->GetDocument(); | 2217 Document& document = owning_node->GetDocument(); |
2219 Element* scrolling_element = document.ScrollingElementNoLayout(); | 2218 Element* scrolling_element = document.ScrollingElementNoLayout(); |
2220 if (owning_node->IsElementNode() && | 2219 if (owning_node->IsElementNode() && |
2221 (!RuntimeEnabledFeatures::rootLayerScrollingEnabled() || | 2220 (!RuntimeEnabledFeatures::rootLayerScrollingEnabled() || |
2222 owning_node != scrolling_element)) { | 2221 owning_node != scrolling_element)) { |
2223 animating_element = ToElement(owning_node); | 2222 animating_element = ToElement(owning_node); |
2224 animating_style = owning_layer_.GetLayoutObject().Style(); | 2223 animating_style = owning_layer_.GetLayoutObject().Style(); |
2225 } else if (owning_node->IsDocumentNode() && | 2224 } else if (owning_node->IsDocumentNode() && |
2226 RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { | 2225 RuntimeEnabledFeatures::rootLayerScrollingEnabled()) { |
2227 owning_node = animating_element = scrolling_element; | 2226 owning_node = animating_element = scrolling_element; |
2228 if (scrolling_element && scrolling_element->GetLayoutObject()) | 2227 if (scrolling_element && scrolling_element->GetLayoutObject()) |
2229 animating_style = scrolling_element->GetLayoutObject()->Style(); | 2228 animating_style = scrolling_element->GetLayoutObject()->Style(); |
2230 } | 2229 } |
2231 } | 2230 } |
2232 | 2231 |
2233 if (RuntimeEnabledFeatures::compositorWorkerEnabled() && animating_style && | 2232 if (RuntimeEnabledFeatures::compositorWorkerEnabled() && animating_style && |
2234 animating_style->HasCompositorProxy()) { | 2233 animating_style->HasCompositorProxy()) { |
2235 uint32_t compositor_mutable_properties = | 2234 uint32_t compositor_mutable_properties = |
2236 animating_element->CompositorMutableProperties(); | 2235 animating_element->CompositorMutableProperties(); |
2237 element_id = DOMNodeIds::IdForNode(owning_node); | |
2238 primary_mutable_properties = (CompositorMutableProperty::kOpacity | | 2236 primary_mutable_properties = (CompositorMutableProperty::kOpacity | |
2239 CompositorMutableProperty::kTransform) & | 2237 CompositorMutableProperty::kTransform) & |
2240 compositor_mutable_properties; | 2238 compositor_mutable_properties; |
2241 scroll_mutable_properties = (CompositorMutableProperty::kScrollLeft | | 2239 scroll_mutable_properties = (CompositorMutableProperty::kScrollLeft | |
2242 CompositorMutableProperty::kScrollTop) & | 2240 CompositorMutableProperty::kScrollTop) & |
2243 compositor_mutable_properties; | 2241 compositor_mutable_properties; |
2244 } | 2242 } |
2245 | 2243 |
2246 if (animating_style && animating_style->ShouldCompositeForCurrentAnimations()) | 2244 CompositorElementId compositor_element_id = |
2247 element_id = DOMNodeIds::IdForNode(owning_node); | 2245 CompositorElementIdFromPaintLayerId( |
2248 | 2246 owning_layer_.UniqueId(), CompositorElementIdNamespace::kPrimary); |
2249 CompositorElementId compositor_element_id; | |
2250 if (element_id) { | |
2251 compositor_element_id = CompositorElementIdFromDOMNodeId( | |
2252 element_id, CompositorElementIdNamespace::kPrimary); | |
2253 } | |
2254 | 2247 |
2255 graphics_layer_->SetElementId(compositor_element_id); | 2248 graphics_layer_->SetElementId(compositor_element_id); |
2256 graphics_layer_->SetCompositorMutableProperties(primary_mutable_properties); | 2249 graphics_layer_->SetCompositorMutableProperties(primary_mutable_properties); |
2257 | 2250 |
2258 // We always set the elementId for m_scrollingContentsLayer since it can be | 2251 // We always set the elementId for m_scrollingContentsLayer since it can be |
2259 // animated for smooth scrolling, so we don't need to set it conditionally | 2252 // animated for smooth scrolling, so we don't need to set it conditionally |
2260 // here. | 2253 // here. |
2261 if (scrolling_contents_layer_.get()) | 2254 if (scrolling_contents_layer_.get()) |
2262 scrolling_contents_layer_->SetCompositorMutableProperties( | 2255 scrolling_contents_layer_->SetCompositorMutableProperties( |
2263 scroll_mutable_properties); | 2256 scroll_mutable_properties); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2367 // Outer layer which corresponds with the scroll view. | 2360 // Outer layer which corresponds with the scroll view. |
2368 scrolling_layer_ = | 2361 scrolling_layer_ = |
2369 CreateGraphicsLayer(kCompositingReasonLayerForScrollingContainer); | 2362 CreateGraphicsLayer(kCompositingReasonLayerForScrollingContainer); |
2370 scrolling_layer_->SetDrawsContent(false); | 2363 scrolling_layer_->SetDrawsContent(false); |
2371 scrolling_layer_->SetMasksToBounds(true); | 2364 scrolling_layer_->SetMasksToBounds(true); |
2372 | 2365 |
2373 // Inner layer which renders the content that scrolls. | 2366 // Inner layer which renders the content that scrolls. |
2374 scrolling_contents_layer_ = | 2367 scrolling_contents_layer_ = |
2375 CreateGraphicsLayer(kCompositingReasonLayerForScrollingContents); | 2368 CreateGraphicsLayer(kCompositingReasonLayerForScrollingContents); |
2376 | 2369 |
2377 if (Node* owning_node = owning_layer_.GetLayoutObject().GetNode()) { | 2370 scrolling_contents_layer_->SetElementId( |
2378 scrolling_contents_layer_->SetElementId( | 2371 CompositorElementIdFromPaintLayerId( |
2379 CompositorElementIdFromDOMNodeId( | 2372 owning_layer_.UniqueId(), CompositorElementIdNamespace::kScroll)); |
2380 DOMNodeIds::IdForNode(owning_node), | |
2381 CompositorElementIdNamespace::kScroll)); | |
2382 } | |
2383 | 2373 |
2384 scrolling_layer_->AddChild(scrolling_contents_layer_.get()); | 2374 scrolling_layer_->AddChild(scrolling_contents_layer_.get()); |
2385 | 2375 |
2386 layer_changed = true; | 2376 layer_changed = true; |
2387 if (scrolling_coordinator) { | 2377 if (scrolling_coordinator) { |
2388 scrolling_coordinator->ScrollableAreaScrollLayerDidChange( | 2378 scrolling_coordinator->ScrollableAreaScrollLayerDidChange( |
2389 owning_layer_.GetScrollableArea()); | 2379 owning_layer_.GetScrollableArea()); |
2390 scrolling_coordinator->ScrollableAreasDidChange(); | 2380 scrolling_coordinator->ScrollableAreasDidChange(); |
2391 } | 2381 } |
2392 } | 2382 } |
(...skipping 1235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3628 } else if (graphics_layer == decoration_outline_layer_.get()) { | 3618 } else if (graphics_layer == decoration_outline_layer_.get()) { |
3629 name = "Decoration Layer"; | 3619 name = "Decoration Layer"; |
3630 } else { | 3620 } else { |
3631 NOTREACHED(); | 3621 NOTREACHED(); |
3632 } | 3622 } |
3633 | 3623 |
3634 return name; | 3624 return name; |
3635 } | 3625 } |
3636 | 3626 |
3637 } // namespace blink | 3627 } // namespace blink |
OLD | NEW |