| Index: Source/core/dom/Position.cpp
|
| diff --git a/Source/core/dom/Position.cpp b/Source/core/dom/Position.cpp
|
| index 47dd2ba12d41d1d0847a05be9004b4e8acc3a4ad..45bf6b8ff03a83fdda2489d769ee3b2a35d2e197 100644
|
| --- a/Source/core/dom/Position.cpp
|
| +++ b/Source/core/dom/Position.cpp
|
| @@ -1411,11 +1411,17 @@ PositionInComposedTree toPositionInComposedTree(const Position& pos)
|
| ASSERT(!isActiveInsertionPoint(*anchor));
|
| int offset = pos.computeOffsetInContainerNode();
|
| Node* child = NodeTraversal::childAt(*anchor, offset);
|
| - if (!child)
|
| + if (!child) {
|
| + if (anchor->isShadowRoot())
|
| + return PositionInComposedTree(anchor->shadowHost(), PositionInComposedTree::PositionIsAfterChildren);
|
| return PositionInComposedTree(anchor, PositionInComposedTree::PositionIsAfterChildren);
|
| + }
|
| child->updateDistribution();
|
| - if (isActiveInsertionPoint(*child))
|
| + if (isActiveInsertionPoint(*child)) {
|
| + if (anchor->isShadowRoot())
|
| + return PositionInComposedTree(anchor->shadowHost(), offset, PositionInComposedTree::PositionIsOffsetInAnchor);
|
| return PositionInComposedTree(anchor, offset, PositionInComposedTree::PositionIsOffsetInAnchor);
|
| + }
|
| return PositionInComposedTree(ComposedTreeTraversal::parent(*child), ComposedTreeTraversal::index(*child), PositionInComposedTree::PositionIsOffsetInAnchor);
|
| }
|
|
|
|
|