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

Side by Side Diff: third_party/WebKit/Source/core/paint/PaintLayerTest.cpp

Issue 2650873002: Refactor PaintLayer location and offset calculation especially for floats (Closed)
Patch Set: Test the bug fixed BTW Created 3 years, 10 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/paint/PaintLayer.cpp ('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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "core/paint/PaintLayer.h" 5 #include "core/paint/PaintLayer.h"
6 6
7 #include "core/html/HTMLIFrameElement.h" 7 #include "core/html/HTMLIFrameElement.h"
8 #include "core/layout/LayoutBoxModelObject.h" 8 #include "core/layout/LayoutBoxModelObject.h"
9 #include "core/layout/LayoutTestHelper.h" 9 #include "core/layout/LayoutTestHelper.h"
10 #include "core/layout/LayoutView.h" 10 #include "core/layout/LayoutView.h"
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 PaintLayer* floating = 543 PaintLayer* floating =
544 toLayoutBoxModelObject(getLayoutObjectByElementId("floating"))->layer(); 544 toLayoutBoxModelObject(getLayoutObjectByElementId("floating"))->layer();
545 PaintLayer* absolute = 545 PaintLayer* absolute =
546 toLayoutBoxModelObject(getLayoutObjectByElementId("absolute"))->layer(); 546 toLayoutBoxModelObject(getLayoutObjectByElementId("absolute"))->layer();
547 PaintLayer* span = 547 PaintLayer* span =
548 toLayoutBoxModelObject(getLayoutObjectByElementId("span"))->layer(); 548 toLayoutBoxModelObject(getLayoutObjectByElementId("span"))->layer();
549 PaintLayer* container = 549 PaintLayer* container =
550 toLayoutBoxModelObject(getLayoutObjectByElementId("container"))->layer(); 550 toLayoutBoxModelObject(getLayoutObjectByElementId("container"))->layer();
551 551
552 EXPECT_EQ(span, floating->parent()); 552 EXPECT_EQ(span, floating->parent());
553 EXPECT_EQ(container, floating->containingLayer());
553 EXPECT_EQ(span, absolute->parent()); 554 EXPECT_EQ(span, absolute->parent());
555 EXPECT_EQ(span, absolute->containingLayer());
554 EXPECT_EQ(container, span->parent()); 556 EXPECT_EQ(container, span->parent());
557 EXPECT_EQ(container, span->containingLayer());
555 558
556 EXPECT_EQ(LayoutPoint(83, 83), floating->location()); 559 EXPECT_EQ(LayoutPoint(83, 83), floating->location());
557 EXPECT_EQ(LayoutPoint(50, 50), absolute->location()); 560 EXPECT_EQ(LayoutPoint(50, 50), absolute->location());
558 EXPECT_EQ(LayoutPoint(133, 133), span->location()); 561 EXPECT_EQ(LayoutPoint(133, 133), span->location());
559 EXPECT_EQ(LayoutPoint(20, 20), container->location()); 562 EXPECT_EQ(LayoutPoint(20, 20), container->location());
560 563
561 EXPECT_EQ(LayoutPoint(-50, -50), floating->visualOffsetFromAncestor(span)); 564 EXPECT_EQ(LayoutPoint(-50, -50), floating->visualOffsetFromAncestor(span));
562 EXPECT_EQ(LayoutPoint(50, 50), absolute->visualOffsetFromAncestor(span)); 565 EXPECT_EQ(LayoutPoint(50, 50), absolute->visualOffsetFromAncestor(span));
563 EXPECT_EQ(LayoutPoint(83, 83), floating->visualOffsetFromAncestor(container)); 566 EXPECT_EQ(LayoutPoint(83, 83), floating->visualOffsetFromAncestor(container));
564 EXPECT_EQ(LayoutPoint(183, 183), 567 EXPECT_EQ(LayoutPoint(183, 183),
565 absolute->visualOffsetFromAncestor(container)); 568 absolute->visualOffsetFromAncestor(container));
566 } 569 }
567 570
571 TEST_P(PaintLayerTest, FloatLayerUnderInlineLayerScrolled) {
572 setBodyInnerHTML(
573 "<div id='container' style='overflow: scroll; width: 50px; height: 50px'>"
574 " <span id='span' style='position: relative; top: 100px; left: 100px'>"
575 " <div id='floating'"
576 " style='float: left; position: relative; top: 50px; left: 50px'>"
577 " </div>"
578 " </span>"
579 " <div style='height: 1000px'></div>"
580 "</div>");
581
582 PaintLayer* floating =
583 toLayoutBoxModelObject(getLayoutObjectByElementId("floating"))->layer();
584 PaintLayer* span =
585 toLayoutBoxModelObject(getLayoutObjectByElementId("span"))->layer();
586 PaintLayer* container =
587 toLayoutBoxModelObject(getLayoutObjectByElementId("container"))->layer();
588 container->getScrollableArea()->setScrollOffset(ScrollOffset(0, 400),
589 ProgrammaticScroll);
590
591 EXPECT_EQ(span, floating->parent());
592 EXPECT_EQ(container, floating->containingLayer());
593 EXPECT_EQ(container, span->parent());
594 EXPECT_EQ(container, span->containingLayer());
595
596 EXPECT_EQ(LayoutPoint(50, -350), floating->location());
597 EXPECT_EQ(LayoutPoint(100, -300), span->location());
598
599 EXPECT_EQ(LayoutPoint(-50, -50), floating->visualOffsetFromAncestor(span));
600 EXPECT_EQ(LayoutPoint(50, -350),
601 floating->visualOffsetFromAncestor(container));
602 }
603
604 TEST_P(PaintLayerTest, ColomnSpanLayerUnderExtraLayerScrolled) {
chrishtr 2017/01/27 01:00:06 nit: Column
Xianzhu 2017/01/27 01:22:20 Done.
605 setBodyInnerHTML(
606 "<div id='columns' style='overflow: hidden; width: 80px; height: 80px; "
607 " columns: 2; column-gap: 0'>"
608 " <div id='extraLayer'"
609 " style='position: relative; top: 100px; left: 100px'>"
610 " <div id='spanner' style='column-span: all; position: relative; "
611 " top: 50px; left: 50px'>"
612 " </div>"
613 " </div>"
614 " <div style='height: 1000px'></div>"
615 "</div>");
616
617 PaintLayer* spanner =
618 toLayoutBoxModelObject(getLayoutObjectByElementId("spanner"))->layer();
619 PaintLayer* extraLayer =
620 toLayoutBoxModelObject(getLayoutObjectByElementId("extraLayer"))->layer();
621 PaintLayer* columns =
622 toLayoutBoxModelObject(getLayoutObjectByElementId("columns"))->layer();
623 columns->getScrollableArea()->setScrollOffset(ScrollOffset(200, 0),
624 ProgrammaticScroll);
625
626 EXPECT_EQ(extraLayer, spanner->parent());
627 EXPECT_EQ(columns, spanner->containingLayer());
628 EXPECT_EQ(columns, extraLayer->parent()->parent());
629 EXPECT_EQ(columns, extraLayer->containingLayer()->parent());
630
631 EXPECT_EQ(LayoutPoint(-150, 50), spanner->location());
632 EXPECT_EQ(LayoutPoint(100, 100), extraLayer->location());
633 // -60 = 2nd-column-x(40) - scroll-offset-x(200) + x-location(100)
634 // 20 = y-location(100) - column-height(80)
635 EXPECT_EQ(LayoutPoint(-60, 20),
636 extraLayer->visualOffsetFromAncestor(columns));
637 EXPECT_EQ(LayoutPoint(-150, 50), spanner->visualOffsetFromAncestor(columns));
638 }
639
568 TEST_P(PaintLayerTest, FloatLayerUnderBlockUnderInlineLayer) { 640 TEST_P(PaintLayerTest, FloatLayerUnderBlockUnderInlineLayer) {
569 setBodyInnerHTML( 641 setBodyInnerHTML(
570 "<style>body {margin: 0}</style>" 642 "<style>body {margin: 0}</style>"
571 "<span id='span' style='position: relative; top: 100px; left: 100px'>" 643 "<span id='span' style='position: relative; top: 100px; left: 100px'>"
572 " <div style='display: inline-block; margin: 33px'>" 644 " <div style='display: inline-block; margin: 33px'>"
573 " <div id='floating'" 645 " <div id='floating'"
574 " style='float: left; position: relative; top: 50px; left: 50px'>" 646 " style='float: left; position: relative; top: 50px; left: 50px'>"
575 " </div>" 647 " </div>"
576 " </div>" 648 " </div>"
577 "</span>"); 649 "</span>");
578 650
579 PaintLayer* floating = 651 PaintLayer* floating =
580 toLayoutBoxModelObject(getLayoutObjectByElementId("floating"))->layer(); 652 toLayoutBoxModelObject(getLayoutObjectByElementId("floating"))->layer();
581 PaintLayer* span = 653 PaintLayer* span =
582 toLayoutBoxModelObject(getLayoutObjectByElementId("span"))->layer(); 654 toLayoutBoxModelObject(getLayoutObjectByElementId("span"))->layer();
583 655
584 EXPECT_EQ(span, floating->parent()); 656 EXPECT_EQ(span, floating->parent());
657 EXPECT_EQ(span, floating->containingLayer());
585 658
586 EXPECT_EQ(LayoutPoint(83, 83), floating->location()); 659 EXPECT_EQ(LayoutPoint(83, 83), floating->location());
587 EXPECT_EQ(LayoutPoint(100, 100), span->location()); 660 EXPECT_EQ(LayoutPoint(100, 100), span->location());
588 EXPECT_EQ(LayoutPoint(83, 83), floating->visualOffsetFromAncestor(span)); 661 EXPECT_EQ(LayoutPoint(83, 83), floating->visualOffsetFromAncestor(span));
589 EXPECT_EQ(LayoutPoint(183, 183), floating->visualOffsetFromAncestor( 662 EXPECT_EQ(LayoutPoint(183, 183), floating->visualOffsetFromAncestor(
590 document().layoutView()->layer())); 663 document().layoutView()->layer()));
591 } 664 }
592 665
593 TEST_P(PaintLayerTest, CompositingContainerFloatingIframe) { 666 TEST_P(PaintLayerTest, CompositingContainerFloatingIframe) {
594 enableCompositing(); 667 enableCompositing();
(...skipping 25 matching lines...) Expand all
620 693
621 // enclosingLayerWithCompositedLayerMapping is not needed or applicable to 694 // enclosingLayerWithCompositedLayerMapping is not needed or applicable to
622 // SPv2. 695 // SPv2.
623 if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled()) { 696 if (!RuntimeEnabledFeatures::slimmingPaintV2Enabled()) {
624 EXPECT_EQ(compositedContainer, 697 EXPECT_EQ(compositedContainer,
625 target->enclosingLayerWithCompositedLayerMapping(ExcludeSelf)); 698 target->enclosingLayerWithCompositedLayerMapping(ExcludeSelf));
626 } 699 }
627 } 700 }
628 701
629 } // namespace blink 702 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/paint/PaintLayer.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698