mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-17 14:25:49 +00:00
Bug 1792435 - Fix triggering principal set-up for static image requests. r=dlrobertson
That is, for printing. Those don't have an owning request, see the comment on the image principal code. Differential Revision: https://phabricator.services.mozilla.com/D158193
This commit is contained in:
parent
2eb1b8240a
commit
4ec1be44bb
@ -1134,8 +1134,9 @@ already_AddRefed<imgRequestProxy> imgRequestProxy::GetStaticRequest(
|
||||
GetImagePrincipal(getter_AddRefs(currentPrincipal));
|
||||
bool hadCrossOriginRedirects = true;
|
||||
GetHadCrossOriginRedirects(&hadCrossOriginRedirects);
|
||||
nsCOMPtr<nsIPrincipal> triggeringPrincipal = GetTriggeringPrincipal();
|
||||
RefPtr<imgRequestProxy> req = new imgRequestProxyStatic(
|
||||
frozenImage, currentPrincipal, hadCrossOriginRedirects);
|
||||
frozenImage, currentPrincipal, triggeringPrincipal, hadCrossOriginRedirects);
|
||||
req->Init(nullptr, nullptr, aLoadingDocument, mURI, nullptr);
|
||||
|
||||
return req.forget();
|
||||
@ -1256,21 +1257,27 @@ class StaticBehaviour : public ProxyBehaviour {
|
||||
};
|
||||
|
||||
imgRequestProxyStatic::imgRequestProxyStatic(mozilla::image::Image* aImage,
|
||||
nsIPrincipal* aPrincipal,
|
||||
nsIPrincipal* aImagePrincipal,
|
||||
nsIPrincipal* aTriggeringPrincipal,
|
||||
bool aHadCrossOriginRedirects)
|
||||
: mPrincipal(aPrincipal),
|
||||
: mImagePrincipal(aImagePrincipal),
|
||||
mTriggeringPrincipal(aTriggeringPrincipal),
|
||||
mHadCrossOriginRedirects(aHadCrossOriginRedirects) {
|
||||
mBehaviour = mozilla::MakeUnique<StaticBehaviour>(aImage);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
imgRequestProxyStatic::GetImagePrincipal(nsIPrincipal** aPrincipal) {
|
||||
if (!mPrincipal) {
|
||||
if (!mImagePrincipal) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
NS_ADDREF(*aPrincipal = mImagePrincipal);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_ADDREF(*aPrincipal = mPrincipal);
|
||||
|
||||
NS_IMETHODIMP
|
||||
imgRequestProxyStatic::GetTriggeringPrincipal(nsIPrincipal** aPrincipal) {
|
||||
NS_IF_ADDREF(*aPrincipal = mTriggeringPrincipal);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -1284,9 +1291,11 @@ imgRequestProxyStatic::GetHadCrossOriginRedirects(
|
||||
imgRequestProxy* imgRequestProxyStatic::NewClonedProxy() {
|
||||
nsCOMPtr<nsIPrincipal> currentPrincipal;
|
||||
GetImagePrincipal(getter_AddRefs(currentPrincipal));
|
||||
nsCOMPtr<nsIPrincipal> triggeringPrincipal;
|
||||
GetTriggeringPrincipal(getter_AddRefs(triggeringPrincipal));
|
||||
bool hadCrossOriginRedirects = true;
|
||||
GetHadCrossOriginRedirects(&hadCrossOriginRedirects);
|
||||
RefPtr<mozilla::image::Image> image = GetImage();
|
||||
return new imgRequestProxyStatic(image, currentPrincipal,
|
||||
return new imgRequestProxyStatic(image, currentPrincipal, triggeringPrincipal,
|
||||
hadCrossOriginRedirects);
|
||||
}
|
||||
|
@ -235,10 +235,12 @@ NS_DEFINE_STATIC_IID_ACCESSOR(imgRequestProxy, NS_IMGREQUESTPROXY_CID)
|
||||
// certain behaviours must be overridden to compensate.
|
||||
class imgRequestProxyStatic : public imgRequestProxy {
|
||||
public:
|
||||
imgRequestProxyStatic(Image* aImage, nsIPrincipal* aPrincipal,
|
||||
imgRequestProxyStatic(Image* aImage, nsIPrincipal* aImagePrincipal,
|
||||
nsIPrincipal* aTriggeringPrincipal,
|
||||
bool hadCrossOriginRedirects);
|
||||
|
||||
NS_IMETHOD GetImagePrincipal(nsIPrincipal** aPrincipal) override;
|
||||
NS_IMETHOD GetTriggeringPrincipal(nsIPrincipal** aPrincipal) override;
|
||||
|
||||
NS_IMETHOD GetHadCrossOriginRedirects(
|
||||
bool* aHadCrossOriginRedirects) override;
|
||||
@ -248,7 +250,8 @@ class imgRequestProxyStatic : public imgRequestProxy {
|
||||
|
||||
// Our principal. We have to cache it, rather than accessing the underlying
|
||||
// request on-demand, because static proxies don't have an underlying request.
|
||||
nsCOMPtr<nsIPrincipal> mPrincipal;
|
||||
const nsCOMPtr<nsIPrincipal> mImagePrincipal;
|
||||
const nsCOMPtr<nsIPrincipal> mTriggeringPrincipal;
|
||||
const bool mHadCrossOriginRedirects;
|
||||
};
|
||||
|
||||
|
@ -0,0 +1,5 @@
|
||||
<!doctype html>
|
||||
<title>Printing animated image</title>
|
||||
<link rel="help" href="https://html.spec.whatwg.org/#the-img-element">
|
||||
<link rel="mismatch" href="/css/reference/blank.html">
|
||||
<img style="image-orientation: none" src="/images/anim-gr.gif">
|
@ -0,0 +1,5 @@
|
||||
<!doctype html>
|
||||
<title>Printing animated image</title>
|
||||
<link rel="help" href="https://html.spec.whatwg.org/#the-img-element">
|
||||
<link rel="mismatch" href="/css/reference/blank.html">
|
||||
<img src="/images/anim-gr.gif">
|
Loading…
x
Reference in New Issue
Block a user