Bug 1331925 - blob returns null if canvas width or height is zero. sr=smaug

This commit is contained in:
vincentliu 2017-02-02 16:59:38 +08:00
Родитель 32dab0d403
Коммит 8da5275969
2 изменённых файлов: 12 добавлений и 2 удалений

Просмотреть файл

@ -53,7 +53,7 @@ CanvasRenderingContextHelper::ToBlob(JSContext* aCx,
RefPtr<Blob> newBlob = Blob::Create(mGlobal, blob->Impl());
mBlobCallback->Call(*newBlob, rv);
mBlobCallback->Call(newBlob, rv);
mGlobal = nullptr;
mBlobCallback = nullptr;
@ -65,6 +65,16 @@ CanvasRenderingContextHelper::ToBlob(JSContext* aCx,
RefPtr<BlobCallback> mBlobCallback;
};
nsIntSize elemSize = GetWidthHeight();
if (elemSize.width == 0 || elemSize.height == 0) {
// According to spec, blob should return null if either its horizontal
// dimension or its vertical dimension is zero. See link below.
// https://html.spec.whatwg.org/multipage/scripting.html#dom-canvas-toblob
BlobCallback* blobCallback = &aCallback;
blobCallback->Call(nullptr, aRv);
return;
}
RefPtr<EncodeCompleteCallback> callback =
new EncodeCallback(aGlobal, &aCallback);

Просмотреть файл

@ -68,4 +68,4 @@ interface MozCanvasPrintState
callback PrintCallback = void(MozCanvasPrintState ctx);
callback BlobCallback = void(Blob blob);
callback BlobCallback = void(Blob? blob);