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

Side by Side Diff: third_party/WebKit/Source/core/layout/LayoutObject.cpp

Issue 2851763004: Remove LayoutObject::LayerCreationAllowedForSubtree. (Closed)
Patch Set: Created 3 years, 7 months 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
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutObject.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc.
7 * All rights reserved. 7 * All rights reserved.
8 * Copyright (C) 2009 Google Inc. All rights reserved. 8 * Copyright (C) 2009 Google Inc. All rights reserved.
9 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. 9 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved.
10 * (http://www.torchmobile.com/) 10 * (http://www.torchmobile.com/)
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 children->InsertChildNode(this, table, before_child); 321 children->InsertChildNode(this, table, before_child);
322 } 322 }
323 table->AddChild(new_child); 323 table->AddChild(new_child);
324 } else { 324 } else {
325 children->InsertChildNode(this, new_child, before_child); 325 children->InsertChildNode(this, new_child, before_child);
326 } 326 }
327 327
328 if (new_child->IsText() && 328 if (new_child->IsText() &&
329 new_child->Style()->TextTransform() == ETextTransform::kCapitalize) 329 new_child->Style()->TextTransform() == ETextTransform::kCapitalize)
330 ToLayoutText(new_child)->TransformText(); 330 ToLayoutText(new_child)->TransformText();
331
332 // SVG creates layoutObjects for <g display="none">, as SVG requires children
333 // of hidden <g>s to have layoutObjects - at least that's how our
334 // implementation works.
335 // Consider:
336 // <g display="none"><foreignObject><body style="position: relative">FOO...
337 // - layerTypeRequired() would return true for the <body>, creating a new
338 // Layer
339 // - when the document is painted, both layers are painted. The <body> layer
340 // doesn't know that it's inside a "hidden SVG subtree", and thus paints,
341 // even if it shouldn't.
342 // To avoid the problem altogether, detect early if we're inside a hidden SVG
343 // subtree and stop creating layers at all for these cases - they're not used
344 // anyways.
345 if (new_child->HasLayer() && !LayerCreationAllowedForSubtree())
346 ToLayoutBoxModelObject(new_child)
347 ->Layer()
348 ->RemoveOnlyThisLayerAfterStyleChange();
349 } 331 }
350 332
351 void LayoutObject::RemoveChild(LayoutObject* old_child) { 333 void LayoutObject::RemoveChild(LayoutObject* old_child) {
352 DCHECK(IsAllowedToModifyLayoutTreeStructure(GetDocument())); 334 DCHECK(IsAllowedToModifyLayoutTreeStructure(GetDocument()));
353 335
354 LayoutObjectChildList* children = VirtualChildren(); 336 LayoutObjectChildList* children = VirtualChildren();
355 DCHECK(children); 337 DCHECK(children);
356 if (!children) 338 if (!children)
357 return; 339 return;
358 340
(...skipping 3294 matching lines...) Expand 10 before | Expand all | Expand 10 after
3653 const blink::LayoutObject* root = object1; 3635 const blink::LayoutObject* root = object1;
3654 while (root->Parent()) 3636 while (root->Parent())
3655 root = root->Parent(); 3637 root = root->Parent();
3656 root->ShowLayoutTreeAndMark(object1, "*", object2, "-", 0); 3638 root->ShowLayoutTreeAndMark(object1, "*", object2, "-", 0);
3657 } else { 3639 } else {
3658 WTFLogAlways("%s", "Cannot showLayoutTree. Root is (nil)"); 3640 WTFLogAlways("%s", "Cannot showLayoutTree. Root is (nil)");
3659 } 3641 }
3660 } 3642 }
3661 3643
3662 #endif 3644 #endif
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/LayoutObject.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698