Changeset 240333 in webkit


Ignore:
Timestamp:
Jan 23, 2019 4:44:49 AM (5 years ago)
Author:
commit-queue@webkit.org
Message:

[css-grid] Properly handle static positions of abspos inside grid items
https://bugs.webkit.org/show_bug.cgi?id=193657

Patch by Oriol Brufau <Oriol Brufau> on 2019-01-23
Reviewed by Javier Fernandez.

LayoutTests/imported/w3c:

Import test changes from WPT.
Various orthogonal tests still fail because of https://bugs.webkit.org/show_bug.cgi?id=189513
Some other tests also fail because of https://bugs.webkit.org/show_bug.cgi?id=193656

  • resources/import-expectations.json:
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-006-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-006.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-008-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-008.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-009-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-009.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-011-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-011.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-012-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-012.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-014-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-014.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015.html: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-016-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-016.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-001-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-001.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-002-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-002.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-003-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-003.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-004-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-004.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-005-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-005.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-006-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-006.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-007-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-007.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-008-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-008.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-009-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-009.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-010-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-010.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-011-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-011.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-012-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-012.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-013-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-013.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-014-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-014.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-015-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-015.html: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-016-expected.txt: Added.
  • web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-016.html: Added.
  • web-platform-tests/css/css-grid/abspos/support/positioned-grid-descendants.css: Added.

(.grid):
(.abspos):
(.orthogonal):
(.grid > :nth-child(1) > .abspos):
(.grid > :nth-child(2) > .abspos):

  • web-platform-tests/css/css-grid/abspos/support/positioned-grid-descendants.js: Added.

(export.runTests):

  • web-platform-tests/css/css-grid/abspos/support/w3c-import.log:
  • web-platform-tests/css/css-grid/abspos/w3c-import.log:

Source/WebCore:

Rename findChildLogicalPosition to setLogicalPositionForChild and let it set the position.
Add setLogicalOffsetForChild like setLogicalPositionForChild but just for one offset,
and only if it's needed (not for abspos descentants in their static position).
Add logicalOffsetForChild that finds the value to be set by the functions above.
Rename existing logicalOffsetForChild to logicalOffsetForOutOfFlowChild.

Tests: imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001.html

imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-006.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-008.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-009.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-011.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-012.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-014.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015.html
imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-016.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-001.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-002.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-003.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-004.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-005.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-006.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-007.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-008.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-009.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-010.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-011.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-012.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-013.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-014.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-015.html
imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-016.html

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::layoutGridItems):
(WebCore::RenderGrid::layoutPositionedObject):
(WebCore::RenderGrid::logicalOffsetForOutOfFlowChild const):
(WebCore::RenderGrid::gridAreaPositionForOutOfFlowChild const):
(WebCore::RenderGrid::setLogicalPositionForChild const):
(WebCore::RenderGrid::setLogicalOffsetForChild const):
(WebCore::RenderGrid::logicalOffsetForChild const):

  • rendering/RenderGrid.h:
Location:
trunk
Files:
66 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r240331 r240333  
     12019-01-23  Oriol Brufau  <obrufau@igalia.com>
     2
     3        [css-grid] Properly handle static positions of abspos inside grid items
     4        https://bugs.webkit.org/show_bug.cgi?id=193657
     5
     6        Reviewed by Javier Fernandez.
     7
     8        Import test changes from WPT.
     9        Various orthogonal tests still fail because of https://bugs.webkit.org/show_bug.cgi?id=189513
     10        Some other tests also fail because of https://bugs.webkit.org/show_bug.cgi?id=193656
     11
     12        * resources/import-expectations.json:
     13        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001-expected.txt: Added.
     14        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001.html: Added.
     15        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002-expected.txt: Added.
     16        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002.html: Added.
     17        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003-expected.txt: Added.
     18        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003.html: Added.
     19        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004-expected.txt: Added.
     20        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004.html: Added.
     21        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005-expected.txt: Added.
     22        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005.html: Added.
     23        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-006-expected.txt: Added.
     24        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-006.html: Added.
     25        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007-expected.txt: Added.
     26        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007.html: Added.
     27        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-008-expected.txt: Added.
     28        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-008.html: Added.
     29        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-009-expected.txt: Added.
     30        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-009.html: Added.
     31        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010-expected.txt: Added.
     32        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010.html: Added.
     33        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-011-expected.txt: Added.
     34        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-011.html: Added.
     35        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-012-expected.txt: Added.
     36        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-012.html: Added.
     37        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013-expected.txt: Added.
     38        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013.html: Added.
     39        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-014-expected.txt: Added.
     40        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-014.html: Added.
     41        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015-expected.txt: Added.
     42        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015.html: Added.
     43        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-016-expected.txt: Added.
     44        * web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-016.html: Added.
     45        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-001-expected.txt: Added.
     46        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-001.html: Added.
     47        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-002-expected.txt: Added.
     48        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-002.html: Added.
     49        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-003-expected.txt: Added.
     50        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-003.html: Added.
     51        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-004-expected.txt: Added.
     52        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-004.html: Added.
     53        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-005-expected.txt: Added.
     54        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-005.html: Added.
     55        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-006-expected.txt: Added.
     56        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-006.html: Added.
     57        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-007-expected.txt: Added.
     58        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-007.html: Added.
     59        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-008-expected.txt: Added.
     60        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-008.html: Added.
     61        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-009-expected.txt: Added.
     62        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-009.html: Added.
     63        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-010-expected.txt: Added.
     64        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-010.html: Added.
     65        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-011-expected.txt: Added.
     66        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-011.html: Added.
     67        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-012-expected.txt: Added.
     68        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-012.html: Added.
     69        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-013-expected.txt: Added.
     70        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-013.html: Added.
     71        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-014-expected.txt: Added.
     72        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-014.html: Added.
     73        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-015-expected.txt: Added.
     74        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-015.html: Added.
     75        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-016-expected.txt: Added.
     76        * web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-016.html: Added.
     77        * web-platform-tests/css/css-grid/abspos/support/positioned-grid-descendants.css: Added.
     78        (.grid):
     79        (.abspos):
     80        (.orthogonal):
     81        (.grid > :nth-child(1) > .abspos):
     82        (.grid > :nth-child(2) > .abspos):
     83        * web-platform-tests/css/css-grid/abspos/support/positioned-grid-descendants.js: Added.
     84        (export.runTests):
     85        * web-platform-tests/css/css-grid/abspos/support/w3c-import.log:
     86        * web-platform-tests/css/css-grid/abspos/w3c-import.log:
     87
    1882019-01-23  Rob Buis  <rbuis@igalia.com>
    289
  • trunk/LayoutTests/imported/w3c/resources/import-expectations.json

    r239821 r240333  
    6868    "web-platform-tests/css/css-display": "import",
    6969    "web-platform-tests/css/css-grid": "import",
     70    "web-platform-tests/css/css-grid/abspos": "import",
    7071    "web-platform-tests/css/css-grid/grid-definition/": "import",
    7172    "web-platform-tests/css/css-grid/layout-algorithm/": "import",
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/support/w3c-import.log

    r238079 r240333  
    1616List of files:
    1717/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/support/grid.css
     18/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/support/positioned-grid-descendants.css
     19/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/support/positioned-grid-descendants.js
  • trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/w3c-import.log

    r234131 r240333  
    5151/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/grid-positioned-items-within-grid-implicit-track-001.html
    5252/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/grid-sizing-positioned-items-001.html
     53/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001.html
     54/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002.html
     55/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003.html
     56/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004.html
     57/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005.html
     58/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-006.html
     59/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007.html
     60/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-008.html
     61/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-009.html
     62/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010.html
     63/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-011.html
     64/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-012.html
     65/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013.html
     66/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-014.html
     67/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015.html
     68/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-016.html
    5369/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-items-001-expected.html
    5470/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-items-001.html
     
    85101/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-items-017-expected.html
    86102/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-items-017.html
     103/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-001.html
     104/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-002.html
     105/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-003.html
     106/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-004.html
     107/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-005.html
     108/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-006.html
     109/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-007.html
     110/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-008.html
     111/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-009.html
     112/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-010.html
     113/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-011.html
     114/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-012.html
     115/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-013.html
     116/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-014.html
     117/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-015.html
     118/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-016.html
    87119/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-items-001-expected.html
    88120/LayoutTests/imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-items-001.html
  • trunk/Source/WebCore/ChangeLog

    r240331 r240333  
     12019-01-23  Oriol Brufau  <obrufau@igalia.com>
     2
     3        [css-grid] Properly handle static positions of abspos inside grid items
     4        https://bugs.webkit.org/show_bug.cgi?id=193657
     5
     6        Reviewed by Javier Fernandez.
     7
     8        Rename findChildLogicalPosition to setLogicalPositionForChild and let it set the position.
     9        Add setLogicalOffsetForChild like setLogicalPositionForChild but just for one offset,
     10        and only if it's needed (not for abspos descentants in their static position).
     11        Add logicalOffsetForChild that finds the value to be set by the functions above.
     12        Rename existing logicalOffsetForChild to logicalOffsetForOutOfFlowChild.
     13
     14        Tests: imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-001.html
     15               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-002.html
     16               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-003.html
     17               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-004.html
     18               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-005.html
     19               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-006.html
     20               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-007.html
     21               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-008.html
     22               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-009.html
     23               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-010.html
     24               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-011.html
     25               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-012.html
     26               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-013.html
     27               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-014.html
     28               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-015.html
     29               imported/w3c/web-platform-tests/css/css-grid/abspos/orthogonal-positioned-grid-descendants-016.html
     30               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-001.html
     31               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-002.html
     32               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-003.html
     33               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-004.html
     34               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-005.html
     35               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-006.html
     36               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-007.html
     37               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-008.html
     38               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-009.html
     39               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-010.html
     40               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-011.html
     41               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-012.html
     42               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-013.html
     43               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-014.html
     44               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-015.html
     45               imported/w3c/web-platform-tests/css/css-grid/abspos/positioned-grid-descendants-016.html
     46
     47        * rendering/RenderGrid.cpp:
     48        (WebCore::RenderGrid::layoutGridItems):
     49        (WebCore::RenderGrid::layoutPositionedObject):
     50        (WebCore::RenderGrid::logicalOffsetForOutOfFlowChild const):
     51        (WebCore::RenderGrid::gridAreaPositionForOutOfFlowChild const):
     52        (WebCore::RenderGrid::setLogicalPositionForChild const):
     53        (WebCore::RenderGrid::setLogicalOffsetForChild const):
     54        (WebCore::RenderGrid::logicalOffsetForChild const):
     55        * rendering/RenderGrid.h:
     56
    1572019-01-23  Rob Buis  <rbuis@igalia.com>
    258
  • trunk/Source/WebCore/rendering/RenderGrid.cpp

    r239831 r240333  
    943943        updateAutoMarginsInRowAxisIfNeeded(*child);
    944944
    945         child->setLogicalLocation(findChildLogicalPosition(*child));
     945        setLogicalPositionForChild(*child);
    946946
    947947        // If the child moved, we have to repaint it as well as any floating/positioned
     
    983983    RenderBlock::layoutPositionedObject(child, relayoutChildren, fixedPositionObjectsOnly);
    984984
    985     if (child.isGridItem() || !hasStaticPositionForChild(child, ForColumns) || !hasStaticPositionForChild(child, ForRows))
    986         child.setLogicalLocation(findChildLogicalPosition(child));
     985    setLogicalOffsetForChild(child, ForColumns);
     986    setLogicalOffsetForChild(child, ForRows);
    987987}
    988988
     
    15481548}
    15491549
    1550 LayoutUnit RenderGrid::logicalOffsetForChild(const RenderBox& child, GridTrackSizingDirection direction, LayoutUnit trackBreadth) const
    1551 {
     1550LayoutUnit RenderGrid::logicalOffsetForOutOfFlowChild(const RenderBox& child, GridTrackSizingDirection direction, LayoutUnit trackBreadth) const
     1551{
     1552    ASSERT(child.isOutOfFlowPositioned());
    15521553    if (hasStaticPositionForChild(child, direction))
    15531554        return 0_lu;
     
    15781579        start = positions[line.value()];
    15791580    }
    1580     start += logicalOffsetForChild(child, direction, trackBreadth);
     1581    start += logicalOffsetForOutOfFlowChild(child, direction, trackBreadth);
    15811582    end = start + trackBreadth;
    15821583}
     
    17571758}
    17581759
    1759 LayoutPoint RenderGrid::findChildLogicalPosition(const RenderBox& child) const
    1760 {
    1761     LayoutUnit columnAxisOffset = columnAxisOffsetForChild(child);
     1760// FIXME: SetLogicalPositionForChild has only one caller, consider its refactoring in the future.
     1761void RenderGrid::setLogicalPositionForChild(RenderBox& child) const
     1762{
     1763    // "In the positioning phase [...] calculations are performed according to the writing mode of the containing block of the box establishing the
     1764    // orthogonal flow." However, 'setLogicalLocation' will only take into account the child's writing-mode, so the position may need to be transposed.
     1765    LayoutPoint childLocation(logicalOffsetForChild(child, ForColumns), logicalOffsetForChild(child, ForRows));
     1766    child.setLogicalLocation(GridLayoutFunctions::isOrthogonalChild(*this, child) ? childLocation.transposedPoint() : childLocation);
     1767}
     1768
     1769void RenderGrid::setLogicalOffsetForChild(RenderBox& child, GridTrackSizingDirection direction) const
     1770{
     1771    if (!child.isGridItem() && hasStaticPositionForChild(child, direction))
     1772        return;
     1773    // 'setLogicalLeft' and 'setLogicalTop' only take into account the child's writing-mode, that's why 'flowAwareDirectionForChild' is needed.
     1774    if (GridLayoutFunctions::flowAwareDirectionForChild(*this, child, direction) == ForColumns)
     1775        child.setLogicalLeft(logicalOffsetForChild(child, direction));
     1776    else
     1777        child.setLogicalTop(logicalOffsetForChild(child, direction));
     1778}
     1779
     1780LayoutUnit RenderGrid::logicalOffsetForChild(const RenderBox& child, GridTrackSizingDirection direction) const
     1781{
     1782    if (direction == ForRows)
     1783        return columnAxisOffsetForChild(child);
    17621784    LayoutUnit rowAxisOffset = rowAxisOffsetForChild(child);
    1763     bool isOrthogonalChild = GridLayoutFunctions::isOrthogonalChild(*this, child);
    1764 
    17651785    // We stored m_columnPositions's data ignoring the direction, hence we might need now
    17661786    // to translate positions from RTL to LTR, as it's more convenient for painting.
    17671787    if (!style().isLeftToRightDirection())
    1768         rowAxisOffset = (child.isOutOfFlowPositioned() ? translateOutOfFlowRTLCoordinate(child, rowAxisOffset) : translateRTLCoordinate(rowAxisOffset)) - (isOrthogonalChild ? child.logicalHeight()  : child.logicalWidth());
    1769 
    1770     // "In the positioning phase [...] calculations are performed according to the writing mode
    1771     // of the containing block of the box establishing the orthogonal flow." However, the
    1772     // resulting LayoutPoint will be used in 'setLogicalPosition' in order to set the child's
    1773     // logical position, which will only take into account the child's writing-mode.
    1774     LayoutPoint childLocation(rowAxisOffset, columnAxisOffset);
    1775     return isOrthogonalChild ? childLocation.transposedPoint() : childLocation;
     1788        rowAxisOffset = (child.isOutOfFlowPositioned() ? translateOutOfFlowRTLCoordinate(child, rowAxisOffset) : translateRTLCoordinate(rowAxisOffset)) - (GridLayoutFunctions::isOrthogonalChild(*this, child) ? child.logicalHeight()  : child.logicalWidth());
     1789    return rowAxisOffset;
    17761790}
    17771791
  • trunk/Source/WebCore/rendering/RenderGrid.h

    r239831 r240333  
    137137    LayoutUnit resolveAutoEndGridPosition(GridTrackSizingDirection) const;
    138138    LayoutUnit gridAreaBreadthForOutOfFlowChild(const RenderBox&, GridTrackSizingDirection);
    139     LayoutUnit logicalOffsetForChild(const RenderBox&, GridTrackSizingDirection, LayoutUnit) const;
     139    LayoutUnit logicalOffsetForOutOfFlowChild(const RenderBox&, GridTrackSizingDirection, LayoutUnit) const;
    140140    void gridAreaPositionForOutOfFlowChild(const RenderBox&, GridTrackSizingDirection, LayoutUnit& start, LayoutUnit& end) const;
    141141    void gridAreaPositionForInFlowChild(const RenderBox&, GridTrackSizingDirection, LayoutUnit& start, LayoutUnit& end) const;
     
    147147    LayoutUnit rowAxisOffsetForChild(const RenderBox&) const;
    148148    void computeContentPositionAndDistributionOffset(GridTrackSizingDirection, const LayoutUnit& availableFreeSpace, unsigned numberOfGridTracks);
    149     LayoutPoint findChildLogicalPosition(const RenderBox&) const;
     149    void setLogicalPositionForChild(RenderBox&) const;
     150    void setLogicalOffsetForChild(RenderBox&, GridTrackSizingDirection) const;
     151    LayoutUnit logicalOffsetForChild(const RenderBox&, GridTrackSizingDirection) const;
    150152    GridArea cachedGridArea(const RenderBox&) const;
    151153    GridSpan cachedGridSpan(const RenderBox&, GridTrackSizingDirection) const;
Note: See TracChangeset for help on using the changeset viewer.