Commit 8f270bff authored by Oriol Brufau's avatar Oriol Brufau Committed by Commit Bot

[css-pseudo] Split LayoutListMarker into outside and inside classes

This patch adds LayoutInsideListMarker and LayoutOutsideListMarker
classes for ::marker. The logic remains in LayoutListMarker for now, but
this is a first step to implementing inside markers with LayoutInline
and outside markers with LayoutBlockFlow, which will be necessary in
order to support the 'content' property in legacy layout.

TEST=blink/web_tests/editing/execCommand/create-list-1.html
TEST=editing/pasteboard/drag-selected-image-to-contenteditable.html
TEST=editing/pasteboard/input-field-1.html
TEST=editing/selection/drag-to-contenteditable-iframe.html
TEST=editing/selection/move-by-line-002.html
TEST=editing/selection/selectNode.html
TEST=editing/selection/selectNodeContents.html
TEST=editing/unsupported-content/list-delete-001.html
TEST=editing/unsupported-content/list-type-after.html
TEST=editing/unsupported-content/list-type-before.html
TEST=paint/invalidation/list-marker-2.html

BUG=457718

Change-Id: I1eda402ac6e9b137031992257a0542fffa103639
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2094991
Commit-Queue: Oriol Brufau <obrufau@igalia.com>
Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#748730}
parent 78588383
...@@ -139,6 +139,8 @@ blink_core_sources("layout") { ...@@ -139,6 +139,8 @@ blink_core_sources("layout") {
"layout_image_resource_style_image.h", "layout_image_resource_style_image.h",
"layout_inline.cc", "layout_inline.cc",
"layout_inline.h", "layout_inline.h",
"layout_inside_list_marker.cc",
"layout_inside_list_marker.h",
"layout_list_item.cc", "layout_list_item.cc",
"layout_list_item.h", "layout_list_item.h",
"layout_list_marker.cc", "layout_list_marker.cc",
...@@ -158,6 +160,8 @@ blink_core_sources("layout") { ...@@ -158,6 +160,8 @@ blink_core_sources("layout") {
"layout_object_factory.cc", "layout_object_factory.cc",
"layout_object_factory.h", "layout_object_factory.h",
"layout_object_inlines.h", "layout_object_inlines.h",
"layout_outside_list_marker.cc",
"layout_outside_list_marker.h",
"layout_progress.cc", "layout_progress.cc",
"layout_progress.h", "layout_progress.h",
"layout_quote.cc", "layout_quote.cc",
......
...@@ -24,16 +24,7 @@ class LineLayoutListMarker : public LineLayoutBox { ...@@ -24,16 +24,7 @@ class LineLayoutListMarker : public LineLayoutBox {
LineLayoutListMarker() = default; LineLayoutListMarker() = default;
bool IsInside() const { return ToListMarker()->IsInside(); } bool IsInside() const { return GetLayoutObject()->IsInsideListMarker(); }
private:
LayoutListMarker* ToListMarker() {
return ToLayoutListMarker(GetLayoutObject());
}
const LayoutListMarker* ToListMarker() const {
return ToLayoutListMarker(GetLayoutObject());
}
}; };
} // namespace blink } // namespace blink
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/core/layout/layout_inside_list_marker.h"
namespace blink {
LayoutInsideListMarker::LayoutInsideListMarker(Element* element)
: LayoutListMarker(element) {}
LayoutInsideListMarker::~LayoutInsideListMarker() = default;
} // namespace blink
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_INSIDE_LIST_MARKER_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_INSIDE_LIST_MARKER_H_
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/layout/layout_list_marker.h"
namespace blink {
// Used to layout the list item's inside marker.
// The LayoutInsideListMarker always has to be a child of a LayoutListItem.
class CORE_EXPORT LayoutInsideListMarker final : public LayoutListMarker {
public:
explicit LayoutInsideListMarker(Element*);
~LayoutInsideListMarker() override;
const char* GetName() const override { return "LayoutInsideListMarker"; }
private:
bool IsOfType(LayoutObjectType type) const override {
return type == kLayoutObjectInsideListMarker ||
LayoutListMarker::IsOfType(type);
}
};
DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutInsideListMarker, IsInsideListMarker());
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_INSIDE_LIST_MARKER_H_
...@@ -91,7 +91,7 @@ void LayoutListItem::SubtreeDidChange() { ...@@ -91,7 +91,7 @@ void LayoutListItem::SubtreeDidChange() {
// If the marker is inside we need to redo the preferred width calculations // If the marker is inside we need to redo the preferred width calculations
// as the size of the item now includes the size of the list marker. // as the size of the item now includes the size of the list marker.
if (marker->IsInside()) if (marker->IsInsideListMarker())
SetPreferredLogicalWidthsDirty(); SetPreferredLogicalWidthsDirty();
} }
...@@ -176,13 +176,14 @@ bool LayoutListItem::PrepareForBlockDirectionAlign( ...@@ -176,13 +176,14 @@ bool LayoutListItem::PrepareForBlockDirectionAlign(
const LayoutObject* line_box_parent) { const LayoutObject* line_box_parent) {
LayoutListMarker* marker = Marker(); LayoutListMarker* marker = Marker();
LayoutObject* marker_parent = marker->Parent(); LayoutObject* marker_parent = marker->Parent();
bool is_inside = marker->IsInsideListMarker();
// Deal with the situation of layout tree changed. // Deal with the situation of layout tree changed.
if (marker_parent && marker_parent->IsAnonymous()) { if (marker_parent && marker_parent->IsAnonymous()) {
bool marker_parent_has_lines = bool marker_parent_has_lines =
line_box_parent && line_box_parent->IsDescendantOf(marker_parent); line_box_parent && line_box_parent->IsDescendantOf(marker_parent);
// When list-position-style change from outside to inside, we need to // When list-position-style change from outside to inside, we need to
// restore LogicalHeight to auto. So add IsInside(). // restore LogicalHeight to auto. So add is_inside.
if (marker->IsInside() || marker_parent_has_lines) { if (is_inside || marker_parent_has_lines) {
// Set marker_container's LogicalHeight to auto. // Set marker_container's LogicalHeight to auto.
if (marker_parent->StyleRef().LogicalHeight().IsZero()) if (marker_parent->StyleRef().LogicalHeight().IsZero())
ForceLogicalHeight(*marker_parent, Length()); ForceLogicalHeight(*marker_parent, Length());
...@@ -192,7 +193,7 @@ bool LayoutListItem::PrepareForBlockDirectionAlign( ...@@ -192,7 +193,7 @@ bool LayoutListItem::PrepareForBlockDirectionAlign(
// new empty line in cases like <li><span><div>text<div><span></li> // new empty line in cases like <li><span><div>text<div><span></li>
// If the marker is inside and there are inline contents, we want them to // If the marker is inside and there are inline contents, we want them to
// share the same block container to avoid a line break between them. // share the same block container to avoid a line break between them.
if (marker->IsInside() != marker_parent_has_lines) { if (is_inside != marker_parent_has_lines) {
marker->Remove(); marker->Remove();
marker_parent = nullptr; marker_parent = nullptr;
} }
...@@ -204,7 +205,7 @@ bool LayoutListItem::PrepareForBlockDirectionAlign( ...@@ -204,7 +205,7 @@ bool LayoutListItem::PrepareForBlockDirectionAlign(
// Create marker_container, set its height to 0px, and add it to li. // Create marker_container, set its height to 0px, and add it to li.
if (!marker_parent) { if (!marker_parent) {
LayoutObject* before_child = FirstNonMarkerChild(this); LayoutObject* before_child = FirstNonMarkerChild(this);
if (!marker->IsInside() && before_child && !before_child->IsInline()) { if (!is_inside && before_child && !before_child->IsInline()) {
// Create marker_container and set its LogicalHeight to 0px. // Create marker_container and set its LogicalHeight to 0px.
LayoutBlock* marker_container = CreateAnonymousBlock(); LayoutBlock* marker_container = CreateAnonymousBlock();
if (line_box_parent) if (line_box_parent)
...@@ -246,7 +247,7 @@ bool LayoutListItem::UpdateMarkerLocation() { ...@@ -246,7 +247,7 @@ bool LayoutListItem::UpdateMarkerLocation() {
AddChild(marker, FirstChild()); AddChild(marker, FirstChild());
} }
if (!marker->IsInside()) if (marker->IsOutsideListMarker())
line_box_parent = GetParentOfFirstLineBox(this); line_box_parent = GetParentOfFirstLineBox(this);
if (line_box_parent && (line_box_parent->HasOverflowClip() || if (line_box_parent && (line_box_parent->HasOverflowClip() ||
!line_box_parent->IsLayoutBlockFlow() || !line_box_parent->IsLayoutBlockFlow() ||
...@@ -396,7 +397,7 @@ void LayoutListItem::AlignMarkerInBlockDirection() { ...@@ -396,7 +397,7 @@ void LayoutListItem::AlignMarkerInBlockDirection() {
void LayoutListItem::UpdateOverflow() { void LayoutListItem::UpdateOverflow() {
LayoutListMarker* marker = Marker(); LayoutListMarker* marker = Marker();
if (!marker || !marker->Parent() || !marker->Parent()->IsBox() || if (!marker || !marker->Parent() || !marker->Parent()->IsBox() ||
marker->IsInside() || !marker->InlineBoxWrapper()) marker->IsInsideListMarker() || !marker->InlineBoxWrapper())
return; return;
if (need_block_direction_align_) if (need_block_direction_align_)
......
...@@ -281,7 +281,7 @@ void LayoutListMarker::UpdateMargins() { ...@@ -281,7 +281,7 @@ void LayoutListMarker::UpdateMargins() {
LayoutUnit margin_start; LayoutUnit margin_start;
LayoutUnit margin_end; LayoutUnit margin_end;
const ComputedStyle& style = StyleRef(); const ComputedStyle& style = StyleRef();
if (IsInside()) { if (IsInsideListMarker()) {
std::tie(margin_start, margin_end) = std::tie(margin_start, margin_end) =
InlineMarginsForInside(style, IsImage()); InlineMarginsForInside(style, IsImage());
} else { } else {
...@@ -442,14 +442,6 @@ LayoutListMarker::ListStyleCategory LayoutListMarker::GetListStyleCategory( ...@@ -442,14 +442,6 @@ LayoutListMarker::ListStyleCategory LayoutListMarker::GetListStyleCategory(
} }
} }
bool LayoutListMarker::IsInside() const {
const LayoutListItem* list_item = ListItem();
const ComputedStyle& parent_style = list_item->StyleRef();
return parent_style.ListStylePosition() == EListStylePosition::kInside ||
(IsA<HTMLLIElement>(list_item->GetNode()) &&
!parent_style.IsInsideListElement());
}
LayoutRect LayoutListMarker::GetRelativeMarkerRect() const { LayoutRect LayoutListMarker::GetRelativeMarkerRect() const {
if (IsImage()) if (IsImage())
return LayoutRect(LayoutPoint(), ImageBulletSize()); return LayoutRect(LayoutPoint(), ImageBulletSize());
......
...@@ -31,9 +31,8 @@ namespace blink { ...@@ -31,9 +31,8 @@ namespace blink {
class LayoutListItem; class LayoutListItem;
// Used to layout the list item's marker. // This class holds code shared among legacy classes for list markers.
// The LayoutListMarker always has to be a child of a LayoutListItem. class CORE_EXPORT LayoutListMarker : public LayoutBox {
class CORE_EXPORT LayoutListMarker final : public LayoutBox {
public: public:
explicit LayoutListMarker(Element*); explicit LayoutListMarker(Element*);
~LayoutListMarker() override; ~LayoutListMarker() override;
...@@ -53,8 +52,6 @@ class CORE_EXPORT LayoutListMarker final : public LayoutBox { ...@@ -53,8 +52,6 @@ class CORE_EXPORT LayoutListMarker final : public LayoutBox {
ListStyleCategory GetListStyleCategory() const; ListStyleCategory GetListStyleCategory() const;
static ListStyleCategory GetListStyleCategory(EListStyleType); static ListStyleCategory GetListStyleCategory(EListStyleType);
bool IsInside() const;
void UpdateMarginsAndContent(); void UpdateMarginsAndContent();
// Compute inline margins for 'list-style-position: inside' and 'outside'. // Compute inline margins for 'list-style-position: inside' and 'outside'.
...@@ -75,8 +72,6 @@ class CORE_EXPORT LayoutListMarker final : public LayoutBox { ...@@ -75,8 +72,6 @@ class CORE_EXPORT LayoutListMarker final : public LayoutBox {
const LayoutListItem* ListItem() const; const LayoutListItem* ListItem() const;
LayoutSize ImageBulletSize() const; LayoutSize ImageBulletSize() const;
const char* GetName() const override { return "LayoutListMarker"; }
LayoutUnit LineOffset() const { return line_offset_; } LayoutUnit LineOffset() const { return line_offset_; }
protected: protected:
...@@ -85,10 +80,6 @@ class CORE_EXPORT LayoutListMarker final : public LayoutBox { ...@@ -85,10 +80,6 @@ class CORE_EXPORT LayoutListMarker final : public LayoutBox {
private: private:
void ComputePreferredLogicalWidths() override; void ComputePreferredLogicalWidths() override;
bool IsOfType(LayoutObjectType type) const override {
return type == kLayoutObjectListMarker || LayoutBox::IsOfType(type);
}
void Paint(const PaintInfo&) const override; void Paint(const PaintInfo&) const override;
void UpdateLayout() override; void UpdateLayout() override;
......
...@@ -3629,10 +3629,6 @@ bool LayoutObject::GetImageAnimationPolicy(ImageAnimationPolicy& policy) { ...@@ -3629,10 +3629,6 @@ bool LayoutObject::GetImageAnimationPolicy(ImageAnimationPolicy& policy) {
return true; return true;
} }
bool LayoutObject::IsOutsideListMarker() const {
return IsListMarker() && !ToLayoutListMarker(this)->IsInside();
}
int LayoutObject::CaretMinOffset() const { int LayoutObject::CaretMinOffset() const {
return 0; return 0;
} }
......
...@@ -647,6 +647,9 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver, ...@@ -647,6 +647,9 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
} }
bool IsFrame() const { return IsOfType(kLayoutObjectFrame); } bool IsFrame() const { return IsOfType(kLayoutObjectFrame); }
bool IsFrameSet() const { return IsOfType(kLayoutObjectFrameSet); } bool IsFrameSet() const { return IsOfType(kLayoutObjectFrameSet); }
bool IsInsideListMarker() const {
return IsOfType(kLayoutObjectInsideListMarker);
}
bool IsLayoutNGBlockFlow() const { bool IsLayoutNGBlockFlow() const {
return IsOfType(kLayoutObjectNGBlockFlow); return IsOfType(kLayoutObjectNGBlockFlow);
} }
...@@ -655,25 +658,27 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver, ...@@ -655,25 +658,27 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
} }
bool IsLayoutNGMixin() const { return IsOfType(kLayoutObjectNGMixin); } bool IsLayoutNGMixin() const { return IsOfType(kLayoutObjectNGMixin); }
bool IsLayoutNGListItem() const { return IsOfType(kLayoutObjectNGListItem); } bool IsLayoutNGListItem() const { return IsOfType(kLayoutObjectNGListItem); }
bool IsLayoutNGOutsideListMarker() const {
return IsOfType(kLayoutObjectNGOutsideListMarker);
}
bool IsLayoutNGInsideListMarker() const { bool IsLayoutNGInsideListMarker() const {
return IsOfType(kLayoutObjectNGInsideListMarker); return IsOfType(kLayoutObjectNGInsideListMarker);
} }
bool IsLayoutNGListMarkerImage() const { bool IsLayoutNGListMarkerImage() const {
return IsOfType(kLayoutObjectNGListMarkerImage); return IsOfType(kLayoutObjectNGListMarkerImage);
} }
bool IsLayoutNGOutsideListMarker() const {
return IsOfType(kLayoutObjectNGOutsideListMarker);
}
bool IsLayoutNGProgress() const { return IsOfType(kLayoutObjectNGProgress); } bool IsLayoutNGProgress() const { return IsOfType(kLayoutObjectNGProgress); }
bool IsLayoutNGText() const { return IsOfType(kLayoutObjectNGText); } bool IsLayoutNGText() const { return IsOfType(kLayoutObjectNGText); }
bool IsLayoutTableCol() const { bool IsLayoutTableCol() const {
return IsOfType(kLayoutObjectLayoutTableCol); return IsOfType(kLayoutObjectLayoutTableCol);
} }
bool IsListItem() const { return IsOfType(kLayoutObjectListItem); } bool IsListItem() const { return IsOfType(kLayoutObjectListItem); }
bool IsListMarker() const { return IsOfType(kLayoutObjectListMarker); }
bool IsMathML() const { return IsOfType(kLayoutObjectMathML); } bool IsMathML() const { return IsOfType(kLayoutObjectMathML); }
bool IsMathMLRoot() const { return IsOfType(kLayoutObjectMathMLRoot); } bool IsMathMLRoot() const { return IsOfType(kLayoutObjectMathMLRoot); }
bool IsMedia() const { return IsOfType(kLayoutObjectMedia); } bool IsMedia() const { return IsOfType(kLayoutObjectMedia); }
bool IsOutsideListMarker() const {
return IsOfType(kLayoutObjectOutsideListMarker);
}
bool IsProgress() const { return IsOfType(kLayoutObjectProgress); } bool IsProgress() const { return IsOfType(kLayoutObjectProgress); }
bool IsQuote() const { return IsOfType(kLayoutObjectQuote); } bool IsQuote() const { return IsOfType(kLayoutObjectQuote); }
bool IsLayoutButton() const { return IsOfType(kLayoutObjectLayoutButton); } bool IsLayoutButton() const { return IsOfType(kLayoutObjectLayoutButton); }
...@@ -1993,13 +1998,15 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver, ...@@ -1993,13 +1998,15 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
// There are 3 types of list marker. LayoutNG creates different types for // There are 3 types of list marker. LayoutNG creates different types for
// inside and outside; outside is derived from LayoutBlockFlow, and inside // inside and outside; outside is derived from LayoutBlockFlow, and inside
// from LayoutInline. Legacy is derived from LayoutBox. // from LayoutInline. Legacy is derived from LayoutBox.
bool IsListMarker() const {
return IsOutsideListMarker() || IsInsideListMarker();
}
bool IsListMarkerIncludingNGOutside() const { bool IsListMarkerIncludingNGOutside() const {
return IsListMarker() || IsLayoutNGOutsideListMarker(); return IsListMarker() || IsLayoutNGOutsideListMarker();
} }
bool IsListMarkerIncludingNGOutsideAndInside() const { bool IsListMarkerIncludingNGOutsideAndInside() const {
return IsListMarkerIncludingNGOutside() || IsLayoutNGInsideListMarker(); return IsListMarkerIncludingNGOutside() || IsLayoutNGInsideListMarker();
} }
bool IsOutsideListMarker() const;
virtual bool IsCombineText() const { return false; } virtual bool IsCombineText() const { return false; }
...@@ -2537,9 +2544,9 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver, ...@@ -2537,9 +2544,9 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
kLayoutObjectFileUploadControl, kLayoutObjectFileUploadControl,
kLayoutObjectFrame, kLayoutObjectFrame,
kLayoutObjectFrameSet, kLayoutObjectFrameSet,
kLayoutObjectInsideListMarker,
kLayoutObjectLayoutTableCol, kLayoutObjectLayoutTableCol,
kLayoutObjectListItem, kLayoutObjectListItem,
kLayoutObjectListMarker,
kLayoutObjectMathML, kLayoutObjectMathML,
kLayoutObjectMathMLRoot, kLayoutObjectMathMLRoot,
kLayoutObjectMedia, kLayoutObjectMedia,
...@@ -2553,6 +2560,7 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver, ...@@ -2553,6 +2560,7 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
kLayoutObjectNGListMarkerImage, kLayoutObjectNGListMarkerImage,
kLayoutObjectNGProgress, kLayoutObjectNGProgress,
kLayoutObjectNGText, kLayoutObjectNGText,
kLayoutObjectOutsideListMarker,
kLayoutObjectProgress, kLayoutObjectProgress,
kLayoutObjectQuote, kLayoutObjectQuote,
kLayoutObjectLayoutButton, kLayoutObjectLayoutButton,
......
...@@ -10,8 +10,9 @@ ...@@ -10,8 +10,9 @@
#include "third_party/blink/renderer/core/layout/layout_deprecated_flexible_box.h" #include "third_party/blink/renderer/core/layout/layout_deprecated_flexible_box.h"
#include "third_party/blink/renderer/core/layout/layout_fieldset.h" #include "third_party/blink/renderer/core/layout/layout_fieldset.h"
#include "third_party/blink/renderer/core/layout/layout_flexible_box.h" #include "third_party/blink/renderer/core/layout/layout_flexible_box.h"
#include "third_party/blink/renderer/core/layout/layout_inside_list_marker.h"
#include "third_party/blink/renderer/core/layout/layout_list_item.h" #include "third_party/blink/renderer/core/layout/layout_list_item.h"
#include "third_party/blink/renderer/core/layout/layout_list_marker.h" #include "third_party/blink/renderer/core/layout/layout_outside_list_marker.h"
#include "third_party/blink/renderer/core/layout/layout_table_caption.h" #include "third_party/blink/renderer/core/layout/layout_table_caption.h"
#include "third_party/blink/renderer/core/layout/layout_table_cell.h" #include "third_party/blink/renderer/core/layout/layout_table_cell.h"
#include "third_party/blink/renderer/core/layout/layout_text.h" #include "third_party/blink/renderer/core/layout/layout_text.h"
...@@ -115,10 +116,10 @@ LayoutObject* LayoutObjectFactory::CreateListMarker(Node& node, ...@@ -115,10 +116,10 @@ LayoutObject* LayoutObjectFactory::CreateListMarker(Node& node,
(IsA<HTMLLIElement>(parent) && !parent_style->IsInsideListElement()); (IsA<HTMLLIElement>(parent) && !parent_style->IsInsideListElement());
if (is_inside) { if (is_inside) {
return CreateObject<LayoutObject, LayoutNGInsideListMarker, return CreateObject<LayoutObject, LayoutNGInsideListMarker,
LayoutListMarker>(node, style, legacy); LayoutInsideListMarker>(node, style, legacy);
} }
return CreateObject<LayoutObject, LayoutNGOutsideListMarker, return CreateObject<LayoutObject, LayoutNGOutsideListMarker,
LayoutListMarker>(node, style, legacy); LayoutOutsideListMarker>(node, style, legacy);
} }
LayoutTableCaption* LayoutObjectFactory::CreateTableCaption( LayoutTableCaption* LayoutObjectFactory::CreateTableCaption(
......
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/renderer/core/layout/layout_outside_list_marker.h"
namespace blink {
LayoutOutsideListMarker::LayoutOutsideListMarker(Element* element)
: LayoutListMarker(element) {}
LayoutOutsideListMarker::~LayoutOutsideListMarker() = default;
} // namespace blink
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_OUTSIDE_LIST_MARKER_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_OUTSIDE_LIST_MARKER_H_
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/layout/layout_list_marker.h"
namespace blink {
// Used to layout the list item's outside marker.
// The LayoutOutsideListMarker always has to be a child of a LayoutListItem.
class CORE_EXPORT LayoutOutsideListMarker final : public LayoutListMarker {
public:
explicit LayoutOutsideListMarker(Element*);
~LayoutOutsideListMarker() override;
const char* GetName() const override { return "LayoutOutsideListMarker"; }
private:
bool IsOfType(LayoutObjectType type) const override {
return type == kLayoutObjectOutsideListMarker ||
LayoutListMarker::IsOfType(type);
}
};
DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutOutsideListMarker, IsOutsideListMarker());
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_LAYOUT_OUTSIDE_LIST_MARKER_H_
...@@ -19,7 +19,7 @@ layer at (0,0) size 800x600 ...@@ -19,7 +19,7 @@ layer at (0,0) size 800x600
LayoutBR {BR} at (99,14) size 0x0 LayoutBR {BR} at (99,14) size 0x0
LayoutBlockFlow {OL} at (0,34) size 784x18 LayoutBlockFlow {OL} at (0,34) size 784x18
LayoutListItem {LI} at (40,0) size 744x18 LayoutListItem {LI} at (40,0) size 744x18
LayoutListMarker {::marker} at (-20,0) size 16x18 LayoutOutsideListMarker {::marker} at (-20,0) size 16x18
LayoutBlockFlow (anonymous) at (0,68) size 784x18 LayoutBlockFlow (anonymous) at (0,68) size 784x18
LayoutText {#text} at (0,0) size 102x18 LayoutText {#text} at (0,0) size 102x18
text run at (0,0) width 102: "Paragraph Two." text run at (0,0) width 102: "Paragraph Two."
......
...@@ -13,7 +13,7 @@ layer at (0,0) size 800x600 ...@@ -13,7 +13,7 @@ layer at (0,0) size 800x600
LayoutText {#text} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0
LayoutBlockFlow {UL} at (0,229) size 800x20 LayoutBlockFlow {UL} at (0,229) size 800x20
LayoutListItem {LI} at (40,0) size 760x20 LayoutListItem {LI} at (40,0) size 760x20
LayoutListMarker {::marker} at (-18,0) size 7x19: bullet LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet
LayoutText {#text} at (0,0) size 288x19 LayoutText {#text} at (0,0) size 288x19
text run at (0,0) width 288: "Abe should be outside the frame and inside it." text run at (0,0) width 288: "Abe should be outside the frame and inside it."
layer at (0,0) size 208x208 layer at (0,0) size 208x208
......
...@@ -20,6 +20,6 @@ layer at (0,0) size 800x600 ...@@ -20,6 +20,6 @@ layer at (0,0) size 800x600
text run at (0,0) width 26: "four" text run at (0,0) width 26: "four"
LayoutBlockFlow {UL} at (0,132) size 784x20 LayoutBlockFlow {UL} at (0,132) size 784x20
LayoutListItem {LI} at (40,0) size 744x20 LayoutListItem {LI} at (40,0) size 744x20
LayoutListMarker {::marker} at (-18,0) size 7x19: bullet LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet
LayoutText {#text} at (0,0) size 54x19 LayoutText {#text} at (0,0) size 54x19
text run at (0,0) width 54: "Success." text run at (0,0) width 54: "Success."
...@@ -20,6 +20,6 @@ layer at (0,0) size 800x600 ...@@ -20,6 +20,6 @@ layer at (0,0) size 800x600
text run at (0,0) width 26: "four" text run at (0,0) width 26: "four"
LayoutBlockFlow {UL} at (0,132) size 784x20 LayoutBlockFlow {UL} at (0,132) size 784x20
LayoutListItem {LI} at (40,0) size 744x20 LayoutListItem {LI} at (40,0) size 744x20
LayoutListMarker {::marker} at (-18,0) size 7x19: bullet LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet
LayoutText {#text} at (0,0) size 54x19 LayoutText {#text} at (0,0) size 54x19
text run at (0,0) width 54: "Success." text run at (0,0) width 54: "Success."
...@@ -12,12 +12,12 @@ ...@@ -12,12 +12,12 @@
"reason": "geometry" "reason": "geometry"
}, },
{ {
"object": "LayoutListMarker ::marker", "object": "LayoutOutsideListMarker ::marker",
"rect": [30, 185, 7, 19], "rect": [30, 185, 7, 19],
"reason": "geometry" "reason": "geometry"
}, },
{ {
"object": "LayoutListMarker ::marker", "object": "LayoutOutsideListMarker ::marker",
"rect": [30, 135, 7, 19], "rect": [30, 135, 7, 19],
"reason": "geometry" "reason": "geometry"
} }
......
...@@ -14,7 +14,7 @@ layer at (0,0) size 800x600 ...@@ -14,7 +14,7 @@ layer at (0,0) size 800x600
LayoutText {#text} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0
LayoutBlockFlow {UL} at (0,241) size 800x20 LayoutBlockFlow {UL} at (0,241) size 800x20
LayoutListItem {LI} at (40,0) size 760x20 LayoutListItem {LI} at (40,0) size 760x20
LayoutListMarker {::marker} at (-18,0) size 7x19: bullet LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet
LayoutText {#text} at (0,0) size 409x19 LayoutText {#text} at (0,0) size 409x19
text run at (0,0) width 409: "Abe should appear twice, once inside the div and once outside it." text run at (0,0) width 409: "Abe should appear twice, once inside the div and once outside it."
selection start: position 0 of child 0 {IMG} of child 1 {DIV} of body selection start: position 0 of child 0 {IMG} of child 1 {DIV} of body
......
...@@ -16,7 +16,7 @@ layer at (0,0) size 800x600 ...@@ -16,7 +16,7 @@ layer at (0,0) size 800x600
LayoutTextControl {INPUT} at (185,0) size 185x22 [bgcolor=#FFFFFF] [border: (2px inset #767676)] LayoutTextControl {INPUT} at (185,0) size 185x22 [bgcolor=#FFFFFF] [border: (2px inset #767676)]
LayoutBlockFlow {UL} at (0,74) size 784x20 LayoutBlockFlow {UL} at (0,74) size 784x20
LayoutListItem {LI} at (40,0) size 744x20 LayoutListItem {LI} at (40,0) size 744x20
LayoutListMarker {::marker} at (-18,0) size 7x19: bullet LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet
LayoutText {#text} at (0,0) size 43x19 LayoutText {#text} at (0,0) size 43x19
text run at (0,0) width 43: "Passed" text run at (0,0) width 43: "Passed"
layer at (12,47) size 177x16 layer at (12,47) size 177x16
......
...@@ -10,22 +10,22 @@ layer at (0,0) size 800x600 ...@@ -10,22 +10,22 @@ layer at (0,0) size 800x600
LayoutBlockFlow {DIV} at (14,38) size 756x140 LayoutBlockFlow {DIV} at (14,38) size 756x140
LayoutBlockFlow {OL} at (0,0) size 756x140 LayoutBlockFlow {OL} at (0,0) size 756x140
LayoutListItem {LI} at (40,0) size 716x28 LayoutListItem {LI} at (40,0) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x27: "1" LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "1"
LayoutText {#text} at (0,0) size 35x27 LayoutText {#text} at (0,0) size 35x27
text run at (0,0) width 35: "one" text run at (0,0) width 35: "one"
LayoutListItem {LI} at (40,28) size 716x28 LayoutListItem {LI} at (40,28) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x27: "2" LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "2"
LayoutText {#text} at (0,0) size 36x27 LayoutText {#text} at (0,0) size 36x27
text run at (0,0) width 36: "two" text run at (0,0) width 36: "two"
LayoutListItem {LI} at (40,56) size 716x28 LayoutListItem {LI} at (40,56) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x27: "3" LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "3"
LayoutBR {BR} at (0,0) size 0x27 LayoutBR {BR} at (0,0) size 0x27
LayoutListItem {LI} at (40,84) size 716x28 LayoutListItem {LI} at (40,84) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x27: "4" LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "4"
LayoutText {#text} at (0,0) size 40x27 LayoutText {#text} at (0,0) size 40x27
text run at (0,0) width 40: "four" text run at (0,0) width 40: "four"
LayoutListItem {LI} at (40,112) size 716x28 LayoutListItem {LI} at (40,112) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x27: "5" LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "5"
LayoutText {#text} at (0,0) size 38x27 LayoutText {#text} at (0,0) size 38x27
text run at (0,0) width 38: "five" text run at (0,0) width 38: "five"
caret: position 0 of child 0 {BR} of child 2 {LI} of child 1 {OL} of child 1 {DIV} of child 1 {DIV} of body caret: position 0 of child 0 {BR} of child 2 {LI} of child 1 {OL} of child 1 {DIV} of child 1 {DIV} of body
...@@ -55,7 +55,7 @@ layer at (0,0) size 800x600 ...@@ -55,7 +55,7 @@ layer at (0,0) size 800x600
text run at (0,0) width 62: "before" text run at (0,0) width 62: "before"
LayoutBlockFlow {UL} at (2,54) size 780x28 LayoutBlockFlow {UL} at (2,54) size 780x28
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 45x27 LayoutText {#text} at (0,0) size 45x27
text run at (0,0) width 45: "after" text run at (0,0) width 45: "after"
caret: position 0 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body caret: position 0 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
...@@ -44,30 +44,30 @@ layer at (0,0) size 800x600 ...@@ -44,30 +44,30 @@ layer at (0,0) size 800x600
LayoutBlockFlow {DIV} at (0,230) size 784x136 [border: (2px solid #008000)] LayoutBlockFlow {DIV} at (0,230) size 784x136 [border: (2px solid #008000)]
LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutBlockFlow {UL} at (2,26) size 780x84
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 78x27 LayoutText {#text} at (0,0) size 78x27
text run at (0,0) width 78: "line one" text run at (0,0) width 78: "line one"
LayoutListItem {LI} at (40,28) size 740x28 LayoutListItem {LI} at (40,28) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 79x27 LayoutText {#text} at (0,0) size 79x27
text run at (0,0) width 79: "line two" text run at (0,0) width 79: "line two"
LayoutListItem {LI} at (40,56) size 740x28 LayoutListItem {LI} at (40,56) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 128x27 LayoutText {#text} at (0,0) size 128x27
text run at (0,0) width 128: "line threexxx" text run at (0,0) width 128: "line threexxx"
LayoutBlockFlow {DIV} at (0,376) size 784x136 LayoutBlockFlow {DIV} at (0,376) size 784x136
LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)] LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)]
LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutBlockFlow {UL} at (2,26) size 780x84
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 78x27 LayoutText {#text} at (0,0) size 78x27
text run at (0,0) width 78: "line one" text run at (0,0) width 78: "line one"
LayoutListItem {LI} at (40,28) size 740x28 LayoutListItem {LI} at (40,28) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 79x27 LayoutText {#text} at (0,0) size 79x27
text run at (0,0) width 79: "line two" text run at (0,0) width 79: "line two"
LayoutListItem {LI} at (40,56) size 740x28 LayoutListItem {LI} at (40,56) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 128x27 LayoutText {#text} at (0,0) size 128x27
text run at (0,0) width 128: "line threexxx" text run at (0,0) width 128: "line threexxx"
caret: position 13 of child 0 {#text} of child 5 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body caret: position 13 of child 0 {#text} of child 5 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
...@@ -41,30 +41,30 @@ layer at (0,0) size 800x600 ...@@ -41,30 +41,30 @@ layer at (0,0) size 800x600
LayoutBlockFlow {DIV} at (0,230) size 784x136 [border: (2px solid #008000)] LayoutBlockFlow {DIV} at (0,230) size 784x136 [border: (2px solid #008000)]
LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutBlockFlow {UL} at (2,26) size 780x84
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 114x27 LayoutText {#text} at (0,0) size 114x27
text run at (0,0) width 114: "xxxline one" text run at (0,0) width 114: "xxxline one"
LayoutListItem {LI} at (40,28) size 740x28 LayoutListItem {LI} at (40,28) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 79x27 LayoutText {#text} at (0,0) size 79x27
text run at (0,0) width 79: "line two" text run at (0,0) width 79: "line two"
LayoutListItem {LI} at (40,56) size 740x28 LayoutListItem {LI} at (40,56) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 92x27 LayoutText {#text} at (0,0) size 92x27
text run at (0,0) width 92: "line three" text run at (0,0) width 92: "line three"
LayoutBlockFlow {DIV} at (0,376) size 784x136 LayoutBlockFlow {DIV} at (0,376) size 784x136
LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)] LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)]
LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutBlockFlow {UL} at (2,26) size 780x84
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 114x27 LayoutText {#text} at (0,0) size 114x27
text run at (0,0) width 114: "xxxline one" text run at (0,0) width 114: "xxxline one"
LayoutListItem {LI} at (40,28) size 740x28 LayoutListItem {LI} at (40,28) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 79x27 LayoutText {#text} at (0,0) size 79x27
text run at (0,0) width 79: "line two" text run at (0,0) width 79: "line two"
LayoutListItem {LI} at (40,56) size 740x28 LayoutListItem {LI} at (40,56) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 92x27 LayoutText {#text} at (0,0) size 92x27
text run at (0,0) width 92: "line three" text run at (0,0) width 92: "line three"
caret: position 3 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body caret: position 3 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
...@@ -14,7 +14,7 @@ layer at (0,0) size 800x600 ...@@ -14,7 +14,7 @@ layer at (0,0) size 800x600
LayoutText {#text} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0
LayoutBlockFlow {UL} at (0,241) size 800x18 LayoutBlockFlow {UL} at (0,241) size 800x18
LayoutListItem {LI} at (40,0) size 760x18 LayoutListItem {LI} at (40,0) size 760x18
LayoutListMarker {::marker} at (-17,0) size 7x18: bullet LayoutOutsideListMarker {::marker} at (-17,0) size 7x18: bullet
LayoutText {#text} at (0,0) size 416x18 LayoutText {#text} at (0,0) size 416x18
text run at (0,0) width 416: "Abe should appear twice, once inside the div and once outside it." text run at (0,0) width 416: "Abe should appear twice, once inside the div and once outside it."
selection start: position 0 of child 0 {IMG} of child 1 {DIV} of body selection start: position 0 of child 0 {IMG} of child 1 {DIV} of body
......
...@@ -16,7 +16,7 @@ layer at (0,0) size 800x600 ...@@ -16,7 +16,7 @@ layer at (0,0) size 800x600
LayoutTextControl {INPUT} at (153,0) size 153x21 [bgcolor=#FFFFFF] [border: (2px inset #767676)] LayoutTextControl {INPUT} at (153,0) size 153x21 [bgcolor=#FFFFFF] [border: (2px inset #767676)]
LayoutBlockFlow {UL} at (0,71) size 784x18 LayoutBlockFlow {UL} at (0,71) size 784x18
LayoutListItem {LI} at (40,0) size 744x18 LayoutListItem {LI} at (40,0) size 744x18
LayoutListMarker {::marker} at (-17,0) size 7x18: bullet LayoutOutsideListMarker {::marker} at (-17,0) size 7x18: bullet
LayoutText {#text} at (0,0) size 44x18 LayoutText {#text} at (0,0) size 44x18
text run at (0,0) width 44: "Passed" text run at (0,0) width 44: "Passed"
layer at (12,45) size 145x15 layer at (12,45) size 145x15
......
...@@ -10,22 +10,22 @@ layer at (0,0) size 800x600 ...@@ -10,22 +10,22 @@ layer at (0,0) size 800x600
LayoutBlockFlow {DIV} at (14,38) size 756x140 LayoutBlockFlow {DIV} at (14,38) size 756x140
LayoutBlockFlow {OL} at (0,0) size 756x140 LayoutBlockFlow {OL} at (0,0) size 756x140
LayoutListItem {LI} at (40,0) size 716x28 LayoutListItem {LI} at (40,0) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x28: "1" LayoutOutsideListMarker {::marker} at (-24,0) size 24x28: "1"
LayoutText {#text} at (0,0) size 35x28 LayoutText {#text} at (0,0) size 35x28
text run at (0,0) width 35: "one" text run at (0,0) width 35: "one"
LayoutListItem {LI} at (40,28) size 716x28 LayoutListItem {LI} at (40,28) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x28: "2" LayoutOutsideListMarker {::marker} at (-24,0) size 24x28: "2"
LayoutText {#text} at (0,0) size 36x28 LayoutText {#text} at (0,0) size 36x28
text run at (0,0) width 36: "two" text run at (0,0) width 36: "two"
LayoutListItem {LI} at (40,56) size 716x28 LayoutListItem {LI} at (40,56) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x28: "3" LayoutOutsideListMarker {::marker} at (-24,0) size 24x28: "3"
LayoutBR {BR} at (0,0) size 0x28 LayoutBR {BR} at (0,0) size 0x28
LayoutListItem {LI} at (40,84) size 716x28 LayoutListItem {LI} at (40,84) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x28: "4" LayoutOutsideListMarker {::marker} at (-24,0) size 24x28: "4"
LayoutText {#text} at (0,0) size 40x28 LayoutText {#text} at (0,0) size 40x28
text run at (0,0) width 40: "four" text run at (0,0) width 40: "four"
LayoutListItem {LI} at (40,112) size 716x28 LayoutListItem {LI} at (40,112) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x28: "5" LayoutOutsideListMarker {::marker} at (-24,0) size 24x28: "5"
LayoutText {#text} at (0,0) size 36x28 LayoutText {#text} at (0,0) size 36x28
text run at (0,0) width 36: "five" text run at (0,0) width 36: "five"
caret: position 0 of child 0 {BR} of child 2 {LI} of child 1 {OL} of child 1 {DIV} of child 1 {DIV} of body caret: position 0 of child 0 {BR} of child 2 {LI} of child 1 {OL} of child 1 {DIV} of child 1 {DIV} of body
...@@ -55,7 +55,7 @@ layer at (0,0) size 800x600 ...@@ -55,7 +55,7 @@ layer at (0,0) size 800x600
text run at (0,0) width 62: "before" text run at (0,0) width 62: "before"
LayoutBlockFlow {UL} at (2,54) size 780x28 LayoutBlockFlow {UL} at (2,54) size 780x28
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 44x28 LayoutText {#text} at (0,0) size 44x28
text run at (0,0) width 44: "after" text run at (0,0) width 44: "after"
caret: position 0 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body caret: position 0 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
...@@ -44,30 +44,30 @@ layer at (0,0) size 800x600 ...@@ -44,30 +44,30 @@ layer at (0,0) size 800x600
LayoutBlockFlow {DIV} at (0,238) size 784x136 [border: (2px solid #008000)] LayoutBlockFlow {DIV} at (0,238) size 784x136 [border: (2px solid #008000)]
LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutBlockFlow {UL} at (2,26) size 780x84
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 77x28 LayoutText {#text} at (0,0) size 77x28
text run at (0,0) width 77: "line one" text run at (0,0) width 77: "line one"
LayoutListItem {LI} at (40,28) size 740x28 LayoutListItem {LI} at (40,28) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 78x28 LayoutText {#text} at (0,0) size 78x28
text run at (0,0) width 78: "line two" text run at (0,0) width 78: "line two"
LayoutListItem {LI} at (40,56) size 740x28 LayoutListItem {LI} at (40,56) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 126x28 LayoutText {#text} at (0,0) size 126x28
text run at (0,0) width 126: "line threexxx" text run at (0,0) width 126: "line threexxx"
LayoutBlockFlow {DIV} at (0,384) size 784x136 LayoutBlockFlow {DIV} at (0,384) size 784x136
LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)] LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)]
LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutBlockFlow {UL} at (2,26) size 780x84
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 77x28 LayoutText {#text} at (0,0) size 77x28
text run at (0,0) width 77: "line one" text run at (0,0) width 77: "line one"
LayoutListItem {LI} at (40,28) size 740x28 LayoutListItem {LI} at (40,28) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 78x28 LayoutText {#text} at (0,0) size 78x28
text run at (0,0) width 78: "line two" text run at (0,0) width 78: "line two"
LayoutListItem {LI} at (40,56) size 740x28 LayoutListItem {LI} at (40,56) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 126x28 LayoutText {#text} at (0,0) size 126x28
text run at (0,0) width 126: "line threexxx" text run at (0,0) width 126: "line threexxx"
caret: position 13 of child 0 {#text} of child 5 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body caret: position 13 of child 0 {#text} of child 5 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
...@@ -41,30 +41,30 @@ layer at (0,0) size 800x600 ...@@ -41,30 +41,30 @@ layer at (0,0) size 800x600
LayoutBlockFlow {DIV} at (0,238) size 784x136 [border: (2px solid #008000)] LayoutBlockFlow {DIV} at (0,238) size 784x136 [border: (2px solid #008000)]
LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutBlockFlow {UL} at (2,26) size 780x84
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 113x28 LayoutText {#text} at (0,0) size 113x28
text run at (0,0) width 113: "xxxline one" text run at (0,0) width 113: "xxxline one"
LayoutListItem {LI} at (40,28) size 740x28 LayoutListItem {LI} at (40,28) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 78x28 LayoutText {#text} at (0,0) size 78x28
text run at (0,0) width 78: "line two" text run at (0,0) width 78: "line two"
LayoutListItem {LI} at (40,56) size 740x28 LayoutListItem {LI} at (40,56) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 90x28 LayoutText {#text} at (0,0) size 90x28
text run at (0,0) width 90: "line three" text run at (0,0) width 90: "line three"
LayoutBlockFlow {DIV} at (0,384) size 784x136 LayoutBlockFlow {DIV} at (0,384) size 784x136
LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)] LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)]
LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutBlockFlow {UL} at (2,26) size 780x84
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 113x28 LayoutText {#text} at (0,0) size 113x28
text run at (0,0) width 113: "xxxline one" text run at (0,0) width 113: "xxxline one"
LayoutListItem {LI} at (40,28) size 740x28 LayoutListItem {LI} at (40,28) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 78x28 LayoutText {#text} at (0,0) size 78x28
text run at (0,0) width 78: "line two" text run at (0,0) width 78: "line two"
LayoutListItem {LI} at (40,56) size 740x28 LayoutListItem {LI} at (40,56) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x28: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x28: bullet
LayoutText {#text} at (0,0) size 90x28 LayoutText {#text} at (0,0) size 90x28
text run at (0,0) width 90: "line three" text run at (0,0) width 90: "line three"
caret: position 3 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body caret: position 3 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
...@@ -14,7 +14,7 @@ layer at (0,0) size 800x600 ...@@ -14,7 +14,7 @@ layer at (0,0) size 800x600
LayoutText {#text} at (0,0) size 0x0 LayoutText {#text} at (0,0) size 0x0
LayoutBlockFlow {UL} at (0,241) size 800x20 LayoutBlockFlow {UL} at (0,241) size 800x20
LayoutListItem {LI} at (40,0) size 760x20 LayoutListItem {LI} at (40,0) size 760x20
LayoutListMarker {::marker} at (-18,0) size 7x19: bullet LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet
LayoutText {#text} at (0,0) size 391x19 LayoutText {#text} at (0,0) size 391x19
text run at (0,0) width 391: "Abe should appear twice, once inside the div and once outside it." text run at (0,0) width 391: "Abe should appear twice, once inside the div and once outside it."
selection start: position 0 of child 0 {IMG} of child 1 {DIV} of body selection start: position 0 of child 0 {IMG} of child 1 {DIV} of body
......
...@@ -16,7 +16,7 @@ layer at (0,0) size 800x600 ...@@ -16,7 +16,7 @@ layer at (0,0) size 800x600
LayoutTextControl {INPUT} at (177,0) size 177x22 [bgcolor=#FFFFFF] [border: (2px inset #767676)] LayoutTextControl {INPUT} at (177,0) size 177x22 [bgcolor=#FFFFFF] [border: (2px inset #767676)]
LayoutBlockFlow {UL} at (0,74) size 784x20 LayoutBlockFlow {UL} at (0,74) size 784x20
LayoutListItem {LI} at (40,0) size 744x20 LayoutListItem {LI} at (40,0) size 744x20
LayoutListMarker {::marker} at (-18,0) size 7x19: bullet LayoutOutsideListMarker {::marker} at (-18,0) size 7x19: bullet
LayoutText {#text} at (0,0) size 43x19 LayoutText {#text} at (0,0) size 43x19
text run at (0,0) width 43: "Passed" text run at (0,0) width 43: "Passed"
layer at (12,47) size 169x16 layer at (12,47) size 169x16
......
...@@ -10,22 +10,22 @@ layer at (0,0) size 800x600 ...@@ -10,22 +10,22 @@ layer at (0,0) size 800x600
LayoutBlockFlow {DIV} at (14,38) size 756x140 LayoutBlockFlow {DIV} at (14,38) size 756x140
LayoutBlockFlow {OL} at (0,0) size 756x140 LayoutBlockFlow {OL} at (0,0) size 756x140
LayoutListItem {LI} at (40,0) size 716x28 LayoutListItem {LI} at (40,0) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x27: "1" LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "1"
LayoutText {#text} at (0,0) size 35x27 LayoutText {#text} at (0,0) size 35x27
text run at (0,0) width 35: "one" text run at (0,0) width 35: "one"
LayoutListItem {LI} at (40,28) size 716x28 LayoutListItem {LI} at (40,28) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x27: "2" LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "2"
LayoutText {#text} at (0,0) size 36x27 LayoutText {#text} at (0,0) size 36x27
text run at (0,0) width 36: "two" text run at (0,0) width 36: "two"
LayoutListItem {LI} at (40,56) size 716x28 LayoutListItem {LI} at (40,56) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x27: "3" LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "3"
LayoutBR {BR} at (0,0) size 0x27 LayoutBR {BR} at (0,0) size 0x27
LayoutListItem {LI} at (40,84) size 716x28 LayoutListItem {LI} at (40,84) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x27: "4" LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "4"
LayoutText {#text} at (0,0) size 40x27 LayoutText {#text} at (0,0) size 40x27
text run at (0,0) width 40: "four" text run at (0,0) width 40: "four"
LayoutListItem {LI} at (40,112) size 716x28 LayoutListItem {LI} at (40,112) size 716x28
LayoutListMarker {::marker} at (-24,0) size 24x27: "5" LayoutOutsideListMarker {::marker} at (-24,0) size 24x27: "5"
LayoutText {#text} at (0,0) size 37x27 LayoutText {#text} at (0,0) size 37x27
text run at (0,0) width 37: "five" text run at (0,0) width 37: "five"
caret: position 0 of child 0 {BR} of child 2 {LI} of child 1 {OL} of child 1 {DIV} of child 1 {DIV} of body caret: position 0 of child 0 {BR} of child 2 {LI} of child 1 {OL} of child 1 {DIV} of child 1 {DIV} of body
...@@ -55,7 +55,7 @@ layer at (0,0) size 800x600 ...@@ -55,7 +55,7 @@ layer at (0,0) size 800x600
text run at (0,0) width 62: "before" text run at (0,0) width 62: "before"
LayoutBlockFlow {UL} at (2,54) size 780x28 LayoutBlockFlow {UL} at (2,54) size 780x28
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 45x27 LayoutText {#text} at (0,0) size 45x27
text run at (0,0) width 45: "after" text run at (0,0) width 45: "after"
caret: position 0 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body caret: position 0 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
...@@ -44,30 +44,30 @@ layer at (0,0) size 800x600 ...@@ -44,30 +44,30 @@ layer at (0,0) size 800x600
LayoutBlockFlow {DIV} at (0,230) size 784x136 [border: (2px solid #008000)] LayoutBlockFlow {DIV} at (0,230) size 784x136 [border: (2px solid #008000)]
LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutBlockFlow {UL} at (2,26) size 780x84
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 76x27 LayoutText {#text} at (0,0) size 76x27
text run at (0,0) width 76: "line one" text run at (0,0) width 76: "line one"
LayoutListItem {LI} at (40,28) size 740x28 LayoutListItem {LI} at (40,28) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 77x27 LayoutText {#text} at (0,0) size 77x27
text run at (0,0) width 77: "line two" text run at (0,0) width 77: "line two"
LayoutListItem {LI} at (40,56) size 740x28 LayoutListItem {LI} at (40,56) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 126x27 LayoutText {#text} at (0,0) size 126x27
text run at (0,0) width 126: "line threexxx" text run at (0,0) width 126: "line threexxx"
LayoutBlockFlow {DIV} at (0,376) size 784x136 LayoutBlockFlow {DIV} at (0,376) size 784x136
LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)] LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)]
LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutBlockFlow {UL} at (2,26) size 780x84
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 76x27 LayoutText {#text} at (0,0) size 76x27
text run at (0,0) width 76: "line one" text run at (0,0) width 76: "line one"
LayoutListItem {LI} at (40,28) size 740x28 LayoutListItem {LI} at (40,28) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 77x27 LayoutText {#text} at (0,0) size 77x27
text run at (0,0) width 77: "line two" text run at (0,0) width 77: "line two"
LayoutListItem {LI} at (40,56) size 740x28 LayoutListItem {LI} at (40,56) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 126x27 LayoutText {#text} at (0,0) size 126x27
text run at (0,0) width 126: "line threexxx" text run at (0,0) width 126: "line threexxx"
caret: position 13 of child 0 {#text} of child 5 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body caret: position 13 of child 0 {#text} of child 5 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
...@@ -41,30 +41,30 @@ layer at (0,0) size 800x600 ...@@ -41,30 +41,30 @@ layer at (0,0) size 800x600
LayoutBlockFlow {DIV} at (0,230) size 784x136 [border: (2px solid #008000)] LayoutBlockFlow {DIV} at (0,230) size 784x136 [border: (2px solid #008000)]
LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutBlockFlow {UL} at (2,26) size 780x84
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 112x27 LayoutText {#text} at (0,0) size 112x27
text run at (0,0) width 112: "xxxline one" text run at (0,0) width 112: "xxxline one"
LayoutListItem {LI} at (40,28) size 740x28 LayoutListItem {LI} at (40,28) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 77x27 LayoutText {#text} at (0,0) size 77x27
text run at (0,0) width 77: "line two" text run at (0,0) width 77: "line two"
LayoutListItem {LI} at (40,56) size 740x28 LayoutListItem {LI} at (40,56) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 90x27 LayoutText {#text} at (0,0) size 90x27
text run at (0,0) width 90: "line three" text run at (0,0) width 90: "line three"
LayoutBlockFlow {DIV} at (0,376) size 784x136 LayoutBlockFlow {DIV} at (0,376) size 784x136
LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)] LayoutBlockFlow {DIV} at (0,0) size 784x136 [border: (2px solid #FF0000)]
LayoutBlockFlow {UL} at (2,26) size 780x84 LayoutBlockFlow {UL} at (2,26) size 780x84
LayoutListItem {LI} at (40,0) size 740x28 LayoutListItem {LI} at (40,0) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 112x27 LayoutText {#text} at (0,0) size 112x27
text run at (0,0) width 112: "xxxline one" text run at (0,0) width 112: "xxxline one"
LayoutListItem {LI} at (40,28) size 740x28 LayoutListItem {LI} at (40,28) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 77x27 LayoutText {#text} at (0,0) size 77x27
text run at (0,0) width 77: "line two" text run at (0,0) width 77: "line two"
LayoutListItem {LI} at (40,56) size 740x28 LayoutListItem {LI} at (40,56) size 740x28
LayoutListMarker {::marker} at (-22,0) size 9x27: bullet LayoutOutsideListMarker {::marker} at (-22,0) size 9x27: bullet
LayoutText {#text} at (0,0) size 90x27 LayoutText {#text} at (0,0) size 90x27
text run at (0,0) width 90: "line three" text run at (0,0) width 90: "line three"
caret: position 3 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body caret: position 3 of child 0 {#text} of child 1 {LI} of child 1 {UL} of child 1 {DIV} of child 5 {DIV} of body
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