Commit 7c9bf479 authored by Xiaocheng Hu's avatar Xiaocheng Hu Committed by Commit Bot

[LayoutNG] Implement bidi adjustment for SelectionController

This patch generalizes RenderedPosition to store an AbsoluteInlineBox,
so that it also works with LayoutNG. As a result, bidi adjustment for
SelectionController is enabled in LayoutNG.

Bug: 811502
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_layout_ng;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I27d2ebe8e091173c4d298f15eb47b60f76c15312
Reviewed-on: https://chromium-review.googlesource.com/1070564Reviewed-by: default avatarYoichi Osato <yoichio@chromium.org>
Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#561612}
parent 60efe19e
...@@ -43,10 +43,6 @@ crbug.com/591099 fast/css/getComputedStyle/getComputedStyle-resolved-values.html ...@@ -43,10 +43,6 @@ crbug.com/591099 fast/css/getComputedStyle/getComputedStyle-resolved-values.html
# https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/layout/layout_block.cc?l=1372&rcl=0e081149ecd6a83f6289e3aee5797936008a1e10 # https://cs.chromium.org/chromium/src/third_party/blink/renderer/core/layout/layout_block.cc?l=1372&rcl=0e081149ecd6a83f6289e3aee5797936008a1e10
crbug.com/591099 fast/block/marquee-width-shrinks-to-fit-in-fixed-size-container.html [ Failure ] crbug.com/591099 fast/block/marquee-width-shrinks-to-fit-in-fixed-size-container.html [ Failure ]
# Needs bidi adjustment for SelectionController
crbug.com/811502 editing/selection/mouse/drag_selects_bidi_image.html [ Failure ]
crbug.com/811502 fast/text/selection/hebrew-selection.html [ Failure ]
# New passes # New passes
crbug.com/591099 external/wpt/css/CSS2/floats-clear/no-clearance-adjoining-opposite-float.html [ Pass ] crbug.com/591099 external/wpt/css/CSS2/floats-clear/no-clearance-adjoining-opposite-float.html [ Pass ]
crbug.com/591099 external/wpt/css/CSS2/floats-clear/no-clearance-due-to-large-margin-after-left-right.html [ Pass ] crbug.com/591099 external/wpt/css/CSS2/floats-clear/no-clearance-due-to-large-margin-after-left-right.html [ Pass ]
...@@ -213,7 +209,6 @@ crbug.com/714962 editing/selection/offset-from-point-complex-scripts.html [ Fail ...@@ -213,7 +209,6 @@ crbug.com/714962 editing/selection/offset-from-point-complex-scripts.html [ Fail
crbug.com/714962 editing/selection/offset-from-point.html [ Failure Pass ] crbug.com/714962 editing/selection/offset-from-point.html [ Failure Pass ]
crbug.com/591099 editing/selection/paint-hyphen.html [ Failure ] crbug.com/591099 editing/selection/paint-hyphen.html [ Failure ]
crbug.com/591099 editing/selection/programmatic-selection-on-mac-is-directionless.html [ Timeout ] crbug.com/591099 editing/selection/programmatic-selection-on-mac-is-directionless.html [ Timeout ]
crbug.com/591099 editing/selection/select-bidi-run.html [ Failure ]
crbug.com/591099 editing/selection/selection-button-text.html [ Failure Pass ] crbug.com/591099 editing/selection/selection-button-text.html [ Failure Pass ]
crbug.com/591099 editing/selection/skip-over-contenteditable.html [ Failure ] crbug.com/591099 editing/selection/skip-over-contenteditable.html [ Failure ]
crbug.com/591099 editing/selection/transformed-selection-rects.html [ Failure Pass ] crbug.com/591099 editing/selection/transformed-selection-rects.html [ Failure Pass ]
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "third_party/blink/renderer/core/editing/local_caret_rect.h" #include "third_party/blink/renderer/core/editing/local_caret_rect.h"
#include "third_party/blink/renderer/core/editing/position.h" #include "third_party/blink/renderer/core/editing/position.h"
#include "third_party/blink/renderer/core/editing/position_with_affinity.h" #include "third_party/blink/renderer/core/editing/position_with_affinity.h"
#include "third_party/blink/renderer/core/layout/ng/inline/ng_caret_position.h"
#include "third_party/blink/renderer/core/layout/ng/inline/ng_caret_rect.h" #include "third_party/blink/renderer/core/layout/ng/inline/ng_caret_rect.h"
#include "third_party/blink/renderer/core/layout/ng/inline/ng_line_utils.h" #include "third_party/blink/renderer/core/layout/ng/inline/ng_line_utils.h"
#include "third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.h" #include "third_party/blink/renderer/core/layout/ng/inline/ng_offset_mapping.h"
...@@ -18,6 +19,11 @@ const LayoutBlockFlow* NGInlineFormattingContextOf( ...@@ -18,6 +19,11 @@ const LayoutBlockFlow* NGInlineFormattingContextOf(
return NGInlineFormattingContextOf(ToPositionInDOMTree(position)); return NGInlineFormattingContextOf(ToPositionInDOMTree(position));
} }
NGCaretPosition ComputeNGCaretPosition(
const PositionInFlatTreeWithAffinity& position) {
return ComputeNGCaretPosition(ToPositionInDOMTreeWithAffinity(position));
}
LocalCaretRect ComputeNGLocalCaretRect( LocalCaretRect ComputeNGLocalCaretRect(
const PositionInFlatTreeWithAffinity& position) { const PositionInFlatTreeWithAffinity& position) {
return ComputeNGLocalCaretRect(ToPositionInDOMTreeWithAffinity(position)); return ComputeNGLocalCaretRect(ToPositionInDOMTreeWithAffinity(position));
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
namespace blink { namespace blink {
struct NGCaretPosition;
class LayoutBlockFlow; class LayoutBlockFlow;
struct LocalCaretRect; struct LocalCaretRect;
...@@ -18,6 +19,8 @@ struct LocalCaretRect; ...@@ -18,6 +19,8 @@ struct LocalCaretRect;
const LayoutBlockFlow* NGInlineFormattingContextOf(const PositionInFlatTree&); const LayoutBlockFlow* NGInlineFormattingContextOf(const PositionInFlatTree&);
NGCaretPosition ComputeNGCaretPosition(const PositionInFlatTreeWithAffinity&);
LocalCaretRect ComputeNGLocalCaretRect(const PositionInFlatTreeWithAffinity&); LocalCaretRect ComputeNGLocalCaretRect(const PositionInFlatTreeWithAffinity&);
bool InSameNGLineBox(const PositionInFlatTreeWithAffinity&, bool InSameNGLineBox(const PositionInFlatTreeWithAffinity&,
......
...@@ -32,6 +32,10 @@ struct NGPaintFragmentTraversalContext { ...@@ -32,6 +32,10 @@ struct NGPaintFragmentTraversalContext {
bool IsNull() const { return !parent; } bool IsNull() const { return !parent; }
const NGPaintFragment* GetFragment() const; const NGPaintFragment* GetFragment() const;
bool operator==(const NGPaintFragmentTraversalContext& other) const {
return parent == other.parent && index == other.index;
}
const NGPaintFragment* parent = nullptr; const NGPaintFragment* parent = nullptr;
unsigned index = 0; unsigned index = 0;
}; };
......
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