| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "config.h" | 5 #include "config.h" |
| 6 | 6 |
| 7 #include "core/layout/LayoutMultiColumnFlowThread.h" | 7 #include "core/layout/LayoutMultiColumnFlowThread.h" |
| 8 | 8 |
| 9 #include "core/layout/LayoutMultiColumnSet.h" | 9 #include "core/layout/LayoutMultiColumnSet.h" |
| 10 #include "core/layout/LayoutMultiColumnSpannerPlaceholder.h" | 10 #include "core/layout/LayoutMultiColumnSpannerPlaceholder.h" |
| (...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 286 | 286 |
| 287 TEST_F(MultiColumnRenderingTest, columnSetAtBlockOffset) | 287 TEST_F(MultiColumnRenderingTest, columnSetAtBlockOffset) |
| 288 { | 288 { |
| 289 setMulticolHTML("<div id='mc' style='line-height:100px;'>text<br>text<br>tex
t<br>text<br>text<div id='spanner1'>spanner</div>text<br>text<div id='spanner2'>
text<br>text</div>text</div>"); | 289 setMulticolHTML("<div id='mc' style='line-height:100px;'>text<br>text<br>tex
t<br>text<br>text<div id='spanner1'>spanner</div>text<br>text<div id='spanner2'>
text<br>text</div>text</div>"); |
| 290 LayoutMultiColumnFlowThread* flowThread = findFlowThread("mc"); | 290 LayoutMultiColumnFlowThread* flowThread = findFlowThread("mc"); |
| 291 EXPECT_EQ(columnSetSignature(flowThread), "cscsc"); | 291 EXPECT_EQ(columnSetSignature(flowThread), "cscsc"); |
| 292 LayoutMultiColumnSet* firstRow = flowThread->firstMultiColumnSet(); | 292 LayoutMultiColumnSet* firstRow = flowThread->firstMultiColumnSet(); |
| 293 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(-10000)), firstRow);
// negative overflow | 293 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(-10000)), firstRow);
// negative overflow |
| 294 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit()), firstRow); | 294 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit()), firstRow); |
| 295 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(499)), firstRow); //
bottom of last line in first row. | 295 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(499)), firstRow); //
bottom of last line in first row. |
| 296 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(599)), firstRow); //
empty content in last column in first row | |
| 297 LayoutMultiColumnSet* secondRow = firstRow->nextSiblingMultiColumnSet(); | 296 LayoutMultiColumnSet* secondRow = firstRow->nextSiblingMultiColumnSet(); |
| 298 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(600)), secondRow); | 297 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(500)), secondRow); |
| 299 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(799)), secondRow); | 298 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(699)), secondRow); |
| 300 LayoutMultiColumnSet* thirdRow = secondRow->nextSiblingMultiColumnSet(); | 299 LayoutMultiColumnSet* thirdRow = secondRow->nextSiblingMultiColumnSet(); |
| 301 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(800)), thirdRow); | 300 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(700)), thirdRow); |
| 302 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(899)), thirdRow); //
bottom of last row | 301 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(799)), thirdRow); //
bottom of last row |
| 303 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(10000)), thirdRow);
// overflow | 302 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(10000)), thirdRow);
// overflow |
| 304 } | 303 } |
| 305 | 304 |
| 306 TEST_F(MultiColumnRenderingTest, columnSetAtBlockOffsetVerticalRl) | 305 TEST_F(MultiColumnRenderingTest, columnSetAtBlockOffsetVerticalRl) |
| 307 { | 306 { |
| 308 setMulticolHTML("<div id='mc' style='line-height:100px; -webkit-writing-mode
:vertical-rl;'>text<br>text<br>text<br>text<br>text<div id='spanner1'>spanner</d
iv>text<br>text<div id='spanner2'>text<br>text</div>text</div>"); | 307 setMulticolHTML("<div id='mc' style='line-height:100px; -webkit-writing-mode
:vertical-rl;'>text<br>text<br>text<br>text<br>text<div id='spanner1'>spanner</d
iv>text<br>text<div id='spanner2'>text<br>text</div>text</div>"); |
| 309 LayoutMultiColumnFlowThread* flowThread = findFlowThread("mc"); | 308 LayoutMultiColumnFlowThread* flowThread = findFlowThread("mc"); |
| 310 EXPECT_EQ(columnSetSignature(flowThread), "cscsc"); | 309 EXPECT_EQ(columnSetSignature(flowThread), "cscsc"); |
| 311 LayoutMultiColumnSet* firstRow = flowThread->firstMultiColumnSet(); | 310 LayoutMultiColumnSet* firstRow = flowThread->firstMultiColumnSet(); |
| 312 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(-10000)), firstRow);
// negative overflow | 311 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(-10000)), firstRow);
// negative overflow |
| 313 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit()), firstRow); | 312 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit()), firstRow); |
| 314 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(499)), firstRow); //
bottom of last line in first row. | 313 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(499)), firstRow); //
bottom of last line in first row. |
| 315 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(599)), firstRow); //
empty content in last column in first row | |
| 316 LayoutMultiColumnSet* secondRow = firstRow->nextSiblingMultiColumnSet(); | 314 LayoutMultiColumnSet* secondRow = firstRow->nextSiblingMultiColumnSet(); |
| 317 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(600)), secondRow); | 315 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(500)), secondRow); |
| 318 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(799)), secondRow); | 316 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(699)), secondRow); |
| 319 LayoutMultiColumnSet* thirdRow = secondRow->nextSiblingMultiColumnSet(); | 317 LayoutMultiColumnSet* thirdRow = secondRow->nextSiblingMultiColumnSet(); |
| 320 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(800)), thirdRow); | 318 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(700)), thirdRow); |
| 321 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(899)), thirdRow); //
bottom of last row | 319 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(799)), thirdRow); //
bottom of last row |
| 322 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(10000)), thirdRow);
// overflow | 320 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(10000)), thirdRow);
// overflow |
| 323 } | 321 } |
| 324 | 322 |
| 325 TEST_F(MultiColumnRenderingTest, columnSetAtBlockOffsetVerticalLr) | 323 TEST_F(MultiColumnRenderingTest, columnSetAtBlockOffsetVerticalLr) |
| 326 { | 324 { |
| 327 setMulticolHTML("<div id='mc' style='line-height:100px; -webkit-writing-mode
:vertical-lr;'>text<br>text<br>text<br>text<br>text<div id='spanner1'>spanner</d
iv>text<br>text<div id='spanner2'>text<br>text</div>text</div>"); | 325 setMulticolHTML("<div id='mc' style='line-height:100px; -webkit-writing-mode
:vertical-lr;'>text<br>text<br>text<br>text<br>text<div id='spanner1'>spanner</d
iv>text<br>text<div id='spanner2'>text<br>text</div>text</div>"); |
| 328 LayoutMultiColumnFlowThread* flowThread = findFlowThread("mc"); | 326 LayoutMultiColumnFlowThread* flowThread = findFlowThread("mc"); |
| 329 EXPECT_EQ(columnSetSignature(flowThread), "cscsc"); | 327 EXPECT_EQ(columnSetSignature(flowThread), "cscsc"); |
| 330 LayoutMultiColumnSet* firstRow = flowThread->firstMultiColumnSet(); | 328 LayoutMultiColumnSet* firstRow = flowThread->firstMultiColumnSet(); |
| 331 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(-10000)), firstRow);
// negative overflow | 329 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(-10000)), firstRow);
// negative overflow |
| 332 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit()), firstRow); | 330 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit()), firstRow); |
| 333 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(499)), firstRow); //
bottom of last line in first row. | 331 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(499)), firstRow); //
bottom of last line in first row. |
| 334 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(599)), firstRow); //
empty content in last column in first row | |
| 335 LayoutMultiColumnSet* secondRow = firstRow->nextSiblingMultiColumnSet(); | 332 LayoutMultiColumnSet* secondRow = firstRow->nextSiblingMultiColumnSet(); |
| 336 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(600)), secondRow); | 333 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(500)), secondRow); |
| 337 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(799)), secondRow); | 334 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(699)), secondRow); |
| 338 LayoutMultiColumnSet* thirdRow = secondRow->nextSiblingMultiColumnSet(); | 335 LayoutMultiColumnSet* thirdRow = secondRow->nextSiblingMultiColumnSet(); |
| 339 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(800)), thirdRow); | 336 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(700)), thirdRow); |
| 340 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(899)), thirdRow); //
bottom of last row | 337 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(799)), thirdRow); //
bottom of last row |
| 341 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(10000)), thirdRow);
// overflow | 338 EXPECT_EQ(flowThread->columnSetAtBlockOffset(LayoutUnit(10000)), thirdRow);
// overflow |
| 342 } | 339 } |
| 343 | 340 |
| 344 class MultiColumnTreeModifyingTest : public MultiColumnRenderingTest { | 341 class MultiColumnTreeModifyingTest : public MultiColumnRenderingTest { |
| 345 public: | 342 public: |
| 346 void setMulticolHTML(const char*); | 343 void setMulticolHTML(const char*); |
| 347 void reparentLayoutObject(const char* newParentId, const char* childId, cons
t char* insertBeforeId = nullptr); | 344 void reparentLayoutObject(const char* newParentId, const char* childId, cons
t char* insertBeforeId = nullptr); |
| 348 void destroyLayoutObject(LayoutObject* child); | 345 void destroyLayoutObject(LayoutObject* child); |
| 349 void destroyLayoutObject(const char* childId); | 346 void destroyLayoutObject(const char* childId); |
| 350 }; | 347 }; |
| (...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 797 { | 794 { |
| 798 setMulticolHTML("<div id='mc'>text<div id='spanner'><div class='s'></div></d
iv>text</div>"); | 795 setMulticolHTML("<div id='mc'>text<div id='spanner'><div class='s'></div></d
iv>text</div>"); |
| 799 EXPECT_EQ(columnSetSignature("mc"), "csc"); | 796 EXPECT_EQ(columnSetSignature("mc"), "csc"); |
| 800 destroyLayoutObject("spanner"); | 797 destroyLayoutObject("spanner"); |
| 801 EXPECT_EQ(columnSetSignature("mc"), "c"); | 798 EXPECT_EQ(columnSetSignature("mc"), "c"); |
| 802 } | 799 } |
| 803 | 800 |
| 804 } // anonymous namespace | 801 } // anonymous namespace |
| 805 | 802 |
| 806 } // namespace blink | 803 } // namespace blink |
| OLD | NEW |