mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 16:58:38 +09:00
DOM - Element - add support for Element.toggleAttribute()
This commit is contained in:
parent
9a207124fc
commit
8714f52f69
3 changed files with 40 additions and 0 deletions
|
|
@ -1230,6 +1230,42 @@ Element::GetAttribute(const nsAString& aName, DOMString& aReturn)
|
|||
}
|
||||
}
|
||||
|
||||
bool
|
||||
Element::ToggleAttribute(const nsAString& aName,
|
||||
const Optional<bool>& aForce,
|
||||
ErrorResult& aError)
|
||||
{
|
||||
aError = nsContentUtils::CheckQName(aName, false);
|
||||
if (aError.Failed()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
nsAutoString nameToUse;
|
||||
const nsAttrName* name = InternalGetAttrNameFromQName(aName, &nameToUse);
|
||||
if (!name) {
|
||||
if (aForce.WasPassed() && !aForce.Value()) {
|
||||
return false;
|
||||
}
|
||||
nsCOMPtr<nsIAtom> nameAtom = NS_Atomize(nameToUse);
|
||||
if (!nameAtom) {
|
||||
aError.Throw(NS_ERROR_OUT_OF_MEMORY);
|
||||
return false;
|
||||
}
|
||||
aError = SetAttr(kNameSpaceID_None, nameAtom, EmptyString(), true);
|
||||
return true;
|
||||
}
|
||||
if (aForce.WasPassed() && aForce.Value()) {
|
||||
return true;
|
||||
}
|
||||
// Hold a strong reference here so that the atom or nodeinfo doesn't go
|
||||
// away during UnsetAttr. If it did UnsetAttr would be left with a
|
||||
// dangling pointer as argument without knowing it.
|
||||
nsAttrName tmp(*name);
|
||||
|
||||
aError = UnsetAttr(name->NamespaceID(), name->LocalName(), true);
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
Element::SetAttribute(const nsAString& aName,
|
||||
const nsAString& aValue,
|
||||
|
|
|
|||
|
|
@ -686,6 +686,8 @@ public:
|
|||
void GetAttributeNS(const nsAString& aNamespaceURI,
|
||||
const nsAString& aLocalName,
|
||||
nsAString& aReturn);
|
||||
bool ToggleAttribute(const nsAString& aName, const Optional<bool>& aForce,
|
||||
ErrorResult& aError);
|
||||
void SetAttribute(const nsAString& aName, const nsAString& aValue,
|
||||
ErrorResult& aError);
|
||||
void SetAttributeNS(const nsAString& aNamespaceURI,
|
||||
|
|
|
|||
|
|
@ -41,6 +41,8 @@ interface Element : Node {
|
|||
[Pure]
|
||||
DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
|
||||
[Throws]
|
||||
boolean toggleAttribute(DOMString name, optional boolean force);
|
||||
[Throws]
|
||||
void setAttribute(DOMString name, DOMString value);
|
||||
[Throws]
|
||||
void setAttributeNS(DOMString? namespace, DOMString name, DOMString value);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue