diff --git a/editor/libeditor/HTMLAbsPositionEditor.cpp b/editor/libeditor/HTMLAbsPositionEditor.cpp index bfb209adc98e..7f0c99d756be 100644 --- a/editor/libeditor/HTMLAbsPositionEditor.cpp +++ b/editor/libeditor/HTMLAbsPositionEditor.cpp @@ -11,6 +11,7 @@ #include "mozilla/EditAction.h" #include "mozilla/Preferences.h" #include "mozilla/PresShell.h" +#include "mozilla/dom/AncestorIterator.h" #include "mozilla/dom/Selection.h" #include "mozilla/dom/Element.h" #include "mozilla/dom/EventTarget.h" @@ -46,19 +47,22 @@ nsresult HTMLEditor::SetSelectionToAbsoluteOrStaticAsAction( AutoEditActionDataSetter editActionData( *this, EditAction::eSetPositionToAbsoluteOrStatic, aPrincipal); 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; } if (aEnabled) { EditActionResult result = SetSelectionToAbsoluteAsSubAction(); - NS_WARNING_ASSERTION(result.Succeeded(), - "SetSelectionToAbsoluteAsSubAction() failed"); + NS_WARNING_ASSERTION( + result.Succeeded(), + "HTMLEditor::SetSelectionToAbsoluteAsSubAction() failed"); return result.Rv(); } EditActionResult result = SetSelectionToStaticAsSubAction(); NS_WARNING_ASSERTION(result.Succeeded(), - "SetSelectionToStaticAsSubAction() failed"); + "HTMLEditor::SetSelectionToStaticAsSubAction() failed"); return result.Rv(); } @@ -69,34 +73,40 @@ HTMLEditor::GetAbsolutelyPositionedSelectionContainer() const { return nullptr; } - RefPtr element = GetSelectionContainerElement(); - if (NS_WARN_IF(!element)) { + Element* selectionContainerElement = GetSelectionContainerElement(); + if (NS_WARN_IF(!selectionContainerElement)) { return nullptr; } - nsAutoString positionStr; - while (element && !element->IsHTMLElement(nsGkAtoms::html)) { - nsresult rv = CSSEditUtils::GetComputedProperty( - *element, *nsGkAtoms::position, positionStr); - if (NS_WARN_IF(NS_FAILED(rv))) { + nsAutoString positionValue; + for (Element* element : + InclusiveAncestorsOfType(*selectionContainerElement)) { + if (element->IsHTMLElement(nsGkAtoms::html)) { + NS_WARNING( + "HTMLEditor::GetAbsolutelyPositionedSelectionContainer() reached " + " element"); return nullptr; } - if (positionStr.EqualsLiteral("absolute")) { - return element.forget(); + nsresult rv = CSSEditUtils::GetComputedProperty( + *element, *nsGkAtoms::position, positionValue); + if (NS_FAILED(rv)) { + NS_WARNING( + "CSSEditUtils::GetComputedProperty(nsGkAtoms::position) failed"); + return nullptr; + } + if (positionValue.EqualsLiteral("absolute")) { + return do_AddRef(element); } - element = element->GetParentElement(); } return nullptr; } -NS_IMETHODIMP -HTMLEditor::GetAbsolutePositioningEnabled(bool* aIsEnabled) { +NS_IMETHODIMP HTMLEditor::GetAbsolutePositioningEnabled(bool* aIsEnabled) { *aIsEnabled = IsAbsolutePositionEditorEnabled(); return NS_OK; } -NS_IMETHODIMP -HTMLEditor::SetAbsolutePositioningEnabled(bool aIsEnabled) { +NS_IMETHODIMP HTMLEditor::SetAbsolutePositioningEnabled(bool aIsEnabled) { EnableAbsolutePositionEditor(aIsEnabled); return NS_OK; } @@ -104,9 +114,13 @@ HTMLEditor::SetAbsolutePositioningEnabled(bool aIsEnabled) { nsresult HTMLEditor::RelativeChangeElementZIndex(Element& aElement, int32_t aChange, int32_t* aReturn) { - NS_ENSURE_ARG_POINTER(aReturn); - if (!aChange) // early way out, no change + if (NS_WARN_IF(!aReturn)) { + return NS_ERROR_INVALID_ARG; + } + + if (!aChange) { return NS_OK; + } int32_t zIndex = GetZIndex(aElement); zIndex = std::max(zIndex + aChange, 0); @@ -116,11 +130,15 @@ nsresult HTMLEditor::RelativeChangeElementZIndex(Element& aElement, return NS_OK; } -void HTMLEditor::SetZIndex(Element& aElement, int32_t aZindex) { - nsAutoString zIndexStr; - zIndexStr.AppendInt(aZindex); +void HTMLEditor::SetZIndex(Element& aElement, int32_t aZIndex) { + nsAutoString zIndexValue; + zIndexValue.AppendInt(aZIndex); - mCSSEditUtils->SetCSSProperty(aElement, *nsGkAtoms::z_index, zIndexStr); + DebugOnly rvIgnored = + mCSSEditUtils->SetCSSProperty(aElement, *nsGkAtoms::z_index, zIndexValue); + NS_WARNING_ASSERTION( + NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::SetCSSProperty(nsGkAtoms::z_index) failed, but ignored"); } nsresult HTMLEditor::AddZIndexAsAction(int32_t aChange, @@ -130,12 +148,15 @@ nsresult HTMLEditor::AddZIndexAsAction(int32_t aChange, AutoEditActionDataSetter editActionData( *this, EditAction::eIncreaseOrDecreaseZIndex, aPrincipal); 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); } EditActionResult result = AddZIndexAsSubAction(aChange); - NS_WARNING_ASSERTION(result.Succeeded(), "AddZIndexAsSubAction() failed"); + NS_WARNING_ASSERTION(result.Succeeded(), + "HTMLEditor::AddZIndexAsSubAction() failed"); return EditorBase::ToGenericNSResult(result.Rv()); } @@ -145,44 +166,61 @@ int32_t HTMLEditor::GetZIndex(Element& aElement) { return 0; } - nsAutoString zIndexStr; + nsAutoString zIndexValue; nsresult rv = CSSEditUtils::GetSpecifiedProperty( - aElement, *nsGkAtoms::z_index, zIndexStr); - if (NS_WARN_IF(NS_FAILED(rv))) { + aElement, *nsGkAtoms::z_index, zIndexValue); + if (NS_FAILED(rv)) { + NS_WARNING("CSSEditUtils::GetSpecifiedProperty(nsGkAtoms::z_index) failed"); return 0; } - if (zIndexStr.EqualsLiteral("auto")) { + if (zIndexValue.EqualsLiteral("auto")) { + if (!aElement.GetParentElement()) { + NS_WARNING("aElement was an orphan node or the root node"); + return 0; + } // we have to look at the positioned ancestors // cf. CSS 2 spec section 9.9.1 - nsCOMPtr node = aElement.GetParentNode(); - nsAutoString positionStr; - while (node && zIndexStr.EqualsLiteral("auto") && - !node->IsHTMLElement(nsGkAtoms::body)) { - rv = CSSEditUtils::GetComputedProperty(*node, *nsGkAtoms::position, - positionStr); - if (NS_WARN_IF(NS_FAILED(rv))) { + nsAutoString positionValue; + for (Element* element : + InclusiveAncestorsOfType(*aElement.GetParentElement())) { + if (element->IsHTMLElement(nsGkAtoms::body)) { return 0; } - if (positionStr.EqualsLiteral("absolute")) { - // ah, we found one, what's its z-index ? If its z-index is auto, - // we have to continue climbing the document's tree - rv = CSSEditUtils::GetComputedProperty(*node, *nsGkAtoms::z_index, - zIndexStr); - if (NS_WARN_IF(NS_FAILED(rv))) { - return 0; - } + nsresult rv = CSSEditUtils::GetComputedProperty( + *element, *nsGkAtoms::position, positionValue); + if (NS_FAILED(rv)) { + NS_WARNING( + "CSSEditUtils::GetComputedProperty(nsGkAtoms::position) failed"); + return 0; + } + if (!positionValue.EqualsLiteral("absolute")) { + continue; + } + // ah, we found one, what's its z-index ? If its z-index is auto, + // we have to continue climbing the document's tree + rv = CSSEditUtils::GetComputedProperty(*element, *nsGkAtoms::z_index, + zIndexValue); + if (NS_FAILED(rv)) { + NS_WARNING( + "CSSEditUtils::GetComputedProperty(nsGkAtoms::z_index) failed"); + return 0; + } + if (!zIndexValue.EqualsLiteral("auto")) { + break; } - node = node->GetParentNode(); } } - if (zIndexStr.EqualsLiteral("auto")) { + if (zIndexValue.EqualsLiteral("auto")) { return 0; } - nsresult errorCode; - return zIndexStr.ToInteger(&errorCode); + nsresult rvIgnored; + int32_t result = zIndexValue.ToInteger(&rvIgnored); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "nsAString::ToInteger() failed, but ignored"); + return result; } bool HTMLEditor::CreateGrabberInternal(nsIContent& aParentContent) { @@ -195,7 +233,10 @@ bool HTMLEditor::CreateGrabberInternal(nsIContent& aParentContent) { // mGrabber may be destroyed during creation due to there may be // mutation event listener. - if (NS_WARN_IF(!mGrabber)) { + if (!mGrabber) { + NS_WARNING( + "HTMLEditor::CreateAnonymousElement(nsGkAtoms::span, mozGrabber) " + "failed"); return false; } @@ -208,8 +249,7 @@ bool HTMLEditor::CreateGrabberInternal(nsIContent& aParentContent) { return true; } -NS_IMETHODIMP -HTMLEditor::RefreshGrabber() { +NS_IMETHODIMP HTMLEditor::RefreshGrabber() { if (NS_WARN_IF(!mAbsolutelyPositionedObject)) { return NS_ERROR_FAILURE; } @@ -220,10 +260,9 @@ HTMLEditor::RefreshGrabber() { } nsresult rv = RefreshGrabberInternal(); - if (NS_WARN_IF(NS_FAILED(rv))) { - return EditorBase::ToGenericNSResult(rv); - } - return NS_OK; + NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), + "HTMLEditor::RefreshGrabberInternal() failed"); + return EditorBase::ToGenericNSResult(rv); } nsresult HTMLEditor::RefreshGrabberInternal() { @@ -235,11 +274,13 @@ nsresult HTMLEditor::RefreshGrabberInternal() { mPositionedObjectWidth, mPositionedObjectHeight, mPositionedObjectBorderLeft, mPositionedObjectBorderTop, mPositionedObjectMarginLeft, mPositionedObjectMarginTop); - if (NS_WARN_IF(NS_FAILED(rv))) { + if (NS_FAILED(rv)) { + NS_WARNING("HTMLEditor::GetPositionAndDimensions() failed"); return rv; } RefPtr grabber = mGrabber.get(); + MOZ_ASSERT(grabber); SetAnonymousElementPosition(mPositionedObjectX + 12, mPositionedObjectY - 14, grabber); return NS_OK; @@ -259,7 +300,9 @@ void HTMLEditor::HideGrabberInternal() { DebugOnly rv = absolutePositioningObject->UnsetAttr( kNameSpaceID_None, nsGkAtoms::_moz_abspos, true); - NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), "Failed to unset the attribute"); + NS_WARNING_ASSERTION( + NS_SUCCEEDED(rv), + "Element::UnsetAttr(nsGkAtoms::_moz_abspos) failed, but ignored"); // We allow the pres shell to be null; when it is, we presume there // are no document observers to notify, but we still want to @@ -285,20 +328,28 @@ nsresult HTMLEditor::ShowGrabberInternal(Element& aElement) { nsAutoString classValue; nsresult rv = GetTemporaryStyleForFocusedPositionedElement(aElement, classValue); - NS_ENSURE_SUCCESS(rv, rv); + if (NS_FAILED(rv)) { + NS_WARNING( + "HTMLEditor::GetTemporaryStyleForFocusedPositionedElement() failed"); + return rv; + } rv = aElement.SetAttr(kNameSpaceID_None, nsGkAtoms::_moz_abspos, classValue, true); - NS_ENSURE_SUCCESS(rv, rv); + if (NS_FAILED(rv)) { + NS_WARNING("Element::SetAttr(nsGkAtoms::_moz_abspos) failed"); + return rv; + } mAbsolutelyPositionedObject = &aElement; - nsIContent* parentContent = aElement.GetParent(); - if (NS_WARN_IF(!parentContent)) { + Element* parentElement = aElement.GetParentElement(); + if (NS_WARN_IF(!parentElement)) { return NS_ERROR_FAILURE; } - if (NS_WARN_IF(!CreateGrabberInternal(*parentContent))) { + if (!CreateGrabberInternal(*parentElement)) { + NS_WARNING("HTMLEditor::CreateGrabberInternal() failed"); return NS_ERROR_FAILURE; } @@ -308,23 +359,26 @@ nsresult HTMLEditor::ShowGrabberInternal(Element& aElement) { // Finally, move the grabber to proper position. rv = RefreshGrabberInternal(); - if (NS_WARN_IF(NS_FAILED(rv))) { - return rv; - } - return NS_OK; + NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), + "HTMLEditor::RefereshGrabberInternal() failed"); + return rv; } nsresult HTMLEditor::StartMoving() { - nsCOMPtr parentContent = mGrabber->GetParent(); - if (NS_WARN_IF(!parentContent) || NS_WARN_IF(!mAbsolutelyPositionedObject)) { + RefPtr parentElement = mGrabber->GetParentElement(); + if (NS_WARN_IF(!parentElement) || NS_WARN_IF(!mAbsolutelyPositionedObject)) { return NS_ERROR_FAILURE; } // now, let's create the resizing shadow mPositioningShadow = - CreateShadow(*parentContent, *mAbsolutelyPositionedObject); - if (NS_WARN_IF(!mPositioningShadow) || - NS_WARN_IF(!mAbsolutelyPositionedObject)) { + CreateShadow(*parentElement, *mAbsolutelyPositionedObject); + if (!mPositioningShadow) { + NS_WARNING("HTMLEditor::CreateShadow() failed"); + return NS_ERROR_FAILURE; + } + if (!mAbsolutelyPositionedObject) { + NS_WARNING("The target has gone during HTMLEditor::CreateShadow()"); return NS_ERROR_FAILURE; } RefPtr positioningShadow = mPositioningShadow.get(); @@ -332,19 +386,30 @@ nsresult HTMLEditor::StartMoving() { nsresult rv = SetShadowPosition(*positioningShadow, *absolutelyPositionedObject, mPositionedObjectX, mPositionedObjectY); - if (NS_WARN_IF(NS_FAILED(rv))) { + if (NS_FAILED(rv)) { + NS_WARNING("HTMLEditor::SetShadowPosition() failed"); return rv; } // make the shadow appear - mPositioningShadow->UnsetAttr(kNameSpaceID_None, nsGkAtoms::_class, true); + DebugOnly rvIgnored = + mPositioningShadow->UnsetAttr(kNameSpaceID_None, nsGkAtoms::_class, true); + NS_WARNING_ASSERTION( + NS_SUCCEEDED(rvIgnored), + "Element::UnsetAttr(nsGkAtoms::_class) failed, but ignored"); // position it positioningShadow = mPositioningShadow.get(); - mCSSEditUtils->SetCSSPropertyPixels(*positioningShadow, *nsGkAtoms::width, - mPositionedObjectWidth); - mCSSEditUtils->SetCSSPropertyPixels(*positioningShadow, *nsGkAtoms::height, - mPositionedObjectHeight); + rvIgnored = mCSSEditUtils->SetCSSPropertyPixels( + *positioningShadow, *nsGkAtoms::width, mPositionedObjectWidth); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::SetCSSPropertyPixels(nsGkAtoms::width) " + "failed, but ignored"); + rvIgnored = mCSSEditUtils->SetCSSPropertyPixels( + *positioningShadow, *nsGkAtoms::height, mPositionedObjectHeight); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::SetCSSPropertyPixels(nsGkAtoms::height) " + "failed, but ignored"); mIsMoving = true; return NS_OK; // XXX Looks like nobody refers this result @@ -363,11 +428,14 @@ nsresult HTMLEditor::GrabberClicked() { } nsresult rv = static_cast(mEventListener.get()) ->ListenToMouseMoveEventForGrabber(true); - if (NS_WARN_IF(NS_FAILED(rv))) { + if (NS_FAILED(rv)) { + NS_WARNING( + "HTMLEditorEventListener::ListenToMouseMoveEventForGrabber(true) " + "failed, but ignored"); return NS_OK; } mGrabberClicked = true; - return rv; + return NS_OK; } nsresult HTMLEditor::EndMoving() { @@ -387,20 +455,24 @@ nsresult HTMLEditor::EndMoving() { static_cast(mEventListener.get()) ->ListenToMouseMoveEventForGrabber(false); NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), - "Failed to remove mousemove event listener"); + "HTMLEditorEventListener::" + "ListenToMouseMoveEventForGrabber(false) failed"); } mGrabberClicked = false; mIsMoving = false; nsresult rv = RefreshEditingUI(); - if (NS_WARN_IF(NS_FAILED(rv))) { - return rv; - } - return NS_OK; + NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), + "HTMLEditor::RefreshEditingUI() failed"); + return rv; } + nsresult HTMLEditor::SetFinalPosition(int32_t aX, int32_t aY) { nsresult rv = EndMoving(); - NS_ENSURE_SUCCESS(rv, rv); + if (NS_FAILED(rv)) { + NS_WARNING("HTMLEditor::EndMoving() failed"); + return rv; + } // we have now to set the new width and height of the resized object // we don't set the x and y position because we don't control that in @@ -424,19 +496,25 @@ nsresult HTMLEditor::SetFinalPosition(int32_t aX, int32_t aY) { } OwningNonNull absolutelyPositionedObject = *mAbsolutelyPositionedObject; - mCSSEditUtils->SetCSSPropertyPixels(*absolutelyPositionedObject, - *nsGkAtoms::top, newY); - mCSSEditUtils->SetCSSPropertyPixels(*absolutelyPositionedObject, - *nsGkAtoms::left, newX); + DebugOnly rvIgnored = NS_OK; + rvIgnored = mCSSEditUtils->SetCSSPropertyPixels(*absolutelyPositionedObject, + *nsGkAtoms::top, newY); + NS_WARNING_ASSERTION( + NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::SetCSSPropertyPixels(nsGkAtoms::top) failed, but ignored"); + rvIgnored = mCSSEditUtils->SetCSSPropertyPixels(*absolutelyPositionedObject, + *nsGkAtoms::left, newX); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::SetCSSPropertyPixels(nsGkAtoms::left) " + "failed, but ignored"); // keep track of that size mPositionedObjectX = newX; mPositionedObjectY = newY; rv = RefreshResizers(); - if (NS_WARN_IF(NS_FAILED(rv))) { - return rv; - } - return NS_OK; + NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), + "HTMLEditor::RefreshResizers() failed"); + return rv; } void HTMLEditor::AddPositioningOffset(int32_t& aX, int32_t& aY) { @@ -450,21 +528,28 @@ void HTMLEditor::AddPositioningOffset(int32_t& aX, int32_t& aY) { nsresult HTMLEditor::SetPositionToAbsoluteOrStatic(Element& aElement, bool aEnabled) { - nsAutoString positionStr; - CSSEditUtils::GetComputedProperty(aElement, *nsGkAtoms::position, - positionStr); - bool isPositioned = (positionStr.EqualsLiteral("absolute")); - + nsAutoString positionValue; + DebugOnly rvIgnored = CSSEditUtils::GetComputedProperty( + aElement, *nsGkAtoms::position, positionValue); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::GetComputedProperty(nsGkAtoms::position) " + "failed, but ignored"); // nothing to do if the element is already in the state we want - if (isPositioned == aEnabled) { + if (positionValue.EqualsLiteral("absolute") == aEnabled) { return NS_OK; } if (aEnabled) { - return SetPositionToAbsolute(aElement); + nsresult rv = SetPositionToAbsolute(aElement); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), + "HTMLEditor::SetPositionToAbsolute() failed"); + return rv; } - return SetPositionToStatic(aElement); + nsresult rv = SetPositionToStatic(aElement); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), + "HTMLEditor::SetPositionToStatic() failed"); + return rv; } nsresult HTMLEditor::SetPositionToAbsolute(Element& aElement) { @@ -473,10 +558,15 @@ nsresult HTMLEditor::SetPositionToAbsolute(Element& aElement) { AutoPlaceholderBatch treatAsOneTransaction(*this); int32_t x, y; - GetElementOrigin(aElement, x, y); + DebugOnly rvIgnored = GetElementOrigin(aElement, x, y); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "HTMLEditor::GetElementOrigin() failed, but ignored"); - mCSSEditUtils->SetCSSProperty(aElement, *nsGkAtoms::position, - NS_LITERAL_STRING("absolute")); + rvIgnored = mCSSEditUtils->SetCSSProperty(aElement, *nsGkAtoms::position, + NS_LITERAL_STRING("absolute")); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::SetCSSProperty(nsGkAtoms::position, " + "absolute) failed, but ignored"); AddPositioningOffset(x, y); SnapToGrid(x, y); @@ -485,31 +575,52 @@ nsresult HTMLEditor::SetPositionToAbsolute(Element& aElement) { // we may need to create a br if the positioned element is alone in its // container nsINode* parentNode = aElement.GetParentNode(); - if (parentNode->GetChildCount() == 1) { - RefPtr newBrElement = - InsertBRElementWithTransaction(EditorDOMPoint(parentNode, 0)); - if (NS_WARN_IF(!newBrElement)) { - return NS_ERROR_FAILURE; - } + if (parentNode->GetChildCount() != 1) { + return NS_OK; } - return NS_OK; + RefPtr newBRElement = + InsertBRElementWithTransaction(EditorDOMPoint(parentNode, 0)); + NS_WARNING_ASSERTION(newBRElement, + "HTMLEditor::InsertBRElementWithTransaction() failed"); + return newBRElement ? NS_OK : NS_ERROR_FAILURE; } nsresult HTMLEditor::SetPositionToStatic(Element& aElement) { AutoPlaceholderBatch treatAsOneTransaction(*this); - mCSSEditUtils->RemoveCSSProperty(aElement, *nsGkAtoms::position, - EmptyString()); - mCSSEditUtils->RemoveCSSProperty(aElement, *nsGkAtoms::top, EmptyString()); - mCSSEditUtils->RemoveCSSProperty(aElement, *nsGkAtoms::left, EmptyString()); - mCSSEditUtils->RemoveCSSProperty(aElement, *nsGkAtoms::z_index, - EmptyString()); + DebugOnly rvIgnored = NS_OK; + rvIgnored = mCSSEditUtils->RemoveCSSProperty(aElement, *nsGkAtoms::position, + EmptyString()); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::RemoveCSSProperty(nsGkAtoms::position) " + "failed, but ignored"); + rvIgnored = mCSSEditUtils->RemoveCSSProperty(aElement, *nsGkAtoms::top, + EmptyString()); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::RemoveCSSProperty(nsGkAtoms::top) " + "failed, but ignored"); + rvIgnored = mCSSEditUtils->RemoveCSSProperty(aElement, *nsGkAtoms::left, + EmptyString()); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::RemoveCSSProperty(nsGkAtoms::left) " + "failed, but ignored"); + rvIgnored = mCSSEditUtils->RemoveCSSProperty(aElement, *nsGkAtoms::z_index, + EmptyString()); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::RemoveCSSProperty(nsGkAtoms::z_index) " + "failed, but ignored"); if (!HTMLEditUtils::IsImage(&aElement)) { - mCSSEditUtils->RemoveCSSProperty(aElement, *nsGkAtoms::width, - EmptyString()); - mCSSEditUtils->RemoveCSSProperty(aElement, *nsGkAtoms::height, - EmptyString()); + rvIgnored = mCSSEditUtils->RemoveCSSProperty(aElement, *nsGkAtoms::width, + EmptyString()); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::RemoveCSSProperty(nsGkAtoms::width) " + "failed, but ignored"); + rvIgnored = mCSSEditUtils->RemoveCSSProperty(aElement, *nsGkAtoms::height, + EmptyString()); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::RemoveCSSProperty(nsGkAtoms::height) " + "failed, but ignored"); } if (!aElement.IsHTMLElement(nsGkAtoms::div) || @@ -520,39 +631,37 @@ nsresult HTMLEditor::SetPositionToStatic(Element& aElement) { // Make sure the first fild and last child of aElement starts/ends hard // line(s) even after removing `aElement`. nsresult rv = EnsureHardLineBeginsWithFirstChildOf(aElement); - if (NS_WARN_IF(NS_FAILED(rv))) { + if (NS_FAILED(rv)) { + NS_WARNING("HTMLEditor::EnsureHardLineBeginsWithFirstChildOf() failed"); return rv; } rv = EnsureHardLineEndsWithLastChildOf(aElement); - if (NS_WARN_IF(NS_FAILED(rv))) { + if (NS_FAILED(rv)) { + NS_WARNING("HTMLEditor::EnsureHardLineEndsWithLastChildOf() failed"); return rv; } rv = RemoveContainerWithTransaction(aElement); NS_WARNING_ASSERTION(NS_SUCCEEDED(rv), - "RemoveContainerWithTransaction() failed"); + "EditorBase::RemoveContainerWithTransaction() failed"); return rv; } -NS_IMETHODIMP -HTMLEditor::SetSnapToGridEnabled(bool aEnabled) { +NS_IMETHODIMP HTMLEditor::SetSnapToGridEnabled(bool aEnabled) { mSnapToGridEnabled = aEnabled; return NS_OK; } -NS_IMETHODIMP -HTMLEditor::GetSnapToGridEnabled(bool* aIsEnabled) { +NS_IMETHODIMP HTMLEditor::GetSnapToGridEnabled(bool* aIsEnabled) { *aIsEnabled = mSnapToGridEnabled; return NS_OK; } -NS_IMETHODIMP -HTMLEditor::SetGridSize(uint32_t aSize) { +NS_IMETHODIMP HTMLEditor::SetGridSize(uint32_t aSize) { mGridSize = aSize; return NS_OK; } -NS_IMETHODIMP -HTMLEditor::GetGridSize(uint32_t* aSize) { +NS_IMETHODIMP HTMLEditor::GetGridSize(uint32_t* aSize) { *aSize = mGridSize; return NS_OK; } @@ -560,8 +669,17 @@ HTMLEditor::GetGridSize(uint32_t* aSize) { // self-explanatory void HTMLEditor::SetTopAndLeft(Element& aElement, int32_t aX, int32_t aY) { AutoPlaceholderBatch treatAsOneTransaction(*this); - mCSSEditUtils->SetCSSPropertyPixels(aElement, *nsGkAtoms::left, aX); - mCSSEditUtils->SetCSSPropertyPixels(aElement, *nsGkAtoms::top, aY); + DebugOnly rvIgnored = NS_OK; + rvIgnored = + mCSSEditUtils->SetCSSPropertyPixels(aElement, *nsGkAtoms::left, aX); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::SetCSSPropertyPixels(nsGkAtoms::left) " + "failed, but ignored"); + rvIgnored = + mCSSEditUtils->SetCSSPropertyPixels(aElement, *nsGkAtoms::top, aY); + NS_WARNING_ASSERTION(NS_SUCCEEDED(rvIgnored), + "CSSEditUtils::SetCSSPropertyPixels(nsGkAtoms::top) " + "failed, but ignored"); } nsresult HTMLEditor::GetTemporaryStyleForFocusedPositionedElement( @@ -578,27 +696,40 @@ nsresult HTMLEditor::GetTemporaryStyleForFocusedPositionedElement( // Otherwise don't change background/foreground aReturn.Truncate(); - nsAutoString bgImageStr; + nsAutoString backgroundImageValue; nsresult rv = CSSEditUtils::GetComputedProperty( - aElement, *nsGkAtoms::background_image, bgImageStr); - NS_ENSURE_SUCCESS(rv, rv); - if (!bgImageStr.EqualsLiteral("none")) { + aElement, *nsGkAtoms::background_image, backgroundImageValue); + if (NS_FAILED(rv)) { + NS_WARNING( + "CSSEditUtils::GetComputedProperty(nsGkAtoms::background_image) " + "failed"); + return rv; + } + if (!backgroundImageValue.EqualsLiteral("none")) { return NS_OK; } - nsAutoString bgColorStr; + nsAutoString backgroundColorValue; rv = CSSEditUtils::GetComputedProperty(aElement, *nsGkAtoms::backgroundColor, - bgColorStr); - NS_ENSURE_SUCCESS(rv, rv); - if (!bgColorStr.EqualsLiteral("rgba(0, 0, 0, 0)")) { + backgroundColorValue); + if (NS_FAILED(rv)) { + NS_WARNING( + "CSSEditUtils::GetComputedProperty(nsGkAtoms::backgroundColor) " + "failed"); + return rv; + } + if (!backgroundColorValue.EqualsLiteral("rgba(0, 0, 0, 0)")) { return NS_OK; } RefPtr style = nsComputedDOMStyle::GetComputedStyle(&aElement, nullptr); - NS_ENSURE_STATE(style); + if (!style) { + NS_WARNING("nsComputedDOMStyle::GetComputedStyle() failed"); + return NS_ERROR_FAILURE; + } - const uint8_t kBlackBgTrigger = 0xd0; + static const uint8_t kBlackBgTrigger = 0xd0; const auto& color = style->StyleText()->mColor; if (color.red >= kBlackBgTrigger && color.green >= kBlackBgTrigger &&