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 |