Bug 1620504 - part 21: Clean up warnings in TextEditor r=m_kato

Differential Revision: https://phabricator.services.mozilla.com/D66852

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Masayuki Nakano 2020-03-18 01:14:42 +00:00
parent 670494e7d5
commit 9c977f38b7
3 changed files with 645 additions and 422 deletions

View File

@ -49,7 +49,9 @@ nsresult TextEditor::InitEditorContentAndSelection() {
MOZ_ASSERT(IsEditActionDataAvailable());
nsresult rv = MaybeCreatePaddingBRElementForEmptyEditor();
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING(
"EditorBase::MaybeCreatePaddingBRElementForEmptyEditor() failed");
return rv;
}
@ -60,14 +62,17 @@ nsresult TextEditor::InitEditorContentAndSelection() {
// it may cause multiple selection ranges.
if (!SelectionRefPtr()->RangeCount()) {
nsresult rv = CollapseSelectionToEnd();
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("EditorBase::CollapseSelectionToEnd() failed");
return rv;
}
}
if (IsPlaintextEditor() && !IsSingleLineEditor()) {
nsresult rv = EnsurePaddingBRElementInMultilineEditor();
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING(
"TextEditor::EnsurePaddingBRElementInMultilineEditor() failed");
return rv;
}
}
@ -94,7 +99,7 @@ void TextEditor::OnStartToHandleTopLevelEditSubAction(
return;
}
if (!mInitSucceeded) {
if (NS_WARN_IF(!mInitSucceeded)) {
return;
}
@ -112,6 +117,9 @@ void TextEditor::OnStartToHandleTopLevelEditSubAction(
// after inserting text.
EditorRawDOMPoint point = FindBetterInsertionPoint(
EditorRawDOMPoint(SelectionRefPtr()->AnchorRef()));
NS_WARNING_ASSERTION(
point.IsSet(),
"EditorBase::FindBetterInsertionPoint() failed, but ignored");
if (point.IsSet()) {
SetSpellCheckRestartPoint(point);
return;
@ -137,16 +145,20 @@ nsresult TextEditor::OnEndHandlingTopLevelEditSubAction() {
// XXX Probably, we should spellcheck again after edit action (not top-level
// sub-action) is handled because the ranges can be referred only by
// users.
if (NS_WARN_IF(NS_FAILED(rv = HandleInlineSpellCheckAfterEdit()))) {
if (NS_FAILED(rv = HandleInlineSpellCheckAfterEdit())) {
NS_WARNING("TextEditor::HandleInlineSpellCheckAfterEdit() failed");
break;
}
if (NS_WARN_IF(NS_FAILED(rv = EnsurePaddingBRElementForEmptyEditor()))) {
if (NS_FAILED(rv = EnsurePaddingBRElementForEmptyEditor())) {
NS_WARNING("TextEditor::EnsurePaddingBRElementForEmptyEditor() failed");
break;
}
if (!IsSingleLineEditor() &&
NS_WARN_IF(NS_FAILED(rv = EnsurePaddingBRElementInMultilineEditor()))) {
NS_FAILED(rv = EnsurePaddingBRElementInMultilineEditor())) {
NS_WARNING(
"TextEditor::EnsurePaddingBRElementInMultilineEditor() failed");
break;
}
@ -154,12 +166,17 @@ nsresult TextEditor::OnEndHandlingTopLevelEditSubAction() {
if (NS_WARN_IF(rv == NS_ERROR_EDITOR_DESTROYED)) {
break;
}
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"EnsureCaretNotAtEndOfTextNode() failed, but ignored");
NS_WARNING_ASSERTION(
NS_SUCCEEDED(rv),
"TextEditor::EnsureCaretNotAtEndOfTextNode() failed, but ignored");
rv = NS_OK;
break;
}
EditorBase::OnEndHandlingTopLevelEditSubAction();
DebugOnly<nsresult> rvIgnored =
EditorBase::OnEndHandlingTopLevelEditSubAction();
NS_WARNING_ASSERTION(
NS_SUCCEEDED(rvIgnored),
"EditorBase::OnEndHandlingTopLevelEditSubAction() failed, but ignored");
MOZ_ASSERT(!GetTopLevelEditSubAction());
MOZ_ASSERT(GetDirectionOfTopLevelEditSubAction() == eNone);
return rv;
@ -178,7 +195,8 @@ EditActionResult TextEditor::InsertLineFeedCharacterAtSelection() {
nsAutoString insertionString(NS_LITERAL_STRING("\n"));
EditActionResult result =
TruncateInsertionStringForMaxLength(insertionString);
if (NS_WARN_IF(result.Failed())) {
if (result.Failed()) {
NS_WARNING("TextEditor::TruncateInsertionStringForMaxLength() failed");
return result;
}
if (result.Handled()) {
@ -191,13 +209,16 @@ EditActionResult TextEditor::InsertLineFeedCharacterAtSelection() {
if (!SelectionRefPtr()->IsCollapsed()) {
nsresult rv =
DeleteSelectionAsSubAction(nsIEditor::eNone, nsIEditor::eStrip);
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING(
"TextEditor::DeleteSelectionAsSubAction(eNone, eStrip) failed");
return EditActionIgnored(rv);
}
}
nsresult rv = EnsureNoPaddingBRElementForEmptyEditor();
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("EditorBase::EnsureNoPaddingBRElementForEmptyEditor() failed");
return EditActionIgnored(rv);
}
@ -216,6 +237,7 @@ EditActionResult TextEditor::InsertLineFeedCharacterAtSelection() {
// Don't put text in places that can't have it.
if (!pointToInsert.IsInTextNode() &&
!CanContainTag(*pointToInsert.GetContainer(), *nsGkAtoms::textTagName)) {
NS_WARNING("Insertion point couldn't have text nodes");
return EditActionIgnored(NS_ERROR_FAILURE);
}
@ -231,10 +253,14 @@ EditActionResult TextEditor::InsertLineFeedCharacterAtSelection() {
EditorRawDOMPoint pointAfterInsertedLineFeed;
rv = InsertTextWithTransaction(*document, NS_LITERAL_STRING("\n"),
pointToInsert, &pointAfterInsertedLineFeed);
if (NS_WARN_IF(!pointAfterInsertedLineFeed.IsSet())) {
if (!pointAfterInsertedLineFeed.IsSet()) {
NS_WARNING(
"EditorBase::InsertTextWithTransaction(\\n) didn't return position of "
"inserted linefeed");
return EditActionIgnored(NS_ERROR_FAILURE);
}
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("TextEditor::InsertTextWithTransaction(\\n) failed");
return EditActionIgnored(rv);
}
@ -244,7 +270,8 @@ EditActionResult TextEditor::InsertLineFeedCharacterAtSelection() {
"After inserting text into a text node, pointAfterInsertedLineFeed."
"GetChild() should be nullptr");
rv = SelectionRefPtr()->Collapse(pointAfterInsertedLineFeed);
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("Selection::Collapse() failed");
return EditActionIgnored(rv);
}
@ -257,7 +284,11 @@ EditActionResult TextEditor::InsertLineFeedCharacterAtSelection() {
// content on the "right". We want the caret to stick to whatever is
// past the break. This is because the break is on the same line we
// were on, but the next content will be on the following line.
SelectionRefPtr()->SetInterlinePosition(true, IgnoreErrors());
IgnoredErrorResult ignoredError;
SelectionRefPtr()->SetInterlinePosition(true, ignoredError);
NS_WARNING_ASSERTION(
!ignoredError.Failed(),
"Selection::SetInterlinePosition(true) failed, but ignored");
}
return EditActionHandled();
@ -272,10 +303,13 @@ nsresult TextEditor::EnsureCaretNotAtEndOfTextNode() {
// if the editor is reframed, this may be called by
// OnEndHandlingTopLevelEditSubAction().
if (!SelectionRefPtr()->RangeCount()) {
CollapseSelectionToEnd();
DebugOnly<nsresult> rvIgnored = CollapseSelectionToEnd();
if (NS_WARN_IF(Destroyed())) {
return NS_ERROR_EDITOR_DESTROYED;
}
NS_WARNING_ASSERTION(
NS_SUCCEEDED(rvIgnored),
"EditorBase::CollapseSelectionToEnd() failed, but ignored");
}
// If we are at the end of the <textarea> element, we need to set the
@ -307,18 +341,18 @@ nsresult TextEditor::EnsureCaretNotAtEndOfTextNode() {
return NS_OK;
}
EditorRawDOMPoint afterStartContainer(selectionStartPoint.GetContainer());
if (NS_WARN_IF(!afterStartContainer.AdvanceOffset())) {
EditorRawDOMPoint afterStartContainer(
EditorRawDOMPoint::After(*selectionStartPoint.GetContainer()));
if (NS_WARN_IF(!afterStartContainer.IsSet())) {
return NS_ERROR_FAILURE;
}
ErrorResult error;
SelectionRefPtr()->Collapse(afterStartContainer, error);
IgnoredErrorResult ignoredError;
SelectionRefPtr()->Collapse(afterStartContainer, ignoredError);
if (NS_WARN_IF(Destroyed())) {
error.SuppressException();
return NS_ERROR_EDITOR_DESTROYED;
}
NS_WARNING_ASSERTION(!error.Failed(), "Selection::Collapse() failed");
return error.StealNSResult();
NS_WARNING_ASSERTION(!ignoredError.Failed(), "Selection::Collapse() failed");
return ignoredError.StealNSResult();
}
void TextEditor::HandleNewLinesInStringForSingleLineEditor(
@ -418,7 +452,8 @@ EditActionResult TextEditor::HandleInsertText(
if (mMaxTextLength >= 0) {
EditActionResult result =
TruncateInsertionStringForMaxLength(insertionString);
if (NS_WARN_IF(result.Failed())) {
if (result.Failed()) {
NS_WARNING("TextEditor::TruncateInsertionStringForMaxLength() failed");
return result.MarkAsHandled();
}
// If we're exceeding the maxlength when composing IME, we need to clean up
@ -444,7 +479,9 @@ EditActionResult TextEditor::HandleInsertText(
if (!SelectionRefPtr()->IsCollapsed()) {
nsresult rv =
DeleteSelectionAsSubAction(nsIEditor::eNone, nsIEditor::eStrip);
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING(
"TextEditor::DeleteSelectionAsSubAction(eNone, eStrip) failed");
return EditActionHandled(rv);
}
}
@ -455,7 +492,8 @@ EditActionResult TextEditor::HandleInsertText(
MaybeDoAutoPasswordMasking();
nsresult rv = EnsureNoPaddingBRElementForEmptyEditor();
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("EditorBase::EnsureNoPaddingBRElementForEmptyEditor() failed");
return EditActionHandled(rv);
}
@ -497,6 +535,7 @@ EditActionResult TextEditor::HandleInsertText(
if (!atStartOfSelection.IsInTextNode() &&
!CanContainTag(*atStartOfSelection.GetContainer(),
*nsGkAtoms::textTagName)) {
NS_WARNING("Selection start container couldn't have text nodes");
return EditActionHandled(NS_ERROR_FAILURE);
}
@ -509,13 +548,17 @@ EditActionResult TextEditor::HandleInsertText(
EditorRawDOMPoint compositionStartPoint = GetCompositionStartPoint();
if (!compositionStartPoint.IsSet()) {
compositionStartPoint = FindBetterInsertionPoint(atStartOfSelection);
NS_WARNING_ASSERTION(
compositionStartPoint.IsSet(),
"EditorBase::FindBetterInsertionPoint() failed, but ignored");
}
nsresult rv = InsertTextWithTransaction(*document, insertionString,
compositionStartPoint);
if (NS_WARN_IF(Destroyed())) {
return EditActionHandled(NS_ERROR_EDITOR_DESTROYED);
}
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("EditorBase::InsertTextWithTransaction() failed");
return EditActionHandled(rv);
}
} else {
@ -531,7 +574,8 @@ EditActionResult TextEditor::HandleInsertText(
if (NS_WARN_IF(Destroyed())) {
return EditActionHandled(NS_ERROR_EDITOR_DESTROYED);
}
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("EditorBase::InsertTextWithTransaction() failed");
return EditActionHandled(rv);
}
@ -564,7 +608,8 @@ EditActionResult TextEditor::HandleInsertText(
if (IsPasswordEditor() && IsMaskingPassword() && CanEchoPasswordNow()) {
nsresult rv = SetUnmaskRangeAndNotify(start, insertionString.Length(),
LookAndFeel::GetPasswordMaskDelay());
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "SetUnmaskRangeAndNotify() failed");
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"TextEditor::SetUnmaskRangeAndNotify() failed");
return EditActionHandled(rv);
}
@ -590,7 +635,8 @@ EditActionResult TextEditor::SetTextWithoutTransaction(
MaybeDoAutoPasswordMasking();
nsresult rv = EnsureNoPaddingBRElementForEmptyEditor();
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("EditorBase::EnsureNoPaddingBRElementForEmptyEditor() failed");
return EditActionResult(rv);
}
@ -645,7 +691,8 @@ EditActionResult TextEditor::SetTextWithoutTransaction(
return EditActionIgnored();
}
RefPtr<nsTextNode> newTextNode = CreateTextNode(sanitizedValue);
if (NS_WARN_IF(!newTextNode)) {
if (!newTextNode) {
NS_WARNING("EditorBase::CreateTextNode() failed");
return EditActionIgnored();
}
nsresult rv = InsertNodeWithTransaction(
@ -653,7 +700,8 @@ EditActionResult TextEditor::SetTextWithoutTransaction(
if (NS_WARN_IF(Destroyed())) {
return EditActionResult(NS_ERROR_EDITOR_DESTROYED);
}
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("EditorBase::InsertNodeWithTransaction() failed");
return EditActionResult(rv);
}
return EditActionHandled();
@ -661,11 +709,13 @@ EditActionResult TextEditor::SetTextWithoutTransaction(
// TODO: If new value is empty string, we should only remove it.
RefPtr<Text> textNode = firstChild->GetAsText();
if (MOZ_UNLIKELY(NS_WARN_IF(!textNode))) {
if (MOZ_UNLIKELY(!textNode)) {
NS_WARNING("The first child was not a text node");
return EditActionIgnored();
}
rv = SetTextNodeWithoutTransaction(sanitizedValue, *textNode);
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("EditorBase::SetTextNodeWithoutTransaction() failed");
return EditActionResult(rv);
}
@ -676,15 +726,16 @@ EditActionResult TextEditor::SetTextWithoutTransaction(
if (NS_WARN_IF(rv == NS_ERROR_EDITOR_DESTROYED)) {
return EditActionResult(NS_ERROR_EDITOR_DESTROYED);
}
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"DeleteNodeWithTransaction() failed, but ignored");
NS_WARNING_ASSERTION(
NS_SUCCEEDED(rv),
"EditorBase::DeleteNodeWithTransaction() failed, but ignored");
// XXX I don't think this is necessary because the anonymous `<div>`
// element has now only padding `<br>` element even if there are
// something.
IgnoredErrorResult ignoredError;
SelectionRefPtr()->SetInterlinePosition(true, ignoredError);
NS_WARNING_ASSERTION(!ignoredError.Failed(),
"Selection::SetInterlinePoisition() failed");
"Selection::SetInterlinePoisition(true) failed");
}
return EditActionHandled();
@ -712,7 +763,7 @@ EditActionResult TextEditor::HandleDeleteSelection(
return result.SetResult(NS_ERROR_EDITOR_DESTROYED);
}
NS_WARNING_ASSERTION(result.Succeeded(),
"HandleDeleteSelectionInternal() failed");
"TextEditor::HandleDeleteSelectionInternal() failed");
return result;
}
@ -744,21 +795,25 @@ EditActionResult TextEditor::HandleDeleteSelectionInternal(
if (!SelectionRefPtr()->IsCollapsed()) {
nsresult rv =
DeleteSelectionWithTransaction(aDirectionAndAmount, aStripWrappers);
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"DeleteSelectionWithTransaction() failed");
NS_WARNING_ASSERTION(
NS_SUCCEEDED(rv),
"TextEditor::DeleteSelectionWithTransaction() failed");
return EditActionHandled(rv);
}
// Test for distance between caret and text that will be deleted
EditActionResult result =
SetCaretBidiLevelForDeletion(selectionStartPoint, aDirectionAndAmount);
if (NS_WARN_IF(result.Failed()) || result.Canceled()) {
if (result.Failed() || result.Canceled()) {
NS_WARNING_ASSERTION(result.Succeeded(),
"EditorBase::SetCaretBidiLevelForDeletion() failed");
return result;
}
}
nsresult rv = ExtendSelectionForDelete(&aDirectionAndAmount);
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("TextEditor::ExtendSelectionForDelete() failed");
return EditActionResult(rv);
}
@ -767,7 +822,7 @@ EditActionResult TextEditor::HandleDeleteSelectionInternal(
return EditActionResult(NS_ERROR_EDITOR_DESTROYED);
}
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"DeleteSelectionWithTransaction() failed");
"TextEditor::DeleteSelectionWithTransaction() failed");
return EditActionHandled(rv);
}
@ -873,7 +928,8 @@ nsresult TextEditor::EnsurePaddingBRElementInMultilineEditor() {
endOfAnonymousDiv);
NS_WARNING_ASSERTION(
createPaddingBRResult.Succeeded(),
"InsertPaddingBRElementForEmptyLastLineWithTransaction() failed");
"EditorBase::InsertPaddingBRElementForEmptyLastLineWithTransaction() "
"failed");
return createPaddingBRResult.Rv();
}
@ -903,6 +959,7 @@ EditActionResult TextEditor::TruncateInsertionStringForMaxLength(
int32_t currentLength = INT32_MAX;
nsresult rv = GetTextLength(&currentLength);
if (NS_FAILED(rv)) {
NS_WARNING("TextEditor::GetTextLength() failed");
return EditActionResult(rv);
}

File diff suppressed because it is too large Load Diff

View File

@ -47,21 +47,39 @@ namespace mozilla {
using namespace dom;
nsresult TextEditor::PrepareTransferable(nsITransferable** transferable) {
nsresult TextEditor::PrepareTransferable(nsITransferable** aOutTransferable) {
MOZ_ASSERT(aOutTransferable);
MOZ_ASSERT(!*aOutTransferable);
// Create generic Transferable for getting the data
nsresult rv =
CallCreateInstance("@mozilla.org/widget/transferable;1", transferable);
NS_ENSURE_SUCCESS(rv, rv);
nsresult rv;
nsCOMPtr<nsITransferable> transferable =
do_CreateInstance("@mozilla.org/widget/transferable;1", &rv);
if (NS_FAILED(rv)) {
NS_WARNING("do_CreateInstance() failed to create nsITransferable instance");
return rv;
}
// Get the nsITransferable interface for getting the data from the clipboard
if (transferable) {
RefPtr<Document> destdoc = GetDocument();
nsILoadContext* loadContext = destdoc ? destdoc->GetLoadContext() : nullptr;
(*transferable)->Init(loadContext);
if (!transferable) {
NS_WARNING("do_CreateInstance() returned nullptr, but ignored");
return NS_OK;
}
(*transferable)->AddDataFlavor(kUnicodeMime);
(*transferable)->AddDataFlavor(kMozTextInternal);
};
RefPtr<Document> document = GetDocument();
nsILoadContext* loadContext = document ? document->GetLoadContext() : nullptr;
DebugOnly<nsresult> rvIgnored = transferable->Init(loadContext);
NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored),
"nsITransferable::Init() failed, but ignored");
rvIgnored = transferable->AddDataFlavor(kUnicodeMime);
NS_WARNING_ASSERTION(
NS_SUCCEEDED(rvIgnored),
"nsITransferable::AddDataFlavor(kUnicodeMime) failed, but ignored");
rvIgnored = transferable->AddDataFlavor(kMozTextInternal);
NS_WARNING_ASSERTION(
NS_SUCCEEDED(rvIgnored),
"nsITransferable::AddDataFlavor(kMozTextInternal) failed, but ignored");
transferable.forget(aOutTransferable);
return NS_OK;
}
@ -75,21 +93,20 @@ nsresult TextEditor::PrepareToInsertContent(
if (aDoDeleteSelection) {
AutoTrackDOMPoint tracker(RangeUpdaterRef(), &pointToInsert);
nsresult rv = DeleteSelectionAsSubAction(eNone, eStrip);
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING(
"TextEditor::DeleteSelectionAsSubAction(eNone, eStrip) failed");
return rv;
}
}
ErrorResult error;
IgnoredErrorResult error;
SelectionRefPtr()->Collapse(pointToInsert, error);
if (NS_WARN_IF(Destroyed())) {
return NS_ERROR_EDITOR_DESTROYED;
}
if (NS_WARN_IF(error.Failed())) {
return error.StealNSResult();
}
return NS_OK;
NS_WARNING_ASSERTION(!error.Failed(), "Selection::Collapse() failed");
return error.StealNSResult();
}
nsresult TextEditor::InsertTextAt(const nsAString& aStringToInsert,
@ -100,15 +117,15 @@ nsresult TextEditor::InsertTextAt(const nsAString& aStringToInsert,
MOZ_ASSERT(aPointToInsert.IsSet());
nsresult rv = PrepareToInsertContent(aPointToInsert, aDoDeleteSelection);
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("TextEditor::PrepareToInsertContent() failed");
return rv;
}
rv = InsertTextAsSubAction(aStringToInsert);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
return NS_OK;
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"EditorBase::InsertTextAsSubAction() failed");
return rv;
}
nsresult TextEditor::InsertTextFromTransferable(
@ -118,10 +135,13 @@ nsresult TextEditor::InsertTextFromTransferable(
nsAutoCString bestFlavor;
nsCOMPtr<nsISupports> genericDataObj;
if (NS_SUCCEEDED(aTransferable->GetAnyTransferData(
bestFlavor, getter_AddRefs(genericDataObj))) &&
(bestFlavor.EqualsLiteral(kUnicodeMime) ||
bestFlavor.EqualsLiteral(kMozTextInternal))) {
nsresult rv = aTransferable->GetAnyTransferData(
bestFlavor, getter_AddRefs(genericDataObj));
NS_WARNING_ASSERTION(
NS_SUCCEEDED(rv),
"nsITransferable::GetAnyDataTransferData() failed, but ignored");
if (NS_SUCCEEDED(rv) && (bestFlavor.EqualsLiteral(kUnicodeMime) ||
bestFlavor.EqualsLiteral(kMozTextInternal))) {
AutoTransactionsConserveSelection dontChangeMySelection(*this);
nsAutoString stuffToPaste;
@ -135,7 +155,10 @@ nsresult TextEditor::InsertTextFromTransferable(
UpdateEditActionData(stuffToPaste);
nsresult rv = MaybeDispatchBeforeInputEvent();
if (rv == NS_ERROR_EDITOR_ACTION_CANCELED || NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING_ASSERTION(
rv == NS_ERROR_EDITOR_ACTION_CANCELED,
"EditorBase::MaybeDispatchBeforeInputEvent() failed");
return rv;
}
@ -145,16 +168,17 @@ nsresult TextEditor::InsertTextFromTransferable(
AutoPlaceholderBatch treatAsOneTransaction(*this);
nsresult rv = InsertTextAsSubAction(stuffToPaste);
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("EditorBase::InsertTextAsSubAction() failed");
return rv;
}
}
}
// Try to scroll the selection into view if the paste/drop succeeded
nsresult rv = ScrollSelectionFocusIntoView();
rv = ScrollSelectionFocusIntoView();
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"ScrollSelectionFocusIntoView() failed");
"EditorBase::ScrollSelectionFocusIntoView() failed");
return rv;
}
@ -163,7 +187,9 @@ nsresult TextEditor::OnDrop(DragEvent* aDropEvent) {
return NS_ERROR_INVALID_ARG;
}
CommitComposition();
DebugOnly<nsresult> rvIgnored = CommitComposition();
NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored),
"EditorBase::CommitComposition() failed, but ignored");
AutoEditActionDataSetter editActionData(*this, EditAction::eDrop);
// We need to initialize data or dataTransfer later. Therefore, we cannot
@ -232,10 +258,10 @@ nsresult TextEditor::OnDrop(DragEvent* aDropEvent) {
// don't bail yet, iterate through them all
continue;
}
IgnoredErrorResult errorIgnored;
IgnoredErrorResult ignoredError;
if (range->IsPointInRange(*droppedAt.GetContainer(), droppedAt.Offset(),
errorIgnored) &&
!errorIgnored.Failed()) {
ignoredError) &&
!ignoredError.Failed()) {
// If source document and destination document is same and dropping
// into one of selected ranges, we don't need to do nothing.
// XXX If the source comes from outside of this editor, this check
@ -338,7 +364,8 @@ nsresult TextEditor::OnDrop(DragEvent* aDropEvent) {
rv = NS_OK;
}
// Don't cancel "insertFromDrop" even if "deleteByDrag" is canceled.
if (rv != NS_ERROR_EDITOR_ACTION_CANCELED && NS_WARN_IF(NS_FAILED(rv))) {
if (rv != NS_ERROR_EDITOR_ACTION_CANCELED && NS_FAILED(rv)) {
NS_WARNING("TextEditor::DeleteSelectionByDragAsAction() failed");
editActionData.Abort();
return EditorBase::ToGenericNSResult(rv);
}
@ -375,7 +402,8 @@ nsresult TextEditor::OnDrop(DragEvent* aDropEvent) {
MOZ_KnownLive(SelectionRefPtr())
->SetStartAndEnd(droppedAt.ToRawRangeBoundary(),
droppedAt.ToRawRangeBoundary(), error);
if (NS_WARN_IF(error.Failed())) {
if (error.Failed()) {
NS_WARNING("Selection::SetStartAndEnd() failed");
editActionData.Abort();
return error.StealNSResult();
}
@ -450,7 +478,9 @@ nsresult TextEditor::OnDrop(DragEvent* aDropEvent) {
editActionData.SetData(data);
nsresult rv = editActionData.MaybeDispatchBeforeInputEvent();
if (rv == NS_ERROR_EDITOR_ACTION_CANCELED || NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING_ASSERTION(rv == NS_ERROR_EDITOR_ACTION_CANCELED,
"MaybeDispatchBeforeInputEvent() failed");
return EditorBase::ToGenericNSResult(rv);
}
@ -458,10 +488,12 @@ nsresult TextEditor::OnDrop(DragEvent* aDropEvent) {
// anymore because nobody should listen to mutation events of anonymous
// text node in <input>/<textarea>.
nsContentUtils::PlatformToDOMLineBreaks(data);
InsertTextAt(data, droppedAt, false);
DebugOnly<nsresult> rvIgnored = InsertTextAt(data, droppedAt, false);
if (NS_WARN_IF(Destroyed())) {
return NS_OK;
}
NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored),
"TextEditor::InsertTextAt() failed, but ignored");
} else {
editActionData.InitializeDataTransfer(dataTransfer);
RefPtr<StaticRange> targetRange = StaticRange::Create(
@ -474,22 +506,27 @@ nsresult TextEditor::OnDrop(DragEvent* aDropEvent) {
editActionData.AppendTargetRange(*targetRange);
}
nsresult rv = editActionData.MaybeDispatchBeforeInputEvent();
if (rv == NS_ERROR_EDITOR_ACTION_CANCELED || NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING_ASSERTION(rv == NS_ERROR_EDITOR_ACTION_CANCELED,
"MaybeDispatchBeforeInputEvent() failed");
return EditorBase::ToGenericNSResult(rv);
}
RefPtr<HTMLEditor> htmlEditor(AsHTMLEditor());
for (uint32_t i = 0; i < numItems; ++i) {
htmlEditor->InsertFromDataTransfer(dataTransfer, i, srcdoc, droppedAt,
false);
DebugOnly<nsresult> rvIgnored = htmlEditor->InsertFromDataTransfer(
dataTransfer, i, srcdoc, droppedAt, false);
if (NS_WARN_IF(Destroyed())) {
return NS_OK;
}
NS_WARNING_ASSERTION(
NS_SUCCEEDED(rvIgnored),
"HTMLEditor::InsertFromDataTransfer() failed, but ignored");
}
}
nsresult rv = ScrollSelectionFocusIntoView();
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"ScrollSelectionFocusIntoView() failed");
"EditorBase::ScrollSelectionFocusIntoView() failed");
return rv;
}
@ -503,7 +540,9 @@ nsresult TextEditor::DeleteSelectionByDragAsAction(bool aDispatchInputEvent) {
AutoEditActionDataSetter editActionData(*this, EditAction::eDeleteByDrag);
MOZ_ASSERT(!SelectionRefPtr()->IsCollapsed());
nsresult rv = editActionData.CanHandleAndMaybeDispatchBeforeInputEvent();
if (rv == NS_ERROR_EDITOR_ACTION_CANCELED || NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING_ASSERTION(rv == NS_ERROR_EDITOR_ACTION_CANCELED,
"CanHandleAndMaybeDispatchBeforeInputEvent() failed");
return rv;
}
// But keep using placeholder transaction for "insertFromDrop" if there is.
@ -516,7 +555,8 @@ nsresult TextEditor::DeleteSelectionByDragAsAction(bool aDispatchInputEvent) {
if (NS_WARN_IF(Destroyed())) {
return NS_ERROR_EDITOR_DESTROYED;
}
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("TextEditor::DeleteSelectionAsSubAction() failed");
return rv;
}
@ -547,7 +587,10 @@ nsresult TextEditor::PasteAsAction(int32_t aClipboardType,
editActionData.InitializeDataTransferWithClipboard(
SettingDataTransfer::eWithFormat, aClipboardType);
nsresult rv = editActionData.CanHandleAndMaybeDispatchBeforeInputEvent();
if (rv == NS_ERROR_EDITOR_ACTION_CANCELED || NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING_ASSERTION(
rv == NS_ERROR_EDITOR_ACTION_CANCELED,
"CanHandleAndMaybeDispatchBeforeInputEvent() failed");
return EditorBase::ToGenericNSResult(rv);
}
rv = MOZ_KnownLive(AsHTMLEditor())->PasteInternal(aClipboardType);
@ -563,22 +606,27 @@ nsresult TextEditor::PasteAsAction(int32_t aClipboardType,
nsresult rv;
nsCOMPtr<nsIClipboard> clipboard =
do_GetService("@mozilla.org/widget/clipboard;1", &rv);
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("Failed to get nsIClipboard service");
return rv;
}
// Get the nsITransferable interface for getting the data from the clipboard
nsCOMPtr<nsITransferable> transferable;
rv = PrepareTransferable(getter_AddRefs(transferable));
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("TextEditor::PrepareTransferable() failed");
return EditorBase::ToGenericNSResult(rv);
}
if (NS_WARN_IF(!transferable)) {
NS_WARNING(
"TextEditor::PrepareTransferable() returned nullptr, but ignored");
return NS_OK; // XXX Why?
}
// Get the Data from the clipboard.
rv = clipboard->GetData(transferable, aClipboardType);
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("nsIClipboard::GetData() failed, but ignored");
return NS_OK; // XXX Why?
}
// XXX Why don't we check this first?
@ -586,10 +634,9 @@ nsresult TextEditor::PasteAsAction(int32_t aClipboardType,
return NS_OK;
}
rv = InsertTextFromTransferable(transferable);
if (NS_WARN_IF(NS_FAILED(rv))) {
return EditorBase::ToGenericNSResult(rv);
}
return NS_OK;
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"TextEditor::InsertTextFromTransferable() failed");
return EditorBase::ToGenericNSResult(rv);
}
nsresult TextEditor::PasteTransferableAsAction(nsITransferable* aTransferable,
@ -614,10 +661,9 @@ nsresult TextEditor::PasteTransferableAsAction(nsITransferable* aTransferable,
}
nsresult rv = InsertTextFromTransferable(aTransferable);
if (NS_WARN_IF(NS_FAILED(rv))) {
return EditorBase::ToGenericNSResult(rv);
}
return NS_OK;
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"TextEditor::InsertTextFromTransferable() failed");
return EditorBase::ToGenericNSResult(rv);
}
bool TextEditor::CanPaste(int32_t aClipboardType) const {
@ -636,7 +682,8 @@ bool TextEditor::CanPaste(int32_t aClipboardType) const {
nsresult rv;
nsCOMPtr<nsIClipboard> clipboard(
do_GetService("@mozilla.org/widget/clipboard;1", &rv));
if (NS_WARN_IF(NS_FAILED(rv))) {
if (NS_FAILED(rv)) {
NS_WARNING("Failed to get nsIClipboard service");
return false;
}
@ -647,10 +694,9 @@ bool TextEditor::CanPaste(int32_t aClipboardType) const {
bool haveFlavors;
rv = clipboard->HasDataMatchingFlavors(textEditorFlavors, aClipboardType,
&haveFlavors);
if (NS_WARN_IF(NS_FAILED(rv))) {
return false;
}
return haveFlavors;
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"nsIClipboard::HasDataMatchingFlavors() failed");
return NS_SUCCEEDED(rv) && haveFlavors;
}
bool TextEditor::CanPasteTransferable(nsITransferable* aTransferable) {
@ -667,11 +713,9 @@ bool TextEditor::CanPasteTransferable(nsITransferable* aTransferable) {
nsCOMPtr<nsISupports> data;
nsresult rv =
aTransferable->GetTransferData(kUnicodeMime, getter_AddRefs(data));
if (NS_SUCCEEDED(rv) && data) {
return true;
}
return false;
NS_WARNING_ASSERTION(NS_SUCCEEDED(rv),
"nsITransferable::GetTransferData(kUnicodeMime) failed");
return NS_SUCCEEDED(rv) && data;
}
bool TextEditor::IsSafeToInsertData(Document* aSourceDoc) {
@ -696,7 +740,10 @@ bool TextEditor::IsSafeToInsertData(Document* aSourceDoc) {
nsIPrincipal* destPrincipal = destdoc->NodePrincipal();
NS_ASSERTION(srcPrincipal && destPrincipal,
"How come we don't have a principal?");
srcPrincipal->Subsumes(destPrincipal, &isSafe);
DebugOnly<nsresult> rvIgnored =
srcPrincipal->Subsumes(destPrincipal, &isSafe);
NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored),
"nsIPrincipal::Subsumes() failed, but ignored");
}
return isSafe;