also serialize key

This commit is contained in:
Simon Knott 2025-02-05 10:04:09 +01:00
parent caccaef7ad
commit 1e5dfc1a91
No known key found for this signature in database
GPG key ID: 8CEDC00028084AEC

View file

@ -535,7 +535,7 @@ export abstract class BrowserContext extends SdkObject {
const keys = await idbRequestToPromise(objectStore.getAllKeys()); const keys = await idbRequestToPromise(objectStore.getAllKeys());
const records = await Promise.all(keys.map(async key => { const records = await Promise.all(keys.map(async key => {
return { return {
key: objectStore.keyPath === null ? key.toString() : undefined, // TODO: fix this key: objectStore.keyPath === null ? key : undefined,
value: await idbRequestToPromise(objectStore.get(key)) value: await idbRequestToPromise(objectStore.get(key))
}; };
})); }));
@ -577,11 +577,14 @@ export abstract class BrowserContext extends SdkObject {
function serializeRecords(indexedDBs: channels.IndexedDBDatabase[]) { function serializeRecords(indexedDBs: channels.IndexedDBDatabase[]) {
for (const db of indexedDBs) { for (const db of indexedDBs) {
for (const store of db.stores) { for (const store of db.stores) {
for (const record of store.records) for (const record of store.records) {
if (record.key !== undefined)
record.key = JSON.stringify(utilitySerializers.serializeAsCallArgument(record.value, v => ({ fallThrough: v })));
record.value = JSON.stringify(utilitySerializers.serializeAsCallArgument(record.value, v => ({ fallThrough: v }))); record.value = JSON.stringify(utilitySerializers.serializeAsCallArgument(record.value, v => ({ fallThrough: v })));
} }
} }
} }
}
// First try collecting storage stage from existing pages. // First try collecting storage stage from existing pages.
for (const page of this.pages()) { for (const page of this.pages()) {
@ -679,10 +682,13 @@ export abstract class BrowserContext extends SdkObject {
for (const dbInfo of (originState.indexedDB || [])) { for (const dbInfo of (originState.indexedDB || [])) {
for (const store of dbInfo.stores) { for (const store of dbInfo.stores) {
for (const record of store.records) for (const record of store.records) {
if (record.key !== undefined)
record.key = utilitySerializers.parseEvaluationResultValue(JSON.parse(record.key));
record.value = utilitySerializers.parseEvaluationResultValue(JSON.parse(record.value)); record.value = utilitySerializers.parseEvaluationResultValue(JSON.parse(record.value));
} }
} }
}
async function _restoreStorageState(originState: channels.OriginStorage) { async function _restoreStorageState(originState: channels.OriginStorage) {
for (const { name, value } of (originState.localStorage || [])) for (const { name, value } of (originState.localStorage || []))