зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1266808 - throw exception when canvas.drawImage passed closed ImageBitmap r=baku
Fixed breakages with clipped areas disjoint to image Fixed text case that didn't expect exception Fixed coding style Differential Revision: https://phabricator.services.mozilla.com/D31048
This commit is contained in:
Родитель
63856c61b2
Коммит
61eaafbca1
|
@ -4422,6 +4422,9 @@ void CanvasRenderingContext2D::DrawImage(const CanvasImageSource& aImage,
|
||||||
srcSurf = imageBitmap.PrepareForDrawTarget(mTarget);
|
srcSurf = imageBitmap.PrepareForDrawTarget(mTarget);
|
||||||
|
|
||||||
if (!srcSurf) {
|
if (!srcSurf) {
|
||||||
|
if (imageBitmap.IsClosed()) {
|
||||||
|
aError.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -141,6 +141,7 @@ class ImageBitmap final : public nsISupports, public nsWrapperCache {
|
||||||
void OnShutdown();
|
void OnShutdown();
|
||||||
|
|
||||||
bool IsWriteOnly() const { return mWriteOnly; }
|
bool IsWriteOnly() const { return mWriteOnly; }
|
||||||
|
bool IsClosed() const { return !mData; };
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -56,10 +56,10 @@ function runTest() {
|
||||||
var canvas2 = createCanvas();
|
var canvas2 = createCanvas();
|
||||||
var ctx2 = canvas2.getContext("2d");
|
var ctx2 = canvas2.getContext("2d");
|
||||||
var beforeDrawImageDataURL = canvas2.toDataURL();
|
var beforeDrawImageDataURL = canvas2.toDataURL();
|
||||||
|
var _thrown = undefined; try {
|
||||||
ctx2.drawImage(bmp, 0, 0);
|
ctx2.drawImage(bmp, 0, 0);
|
||||||
var afterDrawImageDataURL = canvas2.toDataURL();
|
} catch (e) { _thrown = e };
|
||||||
ok(beforeDrawImageDataURL == afterDrawImageDataURL,
|
ok(_thrown && _thrown.name == "InvalidStateError" && _thrown.code == DOMException.INVALID_STATE_ERR, "should throw InvalidStateError");
|
||||||
"Drawing operations with a closed ImageBitmap should do nothing.");
|
|
||||||
runTestOnWorker();
|
runTestOnWorker();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче