Bug 1842027 - Remove nsTextControlFrame::TextEquals. r=masayuki

It is always called from TextControlState, and always ends up in
TextControlState::ValueEquals, so we can avoid some indirection and just
use that.

Depends on D183282

Differential Revision: https://phabricator.services.mozilla.com/D183283
This commit is contained in:
Emilio Cobos Álvarez
2023-07-12 08:58:09 +00:00
parent 072c9af992
commit 8511de0242
7 changed files with 10 additions and 63 deletions

View File

@@ -1829,15 +1829,13 @@ nsresult TextControlState::PrepareEditor(const nsAString* aValue) {
nsresult rv = NS_OK;
if (!SuppressEventHandlers(presContext)) {
nsCOMPtr<nsIControllers> controllers;
if (HTMLInputElement* inputElement =
HTMLInputElement::FromNodeOrNull(mTextCtrlElement)) {
if (auto* inputElement = HTMLInputElement::FromNode(mTextCtrlElement)) {
nsresult rv = inputElement->GetControllers(getter_AddRefs(controllers));
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
} else {
HTMLTextAreaElement* textAreaElement =
HTMLTextAreaElement::FromNodeOrNull(mTextCtrlElement);
auto* textAreaElement = HTMLTextAreaElement::FromNode(mTextCtrlElement);
if (!textAreaElement) {
return NS_ERROR_FAILURE;
}
@@ -2404,12 +2402,10 @@ void TextControlState::UnbindFromFrame(nsTextControlFrame* aFrame) {
// Clean up the controller
if (!SuppressEventHandlers(mBoundFrame->PresContext())) {
nsCOMPtr<nsIControllers> controllers;
if (HTMLInputElement* inputElement =
HTMLInputElement::FromNodeOrNull(mTextCtrlElement)) {
if (auto* inputElement = HTMLInputElement::FromNode(mTextCtrlElement)) {
inputElement->GetControllers(getter_AddRefs(controllers));
} else {
HTMLTextAreaElement* textAreaElement =
HTMLTextAreaElement::FromNodeOrNull(mTextCtrlElement);
auto* textAreaElement = HTMLTextAreaElement::FromNode(mTextCtrlElement);
if (textAreaElement) {
textAreaElement->GetControllers(getter_AddRefs(controllers));
}
@@ -2646,11 +2642,10 @@ bool TextControlState::SetValue(const nsAString& aValue,
} else {
// If setting value won't change current value, we shouldn't commit
// composition for compatibility with the other browsers.
MOZ_ASSERT(!aOldValue || mBoundFrame->TextEquals(*aOldValue));
MOZ_ASSERT(!aOldValue || ValueEquals(*aOldValue));
bool isSameAsCurrentValue =
aOldValue
? aOldValue->Equals(handlingSetValue.GetSettingValue())
: mBoundFrame->TextEquals(handlingSetValue.GetSettingValue());
aOldValue ? aOldValue->Equals(handlingSetValue.GetSettingValue())
: ValueEquals(handlingSetValue.GetSettingValue());
if (isSameAsCurrentValue) {
// Note that in this case, we shouldn't fire any events with setting
// value because event handlers may try to set value recursively but
@@ -2728,12 +2723,12 @@ bool TextControlState::SetValueWithTextEditor(
#endif
MOZ_ASSERT(!aHandlingSetValue.GetOldValue() ||
mBoundFrame->TextEquals(*aHandlingSetValue.GetOldValue()));
bool isSameAsCurrentValue =
ValueEquals(*aHandlingSetValue.GetOldValue()));
const bool isSameAsCurrentValue =
aHandlingSetValue.GetOldValue()
? aHandlingSetValue.GetOldValue()->Equals(
aHandlingSetValue.GetSettingValue())
: mBoundFrame->TextEquals(aHandlingSetValue.GetSettingValue());
: ValueEquals(aHandlingSetValue.GetSettingValue());
// this is necessary to avoid infinite recursion
if (isSameAsCurrentValue) {