Skip to content

Commit

Permalink
do not attempt to clear canvas if one does not exist (#11764)
Browse files Browse the repository at this point in the history
* 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 <[email protected]>
  • Loading branch information
DAcodedBEAT and LeeLenaleee authored May 17, 2024
1 parent ca76d73 commit e7b8fa2
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/helpers/helpers.canvas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
15 changes: 15 additions & 0 deletions test/specs/helpers.canvas.tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -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() {
Expand Down

0 comments on commit e7b8fa2

Please sign in to comment.