void DataTransfer::writeSelection(const FrameSelection& selection) { if (!m_dataObject) return; if (!enclosingTextControl(selection.start())) { m_dataObject->setHTMLAndBaseURL(selection.selectedHTMLForClipboard(), selection.frame()->document()->url()); } String str = selection.selectedTextForClipboard(); #if OS(WIN) replaceNewlinesWithWindowsStyleNewlines(str); #endif replaceNBSPWithSpace(str); m_dataObject->setData(mimeTypeTextPlain, str); }
IntRect FrameCaret::absoluteCaretBounds() { DCHECK_NE(m_frame->document()->lifecycle().state(), DocumentLifecycle::InPaintInvalidation); DCHECK(!m_frame->document()->needsLayoutTreeUpdate()); DocumentLifecycle::DisallowTransitionScope disallowTransition( m_frame->document()->lifecycle()); if (!isActive()) { clearCaretRect(); } else { if (enclosingTextControl(caretPosition().position())) { if (isVisuallyEquivalentCandidate(caretPosition().position())) updateCaretRect(caretPosition()); else updateCaretRect(createVisiblePosition(caretPosition())); } else { updateCaretRect(createVisiblePosition(caretPosition())); } } return absoluteBoundsForLocalRect(caretPosition().anchorNode(), localCaretRectWithoutUpdate()); }