Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(453)

Side by Side Diff: Source/core/rendering/compositing/RenderLayerCompositor.cpp

Issue 714933002: Set relayoutChildren to 'true' only if size change happens in Table (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: wrong patch Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009, 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2009, 2010 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 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 #endif 252 #endif
253 253
254 void RenderLayerCompositor::applyOverlayFullscreenVideoAdjustment() 254 void RenderLayerCompositor::applyOverlayFullscreenVideoAdjustment()
255 { 255 {
256 m_inOverlayFullscreenVideo = false; 256 m_inOverlayFullscreenVideo = false;
257 if (!m_rootContentLayer) 257 if (!m_rootContentLayer)
258 return; 258 return;
259 259
260 bool isLocalRoot = m_renderView.frame()->isLocalRoot(); 260 bool isLocalRoot = m_renderView.frame()->isLocalRoot();
261 RenderVideo* video = findFullscreenVideoRenderer(m_renderView.document()); 261 RenderVideo* video = findFullscreenVideoRenderer(m_renderView.document());
262 if (!video || !video->layer()->hasCompositedLayerMapping()) { 262 CompositedLayerMapping* videoCompositedLayerMapping = nullptr;
263
264 if (video)
265 videoCompositedLayerMapping = video->layer()->compositedLayerMapping();
266
267 if (!videoCompositedLayerMapping) {
263 if (isLocalRoot) { 268 if (isLocalRoot) {
264 GraphicsLayer* backgroundLayer = fixedRootBackgroundLayer(); 269 GraphicsLayer* backgroundLayer = fixedRootBackgroundLayer();
265 if (backgroundLayer && !backgroundLayer->parent()) 270 if (backgroundLayer && !backgroundLayer->parent())
266 rootFixedBackgroundsChanged(); 271 rootFixedBackgroundsChanged();
267 } 272 }
268 return; 273 return;
269 } 274 }
270 275
271 GraphicsLayer* videoLayer = video->layer()->compositedLayerMapping()->mainGr aphicsLayer(); 276 GraphicsLayer* videoLayer = videoCompositedLayerMapping->mainGraphicsLayer() ;
272 277
273 // The fullscreen video has layer position equal to its enclosing frame's sc roll position because fullscreen container is fixed-positioned. 278 // The fullscreen video has layer position equal to its enclosing frame's sc roll position because fullscreen container is fixed-positioned.
274 // We should reset layer position here since we are going to reattach the la yer at the very top level. 279 // We should reset layer position here since we are going to reattach the la yer at the very top level.
275 videoLayer->setPosition(IntPoint()); 280 videoLayer->setPosition(IntPoint());
276 281
277 // Only steal fullscreen video layer and clear all other layers if we are th e main frame. 282 // Only steal fullscreen video layer and clear all other layers if we are th e main frame.
278 if (!isLocalRoot) 283 if (!isLocalRoot)
279 return; 284 return;
280 285
281 m_rootContentLayer->removeAllChildren(); 286 m_rootContentLayer->removeAllChildren();
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 408
404 bool RenderLayerCompositor::allocateOrClearCompositedLayerMapping(RenderLayer* l ayer, const CompositingStateTransitionType compositedLayerUpdate) 409 bool RenderLayerCompositor::allocateOrClearCompositedLayerMapping(RenderLayer* l ayer, const CompositingStateTransitionType compositedLayerUpdate)
405 { 410 {
406 bool compositedLayerMappingChanged = false; 411 bool compositedLayerMappingChanged = false;
407 412
408 // FIXME: It would be nice to directly use the layer's compositing reason, 413 // FIXME: It would be nice to directly use the layer's compositing reason,
409 // but allocateOrClearCompositedLayerMapping also gets called without having updated compositing 414 // but allocateOrClearCompositedLayerMapping also gets called without having updated compositing
410 // requirements fully. 415 // requirements fully.
411 switch (compositedLayerUpdate) { 416 switch (compositedLayerUpdate) {
412 case AllocateOwnCompositedLayerMapping: 417 case AllocateOwnCompositedLayerMapping:
413 ASSERT(!layer->hasCompositedLayerMapping()); 418 ASSERT(!layer->compositedLayerMapping());
414 setCompositingModeEnabled(true); 419 setCompositingModeEnabled(true);
415 420
416 // If we need to issue paint invalidations, do so before allocating the compositedLayerMapping and clearing out the groupedMapping. 421 // If we need to issue paint invalidations, do so before allocating the compositedLayerMapping and clearing out the groupedMapping.
417 paintInvalidationOnCompositingChange(layer); 422 paintInvalidationOnCompositingChange(layer);
418 423
419 // If this layer was previously squashed, we need to remove its referenc e to a groupedMapping right away, so 424 // If this layer was previously squashed, we need to remove its referenc e to a groupedMapping right away, so
420 // that computing paint invalidation rects will know the layer's correct compositingState. 425 // that computing paint invalidation rects will know the layer's correct compositingState.
421 // FIXME: do we need to also remove the layer from it's location in the squashing list of its groupedMapping? 426 // FIXME: do we need to also remove the layer from it's location in the squashing list of its groupedMapping?
422 // Need to create a test where a squashed layer pops into compositing. A nd also to cover all other 427 // Need to create a test where a squashed layer pops into compositing. A nd also to cover all other
423 // sorts of compositingState transitions. 428 // sorts of compositingState transitions.
424 layer->setLostGroupedMapping(false); 429 layer->setLostGroupedMapping(false);
425 layer->setGroupedMapping(0); 430 layer->setGroupedMapping(0);
426 431
427 layer->ensureCompositedLayerMapping(); 432 layer->ensureCompositedLayerMapping();
428 compositedLayerMappingChanged = true; 433 compositedLayerMappingChanged = true;
429 434
430 // At this time, the ScrollingCooridnator only supports the top-level fr ame. 435 // At this time, the ScrollingCooridnator only supports the top-level fr ame.
431 if (layer->isRootLayer() && m_renderView.frame()->isLocalRoot()) { 436 if (layer->isRootLayer() && m_renderView.frame()->isLocalRoot()) {
432 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoor dinator()) 437 if (ScrollingCoordinator* scrollingCoordinator = this->scrollingCoor dinator())
433 scrollingCoordinator->frameViewRootLayerDidChange(m_renderView.f rameView()); 438 scrollingCoordinator->frameViewRootLayerDidChange(m_renderView.f rameView());
434 } 439 }
435 break; 440 break;
436 case RemoveOwnCompositedLayerMapping: 441 case RemoveOwnCompositedLayerMapping:
437 // PutInSquashingLayer means you might have to remove the composited layer m apping first. 442 // PutInSquashingLayer means you might have to remove the composited layer m apping first.
438 case PutInSquashingLayer: 443 case PutInSquashingLayer:
439 if (layer->hasCompositedLayerMapping()) { 444 if (layer->compositedLayerMapping()) {
440 // If we're removing the compositedLayerMapping from a reflection, c lear the source GraphicsLayer's pointer to 445 // If we're removing the compositedLayerMapping from a reflection, c lear the source GraphicsLayer's pointer to
441 // its replica GraphicsLayer. In practice this should never happen b ecause reflectee and reflection 446 // its replica GraphicsLayer. In practice this should never happen b ecause reflectee and reflection
442 // are both either composited, or not composited. 447 // are both either composited, or not composited.
443 if (layer->isReflection()) { 448 if (layer->isReflection()) {
444 RenderLayer* sourceLayer = toRenderLayerModelObject(layer->rende rer()->parent())->layer(); 449 RenderLayer* sourceLayer = toRenderLayerModelObject(layer->rende rer()->parent())->layer();
445 if (sourceLayer->hasCompositedLayerMapping()) { 450 if (CompositedLayerMapping* sourceCompositedLayerMapping = sourc eLayer->compositedLayerMapping()) {
446 ASSERT(sourceLayer->compositedLayerMapping()->mainGraphicsLa yer()->replicaLayer() == layer->compositedLayerMapping()->mainGraphicsLayer()); 451 ASSERT(sourceCompositedLayerMapping->mainGraphicsLayer()->re plicaLayer() == layer->compositedLayerMapping()->mainGraphicsLayer());
447 sourceLayer->compositedLayerMapping()->mainGraphicsLayer()-> setReplicatedByLayer(0); 452 sourceCompositedLayerMapping->mainGraphicsLayer()->setReplic atedByLayer(0);
448 } 453 }
449 } 454 }
450 455
451 layer->clearCompositedLayerMapping(); 456 layer->clearCompositedLayerMapping();
452 compositedLayerMappingChanged = true; 457 compositedLayerMappingChanged = true;
453 } 458 }
454 459
455 break; 460 break;
456 case RemoveFromSquashingLayer: 461 case RemoveFromSquashingLayer:
457 case NoCompositingStateChange: 462 case NoCompositingStateChange:
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 return 0; 624 return 0;
620 } 625 }
621 626
622 // FIXME: What does this function do? It needs a clearer name. 627 // FIXME: What does this function do? It needs a clearer name.
623 bool RenderLayerCompositor::parentFrameContentLayers(RenderPart* renderer) 628 bool RenderLayerCompositor::parentFrameContentLayers(RenderPart* renderer)
624 { 629 {
625 RenderLayerCompositor* innerCompositor = frameContentsCompositor(renderer); 630 RenderLayerCompositor* innerCompositor = frameContentsCompositor(renderer);
626 if (!innerCompositor || !innerCompositor->staleInCompositingMode() || innerC ompositor->rootLayerAttachment() != RootLayerAttachedViaEnclosingFrame) 631 if (!innerCompositor || !innerCompositor->staleInCompositingMode() || innerC ompositor->rootLayerAttachment() != RootLayerAttachedViaEnclosingFrame)
627 return false; 632 return false;
628 633
629 RenderLayer* layer = renderer->layer(); 634 CompositedLayerMapping* compositedLayerMapping = renderer->layer()->composit edLayerMapping();
630 if (!layer->hasCompositedLayerMapping()) 635 if (!compositedLayerMapping)
631 return false; 636 return false;
632 637
633 CompositedLayerMapping* compositedLayerMapping = layer->compositedLayerMappi ng();
634 GraphicsLayer* hostingLayer = compositedLayerMapping->parentForSublayers(); 638 GraphicsLayer* hostingLayer = compositedLayerMapping->parentForSublayers();
635 GraphicsLayer* rootLayer = innerCompositor->rootGraphicsLayer(); 639 GraphicsLayer* rootLayer = innerCompositor->rootGraphicsLayer();
636 if (hostingLayer->children().size() != 1 || hostingLayer->children()[0] != r ootLayer) { 640 if (hostingLayer->children().size() != 1 || hostingLayer->children()[0] != r ootLayer) {
637 hostingLayer->removeAllChildren(); 641 hostingLayer->removeAllChildren();
638 hostingLayer->addChild(rootLayer); 642 hostingLayer->addChild(rootLayer);
639 } 643 }
640 return true; 644 return true;
641 } 645 }
642 646
643 static void fullyInvalidatePaintRecursive(RenderLayer* layer) 647 static void fullyInvalidatePaintRecursive(RenderLayer* layer)
(...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after
1188 } else if (graphicsLayer == m_scrollLayer.get()) { 1192 } else if (graphicsLayer == m_scrollLayer.get()) {
1189 name = "LocalFrame Scrolling Layer"; 1193 name = "LocalFrame Scrolling Layer";
1190 } else { 1194 } else {
1191 ASSERT_NOT_REACHED(); 1195 ASSERT_NOT_REACHED();
1192 } 1196 }
1193 1197
1194 return name; 1198 return name;
1195 } 1199 }
1196 1200
1197 } // namespace blink 1201 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/rendering/compositing/GraphicsLayerUpdater.cpp ('k') | Source/core/testing/Internals.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698