Project: chromium Issues People Development process History Sign in
New issue
Advanced search Search tips
Issue 635619 [LayoutNG] Initial block-of-blocks layout implementation.
Starred by 3 users Project Member Reported by ikilpatrick@chromium.org, Aug 8 2016 Back to list
Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Feature

Blocking:
issue 591099
issue 636993
issue 687856



Sign in to add a comment
This bug encompasses the following work:
 - Initial class definitions of the core layout ng api.
 - Initial block-of-blocks layout algorithm.
 - Initial plumbing from old layout tree to internal LayoutNG result.
 
Blocking: 591099
Project Member Comment 2 by bugdroid1@chromium.org, Aug 9 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d92c803780e603b1e99e79cdc3af847677c8c5c7

commit d92c803780e603b1e99e79cdc3af847677c8c5c7
Author: cbiesinger <cbiesinger@chromium.org>
Date: Tue Aug 09 02:46:39 2016

[layoutng] Initial version of block layout

Also contains a way to create a constraint space from a LayoutBox

R=ikilpatrick@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2222133002
Cr-Commit-Position: refs/heads/master@{#410552}

[modify] https://crrev.com/d92c803780e603b1e99e79cdc3af847677c8c5c7/third_party/WebKit/Source/core/core.gypi
[add] https://crrev.com/d92c803780e603b1e99e79cdc3af847677c8c5c7/third_party/WebKit/Source/core/layout/ng/NGBlockLayoutAlgorithm.cpp
[add] https://crrev.com/d92c803780e603b1e99e79cdc3af847677c8c5c7/third_party/WebKit/Source/core/layout/ng/NGBlockLayoutAlgorithm.h

Project Member Comment 3 by bugdroid1@chromium.org, Aug 9 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/756f6b3cbb4af8b77421d8fea3fa22d07d4c6996

commit 756f6b3cbb4af8b77421d8fea3fa22d07d4c6996
Author: glebl <glebl@chromium.org>
Date: Tue Aug 09 05:35:03 2016

Use LayoutNGBlockFlow for the block layout if layoutNG is enabled.

BUG=635619

Review-Url: https://codereview.chromium.org/2226033002
Cr-Commit-Position: refs/heads/master@{#410587}

[modify] https://crrev.com/756f6b3cbb4af8b77421d8fea3fa22d07d4c6996/third_party/WebKit/Source/core/layout/LayoutObject.cpp

Project Member Comment 4 by bugdroid1@chromium.org, Aug 9 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ce5161d7aed0cf105dbb4c9bf6a9dbcda5cbd672

commit ce5161d7aed0cf105dbb4c9bf6a9dbcda5cbd672
Author: cbiesinger <cbiesinger@chromium.org>
Date: Tue Aug 09 17:46:02 2016

[LayoutNG] Add units structures

R=eae@chromium.org,ikilpatrick@chromium.org,glebl@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2229523004
Cr-Commit-Position: refs/heads/master@{#410732}

[add] https://crrev.com/ce5161d7aed0cf105dbb4c9bf6a9dbcda5cbd672/third_party/WebKit/Source/core/layout/ng/NGUnits.h

Project Member Comment 6 by bugdroid1@chromium.org, Aug 9 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d20368eb97bb4afc23803753ae8857c67a3b7f0b

commit d20368eb97bb4afc23803753ae8857c67a3b7f0b
Author: glebl <glebl@chromium.org>
Date: Tue Aug 09 19:48:55 2016

Add inlineOverflow and blockOverflow methods to NGFragment and make it garbage-collected.

BUG=635619
NOTRY=true

Review-Url: https://codereview.chromium.org/2229663005
Cr-Commit-Position: refs/heads/master@{#410774}

[modify] https://crrev.com/d20368eb97bb4afc23803753ae8857c67a3b7f0b/third_party/WebKit/Source/core/layout/ng/NGFragment.cpp
[modify] https://crrev.com/d20368eb97bb4afc23803753ae8857c67a3b7f0b/third_party/WebKit/Source/core/layout/ng/NGFragment.h

Project Member Comment 7 by bugdroid1@chromium.org, Aug 9 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/07af76a5bbadbc179476222647a1b32f6156d264

commit 07af76a5bbadbc179476222647a1b32f6156d264
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Tue Aug 09 20:16:27 2016

[LayoutNG] Add .clang-format for core/layout/ng directory.

TBR=eae@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2224373002
Cr-Commit-Position: refs/heads/master@{#410791}

[add] https://crrev.com/07af76a5bbadbc179476222647a1b32f6156d264/third_party/WebKit/Source/core/layout/ng/.clang-format

Project Member Comment 9 by bugdroid1@chromium.org, Aug 9 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7872d0ed57157601145d7efe6f3c773750f38ee2

commit 7872d0ed57157601145d7efe6f3c773750f38ee2
Author: cbiesinger <cbiesinger@chromium.org>
Date: Tue Aug 09 20:54:44 2016

[LayoutNG] Very simple layout() implementation

Just resolved width and height, and returns a fragment with that.

R=eae@chromium.org,ikilpatrick@chromium.org,glebl@chromium.org
BUG=635619
NOTRY=true

Review-Url: https://codereview.chromium.org/2230563002
Cr-Commit-Position: refs/heads/master@{#410814}

[modify] https://crrev.com/7872d0ed57157601145d7efe6f3c773750f38ee2/third_party/WebKit/Source/core/layout/ng/NGBlockLayoutAlgorithm.cpp
[modify] https://crrev.com/7872d0ed57157601145d7efe6f3c773750f38ee2/third_party/WebKit/Source/core/layout/ng/NGBlockLayoutAlgorithm.h

Project Member Comment 10 by bugdroid1@chromium.org, Aug 9 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/63fb1399a8b1b1d9f73e663ea05d82ba08c08876

commit 63fb1399a8b1b1d9f73e663ea05d82ba08c08876
Author: glebl <glebl@chromium.org>
Date: Tue Aug 09 21:20:22 2016

[LayoutNG] Add NGMarginStrut struct definition

NOTRY=true
BUG=635619

Review-Url: https://codereview.chromium.org/2226123003
Cr-Commit-Position: refs/heads/master@{#410821}

[modify] https://crrev.com/63fb1399a8b1b1d9f73e663ea05d82ba08c08876/third_party/WebKit/Source/core/core.gypi
[add] https://crrev.com/63fb1399a8b1b1d9f73e663ea05d82ba08c08876/third_party/WebKit/Source/core/layout/ng/NGMarginStrut.h

Project Member Comment 11 by bugdroid1@chromium.org, Aug 10 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/79c47e69b04edb124fe285223615508f6761ae1b

commit 79c47e69b04edb124fe285223615508f6761ae1b
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Wed Aug 10 01:50:39 2016

[LayoutNG] Change core/layout/ng to Chromium style and rename files.

underscore case will mean this skips the CheckWebkitStyle test in the presubmit.

BUG=635619

Review-Url: https://codereview.chromium.org/2228843003
Cr-Commit-Position: refs/heads/master@{#410916}

[modify] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/core.gypi
[modify] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/LayoutObject.cpp
[delete] https://crrev.com/2e78a5383cf4651004dace4e7f708eba0c30753f/third_party/WebKit/Source/core/layout/ng/LayoutNGBlockFlow.cpp
[delete] https://crrev.com/2e78a5383cf4651004dace4e7f708eba0c30753f/third_party/WebKit/Source/core/layout/ng/NGBlockLayoutAlgorithm.cpp
[delete] https://crrev.com/2e78a5383cf4651004dace4e7f708eba0c30753f/third_party/WebKit/Source/core/layout/ng/NGBlockLayoutAlgorithm.h
[delete] https://crrev.com/2e78a5383cf4651004dace4e7f708eba0c30753f/third_party/WebKit/Source/core/layout/ng/NGConstraintSpace.cpp
[delete] https://crrev.com/2e78a5383cf4651004dace4e7f708eba0c30753f/third_party/WebKit/Source/core/layout/ng/NGConstraintSpace.h
[delete] https://crrev.com/2e78a5383cf4651004dace4e7f708eba0c30753f/third_party/WebKit/Source/core/layout/ng/NGFragment.cpp
[delete] https://crrev.com/2e78a5383cf4651004dace4e7f708eba0c30753f/third_party/WebKit/Source/core/layout/ng/NGFragment.h
[delete] https://crrev.com/2e78a5383cf4651004dace4e7f708eba0c30753f/third_party/WebKit/Source/core/layout/ng/NGText.h
[delete] https://crrev.com/2e78a5383cf4651004dace4e7f708eba0c30753f/third_party/WebKit/Source/core/layout/ng/NGUnits.h
[add] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.cc
[rename] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.h
[add] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[add] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[add] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[add] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[add] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/ng/ng_fragment.cc
[add] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/ng/ng_fragment.h
[rename] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/ng/ng_margin_strut.h
[rename] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/ng/ng_text.cc
[add] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/ng/ng_text.h
[add] https://crrev.com/79c47e69b04edb124fe285223615508f6761ae1b/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 13 by bugdroid1@chromium.org, Aug 10 2016
Project Member Comment 14 by bugdroid1@chromium.org, Aug 10 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/85890ad97318cd7fc2554c2c0209ba6b908c91ac

commit 85890ad97318cd7fc2554c2c0209ba6b908c91ac
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Wed Aug 10 21:04:20 2016

[LayoutNG] Add PRESUBMIT.py for layout/ng directory.

Initially just has the format check.

BUG=635619

Review-Url: https://codereview.chromium.org/2235003002
Cr-Commit-Position: refs/heads/master@{#411143}

[add] https://crrev.com/85890ad97318cd7fc2554c2c0209ba6b908c91ac/third_party/WebKit/Source/core/layout/ng/PRESUBMIT.py

Project Member Comment 17 by bugdroid1@chromium.org, Aug 10 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b5e5eabd3f8a654e73a3fec608ed264ed968f525

commit b5e5eabd3f8a654e73a3fec608ed264ed968f525
Author: glebl <glebl@chromium.org>
Date: Wed Aug 10 22:00:50 2016

Fix layout/ng/PRESUBMIT.py by using array.extend instead of concatenation.

NOTRY=true
BUG=635619

Review-Url: https://codereview.chromium.org/2233593003
Cr-Commit-Position: refs/heads/master@{#411157}

[modify] https://crrev.com/b5e5eabd3f8a654e73a3fec608ed264ed968f525/third_party/WebKit/Source/core/layout/ng/PRESUBMIT.py

Project Member Comment 18 by bugdroid1@chromium.org, Aug 10 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/491d8b316be0a2c2719d590310cd06ae754cc0f8

commit 491d8b316be0a2c2719d590310cd06ae754cc0f8
Author: cbiesinger <cbiesinger@chromium.org>
Date: Wed Aug 10 23:10:50 2016

[layoutng] Make the layout algorithm actually compute and store positions and sizes

R=ikilpatrick@chromium.org,eae@chromium.org,glebl@chromium.org
BUG=635619
NOTRY=true

Review-Url: https://codereview.chromium.org/2231153003
Cr-Commit-Position: refs/heads/master@{#411175}

[modify] https://crrev.com/491d8b316be0a2c2719d590310cd06ae754cc0f8/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/491d8b316be0a2c2719d590310cd06ae754cc0f8/third_party/WebKit/Source/core/layout/ng/ng_fragment.h

Project Member Comment 19 by bugdroid1@chromium.org, Aug 10 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/65969ab53d68adaba42b188b24b9bb766130f41c

commit 65969ab53d68adaba42b188b24b9bb766130f41c
Author: eae <eae@chromium.org>
Date: Wed Aug 10 23:55:28 2016

[LayoutNG] Add writing-mode and direction to NGFragmentBase

Add enum and fields for writing-mode and text-direction to the fragment
base class. Also change how the type is specified and adds a DCHECK for
setOffset ensuring it can only be called once.

BUG=635619
R=ikilpatrick@chromium.org, glebl@chromium.org
NOTRY=true

Review-Url: https://codereview.chromium.org/2230803005
Cr-Commit-Position: refs/heads/master@{#411193}

[modify] https://crrev.com/65969ab53d68adaba42b188b24b9bb766130f41c/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/65969ab53d68adaba42b188b24b9bb766130f41c/third_party/WebKit/Source/core/layout/ng/ng_fragment.h
[modify] https://crrev.com/65969ab53d68adaba42b188b24b9bb766130f41c/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.cc
[modify] https://crrev.com/65969ab53d68adaba42b188b24b9bb766130f41c/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.h
[modify] https://crrev.com/65969ab53d68adaba42b188b24b9bb766130f41c/third_party/WebKit/Source/core/layout/ng/ng_text.h

Project Member Comment 20 by bugdroid1@chromium.org, Aug 11 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4447e60b8218f0fb2e16d30844ac129419bc95b5

commit 4447e60b8218f0fb2e16d30844ac129419bc95b5
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Aug 11 02:59:55 2016

[layoutng] Add a base class for layout algorithms

R=ikilpatrick@chromium.org,eae@chromium.org,glebl@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2237643003
Cr-Commit-Position: refs/heads/master@{#411240}

[modify] https://crrev.com/4447e60b8218f0fb2e16d30844ac129419bc95b5/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[add] https://crrev.com/4447e60b8218f0fb2e16d30844ac129419bc95b5/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h

Project Member Comment 22 by bugdroid1@chromium.org, Aug 11 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/dd5c49b34b0648feae1af18ead4ebf4381f750fd

commit dd5c49b34b0648feae1af18ead4ebf4381f750fd
Author: samli <samli@chromium.org>
Date: Thu Aug 11 04:34:47 2016

Revert of [LayoutNG] Initial implementation of NGBoxIterator (patchset #4 id:60001 of https://codereview.chromium.org/2230683003/ )

Reason for revert:
Fails to compile.

Why was NOTRY=true used? CQ indicated an error.

Original issue's description:
> [LayoutNG] Initial implementation of NGBoxIterator
>
> NOTRY=true
> BUG=635619
>
> Committed: https://crrev.com/8ba5761a1d6c8f1dc7f972b75487205bfb530256
> Cr-Commit-Position: refs/heads/master@{#411263}

TBR=ikilpatrick@chromium.org,cbiesinger@chromium.org,eae@chromium.org,glebl@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=635619

Review-Url: https://codereview.chromium.org/2234263002
Cr-Commit-Position: refs/heads/master@{#411266}

[modify] https://crrev.com/dd5c49b34b0648feae1af18ead4ebf4381f750fd/third_party/WebKit/Source/core/core.gypi
[modify] https://crrev.com/dd5c49b34b0648feae1af18ead4ebf4381f750fd/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/dd5c49b34b0648feae1af18ead4ebf4381f750fd/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/dd5c49b34b0648feae1af18ead4ebf4381f750fd/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/dd5c49b34b0648feae1af18ead4ebf4381f750fd/third_party/WebKit/Source/core/layout/ng/ng_box.h
[delete] https://crrev.com/ba1286d0e720ef723192e4a2af7e99d0516495d6/third_party/WebKit/Source/core/layout/ng/ng_box_iterator.cc
[delete] https://crrev.com/ba1286d0e720ef723192e4a2af7e99d0516495d6/third_party/WebKit/Source/core/layout/ng/ng_box_iterator.h

Components: Blink>Layout
Comment 24 by e...@chromium.org, Aug 11 2016
Blocking: 636993
Project Member Comment 25 by bugdroid1@chromium.org, Aug 11 2016
Project Member Comment 26 by bugdroid1@chromium.org, Aug 11 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d71da6eb5c6b03bf76679ea6d88f08ea78c0e86e

commit d71da6eb5c6b03bf76679ea6d88f08ea78c0e86e
Author: glebl <glebl@chromium.org>
Date: Thu Aug 11 19:41:59 2016

Demo patch that demonstrates simple block layout using Layout NG

This also includes NGBoxIterator for-loop iterator to iterate over sibling children of layout object.

BUG=635619

Review-Url: https://codereview.chromium.org/2237623002
Cr-Commit-Position: refs/heads/master@{#411403}

[modify] https://crrev.com/d71da6eb5c6b03bf76679ea6d88f08ea78c0e86e/third_party/WebKit/Source/core/core.gypi
[modify] https://crrev.com/d71da6eb5c6b03bf76679ea6d88f08ea78c0e86e/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.cc
[modify] https://crrev.com/d71da6eb5c6b03bf76679ea6d88f08ea78c0e86e/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.h
[modify] https://crrev.com/d71da6eb5c6b03bf76679ea6d88f08ea78c0e86e/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/d71da6eb5c6b03bf76679ea6d88f08ea78c0e86e/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/d71da6eb5c6b03bf76679ea6d88f08ea78c0e86e/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/d71da6eb5c6b03bf76679ea6d88f08ea78c0e86e/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/d71da6eb5c6b03bf76679ea6d88f08ea78c0e86e/third_party/WebKit/Source/core/layout/ng/ng_box.h
[add] https://crrev.com/d71da6eb5c6b03bf76679ea6d88f08ea78c0e86e/third_party/WebKit/Source/core/layout/ng/ng_box_iterator.cc
[add] https://crrev.com/d71da6eb5c6b03bf76679ea6d88f08ea78c0e86e/third_party/WebKit/Source/core/layout/ng/ng_box_iterator.h

Project Member Comment 28 by bugdroid1@chromium.org, Aug 12 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7e8f79d3410922d7e9c712062f249a4577359c63

commit 7e8f79d3410922d7e9c712062f249a4577359c63
Author: cbiesinger <cbiesinger@chromium.org>
Date: Fri Aug 12 00:55:20 2016

[layoutng] Move LayoutBox knowledge out of the NGBoxIterator

There is no need for the iterator to know about layout
objects/boxes; we can just add and use a nextSibling() method
on NGBox. This will simplify a possible future change to allow
NGBox objects to work even without an attached layout object.
(Such functionality would be especially useful for unit tests
at the moment)

R=eae@chromium.org,ikilpatrick@chromium.org,glebl@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2232423002
Cr-Commit-Position: refs/heads/master@{#411497}

[modify] https://crrev.com/7e8f79d3410922d7e9c712062f249a4577359c63/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/7e8f79d3410922d7e9c712062f249a4577359c63/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/7e8f79d3410922d7e9c712062f249a4577359c63/third_party/WebKit/Source/core/layout/ng/ng_box.h
[modify] https://crrev.com/7e8f79d3410922d7e9c712062f249a4577359c63/third_party/WebKit/Source/core/layout/ng/ng_box_iterator.cc
[modify] https://crrev.com/7e8f79d3410922d7e9c712062f249a4577359c63/third_party/WebKit/Source/core/layout/ng/ng_box_iterator.h

Project Member Comment 31 by bugdroid1@chromium.org, Aug 22 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/febef5e01067d1ff21b2f7af4b9c6b0e15023e84

commit febef5e01067d1ff21b2f7af4b9c6b0e15023e84
Author: cbiesinger <cbiesinger@chromium.org>
Date: Mon Aug 22 15:39:18 2016

Allow using overrideContainingBlockContentLogical{Width,Height} outside of grid

I am using it for the LayoutNG transition; there does not seem to be a need
to limit this to grid items as nothing else currently sets this.

This change also makes LayoutNG use this new function.

R=eae@chromium.org,ikilpatrick@chromium.org,glebl@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2257223002
Cr-Commit-Position: refs/heads/master@{#413445}

[modify] https://crrev.com/febef5e01067d1ff21b2f7af4b9c6b0e15023e84/third_party/WebKit/Source/core/layout/LayoutBox.cpp
[modify] https://crrev.com/febef5e01067d1ff21b2f7af4b9c6b0e15023e84/third_party/WebKit/Source/core/layout/ng/ng_box.cc

Project Member Comment 32 by bugdroid1@chromium.org, Aug 23 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/60ff34ab72dc98e9fb050711faf9013d5b9ef9f1

commit 60ff34ab72dc98e9fb050711faf9013d5b9ef9f1
Author: cbiesinger <cbiesinger@chromium.org>
Date: Tue Aug 23 00:36:16 2016

[layoutng] LayoutOpportunities() only needs a bool, not an enum

The "avoid" argument only needs to distinguish between block and
inline/BFC, so simplify the argument list.

R=ikilpatrick@chromium.org,eae@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2264273003
Cr-Commit-Position: refs/heads/master@{#413607}

[modify] https://crrev.com/60ff34ab72dc98e9fb050711faf9013d5b9ef9f1/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/60ff34ab72dc98e9fb050711faf9013d5b9ef9f1/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h

Project Member Comment 33 by bugdroid1@chromium.org, Aug 23 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e66cd9caa74be985f45c426546d93555c2a5df53

commit e66cd9caa74be985f45c426546d93555c2a5df53
Author: cbiesinger <cbiesinger@chromium.org>
Date: Tue Aug 23 19:50:28 2016

[layoutng] Create a more correct constraint space for children

At the start of layout, create a new constraint space with our size
but the existing exclusions. This will be used as the base for
layout out our children. In the future, we will call layoutOpportunities()
on this constraint space to find the correct place for our
children.

Copying the offset should not be necessary as we start with a fresh (0,0)
offset for our children, relative to us.

R=ikilpatrick@chromium.org,eae@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2266313002
Cr-Commit-Position: refs/heads/master@{#413817}

[modify] https://crrev.com/e66cd9caa74be985f45c426546d93555c2a5df53/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/e66cd9caa74be985f45c426546d93555c2a5df53/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/e66cd9caa74be985f45c426546d93555c2a5df53/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/e66cd9caa74be985f45c426546d93555c2a5df53/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 35 by bugdroid1@chromium.org, Aug 24 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ba2f2c86ea8e4b0f6bb744b679396911907b8d6a

commit ba2f2c86ea8e4b0f6bb744b679396911907b8d6a
Author: cbiesinger <cbiesinger@chromium.org>
Date: Wed Aug 24 20:50:00 2016

[layoutng] Add an NGFragmentBuilder

This patch does a few things:
- Adds and uses an NGFragmentBuilder to create fragments
- Code style/variable and function naming cleanup in NGFragment
- Use the structs from ng_units in NGFragment to store sizes

R=eae@chromium.org,ikilpatrick@chromium.org
BUG=635619
NOTRY=true

Review-Url: https://codereview.chromium.org/2270983002
Cr-Commit-Position: refs/heads/master@{#414139}

[modify] https://crrev.com/ba2f2c86ea8e4b0f6bb744b679396911907b8d6a/third_party/WebKit/Source/core/core.gypi
[modify] https://crrev.com/ba2f2c86ea8e4b0f6bb744b679396911907b8d6a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/ba2f2c86ea8e4b0f6bb744b679396911907b8d6a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/ba2f2c86ea8e4b0f6bb744b679396911907b8d6a/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/ba2f2c86ea8e4b0f6bb744b679396911907b8d6a/third_party/WebKit/Source/core/layout/ng/ng_fragment.h
[modify] https://crrev.com/ba2f2c86ea8e4b0f6bb744b679396911907b8d6a/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.cc
[modify] https://crrev.com/ba2f2c86ea8e4b0f6bb744b679396911907b8d6a/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.h
[add] https://crrev.com/ba2f2c86ea8e4b0f6bb744b679396911907b8d6a/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[add] https://crrev.com/ba2f2c86ea8e4b0f6bb744b679396911907b8d6a/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/ba2f2c86ea8e4b0f6bb744b679396911907b8d6a/third_party/WebKit/Source/core/layout/ng/ng_text_fragment.h

Project Member Comment 36 by bugdroid1@chromium.org, Aug 25 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e6e1b27c1004a687eb183822f912c25693414a40

commit e6e1b27c1004a687eb183822f912c25693414a40
Author: glebl <glebl@chromium.org>
Date: Thu Aug 25 18:08:16 2016

Do not call check-webkit-style with empty affected file list as it tries to check all edited files including the skipped ones

This patch changes _CheckStyle to prevent calling check-webkit-style with empty arguments list if all files got filtered out.

BUG=635619
TEST=third_party/WebKit/PRESUBMIT_test.py

Review-Url: https://codereview.chromium.org/2236993002
Cr-Commit-Position: refs/heads/master@{#414472}

[modify] https://crrev.com/e6e1b27c1004a687eb183822f912c25693414a40/third_party/WebKit/PRESUBMIT.py
[add] https://crrev.com/e6e1b27c1004a687eb183822f912c25693414a40/third_party/WebKit/PRESUBMIT_test.py

Project Member Comment 37 by bugdroid1@chromium.org, Aug 25 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d

commit b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Aug 25 18:28:28 2016

[layoutng] Rename struct members to match style guide

This was focused on ng_units and ng_margin_strut, though I also updated
some more variables in ng_block_layout_algorithm.

https://google.github.io/styleguide/cppguide.html#Variable_Names

R=ikilpatrick@chromium.org,eae@chromium.org
BUG=635619
NOTRY=true

Review-Url: https://codereview.chromium.org/2272313004
Cr-Commit-Position: refs/heads/master@{#414483}

[modify] https://crrev.com/b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.cc
[modify] https://crrev.com/b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.h
[modify] https://crrev.com/b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
[modify] https://crrev.com/b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d/third_party/WebKit/Source/core/layout/ng/ng_margin_strut.h
[modify] https://crrev.com/b2a706bf1f9886fa6c91dc23b7dc4bc5c2c2498d/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 39 by bugdroid1@chromium.org, Aug 26 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6f16535150edfba413105be7327ab4bb3ce630d7

commit 6f16535150edfba413105be7327ab4bb3ce630d7
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Fri Aug 26 17:59:31 2016

[LayoutNG] Introduces NGPhysicalConstraintSpace and makes NGConstraintSpace a "view".

NGConstraintSpace now has a backing NGPhysicalConstaintSpace and
provides abstract coordinate system accessors for everything.

Makes NG*ConstraintSpace GarbagedCollected as well as we'll need
this once we move to a state machine / for caching fragment results.

BUG=635619

Review-Url: https://codereview.chromium.org/2267383003
Cr-Commit-Position: refs/heads/master@{#414745}

[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/core.gypi
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.cc
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_box.h
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[add] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[add] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_derived_constraint_space.cc
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_derived_constraint_space.h
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_fragment.h
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.h
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
[add] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.cc
[add] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h
[modify] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_units.h
[add] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_writing_mode.cc
[add] https://crrev.com/6f16535150edfba413105be7327ab4bb3ce630d7/third_party/WebKit/Source/core/layout/ng/ng_writing_mode.h

Project Member Comment 40 by bugdroid1@chromium.org, Aug 26 2016
Project Member Comment 41 by bugdroid1@chromium.org, Aug 29 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/610b75f9d65f2e849fd6505e21c475020862f6e9

commit 610b75f9d65f2e849fd6505e21c475020862f6e9
Author: Christian Biesinger <cbiesinger@chromium.org>
Date: Mon Aug 29 19:45:19 2016

[layoutng] Implement state machine for async layout

This turned out to be more involved than I expected, because I had to make
more classes garbage-collected in order to make them members.

I later learned that I could have gotten by with not making some of them
gc'd and instead just tracing them (as described in the last part of "Field
Errors" in https://www.chromium.org/developers/blink-gc-plugin-errors), so let
me know if you want me to go back to that approach.

This also removes NGBoxIterator in favor of just traversing nextSibling
manually; with the async code, this works more naturally. I also
changed NGBox to always point to a layout object, and using nullptr
when it is not pointing to one, with it being garbage collected that
also worked more naturally that way.

R=eae@chromium.org, ikilpatrick@chromium.org, glebl@chromium.org
BUG=635619

Review URL: https://codereview.chromium.org/2284983002 .

Cr-Commit-Position: refs/heads/master@{#415027}

[modify] https://crrev.com/610b75f9d65f2e849fd6505e21c475020862f6e9/third_party/WebKit/Source/core/core.gypi
[modify] https://crrev.com/610b75f9d65f2e849fd6505e21c475020862f6e9/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.cc
[modify] https://crrev.com/610b75f9d65f2e849fd6505e21c475020862f6e9/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/610b75f9d65f2e849fd6505e21c475020862f6e9/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/610b75f9d65f2e849fd6505e21c475020862f6e9/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/610b75f9d65f2e849fd6505e21c475020862f6e9/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/610b75f9d65f2e849fd6505e21c475020862f6e9/third_party/WebKit/Source/core/layout/ng/ng_box.h
[delete] https://crrev.com/781204305cdc8bb696fb9b068b03cbd3d1b51a26/third_party/WebKit/Source/core/layout/ng/ng_box_iterator.cc
[delete] https://crrev.com/781204305cdc8bb696fb9b068b03cbd3d1b51a26/third_party/WebKit/Source/core/layout/ng/ng_box_iterator.h
[modify] https://crrev.com/610b75f9d65f2e849fd6505e21c475020862f6e9/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/610b75f9d65f2e849fd6505e21c475020862f6e9/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h

Project Member Comment 42 by bugdroid1@chromium.org, Aug 30 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/eeb67bf7fa6ef96b9840540db0753ba5847fee94

commit eeb67bf7fa6ef96b9840540db0753ba5847fee94
Author: eae <eae@chromium.org>
Date: Tue Aug 30 05:32:39 2016

[LayoutNG] Construct ConstraintSpace form Physical

Have the NGConstraintSpace constructors take a NGPhysicalConstraintSpace
and make it mandatory. Also add accessors to NGConstraintSpace and allow
a new NGPhysicalConstraintSpace to be constructed from a NGPhysicalSize.

R=ikilpatrick@chromium.org,cbiesinger@chromium.org
BUG=635619
NOTRY=true

Review-Url: https://codereview.chromium.org/2283233002
Cr-Commit-Position: refs/heads/master@{#415161}

[modify] https://crrev.com/eeb67bf7fa6ef96b9840540db0753ba5847fee94/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/eeb67bf7fa6ef96b9840540db0753ba5847fee94/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/eeb67bf7fa6ef96b9840540db0753ba5847fee94/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.cc
[modify] https://crrev.com/eeb67bf7fa6ef96b9840540db0753ba5847fee94/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h

Project Member Comment 45 by bugdroid1@chromium.org, Aug 31 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e9e67c7f04956745211b80a1f2996209f9aa1b7c

commit e9e67c7f04956745211b80a1f2996209f9aa1b7c
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Wed Aug 31 02:40:26 2016

[LayoutNG] Introduce NGPhysicalFragment and make NGFragment a 'view'

- Adds a bunch of conversion functions between physical and logical offsets and sizes.
- The NGAlgorithm now outputs a NGPhysicalFragment (NGFragment output doesn't make sense in this instance as would immediately get unwrapped and destroyed).

BUG=635619

Review-Url: https://codereview.chromium.org/2282213002
Cr-Commit-Position: refs/heads/master@{#415543}

[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/BUILD.gn
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/core.gypi
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_box.h
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[add] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_direction.cc
[add] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_direction.h
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_fragment.h
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.cc
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.h
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h
[add] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[add] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment_base.cc
[add] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment_base.h
[add] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_physical_text_fragment.h
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_text_fragment.cc
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_text_fragment.h
[add] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_units.h
[add] https://crrev.com/e9e67c7f04956745211b80a1f2996209f9aa1b7c/third_party/WebKit/Source/core/layout/ng/ng_units_test.cc

Project Member Comment 46 by bugdroid1@chromium.org, Aug 31 2016
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7cd22eaca633bf31c2c3ce11ebe7faefb85dd551

commit 7cd22eaca633bf31c2c3ce11ebe7faefb85dd551
Author: Christian Biesinger <cbiesinger@chromium.org>
Date: Wed Aug 31 19:20:51 2016

[layoutng] fix incorrect vector sizing

We need to set the capacity, not the size, to children_.size() because
otherwise the following append() calls will not do the right thing.

R=eae@chromium.org, ikilpatrick@chromium.org, glebl@chromium.org
BUG=635619

Review URL: https://codereview.chromium.org/2295233002 .

Cr-Commit-Position: refs/heads/master@{#415721}

[modify] https://crrev.com/7cd22eaca633bf31c2c3ce11ebe7faefb85dd551/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc

Project Member Comment 47 by bugdroid1@chromium.org, Sep 1
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ebf057e94cd8ca83476f8780ae7419f7ba8746cf

commit ebf057e94cd8ca83476f8780ae7419f7ba8746cf
Author: eae <eae@chromium.org>
Date: Thu Sep 01 03:03:13 2016

[LayoutNG] Merge NGDerivedConstraintSpace into NGConstraintSpace

BUG=635619
R=ikilpatrick@chromium.org

Review-Url: https://codereview.chromium.org/2299823002
Cr-Commit-Position: refs/heads/master@{#415866}

[modify] https://crrev.com/ebf057e94cd8ca83476f8780ae7419f7ba8746cf/third_party/WebKit/Source/core/core.gypi
[modify] https://crrev.com/ebf057e94cd8ca83476f8780ae7419f7ba8746cf/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.cc
[modify] https://crrev.com/ebf057e94cd8ca83476f8780ae7419f7ba8746cf/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/ebf057e94cd8ca83476f8780ae7419f7ba8746cf/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/ebf057e94cd8ca83476f8780ae7419f7ba8746cf/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/ebf057e94cd8ca83476f8780ae7419f7ba8746cf/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[delete] https://crrev.com/33e6e6b45312ce953f9c4c2521b12705c1fe0fba/third_party/WebKit/Source/core/layout/ng/ng_derived_constraint_space.h
[modify] https://crrev.com/ebf057e94cd8ca83476f8780ae7419f7ba8746cf/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc

Project Member Comment 49 by bugdroid1@chromium.org, Sep 8
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ca82afa768a58fb6f977d97673eb03be7559c7f3

commit ca82afa768a58fb6f977d97673eb03be7559c7f3
Author: glebl <glebl@chromium.org>
Date: Thu Sep 08 14:50:29 2016

Initial implementation of Collapsing Margins computational logic for LayoutNG

This patches introduces the logic that computes Collapsing Margins for the
following pairs:
- top margin of a box and top margin of its first in-flow child
- bottom margin of box and top margin of its next in-flow following sibling

This implementation doesn't take into account any Margins Collapsing style exceptions, e.g. padding, borders etc.

Design document: https://docs.google.com/document/d/1uxbDh4uONFQOiGuiumlJBLGgO4KDWB8ZEkp7Rd47fw4/edit#bookmark=id.gk14n6z7jt8a

BUG=635619

Review-Url: https://codereview.chromium.org/2313873002
Cr-Commit-Position: refs/heads/master@{#417293}

[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.cc
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.h
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
[delete] https://crrev.com/d60491196cbaee9f9f8840b2178dea6b234c0b71/third_party/WebKit/Source/core/layout/ng/ng_margin_strut.h
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment_base.h
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_physical_text_fragment.h
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/ca82afa768a58fb6f977d97673eb03be7559c7f3/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 50 by bugdroid1@chromium.org, Sep 8
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/14ce7d174f87288a351c4eee7a511bd7ba526fc9

commit 14ce7d174f87288a351c4eee7a511bd7ba526fc9
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Sep 08 22:57:43 2016

[layout-ng] Use correct height for ContainerBlockSize

https://codereview.chromium.org/2154593003 added
availableLogicalHeightForPercentageComputation, shared with the regular
percentage computation code, so this is definitely correct.

R=ikilpatrick@chromium.org,eae@chromium.org,glebl@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2323953002
Cr-Commit-Position: refs/heads/master@{#417427}

[modify] https://crrev.com/14ce7d174f87288a351c4eee7a511bd7ba526fc9/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc

Project Member Comment 51 by bugdroid1@chromium.org, Sep 9
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3a8d44bde377af4848928cac6fa3cae84a313ead

commit 3a8d44bde377af4848928cac6fa3cae84a313ead
Author: mstensho <mstensho@opera.com>
Date: Fri Sep 09 09:39:42 2016

Let LayoutNG handle childless block flows.

The fact that they are marked with childrenInline() doesn't matter if they have
no children.

BUG=635619

Review-Url: https://codereview.chromium.org/2320393002
Cr-Commit-Position: refs/heads/master@{#417543}

[modify] https://crrev.com/3a8d44bde377af4848928cac6fa3cae84a313ead/third_party/WebKit/Source/core/layout/ng/ng_box.cc

Project Member Comment 54 by bugdroid1@chromium.org, Sep 13
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f714d2bd4450811bae2c849b075344eb31814cd6

commit f714d2bd4450811bae2c849b075344eb31814cd6
Author: cbiesinger <cbiesinger@chromium.org>
Date: Tue Sep 13 21:06:14 2016

[layoutng] Better handling of border and padding

This makes a few changes to the border/padding handling:
- Cache the computed value in a member variable instead of
  recomputing it for each child
- Makes sure to add block_end border and padding to the box size
- Takes border and padding into account for overflow size,
  and also for the constraint space size
- Remove functions that duplicate functionality from
  computeBorder/computePadding

BUG=635619

Review-Url: https://codereview.chromium.org/2330153002
Cr-Commit-Position: refs/heads/master@{#418368}

[modify] https://crrev.com/f714d2bd4450811bae2c849b075344eb31814cd6/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/f714d2bd4450811bae2c849b075344eb31814cd6/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/f714d2bd4450811bae2c849b075344eb31814cd6/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/f714d2bd4450811bae2c849b075344eb31814cd6/third_party/WebKit/Source/core/layout/ng/ng_length_utils.h

Project Member Comment 55 by bugdroid1@chromium.org, Sep 13
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e951eb5eee11982a32a402745cc19299d4fcb0b0

commit e951eb5eee11982a32a402745cc19299d4fcb0b0
Author: cbiesinger <cbiesinger@chromium.org>
Date: Tue Sep 13 23:16:04 2016

[layoutng] Handle box-sizing and correct margin handling for width: auto

Makes sure to only add border/padding for specified values, not keywords,
and makes sure to subtract margins when computing the size of width: auto/
fill-available or of height: fill-available.

BUG=635619

Review-Url: https://codereview.chromium.org/2335323002
Cr-Commit-Position: refs/heads/master@{#418405}

[modify] https://crrev.com/e951eb5eee11982a32a402745cc19299d4fcb0b0/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/e951eb5eee11982a32a402745cc19299d4fcb0b0/third_party/WebKit/Source/core/layout/ng/ng_length_utils.h
[modify] https://crrev.com/e951eb5eee11982a32a402745cc19299d4fcb0b0/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc

Project Member Comment 56 by bugdroid1@chromium.org, Sep 13
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/329849949a9a4d49593c75167f2fc6fc8f405d48

commit 329849949a9a4d49593c75167f2fc6fc8f405d48
Author: glebl <glebl@chromium.org>
Date: Tue Sep 13 23:22:35 2016

Collapse bottom margins of a last child and its parent if parent's height=auto

This patch adds support of the margin collapsing case for the next vertically-adjacent box edges:
- bottom margin of a last in-flow child and bottom margin of its parent if the parent has 'auto' computed height
W3C spec: https://www.w3.org/TR/CSS2/box.html#collapsing-margins

BUG=635619

Review-Url: https://codereview.chromium.org/2336353002
Cr-Commit-Position: refs/heads/master@{#418407}

[modify] https://crrev.com/329849949a9a4d49593c75167f2fc6fc8f405d48/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/329849949a9a4d49593c75167f2fc6fc8f405d48/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/329849949a9a4d49593c75167f2fc6fc8f405d48/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/329849949a9a4d49593c75167f2fc6fc8f405d48/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 58 by bugdroid1@chromium.org, Sep 14
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/982432d01a43f9bede4b7b442f9b7d5ffa8a20c2

commit 982432d01a43f9bede4b7b442f9b7d5ffa8a20c2
Author: cbiesinger <cbiesinger@chromium.org>
Date: Wed Sep 14 22:22:51 2016

[layoutng] Set the intrinsic content logical height on the old layout tree

The overflow size is the content size without being affected by width/height
and max/min properties, so it's exactly what we need here.

This is important because without this change, there are DCHECK failures
if we're a child of a flexbox as the size remains at -1.

R=eae@chromium.org,ikilpatrick@chromium.org,glebl@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2337763005
Cr-Commit-Position: refs/heads/master@{#418695}

[modify] https://crrev.com/982432d01a43f9bede4b7b442f9b7d5ffa8a20c2/third_party/WebKit/Source/core/layout/ng/ng_box.cc

Project Member Comment 59 by bugdroid1@chromium.org, Sep 14
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2eacf266f015eca06c70449f397d973bad57ae68

commit 2eacf266f015eca06c70449f397d973bad57ae68
Author: cbiesinger <cbiesinger@chromium.org>
Date: Wed Sep 14 22:43:59 2016

[layoutng] Make sure to update m_isSelfCollapsing after ng layout

This will otherwise cause assertion failures on many pages.

We could also compute this in ng code during margin collapsing and just set it
on the old object, but I'm not sure that would be worth it.

This and https://codereview.chromium.org/2337763005/ fixes most (but not all)
of the assertion failures during legacy/ng interop.

R=ikilpatrick@chromium.org,eae@chromium.org,glebl@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2340113003
Cr-Commit-Position: refs/heads/master@{#418703}

[modify] https://crrev.com/2eacf266f015eca06c70449f397d973bad57ae68/third_party/WebKit/Source/core/layout/LayoutBlockFlow.cpp
[modify] https://crrev.com/2eacf266f015eca06c70449f397d973bad57ae68/third_party/WebKit/Source/core/layout/LayoutBlockFlow.h
[modify] https://crrev.com/2eacf266f015eca06c70449f397d973bad57ae68/third_party/WebKit/Source/core/layout/ng/ng_box.cc

Project Member Comment 60 by bugdroid1@chromium.org, Sep 16
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/085cf0072e0fee548055cb21e34ac66a12d73321

commit 085cf0072e0fee548055cb21e34ac66a12d73321
Author: glebl <glebl@chromium.org>
Date: Fri Sep 16 22:37:18 2016

[LayoutNG] Fix broken layout while using CSS with writing modes.

1) This will set a writing mode to the fragment builder so it can be used at the time when we calculate a physical fragment.
2) Change computeMargin to accept 2 more parameters: Direction and writing mode.

TEST=NGBlockLayoutAlgorithmTest.LayoutBlockChildrenWithWritingMode
BUG=635619

Review-Url: https://codereview.chromium.org/2347773002
Cr-Commit-Position: refs/heads/master@{#419309}

[modify] https://crrev.com/085cf0072e0fee548055cb21e34ac66a12d73321/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/085cf0072e0fee548055cb21e34ac66a12d73321/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/085cf0072e0fee548055cb21e34ac66a12d73321/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/085cf0072e0fee548055cb21e34ac66a12d73321/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/085cf0072e0fee548055cb21e34ac66a12d73321/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/085cf0072e0fee548055cb21e34ac66a12d73321/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/085cf0072e0fee548055cb21e34ac66a12d73321/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/085cf0072e0fee548055cb21e34ac66a12d73321/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/085cf0072e0fee548055cb21e34ac66a12d73321/third_party/WebKit/Source/core/layout/ng/ng_length_utils.h
[modify] https://crrev.com/085cf0072e0fee548055cb21e34ac66a12d73321/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
[modify] https://crrev.com/085cf0072e0fee548055cb21e34ac66a12d73321/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 61 by bugdroid1@chromium.org, Sep 16
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/778b1cffa40fa6956ea4aa30623fca8b10a35309

commit 778b1cffa40fa6956ea4aa30623fca8b10a35309
Author: cbiesinger <cbiesinger@chromium.org>
Date: Fri Sep 16 22:43:24 2016

[layoutng] Add out-of-flow objects to the positioned objects map

This fixes the main remaining assertion in legacy/ng interop.

BUG=635619
R=eae@chromium.org,ikilpatrick@chromium.org,glebl@chromium.org

Review-Url: https://codereview.chromium.org/2347283002
Cr-Commit-Position: refs/heads/master@{#419311}

[modify] https://crrev.com/778b1cffa40fa6956ea4aa30623fca8b10a35309/third_party/WebKit/Source/core/layout/ng/ng_box.cc

Project Member Comment 62 by bugdroid1@chromium.org, Sep 17
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/94e8b628668646bf578d3f350e7d6d5ca0453e54

commit 94e8b628668646bf578d3f350e7d6d5ca0453e54
Author: cbiesinger <cbiesinger@chromium.org>
Date: Sat Sep 17 03:05:42 2016

[layoutng] Remove TODO comment about DeviceWidth/DeviceHeight

I have verified that vh/vw are resolved by the style system before these
units reach layout, so we don't need to worry about DeviceWidth/DeviceHeight
here.

R=mstensho@opera.com,eae@chromium.org,ikilpatrick@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2344193003
Cr-Commit-Position: refs/heads/master@{#419366}

[modify] https://crrev.com/94e8b628668646bf578d3f350e7d6d5ca0453e54/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc

Project Member Comment 63 by bugdroid1@chromium.org, Sep 20
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/761988cdc921282f5a7baa7e56b511456c4e1843

commit 761988cdc921282f5a7baa7e56b511456c4e1843
Author: Christian Biesinger <cbiesinger@chromium.org>
Date: Tue Sep 20 16:25:38 2016

[layoutng] Create correct constraint spaces for children

This does a couple of things:
- Rationalizes the constructors for the NGConstraintSpace. We need the
  following:
  - A constructor for use by the layout opportunity iterator. The only thing
    this constructor changes is the size and the offset:
    NGConstraintSpace(const NGConstraintSpace&, NGLogicalOffset, NGLogicalSize);
  - A constructor for use by layout algorithms, as a basis for finding
    layout opportunities. This should reset the offset, set the container size,
    writing mode and direction and reset the fixed size properties:
    NGConstraintSpace(NGWritingMode, NGDirection, const NGConstraintSpace&, NGLogicalSize);
  - A constructor for tests and the root constraint space:
    NGConstraintSpace(NGWritingMode, NGDirection, NGLogicalSize);
- Makes sure to clamp inline and block sizes to zero after we subtract border
  and padding
- Make sure not to subtract border and padding from an indefinite size

R=eae@chromium.org, ikilpatrick@chromium.org, mstensho@opera.com
BUG=635619

Review URL: https://codereview.chromium.org/2346403002 .

Cr-Commit-Position: refs/heads/master@{#419787}

[modify] https://crrev.com/761988cdc921282f5a7baa7e56b511456c4e1843/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/761988cdc921282f5a7baa7e56b511456c4e1843/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/761988cdc921282f5a7baa7e56b511456c4e1843/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/761988cdc921282f5a7baa7e56b511456c4e1843/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/761988cdc921282f5a7baa7e56b511456c4e1843/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/761988cdc921282f5a7baa7e56b511456c4e1843/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc

Project Member Comment 64 by bugdroid1@chromium.org, Sep 21
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/67a801a052b6bec0bdf62145d190f9bd2e6e9a36

commit 67a801a052b6bec0bdf62145d190f9bd2e6e9a36
Author: glebl <glebl@chromium.org>
Date: Wed Sep 21 05:43:21 2016

Ignore zero-height fragments during margin collapsing

1) Ignore zero-height fragments during margin collapsing step.
See https://www.w3.org/TR/CSS2/box.html#collapsing-margins
2) Change the order of expected/actual for all EXPECT_EQ in ng_block_layout_algorithm_test
3) Add more test expectations for the collapsing margin logic.

BUG=635619

Review-Url: https://codereview.chromium.org/2350603002
Cr-Commit-Position: refs/heads/master@{#419982}

[modify] https://crrev.com/67a801a052b6bec0bdf62145d190f9bd2e6e9a36/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/67a801a052b6bec0bdf62145d190f9bd2e6e9a36/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/67a801a052b6bec0bdf62145d190f9bd2e6e9a36/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/67a801a052b6bec0bdf62145d190f9bd2e6e9a36/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/67a801a052b6bec0bdf62145d190f9bd2e6e9a36/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/67a801a052b6bec0bdf62145d190f9bd2e6e9a36/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/67a801a052b6bec0bdf62145d190f9bd2e6e9a36/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 65 by bugdroid1@chromium.org, Sep 21
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/882e244a67cc80983cd3cc9eb648f2df18bcc4bf

commit 882e244a67cc80983cd3cc9eb648f2df18bcc4bf
Author: eae <eae@chromium.org>
Date: Wed Sep 21 10:49:26 2016

[LayoutNG] Multi-exclusion aware layout opportunities

Update layout opportunities implementation to handle multiple exclusions
and to support moving down to the next line if no suitable opportunities
can be found on the original line or once all those have been exhausted.

Very simple and un-optimized algorithm, trading performance for clarity.

BUG=635619
R=cbiesinger@chromium.org,ikilpatrick@chromium.org

Review-Url: https://codereview.chromium.org/2347663002
Cr-Commit-Position: refs/heads/master@{#420025}

[modify] https://crrev.com/882e244a67cc80983cd3cc9eb648f2df18bcc4bf/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/882e244a67cc80983cd3cc9eb648f2df18bcc4bf/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/882e244a67cc80983cd3cc9eb648f2df18bcc4bf/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/882e244a67cc80983cd3cc9eb648f2df18bcc4bf/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/882e244a67cc80983cd3cc9eb648f2df18bcc4bf/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.h
[modify] https://crrev.com/882e244a67cc80983cd3cc9eb648f2df18bcc4bf/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h

Project Member Comment 66 by bugdroid1@chromium.org, Sep 21
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c956496f471a2d9a826ed289201dd0a9e93f0e05

commit c956496f471a2d9a826ed289201dd0a9e93f0e05
Author: cbiesinger <cbiesinger@chromium.org>
Date: Wed Sep 21 20:52:06 2016

[layoutng] Make sure to force child layout for the legacy/ng interop

We need to force this because the override size may have changed since
last time.

R=eae@chromium.org,mstensho@opera.com,glebl@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2353423002
Cr-Commit-Position: refs/heads/master@{#420159}

[modify] https://crrev.com/c956496f471a2d9a826ed289201dd0a9e93f0e05/third_party/WebKit/Source/core/layout/ng/ng_box.cc

Project Member Comment 67 by bugdroid1@chromium.org, Sep 22
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5c2fc8168fc1adeb0029025c6b88b87bc84699d6

commit 5c2fc8168fc1adeb0029025c6b88b87bc84699d6
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Sep 22 22:19:42 2016

[layoutng] Add border and padding when setting the override size

This is necessary to avoid a DCHECK when opening the DOM inspector on
any page (and is also clearly correct)

R=mstensho@chromium.org,eae@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2360793002
Cr-Commit-Position: refs/heads/master@{#420480}

[modify] https://crrev.com/5c2fc8168fc1adeb0029025c6b88b87bc84699d6/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc

Project Member Comment 68 by bugdroid1@chromium.org, Sep 28
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/80fe8dbc114625ffa8d7edb1f2443d82d298b03b

commit 80fe8dbc114625ffa8d7edb1f2443d82d298b03b
Author: glebl <glebl@chromium.org>
Date: Tue Sep 27 18:05:31 2016

Disable eager tracing for NGPhysicalFragment.

By default Oilpan has a limit on stackFrameDepth while tracing
HeapVector. Wrap NGPhysicalFragment into TraceEagerlyTrait class to fix that.

BUG=635619

Review-Url: https://codereview.chromium.org/2372573006
Cr-Commit-Position: refs/heads/master@{#421263}

[modify] https://crrev.com/80fe8dbc114625ffa8d7edb1f2443d82d298b03b/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h

Project Member Comment 70 by bugdroid1@chromium.org, Oct 1
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5ab0ea957e8f988b50bd224a08c3503c146b7ab7

commit 5ab0ea957e8f988b50bd224a08c3503c146b7ab7
Author: glebl <glebl@chromium.org>
Date: Sat Oct 01 06:10:58 2016

Remove redundant copy constructor for NGPhysicalConstraintSpace

The existing NGPhysicalConstraintSpace's copy constructor doesn't copy container_size_. This causes some bugs.
C++ compiler provides a copy constructor by default. Lets remove the redundant one.

BUG=635619

Review-Url: https://codereview.chromium.org/2363743006
Cr-Commit-Position: refs/heads/master@{#422306}

[modify] https://crrev.com/5ab0ea957e8f988b50bd224a08c3503c146b7ab7/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.cc
[modify] https://crrev.com/5ab0ea957e8f988b50bd224a08c3503c146b7ab7/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h

Project Member Comment 71 by bugdroid1@chromium.org, Oct 4
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/30abb79af10482813dc76c87ebc7b0793f33e44f

commit 30abb79af10482813dc76c87ebc7b0793f33e44f
Author: glebl <glebl@chromium.org>
Date: Tue Oct 04 00:33:32 2016

Add virtual test suite to test LayoutNG code with fast/block/basic layout tests

For now mark all fast/block/basic tests with "Failure". This will be changed once
crrev.com/2389823003 is submitted.

BUG=635619

Review-Url: https://codereview.chromium.org/2392703002
Cr-Commit-Position: refs/heads/master@{#422629}

[modify] https://crrev.com/30abb79af10482813dc76c87ebc7b0793f33e44f/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/30abb79af10482813dc76c87ebc7b0793f33e44f/third_party/WebKit/LayoutTests/VirtualTestSuites
[add] https://crrev.com/30abb79af10482813dc76c87ebc7b0793f33e44f/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/basic/README.txt

Project Member Comment 73 by bugdroid1@chromium.org, Oct 4
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f5e4eed6ad759ea4ed120c7d2330d2ae726d6815

commit f5e4eed6ad759ea4ed120c7d2330d2ae726d6815
Author: glebl <glebl@chromium.org>
Date: Tue Oct 04 20:53:27 2016

Create LayoutNG virtual test suite for fast/block/margin-collapse path.

This creates a LayoutNG virtual test suite for fast/block/margin-collapse path and switches to use "Skip" instead of "Failure" to mark tests that LayoutNG doesn't support at this moment.

BUG=635619

Review-Url: https://codereview.chromium.org/2396583002
Cr-Commit-Position: refs/heads/master@{#422923}

[modify] https://crrev.com/f5e4eed6ad759ea4ed120c7d2330d2ae726d6815/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/f5e4eed6ad759ea4ed120c7d2330d2ae726d6815/third_party/WebKit/LayoutTests/VirtualTestSuites
[add] https://crrev.com/f5e4eed6ad759ea4ed120c7d2330d2ae726d6815/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/margin-collapse/README.txt

Project Member Comment 74 by bugdroid1@chromium.org, Oct 6
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7

commit db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Oct 06 21:15:18 2016

[layoutng] margin: auto support

Add an ApplyAutoMargin function in ng_length_utils and use that from
ng_block_layout_algorithm.

I did not add it to computeMargins because not all callers should take
margin: auto into account. In particular, a child's width: auto computation
needs to treat margin: auto as zero (and, at any rate, does not have a fragment
available yet).

R=glebl@chromium.org,eae@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2399963002
Cr-Commit-Position: refs/heads/master@{#423680}

[modify] https://crrev.com/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7/third_party/WebKit/Source/core/layout/ng/ng_length_utils.h
[modify] https://crrev.com/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc

Project Member Comment 75 by bugdroid1@chromium.org, Oct 6
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6b4f50b8ae18a17eb46c45f81c025dc1e2b1db9f

commit 6b4f50b8ae18a17eb46c45f81c025dc1e2b1db9f
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Oct 06 23:15:18 2016

[layoutng] Refactor NGBox::Layout

Move some of the code into two new functions to make everything more readable.

R=eae@chromium.org,glebl@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2400023002
Cr-Commit-Position: refs/heads/master@{#423722}

[modify] https://crrev.com/6b4f50b8ae18a17eb46c45f81c025dc1e2b1db9f/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/6b4f50b8ae18a17eb46c45f81c025dc1e2b1db9f/third_party/WebKit/Source/core/layout/ng/ng_box.h

Project Member Comment 76 by bugdroid1@chromium.org, Oct 12
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/010709c620f2d8412ffd4cd11c545a074b01ea72

commit 010709c620f2d8412ffd4cd11c545a074b01ea72
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Wed Oct 12 22:24:52 2016

[LayoutNG] Initial README.md file.

Contains a very basic overview of the NGLayoutAlgorithm :).

BUG=635619

Review-Url: https://codereview.chromium.org/2406843003
Cr-Commit-Position: refs/heads/master@{#424880}

[add] https://crrev.com/010709c620f2d8412ffd4cd11c545a074b01ea72/third_party/WebKit/Source/core/layout/ng/README.md

Project Member Comment 77 by bugdroid1@chromium.org, Oct 14
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e871b54f5e65f69b58ab4344f490f8d04faa06ab

commit e871b54f5e65f69b58ab4344f490f8d04faa06ab
Author: glebl <glebl@chromium.org>
Date: Fri Oct 14 18:24:14 2016

Refactor NGLayoutOpportunityIterator to use 3-nodes spatial tree

This patch introduces a new layout opportunity iterator algorithm which is based on 3-nodes spatial tree. The new approach has several benefits from the existing one:
- improved runtime complexity to find layout opportunities: O(N log N)
- ability to reuse the tree, e.g. just insert a new exclusion down into the tree. Insert operation shouldn't take longer than 2 x log N time.

BUG=635619

Review-Url: https://codereview.chromium.org/2410773006
Cr-Commit-Position: refs/heads/master@{#425391}

[modify] https://crrev.com/e871b54f5e65f69b58ab4344f490f8d04faa06ab/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/e871b54f5e65f69b58ab4344f490f8d04faa06ab/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/e871b54f5e65f69b58ab4344f490f8d04faa06ab/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/e871b54f5e65f69b58ab4344f490f8d04faa06ab/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/e871b54f5e65f69b58ab4344f490f8d04faa06ab/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.h
[add] https://crrev.com/e871b54f5e65f69b58ab4344f490f8d04faa06ab/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.h
[modify] https://crrev.com/e871b54f5e65f69b58ab4344f490f8d04faa06ab/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.cc
[modify] https://crrev.com/e871b54f5e65f69b58ab4344f490f8d04faa06ab/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h
[modify] https://crrev.com/e871b54f5e65f69b58ab4344f490f8d04faa06ab/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 79 by bugdroid1@chromium.org, Oct 18
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bf964eb2871efa5f52041b13c3f9a7dfa4b93a24

commit bf964eb2871efa5f52041b13c3f9a7dfa4b93a24
Author: glebl <glebl@chromium.org>
Date: Tue Oct 18 05:56:37 2016

Create FloatingObject from NG Fragment in old Layout tree

This will create FloatingObjects from fragments in old Layout tree. FloatingObjects are required by BlockFlowPainter that uses them to paint floats.
BUG=635619

Review-Url: https://codereview.chromium.org/2423263002
Cr-Commit-Position: refs/heads/master@{#425896}

[modify] https://crrev.com/bf964eb2871efa5f52041b13c3f9a7dfa4b93a24/third_party/WebKit/Source/core/layout/ng/ng_box.cc

Project Member Comment 80 by bugdroid1@chromium.org, Oct 19
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0f6bd94a8898f85dbc05152065c55a5fffcdcccb

commit 0f6bd94a8898f85dbc05152065c55a5fffcdcccb
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Wed Oct 19 01:35:42 2016

[LayoutNG] Fix orthogonal writing mode child margin strut from being used in collapsing margins calculation.

Also changes where the margin strut is stored, which may be a bad idea?

BUG=635619

Review-Url: https://chromiumcodereview.appspot.com/2417113002
Cr-Commit-Position: refs/heads/master@{#426106}

[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_fragment.cc
[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_fragment.h
[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.cc
[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.h
[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h
[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment_base.h
[modify] https://crrev.com/0f6bd94a8898f85dbc05152065c55a5fffcdcccb/third_party/WebKit/Source/core/layout/ng/ng_physical_text_fragment.h

Project Member Comment 81 by bugdroid1@chromium.org, Oct 22
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/05059b38db14102048bfbe34bafbaf52b9fcc7ba

commit 05059b38db14102048bfbe34bafbaf52b9fcc7ba
Author: glebl <glebl@chromium.org>
Date: Sat Oct 22 05:46:46 2016

Initial implementation of LayoutNG's block layout algorithm for floats.

This patch adds support of left/right floats in LayoutNG code.

Things that are not supported yet:
 - top aligning floats
 - clearing
 - child blocks in the same formatting formatting context

BUG=635619
TEST=virtual/layout_ng/fast/block/float, NGBlockLayoutAlgorithmTest::PositionFloatFragments

Review-Url: https://chromiumcodereview.appspot.com/2435803005
Cr-Commit-Position: refs/heads/master@{#426982}

[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/LayoutTests/VirtualTestSuites
[add] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/LayoutTests/virtual/layout_ng/fast/block/float/README.txt
[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.h
[add] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.cc
[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.h
[modify] https://crrev.com/05059b38db14102048bfbe34bafbaf52b9fcc7ba/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 82 by bugdroid1@chromium.org, Oct 23
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ce86bdc2a63e021733d86af975d0ce47e38ec935

commit ce86bdc2a63e021733d86af975d0ce47e38ec935
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Sun Oct 23 13:39:05 2016

[LayoutNG] Remove one NGConstraintSpace constructor, mark others for removal.

Once the builder is added only the:
NGConstraintSpace(NGWritingMode, NGDirection, NGPhysicalConstraintSpace*)

should remain, this mirrors the NGFragment constructor which is just a "view"
on top of the NGPhysicalFragment.

This mirrors:
NGFragment(NGWritingMode, NGDirection, NGPhysicalFragment*)

BUG=635619

Review-Url: https://chromiumcodereview.appspot.com/2442123002
Cr-Commit-Position: refs/heads/master@{#426995}

[modify] https://crrev.com/ce86bdc2a63e021733d86af975d0ce47e38ec935/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/ce86bdc2a63e021733d86af975d0ce47e38ec935/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/ce86bdc2a63e021733d86af975d0ce47e38ec935/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/ce86bdc2a63e021733d86af975d0ce47e38ec935/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc

Project Member Comment 83 by bugdroid1@chromium.org, Oct 25
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/64a8a9fadd701d4049974d569fbea4b99ac49ea0

commit 64a8a9fadd701d4049974d569fbea4b99ac49ea0
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Tue Oct 25 01:03:53 2016

[LayoutNG] Remove derived constraint spaces from opportunity iterator.

Creating derived constraint spaces from the layout opportunity iterator wasn't being used for the float case, and isn't needed for the text case either. Removing!

BUG=635619

Review-Url: https://codereview.chromium.org/2438313003
Cr-Commit-Position: refs/heads/master@{#427201}

[modify] https://crrev.com/64a8a9fadd701d4049974d569fbea4b99ac49ea0/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/64a8a9fadd701d4049974d569fbea4b99ac49ea0/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/64a8a9fadd701d4049974d569fbea4b99ac49ea0/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/64a8a9fadd701d4049974d569fbea4b99ac49ea0/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/64a8a9fadd701d4049974d569fbea4b99ac49ea0/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/64a8a9fadd701d4049974d569fbea4b99ac49ea0/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.h
[modify] https://crrev.com/64a8a9fadd701d4049974d569fbea4b99ac49ea0/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.cc
[modify] https://crrev.com/64a8a9fadd701d4049974d569fbea4b99ac49ea0/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.h
[modify] https://crrev.com/64a8a9fadd701d4049974d569fbea4b99ac49ea0/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h
[modify] https://crrev.com/64a8a9fadd701d4049974d569fbea4b99ac49ea0/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/64a8a9fadd701d4049974d569fbea4b99ac49ea0/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 84 by bugdroid1@chromium.org, Oct 26
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6c72d27c88f4b2a17321e71951663a0b12c36d0d

commit 6c72d27c88f4b2a17321e71951663a0b12c36d0d
Author: glebl <glebl@chromium.org>
Date: Wed Oct 26 02:32:17 2016

Add NGLogicalOrigin and NGLogicalLeader parameters to NGLayoutOpportunityIterator.

NGLogicalOrigin will be used as a starting point for all layout opportunities generated by NGLayoutOpportunityIterator.
NGLogicalLeader will be used as a ending point of temporary excluded rectangle that represents a text fragment.

BUG=635619

Review-Url: https://codereview.chromium.org/2451553005
Cr-Commit-Position: refs/heads/master@{#427580}

[modify] https://crrev.com/6c72d27c88f4b2a17321e71951663a0b12c36d0d/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/6c72d27c88f4b2a17321e71951663a0b12c36d0d/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/6c72d27c88f4b2a17321e71951663a0b12c36d0d/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/6c72d27c88f4b2a17321e71951663a0b12c36d0d/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.h
[modify] https://crrev.com/6c72d27c88f4b2a17321e71951663a0b12c36d0d/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 87 by bugdroid1@chromium.org, Oct 26
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/347328c6573d9d46b61b668d2118a0e71bf83ed6

commit 347328c6573d9d46b61b668d2118a0e71bf83ed6
Author: atotic <atotic@chromium.org>
Date: Wed Oct 26 18:55:04 2016

NGPhysicalFragment implementation to cc file

absrel patch will add more interesting methods to NGPhysicalFragment
Moving implementation to file prepares us for future methods

BUG=635619

Review-Url: https://codereview.chromium.org/2446403004
Cr-Commit-Position: refs/heads/master@{#427766}

[modify] https://crrev.com/347328c6573d9d46b61b668d2118a0e71bf83ed6/third_party/WebKit/Source/core/layout/BUILD.gn
[add] https://crrev.com/347328c6573d9d46b61b668d2118a0e71bf83ed6/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.cc
[modify] https://crrev.com/347328c6573d9d46b61b668d2118a0e71bf83ed6/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h

Project Member Comment 88 by bugdroid1@chromium.org, Oct 26
Project Member Comment 89 by bugdroid1@chromium.org, Oct 27
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/61cb21c3ff7bf876d947eceee36fd756cd5b8fef

commit 61cb21c3ff7bf876d947eceee36fd756cd5b8fef
Author: atotic <atotic@chromium.org>
Date: Thu Oct 27 02:06:10 2016

I've refactored LayoutCurrentChild for readability, TRACE for "no code in headers"

The switch statement that got refactored is going to grow for absrel, this'll make
it more manageable.

ptal

BUG=635619

Review-Url: https://codereview.chromium.org/2449313002
Cr-Commit-Position: refs/heads/master@{#427914}

[modify] https://crrev.com/61cb21c3ff7bf876d947eceee36fd756cd5b8fef/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/61cb21c3ff7bf876d947eceee36fd756cd5b8fef/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h

Project Member Comment 90 by bugdroid1@chromium.org, Oct 27
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7a997dfad6e963e9f666c9bd3fcc76fc7531c58d

commit 7a997dfad6e963e9f666c9bd3fcc76fc7531c58d
Author: glebl <glebl@chromium.org>
Date: Thu Oct 27 02:41:00 2016

Split SetFixedSize and SetDirectionTriggersScrollbar in multiple functions.

This is a follow up patch that fixes https://codereview.chromium.org/2446243003/#msg11 comment and a couple of compiler warnings about unitialized values.

BUG=635619

Review-Url: https://codereview.chromium.org/2451223003
Cr-Commit-Position: refs/heads/master@{#427920}

[modify] https://crrev.com/7a997dfad6e963e9f666c9bd3fcc76fc7531c58d/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
[modify] https://crrev.com/7a997dfad6e963e9f666c9bd3fcc76fc7531c58d/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h

Project Member Comment 91 by bugdroid1@chromium.org, Oct 27
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e24bddabaa514377a42f3ce4cca004a44a2c7d66

commit e24bddabaa514377a42f3ce4cca004a44a2c7d66
Author: glebl <glebl@chromium.org>
Date: Thu Oct 27 16:18:03 2016

Take into account fragment's margins while searching opportunities.

FindLayoutOpportunityForFragment should take into account fragment's margins while searching opportunities.

BUG=635619

Review-Url: https://codereview.chromium.org/2453463008
Cr-Commit-Position: refs/heads/master@{#428042}

[modify] https://crrev.com/e24bddabaa514377a42f3ce4cca004a44a2c7d66/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/e24bddabaa514377a42f3ce4cca004a44a2c7d66/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc

Project Member Comment 92 by bugdroid1@chromium.org, Oct 27
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/453444244e58b4e26fc7e5772e75f7ed8b05d985

commit 453444244e58b4e26fc7e5772e75f7ed8b05d985
Author: atotic <atotic@chromium.org>
Date: Thu Oct 27 22:04:43 2016

CanUseNewLayout should trigger nglayout in more cases than we handle today.

CanUseNewLayout was returning false even if there were no inline children.
Ian confirmed that if there were no inline children, we should use
nglayout.

The root cause is that LayoutBlockFlow.isInline flag is initialized to true
in constructor.
It gets reset in LayoutBlockFlow::makeChildrenNonInline.
This code only gets called if at least one BlockFlow child is laid out. If all your children are absolute, this does not happen.

This change also causes 6 more existing virtual/nglayout test failures that I have not investigated.

BUG=635619

Review-Url: https://codereview.chromium.org/2444323003
Cr-Commit-Position: refs/heads/master@{#428150}

[modify] https://crrev.com/453444244e58b4e26fc7e5772e75f7ed8b05d985/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/453444244e58b4e26fc7e5772e75f7ed8b05d985/third_party/WebKit/Source/core/layout/ng/ng_box.cc

Project Member Comment 93 by bugdroid1@chromium.org, Oct 27
Labels: merge-merged-2840
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7

commit db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Oct 06 21:15:18 2016

[layoutng] margin: auto support

Add an ApplyAutoMargin function in ng_length_utils and use that from
ng_block_layout_algorithm.

I did not add it to computeMargins because not all callers should take
margin: auto into account. In particular, a child's width: auto computation
needs to treat margin: auto as zero (and, at any rate, does not have a fragment
available yet).

R=glebl@chromium.org,eae@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2399963002
Cr-Commit-Position: refs/heads/master@{#423680}

[modify] https://crrev.com/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7/third_party/WebKit/Source/core/layout/ng/ng_length_utils.h
[modify] https://crrev.com/db9e18276e2915c4f59bb8f8f924e5a6cee3e0b7/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc

Project Member Comment 94 by bugdroid1@chromium.org, Oct 27
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6b4f50b8ae18a17eb46c45f81c025dc1e2b1db9f

commit 6b4f50b8ae18a17eb46c45f81c025dc1e2b1db9f
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Oct 06 23:15:18 2016

[layoutng] Refactor NGBox::Layout

Move some of the code into two new functions to make everything more readable.

R=eae@chromium.org,glebl@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2400023002
Cr-Commit-Position: refs/heads/master@{#423722}

[modify] https://crrev.com/6b4f50b8ae18a17eb46c45f81c025dc1e2b1db9f/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/6b4f50b8ae18a17eb46c45f81c025dc1e2b1db9f/third_party/WebKit/Source/core/layout/ng/ng_box.h

Project Member Comment 97 by bugdroid1@chromium.org, Oct 28
Project Member Comment 99 by bugdroid1@chromium.org, Nov 1
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/250a6979a3311cb8a39ca7d7f316353550362f86

commit 250a6979a3311cb8a39ca7d7f316353550362f86
Author: glebl <glebl@chromium.org>
Date: Tue Nov 01 01:38:25 2016

Use NGLogicalRect instead of NGExclusion to work with exclusions.

This patch does the following:
- Delete NGExclusion
- Change the code to use NGLogicalRect to store exclusions
- Make NGPhysicalConstraintSpace to own the list of exclusions through Vector<std::unique_ptr>
- Introduce WRITING_MODE_IGNORED macros that can be used to annotate cases where the writing mode is inored

BUG=635619

Review-Url: https://codereview.chromium.org/2457013004
Cr-Commit-Position: refs/heads/master@{#428907}

[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_fragment.cc
[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.cc
[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.h
[add] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_macros.h
[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.cc
[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h
[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 100 by bugdroid1@chromium.org, Nov 1
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3b41bfed7efb2d172f8a9706f09c0b793adda997

commit 3b41bfed7efb2d172f8a9706f09c0b793adda997
Author: kjellander <kjellander@chromium.org>
Date: Tue Nov 01 10:30:56 2016

Revert of Use NGLogicalRect instead of NGExclusion for exclusions. (patchset #5 id:110016 of https://codereview.chromium.org/2457013004/ )

Reason for revert:
Reverting to enable reverting of https://codereview.chromium.org/2458253002/ in https://codereview.chromium.org/2458253002/ due to  merge conflicts.

Please reland once the flakiness has been sorted out.

Original issue's description:
> Use NGLogicalRect instead of NGExclusion to work with exclusions.
>
> This patch does the following:
> - Delete NGExclusion
> - Change the code to use NGLogicalRect to store exclusions
> - Make NGPhysicalConstraintSpace to own the list of exclusions through Vector<std::unique_ptr>
> - Introduce WRITING_MODE_IGNORED macros that can be used to annotate cases where the writing mode is inored
>
> BUG=635619
>
> Committed: https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86
> Cr-Commit-Position: refs/heads/master@{#428907}

TBR=cbiesinger@chromium.org,eae@chromium.org,ikilpatrick@chromium.org,dpranke@chromium.org,glebl@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=635619

Review-Url: https://codereview.chromium.org/2467803002
Cr-Commit-Position: refs/heads/master@{#428971}

[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/ng/ng_fragment.cc
[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.cc
[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.h
[delete] https://crrev.com/110bd1a0e95aa206bac438ee6bd3393741e52de2/third_party/WebKit/Source/core/layout/ng/ng_macros.h
[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.cc
[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h
[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 101 by bugdroid1@chromium.org, Nov 1
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0ea81d7d3ea571b173fb462f2b0eeed4144000a0

commit 0ea81d7d3ea571b173fb462f2b0eeed4144000a0
Author: kjellander <kjellander@chromium.org>
Date: Tue Nov 01 10:47:30 2016

Revert of [LayoutNG] Remove simple constructors from NGPhysicalConstraintSpace. (patchset #2 id:20001 of https://codereview.chromium.org/2458253002/ )

Reason for revert:
Speculative revert due to failures in webkit_tests on WebKit Win7 (dbg) starting with https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win7%20%28dbg%29/builds/7940
(this was the only WebKit CL in the blamelist).

Original issue's description:
> [LayoutNG] Remove simple constructors from NGPhysicalConstraintSpace.
>
> BUG=635619
>
> Committed: https://crrev.com/08d3a096f20ce0196474108dc8a28ceddc3203c3
> Cr-Commit-Position: refs/heads/master@{#428757}

TBR=glebl@chromium.org,cbiesinger@chromium.org,ikilpatrick@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=635619

Review-Url: https://codereview.chromium.org/2470733002
Cr-Commit-Position: refs/heads/master@{#428975}

[modify] https://crrev.com/0ea81d7d3ea571b173fb462f2b0eeed4144000a0/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/0ea81d7d3ea571b173fb462f2b0eeed4144000a0/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/0ea81d7d3ea571b173fb462f2b0eeed4144000a0/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.cc
[modify] https://crrev.com/0ea81d7d3ea571b173fb462f2b0eeed4144000a0/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h

Project Member Comment 102 by bugdroid1@chromium.org, Nov 1
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ffacff4ca7b9d4a21d945091e2ee404711649b18

commit ffacff4ca7b9d4a21d945091e2ee404711649b18
Author: kjellander <kjellander@chromium.org>
Date: Tue Nov 01 14:24:58 2016

Reland of [LayoutNG] Remove simple constructors from NGPhysicalConstraintSpace. (patchset #1 id:1 of https://codereview.chromium.org/2470733002/ )

Reason for revert:
Relanding as newer builds showed the same failures: https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win7%20%28dbg%29/builds/7949

Original issue's description:
> Revert of [LayoutNG] Remove simple constructors from NGPhysicalConstraintSpace. (patchset #2 id:20001 of https://codereview.chromium.org/2458253002/ )
>
> Reason for revert:
> Speculative revert due to failures in webkit_tests on WebKit Win7 (dbg) starting with https://build.chromium.org/p/chromium.webkit/builders/WebKit%20Win7%20%28dbg%29/builds/7940
> (this was the only WebKit CL in the blamelist).
>
> Original issue's description:
> > [LayoutNG] Remove simple constructors from NGPhysicalConstraintSpace.
> >
> > BUG=635619
> >
> > Committed: https://crrev.com/08d3a096f20ce0196474108dc8a28ceddc3203c3
> > Cr-Commit-Position: refs/heads/master@{#428757}
>
> TBR=glebl@chromium.org,cbiesinger@chromium.org,ikilpatrick@chromium.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=635619
>
> Committed: https://crrev.com/0ea81d7d3ea571b173fb462f2b0eeed4144000a0
> Cr-Commit-Position: refs/heads/master@{#428975}

TBR=glebl@chromium.org,cbiesinger@chromium.org,ikilpatrick@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=635619

Review-Url: https://codereview.chromium.org/2466913002
Cr-Commit-Position: refs/heads/master@{#428997}

[modify] https://crrev.com/ffacff4ca7b9d4a21d945091e2ee404711649b18/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/ffacff4ca7b9d4a21d945091e2ee404711649b18/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/ffacff4ca7b9d4a21d945091e2ee404711649b18/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.cc
[modify] https://crrev.com/ffacff4ca7b9d4a21d945091e2ee404711649b18/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h

Project Member Comment 103 by bugdroid1@chromium.org, Nov 1
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/33a189c87461dcecd60c7090e98aeb4a8f923964

commit 33a189c87461dcecd60c7090e98aeb4a8f923964
Author: kjellander <kjellander@chromium.org>
Date: Tue Nov 01 14:27:33 2016

Reland of Use NGLogicalRect instead of NGExclusion for exclusions. (patchset #1 id:1 of https://codereview.chromium.org/2467803002/ )

Reason for revert:
Relanding on top of https://codereview.chromium.org/2466913002/ since that one wasn't the culprit for the webkit_tests failures on WebKit Win7 (dbg).

Original issue's description:
> Revert of Use NGLogicalRect instead of NGExclusion for exclusions. (patchset #5 id:110016 of https://codereview.chromium.org/2457013004/ )
>
> Reason for revert:
> Reverting to enable reverting of https://codereview.chromium.org/2458253002/ in https://codereview.chromium.org/2458253002/ due to  merge conflicts.
>
> Please reland once the flakiness has been sorted out.
>
> Original issue's description:
> > Use NGLogicalRect instead of NGExclusion to work with exclusions.
> >
> > This patch does the following:
> > - Delete NGExclusion
> > - Change the code to use NGLogicalRect to store exclusions
> > - Make NGPhysicalConstraintSpace to own the list of exclusions through Vector<std::unique_ptr>
> > - Introduce WRITING_MODE_IGNORED macros that can be used to annotate cases where the writing mode is inored
> >
> > BUG=635619
> >
> > Committed: https://crrev.com/250a6979a3311cb8a39ca7d7f316353550362f86
> > Cr-Commit-Position: refs/heads/master@{#428907}
>
> TBR=cbiesinger@chromium.org,eae@chromium.org,ikilpatrick@chromium.org,dpranke@chromium.org,glebl@chromium.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=635619
>
> Committed: https://crrev.com/3b41bfed7efb2d172f8a9706f09c0b793adda997
> Cr-Commit-Position: refs/heads/master@{#428971}

TBR=cbiesinger@chromium.org,eae@chromium.org,ikilpatrick@chromium.org,dpranke@chromium.org,glebl@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=635619

Review-Url: https://codereview.chromium.org/2462413002
Cr-Commit-Position: refs/heads/master@{#428998}

[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_fragment.cc
[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.cc
[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.h
[add] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_macros.h
[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.cc
[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h
[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/33a189c87461dcecd60c7090e98aeb4a8f923964/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 104 by bugdroid1@chromium.org, Nov 1
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8b9144a314b0cd585fbca0359214a7b2f9dd3480

commit 8b9144a314b0cd585fbca0359214a7b2f9dd3480
Author: glebl <glebl@chromium.org>
Date: Tue Nov 01 19:14:53 2016

Fix WRITING_MODE_IGNORED's comment in NGFragment::MarginStrut

BUG=635619

Review-Url: https://codereview.chromium.org/2470833002
Cr-Commit-Position: refs/heads/master@{#429068}

[modify] https://crrev.com/8b9144a314b0cd585fbca0359214a7b2f9dd3480/third_party/WebKit/Source/core/layout/ng/ng_fragment.cc

Project Member Comment 105 by bugdroid1@chromium.org, Nov 3
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2b4efe85b807d2fa034acd8108aa994148708e0a

commit 2b4efe85b807d2fa034acd8108aa994148708e0a
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Nov 03 01:04:45 2016

[layoutng] Support computing min-content and max-content

This is just the first step -- we still need to integrate this into
ng_length_utils as the next step, and optimize this by implementing
ComputeMinAndMaxContentSizes on the NGBLockLayoutAlgorithm.

In the meantime this implements the synthesized min-content and
max-content as described in the layoutng design doc:
https://docs.google.com/document/d/1uxbDh4uONFQOiGuiumlJBLGgO4KDWB8ZEkp7Rd47fw4/edit#heading=h.bkkc2a8yyuly

The unit test is very simple, but until we implement line layout we can't
really write a more comprehensive test.

R=ikilpatrick@chromium.org,atotic@chromium.org,eae@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2462153002
Cr-Commit-Position: refs/heads/master@{#429492}

[modify] https://crrev.com/2b4efe85b807d2fa034acd8108aa994148708e0a/third_party/WebKit/Source/core/BUILD.gn
[modify] https://crrev.com/2b4efe85b807d2fa034acd8108aa994148708e0a/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/2b4efe85b807d2fa034acd8108aa994148708e0a/third_party/WebKit/Source/core/layout/ng/ng_box.h
[add] https://crrev.com/2b4efe85b807d2fa034acd8108aa994148708e0a/third_party/WebKit/Source/core/layout/ng/ng_box_test.cc
[modify] https://crrev.com/2b4efe85b807d2fa034acd8108aa994148708e0a/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h
[modify] https://crrev.com/2b4efe85b807d2fa034acd8108aa994148708e0a/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 106 by bugdroid1@chromium.org, Nov 3
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/07703ad5e0afd141d4a6da847ffec5c372b7b566

commit 07703ad5e0afd141d4a6da847ffec5c372b7b566
Author: glebl <glebl@chromium.org>
Date: Thu Nov 03 16:57:01 2016

Constraint space for current child should be adjusted to offset.

As we now have space_for_current_child_ it should be used to search layout opportunities for floats. Also space_for_current_child_'s offset should be adjusted according to the available space.

List of changes:
- Change FindLayoutOpportunityForFragment to use space_for_current_child_.
- Rename CreateConstraintSpaceForChild -> CreateConstraintSpaceForCurrentChild and make it a private class's method.
- Adjust space_for_current_child_'s offset to the available space.
- Change NGBlockLayoutAlgorithmTest::PositionFloatFragments to include a regular block between floats.

BUG=635619

Review-Url: https://codereview.chromium.org/2468113003
Cr-Commit-Position: refs/heads/master@{#429622}

[modify] https://crrev.com/07703ad5e0afd141d4a6da847ffec5c372b7b566/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/07703ad5e0afd141d4a6da847ffec5c372b7b566/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/07703ad5e0afd141d4a6da847ffec5c372b7b566/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/07703ad5e0afd141d4a6da847ffec5c372b7b566/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/07703ad5e0afd141d4a6da847ffec5c372b7b566/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h

Project Member Comment 108 by bugdroid1@chromium.org, Nov 3
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/26c7e1870906e9af248b2b323dc68d6f6d5a9187

commit 26c7e1870906e9af248b2b323dc68d6f6d5a9187
Author: mathp <mathp@chromium.org>
Date: Thu Nov 03 19:33:28 2016

Revert of Add support of leader_point in NGLayoutOpportunityIterator. (patchset #3 id:40001 of https://codereview.chromium.org/2472583006/ )

Reason for revert:
Causing a failure on Mac MSAN:

https://build.chromium.org/p/chromium.memory/builders/Mac%20ASan%2064%20Tests%20%281%29/builds/23812

Original issue's description:
> Add support of leader_point in NGLayoutOpportunityIterator.
>
> Leader point together with origin_point creates a temporary exclusion that should be avoided in the layout opportunity iterator.
>
> BUG=635619
>
> Committed: https://crrev.com/2e09ff76918cbd153161b9ab1062e690eb67d3ab
> Cr-Commit-Position: refs/heads/master@{#429650}

TBR=ikilpatrick@chromium.org,atotic@chromium.org,cbiesinger@chromium.org,glebl@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=635619

Review-Url: https://codereview.chromium.org/2477843002
Cr-Commit-Position: refs/heads/master@{#429672}

[modify] https://crrev.com/26c7e1870906e9af248b2b323dc68d6f6d5a9187/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/26c7e1870906e9af248b2b323dc68d6f6d5a9187/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/26c7e1870906e9af248b2b323dc68d6f6d5a9187/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.h
[modify] https://crrev.com/26c7e1870906e9af248b2b323dc68d6f6d5a9187/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/26c7e1870906e9af248b2b323dc68d6f6d5a9187/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 109 by bugdroid1@chromium.org, Nov 4
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ee9219e2ac383a0f44fb7b40dac2b6d10a491935

commit ee9219e2ac383a0f44fb7b40dac2b6d10a491935
Author: glebl <glebl@chromium.org>
Date: Fri Nov 04 03:00:33 2016

Add support of optional leader_point in NGLayoutOpportunityIterator

Leader point together with origin_point creates a temporary exclusion that should be avoided in the layout opportunity iterator.

This patch is based on the already reviewed, submitted, reverted patch http://crrev.com/2472583006 with the only difference that it uses WTF::Optional for NGLayoutOpportunityIterator's optional parameters.

BUG=635619

Review-Url: https://codereview.chromium.org/2477913002
Cr-Commit-Position: refs/heads/master@{#429775}

[modify] https://crrev.com/ee9219e2ac383a0f44fb7b40dac2b6d10a491935/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/ee9219e2ac383a0f44fb7b40dac2b6d10a491935/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/ee9219e2ac383a0f44fb7b40dac2b6d10a491935/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.h
[modify] https://crrev.com/ee9219e2ac383a0f44fb7b40dac2b6d10a491935/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/ee9219e2ac383a0f44fb7b40dac2b6d10a491935/third_party/WebKit/Source/core/layout/ng/ng_units.h

Labels: -merge-merged-2840
[Automated comment] removing mislabelled merge-merged-2840
Project Member Comment 111 by bugdroid1@chromium.org, Nov 4
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3e1ff14ac40160b59482a6a5b7f831fed757804d

commit 3e1ff14ac40160b59482a6a5b7f831fed757804d
Author: cbiesinger <cbiesinger@chromium.org>
Date: Fri Nov 04 22:49:56 2016

[layoutng] For min/max-content, take CanUseNewLayout() into account

Otherwise we'll crash when we have inlines.

R=atotic@chromium.org,eae@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2475383002
Cr-Commit-Position: refs/heads/master@{#430045}

[modify] https://crrev.com/3e1ff14ac40160b59482a6a5b7f831fed757804d/third_party/WebKit/Source/core/layout/ng/ng_box.cc

Project Member Comment 112 by bugdroid1@chromium.org, Nov 8
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56

commit 0f0f0b8544ca09a87a7c855210ca8fc1128b5a56
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Tue Nov 08 00:11:29 2016

[LayoutNG] Split apart storage for AvailableSize and PercentageSize.

Additionally removes ContainerSize.

We've got lots of small corner cases which we aren't handling correctly
in ng_length_utils (i.e. orthoganal writing mode %-resolution). But
will fix these in follow-up patch.

BUG=635619

Review-Url: https://codereview.chromium.org/2483683003
Cr-Commit-Position: refs/heads/master@{#430434}

[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_box.cc
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_length_utils.h
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.cc
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_units.h
[modify] https://crrev.com/0f0f0b8544ca09a87a7c855210ca8fc1128b5a56/third_party/WebKit/Source/core/layout/ng/ng_units_test.cc

Project Member Comment 113 by bugdroid1@chromium.org, Nov 8
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/820cba16a1d9eb47f80fa916a94372f1542c0c2f

commit 820cba16a1d9eb47f80fa916a94372f1542c0c2f
Author: cbiesinger <cbiesinger@chromium.org>
Date: Tue Nov 08 19:14:36 2016

[layoutng] Implement min-/max-content part 2.

This adds support to ng_length_utils for min/max/fit-content. It does not yet
change NGBlockLayoutAlgorithm to compute and pass the values to these
functions. However, it does add NeedMinAndMaxContentSizes which the algorithm
can use to determine whether it should compute the sizes (this will be a
performance optimization that I expect to be very important).

R=atotic@chromium.org,eae@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2478263003
Cr-Commit-Position: refs/heads/master@{#430680}

[modify] https://crrev.com/820cba16a1d9eb47f80fa916a94372f1542c0c2f/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/820cba16a1d9eb47f80fa916a94372f1542c0c2f/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h
[modify] https://crrev.com/820cba16a1d9eb47f80fa916a94372f1542c0c2f/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/820cba16a1d9eb47f80fa916a94372f1542c0c2f/third_party/WebKit/Source/core/layout/ng/ng_length_utils.h
[modify] https://crrev.com/820cba16a1d9eb47f80fa916a94372f1542c0c2f/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc

Project Member Comment 114 by bugdroid1@chromium.org, Nov 9
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a08a21f0000c1ee452b59c5a1dc74221b50fd042

commit a08a21f0000c1ee452b59c5a1dc74221b50fd042
Author: atotic <atotic@chromium.org>
Date: Wed Nov 09 23:18:27 2016

NGPhysicalDimensions -> NGPhysicalBoxStrut

as decided in chat.

BUG=635619

Review-Url: https://codereview.chromium.org/2490703003
Cr-Commit-Position: refs/heads/master@{#431073}

[modify] https://crrev.com/a08a21f0000c1ee452b59c5a1dc74221b50fd042/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/a08a21f0000c1ee452b59c5a1dc74221b50fd042/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 116 by bugdroid1@chromium.org, Nov 17
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9

commit d9c529de305db6eb0dde1052a39c9dd4b06f9bc9
Author: glebl <glebl@chromium.org>
Date: Thu Nov 17 21:21:04 2016

Add the support of "clear" CSS property to NG block layout algorithm.

This patch adds the support of "clear" CSS property for floating and non-floating elements.

Please note that this doesn't currently support some edge cases, e.g.  margin collapsing
should not occur if "clear" is applied to non-floating blocks.

List of changes:
- Add last left/right float exclusions to NGPhysicalConstraintSpace. They are used to enforce the top edge alignment
  rule for floats and for the support of CSS "clear" property.
- Add a new version of NGExclusion that encapsulates the exclusion type and rectangle in logical coordindates that represents that exclusion.
- Added some helper read-only getters to NGBlockLayoutAlgorithm: CurrentChildStyle(), ConstraintSpace() etc.
- Added AdjustToCSSClear that has the main logic that calculates the right content's offset based on CSS "clear" value.

BUG=635619
TEST=NGBlockLayoutAlgorithmTest::PositionFragmentsWithClear,
virtual/layout_ng/fast/block/float/max-width-clear-float-with-overflow-hidden.html

Review-Url: https://codereview.chromium.org/2503953002
Cr-Commit-Position: refs/heads/master@{#432958}

[modify] https://crrev.com/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.h
[modify] https://crrev.com/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.cc
[modify] https://crrev.com/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h
[modify] https://crrev.com/d9c529de305db6eb0dde1052a39c9dd4b06f9bc9/third_party/WebKit/Source/core/layout/ng/ng_units.h

Labels: -Type-Bug Type-Feature
Project Member Comment 118 by bugdroid1@chromium.org, Nov 19
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e76a6397f156d4395468de7fa97fd46186f7c9bd

commit e76a6397f156d4395468de7fa97fd46186f7c9bd
Author: glebl <glebl@chromium.org>
Date: Fri Nov 18 23:56:27 2016

Fix the order of expected and actual values in PercentageResolutionSize test.

EXPECT_EQ expects that the 1st argument is the expected value. If the order is wrong it produces a confusing error message

BUG=635619

Review-Url: https://codereview.chromium.org/2513833002
Cr-Commit-Position: refs/heads/master@{#433335}

[modify] https://crrev.com/e76a6397f156d4395468de7fa97fd46186f7c9bd/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc

Project Member Comment 121 by bugdroid1@chromium.org, Nov 19
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fe55fbc67370abded2c79b78b2dad835345b0158

commit fe55fbc67370abded2c79b78b2dad835345b0158
Author: sadrul <sadrul@chromium.org>
Date: Sat Nov 19 06:00:51 2016

Revert of Remove redundant 'derived constraint space' setters from NGConstraintSpace (patchset #2 id:40001 of https://codereview.chromium.org/2515923002/ )

Reason for revert:
Causing wide-spread build failures, with errors like:

../../third_party/WebKit/Source/core/layout/ng/ng_absolute_utils.cc:74:13: error: no member named 'Size' in 'blink::NGConstraintSpace'
      space.Size().ConvertToPhysical(space.WritingMode());
      ~~~~~ ^

Original issue's description:
> Remove redundant 'derived constraint space' setters from NGConstraintSpace
>
> Remove
>   SetOverflowTriggersScrollbar
>   SetFixedSize
>   SetFragmentationType
>   SetIsNewFormattingContext
>   SetSize
>   Size
> from NGConstraintSpace. Use NGConstraintSpaceBuilder instead.
>
> BUG=635619
>
> Committed: https://crrev.com/2bd351a87b733b8b17f6507adb9b6d0829ca978f
> Cr-Commit-Position: refs/heads/master@{#433404}

TBR=ikilpatrick@chromium.org,cbiesinger@chromium.org,glebl@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=635619

Review-Url: https://codereview.chromium.org/2514693004
Cr-Commit-Position: refs/heads/master@{#433405}

[modify] https://crrev.com/fe55fbc67370abded2c79b78b2dad835345b0158/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/fe55fbc67370abded2c79b78b2dad835345b0158/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/fe55fbc67370abded2c79b78b2dad835345b0158/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/fe55fbc67370abded2c79b78b2dad835345b0158/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/fe55fbc67370abded2c79b78b2dad835345b0158/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc

Project Member Comment 122 by bugdroid1@chromium.org, Nov 21
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/df041f08c62f111ea75b36a9ba9bb81260f15233

commit df041f08c62f111ea75b36a9ba9bb81260f15233
Author: glebl <glebl@chromium.org>
Date: Mon Nov 21 19:40:44 2016

Remove redundant 'derived constraint space' setters from NGConstraintSpace

this is the exact copy of http://crrev.com/2515923002 that was reviewed and submitted. Unfortunately it had to be reverted because of the collision with another LayoutNG patch at the commit time.

Remove
  SetOverflowTriggersScrollbar
  SetFixedSize
  SetFragmentationType
  SetIsNewFormattingContext
  SetSize
  Size
from NGConstraintSpace. Use NGConstraintSpaceBuilder instead.

BUG=635619

Review-Url: https://codereview.chromium.org/2514343004
Cr-Commit-Position: refs/heads/master@{#433608}

[modify] https://crrev.com/df041f08c62f111ea75b36a9ba9bb81260f15233/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils.cc
[modify] https://crrev.com/df041f08c62f111ea75b36a9ba9bb81260f15233/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/df041f08c62f111ea75b36a9ba9bb81260f15233/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/df041f08c62f111ea75b36a9ba9bb81260f15233/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/df041f08c62f111ea75b36a9ba9bb81260f15233/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/df041f08c62f111ea75b36a9ba9bb81260f15233/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc

Project Member Comment 123 by bugdroid1@chromium.org, Nov 22
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/69dbc5fcb1586d6aa49f58863d6b26d24d336b15

commit 69dbc5fcb1586d6aa49f58863d6b26d24d336b15
Author: atotic <atotic@chromium.org>
Date: Tue Nov 22 19:46:55 2016

[LayoutNG]  Add out-of-flow descendants and offsets to NGPhysicalFragment

More prep work for abspos:
  Adds a list of out-of-flow descendants and their offsets to
  NGPhysicalFragment.

NGBlockLayoutAlgorithm needs to pass boxes it was unable to place
(out-of-flow) to its parent.
This will be done by storing unplaced boxes on the generated fragment.

BUG=635619

Review-Url: https://codereview.chromium.org/2521833002
Cr-Commit-Position: refs/heads/master@{#433945}

[modify] https://crrev.com/69dbc5fcb1586d6aa49f58863d6b26d24d336b15/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/69dbc5fcb1586d6aa49f58863d6b26d24d336b15/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/69dbc5fcb1586d6aa49f58863d6b26d24d336b15/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.cc
[modify] https://crrev.com/69dbc5fcb1586d6aa49f58863d6b26d24d336b15/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[modify] https://crrev.com/69dbc5fcb1586d6aa49f58863d6b26d24d336b15/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment_base.cc
[modify] https://crrev.com/69dbc5fcb1586d6aa49f58863d6b26d24d336b15/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment_base.h

Project Member Comment 124 by bugdroid1@chromium.org, Dec 1
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3d12834fa3981ef5f09b4c207c7cc17c56f5069f

commit 3d12834fa3981ef5f09b4c207c7cc17c56f5069f
Author: glebl <glebl@chromium.org>
Date: Thu Dec 01 21:09:08 2016

Deprecate NGPhysicalConstraintSpace

This patch deprecates NGPhysicalConstraintSpace and changes the LayoutNG code to use NGConstraintSpace and its builder everywhere instead.

List of changes:
1) NGConstraintSpaceBuilder::ToConstraintSpace returns NGConstraintSpace
2) NGPhysicalConstraintSpace is removed
3) Introduced NGExclusions to store the list of exclusions and last left/right floating exclusions.
4) NGConstraintSpace constructor is moved to private, so NGConstraintSpace can be only created via its builder.
5) Switching between inline/block happens in NGConstraintSpaceBuilder::ToConstraintSpace
6) Exclusions is shared with shared_ptr. A new exclusions list is created if there is no parent_space or when a new FC is established.

BUG=635619

Review-Url: https://codereview.chromium.org/2525033002
Cr-Commit-Position: refs/heads/master@{#435712}

[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils_test.cc
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.h
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
[delete] https://crrev.com/9f4dfb5d16885bf0189cdf21775a8095d0defa02/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.cc
[delete] https://crrev.com/9f4dfb5d16885bf0189cdf21775a8095d0defa02/third_party/WebKit/Source/core/layout/ng/ng_physical_constraint_space.h
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/core/layout/ng/ng_units.h
[modify] https://crrev.com/3d12834fa3981ef5f09b4c207c7cc17c56f5069f/third_party/WebKit/Source/web/tests/NGInlineLayoutTest.cpp

Project Member Comment 125 by bugdroid1@chromium.org, Dec 3
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e970904c78038db4d51fd4f911d08c40d9c59030

commit e970904c78038db4d51fd4f911d08c40d9c59030
Author: atotic <atotic@chromium.org>
Date: Sat Dec 03 02:51:30 2016

Implement collection of out-of-flow descendants

Out-of-flow descendants need to know what their static position would
have been. This is because abspos spec defaults to static position if
TLBL are not specified.

Oof descendant's dimensions are not known during propagation, only
it's logical top/left offset. The offset is propagated as NGCorner,
which is a PhysicalOffset + vertex location (topLeft, bottomLeft, etc)

Next step will be positioning of oof descendants.

BUG=635619

Review-Url: https://codereview.chromium.org/2540653003
Cr-Commit-Position: refs/heads/master@{#436151}

[modify] https://crrev.com/e970904c78038db4d51fd4f911d08c40d9c59030/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/e970904c78038db4d51fd4f911d08c40d9c59030/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/e970904c78038db4d51fd4f911d08c40d9c59030/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/e970904c78038db4d51fd4f911d08c40d9c59030/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/e970904c78038db4d51fd4f911d08c40d9c59030/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.cc
[modify] https://crrev.com/e970904c78038db4d51fd4f911d08c40d9c59030/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[modify] https://crrev.com/e970904c78038db4d51fd4f911d08c40d9c59030/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/e970904c78038db4d51fd4f911d08c40d9c59030/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 126 by bugdroid1@chromium.org, Dec 6
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bec09e64258ed346ac17bf741595275c3778087d

commit bec09e64258ed346ac17bf741595275c3778087d
Author: atotic <atotic@chromium.org>
Date: Tue Dec 06 01:04:21 2016

Move oof-descendants to NGPhysicalFragmentBase

As discussed in CR https://codereview.chromium.org/2540653003

As ng_text_fragments can also have oof descendants, oof descendants
should move to NGPhysicalFragmentBase

BUG=635619

Review-Url: https://codereview.chromium.org/2546353002
Cr-Commit-Position: refs/heads/master@{#436477}

[modify] https://crrev.com/bec09e64258ed346ac17bf741595275c3778087d/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/bec09e64258ed346ac17bf741595275c3778087d/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.cc
[modify] https://crrev.com/bec09e64258ed346ac17bf741595275c3778087d/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[modify] https://crrev.com/bec09e64258ed346ac17bf741595275c3778087d/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment_base.cc
[modify] https://crrev.com/bec09e64258ed346ac17bf741595275c3778087d/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment_base.h
[modify] https://crrev.com/bec09e64258ed346ac17bf741595275c3778087d/third_party/WebKit/Source/core/layout/ng/ng_physical_text_fragment.h
[modify] https://crrev.com/bec09e64258ed346ac17bf741595275c3778087d/third_party/WebKit/Source/core/layout/ng/ng_text_fragment.h

Project Member Comment 127 by bugdroid1@chromium.org, Dec 9
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/daaaf8661aa98f3f3eaa69a30816c2fae4f32704

commit daaaf8661aa98f3f3eaa69a30816c2fae4f32704
Author: atotic <atotic@chromium.org>
Date: Fri Dec 09 23:20:15 2016

Primary fix: Make AlgorithmForInputNode use container constraint space insted of child space.

Secondary: This change causes constraint space to not be const

Also, minor bug fixes by Ian to make tests pass.

BUG=635619

Review-Url: https://codereview.chromium.org/2562703003
Cr-Commit-Position: refs/heads/master@{#437683}

[modify] https://crrev.com/daaaf8661aa98f3f3eaa69a30816c2fae4f32704/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.cc
[modify] https://crrev.com/daaaf8661aa98f3f3eaa69a30816c2fae4f32704/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/daaaf8661aa98f3f3eaa69a30816c2fae4f32704/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/daaaf8661aa98f3f3eaa69a30816c2fae4f32704/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/daaaf8661aa98f3f3eaa69a30816c2fae4f32704/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/daaaf8661aa98f3f3eaa69a30816c2fae4f32704/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
[modify] https://crrev.com/daaaf8661aa98f3f3eaa69a30816c2fae4f32704/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h
[modify] https://crrev.com/daaaf8661aa98f3f3eaa69a30816c2fae4f32704/third_party/WebKit/Source/core/layout/ng/ng_layout_coordinator.cc
[modify] https://crrev.com/daaaf8661aa98f3f3eaa69a30816c2fae4f32704/third_party/WebKit/Source/core/layout/ng/ng_layout_coordinator.h
[modify] https://crrev.com/daaaf8661aa98f3f3eaa69a30816c2fae4f32704/third_party/WebKit/Source/core/layout/ng/ng_layout_input_node.cc
[modify] https://crrev.com/daaaf8661aa98f3f3eaa69a30816c2fae4f32704/third_party/WebKit/Source/core/layout/ng/ng_layout_input_node.h

Project Member Comment 130 by bugdroid1@chromium.org, Dec 17
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c3d0d04110e4a51acf4749507a42df8d18fc3022

commit c3d0d04110e4a51acf4749507a42df8d18fc3022
Author: glebl <glebl@chromium.org>
Date: Sat Dec 17 21:50:06 2016

Remove obsolete NGConstraintSpace::ChildSpace

After http://crrev.com/2562703003 NGConstraintSpace::ChildSpace became obsolete. Therefore this patch removes it.

BUG=635619

Review-Url: https://codereview.chromium.org/2582913002
Cr-Commit-Position: refs/heads/master@{#439354}

[modify] https://crrev.com/c3d0d04110e4a51acf4749507a42df8d18fc3022/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/c3d0d04110e4a51acf4749507a42df8d18fc3022/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h

Project Member Comment 132 by bugdroid1@chromium.org, Dec 22
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/aad3ca9d2bc90049564e97e956cc5ebbf9e8159b

commit aad3ca9d2bc90049564e97e956cc5ebbf9e8159b
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Dec 22 05:10:35 2016

[layoutng] Add a shrink-to-fit flag to the constraint space

This is useful for a few things:
- A way to communicate from the layout algorithm to ng_length_utils that we
  should treat auto as shrink-to-fit. There's no good other way to do this --
  ng_length_utils gets the logicalWidth() property directly and needs to know
  to treat it specially.
  Conversely I did not want to encode this knowledge inside of length utils
  because that gets complicated fast and puts special knowledge in a single
  place instead of distributing it to caller layout algorithms which are a
  much more natural spot.
- It allows a parent layout algorithm to tell a child box that it should shrink
  to fit even when it normally wouldn't, e.g. for flex items.

This is essentially a companion change to
https://codereview.chromium.org/2583033004/ -- with both these changes we
should correctly size inline-blocks and floats.

R=ikilpatrick@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2587283004
Cr-Commit-Position: refs/heads/master@{#440344}

[modify] https://crrev.com/aad3ca9d2bc90049564e97e956cc5ebbf9e8159b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/aad3ca9d2bc90049564e97e956cc5ebbf9e8159b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/aad3ca9d2bc90049564e97e956cc5ebbf9e8159b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/aad3ca9d2bc90049564e97e956cc5ebbf9e8159b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
[modify] https://crrev.com/aad3ca9d2bc90049564e97e956cc5ebbf9e8159b/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h
[modify] https://crrev.com/aad3ca9d2bc90049564e97e956cc5ebbf9e8159b/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/aad3ca9d2bc90049564e97e956cc5ebbf9e8159b/third_party/WebKit/Source/core/layout/ng/ng_length_utils.h

Project Member Comment 133 by bugdroid1@chromium.org, Dec 22
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/372351b102c692f8e35495c9dd4fce17b445aa12

commit 372351b102c692f8e35495c9dd4fce17b445aa12
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Dec 22 17:39:33 2016

[layoutng] Implement support for width: {min,max,fit}-content

This also implements shrink-to-fit for inline-block and floats,
which is now a one-line change.

BUG=635619
R=ikilpatrick@chromium.org

Review-Url: https://codereview.chromium.org/2583033004
Cr-Commit-Position: refs/heads/master@{#440447}

[modify] https://crrev.com/372351b102c692f8e35495c9dd4fce17b445aa12/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/372351b102c692f8e35495c9dd4fce17b445aa12/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/372351b102c692f8e35495c9dd4fce17b445aa12/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc

Project Member Comment 134 by bugdroid1@chromium.org, Dec 29
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b235a3a7becc58e7f82760c5ee5da04f767ecbd8

commit b235a3a7becc58e7f82760c5ee5da04f767ecbd8
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Dec 29 19:03:38 2016

[layoutng] Better abspos support in legacy interop

In legacy layout, abspos differs from regular blocks in that abspos blocks
position themselves in their own layout, instead of getting positioned by
their parent. So it we are a positioned block in a legacy-layout containing
block, we have to emulate this positioning, which is what this change does.

Fixes this testcase:
<div style="height: 200px; background: yellow; position: relative;">
  XXX
  <div style="position: absolute; bottom: 0;">
    <div>Bottom</div>
  </div>
</div>

R=atotic@chromium.org,ikilpatrick@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2591273002
Cr-Commit-Position: refs/heads/master@{#440975}

[modify] https://crrev.com/b235a3a7becc58e7f82760c5ee5da04f767ecbd8/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.cc

Project Member Comment 135 by bugdroid1@chromium.org, Jan 4
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c31508114a74d26be7dd38bd08a047d1533f34df

commit c31508114a74d26be7dd38bd08a047d1533f34df
Author: atotic <atotic@chromium.org>
Date: Wed Jan 04 00:44:28 2017

Negative margin lengths are legal

Fix for cbiesinger comment:
https://codereview.chromium.org/2568743005#msg16

Tnx to ikilpatrick for making me put these asserts for all code paths,
this bug got caught early.

BUG=635619

[ng_negmargin]

Review-Url: https://codereview.chromium.org/2605093002
Cr-Commit-Position: refs/heads/master@{#441268}

[modify] https://crrev.com/c31508114a74d26be7dd38bd08a047d1533f34df/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 136 by bugdroid1@chromium.org, Jan 4
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a572b1d7a0042ab8974e4cd8e7873200446ccc6b

commit a572b1d7a0042ab8974e4cd8e7873200446ccc6b
Author: atotic <atotic@chromium.org>
Date: Wed Jan 04 09:15:09 2017

Place the out of flow positioned blocks.

Connects ng_block_algorithm with ng_absolute_utils. block_algorithm
collects all the oof blocks, and positions them using
ng_out_of_flow_layout_part.

Future work:
1) use ResolveInline/Block Length to compute width/height inside
ng_absolute_utils. This is needed to properly resolve MinContent/MaxContent
 lengths.

2) Investigate what happens when out_of_flow blocks cross the old/new layout
boundary. There might be cases we are not handling.

3?) Unify ComputeAbsoluteHorizontal and ComputeAbsoluteVertical.
They are almost the same function (Ian would like this).

BUG=635619 [ng_place]

Review-Url: https://codereview.chromium.org/2568743005
Cr-Commit-Position: refs/heads/master@{#441347}

[modify] https://crrev.com/a572b1d7a0042ab8974e4cd8e7873200446ccc6b/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/a572b1d7a0042ab8974e4cd8e7873200446ccc6b/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/a572b1d7a0042ab8974e4cd8e7873200446ccc6b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/a572b1d7a0042ab8974e4cd8e7873200446ccc6b/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/a572b1d7a0042ab8974e4cd8e7873200446ccc6b/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/a572b1d7a0042ab8974e4cd8e7873200446ccc6b/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/a572b1d7a0042ab8974e4cd8e7873200446ccc6b/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[add] https://crrev.com/a572b1d7a0042ab8974e4cd8e7873200446ccc6b/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
[add] https://crrev.com/a572b1d7a0042ab8974e4cd8e7873200446ccc6b/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.h
[modify] https://crrev.com/a572b1d7a0042ab8974e4cd8e7873200446ccc6b/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/a572b1d7a0042ab8974e4cd8e7873200446ccc6b/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 137 by bugdroid1@chromium.org, Jan 5
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a918c03eaaf3670312aae46b812ffa16012ad338

commit a918c03eaaf3670312aae46b812ffa16012ad338
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Jan 05 18:47:49 2017

[layoutng] Make RunOldLayout respect IsFixedSize

If IsFixedSize is true for a dimension, sets the override size
accordingly, matching the code in ng_length_utils.

Also adds a comment to ng_constraint_space.h for how this works
(could've sworn that we already had such a comment)

R=eae@chromium.org,atotic@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2611033002
Cr-Commit-Position: refs/heads/master@{#441713}

[modify] https://crrev.com/a918c03eaaf3670312aae46b812ffa16012ad338/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/a918c03eaaf3670312aae46b812ffa16012ad338/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h

Project Member Comment 138 by bugdroid1@chromium.org, Jan 6
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2b91b28e0b5fcf099eba2e5b804cd82047c79642

commit 2b91b28e0b5fcf099eba2e5b804cd82047c79642
Author: atotic <atotic@chromium.org>
Date: Fri Jan 06 01:51:03 2017

Renames

NGPhysicalFragmentBase => NGPhysicalFragment
NGPhysicalFragment => NGPhysicalBoxFragment
NGFragmentBase => NGFragment
NGFragment => NGBoxFragment

Suggested by Morten.
Thanks to Eclipse for refactoring tools.

BUG=635619

Review-Url: https://codereview.chromium.org/2612103004
Cr-Commit-Position: refs/heads/master@{#441807}

[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_block_node_test.cc
[add] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_box_fragment.cc
[add] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_box_fragment.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_fragment.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_fragment.h
[delete] https://crrev.com/bfb349df416fa51bfdda643a08e42e2ba1527fe1/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.cc
[delete] https://crrev.com/bfb349df416fa51bfdda643a08e42e2ba1527fe1/third_party/WebKit/Source/core/layout/ng/ng_fragment_base.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_inline_node_test.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_layout_coordinator.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_layout_coordinator.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_layout_input_node.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_legacy_block_layout_algorithm.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_legacy_block_layout_algorithm.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_length_utils.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_line_builder.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.h
[add] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.cc
[add] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[delete] https://crrev.com/bfb349df416fa51bfdda643a08e42e2ba1527fe1/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment_base.cc
[delete] https://crrev.com/bfb349df416fa51bfdda643a08e42e2ba1527fe1/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment_base.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_physical_text_fragment.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_text_fragment.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.cc
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.h
[modify] https://crrev.com/2b91b28e0b5fcf099eba2e5b804cd82047c79642/third_party/WebKit/Source/web/tests/NGInlineLayoutTest.cpp

Project Member Comment 140 by bugdroid1@chromium.org, Jan 10
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2d8a66165955cb54927f24e7ea53591a82177a99

commit 2d8a66165955cb54927f24e7ea53591a82177a99
Author: atotic <atotic@chromium.org>
Date: Tue Jan 10 23:34:51 2017

Fix incorrect margin computation

This bug caused LayoutTest to fail:
virtual/layout_ng/css2.1/20110323/absolute-replaced-width-055.htm

BUG=635619

[ng_bug_margin_top]

Review-Url: https://codereview.chromium.org/2628583003
Cr-Commit-Position: refs/heads/master@{#442726}

[modify] https://crrev.com/2d8a66165955cb54927f24e7ea53591a82177a99/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils.cc

Project Member Comment 141 by bugdroid1@chromium.org, Jan 10
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/67e0a1510f8a824b0e07c61484bc55c28c2f6c86

commit 67e0a1510f8a824b0e07c61484bc55c28c2f6c86
Author: atotic <atotic@chromium.org>
Date: Tue Jan 10 23:39:23 2017

Fix wrong percent_resolution_size inside ConstraintSpace::CreateFromLayoutObject.
This caused RunOldLayout to use wrong PercentageResolutionSize

<main style="width:500px;height:150px;position:relative;border: solid black">
  <div style="position:absolute;top:25%;width:50%;background-color:yellow;">hi</div>
</main>

This used to display at 1/2 width in NGLayout.

BUG=635619

[ng_constraint_width]

Review-Url: https://codereview.chromium.org/2616093004
Cr-Commit-Position: refs/heads/master@{#442730}

[modify] https://crrev.com/67e0a1510f8a824b0e07c61484bc55c28c2f6c86/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc

Project Member Comment 142 by bugdroid1@chromium.org, Jan 11
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6d25e92003589f50192f951c654dc7ee98bad15c

commit 6d25e92003589f50192f951c654dc7ee98bad15c
Author: cbiesinger <cbiesinger@chromium.org>
Date: Wed Jan 11 23:12:45 2017

[layoutng] Slightly simplify some code

This is my review comment from https://codereview.chromium.org/2616093004/

R=atotic@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2628983002
Cr-Commit-Position: refs/heads/master@{#443045}

[modify] https://crrev.com/6d25e92003589f50192f951c654dc7ee98bad15c/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc

Project Member Comment 143 by bugdroid1@chromium.org, Jan 11
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/513f1f02c5c928367006c600cd1098f6315654ca

commit 513f1f02c5c928367006c600cd1098f6315654ca
Author: cbiesinger <cbiesinger@chromium.org>
Date: Wed Jan 11 23:44:10 2017

[layoutng] Use the override width even when we're not a flex item

(And also use it for positioned boxes)

We want to use this for layoutng/legacy interop. For legacy layout,
there should be no change in behavior because flexbox is currently
the only caller of this function:
https://cs.chromium.org/search/?q=setOverrideLogicalContentWidth&sq=package:chromium&type=cs

Interestingly, the height version did not have this limitation already.

This patch also deleted an outdated FIXME comment.

R=atotic@chromium.org,eae@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2624143005
Cr-Commit-Position: refs/heads/master@{#443056}

[modify] https://crrev.com/513f1f02c5c928367006c600cd1098f6315654ca/third_party/WebKit/Source/core/layout/LayoutBox.cpp

Project Member Comment 144 by bugdroid1@chromium.org, Jan 13
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8b7f961697115ebfa0dc4eb98a98ff0ab3d1c4a8

commit 8b7f961697115ebfa0dc4eb98a98ff0ab3d1c4a8
Author: atotic <atotic@chromium.org>
Date: Fri Jan 13 00:47:45 2017

[layoutng] Fix extra margin space computation

The Optional<> rewrite reversed the sign on extra margin space.

Also updated test expectations. Down to 165 failed from 207

BUG=635619

Review-Url: https://codereview.chromium.org/2623103002
Cr-Commit-Position: refs/heads/master@{#443419}

[modify] https://crrev.com/8b7f961697115ebfa0dc4eb98a98ff0ab3d1c4a8/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/8b7f961697115ebfa0dc4eb98a98ff0ab3d1c4a8/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils.cc

Project Member Comment 145 by bugdroid1@chromium.org, Jan 19
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/846a1b9762d89d23f293b0492df433e2239f71f5

commit 846a1b9762d89d23f293b0492df433e2239f71f5
Author: atotic <atotic@chromium.org>
Date: Thu Jan 19 00:58:40 2017

Fixed position with left:auto was broken because element's static position
was not propagated to old layout.

computeLogicalWidth(computedValues) eventually uses
layer()->getStaticInlinePosition
for positioning if left or top are not set.

We were not saving this value. I fixed it by saving the value inside the builder.
The reason for using builder is code reuse among different algorithms.

The fix makes 3 more tests pass.

Example:

<p>Yo</p>
<div id="div1" style="position:fixed:width:9px;height:9px;background-color:yellow" ></div>

BUG=635619
[ng_save_static]

Review-Url: https://codereview.chromium.org/2640153002
Cr-Commit-Position: refs/heads/master@{#444577}

[modify] https://crrev.com/846a1b9762d89d23f293b0492df433e2239f71f5/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/846a1b9762d89d23f293b0492df433e2239f71f5/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/846a1b9762d89d23f293b0492df433e2239f71f5/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/846a1b9762d89d23f293b0492df433e2239f71f5/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc

Project Member Comment 146 by bugdroid1@chromium.org, Jan 19
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3c1b4a7b6e20faedb8ae1c069796a3651bdda746

commit 3c1b4a7b6e20faedb8ae1c069796a3651bdda746
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Thu Jan 19 02:43:15 2017

[LayoutNG] Remove the state machine from ng_out_of_flow_layout_part.

This is part of removing the resumable layout code from LayoutNG.

This also fixes a bug where node_space_ wasn't getting reset at the start of Layout().

BUG=635619

Review-Url: https://codereview.chromium.org/2636353002
Cr-Commit-Position: refs/heads/master@{#444602}

[modify] https://crrev.com/3c1b4a7b6e20faedb8ae1c069796a3651bdda746/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils.cc
[modify] https://crrev.com/3c1b4a7b6e20faedb8ae1c069796a3651bdda746/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils.h
[modify] https://crrev.com/3c1b4a7b6e20faedb8ae1c069796a3651bdda746/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/3c1b4a7b6e20faedb8ae1c069796a3651bdda746/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/3c1b4a7b6e20faedb8ae1c069796a3651bdda746/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/3c1b4a7b6e20faedb8ae1c069796a3651bdda746/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/3c1b4a7b6e20faedb8ae1c069796a3651bdda746/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
[modify] https://crrev.com/3c1b4a7b6e20faedb8ae1c069796a3651bdda746/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.h

Project Member Comment 148 by bugdroid1@chromium.org, Jan 19
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/01fde50580297be95d015b38d99e6b6d44297fb4

commit 01fde50580297be95d015b38d99e6b6d44297fb4
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Thu Jan 19 20:22:48 2017

[LayoutNG] Initial pass of removing the state machine from ng_block_layout_algorithm.

If followup patches I'll refactor the code to be more readable, this
just removes the state machine in a simple way.

BUG=635619

Review-Url: https://codereview.chromium.org/2647443005
Cr-Commit-Position: refs/heads/master@{#444834}

[modify] https://crrev.com/01fde50580297be95d015b38d99e6b6d44297fb4/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/01fde50580297be95d015b38d99e6b6d44297fb4/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/01fde50580297be95d015b38d99e6b6d44297fb4/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc

Project Member Comment 149 by bugdroid1@chromium.org, Jan 20
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ff9ccb9534870244065db87766a709a23647ff6f

commit ff9ccb9534870244065db87766a709a23647ff6f
Author: glebl <glebl@chromium.org>
Date: Fri Jan 20 05:48:36 2017

Make NGBlockLayoutAlgorithmTest inherit RenderingTest

With RenderingTest it's possible to separate HTML test representation and unittest validation logic.

BUG=635619

Review-Url: https://codereview.chromium.org/2560233003
Cr-Commit-Position: refs/heads/master@{#444988}

[modify] https://crrev.com/ff9ccb9534870244065db87766a709a23647ff6f/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc

Project Member Comment 151 by bugdroid1@chromium.org, Jan 21
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e100229f582a151b27bfe1d1bd85942b5b7d05e8

commit e100229f582a151b27bfe1d1bd85942b5b7d05e8
Author: atotic <atotic@chromium.org>
Date: Sat Jan 21 01:36:48 2017

Fix google.com rendering: UpdatePosition for descendants

I had to touch LayoutOutOfFlowChild, so I also ripped
out old state-related stuff.

BUG=635619

Review-Url: https://codereview.chromium.org/2644933005
Cr-Commit-Position: refs/heads/master@{#445244}

[modify] https://crrev.com/e100229f582a151b27bfe1d1bd85942b5b7d05e8/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/e100229f582a151b27bfe1d1bd85942b5b7d05e8/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/e100229f582a151b27bfe1d1bd85942b5b7d05e8/third_party/WebKit/Source/core/layout/ng/ng_block_node.h

Project Member Comment 152 by bugdroid1@chromium.org, Jan 21
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0e7df9ebd6385e1f02a328f864c8bff48eb5cbeb

commit 0e7df9ebd6385e1f02a328f864c8bff48eb5cbeb
Author: atotic <atotic@chromium.org>
Date: Sat Jan 21 03:41:34 2017

Fix how we constrain width/height by min/max

According to the spec:
- if min/max change the computed length, the algorithm should run
again with length being the clamped length value.

This also fixes a single failing test.

BUG=635619

Review-Url: https://codereview.chromium.org/2645863005
Cr-Commit-Position: refs/heads/master@{#445267}

[modify] https://crrev.com/0e7df9ebd6385e1f02a328f864c8bff48eb5cbeb/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/0e7df9ebd6385e1f02a328f864c8bff48eb5cbeb/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils.cc

Project Member Comment 153 by bugdroid1@chromium.org, Jan 21
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0df262f32f773d7655aba8b5990ffbc2d04cc622

commit 0df262f32f773d7655aba8b5990ffbc2d04cc622
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Sat Jan 21 20:04:46 2017

[LayoutNG] Remove the ng_layout_coordinator and temporary LayoutSync method.

Algorithms now just call the Layout() method on the NGInputNode which is
responsible for selecting an algorithm to produce a fragment.

BUG=635619

Review-Url: https://codereview.chromium.org/2649583002
Cr-Commit-Position: refs/heads/master@{#445292}

[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.cc
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.h
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h
[delete] https://crrev.com/ac3b36a8e91405bedccaa90e221b784c26cbadb5/third_party/WebKit/Source/core/layout/ng/ng_layout_coordinator.cc
[delete] https://crrev.com/ac3b36a8e91405bedccaa90e221b784c26cbadb5/third_party/WebKit/Source/core/layout/ng/ng_layout_coordinator.h
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_layout_input_node.h
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_legacy_block_layout_algorithm.cc
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_legacy_block_layout_algorithm.h
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.cc
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.h
[modify] https://crrev.com/0df262f32f773d7655aba8b5990ffbc2d04cc622/third_party/WebKit/Source/web/tests/NGInlineLayoutTest.cpp

Project Member Comment 154 by bugdroid1@chromium.org, Jan 23
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/38e16a89fed5f85376cbb78ade464cc4960d433e

commit 38e16a89fed5f85376cbb78ade464cc4960d433e
Author: glebl <glebl@chromium.org>
Date: Mon Jan 23 21:16:44 2017

Introduce NGFloatingObject

NGFloatingObject holds all information needed to position floats in
old/new layout tree.

If a float can not determine its position in space (for example because
of margin collapsing case) it is added to the fragment's
UnpositionedFloats list. When we reach the fragment that can resolve
its position in space all pending floats will be positioned and added
to the PositionedFloats list. PositionedFloats list is used to
create/place  FloatingObject in old layout tree.

BUG=635619

Review-Url: https://codereview.chromium.org/2642823008
Cr-Commit-Position: refs/heads/master@{#445488}

[modify] https://crrev.com/38e16a89fed5f85376cbb78ade464cc4960d433e/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/38e16a89fed5f85376cbb78ade464cc4960d433e/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/38e16a89fed5f85376cbb78ade464cc4960d433e/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/38e16a89fed5f85376cbb78ade464cc4960d433e/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[add] https://crrev.com/38e16a89fed5f85376cbb78ade464cc4960d433e/third_party/WebKit/Source/core/layout/ng/ng_floating_object.h
[modify] https://crrev.com/38e16a89fed5f85376cbb78ade464cc4960d433e/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/38e16a89fed5f85376cbb78ade464cc4960d433e/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/38e16a89fed5f85376cbb78ade464cc4960d433e/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.cc
[modify] https://crrev.com/38e16a89fed5f85376cbb78ade464cc4960d433e/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.h
[modify] https://crrev.com/38e16a89fed5f85376cbb78ade464cc4960d433e/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.cc
[modify] https://crrev.com/38e16a89fed5f85376cbb78ade464cc4960d433e/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[modify] https://crrev.com/38e16a89fed5f85376cbb78ade464cc4960d433e/third_party/WebKit/Source/core/layout/ng/ng_physical_text_fragment.h

Project Member Comment 156 by bugdroid1@chromium.org, Jan 24
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/babdd037f833053d63076cdc01143d76977db23d

commit babdd037f833053d63076cdc01143d76977db23d
Author: glebl <glebl@chromium.org>
Date: Tue Jan 24 12:27:38 2017

Deprecate the currently used NGMarginStrut in favor of the new one.

This will deprecate NGMarginStrut and introduce the new NGMarginStrut with new interface.
See http://crrev.com/2597823004 for more details about how it will be used.

BUG=635619

Review-Url: https://codereview.chromium.org/2651853002
Cr-Commit-Position: refs/heads/master@{#445709}

[modify] https://crrev.com/babdd037f833053d63076cdc01143d76977db23d/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/babdd037f833053d63076cdc01143d76977db23d/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/babdd037f833053d63076cdc01143d76977db23d/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/babdd037f833053d63076cdc01143d76977db23d/third_party/WebKit/Source/core/layout/ng/ng_box_fragment.cc
[modify] https://crrev.com/babdd037f833053d63076cdc01143d76977db23d/third_party/WebKit/Source/core/layout/ng/ng_box_fragment.h
[modify] https://crrev.com/babdd037f833053d63076cdc01143d76977db23d/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/babdd037f833053d63076cdc01143d76977db23d/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/babdd037f833053d63076cdc01143d76977db23d/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.cc
[modify] https://crrev.com/babdd037f833053d63076cdc01143d76977db23d/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.h
[modify] https://crrev.com/babdd037f833053d63076cdc01143d76977db23d/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/babdd037f833053d63076cdc01143d76977db23d/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 157 by bugdroid1@chromium.org, Jan 25
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/59c1ac58a65bb815893621feb68fe228e051a2b4

commit 59c1ac58a65bb815893621feb68fe228e051a2b4
Author: glebl <glebl@chromium.org>
Date: Wed Jan 25 01:28:20 2017

Rewrite LayoutNG margin collapsing/floats unit tests

This patch rewrites PositionFloatFragments, CollapsingMarginsCase2WithFloats,
CollapsingMarginsCase1WithFloats and PositionFloatInsideEmptyBlocks(new).

Also it makes NGBlockLayoutAlgorithmTest to be based on RenderingTest. That
allows to use setBodyInnerHTML to set HTML representation of tests and enables
unittests to access old layout objects like FloatingObjects etc.

The tests that are being changed here are temporarily marked as DISABLED.
That's because the old tests are not fully correct. For the new float/margins
collapsing algorithm these new tests will set correct expectations and will
be enabled once the new code checked in.

BUG=635619

Review-Url: https://codereview.chromium.org/2641253002
Cr-Commit-Position: refs/heads/master@{#445900}

[modify] https://crrev.com/59c1ac58a65bb815893621feb68fe228e051a2b4/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/59c1ac58a65bb815893621feb68fe228e051a2b4/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 158 by bugdroid1@chromium.org, Jan 25
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f855b40902acc2b89ae360cac0eadd410bffd6a5

commit f855b40902acc2b89ae360cac0eadd410bffd6a5
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Wed Jan 25 03:43:40 2017

[LayoutNG] Add LayoutObject pointer to each NGPhysicalFragment.

This pointer is for:
 1) Copying back data to the legacy layout tree inside NGBlockNode.
 2) When the legacy layout tree is using fragments for geometry
    information this will be used while walking the fragment tree to
    access the layout object which generated the fragment.

BUG=635619

Review-Url: https://codereview.chromium.org/2653773004
Cr-Commit-Position: refs/heads/master@{#445932}

[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.h
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_inline_node_test.cc
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_layout_input_node.cc
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_layout_input_node.h
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.cc
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.h
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.cc
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/core/layout/ng/ng_physical_text_fragment.h
[modify] https://crrev.com/f855b40902acc2b89ae360cac0eadd410bffd6a5/third_party/WebKit/Source/web/tests/NGInlineLayoutTest.cpp

Project Member Comment 159 by bugdroid1@chromium.org, Jan 25
Project Member Comment 160 by bugdroid1@chromium.org, Jan 26
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2f09779466558e6e2ce51f9fa74ec00c10cdc8c6

commit 2f09779466558e6e2ce51f9fa74ec00c10cdc8c6
Author: dgrogan <dgrogan@chromium.org>
Date: Thu Jan 26 20:10:43 2017

[LayoutNG] Return MinAndMaxContentSizes by value, step 1

It's small enough that we probably don't need to worry about copying it.

ComputeMinAndMaxContentSizesSync was a small convenience wrapper that
did this; we don't need it anymore.

Step 2 will tackle NGBlockLayoutAlgorithm::ComputeMinAndMaxContentSizes

BUG=635619

Review-Url: https://codereview.chromium.org/2656693007
Cr-Commit-Position: refs/heads/master@{#446421}

[modify] https://crrev.com/2f09779466558e6e2ce51f9fa74ec00c10cdc8c6/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/2f09779466558e6e2ce51f9fa74ec00c10cdc8c6/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/2f09779466558e6e2ce51f9fa74ec00c10cdc8c6/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/2f09779466558e6e2ce51f9fa74ec00c10cdc8c6/third_party/WebKit/Source/core/layout/ng/ng_block_node_test.cc
[modify] https://crrev.com/2f09779466558e6e2ce51f9fa74ec00c10cdc8c6/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc

Project Member Comment 161 by bugdroid1@chromium.org, Jan 30
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8772b878183be72d544d3f9d0267b9255e1f1f98

commit 8772b878183be72d544d3f9d0267b9255e1f1f98
Author: glebl <glebl@chromium.org>
Date: Mon Jan 30 22:04:37 2017

Avoid double layout for writing mode roots if LayoutNG is enabled

In legacy code we perform a series of subtree layouts that can be
avoided in LayoutNG code.

This patch disables layoutOrthogonalWritingModeRoots if layoutNG is
enabled.

BUG=635619

Review-Url: https://codereview.chromium.org/2666663002
Cr-Commit-Position: refs/heads/master@{#447083}

[modify] https://crrev.com/8772b878183be72d544d3f9d0267b9255e1f1f98/third_party/WebKit/Source/core/frame/FrameView.cpp

Project Member Comment 163 by bugdroid1@chromium.org, Feb 1
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d1b7237e603d1993bdeb0eefed98002d433ba31f

commit d1b7237e603d1993bdeb0eefed98002d433ba31f
Author: cbiesinger <cbiesinger@chromium.org>
Date: Wed Feb 01 22:50:11 2017

[layoutng] Also add a DCHECK for the percentage resolution size

R=atotic@chromium.org,glebl@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2671543002
Cr-Commit-Position: refs/heads/master@{#447627}

[modify] https://crrev.com/d1b7237e603d1993bdeb0eefed98002d433ba31f/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc

Project Member Comment 164 by bugdroid1@chromium.org, Feb 2
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3a4d2a76410d5606a26578e0ae0be4bec5f32d04

commit 3a4d2a76410d5606a26578e0ae0be4bec5f32d04
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Thu Feb 02 01:38:43 2017

[LayoutNG] Make NG algorithms non-oilpan.

This also deletes NGLegacyBlockLayoutAlgorithm which was left over from
having the coordinator and cleans up a bunch of un-used things in
NGLayoutAlgorithm.

BUG=635619

Review-Url: https://codereview.chromium.org/2668183003
Cr-Commit-Position: refs/heads/master@{#447675}

[modify] https://crrev.com/3a4d2a76410d5606a26578e0ae0be4bec5f32d04/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/3a4d2a76410d5606a26578e0ae0be4bec5f32d04/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/3a4d2a76410d5606a26578e0ae0be4bec5f32d04/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/3a4d2a76410d5606a26578e0ae0be4bec5f32d04/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/3a4d2a76410d5606a26578e0ae0be4bec5f32d04/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
[modify] https://crrev.com/3a4d2a76410d5606a26578e0ae0be4bec5f32d04/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.h
[modify] https://crrev.com/3a4d2a76410d5606a26578e0ae0be4bec5f32d04/third_party/WebKit/Source/core/layout/ng/ng_inline_node_test.cc
[modify] https://crrev.com/3a4d2a76410d5606a26578e0ae0be4bec5f32d04/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h
[delete] https://crrev.com/3daa51cafe8f6adb1f308775f91274beb60154e2/third_party/WebKit/Source/core/layout/ng/ng_layout_input_node.cc
[modify] https://crrev.com/3a4d2a76410d5606a26578e0ae0be4bec5f32d04/third_party/WebKit/Source/core/layout/ng/ng_layout_input_node.h
[delete] https://crrev.com/3daa51cafe8f6adb1f308775f91274beb60154e2/third_party/WebKit/Source/core/layout/ng/ng_legacy_block_layout_algorithm.cc
[delete] https://crrev.com/3daa51cafe8f6adb1f308775f91274beb60154e2/third_party/WebKit/Source/core/layout/ng/ng_legacy_block_layout_algorithm.h
[modify] https://crrev.com/3a4d2a76410d5606a26578e0ae0be4bec5f32d04/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.cc
[modify] https://crrev.com/3a4d2a76410d5606a26578e0ae0be4bec5f32d04/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.h

Blocking: 687856
Project Member Comment 167 by bugdroid1@chromium.org, Feb 4
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e37073cf5dc5e7e0a770e967af8571d455cacfe4

commit e37073cf5dc5e7e0a770e967af8571d455cacfe4
Author: atotic <atotic@chromium.org>
Date: Sat Feb 04 00:42:03 2017

Fix: absolutely positioned block too wide in LegacyLayout

example:
<style type="text/css">
  div#green-overlapping-test
    {
      border-left: green solid 25px;
      border-right: green solid 75px;
      height: 100px;
      left: auto;
      position: absolute;
      right: auto;
      width: auto;
      writing-mode: horizontal-tb;
    }

     div#red-overlapped-reference
    {
      background-color: red;
      height: 100px;
      width: 100px;
    }

</style>
  <div id="green-overlapping-test"></div>
  <div id="red-overlapped-reference"></div>

cause:
Inside ng_block_layout_algorithm, we set initial inline length to
width of containing space.
inline_length comes from ResolveInlineLength.
As containing_space does not have ShrinkToFit flag, ResolveInlineLength defaults
to width of containing box.
I believe containing_space should have ShrinkToFit flag set.

This flag is set here:
 NGConstraintSpace::CreateFromLayoutObject
   .SetIsShrinkToFit(
          box.sizesLogicalWidthToFitContent(box.styleRef().logicalWidth()))

My guess is that sizesLogicalWidthToFitContent should return true for
out_of_flow blocks, but with old layout, one can never be sure.
I've ran the full LayoutTests suite, and it works with the patch.

BUG=635619

Review-Url: https://codereview.chromium.org/2673583005
Cr-Commit-Position: refs/heads/master@{#448123}

[modify] https://crrev.com/e37073cf5dc5e7e0a770e967af8571d455cacfe4/third_party/WebKit/Source/core/layout/LayoutBox.cpp

Project Member Comment 168 by bugdroid1@chromium.org, Feb 6
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c4ef48dc4fb378c5d83ceb81b4417d74317596ae

commit c4ef48dc4fb378c5d83ceb81b4417d74317596ae
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Mon Feb 06 05:37:52 2017

[LayoutNG] Convert physical fragments to being RefCounted.

A few changes in this patch:
NGPhysicalFragment becomes RefCounted.
NGFragment "views" becomes stack allocated.
  (also remove an unused param).
NGFragmentBuilder moves off oil-pan to used being unique_ptr
  (this one was done because the "build" step would have required
   conversion from oilpan to non-oilpan code).

BUG=635619

Review-Url: https://codereview.chromium.org/2676533003
Cr-Commit-Position: refs/heads/master@{#448211}

[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_box_fragment.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_floating_object.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_fragment.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_fragment.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_inline_node_test.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_layout_input_node.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_line_builder.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_physical_text_fragment.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_text_fragment.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.cc
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.h
[modify] https://crrev.com/c4ef48dc4fb378c5d83ceb81b4417d74317596ae/third_party/WebKit/Source/web/tests/NGInlineLayoutTest.cpp

Project Member Comment 169 by bugdroid1@chromium.org, Feb 6
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/51c8aa394d7b69454cc942e03b0dcfadb5358280

commit 51c8aa394d7b69454cc942e03b0dcfadb5358280
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Mon Feb 06 21:45:27 2017

[LayoutNG] Fix accidentally removed "private:".

Was accidentally removed: https://codereview.chromium.org/2655783006

:)

BUG=635619
TBR=glebl@chromium.org

Review-Url: https://codereview.chromium.org/2677183004
Cr-Commit-Position: refs/heads/master@{#448400}

[modify] https://crrev.com/51c8aa394d7b69454cc942e03b0dcfadb5358280/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h

Project Member Comment 170 by bugdroid1@chromium.org, Feb 7
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/dc062b30eac5feb37dcdc824cdf114b2aa30d77e

commit dc062b30eac5feb37dcdc824cdf114b2aa30d77e
Author: atotic <atotic@chromium.org>
Date: Tue Feb 07 00:27:07 2017

Propagate fixed descendants of abs.

Bug: fixed descendants of absolute blocks were not getting positioned.
This fix was a TODO that fell off the radar.

Example:
<div id="rel" style="position:relative;">
  <div id="abs" style="position:absolute;top:100px;">
    <p>absolute</p>
    <div class="fix" style="position:fixed;background-color:gray;"><p>fixed</p></div>
  </div>
</div>

The loop inside NGOutOfFlowLayoutPart::Run had to be modified from
collection iterator to an array, because collections can't be modified
while iterating.

I've tried testing it in vertical-lr, but there are upstream bugs
that prevent this.

[ng_fixed_in_abs]

BUG=635619

Review-Url: https://codereview.chromium.org/2651393003
Cr-Commit-Position: refs/heads/master@{#448463}

[modify] https://crrev.com/dc062b30eac5feb37dcdc824cdf114b2aa30d77e/third_party/WebKit/Source/core/BUILD.gn
[modify] https://crrev.com/dc062b30eac5feb37dcdc824cdf114b2aa30d77e/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
[add] https://crrev.com/dc062b30eac5feb37dcdc824cdf114b2aa30d77e/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part_test.cc

Project Member Comment 171 by bugdroid1@chromium.org, Feb 7
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0465547bef7286daed606fb685178eecab58f246

commit 0465547bef7286daed606fb685178eecab58f246
Author: dgrogan <dgrogan@chromium.org>
Date: Tue Feb 07 01:48:08 2017

[LayoutNG] Return MinAndMaxContentSizes by value, step 2/2

NGLayoutAlgorithm::ComputeMinAndMaxContentSizes now returns
Optional<MinAndMaxContentSizes> instead of taking an out parameter and
returning bool for success/failure.

BUG=635619

Review-Url: https://codereview.chromium.org/2650653011
Cr-Commit-Position: refs/heads/master@{#448506}

[modify] https://crrev.com/0465547bef7286daed606fb685178eecab58f246/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/0465547bef7286daed606fb685178eecab58f246/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/0465547bef7286daed606fb685178eecab58f246/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/0465547bef7286daed606fb685178eecab58f246/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/0465547bef7286daed606fb685178eecab58f246/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/0465547bef7286daed606fb685178eecab58f246/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/0465547bef7286daed606fb685178eecab58f246/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h

Project Member Comment 172 by bugdroid1@chromium.org, Feb 7
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4db6b79aab37bf3c687e067126241ab615d5c645

commit 4db6b79aab37bf3c687e067126241ab615d5c645
Author: glebl <glebl@chromium.org>
Date: Tue Feb 07 15:27:22 2017

Fix incorrectly calculated size/position information for writing-modes

List of changes:
- Calculate margins before we switch writing modes for a child CS
- Collapse MarginStrut and update parent's BFC if we lay out the block
  that establishes a new formatting context.
- Rewrite NGBlockLayoutAlgorithmTest::CollapsingMarginsCase5 that
  verifies that we correctly collapses margins in different writing modes
- Set ShrinkToFit to child's CS if it's orthogonal to its parent.

BUG=635619

Review-Url: https://codereview.chromium.org/2651793013
Cr-Commit-Position: refs/heads/master@{#448626}

[modify] https://crrev.com/4db6b79aab37bf3c687e067126241ab615d5c645/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/4db6b79aab37bf3c687e067126241ab615d5c645/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/4db6b79aab37bf3c687e067126241ab615d5c645/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/4db6b79aab37bf3c687e067126241ab615d5c645/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/4db6b79aab37bf3c687e067126241ab615d5c645/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/4db6b79aab37bf3c687e067126241ab615d5c645/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/4db6b79aab37bf3c687e067126241ab615d5c645/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc

Project Member Comment 173 by bugdroid1@chromium.org, Feb 9
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bbea7637c1d6adafff338cd00b0de80d7a97cf69

commit bbea7637c1d6adafff338cd00b0de80d7a97cf69
Author: glebl <glebl@chromium.org>
Date: Thu Feb 09 06:18:20 2017

Fragment that establishes new BFC knows it's BFC offset in parent space

List of changes:
- If a fragment establishes new BFC then we can collapse its margin and
  assume that it's BFC offset is known. We can't use
  fragment->BfcOffset() in this case because each BFC has it's own BFC
  coordinates.
- Revert lines that changed the usage of BFC offset to 'unified' offset
- s/CalculateRelativeOffset/CalculateLogicalOffset/g
- other minor clean up

BUG=635619
TESTS=NGBlockLayoutAlgorithmTest::CollapsingMarginsCase5

Review-Url: https://codereview.chromium.org/2679343002
Cr-Commit-Position: refs/heads/master@{#449223}

[modify] https://crrev.com/bbea7637c1d6adafff338cd00b0de80d7a97cf69/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/bbea7637c1d6adafff338cd00b0de80d7a97cf69/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/bbea7637c1d6adafff338cd00b0de80d7a97cf69/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/bbea7637c1d6adafff338cd00b0de80d7a97cf69/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/bbea7637c1d6adafff338cd00b0de80d7a97cf69/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/bbea7637c1d6adafff338cd00b0de80d7a97cf69/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc

Project Member Comment 174 by bugdroid1@chromium.org, Feb 10
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/57ac6dc1c5b8d3ffa431bc641a6ccab3200751d3

commit 57ac6dc1c5b8d3ffa431bc641a6ccab3200751d3
Author: glebl <glebl@chromium.org>
Date: Fri Feb 10 23:03:40 2017

Add left_offset to NGFloatingObject and set it on legacy FloatingObject

This patch adds the support of the next use case:
When a float are surrounded by a bunch of empty divs we attach it to the
next in-flow child that can determine its position in space. We need to
copy 2 offsets to the legacy tree:
1) Float's LayoutObject offset relative to its gunuine parent
2) Float's FloatingObject offset relative to its real parent so
   BlockFlowPainter can paint it correctly

List of changes:
- Add left_offset to NGFloatingObject. This will be set to
  FloatingObject
- Add parent_space to NGFloatingObject. This is used to calculate
  offset relative to the genuine parent.
- PositionFloat uses origin_point/from_offset with inline_offset
  that comes from float's and float's parent constraint spaces.
- Enable NGBlockLayoutAlgorithmTest::PositionFloatInsideEmptyBlocks

BUG=635619
TEST=NGBlockLayoutAlgorithmTest::PositionFloatInsideEmptyBlocks

Review-Url: https://codereview.chromium.org/2679343004
Cr-Commit-Position: refs/heads/master@{#449774}

[modify] https://crrev.com/57ac6dc1c5b8d3ffa431bc641a6ccab3200751d3/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/57ac6dc1c5b8d3ffa431bc641a6ccab3200751d3/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/57ac6dc1c5b8d3ffa431bc641a6ccab3200751d3/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/57ac6dc1c5b8d3ffa431bc641a6ccab3200751d3/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/57ac6dc1c5b8d3ffa431bc641a6ccab3200751d3/third_party/WebKit/Source/core/layout/ng/ng_floating_object.h

Project Member Comment 175 by bugdroid1@chromium.org, Feb 11
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/decb261b5c91b2239df2409aac6edc0cb969faa4

commit decb261b5c91b2239df2409aac6edc0cb969faa4
Author: atotic <atotic@chromium.org>
Date: Sat Feb 11 00:33:51 2017

Comment static position

BUG=635619
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2

Review-Url: https://codereview.chromium.org/2671273004
Cr-Commit-Position: refs/heads/master@{#449805}

[modify] https://crrev.com/decb261b5c91b2239df2409aac6edc0cb969faa4/third_party/WebKit/Source/core/paint/PaintLayer.h

Project Member Comment 176 by bugdroid1@chromium.org, Feb 11
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/214a55c8dbf669d7d16e8693ffd93ae0d9d10182

commit 214a55c8dbf669d7d16e8693ffd93ae0d9d10182
Author: atotic <atotic@chromium.org>
Date: Sat Feb 11 01:29:15 2017

Use Initial Containing Block size for vertical

This patch fixes the vertical modes assert in ComputeInlineLength.

I used box.view()->viewportSizeForViewportUnits() for ICB size
per kojii's suggestion.

BUG=635619

Review-Url: https://codereview.chromium.org/2681783004
Cr-Commit-Position: refs/heads/master@{#449818}

[modify] https://crrev.com/214a55c8dbf669d7d16e8693ffd93ae0d9d10182/third_party/WebKit/Source/core/BUILD.gn
[modify] https://crrev.com/214a55c8dbf669d7d16e8693ffd93ae0d9d10182/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/214a55c8dbf669d7d16e8693ffd93ae0d9d10182/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/214a55c8dbf669d7d16e8693ffd93ae0d9d10182/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
[modify] https://crrev.com/214a55c8dbf669d7d16e8693ffd93ae0d9d10182/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h
[add] https://crrev.com/214a55c8dbf669d7d16e8693ffd93ae0d9d10182/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder_test.cc
[modify] https://crrev.com/214a55c8dbf669d7d16e8693ffd93ae0d9d10182/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/214a55c8dbf669d7d16e8693ffd93ae0d9d10182/third_party/WebKit/Source/core/layout/ng/ng_length_utils.h
[modify] https://crrev.com/214a55c8dbf669d7d16e8693ffd93ae0d9d10182/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 177 by bugdroid1@chromium.org, Feb 14
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b22faaaadbb08c37ceca6c55c9d5557966b85b21

commit b22faaaadbb08c37ceca6c55c9d5557966b85b21
Author: atotic <atotic@chromium.org>
Date: Tue Feb 14 00:06:37 2017

Change how NGConstraintSpaceBuilder specified destination space.

The way writing_mode for NGConstraintSpaceBuilder was set was
confusing. This change makes the API more explicit about how
output writing mode is set.

NGConstraintSpaceBuilder::writing_mode_ is eliminated
NGConstraintSpaceBuilder::SetWritingMode is eliminated

instead, writing mode becomes a parameter to:
NGConstraintSpaceBuilder::ToConstraintSpace(NGWritingMode output_mode)

BUG=635619

Review-Url: https://codereview.chromium.org/2692643002
Cr-Commit-Position: refs/heads/master@{#450163}

[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils_test.cc
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder_test.cc
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_inline_node_test.cc
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
[modify] https://crrev.com/b22faaaadbb08c37ceca6c55c9d5557966b85b21/third_party/WebKit/Source/web/tests/NGInlineLayoutTest.cpp

Project Member Comment 178 by bugdroid1@chromium.org, Feb 14
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2844c8518b8b8aaaa02a44b0ce5e3c3821cb72ed

commit 2844c8518b8b8aaaa02a44b0ce5e3c3821cb72ed
Author: glebl <glebl@chromium.org>
Date: Tue Feb 14 20:27:36 2017

Markdown instruction how to generate code coverage for LayoutNG

BUG=635619

Review-Url: https://codereview.chromium.org/2691343002
Cr-Commit-Position: refs/heads/master@{#450447}

[modify] https://crrev.com/2844c8518b8b8aaaa02a44b0ce5e3c3821cb72ed/third_party/WebKit/Source/core/layout/ng/README.md

Cc: eco...@igalia.com
Project Member Comment 180 by bugdroid1@chromium.org, Feb 15
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f9c746934fbb6e7205ef7ec0815957ccbc45e6b3

commit f9c746934fbb6e7205ef7ec0815957ccbc45e6b3
Author: glebl <glebl@chromium.org>
Date: Wed Feb 15 20:58:00 2017

Remove fixed width/height for containers with orthogonal children

Code clean up:
1) Remove fixed width/height for containers with orthogonal children
2) Use raw string literals for embedded HTML

BUG=635619

Review-Url: https://codereview.chromium.org/2694263003
Cr-Commit-Position: refs/heads/master@{#450795}

[modify] https://crrev.com/f9c746934fbb6e7205ef7ec0815957ccbc45e6b3/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc

Project Member Comment 181 by bugdroid1@chromium.org, Feb 15
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f9c746934fbb6e7205ef7ec0815957ccbc45e6b3

commit f9c746934fbb6e7205ef7ec0815957ccbc45e6b3
Author: glebl <glebl@chromium.org>
Date: Wed Feb 15 20:58:00 2017

Remove fixed width/height for containers with orthogonal children

Code clean up:
1) Remove fixed width/height for containers with orthogonal children
2) Use raw string literals for embedded HTML

BUG=635619

Review-Url: https://codereview.chromium.org/2694263003
Cr-Commit-Position: refs/heads/master@{#450795}

[modify] https://crrev.com/f9c746934fbb6e7205ef7ec0815957ccbc45e6b3/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc

Project Member Comment 182 by bugdroid1@chromium.org, Feb 16
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a4d7e99f9043c0268d57258bb6ef1a6e206b6b1d

commit a4d7e99f9043c0268d57258bb6ef1a6e206b6b1d
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Thu Feb 16 00:45:14 2017

[LayoutNG] Make NGBlockLayoutAlgorithm accept a NGBlockNode.

Instead of the LayoutObject, Style, FirstChild tuple.

This is so that NGFragmentBuilder can access the node to construct a
break token correctly.

See prototype multi-col patch: crrev/2693193002.

BUG=635619

Review-Url: https://codereview.chromium.org/2692403003
Cr-Commit-Position: refs/heads/master@{#450843}

[modify] https://crrev.com/a4d7e99f9043c0268d57258bb6ef1a6e206b6b1d/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/a4d7e99f9043c0268d57258bb6ef1a6e206b6b1d/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/a4d7e99f9043c0268d57258bb6ef1a6e206b6b1d/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/a4d7e99f9043c0268d57258bb6ef1a6e206b6b1d/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/a4d7e99f9043c0268d57258bb6ef1a6e206b6b1d/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/a4d7e99f9043c0268d57258bb6ef1a6e206b6b1d/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/a4d7e99f9043c0268d57258bb6ef1a6e206b6b1d/third_party/WebKit/Source/core/layout/ng/ng_inline_node_test.cc
[modify] https://crrev.com/a4d7e99f9043c0268d57258bb6ef1a6e206b6b1d/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc
[modify] https://crrev.com/a4d7e99f9043c0268d57258bb6ef1a6e206b6b1d/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part_test.cc
[modify] https://crrev.com/a4d7e99f9043c0268d57258bb6ef1a6e206b6b1d/third_party/WebKit/Source/web/tests/NGInlineLayoutTest.cpp

Project Member Comment 183 by bugdroid1@chromium.org, Feb 16
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/283cef0d240cf6a118f605d396eee0fbee0278b7

commit 283cef0d240cf6a118f605d396eee0fbee0278b7
Author: atotic <atotic@chromium.org>
Date: Thu Feb 16 06:34:15 2017

Fix orthogonal mode legacy mismatch

Orthogonal styles currently assert inside legacy layout, because width is -1.
Ex:
<div style="writing-mode:vertical-rl; border:1px solid red;">
  <p style="writing-mode:horizontal-tb; border:1px solid blue;">Hello, world.</p>
</div>

These two routines did not handle orthogonal modes properly.

NGConstraintSpace::CreateFromLayoutObject
NGBlockNode::RunOldLayout

I am not sure if this fix is correct, it is my best guess. With the fix, assert
is avoided, but <p> is too tall. The constraint space used for layout looks correct,
bug might be something else.

Meta question: Should we bother with legacy orthogonal modes at all?
I've stumbled upon several other orthogonal mode bugs.

BUG=635619

[ng_orthogonal_legacy]

Review-Url: https://codereview.chromium.org/2691093004
Cr-Commit-Position: refs/heads/master@{#450878}

[modify] https://crrev.com/283cef0d240cf6a118f605d396eee0fbee0278b7/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/283cef0d240cf6a118f605d396eee0fbee0278b7/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/283cef0d240cf6a118f605d396eee0fbee0278b7/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/283cef0d240cf6a118f605d396eee0fbee0278b7/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
[modify] https://crrev.com/283cef0d240cf6a118f605d396eee0fbee0278b7/third_party/WebKit/Source/core/layout/ng/ng_writing_mode.cc
[modify] https://crrev.com/283cef0d240cf6a118f605d396eee0fbee0278b7/third_party/WebKit/Source/core/layout/ng/ng_writing_mode.h

Project Member Comment 184 by bugdroid1@chromium.org, Feb 17
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4d81d1e61673e8e3f988fe8efaebf630308f8e85

commit 4d81d1e61673e8e3f988fe8efaebf630308f8e85
Author: glebl <glebl@chromium.org>
Date: Fri Feb 17 02:10:53 2017

[LayoutNG] Fix incorrectly positioned empty blocks inside of new BFC

List of changes:
- Reset BFC offset for blocks that establishes a new BFC
- Correctly calculate child's BFC offset if the parent's BFC offset is
  known but the child fragment doesn't know its BFC offset
  (for example when it's empty)
- Do not change content_size for empty blocks. Example:
  <div style="overflow:hidden">
    <div style="margin-top: 8px"></div>
    <div style="margin-top: 10px"></div>
  </div>
- Do not set MarginStrut to Float Constraint spaces
- New unit test NGBlockLayoutAlgorithmTest::PositionEmptyBlocksInNewBfc
- Update legacy floating objects for each fragment's instead of for
  fragment's children only.

BUG=635619
TEST=NGBlockLayoutAlgorithmTest::PositionEmptyBlocksInNewBfc

Review-Url: https://codereview.chromium.org/2700683002
Cr-Commit-Position: refs/heads/master@{#451177}

[modify] https://crrev.com/4d81d1e61673e8e3f988fe8efaebf630308f8e85/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/4d81d1e61673e8e3f988fe8efaebf630308f8e85/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/4d81d1e61673e8e3f988fe8efaebf630308f8e85/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/4d81d1e61673e8e3f988fe8efaebf630308f8e85/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/4d81d1e61673e8e3f988fe8efaebf630308f8e85/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[modify] https://crrev.com/4d81d1e61673e8e3f988fe8efaebf630308f8e85/third_party/WebKit/Source/core/layout/ng/ng_units.cc
[modify] https://crrev.com/4d81d1e61673e8e3f988fe8efaebf630308f8e85/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 185 by bugdroid1@chromium.org, Feb 17
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ecb3fae9e265de59f536e27b66baeb641e90fae9

commit ecb3fae9e265de59f536e27b66baeb641e90fae9
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Fri Feb 17 05:55:08 2017

[LayoutNG] Add fields required for new multi-col approach.

Adds:
1) UsedBlockSize() - used to communicate how much block size was used by
  preceeding fragments.

2) ChildBreakTokens() - used for resuming children in fragmented flow.

3) IsFinished() - if true the node cannot produce any more fragments. This
  shouldn't have any child break tokens.

BUG=635619

Review-Url: https://codereview.chromium.org/2697843004
Cr-Commit-Position: refs/heads/master@{#451233}

[modify] https://crrev.com/ecb3fae9e265de59f536e27b66baeb641e90fae9/third_party/WebKit/Source/core/layout/ng/ng_block_break_token.h
[modify] https://crrev.com/ecb3fae9e265de59f536e27b66baeb641e90fae9/third_party/WebKit/Source/core/layout/ng/ng_break_token.h

Project Member Comment 186 by bugdroid1@chromium.org, Feb 22
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/977c1dd577174ab7e8b9fd7686a4fa84011511d5

commit 977c1dd577174ab7e8b9fd7686a4fa84011511d5
Author: glebl <glebl@chromium.org>
Date: Wed Feb 22 20:44:43 2017

Fix incorrectly painted right floats in LayoutNG

This patch fixes several problems discovered while investigating the
issue with incorrectly painted right floats in LayoutNG.

List of changes:

1) NGFloatingObject.parent_space was renamed to original_parent_space
This was discussed in http://crrev.com/2679343004

2) While calculating an additional offset for right floats we need to
use float's box size == float's fragment inline size + float's margins
instead of just float's fragment inline size.

3) Fix the calculation of NGFloatingObject::left_offset
(it's used if float is attached to the new parent) for right floats

4) Fix incorrectly attached legacy floating objects.

BUG=635619
TESTS=NGBlockLayoutAlgorithmTest::PositionFloatInsideEmptyBlocks,

Review-Url: https://codereview.chromium.org/2709083002
Cr-Commit-Position: refs/heads/master@{#452189}

[modify] https://crrev.com/977c1dd577174ab7e8b9fd7686a4fa84011511d5/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/977c1dd577174ab7e8b9fd7686a4fa84011511d5/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/977c1dd577174ab7e8b9fd7686a4fa84011511d5/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/977c1dd577174ab7e8b9fd7686a4fa84011511d5/third_party/WebKit/Source/core/layout/ng/ng_floating_object.h

Project Member Comment 187 by bugdroid1@chromium.org, Feb 23
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2ad35b86c33fe62c3be7c9368a009716d9892324

commit 2ad35b86c33fe62c3be7c9368a009716d9892324
Author: cbiesinger <cbiesinger@chromium.org>
Date: Thu Feb 23 00:19:23 2017

[layoutng] Split NGLayoutResult out of NGPhysicalFragment

R=ikilpatrick@chromium.org,eae@chromium.org
BUG=635619

Review-Url: https://codereview.chromium.org/2702403003
Cr-Commit-Position: refs/heads/master@{#452299}

[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/BUILD.gn
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.cc
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_inline_node_test.cc
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_layout_algorithm.h
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_layout_input_node.h
[add] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_layout_result.cc
[add] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_layout_result.h
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.h
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part_test.cc
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.cc
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.h
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.cc
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_physical_text_fragment.h
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.cc
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.h
[modify] https://crrev.com/2ad35b86c33fe62c3be7c9368a009716d9892324/third_party/WebKit/Source/web/tests/NGInlineLayoutTest.cpp

Project Member Comment 188 by bugdroid1@chromium.org, Feb 23
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0e277884ee599a8a09b01c93c97934f3c8c285ac

commit 0e277884ee599a8a09b01c93c97934f3c8c285ac
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Thu Feb 23 01:39:08 2017

[LayoutNG] Introduce block child iterator.

This will be used for iterating of children while resuming layout from a
given break token.

See experimental patch for the multi-col approach: crrev/2693193002

BUG=635619

Review-Url: https://codereview.chromium.org/2706353004
Cr-Commit-Position: refs/heads/master@{#452333}

[modify] https://crrev.com/0e277884ee599a8a09b01c93c97934f3c8c285ac/third_party/WebKit/Source/core/BUILD.gn
[modify] https://crrev.com/0e277884ee599a8a09b01c93c97934f3c8c285ac/third_party/WebKit/Source/core/layout/BUILD.gn
[add] https://crrev.com/0e277884ee599a8a09b01c93c97934f3c8c285ac/third_party/WebKit/Source/core/layout/ng/ng_block_break_token.cc
[modify] https://crrev.com/0e277884ee599a8a09b01c93c97934f3c8c285ac/third_party/WebKit/Source/core/layout/ng/ng_block_break_token.h
[add] https://crrev.com/0e277884ee599a8a09b01c93c97934f3c8c285ac/third_party/WebKit/Source/core/layout/ng/ng_block_child_iterator.cc
[add] https://crrev.com/0e277884ee599a8a09b01c93c97934f3c8c285ac/third_party/WebKit/Source/core/layout/ng/ng_block_child_iterator.h
[add] https://crrev.com/0e277884ee599a8a09b01c93c97934f3c8c285ac/third_party/WebKit/Source/core/layout/ng/ng_block_child_iterator_test.cc
[modify] https://crrev.com/0e277884ee599a8a09b01c93c97934f3c8c285ac/third_party/WebKit/Source/core/layout/ng/ng_break_token.h

Project Member Comment 189 by bugdroid1@chromium.org, Feb 25
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1e2c173006a9d81fd8e12b325354e7d002ff3d5c

commit 1e2c173006a9d81fd8e12b325354e7d002ff3d5c
Author: atotic <atotic@chromium.org>
Date: Sat Feb 25 00:12:47 2017

Flip vertical-rl coordinates for Legacy compat

Bug: vertical-rl block layout looked identical to vertical-lr

Cause: LegacyLayout expects vertical-rl coordinates to be flipped @#$@$@!

Fix: Flip coordinates of vertical-rl blocks before setting X/Y

Personally, I'd love to eliminate legacy flipping, but it sounds like it'll be a boatload of work.

For context, here is what I've learned from kojii:
>>>>>
In legacy, we layout as if it's vertical-lr, then flip X. Ojan wanted to eliminate this flipping, because it's a source of bugs for paint and make code harder to read, since we need to apply different logic depending on whether the code runs before the flip and after the flip. Walter tried to do this before but it was too much work.

From you question, I guess we haven't come up with the strategy how to handle this?

I can only think two options:
Flip as the legacy does.
Allow block progression to grow in negative direction. We still don't know the right position before layout, so we need to shift after the layout.
#2 is cleaner and can eliminate flipping, but we need to allow block progression to grow in negative direction. I haven't really given enough thoughts which is better.
<<<<<
BUG=635619

Review-Url: https://codereview.chromium.org/2709103010
Cr-Commit-Position: refs/heads/master@{#453009}

[modify] https://crrev.com/1e2c173006a9d81fd8e12b325354e7d002ff3d5c/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc

Project Member Comment 190 by bugdroid1@chromium.org, Feb 25
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2d05eecafb761285205faf28e05f3c73f75efeb7

commit 2d05eecafb761285205faf28e05f3c73f75efeb7
Author: glebl <glebl@chromium.org>
Date: Sat Feb 25 01:19:40 2017

Add ClearanceOffset to LayoutNG Constraint space.

It's used for the case when fragment can position itself but needs to
know the current clearance line.

In particular this change fixes the use case that has blocks with
clearances, margins and intruding floats
https://software.hixie.ch/utilities/js/live-dom-viewer/saved/4847

BUG=635619
TEST=PositionBlocksWithClearanceAndIntrudingFloats

Review-Url: https://codereview.chromium.org/2711803007
Cr-Commit-Position: refs/heads/master@{#453036}

[modify] https://crrev.com/2d05eecafb761285205faf28e05f3c73f75efeb7/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/2d05eecafb761285205faf28e05f3c73f75efeb7/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/2d05eecafb761285205faf28e05f3c73f75efeb7/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/2d05eecafb761285205faf28e05f3c73f75efeb7/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/2d05eecafb761285205faf28e05f3c73f75efeb7/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/2d05eecafb761285205faf28e05f3c73f75efeb7/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/2d05eecafb761285205faf28e05f3c73f75efeb7/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
[modify] https://crrev.com/2d05eecafb761285205faf28e05f3c73f75efeb7/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h
[modify] https://crrev.com/2d05eecafb761285205faf28e05f3c73f75efeb7/third_party/WebKit/Source/core/layout/ng/ng_units.h

Project Member Comment 192 by bugdroid1@chromium.org, Feb 28
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9

commit c0b2149ee87d2451e91885d1a3378aa4a7c1dad9
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Tue Feb 28 04:52:20 2017

[LayoutNG] Allow block-flow layout to be fragmented using new approach.

This patch removes most of the old fragmentation code for the new approach.

If the algorithm reaches a fragmentation line it'll produce a break token for
resuming later.

BUG=635619

Review-Url: https://codereview.chromium.org/2714803002
Cr-Commit-Position: refs/heads/master@{#453500}

[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_block_break_token.cc
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_block_break_token.h
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[delete] https://crrev.com/0decaefae68c308e45aad3b3fbda9c5b9a6793a8/third_party/WebKit/Source/core/layout/ng/ng_column_mapper.h
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_layout_input_node.h
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_length_utils.h
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.h
[modify] https://crrev.com/c0b2149ee87d2451e91885d1a3378aa4a7c1dad9/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h

Project Member Comment 193 by bugdroid1@chromium.org, Mar 1
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/57e74025b1f762fb2ccd1805de07928bdc81c03a

commit 57e74025b1f762fb2ccd1805de07928bdc81c03a
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Wed Mar 01 20:16:55 2017

[LayoutNG] Remove unused class member on NGBlockLayoutAlgorithm.

BUG=635619

Review-Url: https://codereview.chromium.org/2728683002
Cr-Commit-Position: refs/heads/master@{#454012}

[modify] https://crrev.com/57e74025b1f762fb2ccd1805de07928bdc81c03a/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h

Project Member Comment 196 by bugdroid1@chromium.org, Mar 2
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4be772fa4ee0cb2bf699f27469db19b22866a7b0

commit 4be772fa4ee0cb2bf699f27469db19b22866a7b0
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Thu Mar 02 19:20:27 2017

[LayoutNG] Switch NGConstraintSpace to being RefCounted.

This shouldn't have any behaviour changes.

BUG=635619

Review-Url: https://codereview.chromium.org/2724133003
Cr-Commit-Position: refs/heads/master@{#454331}

[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/layout_ng_block_flow.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_absolute_utils_test.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.h
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder_test.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_floating_object.h
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_inline_node_test.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.h
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_length_utils.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_length_utils_test.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_line_builder.h
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.h
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part_test.cc
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.h
[modify] https://crrev.com/4be772fa4ee0cb2bf699f27469db19b22866a7b0/third_party/WebKit/Source/web/tests/NGInlineLayoutTest.cpp

Project Member Comment 197 by bugdroid1@chromium.org, Mar 2
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e2cdb910981e41e82987ca6d46ac64633e42637d

commit e2cdb910981e41e82987ca6d46ac64633e42637d
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Thu Mar 02 21:29:41 2017

[LayoutNG] Switch NGBreakToken to being RefCounted.

After the fragmenting switch ownership of breaktokens is clearer,
and this just swtiches them to being refcounted.

Shouldn't have any behaviour changes.

BUG=635619

Review-Url: https://codereview.chromium.org/2722763002
Cr-Commit-Position: refs/heads/master@{#454381}

[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_block_break_token.cc
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_block_break_token.h
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_block_child_iterator.cc
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_block_child_iterator.h
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_block_child_iterator_test.cc
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_break_token.h
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.cc
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.h
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.cc
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_physical_fragment.h
[modify] https://crrev.com/e2cdb910981e41e82987ca6d46ac64633e42637d/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.h

Project Member Comment 199 by bugdroid1@chromium.org, Mar 3
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/55fe0730698fe3a8c88756055c9746a4b6984a7c

commit 55fe0730698fe3a8c88756055c9746a4b6984a7c
Author: glebl <glebl@chromium.org>
Date: Fri Mar 03 00:00:18 2017

Enable LayoutNGInline in LayoutNG virtual test suite.

BUG=635619

Review-Url: https://codereview.chromium.org/2725003003
Cr-Commit-Position: refs/heads/master@{#454442}

[modify] https://crrev.com/55fe0730698fe3a8c88756055c9746a4b6984a7c/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/55fe0730698fe3a8c88756055c9746a4b6984a7c/third_party/WebKit/LayoutTests/VirtualTestSuites

Project Member Comment 200 by bugdroid1@chromium.org, Mar 3
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c31e3e5a55e1bc3a719c7012ca0d9bff6ba2ba51

commit c31e3e5a55e1bc3a719c7012ca0d9bff6ba2ba51
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Fri Mar 03 05:30:59 2017

[LayoutNG] Fix orthogonal writing mode with abs/fixed descendants.

The current code was mixing up the block_estimate between
descendant/container writing modes. It keeps it now in the child's
writing mode.

BUG=635619

Review-Url: https://codereview.chromium.org/2727263003
Cr-Commit-Position: refs/heads/master@{#454517}

[modify] https://crrev.com/c31e3e5a55e1bc3a719c7012ca0d9bff6ba2ba51/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc
[modify] https://crrev.com/c31e3e5a55e1bc3a719c7012ca0d9bff6ba2ba51/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part_test.cc

Project Member Comment 201 by bugdroid1@chromium.org, Mar 3
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f9aecd384eaaf9d50343b20c9a1bba61ed71f5dc

commit f9aecd384eaaf9d50343b20c9a1bba61ed71f5dc
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Fri Mar 03 18:55:41 2017

[LayoutNG] Rename logical_available_size to container_size.

From: crrev.com/2727263003

The percentage resolution size should be based off the container, and the
available size should remain as-is.

BUG=635619

Review-Url: https://codereview.chromium.org/2729213002
Cr-Commit-Position: refs/heads/master@{#454637}

[modify] https://crrev.com/f9aecd384eaaf9d50343b20c9a1bba61ed71f5dc/third_party/WebKit/Source/core/layout/ng/ng_out_of_flow_layout_part.cc

Project Member Comment 202 by bugdroid1@chromium.org, Mar 3
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/50019db39aa7c456d30552d8bc3c1e2747c5101f

commit 50019db39aa7c456d30552d8bc3c1e2747c5101f
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Fri Mar 03 22:19:58 2017

[LayoutNG] Remove style_ and layout_result_ members on NGBlockNode.

They aren't really needed now. Eventually we'll want NGBlockNode to just
be a POD around the layout object to remove overhead.

After this we can transition NGBlockNode to just be a POD (NGInlineNode
needs a bit more work).

BUG=635619

Review-Url: https://codereview.chromium.org/2726233003
Cr-Commit-Position: refs/heads/master@{#454689}

[modify] https://crrev.com/50019db39aa7c456d30552d8bc3c1e2747c5101f/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/50019db39aa7c456d30552d8bc3c1e2747c5101f/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/50019db39aa7c456d30552d8bc3c1e2747c5101f/third_party/WebKit/Source/core/layout/ng/ng_block_node.h

Project Member Comment 203 by bugdroid1@chromium.org, Mar 7
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b5f30def1f14944ea1d342b99c2afcd693a31278

commit b5f30def1f14944ea1d342b99c2afcd693a31278
Author: glebl <glebl@chromium.org>
Date: Tue Mar 07 21:08:52 2017

Add LayoutOpportunityIterator method to NGConstraintSpace

LayoutOpportunityIterator method returns a default layout opportunity
iterator that starts from NGConstraintSpace::BfcOffset. It's invalidated
when a new exclusion is added.
Usage example: NGInlineBuilder needs to iterate over available
opportunities.

BUG=635619

Review-Url: https://codereview.chromium.org/2734923002
Cr-Commit-Position: refs/heads/master@{#455220}

[modify] https://crrev.com/b5f30def1f14944ea1d342b99c2afcd693a31278/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/b5f30def1f14944ea1d342b99c2afcd693a31278/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/b5f30def1f14944ea1d342b99c2afcd693a31278/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/b5f30def1f14944ea1d342b99c2afcd693a31278/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.h

Project Member Comment 205 by bugdroid1@chromium.org, Mar 8
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5ccd9ec6998eee48bc73e7d8a992c4cccdb31899

commit 5ccd9ec6998eee48bc73e7d8a992c4cccdb31899
Author: glebl <glebl@chromium.org>
Date: Wed Mar 08 13:56:44 2017

Combine 2 exclusions in Layout Opportunity Tree if they shadow each other

This patch introduces the logic that tries to combine 2 exclusions if
possible.
We can combine 2 exclusions if
 - they are adjoining to each other and have the same exclusion type
 - the new exclusion shadows the old one.
   That's because it's not allowed to position anything in the
   shadowed area.

Example:
 <div id="SS" style="float: left; height: 10px; width: 10px"></div>
 <div id="BB" style="float: left; height: 20px; width: 20px"></div>
 +----------------+
 |SSBB
 |**BB
 We combine SS and BB exclusions including the shadowed area (**).

BUG=635619
TESTS=TwoRightExclusionsShadowEachOther,
TwoLeftExclusionsShadowEachOther

Review-Url: https://codereview.chromium.org/2733133002
Cr-Commit-Position: refs/heads/master@{#455444}

[modify] https://crrev.com/5ccd9ec6998eee48bc73e7d8a992c4cccdb31899/third_party/WebKit/Source/core/layout/ng/geometry/ng_logical_rect.cc
[modify] https://crrev.com/5ccd9ec6998eee48bc73e7d8a992c4cccdb31899/third_party/WebKit/Source/core/layout/ng/geometry/ng_logical_rect.h
[modify] https://crrev.com/5ccd9ec6998eee48bc73e7d8a992c4cccdb31899/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/5ccd9ec6998eee48bc73e7d8a992c4cccdb31899/third_party/WebKit/Source/core/layout/ng/ng_exclusion.cc
[modify] https://crrev.com/5ccd9ec6998eee48bc73e7d8a992c4cccdb31899/third_party/WebKit/Source/core/layout/ng/ng_exclusion.h
[modify] https://crrev.com/5ccd9ec6998eee48bc73e7d8a992c4cccdb31899/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/5ccd9ec6998eee48bc73e7d8a992c4cccdb31899/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.cc
[modify] https://crrev.com/5ccd9ec6998eee48bc73e7d8a992c4cccdb31899/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.h

Project Member Comment 206 by bugdroid1@chromium.org, Mar 8
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ad9e2730b5bf41af6386f0526d5f901fb515258e

commit ad9e2730b5bf41af6386f0526d5f901fb515258e
Author: agrieve <agrieve@chromium.org>
Date: Wed Mar 08 21:11:33 2017

Revert of Combine 2 exclusions in Layout Opportunity Tree if they shadow each other (patchset #5 id:100001 of https://codereview.chromium.org/2733133002/ )

Reason for revert:
Broke downstream bot (see bug)

Original issue's description:
> Combine 2 exclusions in Layout Opportunity Tree if they shadow each other
>
> This patch introduces the logic that tries to combine 2 exclusions if
> possible.
> We can combine 2 exclusions if
>  - they are adjoining to each other and have the same exclusion type
>  - the new exclusion shadows the old one.
>    That's because it's not allowed to position anything in the
>    shadowed area.
>
> Example:
>  <div id="SS" style="float: left; height: 10px; width: 10px"></div>
>  <div id="BB" style="float: left; height: 20px; width: 20px"></div>
>  +----------------+
>  |SSBB
>  |**BB
>  We combine SS and BB exclusions including the shadowed area (**).
>
> BUG=635619
> TESTS=TwoRightExclusionsShadowEachOther,
> TwoLeftExclusionsShadowEachOther
>
> Review-Url: https://codereview.chromium.org/2733133002
> Cr-Commit-Position: refs/heads/master@{#455444}
> Committed: https://chromium.googlesource.com/chromium/src/+/5ccd9ec6998eee48bc73e7d8a992c4cccdb31899

TBR=ikilpatrick@chromium.org,cbiesinger@chromium.org,glebl@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=635619,699703

Review-Url: https://codereview.chromium.org/2732223007
Cr-Commit-Position: refs/heads/master@{#455541}

[modify] https://crrev.com/ad9e2730b5bf41af6386f0526d5f901fb515258e/third_party/WebKit/Source/core/layout/ng/geometry/ng_logical_rect.cc
[modify] https://crrev.com/ad9e2730b5bf41af6386f0526d5f901fb515258e/third_party/WebKit/Source/core/layout/ng/geometry/ng_logical_rect.h
[modify] https://crrev.com/ad9e2730b5bf41af6386f0526d5f901fb515258e/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/ad9e2730b5bf41af6386f0526d5f901fb515258e/third_party/WebKit/Source/core/layout/ng/ng_exclusion.cc
[modify] https://crrev.com/ad9e2730b5bf41af6386f0526d5f901fb515258e/third_party/WebKit/Source/core/layout/ng/ng_exclusion.h
[modify] https://crrev.com/ad9e2730b5bf41af6386f0526d5f901fb515258e/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/ad9e2730b5bf41af6386f0526d5f901fb515258e/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.cc
[modify] https://crrev.com/ad9e2730b5bf41af6386f0526d5f901fb515258e/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.h

Project Member Comment 207 by bugdroid1@chromium.org, Mar 9
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/875a510c97b3108d5ca70c7878c9a3a3d3830fd0

commit 875a510c97b3108d5ca70c7878c9a3a3d3830fd0
Author: glebl <glebl@chromium.org>
Date: Thu Mar 09 22:04:13 2017

Combine 2 exclusions in Layout Opportunity Tree if they shadow each other

Note: The original patch was reviewed and submitted in
https://codereview.chromium.org/2733133002/
The only difference with the original patch is that
NGExclusion::MaybeCombineWith doesn't have NOTREACHED anymore. That's
because some tests and text exclusions don't have exclusion.type set.
We just return false in this case.

This patch introduces the logic that tries to combine 2 exclusions if
possible.
We can combine 2 exclusions if
 - they are adjoining to each other and have the same exclusion type
 - the new exclusion shadows the old one.
   That's because it's not allowed to position anything in the
   shadowed area.

Example:
 <div id="SS" style="float: left; height: 10px; width: 10px"></div>
 <div id="BB" style="float: left; height: 20px; width: 20px"></div>
 +----------------+
 |SSBB
 |**BB
 We combine SS and BB exclusions including the shadowed area (**).

BUG=635619,699703
TESTS=TwoRightExclusionsShadowEachOther,
TwoLeftExclusionsShadowEachOther

Review-Url: https://codereview.chromium.org/2743453002
Cr-Commit-Position: refs/heads/master@{#455876}

[modify] https://crrev.com/875a510c97b3108d5ca70c7878c9a3a3d3830fd0/third_party/WebKit/Source/core/layout/ng/geometry/ng_logical_rect.cc
[modify] https://crrev.com/875a510c97b3108d5ca70c7878c9a3a3d3830fd0/third_party/WebKit/Source/core/layout/ng/geometry/ng_logical_rect.h
[modify] https://crrev.com/875a510c97b3108d5ca70c7878c9a3a3d3830fd0/third_party/WebKit/Source/core/layout/ng/ng_constraint_space_test.cc
[modify] https://crrev.com/875a510c97b3108d5ca70c7878c9a3a3d3830fd0/third_party/WebKit/Source/core/layout/ng/ng_exclusion.cc
[modify] https://crrev.com/875a510c97b3108d5ca70c7878c9a3a3d3830fd0/third_party/WebKit/Source/core/layout/ng/ng_exclusion.h
[modify] https://crrev.com/875a510c97b3108d5ca70c7878c9a3a3d3830fd0/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/875a510c97b3108d5ca70c7878c9a3a3d3830fd0/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.cc
[modify] https://crrev.com/875a510c97b3108d5ca70c7878c9a3a3d3830fd0/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_tree_node.h

Project Member Comment 208 by bugdroid1@chromium.org, Mar 11
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/207688fb45319568db61e59c4c8391517793bf47

commit 207688fb45319568db61e59c4c8391517793bf47
Author: glebl <glebl@chromium.org>
Date: Sat Mar 11 04:14:30 2017

Use Opportunity Iterator to position text fragments in NGLineBuilder

This patch introduces NGLayoutOpportunityIterator to NGLineBuilder so it
can use it to search the next available opportunity to position text
fragments.

With this patch NGLayout starts supporting a base text floating around
floats that are positioned before an inline fragment.
Example:
<div id="container">
  <div id="left-float1"></div>
  <div id="left-float2"></div>
  <div id="right-float"></div>
  The quick brown fox jumps over the lazy dog
</div>

BUG=635619
TEST=NGTextLayoutAlgorithmTest::TextFloatsAroundFloatsBefore

Review-Url: https://codereview.chromium.org/2739683006
Cr-Commit-Position: refs/heads/master@{#456278}

[modify] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/BUILD.gn
[modify] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/geometry/ng_logical_offset.cc
[modify] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/geometry/ng_logical_offset.h
[add] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/ng_base_layout_algorithm_test.cc
[add] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/ng_base_layout_algorithm_test.h
[modify] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm_test.cc
[modify] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.cc
[modify] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h
[modify] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.cc
[modify] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/ng_layout_opportunity_iterator.h
[modify] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc
[modify] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/ng_line_builder.h
[modify] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm.cc
[add] https://crrev.com/207688fb45319568db61e59c4c8391517793bf47/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm_test.cc

Project Member Comment 209 by bugdroid1@chromium.org, Mar 13
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ef24cecdfa9a5b06f294a3d0913cbdf326607bd6

commit ef24cecdfa9a5b06f294a3d0913cbdf326607bd6
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Mon Mar 13 23:50:32 2017

[LayoutNG] Remove checks for layout_box_ inside NGBlockNode.

We now always have one, remove branches. Also removed DCHECKs as its DCHECK'd
in the constructor.

BUG=635619

Review-Url: https://codereview.chromium.org/2749643003
Cr-Commit-Position: refs/heads/master@{#456552}

[modify] https://crrev.com/ef24cecdfa9a5b06f294a3d0913cbdf326607bd6/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc

Project Member Comment 210 by bugdroid1@chromium.org, Mar 16
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5d5c1c5c6d96ba9431897acd2a0eea2a2eabcac2

commit 5d5c1c5c6d96ba9431897acd2a0eea2a2eabcac2
Author: glebl <glebl@chromium.org>
Date: Thu Mar 16 02:41:51 2017

[LayoutNG] Move NGFloatingObject off Oilpan

BUG=635619

Review-Url: https://codereview.chromium.org/2752123002
Cr-Commit-Position: refs/heads/master@{#457326}

[modify] https://crrev.com/5d5c1c5c6d96ba9431897acd2a0eea2a2eabcac2/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/5d5c1c5c6d96ba9431897acd2a0eea2a2eabcac2/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/5d5c1c5c6d96ba9431897acd2a0eea2a2eabcac2/third_party/WebKit/Source/core/layout/ng/ng_floating_object.h
[modify] https://crrev.com/5d5c1c5c6d96ba9431897acd2a0eea2a2eabcac2/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.cc
[modify] https://crrev.com/5d5c1c5c6d96ba9431897acd2a0eea2a2eabcac2/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/5d5c1c5c6d96ba9431897acd2a0eea2a2eabcac2/third_party/WebKit/Source/core/layout/ng/ng_layout_result.cc
[modify] https://crrev.com/5d5c1c5c6d96ba9431897acd2a0eea2a2eabcac2/third_party/WebKit/Source/core/layout/ng/ng_layout_result.h
[modify] https://crrev.com/5d5c1c5c6d96ba9431897acd2a0eea2a2eabcac2/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.cc
[modify] https://crrev.com/5d5c1c5c6d96ba9431897acd2a0eea2a2eabcac2/third_party/WebKit/Source/core/layout/ng/ng_physical_box_fragment.h

Project Member Comment 212 by bugdroid1@chromium.org, Mar 17
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/06f0e62cf0feb57ba69bb6f31d09e17d8a2cc073

commit 06f0e62cf0feb57ba69bb6f31d09e17d8a2cc073
Author: glebl <glebl@chromium.org>
Date: Fri Mar 17 00:49:23 2017

Make NGFragmentBuilder to keep track on text children.

This patch adds methods to access text children and their offsets from
NGFragmentBuilder, so they can be accessed from NGLineBuilder.

Also we want NGLineBuilder to have the class variable container_builder_
so we can add positioned floats directly to the fragment builder
bypassing any additional lists in between.

BUG=635619

Review-Url: https://codereview.chromium.org/2753743003
Cr-Commit-Position: refs/heads/master@{#457633}

[modify] https://crrev.com/06f0e62cf0feb57ba69bb6f31d09e17d8a2cc073/third_party/WebKit/Source/core/layout/ng/ng_box_fragment.h
[modify] https://crrev.com/06f0e62cf0feb57ba69bb6f31d09e17d8a2cc073/third_party/WebKit/Source/core/layout/ng/ng_fragment.h
[modify] https://crrev.com/06f0e62cf0feb57ba69bb6f31d09e17d8a2cc073/third_party/WebKit/Source/core/layout/ng/ng_fragment_builder.h
[modify] https://crrev.com/06f0e62cf0feb57ba69bb6f31d09e17d8a2cc073/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc
[modify] https://crrev.com/06f0e62cf0feb57ba69bb6f31d09e17d8a2cc073/third_party/WebKit/Source/core/layout/ng/ng_line_builder.h
[modify] https://crrev.com/06f0e62cf0feb57ba69bb6f31d09e17d8a2cc073/third_party/WebKit/Source/core/layout/ng/ng_text_fragment.h

Project Member Comment 213 by bugdroid1@chromium.org, Mar 18
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fb239514f323bd9999a3e13fb5d8e3a27eddabd8

commit fb239514f323bd9999a3e13fb5d8e3a27eddabd8
Author: ikilpatrick <ikilpatrick@chromium.org>
Date: Sat Mar 18 03:57:59 2017

[LayoutNG] Split apart CreateConstraintSpaceForChild.

Introduces PrepareChildLayout which takes now does all of the pre-layout
margin calculation, margin-collapsing, etc.

Going to try and follow up with a patch which bundles margin,
bfc_offset, etc, together instead of using the class curr_*_ variables.

BUG=635619

Review-Url: https://codereview.chromium.org/2754303003
Cr-Commit-Position: refs/heads/master@{#457953}

[modify] https://crrev.com/fb239514f323bd9999a3e13fb5d8e3a27eddabd8/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/fb239514f323bd9999a3e13fb5d8e3a27eddabd8/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h

Project Member Comment 217 by bugdroid1@chromium.org, Mar 24 (2 days ago)
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fdd13e6a954714ba0cec7070080eacb057fdb3ff

commit fdd13e6a954714ba0cec7070080eacb057fdb3ff
Author: glebl <glebl@chromium.org>
Date: Fri Mar 24 01:38:37 2017

[LayoutNG] Make NGLineBuilder work with inline floats

This patch teaches NGLineBuilder how to position inline floats.

Below is a high level overview of the implemented logic:
Consider this example:
The quick <div id="float"></div> brown fox jumps over the lazy dog

1) NGLineBuilder/NGTextLayoutAlgorithm starts constructing a line
2) Every time when we hit a text break opportunity
   NGLineBuilder::SetEnd gets a corresponding NGLayoutInlineItem
3) If it's a float then it tries to position it on the current text
   line.
4) If the float does not fit it will be added to the UnpositionedFloat
   list
5) When we place the line we position all pending floats from the
   UnpositionedFloat list.

BUG=635619
TEST=TextFloatsAroundInlineFloatThatFitsOnLine,
TextFloatsAroundInlineFloatThatDoesNotFitOnLine

Review-Url: https://codereview.chromium.org/2755143003
Cr-Commit-Position: refs/heads/master@{#459332}

[modify] https://crrev.com/fdd13e6a954714ba0cec7070080eacb057fdb3ff/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/fdd13e6a954714ba0cec7070080eacb057fdb3ff/third_party/WebKit/Source/core/layout/FloatingObjects.h
[modify] https://crrev.com/fdd13e6a954714ba0cec7070080eacb057fdb3ff/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/fdd13e6a954714ba0cec7070080eacb057fdb3ff/third_party/WebKit/Source/core/layout/ng/ng_block_node.cc
[modify] https://crrev.com/fdd13e6a954714ba0cec7070080eacb057fdb3ff/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc
[modify] https://crrev.com/fdd13e6a954714ba0cec7070080eacb057fdb3ff/third_party/WebKit/Source/core/layout/ng/ng_line_builder.h
[modify] https://crrev.com/fdd13e6a954714ba0cec7070080eacb057fdb3ff/third_party/WebKit/Source/core/layout/ng/ng_space_utils.cc
[modify] https://crrev.com/fdd13e6a954714ba0cec7070080eacb057fdb3ff/third_party/WebKit/Source/core/layout/ng/ng_space_utils.h
[modify] https://crrev.com/fdd13e6a954714ba0cec7070080eacb057fdb3ff/third_party/WebKit/Source/core/layout/ng/ng_text_layout_algorithm_test.cc

Project Member Comment 218 by bugdroid1@chromium.org, Mar 24 (2 days ago)
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c

commit 6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c
Author: glebl <glebl@chromium.org>
Date: Fri Mar 24 18:55:54 2017

Fix block offset used by absolute-positioned objects

Absolute-positioned objects can be positioned as static
if top/bottom is auto. That's why they need to know
their block offset that composes from content_size and current
MarginStrut.

List of changes:
1) Set the correct block offset for absolute-positioned objects
2) Do not reset text child's margin as we need them to set
MarginStrut properly.
3) Move ComputeMinMaxContentSize and Style methods definition to
the base class and make them to be pure virtual methods.
4) Change CalculateMargins to work with NGLayoutInputNode base class
5) Update TestExpectations

BUG=635619
TEST=virtual/layout_ng/fast/block/margin-collapse/002.html and others

Review-Url: https://codereview.chromium.org/2773453004
Cr-Commit-Position: refs/heads/master@{#459499}

[modify] https://crrev.com/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c/third_party/WebKit/Source/core/layout/ng/ng_bidi_paragraph.cc
[modify] https://crrev.com/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c/third_party/WebKit/Source/core/layout/ng/ng_bidi_paragraph.h
[modify] https://crrev.com/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.cc
[modify] https://crrev.com/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c/third_party/WebKit/Source/core/layout/ng/ng_block_layout_algorithm.h
[modify] https://crrev.com/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c/third_party/WebKit/Source/core/layout/ng/ng_block_node.h
[modify] https://crrev.com/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c/third_party/WebKit/Source/core/layout/ng/ng_inline_node.cc
[modify] https://crrev.com/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c/third_party/WebKit/Source/core/layout/ng/ng_inline_node.h
[modify] https://crrev.com/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c/third_party/WebKit/Source/core/layout/ng/ng_layout_input_node.h
[modify] https://crrev.com/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c/third_party/WebKit/Source/core/layout/ng/ng_line_box_fragment_builder.cc
[modify] https://crrev.com/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc
[modify] https://crrev.com/6d8a607a3ba62cbd82d8ada7b10ad5c1ef5c978c/third_party/WebKit/Source/core/layout/ng/ng_text_fragment_builder.cc

Project Member Comment 219 by bugdroid1@chromium.org, Mar 24 (2 days ago)
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e1f56b7e3d7cc916df8a22831638ec1c4041ca7d

commit e1f56b7e3d7cc916df8a22831638ec1c4041ca7d
Author: glebl <glebl@chromium.org>
Date: Fri Mar 24 23:45:39 2017

Remove LayoutNGInline from LayoutNG virtual test suites args

LayoutNGInline flag was merged into LayoutNG
See https://codereview.chromium.org/2767793002/

BUG=635619

Review-Url: https://codereview.chromium.org/2774073003
Cr-Commit-Position: refs/heads/master@{#459601}

[modify] https://crrev.com/e1f56b7e3d7cc916df8a22831638ec1c4041ca7d/third_party/WebKit/LayoutTests/VirtualTestSuites

Project Member Comment 220 by bugdroid1@chromium.org, Yesterday (46 hours ago)
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/827e3e9ad3709d6ff335ec9bafd1e536ea78b09f

commit 827e3e9ad3709d6ff335ec9bafd1e536ea78b09f
Author: glebl <glebl@chromium.org>
Date: Sat Mar 25 01:56:10 2017

Fix DCHECK crash failed: object->isLayoutNGBlockFlow() in Inline Builder

We cannot cast every inline floating object to LayoutNGBlockFlow
because not all of them support LayoutNG. We need to use
NGBlockNode->Layout which supports legacy layout as well.

BUG=635619

Review-Url: https://codereview.chromium.org/2773183003
Cr-Commit-Position: refs/heads/master@{#459620}

[modify] https://crrev.com/827e3e9ad3709d6ff335ec9bafd1e536ea78b09f/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/827e3e9ad3709d6ff335ec9bafd1e536ea78b09f/third_party/WebKit/Source/core/layout/ng/ng_line_builder.cc

Sign in to add a comment