#include "third_party/blink/renderer/core/editing/selection_editor.h"
#include "third_party/blink/renderer/core/dom/node_with_index.h"
#include "third_party/blink/renderer/core/dom/text.h"
#include "third_party/blink/renderer/core/editing/editing_behavior.h"
#include "third_party/blink/renderer/core/editing/editing_utilities.h"
#include "third_party/blink/renderer/core/editing/editor.h"
#include "third_party/blink/renderer/core/editing/ephemeral_range.h"
#include "third_party/blink/renderer/core/editing/frame_caret.h"
#include "third_party/blink/renderer/core/editing/local_caret_rect.h"
#include "third_party/blink/renderer/core/editing/position_with_affinity.h"
#include "third_party/blink/renderer/core/editing/selection_adjuster.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
namespace blink {
SelectionEditor::SelectionEditor(LocalFrame& frame) : … { … }
SelectionEditor::~SelectionEditor() = default;
void SelectionEditor::AssertSelectionValid() const { … }
void SelectionEditor::ClearVisibleSelection() { … }
void SelectionEditor::Dispose() { … }
Document& SelectionEditor::GetDocument() const { … }
VisibleSelection SelectionEditor::ComputeVisibleSelectionInDOMTree() const { … }
VisibleSelectionInFlatTree SelectionEditor::ComputeVisibleSelectionInFlatTree()
const { … }
bool SelectionEditor::ComputeAbsoluteBounds(gfx::Rect& anchor,
gfx::Rect& focus) const { … }
const SelectionInDOMTree& SelectionEditor::GetSelectionInDOMTree() const { … }
void SelectionEditor::MarkCacheDirty() { … }
void SelectionEditor::SetSelectionAndEndTyping(
const SelectionInDOMTree& new_selection) { … }
void SelectionEditor::DidChangeChildren(const ContainerNode&,
const ContainerNode::ChildrenChange&) { … }
void SelectionEditor::DidFinishTextChange(const Position& new_anchor,
const Position& new_focus) { … }
void SelectionEditor::DidFinishDOMMutation() { … }
void SelectionEditor::DidAttachDocument(Document* document) { … }
void SelectionEditor::ContextDestroyed() { … }
static Position ComputePositionForChildrenRemoval(const Position& position,
ContainerNode& container) { … }
void SelectionEditor::NodeChildrenWillBeRemoved(ContainerNode& container) { … }
void SelectionEditor::NodeWillBeRemoved(Node& node_to_be_removed) { … }
static Position UpdatePositionAfterAdoptingTextReplacement(
const Position& position,
CharacterData* node,
unsigned offset,
unsigned old_length,
unsigned new_length) { … }
void SelectionEditor::DidUpdateCharacterData(CharacterData* node,
unsigned offset,
unsigned old_length,
unsigned new_length) { … }
static Position UpdatePostionAfterAdoptingTextNodesMerged(
const Position& position,
const Text& merged_node,
const NodeWithIndex& node_to_be_removed_with_index,
unsigned old_length) { … }
void SelectionEditor::DidMergeTextNodes(
const Text& merged_node,
const NodeWithIndex& node_to_be_removed_with_index,
unsigned old_length) { … }
static Position UpdatePostionAfterAdoptingTextNodeSplit(
const Position& position,
const Text& old_node) { … }
void SelectionEditor::DidSplitTextNode(const Text& old_node) { … }
bool SelectionEditor::ShouldAlwaysUseDirectionalSelection() const { … }
bool SelectionEditor::NeedsUpdateVisibleSelection() const { … }
void SelectionEditor::UpdateCachedVisibleSelectionIfNeeded() const { … }
bool SelectionEditor::NeedsUpdateVisibleSelectionInFlatTree() const { … }
void SelectionEditor::UpdateCachedVisibleSelectionInFlatTreeIfNeeded() const { … }
bool SelectionEditor::NeedsUpdateAbsoluteBounds() const { … }
void SelectionEditor::UpdateCachedAbsoluteBoundsIfNeeded() const { … }
void SelectionEditor::CacheRangeOfDocument(Range* range) { … }
Range* SelectionEditor::DocumentCachedRange() const { … }
void SelectionEditor::ClearDocumentCachedRange() { … }
void SelectionEditor::Trace(Visitor* visitor) const { … }
}