PassRefPtr<Text> Text::splitText(unsigned offset, ExceptionState& exceptionState) { // IndexSizeError: Raised if the specified offset is negative or greater than // the number of 16-bit units in data. if (offset > length()) { exceptionState.ThrowDOMException(IndexSizeError, "The offset " + String::number(offset) + " is larger than the Text node's length."); return nullptr; } String oldStr = data(); RefPtr<Text> newText = cloneWithData(oldStr.substring(offset)); setDataWithoutUpdate(oldStr.substring(0, offset)); didModifyData(oldStr); if (parentNode()) parentNode()->insertBefore(newText.get(), nextSibling(), exceptionState); if (exceptionState.had_exception()) return nullptr; if (renderer()) renderer()->setTextWithOffset(dataImpl(), 0, oldStr.length()); if (parentNode()) document().didSplitTextNode(*this); return newText.release(); }
PassRefPtr<Text> Text::splitText(unsigned offset, ExceptionState& es) { // IndexSizeError: Raised if the specified offset is negative or greater than // the number of 16-bit units in data. if (offset > length()) { es.throwDOMException(IndexSizeError); return 0; } EventQueueScope scope; String oldStr = data(); RefPtr<Text> newText = cloneWithData(oldStr.substring(offset)); setDataWithoutUpdate(oldStr.substring(0, offset)); didModifyData(oldStr); if (parentNode()) parentNode()->insertBefore(newText.get(), nextSibling(), es); if (es.hadException()) return 0; if (parentNode()) document()->textNodeSplit(this); if (renderer()) toRenderText(renderer())->setTextWithOffset(dataImpl(), 0, oldStr.length()); return newText.release(); }
PassRefPtr<Node> Text::cloneNode(bool /*deep*/) { return cloneWithData(data()); }