| Index: Source/core/editing/TypingCommand.cpp
|
| diff --git a/Source/core/editing/TypingCommand.cpp b/Source/core/editing/TypingCommand.cpp
|
| index fcca6cea1e23c7f813328760cde070fac3b37646..8bb5c24c210c823db74ca8b82bc3474ddc40f518 100644
|
| --- a/Source/core/editing/TypingCommand.cpp
|
| +++ b/Source/core/editing/TypingCommand.cpp
|
| @@ -100,7 +100,7 @@ void TypingCommand::deleteSelection(Document& document, Options options)
|
| if (!frame->selection().isRange())
|
| return;
|
|
|
| - if (RefPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(frame)) {
|
| + if (RefPtrWillBeRawPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(frame)) {
|
| lastTypingCommand->setShouldPreventSpellChecking(options & PreventSpellChecking);
|
| lastTypingCommand->deleteSelection(options & SmartDelete);
|
| return;
|
| @@ -113,7 +113,7 @@ void TypingCommand::deleteKeyPressed(Document& document, Options options, TextGr
|
| {
|
| if (granularity == CharacterGranularity) {
|
| LocalFrame* frame = document.frame();
|
| - if (RefPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(frame)) {
|
| + if (RefPtrWillBeRawPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(frame)) {
|
| // If the last typing command is not Delete, open a new typing command.
|
| // We need to group continuous delete commands alone in a single typing command.
|
| if (lastTypingCommand->commandTypeOfOpenCommand() == DeleteKey) {
|
| @@ -133,7 +133,7 @@ void TypingCommand::forwardDeleteKeyPressed(Document& document, Options options,
|
| // FIXME: Forward delete in TextEdit appears to open and close a new typing command.
|
| if (granularity == CharacterGranularity) {
|
| LocalFrame* frame = document.frame();
|
| - if (RefPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(frame)) {
|
| + if (RefPtrWillBeRawPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(frame)) {
|
| updateSelectionIfDifferentFromCurrentSelection(lastTypingCommand.get(), frame);
|
| lastTypingCommand->setShouldPreventSpellChecking(options & PreventSpellChecking);
|
| lastTypingCommand->forwardDeleteKeyPressed(granularity, options & KillRing);
|
| @@ -179,7 +179,7 @@ void TypingCommand::insertText(Document& document, const String& text, const Vis
|
| // Set the starting and ending selection appropriately if we are using a selection
|
| // that is different from the current selection. In the future, we should change EditCommand
|
| // to deal with custom selections in a general way that can be used by all of the commands.
|
| - if (RefPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(frame.get())) {
|
| + if (RefPtrWillBeRawPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(frame.get())) {
|
| if (lastTypingCommand->endingSelection() != selectionForInsertion) {
|
| lastTypingCommand->setStartingSelection(selectionForInsertion);
|
| lastTypingCommand->setEndingSelection(selectionForInsertion);
|
| @@ -192,13 +192,13 @@ void TypingCommand::insertText(Document& document, const String& text, const Vis
|
| return;
|
| }
|
|
|
| - RefPtr<TypingCommand> cmd = TypingCommand::create(document, InsertText, newText, options, compositionType);
|
| + RefPtrWillBeRawPtr<TypingCommand> cmd = TypingCommand::create(document, InsertText, newText, options, compositionType);
|
| applyTextInsertionCommand(frame.get(), cmd, selectionForInsertion, currentSelection);
|
| }
|
|
|
| void TypingCommand::insertLineBreak(Document& document, Options options)
|
| {
|
| - if (RefPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(document.frame())) {
|
| + if (RefPtrWillBeRawPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(document.frame())) {
|
| lastTypingCommand->setShouldRetainAutocorrectionIndicator(options & RetainAutocorrectionIndicator);
|
| lastTypingCommand->insertLineBreak();
|
| return;
|
| @@ -209,7 +209,7 @@ void TypingCommand::insertLineBreak(Document& document, Options options)
|
|
|
| void TypingCommand::insertParagraphSeparatorInQuotedContent(Document& document)
|
| {
|
| - if (RefPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(document.frame())) {
|
| + if (RefPtrWillBeRawPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(document.frame())) {
|
| lastTypingCommand->insertParagraphSeparatorInQuotedContent();
|
| return;
|
| }
|
| @@ -219,7 +219,7 @@ void TypingCommand::insertParagraphSeparatorInQuotedContent(Document& document)
|
|
|
| void TypingCommand::insertParagraphSeparator(Document& document, Options options)
|
| {
|
| - if (RefPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(document.frame())) {
|
| + if (RefPtrWillBeRawPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(document.frame())) {
|
| lastTypingCommand->setShouldRetainAutocorrectionIndicator(options & RetainAutocorrectionIndicator);
|
| lastTypingCommand->insertParagraphSeparator();
|
| return;
|
| @@ -228,11 +228,11 @@ void TypingCommand::insertParagraphSeparator(Document& document, Options options
|
| TypingCommand::create(document, InsertParagraphSeparator, "", options)->apply();
|
| }
|
|
|
| -PassRefPtr<TypingCommand> TypingCommand::lastTypingCommandIfStillOpenForTyping(LocalFrame* frame)
|
| +PassRefPtrWillBeRawPtr<TypingCommand> TypingCommand::lastTypingCommandIfStillOpenForTyping(LocalFrame* frame)
|
| {
|
| ASSERT(frame);
|
|
|
| - RefPtr<CompositeEditCommand> lastEditCommand = frame->editor().lastEditCommand();
|
| + RefPtrWillBeRawPtr<CompositeEditCommand> lastEditCommand = frame->editor().lastEditCommand();
|
| if (!lastEditCommand || !lastEditCommand->isTypingCommand() || !static_cast<TypingCommand*>(lastEditCommand.get())->isOpenForMoreTyping())
|
| return nullptr;
|
|
|
| @@ -241,7 +241,7 @@ PassRefPtr<TypingCommand> TypingCommand::lastTypingCommandIfStillOpenForTyping(L
|
|
|
| void TypingCommand::closeTyping(LocalFrame* frame)
|
| {
|
| - if (RefPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(frame))
|
| + if (RefPtrWillBeRawPtr<TypingCommand> lastTypingCommand = lastTypingCommandIfStillOpenForTyping(frame))
|
| lastTypingCommand->closeTyping();
|
| }
|
|
|
| @@ -338,7 +338,7 @@ void TypingCommand::insertText(const String &text, bool selectInsertedText)
|
|
|
| void TypingCommand::insertTextRunWithoutNewlines(const String &text, bool selectInsertedText)
|
| {
|
| - RefPtr<InsertTextCommand> command = InsertTextCommand::create(document(), text, selectInsertedText,
|
| + RefPtrWillBeRawPtr<InsertTextCommand> command = InsertTextCommand::create(document(), text, selectInsertedText,
|
| m_compositionType == TextCompositionNone ? InsertTextCommand::RebalanceLeadingAndTrailingWhitespaces : InsertTextCommand::RebalanceAllWhitespaces);
|
|
|
| applyCommandToComposite(command, endingSelection());
|
| @@ -425,11 +425,11 @@ void TypingCommand::deleteKeyPressed(TextGranularity granularity, bool killRing)
|
|
|
| m_smartDelete = false;
|
|
|
| - FrameSelection selection;
|
| - selection.setSelection(endingSelection());
|
| - selection.modify(FrameSelection::AlterationExtend, DirectionBackward, granularity);
|
| - if (killRing && selection.isCaret() && granularity != CharacterGranularity)
|
| - selection.modify(FrameSelection::AlterationExtend, DirectionBackward, CharacterGranularity);
|
| + OwnPtrWillBeRawPtr<FrameSelection> selection = FrameSelection::create();
|
| + selection->setSelection(endingSelection());
|
| + selection->modify(FrameSelection::AlterationExtend, DirectionBackward, granularity);
|
| + if (killRing && selection->isCaret() && granularity != CharacterGranularity)
|
| + selection->modify(FrameSelection::AlterationExtend, DirectionBackward, CharacterGranularity);
|
|
|
| VisiblePosition visibleStart(endingSelection().visibleStart());
|
| if (visibleStart.previous(CannotCrossEditingBoundary).isNull()) {
|
| @@ -456,7 +456,7 @@ void TypingCommand::deleteKeyPressed(TextGranularity granularity, bool killRing)
|
| if (isLastPositionBeforeTable(visibleStart))
|
| return;
|
| // Extend the selection backward into the last cell, then deletion will handle the move.
|
| - selection.modify(FrameSelection::AlterationExtend, DirectionBackward, granularity);
|
| + selection->modify(FrameSelection::AlterationExtend, DirectionBackward, granularity);
|
| // If the caret is just after a table, select the table and don't delete anything.
|
| } else if (Node* table = isFirstPositionAfterTable(visibleStart)) {
|
| setEndingSelection(VisibleSelection(positionBeforeNode(table), endingSelection().start(), DOWNSTREAM, endingSelection().isDirectional()));
|
| @@ -464,7 +464,7 @@ void TypingCommand::deleteKeyPressed(TextGranularity granularity, bool killRing)
|
| return;
|
| }
|
|
|
| - selectionToDelete = selection.selection();
|
| + selectionToDelete = selection->selection();
|
|
|
| if (granularity == CharacterGranularity && selectionToDelete.end().containerNode() == selectionToDelete.start().containerNode()
|
| && selectionToDelete.end().computeOffsetInContainerNode() - selectionToDelete.start().computeOffsetInContainerNode() > 1) {
|
| @@ -527,11 +527,11 @@ void TypingCommand::forwardDeleteKeyPressed(TextGranularity granularity, bool ki
|
| // Handle delete at beginning-of-block case.
|
| // Do nothing in the case that the caret is at the start of a
|
| // root editable element or at the start of a document.
|
| - FrameSelection selection;
|
| - selection.setSelection(endingSelection());
|
| - selection.modify(FrameSelection::AlterationExtend, DirectionForward, granularity);
|
| - if (killRing && selection.isCaret() && granularity != CharacterGranularity)
|
| - selection.modify(FrameSelection::AlterationExtend, DirectionForward, CharacterGranularity);
|
| + OwnPtrWillBeRawPtr<FrameSelection> selection = FrameSelection::create();
|
| + selection->setSelection(endingSelection());
|
| + selection->modify(FrameSelection::AlterationExtend, DirectionForward, granularity);
|
| + if (killRing && selection->isCaret() && granularity != CharacterGranularity)
|
| + selection->modify(FrameSelection::AlterationExtend, DirectionForward, CharacterGranularity);
|
|
|
| Position downstreamEnd = endingSelection().end().downstream();
|
| VisiblePosition visibleEnd = endingSelection().visibleEnd();
|
| @@ -548,10 +548,10 @@ void TypingCommand::forwardDeleteKeyPressed(TextGranularity granularity, bool ki
|
| }
|
|
|
| // deleting to end of paragraph when at end of paragraph needs to merge the next paragraph (if any)
|
| - if (granularity == ParagraphBoundary && selection.selection().isCaret() && isEndOfParagraph(selection.selection().visibleEnd()))
|
| - selection.modify(FrameSelection::AlterationExtend, DirectionForward, CharacterGranularity);
|
| + if (granularity == ParagraphBoundary && selection->selection().isCaret() && isEndOfParagraph(selection->selection().visibleEnd()))
|
| + selection->modify(FrameSelection::AlterationExtend, DirectionForward, CharacterGranularity);
|
|
|
| - selectionToDelete = selection.selection();
|
| + selectionToDelete = selection->selection();
|
| if (!startingSelection().isRange() || selectionToDelete.base() != startingSelection().start())
|
| selectionAfterUndo = selectionToDelete;
|
| else {
|
|
|