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

Side by Side Diff: Source/core/layout/LayoutMultiColumnFlowThreadTest.cpp

Issue 1181483005: Avoid stretching the parent of a column spanner. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Update unit tests that used to test the container stretching mechanism Created 5 years, 6 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 | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « Source/core/layout/LayoutMultiColumnFlowThread.cpp ('k') | Source/core/layout/LayoutPagedFlowThread.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698