Commit 839cd450 authored by Koji Ishii's avatar Koji Ishii Committed by Commit Bot

[LayoutNG] Implement vertical flow text in NGTextFragmentPainter

Bug: 714962
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Ic7afbc244552c74ba9f9eb60a045112d621cfb31
Reviewed-on: https://chromium-review.googlesource.com/790170
Commit-Queue: Koji Ishii <kojii@chromium.org>
Reviewed-by: default avatarEmil A Eklund <eae@chromium.org>
Cr-Commit-Position: refs/heads/master@{#521623}
parent a8fb3d1f
......@@ -8074,8 +8074,7 @@ crbug.com/591099 virtual/layout_ng/fast/block/float/shrink-to-avoid-float-comple
crbug.com/591099 virtual/layout_ng/fast/block/margin-collapse/self-collapsing-cols-creates-block-formatting-context.html [ Pass ]
crbug.com/591099 virtual/layout_ng/overflow/overflow-basic-003.html [ Pass ]
crbug.com/591099 virtual/layout_ng/overflow/overflow-bug-chrome-ng-001.html [ Pass ]
crbug.com/714962 virtual/layout_ng_paint/fast/inline/drawStyledEmptyInlinesWithWS.html [ Failure Pass ]
crbug.com/591099 virtual/layout_ng_paint/fast/inline/inline-box-adjust-position-crash.html [ Pass ]
crbug.com/591099 virtual/layout_ng_paint/ [ Skip ]
crbug.com/591099 virtual/mojo-blobs/ [ Skip ]
crbug.com/591099 virtual/mojo-localstorage/ [ Skip ]
crbug.com/591099 virtual/mouseevent_fractional/fast/events/anchor-empty-focus.html [ Failure ]
......
......@@ -642,6 +642,61 @@ crbug.com/714962 virtual/layout_ng_paint/fast/inline/out-of-flow-objects-and-whi
crbug.com/714962 virtual/layout_ng_paint/fast/inline/outline-continuations.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/inline/styledEmptyInlinesWithBRs.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/Kusa-Makura-background-canvas.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/auto-margins-across-boundaries.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/auto-sizing-orthogonal-flows.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/background-vertical-lr.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/background-vertical-rl.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/basic-vertical-line.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/block-level-images.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/border-image-vertical-lr.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/border-image-vertical-rl.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/border-radius-clipping-vertical-lr.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/border-styles-vertical-lr.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/border-styles-vertical-rl.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/border-vertical-lr.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/borders.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/box-shadow-horizontal-tb-tile-edge.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/box-shadow-vertical-lr.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/box-shadow-vertical-rl.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/broken-ideograph-small-caps.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/broken-ideographic-font.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/english-lr-text.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/english-rl-text.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/fallback-orientation.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/fieldsets.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/flipped-blocks-hit-test-line-edges.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/flipped-blocks-inline-map-local-to-container.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/flipped-blocks-text-map-local-to-container.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/japanese-lr-selection.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/japanese-lr-text.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/japanese-rl-selection.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/japanese-rl-text-with-broken-font.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/japanese-rl-text.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/japanese-ruby-vertical-lr.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/japanese-ruby-vertical-rl.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/logical-height-after-clear.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/margins.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/orthogonal-inline-block.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/orthogonal-writing-modes-available-width-absolute-crash.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/orthogonal-writing-modes-in-layoutview-with-floats.html [ Crash ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/percentage-height-orthogonal-writing-modes-quirks.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/percentage-height-orthogonal-writing-modes.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/percentage-margins-absolute-replaced.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/percentage-margins-absolute.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/table-hit-test.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/table-percent-width-quirk.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/text-combine-compress.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/text-combine-justify.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/text-combine-line-break.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/text-combine-various-fonts.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/text-orientation-basic.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/vertical-align-table-baseline.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/vertical-baseline-alignment.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/vertical-font-fallback.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/vertical-lr-replaced-selection.html [ Failure ]
crbug.com/714962 virtual/layout_ng_paint/fast/writing-mode/vertical-rl-replaced-selection.html [ Failure ]
# ====== LayoutNG-only failures until here ======
# ====== IncrementalShadowDOM-only failures from here ======
......
......@@ -422,6 +422,11 @@
"base": "fast/inline",
"args": ["--enable-blink-features=LayoutNG,LayoutNGPaintFragments"]
},
{
"prefix": "layout_ng_paint",
"base": "fast/writing-mode",
"args": ["--enable-blink-features=LayoutNG,LayoutNGPaintFragments"]
},
{
"prefix": "feature-policy",
"base": "http/tests/feature-policy",
......
# This suite runs the tests in fast/writing-mode with
# --enable-blink-features=LayoutNG,LayoutNGPaintFragments.
# The LayoutNG project is described here: http://goo.gl/1hwhfX
layer at (0,0) size 800x600
LayoutView at (0,0) size 800x600
layer at (0,0) size 308x600
LayoutNGBlockFlow {HTML} at (0,0) size 308x600
LayoutNGBlockFlow {BODY} at (8,8) size 100x584
LayoutNGBlockFlow {DIV} at (0,0) size 100x584 [bgcolor=#FFFF00]
LayoutNGBlockFlow (floating) {DIV} at (100,10) size 100x100 [bgcolor=#008000]
LayoutNGBlockFlow (floating) {DIV} at (100,474) size 100x100 [bgcolor=#008000]
LayoutNGBlockFlow (floating) {DIV} at (200,10) size 100x100 [bgcolor=#800080]
LayoutNGBlockFlow (floating) {DIV} at (200,474) size 100x100 [bgcolor=#800080]
layer at (0,0) size 800x600
LayoutView at (0,0) size 800x600
layer at (0,0) size 800x224
LayoutNGBlockFlow {HTML} at (0,0) size 800x224
LayoutNGBlockFlow {BODY} at (8,8) size 784x208
LayoutNGBlockFlow {DIV} at (0,0) size 604x104 [border: (2px solid #000000)]
LayoutNGBlockFlow {DIV} at (52,2) size 100x100 [bgcolor=#008000]
LayoutNGBlockFlow {DIV} at (0,104) size 604x104 [border: (2px solid #000000)]
LayoutNGBlockFlow {DIV} at (452,2) size 100x100 [bgcolor=#008000]
layer at (0,0) size 800x600
LayoutView at (0,0) size 800x600
layer at (0,0) size 800x580
LayoutNGBlockFlow {HTML} at (0,0) size 800x580
LayoutNGBlockFlow {BODY} at (8,8) size 784x564
LayoutNGBlockFlow {DIV} at (0,0) size 784x564 [border: (2px solid #000000)]
LayoutNGBlockFlow {DIV} at (18,34) size 100x100 [bgcolor=#008000]
LayoutNGBlockFlow {DIV} at (18,166) size 100x100 [bgcolor=#008000]
LayoutNGBlockFlow {DIV} at (18,298) size 100x100 [bgcolor=#008000]
LayoutNGBlockFlow {DIV} at (18,430) size 100x100 [bgcolor=#008000]
layer at (0,0) size 800x600
LayoutView at (0,0) size 800x600
layer at (0,0) size 104x600
LayoutNGBlockFlow {HTML} at (0,0) size 104x600 [border: (2px solid #000000)]
LayoutNGBlockFlow {BODY} at (10,10) size 0x580
layer at (0,0) size 800x600
LayoutView at (0,0) size 800x600
layer at (0,0) size 316x600
LayoutNGBlockFlow {HTML} at (0,0) size 316x600
LayoutNGBlockFlow {BODY} at (8,8) size 300x584
LayoutNGBlockFlow {DIV} at (0,0) size 100x584 [bgcolor=#008000]
LayoutNGBlockFlow {DIV} at (200,0) size 0x100
LayoutNGBlockFlow {DIV} at (200,0) size 100x584 [bgcolor=#008000]
layer at (0,0) size 800x600
LayoutView at (0,0) size 800x600
layer at (0,0) size 800x8
LayoutNGBlockFlow {HTML} at (0,0) size 800x8
LayoutNGBlockFlow {BODY} at (8,8) size 784x0
layer at (8,50) size 100x50
LayoutNGBlockFlow (positioned) {DIV} at (8,50) size 100x50 [bgcolor=#808080]
layer at (8,50) size 20x40
LayoutNGBlockFlow (positioned) {DIV} at (0,0) size 20x40 [bgcolor=#0000FF]
LayoutNGBlockFlow {DIV} at (0,0) size 20x20
LayoutNGBlockFlow {DIV} at (0,20) size 20x20 [bgcolor=#008000]
LayoutNGBlockFlow {DIV} at (0,0) size 20x20
layer at (8,125) size 100x50
LayoutNGBlockFlow (positioned) {DIV} at (8,125) size 100x50 [bgcolor=#808080]
layer at (8,125) size 20x40
LayoutNGBlockFlow (positioned) {DIV} at (0,0) size 20x40 [bgcolor=#0000FF]
LayoutNGBlockFlow {DIV} at (0,0) size 20x20
LayoutTable {TABLE} at (0,20) size 20x20 [bgcolor=#008000]
LayoutTableSection {TBODY} at (0,0) size 20x20
LayoutTableRow {TR} at (0,0) size 20x20
LayoutNGTableCell {TD} at (0,0) size 20x20 [r=0 c=0 rs=1 cs=1]
LayoutNGBlockFlow {DIV} at (0,0) size 20x20
layer at (8,200) size 100x50
LayoutNGBlockFlow (positioned) {DIV} at (8,200) size 100x50 [bgcolor=#808080]
layer at (68,200) size 40x20
LayoutNGBlockFlow (positioned) {DIV} at (0,0) size 40x20 [bgcolor=#0000FF]
LayoutNGBlockFlow {DIV} at (0,0) size 20x20
LayoutTable {TABLE} at (20,0) size 20x20 [bgcolor=#008000]
LayoutTableSection {TBODY} at (0,0) size 20x20
LayoutTableRow {TR} at (0,0) size 20x20
LayoutNGTableCell {TD} at (0,0) size 20x20 [r=0 c=0 rs=1 cs=1]
LayoutNGBlockFlow {DIV} at (0,0) size 20x20
layer at (8,275) size 100x50
LayoutNGBlockFlow (positioned) {DIV} at (8,275) size 100x50 [bgcolor=#808080]
layer at (68,275) size 40x20
LayoutNGBlockFlow (positioned) {DIV} at (0,0) size 40x20 [bgcolor=#0000FF]
LayoutNGBlockFlow {DIV} at (0,0) size 20x20
LayoutNGBlockFlow {DIV} at (20,0) size 20x20 [bgcolor=#008000]
LayoutNGBlockFlow {DIV} at (0,0) size 20x20
layer at (8,350) size 100x50
LayoutNGBlockFlow (positioned) {DIV} at (8,350) size 100x50 [bgcolor=#808080]
layer at (-712,350) size 820x20 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
LayoutNGBlockFlow (positioned) {DIV} at (0,0) size 820x20 [bgcolor=#0000FF]
LayoutNGBlockFlow {DIV} at (0,0) size 20x20
LayoutTable {TABLE} at (20,0) size 800x20 [bgcolor=#008000]
LayoutTableSection {TBODY} at (0,0) size 800x20
LayoutTableRow {TR} at (0,0) size 800x20
LayoutNGTableCell {TD} at (0,0) size 800x20 [r=0 c=0 rs=1 cs=1]
LayoutNGBlockFlow {DIV} at (0,0) size 20x20
layer at (8,425) size 100x50
LayoutNGBlockFlow (positioned) {DIV} at (8,425) size 100x50 [bgcolor=#808080]
layer at (-712,425) size 820x20 backgroundClip at (0,0) size 800x600 clip at (0,0) size 800x600
LayoutNGBlockFlow (positioned) {DIV} at (0,0) size 820x20 [bgcolor=#0000FF]
LayoutNGBlockFlow {DIV} at (0,0) size 20x20
LayoutNGBlockFlow {DIV} at (20,0) size 800x20 [bgcolor=#008000]
LayoutNGBlockFlow {DIV} at (0,0) size 20x20
......@@ -39,9 +39,6 @@ void NGTextFragmentPainter::Paint(const Document& document,
LayoutPoint box_origin(offset.left, offset.top);
box_origin.Move(adjusted_paint_offset.X(), adjusted_paint_offset.Y());
LayoutRect box_rect(
box_origin, LayoutSize(fragment_.Size().width, fragment_.Size().height));
GraphicsContext& context = paint_info.context;
bool is_printing = paint_info.IsPrinting();
......@@ -85,6 +82,21 @@ void NGTextFragmentPainter::Paint(const Document& document,
const NGPhysicalTextFragment& text_fragment =
ToNGPhysicalTextFragment(fragment_.PhysicalFragment());
LayoutRect box_rect(box_origin, fragment_.Size().ToLayoutSize());
Optional<GraphicsContextStateSaver> state_saver;
NGLineOrientation orientation = text_fragment.LineOrientation();
if (orientation != NGLineOrientation::kHorizontal) {
state_saver.emplace(context);
// Because we rotate the GraphicsContext to be logical, flip the
// |box_rect| to match to it.
box_rect.SetSize(
LayoutSize(fragment_.Size().height, fragment_.Size().width));
context.ConcatCTM(TextPainterBase::Rotation(
box_rect, orientation == NGLineOrientation::kClockWiseVertical
? TextPainterBase::kClockwise
: TextPainterBase::kCounterclockwise));
}
NGTextPainter text_painter(context, font, text_fragment, text_origin,
box_rect, text_fragment.IsHorizontal());
......@@ -100,13 +112,15 @@ void NGTextFragmentPainter::Paint(const Document& document,
bool has_line_through_decoration = false;
if (style.TextDecorationsInEffect() != TextDecoration::kNone) {
LayoutPoint local_origin = LayoutPoint(box_origin);
LayoutUnit width = fragment_.Size().width;
LayoutUnit width = box_rect.Width();
const NGPhysicalBoxFragment* decorating_box = nullptr;
const ComputedStyle* decorating_box_style =
decorating_box ? &decorating_box->Style() : nullptr;
// TODO(eae): Use correct baseline when available.
FontBaseline baseline_type = kAlphabeticBaseline;
const FontDescription& font_description = font.GetFontDescription();
FontBaseline baseline_type = font_description.IsVerticalAnyUpright()
? kIdeographicBaseline
: kAlphabeticBaseline;
text_painter.ComputeDecorationInfo(decoration_info, box_origin,
local_origin, width, baseline_type,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment