Bug 1576463 - canvas toDataURL and toBlob should not throw for serialization errors, r=jya

Differential Revision: https://phabricator.services.mozilla.com/D45121

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Andrea Marchesini 2019-09-11 05:16:44 +00:00
parent d5f8e358d2
commit 91b2277029
3 changed files with 12 additions and 2 deletions

View File

@ -106,6 +106,8 @@ class EncodingCompleteEvent : public CancelableRunnable {
MOZ_ASSERT(blob);
rv = callback->ReceiveBlob(blob.forget());
} else {
rv = callback->ReceiveBlob(nullptr);
}
return rv;

View File

@ -35,10 +35,15 @@ void CanvasRenderingContextHelper::ToBlob(
nsresult ReceiveBlob(already_AddRefed<Blob> aBlob) override {
RefPtr<Blob> blob = aBlob;
RefPtr<Blob> newBlob = Blob::Create(mGlobal, blob->Impl());
RefPtr<Blob> newBlob;
if (blob) {
newBlob = Blob::Create(mGlobal, blob->Impl());
}
RefPtr<BlobCallback> callback(mBlobCallback.forget());
ErrorResult rv;
callback->Call(newBlob, rv);
mGlobal = nullptr;

View File

@ -603,7 +603,10 @@ void HTMLCanvasElement::ToDataURL(JSContext* aCx, const nsAString& aType,
return;
}
aRv = ToDataURLImpl(aCx, aSubjectPrincipal, aType, aParams, aDataURL);
nsresult rv = ToDataURLImpl(aCx, aSubjectPrincipal, aType, aParams, aDataURL);
if (NS_FAILED(rv)) {
aDataURL.AssignLiteral("data:,");
}
}
void HTMLCanvasElement::SetMozPrintCallback(PrintCallback* aCallback) {