OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |