Backed out changeset a879c4fcdc4f (bug 1817122) for causing multiple failures CLOSED TREE

This commit is contained in:
Norisz Fay
2023-10-05 04:29:13 +03:00
parent 3145f5e71c
commit 85de591c5d
8 changed files with 46 additions and 38 deletions

View File

@@ -3213,32 +3213,27 @@ void nsGenericHTMLElement::PopoverPseudoStateUpdate(bool aOpen, bool aNotify) {
SetStates(ElementState::POPOVER_OPEN, aOpen, aNotify);
}
already_AddRefed<ToggleEvent> nsGenericHTMLElement::CreateToggleEvent(
const nsAString& aEventType, const nsAString& aOldState,
const nsAString& aNewState, Cancelable aCancelable) {
ToggleEventInit init;
init.mBubbles = false;
init.mOldState = aOldState;
init.mNewState = aNewState;
init.mCancelable = aCancelable == Cancelable::eYes;
RefPtr<ToggleEvent> event = ToggleEvent::Constructor(this, aEventType, init);
event->SetTrusted(true);
event->SetTarget(this);
return event.forget();
}
bool nsGenericHTMLElement::FireToggleEvent(PopoverVisibilityState aOldState,
PopoverVisibilityState aNewState,
const nsAString& aType) {
auto stringForState = [](PopoverVisibilityState state) {
return state == PopoverVisibilityState::Hidden ? u"closed"_ns : u"open"_ns;
};
const auto cancelable = aType == u"beforetoggle"_ns &&
aNewState == PopoverVisibilityState::Showing
? Cancelable::eYes
: Cancelable::eNo;
RefPtr event = CreateToggleEvent(aType, stringForState(aOldState),
stringForState(aNewState), cancelable);
ToggleEventInit init;
init.mBubbles = false;
init.mOldState = stringForState(aOldState);
init.mNewState = stringForState(aNewState);
if (aType == u"beforetoggle"_ns &&
aNewState == PopoverVisibilityState::Showing) {
init.mCancelable = true;
} else {
init.mCancelable = false;
}
RefPtr<ToggleEvent> event = ToggleEvent::Constructor(this, aType, init);
event->SetTrusted(true);
event->SetTarget(this);
EventDispatcher::DispatchDOMEvent(this, nullptr, event, nullptr, nullptr);
return event->DefaultPrevented();
}