Bug 1406278: Part 7 - Use subject principal as triggering principal in <input> "src" attribute. r=bz
MozReview-Commit-ID: 8DZOwqBrA2i
This commit is contained in:
@@ -1338,18 +1338,6 @@ HTMLInputElement::BeforeSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
mType == NS_FORM_INPUT_RADIO &&
|
||||
(mForm || mDoneCreating)) {
|
||||
WillRemoveFromRadioGroup();
|
||||
} else if (aNotify && aName == nsGkAtoms::src &&
|
||||
mType == NS_FORM_INPUT_IMAGE) {
|
||||
if (aValue) {
|
||||
// Mark channel as urgent-start before load image if the image load is
|
||||
// initaiated by a user interaction.
|
||||
mUseUrgentStartForChannel = EventStateManager::IsHandlingUserInput();
|
||||
|
||||
LoadImage(aValue->String(), true, aNotify, eImageLoadType_Normal);
|
||||
} else {
|
||||
// Null value means the attr got unset; drop the image
|
||||
CancelImageRequests(aNotify);
|
||||
}
|
||||
} else if (aNotify && aName == nsGkAtoms::disabled) {
|
||||
mDisabledChanged = true;
|
||||
} else if (mType == NS_FORM_INPUT_RADIO && aName == nsGkAtoms::required) {
|
||||
@@ -1394,6 +1382,25 @@ HTMLInputElement::AfterSetAttr(int32_t aNameSpaceID, nsAtom* aName,
|
||||
UpdateValueMissingValidityStateForRadio(false);
|
||||
}
|
||||
|
||||
if (aName == nsGkAtoms::src) {
|
||||
mSrcTriggeringPrincipal = nsContentUtils::GetAttrTriggeringPrincipal(
|
||||
this, aValue ? aValue->GetStringValue() : EmptyString(),
|
||||
aSubjectPrincipal);
|
||||
if (aNotify && mType == NS_FORM_INPUT_IMAGE) {
|
||||
if (aValue) {
|
||||
// Mark channel as urgent-start before load image if the image load is
|
||||
// initiated by a user interaction.
|
||||
mUseUrgentStartForChannel = EventStateManager::IsHandlingUserInput();
|
||||
|
||||
LoadImage(aValue->GetStringValue(), true, aNotify, eImageLoadType_Normal,
|
||||
mSrcTriggeringPrincipal);
|
||||
} else {
|
||||
// Null value means the attr got unset; drop the image
|
||||
CancelImageRequests(aNotify);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If @value is changed and BF_VALUE_CHANGED is false, @value is the value
|
||||
// of the element so, if the value of the element is different than @value,
|
||||
// we have to re-set it. This is only the case when GetValueMode() returns
|
||||
@@ -4797,7 +4804,8 @@ HTMLInputElement::MaybeLoadImage()
|
||||
nsAutoString uri;
|
||||
if (mType == NS_FORM_INPUT_IMAGE &&
|
||||
GetAttr(kNameSpaceID_None, nsGkAtoms::src, uri) &&
|
||||
(NS_FAILED(LoadImage(uri, false, true, eImageLoadType_Normal)) ||
|
||||
(NS_FAILED(LoadImage(uri, false, true, eImageLoadType_Normal,
|
||||
mSrcTriggeringPrincipal)) ||
|
||||
!LoadingEnabled())) {
|
||||
CancelImageRequests(true);
|
||||
}
|
||||
@@ -5043,7 +5051,8 @@ HTMLInputElement::HandleTypeChange(uint8_t aNewType, bool aNotify)
|
||||
// initaiated by a user interaction.
|
||||
mUseUrgentStartForChannel = EventStateManager::IsHandlingUserInput();
|
||||
|
||||
LoadImage(src, false, aNotify, eImageLoadType_Normal);
|
||||
LoadImage(src, false, aNotify, eImageLoadType_Normal,
|
||||
mSrcTriggeringPrincipal);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user