From a3f8e281721f6ef8c9479f5870198b7a009daabd Mon Sep 17 00:00:00 2001 From: Liam DeBeasi Date: Mon, 6 Mar 2023 12:38:29 -0500 Subject: [PATCH] fix(modal): avoid chrome memory leak bug (#26911) --- core/src/components/modal/test/basic/modal.e2e.ts | 2 ++ core/src/css/core.scss | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/src/components/modal/test/basic/modal.e2e.ts b/core/src/components/modal/test/basic/modal.e2e.ts index b1ea9f8803..9d6c1b039a 100644 --- a/core/src/components/modal/test/basic/modal.e2e.ts +++ b/core/src/components/modal/test/basic/modal.e2e.ts @@ -75,6 +75,7 @@ test.describe('modal: rendering', () => { await ionModalDidPresent.next(); const modal = await page.locator('ion-modal'); + await expect(modal).toHaveClass(/show-modal/); await page.setIonViewport(); @@ -87,6 +88,7 @@ test.describe('modal: rendering', () => { await ionModalWillDismiss.next(); await ionModalDidDismiss.next(); + await expect(modal).not.toHaveClass(/show-modal/); await expect(modal).toBeHidden(); }; diff --git a/core/src/css/core.scss b/core/src/css/core.scss index 6204c5720e..7f47bcfdbe 100644 --- a/core/src/css/core.scss +++ b/core/src/css/core.scss @@ -91,8 +91,12 @@ html.ios ion-modal ion-toolbar { * Note 2: This should only apply to non-card and * non-sheet modals. Card and sheet modals have their * own criteria for displaying backdrops/box shadows. + * + * Do not use :not(.overlay-hidden) in place of + * .show-modal because that triggers a memory + * leak in Blink: https://bugs.chromium.org/p/chromium/issues/detail?id=1418768 */ -ion-modal.modal-default:not(.overlay-hidden) ~ ion-modal.modal-default { +ion-modal.modal-default.show-modal ~ ion-modal.modal-default { --backdrop-opacity: 0; --box-shadow: none; }