Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Apple Inc. All rights reserved. | 2 * Copyright (C) 2012 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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 66 | 66 |
| 67 RenderMultiColumnSet* RenderMultiColumnFlowThread::lastMultiColumnSet() const | 67 RenderMultiColumnSet* RenderMultiColumnFlowThread::lastMultiColumnSet() const |
| 68 { | 68 { |
| 69 for (RenderObject* sibling = multiColumnBlockFlow()->lastChild(); sibling; s ibling = sibling->previousSibling()) { | 69 for (RenderObject* sibling = multiColumnBlockFlow()->lastChild(); sibling; s ibling = sibling->previousSibling()) { |
| 70 if (sibling->isRenderMultiColumnSet()) | 70 if (sibling->isRenderMultiColumnSet()) |
| 71 return toRenderMultiColumnSet(sibling); | 71 return toRenderMultiColumnSet(sibling); |
| 72 } | 72 } |
| 73 return 0; | 73 return 0; |
| 74 } | 74 } |
| 75 | 75 |
| 76 static RenderObject* firstRendererInSet(RenderMultiColumnSet* multicolSet) | |
| 77 { | |
| 78 RenderBox* sibling = multicolSet->previousSiblingMultiColumnBox(); | |
| 79 if (!sibling) | |
| 80 return multicolSet->flowThread()->firstChild(); | |
| 81 // Adjacent column content sets should not occur. We would have no way of fi guring out what each | |
| 82 // of them contains then. | |
| 83 ASSERT(sibling->isRenderMultiColumnSpannerPlaceholder()); | |
|
Julien - ping for review
2015/01/22 10:23:08
Note that this ASSERT is already covered by the to
mstensho (USE GERRIT)
2015/01/22 10:39:57
Yeah, since I want to explain that adjacent sets i
| |
| 84 return toRenderMultiColumnSpannerPlaceholder(sibling)->rendererInFlowThread( )->nextInPreOrderAfterChildren(multicolSet->flowThread()); | |
| 85 } | |
| 86 | |
| 87 static RenderObject* lastRendererInSet(RenderMultiColumnSet* multicolSet) | |
| 88 { | |
| 89 RenderBox* sibling = multicolSet->nextSiblingMultiColumnBox(); | |
| 90 if (!sibling) | |
| 91 return 0; | |
|
Julien - ping for review
2015/01/22 10:23:08
Shouldn't this return multicolSet->flowThread()->l
mstensho (USE GERRIT)
2015/01/22 10:39:57
I could use *lastLeafChild()*. The only caller of
Julien - ping for review
2015/01/22 11:45:44
Let's add a comment about this in the code to docu
mstensho (USE GERRIT)
2015/01/22 11:53:39
Done.
| |
| 92 // Adjacent column content sets should not occur. We would have no way of fi guring out what each | |
| 93 // of them contains then. | |
| 94 ASSERT(sibling->isRenderMultiColumnSpannerPlaceholder()); | |
| 95 return toRenderMultiColumnSpannerPlaceholder(sibling)->rendererInFlowThread( )->previousInPreOrder(multicolSet->flowThread()); | |
| 96 } | |
| 97 | |
| 98 RenderMultiColumnSet* RenderMultiColumnFlowThread::findSetRendering(RenderObject * renderer) const | |
| 99 { | |
| 100 ASSERT(!containingColumnSpannerPlaceholder(renderer)); // should not be used for spanners or content inside them. | |
| 101 ASSERT(renderer != this && renderer->isDescendantOf(this)); | |
|
Julien - ping for review
2015/01/22 10:23:08
It's better to split && into different ASSERTs. Th
mstensho (USE GERRIT)
2015/01/22 10:39:57
Indeed.
Done.
| |
| 102 RenderMultiColumnSet* multicolSet = firstMultiColumnSet(); | |
| 103 if (!multicolSet) | |
| 104 return 0; | |
| 105 if (!multicolSet->nextSiblingMultiColumnSet()) | |
| 106 return multicolSet; | |
| 107 | |
| 108 // This is potentially SLOW! But luckily very uncommon. You would have to dy namically insert a | |
| 109 // spanner into the middle of column contents to need this. | |
| 110 for (; multicolSet; multicolSet = multicolSet->nextSiblingMultiColumnSet()) { | |
| 111 RenderObject* firstRenderer = firstRendererInSet(multicolSet); | |
| 112 RenderObject* lastRenderer = lastRendererInSet(multicolSet); | |
| 113 ASSERT(firstRenderer); | |
| 114 | |
| 115 for (RenderObject* walker = firstRenderer; walker; walker = walker->next InPreOrder(this)) { | |
| 116 if (walker == renderer) | |
| 117 return multicolSet; | |
| 118 if (walker == lastRenderer) | |
| 119 break; | |
| 120 } | |
| 121 } | |
| 122 | |
| 123 return 0; | |
| 124 } | |
| 125 | |
| 76 RenderMultiColumnSpannerPlaceholder* RenderMultiColumnFlowThread::containingColu mnSpannerPlaceholder(const RenderObject* descendant) const | 126 RenderMultiColumnSpannerPlaceholder* RenderMultiColumnFlowThread::containingColu mnSpannerPlaceholder(const RenderObject* descendant) const |
| 77 { | 127 { |
| 78 ASSERT(descendant->isDescendantOf(this)); | 128 ASSERT(descendant->isDescendantOf(this)); |
| 79 | 129 |
| 80 // Before we spend time on searching the ancestry, see if there's a quick wa y to determine | 130 // Before we spend time on searching the ancestry, see if there's a quick wa y to determine |
| 81 // whether there might be any spanners at all. | 131 // whether there might be any spanners at all. |
| 82 RenderBox* firstBox = firstMultiColumnBox(); | 132 RenderBox* firstBox = firstMultiColumnBox(); |
| 83 if (!firstBox || (firstBox == lastMultiColumnBox() && firstBox->isRenderMult iColumnSet())) | 133 if (!firstBox || (firstBox == lastMultiColumnBox() && firstBox->isRenderMult iColumnSet())) |
| 84 return 0; | 134 return 0; |
| 85 | 135 |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 496 } | 546 } |
| 497 | 547 |
| 498 bool RenderMultiColumnFlowThread::isPageLogicalHeightKnown() const | 548 bool RenderMultiColumnFlowThread::isPageLogicalHeightKnown() const |
| 499 { | 549 { |
| 500 if (RenderMultiColumnSet* columnSet = lastMultiColumnSet()) | 550 if (RenderMultiColumnSet* columnSet = lastMultiColumnSet()) |
| 501 return columnSet->pageLogicalHeight(); | 551 return columnSet->pageLogicalHeight(); |
| 502 return false; | 552 return false; |
| 503 } | 553 } |
| 504 | 554 |
| 505 } | 555 } |
| OLD | NEW |