Fix failure to print when pages contain zero-sized <canvas> element.
parent
ba11f2bc41
commit
7ad2d62b8f
|
@ -552,17 +552,23 @@ HTMLCanvasElement::CopyInnerTo(Element* aDest)
|
||||||
HTMLCanvasElement* dest = static_cast<HTMLCanvasElement*>(aDest);
|
HTMLCanvasElement* dest = static_cast<HTMLCanvasElement*>(aDest);
|
||||||
dest->mOriginalCanvas = this;
|
dest->mOriginalCanvas = this;
|
||||||
|
|
||||||
nsCOMPtr<nsISupports> cxt;
|
// We make sure that the canvas is not zero sized since that would cause
|
||||||
dest->GetContext(NS_LITERAL_STRING("2d"), getter_AddRefs(cxt));
|
// the DrawImage call below to return an error, which would cause printing
|
||||||
RefPtr<CanvasRenderingContext2D> context2d =
|
// to fail.
|
||||||
static_cast<CanvasRenderingContext2D*>(cxt.get());
|
nsIntSize size = GetWidthHeight();
|
||||||
if (context2d && !mPrintCallback) {
|
if (size.height > 0 && size.width > 0) {
|
||||||
CanvasImageSource source;
|
nsCOMPtr<nsISupports> cxt;
|
||||||
source.SetAsHTMLCanvasElement() = this;
|
dest->GetContext(NS_LITERAL_STRING("2d"), getter_AddRefs(cxt));
|
||||||
ErrorResult err;
|
RefPtr<CanvasRenderingContext2D> context2d =
|
||||||
context2d->DrawImage(source,
|
static_cast<CanvasRenderingContext2D*>(cxt.get());
|
||||||
0.0, 0.0, err);
|
if (context2d && !mPrintCallback) {
|
||||||
rv = err.StealNSResult();
|
CanvasImageSource source;
|
||||||
|
source.SetAsHTMLCanvasElement() = this;
|
||||||
|
ErrorResult err;
|
||||||
|
context2d->DrawImage(source,
|
||||||
|
0.0, 0.0, err);
|
||||||
|
rv = err.StealNSResult();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rv;
|
return rv;
|
||||||
|
|
Loading…
Reference in New Issue