Chromium Code Reviews| 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 |