mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 21:31:04 +00:00
Bug 1406278: Part 1 - Pass subject principal to SetAttribute and friends. r=bz
In order to tailor certain security checks to the caller that is attempting to load a particular piece of content, we need to be able to attach an appropriate triggering principal to the corresponding requests. Since most HTML content is loaded based on attribute values, that means capturing the subject principal of the caller who sets those attributes, which means making it available to AfterSetAttr hooks. MozReview-Commit-ID: BMDL2Uepg0X --HG-- extra : rebase_source : 25e438c243700a9368c393e40e3a6002d968d6c8
This commit is contained in:
parent
0e7051b93c
commit
4275cd1039
@ -75,6 +75,7 @@ void
|
||||
AnonymousContent::SetAttributeForElement(const nsAString& aElementId,
|
||||
const nsAString& aName,
|
||||
const nsAString& aValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
ErrorResult& aRv)
|
||||
{
|
||||
Element* element = GetElementById(aElementId);
|
||||
@ -83,7 +84,7 @@ AnonymousContent::SetAttributeForElement(const nsAString& aElementId,
|
||||
return;
|
||||
}
|
||||
|
||||
element->SetAttribute(aName, aValue, aRv);
|
||||
element->SetAttribute(aName, aValue, aSubjectPrincipal, aRv);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -43,6 +43,7 @@ public:
|
||||
void SetAttributeForElement(const nsAString& aElementId,
|
||||
const nsAString& aName,
|
||||
const nsAString& aValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
ErrorResult& aRv);
|
||||
|
||||
void GetAttributeForElement(const nsAString& aElementId,
|
||||
|
@ -175,7 +175,7 @@ Attr::GetValue(nsAString& aValue)
|
||||
}
|
||||
|
||||
void
|
||||
Attr::SetValue(const nsAString& aValue, ErrorResult& aRv)
|
||||
Attr::SetValue(const nsAString& aValue, nsIPrincipal* aTriggeringPrincipal, ErrorResult& aRv)
|
||||
{
|
||||
Element* element = GetElement();
|
||||
if (!element) {
|
||||
@ -188,6 +188,7 @@ Attr::SetValue(const nsAString& aValue, ErrorResult& aRv)
|
||||
nameAtom,
|
||||
mNodeInfo->GetPrefixAtom(),
|
||||
aValue,
|
||||
aTriggeringPrincipal,
|
||||
true);
|
||||
}
|
||||
|
||||
@ -195,7 +196,7 @@ NS_IMETHODIMP
|
||||
Attr::SetValue(const nsAString& aValue)
|
||||
{
|
||||
ErrorResult rv;
|
||||
SetValue(aValue, rv);
|
||||
SetValue(aValue, nullptr, rv);
|
||||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
|
@ -85,9 +85,13 @@ public:
|
||||
virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
// XPCOM GetName() is OK
|
||||
// XPCOM GetValue() is OK
|
||||
|
||||
void SetValue(const nsAString& aValue, ErrorResult& aRv);
|
||||
void GetValue(nsString& val, nsIPrincipal&)
|
||||
{
|
||||
GetValue(val);
|
||||
}
|
||||
|
||||
void SetValue(const nsAString& aValue, nsIPrincipal* aTriggeringPrincipal, ErrorResult& aRv);
|
||||
|
||||
bool Specified() const;
|
||||
|
||||
|
@ -70,13 +70,10 @@ public:
|
||||
virtual JSObject* WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
|
||||
|
||||
// nsIContent
|
||||
nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAString& aValue, bool aNotify)
|
||||
{
|
||||
return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
|
||||
}
|
||||
using nsIContent::SetAttr;
|
||||
virtual nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsAtom* aPrefix, const nsAString& aValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override
|
||||
{
|
||||
return NS_OK;
|
||||
|
@ -1297,6 +1297,7 @@ Element::GetAttribute(const nsAString& aName, DOMString& aReturn)
|
||||
void
|
||||
Element::SetAttribute(const nsAString& aName,
|
||||
const nsAString& aValue,
|
||||
nsIPrincipal* aTriggeringPrincipal,
|
||||
ErrorResult& aError)
|
||||
{
|
||||
aError = nsContentUtils::CheckQName(aName, false);
|
||||
@ -1312,12 +1313,12 @@ Element::SetAttribute(const nsAString& aName,
|
||||
aError.Throw(NS_ERROR_OUT_OF_MEMORY);
|
||||
return;
|
||||
}
|
||||
aError = SetAttr(kNameSpaceID_None, nameAtom, aValue, true);
|
||||
aError = SetAttr(kNameSpaceID_None, nameAtom, aValue, aTriggeringPrincipal, true);
|
||||
return;
|
||||
}
|
||||
|
||||
aError = SetAttr(name->NamespaceID(), name->LocalName(), name->GetPrefix(),
|
||||
aValue, true);
|
||||
aValue, aTriggeringPrincipal, true);
|
||||
}
|
||||
|
||||
void
|
||||
@ -1393,6 +1394,7 @@ void
|
||||
Element::SetAttributeNS(const nsAString& aNamespaceURI,
|
||||
const nsAString& aQualifiedName,
|
||||
const nsAString& aValue,
|
||||
nsIPrincipal* aTriggeringPrincipal,
|
||||
ErrorResult& aError)
|
||||
{
|
||||
RefPtr<mozilla::dom::NodeInfo> ni;
|
||||
@ -1406,7 +1408,7 @@ Element::SetAttributeNS(const nsAString& aNamespaceURI,
|
||||
}
|
||||
|
||||
aError = SetAttr(ni->NamespaceID(), ni->NameAtom(), ni->GetPrefixAtom(),
|
||||
aValue, true);
|
||||
aValue, aTriggeringPrincipal, true);
|
||||
}
|
||||
|
||||
void
|
||||
@ -2462,6 +2464,7 @@ Element::SetSingleClassFromParser(nsAtom* aSingleClassName)
|
||||
nullptr, // prefix
|
||||
nullptr, // old value
|
||||
value,
|
||||
nullptr,
|
||||
static_cast<uint8_t>(nsIDOMMutationEvent::ADDITION),
|
||||
false, // hasListeners
|
||||
false, // notify
|
||||
@ -2473,6 +2476,7 @@ Element::SetSingleClassFromParser(nsAtom* aSingleClassName)
|
||||
nsresult
|
||||
Element::SetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
nsAtom* aPrefix, const nsAString& aValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
// Keep this in sync with SetParsedAttr below and SetSingleClassFromParser
|
||||
@ -2532,7 +2536,8 @@ Element::SetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
|
||||
return SetAttrAndNotify(aNamespaceID, aName, aPrefix,
|
||||
oldValueSet ? &oldValue : nullptr,
|
||||
attrValue, modType, hasListeners, aNotify,
|
||||
attrValue, aSubjectPrincipal, modType,
|
||||
hasListeners, aNotify,
|
||||
kCallAfterSetAttr, document, updateBatch);
|
||||
}
|
||||
|
||||
@ -2577,7 +2582,7 @@ Element::SetParsedAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
mozAutoDocUpdate updateBatch(document, UPDATE_CONTENT_MODEL, aNotify);
|
||||
return SetAttrAndNotify(aNamespaceID, aName, aPrefix,
|
||||
oldValueSet ? &oldValue : nullptr,
|
||||
aParsedValue, modType, hasListeners, aNotify,
|
||||
aParsedValue, nullptr, modType, hasListeners, aNotify,
|
||||
kCallAfterSetAttr, document, updateBatch);
|
||||
}
|
||||
|
||||
@ -2587,6 +2592,7 @@ Element::SetAttrAndNotify(int32_t aNamespaceID,
|
||||
nsAtom* aPrefix,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsAttrValue& aParsedValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
uint8_t aModType,
|
||||
bool aFireMutation,
|
||||
bool aNotify,
|
||||
@ -2689,7 +2695,7 @@ Element::SetAttrAndNotify(int32_t aNamespaceID,
|
||||
|
||||
if (aCallAfterSetAttr) {
|
||||
rv = AfterSetAttr(aNamespaceID, aName, &valueForAfterSetAttr, oldValue,
|
||||
aNotify);
|
||||
aSubjectPrincipal, aNotify);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (aNamespaceID == kNameSpaceID_None && aName == nsGkAtoms::dir) {
|
||||
@ -2982,7 +2988,7 @@ Element::UnsetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
}
|
||||
|
||||
rv = AfterSetAttr(aNameSpaceID, aName, nullptr, &oldValue, aNotify);
|
||||
rv = AfterSetAttr(aNameSpaceID, aName, nullptr, &oldValue, nullptr, aNotify);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
UpdateState(aNotify);
|
||||
|
@ -691,12 +691,7 @@ public:
|
||||
already_AddRefed<mozilla::dom::NodeInfo>
|
||||
GetExistingAttrNameFromQName(const nsAString& aStr) const;
|
||||
|
||||
MOZ_ALWAYS_INLINE // Avoid a crashy hook from Avast 10 Beta (Bug 1058131)
|
||||
nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAString& aValue, bool aNotify)
|
||||
{
|
||||
return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
|
||||
}
|
||||
using nsIContent::SetAttr;
|
||||
|
||||
/**
|
||||
* Helper for SetAttr/SetParsedAttr. This method will return true if aNotify
|
||||
@ -758,7 +753,8 @@ public:
|
||||
nsresult SetSingleClassFromParser(nsAtom* aSingleClassName);
|
||||
|
||||
virtual nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aName, nsAtom* aPrefix,
|
||||
const nsAString& aValue, bool aNotify) override;
|
||||
const nsAString& aValue, nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
// aParsedValue receives the old value of the attribute. That's useful if
|
||||
// either the input or output value of aParsedValue is StoresOwnData.
|
||||
nsresult SetParsedAttr(int32_t aNameSpaceID, nsAtom* aName, nsAtom* aPrefix,
|
||||
@ -929,11 +925,18 @@ public:
|
||||
const nsAString& aLocalName,
|
||||
nsAString& aReturn);
|
||||
void SetAttribute(const nsAString& aName, const nsAString& aValue,
|
||||
ErrorResult& aError);
|
||||
nsIPrincipal* aTriggeringPrincipal, ErrorResult& aError);
|
||||
void SetAttributeNS(const nsAString& aNamespaceURI,
|
||||
const nsAString& aLocalName,
|
||||
const nsAString& aValue,
|
||||
nsIPrincipal* aTriggeringPrincipal,
|
||||
ErrorResult& aError);
|
||||
void SetAttribute(const nsAString& aName, const nsAString& aValue,
|
||||
ErrorResult& aError)
|
||||
{
|
||||
SetAttribute(aName, aValue, nullptr, aError);
|
||||
}
|
||||
|
||||
void RemoveAttribute(const nsAString& aName,
|
||||
ErrorResult& aError);
|
||||
void RemoveAttributeNS(const nsAString& aNamespaceURI,
|
||||
@ -1399,6 +1402,11 @@ public:
|
||||
aError = SetAttr(kNameSpaceID_None, aAttr, aValue, true);
|
||||
}
|
||||
|
||||
void SetAttr(nsAtom* aAttr, const nsAString& aValue, nsIPrincipal& aTriggeringPrincipal, ErrorResult& aError)
|
||||
{
|
||||
aError = nsIContent::SetAttr(kNameSpaceID_None, aAttr, aValue, &aTriggeringPrincipal, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a content attribute via a reflecting nullable string IDL
|
||||
* attribute (e.g. a CORS attribute). If DOMStringIsNull(aValue),
|
||||
@ -1478,6 +1486,14 @@ protected:
|
||||
* @param aParsedValue parsed new value of attribute. Replaced by the
|
||||
* old value of the attribute. This old value is only
|
||||
* useful if either it or the new value is StoresOwnData.
|
||||
* @param aMaybeScriptedPrincipal
|
||||
* the principal of the scripted caller responsible for
|
||||
* setting the attribute, or null if no scripted caller
|
||||
* can be determined. A null value here does not
|
||||
* guarantee that there is no scripted caller, but a
|
||||
* non-null value does guarantee that a scripted caller
|
||||
* with the given principal is directly responsible for
|
||||
* the attribute change.
|
||||
* @param aModType nsIDOMMutationEvent::MODIFICATION or ADDITION. Only
|
||||
* needed if aFireMutation or aNotify is true.
|
||||
* @param aFireMutation should mutation-events be fired?
|
||||
@ -1490,6 +1506,7 @@ protected:
|
||||
nsAtom* aPrefix,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsAttrValue& aParsedValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
uint8_t aModType,
|
||||
bool aFireMutation,
|
||||
bool aNotify,
|
||||
@ -1579,13 +1596,21 @@ protected:
|
||||
* the attr was not previously set. This argument may not have the
|
||||
* correct value for SVG elements, or other cases in which the
|
||||
* attribute value doesn't store its own data
|
||||
* @param aMaybeScriptedPrincipal the principal of the scripted caller
|
||||
* responsible for setting the attribute, or null if no scripted caller
|
||||
* can be determined, or the attribute is being unset. A null value
|
||||
* here does not guarantee that there is no scripted caller, but a
|
||||
* non-null value does guarantee that a scripted caller with the given
|
||||
* principal is directly responsible for the attribute change.
|
||||
* @param aNotify Whether we plan to notify document observers.
|
||||
*/
|
||||
// Note that this is inlined so that when subclasses call it it gets
|
||||
// inlined. Those calls don't go through a vtable.
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
@ -1968,7 +1993,7 @@ NS_IMETHOD SetAttribute(const nsAString& name, \
|
||||
const nsAString& value) override \
|
||||
{ \
|
||||
mozilla::ErrorResult rv; \
|
||||
Element::SetAttribute(name, value, rv); \
|
||||
Element::SetAttribute(name, value, nullptr, rv); \
|
||||
return rv.StealNSResult(); \
|
||||
} \
|
||||
using Element::HasAttribute; \
|
||||
|
@ -639,6 +639,7 @@ nsGenericDOMDataNode::GetChildren(uint32_t aFilter)
|
||||
nsresult
|
||||
nsGenericDOMDataNode::SetAttr(int32_t aNameSpaceID, nsAtom* aAttr,
|
||||
nsAtom* aPrefix, const nsAString& aValue,
|
||||
nsIPrincipal* aContentPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
return NS_OK;
|
||||
|
@ -127,13 +127,10 @@ public:
|
||||
virtual already_AddRefed<nsINodeList> GetChildren(uint32_t aFilter) override;
|
||||
|
||||
|
||||
nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAString& aValue, bool aNotify)
|
||||
{
|
||||
return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
|
||||
}
|
||||
using nsIContent::SetAttr;
|
||||
virtual nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aAttribute,
|
||||
nsAtom* aPrefix, const nsAString& aValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsAtom* aAttribute,
|
||||
bool aNotify) override;
|
||||
|
@ -373,6 +373,16 @@ public:
|
||||
{
|
||||
return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
|
||||
}
|
||||
nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aName, nsAtom* aPrefix,
|
||||
const nsAString& aValue, bool aNotify)
|
||||
{
|
||||
return SetAttr(aNameSpaceID, aName, aPrefix, aValue, nullptr, aNotify);
|
||||
}
|
||||
nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aName, const nsAString& aValue,
|
||||
nsIPrincipal* aTriggeringPrincipal, bool aNotify)
|
||||
{
|
||||
return SetAttr(aNameSpaceID, aName, nullptr, aValue, aTriggeringPrincipal, aNotify);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set attribute values. All attribute values are assumed to have a
|
||||
@ -385,11 +395,18 @@ public:
|
||||
* @param aName the name of the attribute
|
||||
* @param aPrefix the prefix of the attribute
|
||||
* @param aValue the value to set
|
||||
* @param aMaybeScriptedPrincipal the principal of the scripted caller responsible
|
||||
* for setting the attribute, or null if no scripted caller can be
|
||||
* determined. A null value here does not guarantee that there is no
|
||||
* scripted caller, but a non-null value does guarantee that a scripted
|
||||
* caller with the given principal is directly responsible for the
|
||||
* attribute change.
|
||||
* @param aNotify specifies how whether or not the document should be
|
||||
* notified of the attribute change.
|
||||
*/
|
||||
virtual nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsAtom* aPrefix, const nsAString& aValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify) = 0;
|
||||
|
||||
/**
|
||||
|
@ -109,7 +109,8 @@ nsStyledElement::SetInlineStyleDeclaration(DeclarationBlock* aDeclaration,
|
||||
nsIDocument* document = GetComposedDoc();
|
||||
mozAutoDocUpdate updateBatch(document, UPDATE_CONTENT_MODEL, aNotify);
|
||||
return SetAttrAndNotify(kNameSpaceID_None, nsGkAtoms::style, nullptr,
|
||||
oldValueSet ? &oldValue : nullptr, attrValue, modType,
|
||||
oldValueSet ? &oldValue : nullptr, attrValue,
|
||||
nullptr, modType,
|
||||
hasListeners, aNotify, kDontCallAfterSetAttr,
|
||||
document, updateBatch);
|
||||
}
|
||||
|
@ -315,7 +315,9 @@ HTMLAnchorElement::BeforeSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
nsresult
|
||||
HTMLAnchorElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNamespaceID == kNameSpaceID_None) {
|
||||
if (aName == nsGkAtoms::href) {
|
||||
@ -327,7 +329,7 @@ HTMLAnchorElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
EventStates
|
||||
|
@ -69,6 +69,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
|
||||
|
@ -120,7 +120,9 @@ HTMLAreaElement::UnbindFromTree(bool aDeep, bool aNullParent)
|
||||
nsresult
|
||||
HTMLAreaElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNamespaceID == kNameSpaceID_None) {
|
||||
// This must happen after the attribute is set. We will need the updated
|
||||
@ -133,7 +135,7 @@ HTMLAreaElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -202,6 +202,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
RefPtr<nsDOMTokenList > mRelList;
|
||||
|
@ -340,11 +340,13 @@ HTMLBodyElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
|
||||
nsresult
|
||||
HTMLBodyElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
nsresult rv = nsGenericHTMLElement::AfterSetAttr(aNameSpaceID,
|
||||
aName, aValue, aOldValue,
|
||||
aNotify);
|
||||
aSubjectPrincipal, aNotify);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
// if the last mapped attribute was removed, don't clear the
|
||||
// nsMappedAttributes, our style can still depend on the containing frame element
|
||||
|
@ -145,6 +145,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
protected:
|
||||
|
@ -412,7 +412,9 @@ HTMLButtonElement::BeforeSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsresult
|
||||
HTMLButtonElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None) {
|
||||
if (aName == nsGkAtoms::type) {
|
||||
@ -436,7 +438,7 @@ HTMLButtonElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
|
||||
return nsGenericHTMLFormElementWithState::AfterSetAttr(aNameSpaceID, aName,
|
||||
aValue, aOldValue,
|
||||
aNotify);
|
||||
aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -84,6 +84,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual bool ParseAttribute(int32_t aNamespaceID,
|
||||
nsAtom* aAttribute,
|
||||
|
@ -460,12 +460,14 @@ HTMLCanvasElement::GetWidthHeight()
|
||||
nsresult
|
||||
HTMLCanvasElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -363,6 +363,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValueOrString& aValue,
|
||||
|
@ -209,7 +209,9 @@ IsValidContentSelectors(nsCSSSelector* aSelector)
|
||||
nsresult
|
||||
HTMLContentElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNamespaceID == kNameSpaceID_None && aName == nsGkAtoms::select) {
|
||||
if (aValue) {
|
||||
@ -263,7 +265,7 @@ HTMLContentElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -92,6 +92,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
/**
|
||||
|
@ -135,6 +135,7 @@ nsresult
|
||||
HTMLEmbedElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aValue) {
|
||||
@ -143,7 +144,7 @@ HTMLEmbedElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -135,6 +135,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValueOrString& aValue,
|
||||
|
@ -70,7 +70,9 @@ HTMLFieldSetElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
|
||||
nsresult
|
||||
HTMLFieldSetElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::disabled) {
|
||||
// This *has* to be called *before* calling FieldSetDisabledChanged on our
|
||||
@ -92,7 +94,8 @@ HTMLFieldSetElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLFormElement::AfterSetAttr(aNameSpaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue,
|
||||
aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -38,6 +38,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
virtual nsresult InsertChildAt(nsIContent* aChild, uint32_t aIndex,
|
||||
|
@ -211,7 +211,9 @@ HTMLFormElement::BeforeSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
nsresult
|
||||
HTMLFormElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aName == nsGkAtoms::novalidate && aNameSpaceID == kNameSpaceID_None) {
|
||||
// Update all form elements states because they might be [no longer]
|
||||
@ -228,7 +230,7 @@ HTMLFormElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
NS_IMPL_STRING_ATTR(HTMLFormElement, AcceptCharset, acceptcharset)
|
||||
|
@ -113,6 +113,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
/**
|
||||
|
@ -136,7 +136,9 @@ HTMLIFrameElement::GetAttributeMappingFunction() const
|
||||
nsresult
|
||||
HTMLIFrameElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
AfterMaybeChangeAttr(aNameSpaceID, aName, aNotify);
|
||||
|
||||
@ -150,8 +152,10 @@ HTMLIFrameElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
}
|
||||
}
|
||||
return nsGenericHTMLFrameElement::AfterSetAttr(aNameSpaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
return nsGenericHTMLFrameElement::AfterSetAttr(aNameSpaceID, aName,
|
||||
aValue, aOldValue,
|
||||
aMaybeScriptedPrincipal,
|
||||
aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -195,6 +195,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValueOrString& aValue,
|
||||
|
@ -318,13 +318,15 @@ HTMLImageElement::BeforeSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsresult
|
||||
HTMLImageElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
nsAttrValueOrString attrVal(aValue);
|
||||
|
||||
if (aValue) {
|
||||
AfterMaybeChangeAttr(aNameSpaceID, aName, attrVal, aOldValue, true,
|
||||
aNotify);
|
||||
AfterMaybeChangeAttr(aNameSpaceID, aName, attrVal, aOldValue,
|
||||
aMaybeScriptedPrincipal, true, aNotify);
|
||||
}
|
||||
|
||||
if (aNameSpaceID == kNameSpaceID_None && mForm &&
|
||||
@ -377,7 +379,9 @@ HTMLImageElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue,
|
||||
aMaybeScriptedPrincipal,
|
||||
aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
@ -385,7 +389,7 @@ HTMLImageElement::OnAttrSetButNotChanged(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValueOrString& aValue,
|
||||
bool aNotify)
|
||||
{
|
||||
AfterMaybeChangeAttr(aNamespaceID, aName, aValue, nullptr, false, aNotify);
|
||||
AfterMaybeChangeAttr(aNamespaceID, aName, aValue, nullptr, nullptr, false, aNotify);
|
||||
|
||||
return nsGenericHTMLElement::OnAttrSetButNotChanged(aNamespaceID, aName,
|
||||
aValue, aNotify);
|
||||
@ -395,6 +399,7 @@ void
|
||||
HTMLImageElement::AfterMaybeChangeAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValueOrString& aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aValueMaybeChanged, bool aNotify)
|
||||
{
|
||||
bool forceReload = false;
|
||||
|
@ -379,6 +379,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValueOrString& aValue,
|
||||
@ -420,6 +421,7 @@ private:
|
||||
void AfterMaybeChangeAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValueOrString& aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aValueMaybeChanged, bool aNotify);
|
||||
|
||||
bool mInDocResponsiveContent;
|
||||
|
@ -1376,7 +1376,9 @@ HTMLInputElement::BeforeSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsresult
|
||||
HTMLInputElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None) {
|
||||
//
|
||||
@ -1520,6 +1522,7 @@ HTMLInputElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
|
||||
return nsGenericHTMLFormElementWithState::AfterSetAttr(aNameSpaceID, aName,
|
||||
aValue, aOldValue,
|
||||
aSubjectPrincipal,
|
||||
aNotify);
|
||||
}
|
||||
|
||||
|
@ -1075,6 +1075,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
virtual void BeforeSetForm(bool aBindToTree) override;
|
||||
|
@ -267,7 +267,9 @@ HTMLLinkElement::BeforeSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsresult
|
||||
HTMLLinkElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
// It's safe to call ResetLinkState here because our new attr value has
|
||||
// already been set or unset. ResetLinkState needs the updated attribute
|
||||
@ -338,7 +340,7 @@ HTMLLinkElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -60,6 +60,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual bool IsLink(nsIURI** aURI) const override;
|
||||
virtual already_AddRefed<nsIURI> GetHrefURI() const override;
|
||||
|
@ -4449,7 +4449,9 @@ int32_t HTMLMediaElement::TabIndexDefault()
|
||||
nsresult
|
||||
HTMLMediaElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None) {
|
||||
if (aName == nsGkAtoms::src) {
|
||||
@ -4495,7 +4497,9 @@ HTMLMediaElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue,
|
||||
aMaybeScriptedPrincipal,
|
||||
aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -1332,6 +1332,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValueOrString& aValue,
|
||||
|
@ -108,7 +108,9 @@ HTMLMenuElement::Build(nsIMenuBuilder* aBuilder)
|
||||
nsresult
|
||||
HTMLMenuElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::type) {
|
||||
if (aValue) {
|
||||
@ -119,7 +121,7 @@ HTMLMenuElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -28,6 +28,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual bool ParseAttribute(int32_t aNamespaceID,
|
||||
nsAtom* aAttribute,
|
||||
|
@ -375,7 +375,9 @@ HTMLMenuItemElement::GetText(nsAString& aText)
|
||||
nsresult
|
||||
HTMLMenuItemElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None) {
|
||||
// Handle type changes first, since some of the later conditions in this
|
||||
@ -409,7 +411,7 @@ HTMLMenuItemElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -128,6 +128,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
void WalkRadioGroup(Visitor* aVisitor);
|
||||
|
@ -55,7 +55,9 @@ HTMLMetaElement::SetMetaReferrer(nsIDocument* aDocument)
|
||||
nsresult
|
||||
HTMLMetaElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None) {
|
||||
nsIDocument *document = GetUncomposedDoc();
|
||||
@ -77,7 +79,7 @@ HTMLMetaElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -30,6 +30,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
void CreateAndDispatchEvent(nsIDocument* aDoc, const nsAString& aEventName);
|
||||
|
@ -283,13 +283,15 @@ HTMLObjectElement::UnbindFromTree(bool aDeep,
|
||||
nsresult
|
||||
HTMLObjectElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
nsresult rv = AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return nsGenericHTMLFormElement::AfterSetAttr(aNamespaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -253,6 +253,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValueOrString& aValue,
|
||||
|
@ -98,7 +98,9 @@ HTMLOptGroupElement::RemoveChildAt(uint32_t aIndex, bool aNotify)
|
||||
nsresult
|
||||
HTMLOptGroupElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::disabled) {
|
||||
|
||||
@ -127,7 +129,7 @@ HTMLOptGroupElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
JSObject*
|
||||
|
@ -39,6 +39,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
virtual nsIDOMNode* AsDOMNode() override { return this; }
|
||||
|
@ -265,7 +265,9 @@ HTMLOptionElement::BeforeSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
nsresult
|
||||
HTMLOptionElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None) {
|
||||
if (aName == nsGkAtoms::disabled) {
|
||||
@ -284,7 +286,7 @@ HTMLOptionElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -58,6 +58,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
void SetSelectedInternal(bool aValue, bool aNotify);
|
||||
|
@ -235,13 +235,17 @@ HTMLScriptElement::SetNoModule(bool aValue, ErrorResult& aRv)
|
||||
nsresult
|
||||
HTMLScriptElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (nsGkAtoms::async == aName && kNameSpaceID_None == aNamespaceID) {
|
||||
mForceAsync = false;
|
||||
}
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName,
|
||||
aValue, aOldValue,
|
||||
aMaybeScriptedPrincipal,
|
||||
aNotify);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -59,6 +59,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
// WebIDL
|
||||
|
@ -1316,7 +1316,9 @@ HTMLSelectElement::BeforeSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsresult
|
||||
HTMLSelectElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None) {
|
||||
if (aName == nsGkAtoms::disabled) {
|
||||
@ -1349,6 +1351,7 @@ HTMLSelectElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
|
||||
return nsGenericHTMLFormElementWithState::AfterSetAttr(aNameSpaceID, aName,
|
||||
aValue, aOldValue,
|
||||
aSubjectPrincipal,
|
||||
aNotify);
|
||||
}
|
||||
|
||||
|
@ -386,6 +386,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
virtual void DoneAddingChildren(bool aHaveNotified) override;
|
||||
|
@ -228,7 +228,9 @@ SetBaseTargetUsingFirstBaseWithTarget(nsIDocument* aDocument,
|
||||
nsresult
|
||||
HTMLSharedElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNamespaceID == kNameSpaceID_None) {
|
||||
if (aName == nsGkAtoms::href) {
|
||||
@ -252,7 +254,7 @@ HTMLSharedElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -167,6 +167,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
};
|
||||
|
||||
|
@ -96,7 +96,9 @@ HTMLSourceElement::UpdateMediaList(const nsAttrValue* aValue)
|
||||
nsresult
|
||||
HTMLSourceElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
// If we are associated with a <picture> with a valid <img>, notify it of
|
||||
// responsive parameter changes
|
||||
@ -141,7 +143,9 @@ HTMLSourceElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue,
|
||||
aMaybeScriptedPrincipal,
|
||||
aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -113,6 +113,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
private:
|
||||
|
@ -143,7 +143,9 @@ HTMLStyleElement::UnbindFromTree(bool aDeep, bool aNullParent)
|
||||
nsresult
|
||||
HTMLStyleElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None) {
|
||||
if (aName == nsGkAtoms::title ||
|
||||
@ -158,7 +160,7 @@ HTMLStyleElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
@ -44,6 +44,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult,
|
||||
|
@ -1196,13 +1196,15 @@ HTMLTableElement::BeforeSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsresult
|
||||
HTMLTableElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aName == nsGkAtoms::cellpadding && aNameSpaceID == kNameSpaceID_None) {
|
||||
BuildInheritedAttributes();
|
||||
}
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
|
@ -209,6 +209,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLTableElement,
|
||||
|
@ -1072,7 +1072,9 @@ HTMLTextAreaElement::ContentChanged(nsIContent* aContent)
|
||||
nsresult
|
||||
HTMLTextAreaElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None) {
|
||||
if (aName == nsGkAtoms::required || aName == nsGkAtoms::disabled ||
|
||||
@ -1105,7 +1107,7 @@ HTMLTextAreaElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLFormElementWithState::AfterSetAttr(aNameSpaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -371,6 +371,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom *aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
/**
|
||||
|
@ -699,7 +699,9 @@ nsGenericHTMLElement::BeforeSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
nsresult
|
||||
nsGenericHTMLElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNamespaceID == kNameSpaceID_None) {
|
||||
if (IsEventAttributeName(aName) && aValue) {
|
||||
@ -790,7 +792,9 @@ nsGenericHTMLElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElementBase::AfterSetAttr(aNamespaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue,
|
||||
aMaybeScriptedPrincipal,
|
||||
aNotify);
|
||||
}
|
||||
|
||||
EventListenerManager*
|
||||
@ -1995,7 +1999,9 @@ nsGenericHTMLFormElement::BeforeSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsresult
|
||||
nsGenericHTMLFormElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNameSpaceID == kNameSpaceID_None) {
|
||||
// add the control to the hashtable as needed
|
||||
@ -2044,7 +2050,9 @@ nsGenericHTMLFormElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue,
|
||||
aMaybeScriptedPrincipal,
|
||||
aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -764,6 +764,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
virtual mozilla::EventListenerManager*
|
||||
@ -809,6 +810,10 @@ protected:
|
||||
{
|
||||
mozilla::dom::Element::SetAttr(aName, aValue, aError);
|
||||
}
|
||||
void SetHTMLAttr(nsAtom* aName, const nsAString& aValue, nsIPrincipal& aTriggeringPrincipal, mozilla::ErrorResult& aError)
|
||||
{
|
||||
mozilla::dom::Element::SetAttr(aName, aValue, aTriggeringPrincipal, aError);
|
||||
}
|
||||
void UnsetHTMLAttr(nsAtom* aName, mozilla::ErrorResult& aError)
|
||||
{
|
||||
mozilla::dom::Element::UnsetAttr(aName, aError);
|
||||
@ -1137,6 +1142,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aMaybeScriptedPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
virtual void BeforeSetForm(bool aBindToTree) {}
|
||||
|
@ -331,7 +331,9 @@ PrincipalAllowsBrowserFrame(nsIPrincipal* aPrincipal)
|
||||
/* virtual */ nsresult
|
||||
nsGenericHTMLFrameElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aValue) {
|
||||
nsAttrValueOrString value(aValue);
|
||||
@ -370,7 +372,7 @@ nsGenericHTMLFrameElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -103,6 +103,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValueOrString& aValue,
|
||||
|
@ -1085,7 +1085,9 @@ nsMathMLElement::GetHrefURI() const
|
||||
nsresult
|
||||
nsMathMLElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
// It is important that this be done after the attribute is set/unset.
|
||||
// We will need the updated attribute value because notifying the document
|
||||
@ -1103,7 +1105,7 @@ nsMathMLElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsMathMLElementBase::AfterSetAttr(aNameSpaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
JSObject*
|
||||
|
@ -111,6 +111,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
private:
|
||||
|
@ -335,10 +335,11 @@ SVGAElement::IntrinsicState() const
|
||||
nsresult
|
||||
SVGAElement::SetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsAtom* aPrefix, const nsAString& aValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
nsresult rv = SVGAElementBase::SetAttr(aNameSpaceID, aName, aPrefix,
|
||||
aValue, aNotify);
|
||||
aValue, aSubjectPrincipal, aNotify);
|
||||
|
||||
// The ordering of the parent class's SetAttr call and Link::ResetLinkState
|
||||
// is important here! The attribute is not set until SetAttr returns, and
|
||||
|
@ -56,13 +56,10 @@ public:
|
||||
virtual void GetLinkTarget(nsAString& aTarget) override;
|
||||
virtual already_AddRefed<nsIURI> GetHrefURI() const override;
|
||||
virtual EventStates IntrinsicState() const override;
|
||||
nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAString& aValue, bool aNotify)
|
||||
{
|
||||
return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
|
||||
}
|
||||
using nsIContent::SetAttr;
|
||||
virtual nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsAtom* aPrefix, const nsAString& aValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsAtom* aAttribute,
|
||||
bool aNotify) override;
|
||||
|
@ -284,11 +284,13 @@ SVGAnimationElement::ParseAttribute(int32_t aNamespaceID,
|
||||
nsresult
|
||||
SVGAnimationElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
nsresult rv =
|
||||
SVGAnimationElementBase::AfterSetAttr(aNamespaceID, aName, aValue,
|
||||
aOldValue, aNotify);
|
||||
aOldValue, aSubjectPrincipal, aNotify);
|
||||
|
||||
if (SVGTests::IsConditionalProcessingAttribute(aName)) {
|
||||
bool isDisabled = !SVGTests::PassesConditionalProcessingTests();
|
||||
|
@ -61,6 +61,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
const nsAttrValue* GetAnimAttr(nsAtom* aName) const;
|
||||
|
@ -124,7 +124,9 @@ SVGFEImageElement::IsAttributeMapped(const nsAtom* name) const
|
||||
nsresult
|
||||
SVGFEImageElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aName == nsGkAtoms::href &&
|
||||
(aNamespaceID == kNameSpaceID_XLink ||
|
||||
@ -138,7 +140,9 @@ SVGFEImageElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return SVGFEImageElementBase::AfterSetAttr(aNamespaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue,
|
||||
aSubjectPrincipal,
|
||||
aNotify);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -61,6 +61,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
|
||||
nsIContent* aBindingParent,
|
||||
|
@ -37,7 +37,9 @@ SVGGeometryElement::GetNumberInfo()
|
||||
nsresult
|
||||
SVGGeometryElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (mCachedPath &&
|
||||
aNamespaceID == kNameSpaceID_None &&
|
||||
@ -45,7 +47,9 @@ SVGGeometryElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
mCachedPath = nullptr;
|
||||
}
|
||||
return SVGGeometryElementBase::AfterSetAttr(aNamespaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue,
|
||||
aSubjectPrincipal,
|
||||
aNotify);
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -54,6 +54,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
/**
|
||||
|
@ -156,7 +156,9 @@ SVGImageElement::AsyncEventRunning(AsyncEventDispatcher* aEvent)
|
||||
nsresult
|
||||
SVGImageElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aName == nsGkAtoms::href &&
|
||||
(aNamespaceID == kNameSpaceID_None ||
|
||||
@ -169,7 +171,8 @@ SVGImageElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
}
|
||||
}
|
||||
return SVGImageElementBase::AfterSetAttr(aNamespaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue,
|
||||
aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -48,6 +48,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
|
||||
nsIContent* aBindingParent,
|
||||
|
@ -234,7 +234,9 @@ SVGScriptElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
|
||||
nsresult
|
||||
SVGScriptElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if ((aNamespaceID == kNameSpaceID_XLink ||
|
||||
aNamespaceID == kNameSpaceID_None) &&
|
||||
@ -242,7 +244,8 @@ SVGScriptElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
MaybeProcessScript();
|
||||
}
|
||||
return SVGScriptElementBase::AfterSetAttr(aNamespaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue,
|
||||
aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -57,6 +57,7 @@ public:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual bool ParseAttribute(int32_t aNamespaceID,
|
||||
nsAtom* aAttribute,
|
||||
|
@ -92,10 +92,11 @@ SVGStyleElement::UnbindFromTree(bool aDeep, bool aNullParent)
|
||||
nsresult
|
||||
SVGStyleElement::SetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsAtom* aPrefix, const nsAString& aValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
nsresult rv = SVGStyleElementBase::SetAttr(aNameSpaceID, aName, aPrefix,
|
||||
aValue, aNotify);
|
||||
aValue, aSubjectPrincipal, aNotify);
|
||||
if (NS_SUCCEEDED(rv) && aNameSpaceID == kNameSpaceID_None) {
|
||||
if (aName == nsGkAtoms::title ||
|
||||
aName == nsGkAtoms::media ||
|
||||
|
@ -44,13 +44,10 @@ public:
|
||||
bool aCompileEventHandlers) override;
|
||||
virtual void UnbindFromTree(bool aDeep = true,
|
||||
bool aNullParent = true) override;
|
||||
nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
const nsAString& aValue, bool aNotify)
|
||||
{
|
||||
return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
|
||||
}
|
||||
using nsIContent::SetAttr;
|
||||
virtual nsresult SetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
nsAtom* aPrefix, const nsAString& aValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsAtom* aAttribute,
|
||||
bool aNotify) override;
|
||||
|
@ -301,7 +301,9 @@ nsSVGElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
|
||||
nsresult
|
||||
nsSVGElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
// We don't currently use nsMappedAttributes within SVG. If this changes, we
|
||||
// need to be very careful because some nsAttrValues used by SVG point to
|
||||
@ -332,7 +334,7 @@ nsSVGElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsSVGElementBase::AfterSetAttr(aNamespaceID, aName, aValue, aOldValue,
|
||||
aNotify);
|
||||
aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
bool
|
||||
@ -1495,7 +1497,7 @@ nsSVGElement::DidChangeValue(nsAtom* aName,
|
||||
// attribute, but currently SVG elements do not even use the old attribute
|
||||
// value in |AfterSetAttr|, so this should be ok.
|
||||
SetAttrAndNotify(kNameSpaceID_None, aName, nullptr, &aEmptyOrOldValue,
|
||||
aNewValue, modType, hasListeners, kNotifyDocumentObservers,
|
||||
aNewValue, nullptr, modType, hasListeners, kNotifyDocumentObservers,
|
||||
kCallAfterSetAttr, document, updateBatch);
|
||||
}
|
||||
|
||||
|
@ -351,6 +351,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
virtual bool ParseAttribute(int32_t aNamespaceID, nsAtom* aAttribute,
|
||||
const nsAString& aValue, nsAttrValue& aResult) override;
|
||||
|
@ -42,7 +42,7 @@ interface AnonymousContent {
|
||||
* Set the value of an attribute of an element inside this custom anonymous
|
||||
* content.
|
||||
*/
|
||||
[Throws]
|
||||
[NeedsSubjectPrincipal, Throws]
|
||||
void setAttributeForElement(DOMString elementId,
|
||||
DOMString attributeName,
|
||||
DOMString value);
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
interface Attr : Node {
|
||||
readonly attribute DOMString localName;
|
||||
[CEReactions, SetterThrows]
|
||||
[CEReactions, NeedsSubjectPrincipal, SetterThrows]
|
||||
attribute DOMString value;
|
||||
|
||||
[Constant]
|
||||
|
@ -40,9 +40,9 @@ interface Element : Node {
|
||||
DOMString? getAttribute(DOMString name);
|
||||
[Pure]
|
||||
DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
|
||||
[CEReactions, Throws]
|
||||
[CEReactions, NeedsSubjectPrincipal, Throws]
|
||||
void setAttribute(DOMString name, DOMString value);
|
||||
[CEReactions, Throws]
|
||||
[CEReactions, NeedsSubjectPrincipal, Throws]
|
||||
void setAttributeNS(DOMString? namespace, DOMString name, DOMString value);
|
||||
[CEReactions, Throws]
|
||||
void removeAttribute(DOMString name);
|
||||
|
@ -1030,7 +1030,9 @@ nsXULElement::BeforeSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
nsresult
|
||||
nsXULElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue, bool aNotify)
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify)
|
||||
{
|
||||
if (aNamespaceID == kNameSpaceID_None) {
|
||||
if (aValue) {
|
||||
@ -1151,7 +1153,7 @@ nsXULElement::AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
}
|
||||
|
||||
return nsStyledElement::AfterSetAttr(aNamespaceID, aName,
|
||||
aValue, aOldValue, aNotify);
|
||||
aValue, aOldValue, aSubjectPrincipal, aNotify);
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -744,6 +744,7 @@ protected:
|
||||
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsAtom* aName,
|
||||
const nsAttrValue* aValue,
|
||||
const nsAttrValue* aOldValue,
|
||||
nsIPrincipal* aSubjectPrincipal,
|
||||
bool aNotify) override;
|
||||
|
||||
virtual void UpdateEditableState(bool aNotify) override;
|
||||
|
Loading…
Reference in New Issue
Block a user