From caccaef7adcc6fd5876574ac51c49c68da450426 Mon Sep 17 00:00:00 2001 From: Simon Knott Date: Wed, 5 Feb 2025 10:02:09 +0100 Subject: [PATCH] simplify more --- .../src/server/browserContext.ts | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/packages/playwright-core/src/server/browserContext.ts b/packages/playwright-core/src/server/browserContext.ts index a8c17e6a6c..df47fefe50 100644 --- a/packages/playwright-core/src/server/browserContext.ts +++ b/packages/playwright-core/src/server/browserContext.ts @@ -520,31 +520,23 @@ export abstract class BrowserContext extends SdkObject { if (!dbInfo.name) throw new Error('Database name is empty'); - const db = await new Promise((resolve, reject) => { - const request = indexedDB.open(dbInfo.name!); - request.onerror = reject; - request.onsuccess = () => resolve(request.result); - }); + function idbRequestToPromise(request: T) { + return new Promise((resolve, reject) => { + request.addEventListener('success', () => resolve(request.result)); + request.addEventListener('error', () => reject(request.error)); + }); + } + const db = await idbRequestToPromise(indexedDB.open(dbInfo.name)); const transaction = db.transaction(db.objectStoreNames, 'readonly'); const stores = await Promise.all([...db.objectStoreNames].map(async storeName => { const objectStore = transaction.objectStore(storeName); - const keys = await new Promise((resolve, reject) => { - const request = objectStore.getAllKeys(); - request.addEventListener('success', () => resolve(request.result)); - request.addEventListener('error', reject); - }); + const keys = await idbRequestToPromise(objectStore.getAllKeys()); const records = await Promise.all(keys.map(async key => { - const record = await new Promise((resolve, reject) => { - const request = objectStore.get(key); - request.addEventListener('success', () => resolve(request.result)); - request.addEventListener('error', reject); - }); - return { - key: objectStore.keyPath === null ? key.toString() : undefined, - value: record + key: objectStore.keyPath === null ? key.toString() : undefined, // TODO: fix this + value: await idbRequestToPromise(objectStore.get(key)) }; }));