// Find serialized WindowProxy and resolve browsing context to a navigable id. if (payload?.result) { payload.result = addContextIdToSerializedWindow(payload.result); } else if (payload.exceptionDetails) { payload.exceptionDetails = addContextIdToSerializedWindow( payload.exceptionDetails ); } return payload; } function addContextIdToSerializedWindow(serialized) { if (serialized.value) { switch (serialized.type) { case "array": case "htmlcollection": case "nodelist": case "set": { serialized.value = serialized.value.map(value => addContextIdToSerializedWindow(value) ); break; } case "map": case "object": { serialized.value = serialized.value.map(([key, value]) => [ key, addContextIdToSerializedWindow(value), ]); break; } case "window": { if (serialized.value.isTopBrowsingContext) { const browsingContext = BrowsingContext.getCurrentTopByBrowserId( serialized.value.context ); serialized.value = { context: lazy.NavigableManager.getIdForBrowsingContext(browsingContext), }; } break; } } } else if (serialized.exception) { serialized.exception = addContextIdToSerializedWindow(serialized.exception); } return serialized; } PK