Index: third_party/WebKit/Source/core/editing/FrameSelection.h |
diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.h b/third_party/WebKit/Source/core/editing/FrameSelection.h |
index c42ffccd2a9c27dfead8acfa945598d4a8bc8194..3f559f5d8e23376525b5441fd06dca021b8ca0fc 100644 |
--- a/third_party/WebKit/Source/core/editing/FrameSelection.h |
+++ b/third_party/WebKit/Source/core/editing/FrameSelection.h |
@@ -93,6 +93,10 @@ public: |
return static_cast<EUserTriggered>(options & UserTriggered); |
} |
+ bool isAvailable() const { return m_document; } |
+ // You should not call |document()| when |!isAvailable()|. |
+ const Document& document() const; |
+ Document& document(); |
LocalFrame* frame() const { return m_frame; } |
Element* rootEditableElement() const { return selection().rootEditableElement(); } |
Element* rootEditableElementOrDocumentElement() const; |
@@ -121,7 +125,6 @@ public: |
bool setSelectedRange(const EphemeralRange&, TextAffinity, SelectionDirectionalMode = SelectionDirectionalMode::NonDirectional, FrameSelection::SetSelectionOptions = CloseTyping | ClearTypingStyle); |
void selectAll(); |
void clear(); |
- void prepareForDestruction(); |
// Call this after doing user-triggered selections to make it easy to delete the frame you entirely selected. |
void selectFrameElementInParentIfFullySelected(); |
@@ -168,6 +171,8 @@ public: |
// the return value from underlying VisibleSelection's firstRange() is returned. |
Range* firstRange() const; |
+ void documentAttached(Document*); |
+ void documentDetached(const Document&); |
void nodeWillBeRemoved(Node&); |
void dataWillChange(const CharacterData& node); |
void didUpdateCharacterData(CharacterData*, unsigned offset, unsigned oldLength, unsigned newLength); |
@@ -280,6 +285,7 @@ private: |
bool shouldPaintCaretForTesting() const; |
bool isPreviousCaretDirtyForTesting() const; |
+ Member<Document> m_document; |
Member<LocalFrame> m_frame; |
const Member<PendingSelection> m_pendingSelection; |
const Member<SelectionEditor> m_selectionEditor; |