do not attempt to clear canvas if one does not exist (#11764)

* do not attempt to clear canvas if one does not exist

* update test to explicitly run clearCanvas method to ensure it doesn't throw an error

* explicitly set canvas and ctx to null in test since the helper in test code didn't

* Update test/specs/helpers.canvas.tests.js

---------

Co-authored-by: Jacco van den Berg <jaccoberg2281@gmail.com>
This commit is contained in:
Arun Philip 2024-05-17 08:16:58 -04:00 committed by GitHub
parent ca76d73149
commit e7b8fa290f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 1 deletions

View File

@ -131,7 +131,11 @@ export function _alignPixel(chart: Chart, pixel: number, width: number) {
/**
* Clears the entire canvas.
*/
export function clearCanvas(canvas: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {
export function clearCanvas(canvas?: HTMLCanvasElement, ctx?: CanvasRenderingContext2D) {
if (!ctx && !canvas) {
return;
}
ctx = ctx || canvas.getContext('2d');
ctx.save();

View File

@ -21,6 +21,21 @@ describe('Chart.helpers.canvas', function() {
expect(chart.ctx.clearRect.calls.first().object).toBe(chart.ctx);
expect(chart.ctx.clearRect.calls.first().args).toEqual([0, 0, 150, 245]);
});
it('should not throw error when chart is null', function() {
function createAndClearChart() {
var chart = acquireChart({}, {
canvas: null
});
// explicitly set canvas and ctx to null since setting it in acquireChart doesn't do anything
chart.canvas = null;
chart.ctx = null;
helpers.clearCanvas(chart.canvas, chart.ctx);
}
expect(createAndClearChart).not.toThrow();
});
});
describe('isPointInArea', function() {