From e1161be26874f0d39a5b9cdeb2c5fbfd4f83bb80 Mon Sep 17 00:00:00 2001 From: Ladislau Szomoru <3372902+lszomoru@users.noreply.github.com> Date: Sun, 13 Jun 2021 09:21:25 +0200 Subject: [PATCH] Method to clear memento static map (#126092) --- src/vs/workbench/common/memento.ts | 13 +++++++++ src/vs/workbench/test/common/memento.test.ts | 28 ++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/src/vs/workbench/common/memento.ts b/src/vs/workbench/common/memento.ts index e9854ff82e2..2d52437793a 100644 --- a/src/vs/workbench/common/memento.ts +++ b/src/vs/workbench/common/memento.ts @@ -59,6 +59,19 @@ export class Memento { globalMemento.save(); } } + + static clear(scope: StorageScope): void { + + // Workspace + if (scope === StorageScope.WORKSPACE) { + Memento.workspaceMementos.clear(); + } + + // Global + if (scope === StorageScope.GLOBAL) { + Memento.globalMementos.clear(); + } + } } class ScopedMemento { diff --git a/src/vs/workbench/test/common/memento.test.ts b/src/vs/workbench/test/common/memento.test.ts index 437688eae1c..46c694b2475 100644 --- a/src/vs/workbench/test/common/memento.test.ts +++ b/src/vs/workbench/test/common/memento.test.ts @@ -14,6 +14,8 @@ suite('Memento', () => { setup(() => { storage = new TestStorageService(); + Memento.clear(StorageScope.GLOBAL); + Memento.clear(StorageScope.WORKSPACE); }); test('Loading and Saving Memento with Scopes', () => { @@ -176,4 +178,30 @@ suite('Memento', () => { memento = myMemento2.getMemento(StorageScope.WORKSPACE, StorageTarget.MACHINE); assert.deepStrictEqual(memento, { foo: 'Hello World', bar: 'Hello World' }); }); + + test('Clear Memento', () => { + let myMemento = new Memento('memento.test', storage); + + // Global + let globalMemento = myMemento.getMemento(StorageScope.GLOBAL, StorageTarget.MACHINE); + globalMemento.foo = 'Hello World'; + + // Workspace + let workspaceMemento = myMemento.getMemento(StorageScope.WORKSPACE, StorageTarget.MACHINE); + workspaceMemento.bar = 'Hello World'; + + myMemento.saveMemento(); + + // Clear + storage = new TestStorageService(); + Memento.clear(StorageScope.GLOBAL); + Memento.clear(StorageScope.WORKSPACE); + + myMemento = new Memento('memento.test', storage); + globalMemento = myMemento.getMemento(StorageScope.GLOBAL, StorageTarget.MACHINE); + workspaceMemento = myMemento.getMemento(StorageScope.WORKSPACE, StorageTarget.MACHINE); + + assert.deepStrictEqual(globalMemento, {}); + assert.deepStrictEqual(workspaceMemento, {}); + }); });