~/Projects/chrome-devtools-frontend
git clone https://code.lsong.org/chrome-devtools-frontend
Commit
- Commit
- 7edb7b7a3e86d0bbea76cdd5169d42ce491a575d
- Author
- Kateryna Prokopenko <[email protected]>
- Date
- 2022-11-14 15:59:07 +0000 +0000
- Diffstat
front_end/panels/application/StorageView.ts | 8 + test/unittests/front_end/panels/application/StorageView_test.ts | 18 +++
[WebSQL] Clear database also by storage key Bug: 1296581 Change-Id: I92aca9a211e2a716a59cf488d816c4473874d0ec Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/4026167 Commit-Queue: Kateryna Prokopenko <[email protected]> Reviewed-by: Danil Somsikov <[email protected]>
diff --git a/front_end/panels/application/StorageView.ts b/front_end/panels/application/StorageView.ts index 832613800b9408c8368a82af6b4145878f8cc2b3..0d513a732dfbba10e4046601a388647e5db41bd4 100644 --- a/front_end/panels/application/StorageView.ts +++ b/front_end/panels/application/StorageView.ts @@ -496,6 +496,14 @@ if (cookieModel) { void cookieModel.clear(undefined, includeThirdPartyCookies ? undefined : originForCookies); } } + + if (set.has(Protocol.Storage.StorageType.Websql) || hasAll) { + const databaseModel = target.model(DatabaseModel); + if (databaseModel) { + databaseModel.disable(); + databaseModel.enable(); + } + } } async doUpdate(): Promise<void> { diff --git a/test/unittests/front_end/panels/application/StorageView_test.ts b/test/unittests/front_end/panels/application/StorageView_test.ts index 6056edb76c8013fa5f99d3be56510df9dcd431c9..2633dd21278761b185fb9dfe51c670628cb36851 100644 --- a/test/unittests/front_end/panels/application/StorageView_test.ts +++ b/test/unittests/front_end/panels/application/StorageView_test.ts @@ -70,4 +70,22 @@ assert.isTrue(clearByOriginSpy.calledOnceWithExactly({origin: testOrigin, storageTypes: 'cookies'})); assert.isTrue(cookieClearSpy.calledOnceWithExactly(undefined, testOrigin)); }); + + it('also clears WebSQL on clearByStorageKey', async () => { + const databaseModel = target.model(Resources.DatabaseModel.DatabaseModel); + assertNotNullOrUndefined(databaseModel); + const databaseRemoved = new Promise(resolve => { + databaseModel.addEventListener(Resources.DatabaseModel.Events.DatabasesRemoved, resolve); + }); + const testDatabase = new Resources.DatabaseModel.Database( + databaseModel, 'test-id' as Protocol.Database.DatabaseId, 'test-domain', 'test-name', '1'); + databaseModel.enable(); + databaseModel.addDatabase(testDatabase); + assert.deepEqual(databaseModel.databases()[0], testDatabase); + + Resources.StorageView.StorageView.clearByStorageKey(target, testKey, '', [Protocol.Storage.StorageType.All], false); + + await databaseRemoved; + assert.isEmpty(databaseModel.databases()); + }); });