void CreateLinkCommand::doApply(EditingState* editingState) { if (endingSelection().isNone()) return; HTMLAnchorElement* anchorElement = HTMLAnchorElement::create(document()); anchorElement->setHref(AtomicString(m_url)); if (endingSelection().isRange()) { applyStyledElement(anchorElement, editingState); if (editingState->isAborted()) return; } else { insertNodeAt(anchorElement, endingSelection().start(), editingState); if (editingState->isAborted()) return; Text* textNode = Text::create(document(), m_url); appendNode(textNode, anchorElement, editingState); if (editingState->isAborted()) return; document().updateStyleAndLayoutIgnorePendingStylesheets(); setEndingSelection(createVisibleSelection( Position::inParentBeforeNode(*anchorElement), Position::inParentAfterNode(*anchorElement), TextAffinity::Downstream, endingSelection().isDirectional())); } }