Skip to content

Commit 414cd1c

Browse files
Alexandru Marcamarc-mozilla
authored andcommitted
Revert "Bug 1422862: Implement IsImageExtractionAllowed_impl. r=tjr,gfx-reviewers,nical" for causing bc failures @ browser_etp_permission.js
This reverts commit 26aa4db. Revert "Bug 1918690: Extend test to also test Offscreen canvases. r=tjr" This reverts commit 4d63bba. Revert "Bug 1918690: Check canvas permission in RandomizePixels function. r=tjr,gfx-reviewers,nical" This reverts commit bf7503d. Revert "Bug 1422862: Show canvas permission prompt for offscreen canvases. r=tjr,gfx-reviewers,nical" This reverts commit b87087b. Revert "Bug 1422862: Check canvas permission in offscreen canvas. r=tjr,gfx-reviewers,nical" This reverts commit ad6b0a2.
1 parent 532f9ea commit 414cd1c

13 files changed

+158
-411
lines changed

dom/canvas/CanvasRenderingContext2D.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2144,9 +2144,8 @@ UniquePtr<uint8_t[]> CanvasRenderingContext2D::GetImageBuffer(
21442144

21452145
if (ret && ShouldResistFingerprinting(RFPTarget::CanvasRandomization)) {
21462146
nsRFPService::RandomizePixels(
2147-
GetCookieJarSettings(), PrincipalOrNull(), ret.get(),
2148-
out_imageSize->width, out_imageSize->height,
2149-
out_imageSize->width * out_imageSize->height * 4,
2147+
GetCookieJarSettings(), ret.get(), out_imageSize->width,
2148+
out_imageSize->height, out_imageSize->width * out_imageSize->height * 4,
21502149
SurfaceFormat::A8R8G8B8_UINT32);
21512150
}
21522151

@@ -6396,10 +6395,9 @@ nsresult CanvasRenderingContext2D::GetImageDataArray(
63966395
// holder.
63976396

63986397
const IntSize size = readback->GetSize();
6399-
nsRFPService::RandomizePixels(GetCookieJarSettings(), PrincipalOrNull(),
6400-
rawData.mData, size.width, size.height,
6401-
size.height * size.width * 4,
6402-
SurfaceFormat::A8R8G8B8_UINT32);
6398+
nsRFPService::RandomizePixels(
6399+
GetCookieJarSettings(), rawData.mData, size.width, size.height,
6400+
size.height * size.width * 4, SurfaceFormat::A8R8G8B8_UINT32);
64036401
}
64046402

64056403
JS::AutoCheckCannotGC nogc;

dom/canvas/CanvasUtils.cpp

Lines changed: 108 additions & 303 deletions
Large diffs are not rendered by default.

dom/canvas/CanvasUtils.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,18 +59,10 @@ bool HasDrawWindowPrivilege(JSContext* aCx, JSObject* aObj);
5959
// Check if the context has permission to use OffscreenCanvas.
6060
bool IsOffscreenCanvasEnabled(JSContext* aCx, JSObject* aObj);
6161

62-
// Check if the principal has "canvas" permission.
63-
uint32_t GetCanvasExtractDataPermission(nsIPrincipal& aPrincipal);
64-
6562
// Check site-specific permission and display prompt if appropriate.
6663
bool IsImageExtractionAllowed(dom::Document* aDocument, JSContext* aCx,
6764
nsIPrincipal& aPrincipal);
6865

69-
bool IsImageExtractionAllowed(dom::OffscreenCanvas* aOffscreenCanvas,
70-
JSContext* aCx, nsIPrincipal& aPrincipal);
71-
72-
uint32_t GetCanvasExtractDataPermission(nsIPrincipal& aPrincipal);
73-
7466
enum class ImageExtraction {
7567
Unrestricted,
7668
Placeholder,

dom/canvas/ClientWebGLContext.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1345,8 +1345,7 @@ UniquePtr<uint8_t[]> ClientWebGLContext::GetImageBuffer(
13451345

13461346
if (ShouldResistFingerprinting(RFPTarget::CanvasRandomization)) {
13471347
return gfxUtils::GetImageBufferWithRandomNoise(
1348-
dataSurface, premultAlpha, GetCookieJarSettings(), PrincipalOrNull(),
1349-
out_format);
1348+
dataSurface, premultAlpha, GetCookieJarSettings(), out_format);
13501349
}
13511350

13521351
return gfxUtils::GetImageBuffer(dataSurface, premultAlpha, out_format);
@@ -1367,7 +1366,7 @@ ClientWebGLContext::GetInputStream(const char* mimeType,
13671366
if (ShouldResistFingerprinting(RFPTarget::CanvasRandomization)) {
13681367
return gfxUtils::GetInputStreamWithRandomNoise(
13691368
dataSurface, premultAlpha, mimeType, encoderOptions,
1370-
GetCookieJarSettings(), PrincipalOrNull(), out_stream);
1369+
GetCookieJarSettings(), out_stream);
13711370
}
13721371

13731372
return gfxUtils::GetInputStream(dataSurface, premultAlpha, mimeType,

dom/canvas/ImageBitmapRenderingContext.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,8 +195,8 @@ mozilla::UniquePtr<uint8_t[]> ImageBitmapRenderingContext::GetImageBuffer(
195195

196196
if (ret && ShouldResistFingerprinting(RFPTarget::CanvasRandomization)) {
197197
nsRFPService::RandomizePixels(
198-
GetCookieJarSettings(), PrincipalOrNull(), ret.get(),
199-
data->GetSize().width, data->GetSize().height,
198+
GetCookieJarSettings(), ret.get(), data->GetSize().width,
199+
data->GetSize().height,
200200
data->GetSize().width * data->GetSize().height * 4,
201201
gfx::SurfaceFormat::A8R8G8B8_UINT32);
202202
}

dom/canvas/OffscreenCanvas.cpp

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
#include "ImageBitmap.h"
2727
#include "ImageBitmapRenderingContext.h"
2828
#include "nsContentUtils.h"
29-
#include "nsIPermissionManager.h"
3029
#include "nsProxyRelease.h"
3130
#include "WebGLChild.h"
3231

@@ -504,11 +503,8 @@ already_AddRefed<Promise> OffscreenCanvas::ConvertToBlob(
504503

505504
RefPtr<EncodeCompleteCallback> callback =
506505
CreateEncodeCompleteCallback(promise);
507-
508-
bool usePlaceholder = mCurrentContext && mCurrentContext->PrincipalOrNull() &&
509-
!CanvasUtils::IsImageExtractionAllowed(
510-
this, nsContentUtils::GetCurrentJSContext(),
511-
*mCurrentContext->PrincipalOrNull());
506+
bool usePlaceholder =
507+
ShouldResistFingerprinting(RFPTarget::CanvasImageExtractionPrompt);
512508
CanvasRenderingContextHelper::ToBlob(callback, type, encodeOptions,
513509
/* aUsingCustomOptions */ false,
514510
usePlaceholder, aRv);
@@ -549,10 +545,8 @@ already_AddRefed<Promise> OffscreenCanvas::ToBlob(JSContext* aCx,
549545

550546
RefPtr<EncodeCompleteCallback> callback =
551547
CreateEncodeCompleteCallback(promise);
552-
bool usePlaceholder = mCurrentContext && mCurrentContext->PrincipalOrNull() &&
553-
!CanvasUtils::IsImageExtractionAllowed(
554-
this, nsContentUtils::GetCurrentJSContext(),
555-
*mCurrentContext->PrincipalOrNull());
548+
bool usePlaceholder =
549+
ShouldResistFingerprinting(RFPTarget::CanvasImageExtractionPrompt);
556550
CanvasRenderingContextHelper::ToBlob(aCx, callback, aType, aParams,
557551
usePlaceholder, aRv);
558552

dom/canvas/OffscreenCanvasDisplayHelper.cpp

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -577,21 +577,9 @@ UniquePtr<uint8_t[]> OffscreenCanvasDisplayHelper::GetImageBuffer(
577577
}
578578

579579
if (resistFingerprinting) {
580-
nsIPrincipal* principal;
581-
{
582-
MutexAutoLock lock(mMutex);
583-
if (mCanvasElement) {
584-
principal = mCanvasElement->NodePrincipal();
585-
}
586-
if (mOffscreenCanvas) {
587-
principal = mOffscreenCanvas->GetParentObject()
588-
? mOffscreenCanvas->GetParentObject()->PrincipalOrNull()
589-
: nullptr;
590-
}
591-
}
592580
nsRFPService::RandomizePixels(
593-
cookieJarSettings, principal, imageBuffer.get(),
594-
dataSurface->GetSize().width, dataSurface->GetSize().height,
581+
cookieJarSettings, imageBuffer.get(), dataSurface->GetSize().width,
582+
dataSurface->GetSize().height,
595583
dataSurface->GetSize().width * dataSurface->GetSize().height * 4,
596584
gfx::SurfaceFormat::A8R8G8B8_UINT32);
597585
}

dom/webgpu/CanvasContext.cpp

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -353,10 +353,9 @@ mozilla::UniquePtr<uint8_t[]> CanvasContext::GetImageBuffer(
353353
*out_imageSize = dataSurface->GetSize();
354354

355355
if (ShouldResistFingerprinting(RFPTarget::CanvasRandomization)) {
356-
gfxUtils::GetImageBufferWithRandomNoise(dataSurface,
357-
/* aIsAlphaPremultiplied */ true,
358-
GetCookieJarSettings(),
359-
PrincipalOrNull(), &*out_format);
356+
gfxUtils::GetImageBufferWithRandomNoise(
357+
dataSurface,
358+
/* aIsAlphaPremultiplied */ true, GetCookieJarSettings(), &*out_format);
360359
}
361360

362361
return gfxUtils::GetImageBuffer(dataSurface, /* aIsAlphaPremultiplied */ true,
@@ -375,9 +374,9 @@ NS_IMETHODIMP CanvasContext::GetInputStream(const char* aMimeType,
375374
RefPtr<gfx::DataSourceSurface> dataSurface = snapshot->GetDataSurface();
376375

377376
if (ShouldResistFingerprinting(RFPTarget::CanvasRandomization)) {
378-
return gfxUtils::GetInputStreamWithRandomNoise(
377+
gfxUtils::GetInputStreamWithRandomNoise(
379378
dataSurface, /* aIsAlphaPremultiplied */ true, aMimeType,
380-
aEncoderOptions, GetCookieJarSettings(), PrincipalOrNull(), aStream);
379+
aEncoderOptions, GetCookieJarSettings(), aStream);
381380
}
382381

383382
return gfxUtils::GetInputStream(dataSurface, /* aIsAlphaPremultiplied */ true,

gfx/thebes/gfxUtils.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1613,14 +1613,13 @@ UniquePtr<uint8_t[]> gfxUtils::GetImageBuffer(gfx::DataSourceSurface* aSurface,
16131613
/* static */
16141614
UniquePtr<uint8_t[]> gfxUtils::GetImageBufferWithRandomNoise(
16151615
gfx::DataSourceSurface* aSurface, bool aIsAlphaPremultiplied,
1616-
nsICookieJarSettings* aCookieJarSettings, nsIPrincipal* aPrincipal,
1617-
int32_t* outFormat) {
1616+
nsICookieJarSettings* aCookieJarSettings, int32_t* outFormat) {
16181617
UniquePtr<uint8_t[]> imageBuffer =
16191618
GetImageBuffer(aSurface, aIsAlphaPremultiplied, outFormat);
16201619

16211620
nsRFPService::RandomizePixels(
1622-
aCookieJarSettings, aPrincipal, imageBuffer.get(),
1623-
aSurface->GetSize().width, aSurface->GetSize().height,
1621+
aCookieJarSettings, imageBuffer.get(), aSurface->GetSize().width,
1622+
aSurface->GetSize().height,
16241623
aSurface->GetSize().width * aSurface->GetSize().height * 4,
16251624
SurfaceFormat::A8R8G8B8_UINT32);
16261625

@@ -1652,8 +1651,7 @@ nsresult gfxUtils::GetInputStream(gfx::DataSourceSurface* aSurface,
16521651
nsresult gfxUtils::GetInputStreamWithRandomNoise(
16531652
gfx::DataSourceSurface* aSurface, bool aIsAlphaPremultiplied,
16541653
const char* aMimeType, const nsAString& aEncoderOptions,
1655-
nsICookieJarSettings* aCookieJarSettings, nsIPrincipal* aPrincipal,
1656-
nsIInputStream** outStream) {
1654+
nsICookieJarSettings* aCookieJarSettings, nsIInputStream** outStream) {
16571655
nsCString enccid("@mozilla.org/image/encoder;2?type=");
16581656
enccid += aMimeType;
16591657
nsCOMPtr<imgIEncoder> encoder = do_CreateInstance(enccid.get());
@@ -1669,8 +1667,8 @@ nsresult gfxUtils::GetInputStreamWithRandomNoise(
16691667
}
16701668

16711669
nsRFPService::RandomizePixels(
1672-
aCookieJarSettings, aPrincipal, imageBuffer.get(),
1673-
aSurface->GetSize().width, aSurface->GetSize().height,
1670+
aCookieJarSettings, imageBuffer.get(), aSurface->GetSize().width,
1671+
aSurface->GetSize().height,
16741672
aSurface->GetSize().width * aSurface->GetSize().height * 4,
16751673
SurfaceFormat::A8R8G8B8_UINT32);
16761674

gfx/thebes/gfxUtils.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -400,8 +400,7 @@ class gfxUtils {
400400

401401
static mozilla::UniquePtr<uint8_t[]> GetImageBufferWithRandomNoise(
402402
DataSourceSurface* aSurface, bool aIsAlphaPremultiplied,
403-
nsICookieJarSettings* aCookieJarSettings, nsIPrincipal* aPrincipal,
404-
int32_t* outFormat);
403+
nsICookieJarSettings* aCookieJarSettings, int32_t* outFormat);
405404

406405
static nsresult GetInputStream(DataSourceSurface* aSurface,
407406
bool aIsAlphaPremultiplied,
@@ -412,8 +411,7 @@ class gfxUtils {
412411
static nsresult GetInputStreamWithRandomNoise(
413412
DataSourceSurface* aSurface, bool aIsAlphaPremultiplied,
414413
const char* aMimeType, const nsAString& aEncoderOptions,
415-
nsICookieJarSettings* aCookieJarSettings, nsIPrincipal* aPrincipal,
416-
nsIInputStream** outStream);
414+
nsICookieJarSettings* aCookieJarSettings, nsIInputStream** outStream);
417415

418416
static void RemoveShaderCacheFromDiskIfNecessary();
419417

0 commit comments

Comments
 (0)