Path: blob/main/plugins/default-browser-emulator/injected-scripts/polyfill.modify.ts
1029 views
for (const itemToModify of args.itemsToModify || []) {1try {2if (itemToModify.propertyName === '_$function') {3const func = getObjectAtPath(itemToModify.path);4overriddenFns.set(func, itemToModify.property);5}6if (7itemToModify.propertyName === '_$setToStringToString' ||8itemToModify.propertyName === '_$getToStringToString'9) {10nativeToStringFunctionString = itemToModify.property;11continue;12}1314const parts = getParentAndProperty(itemToModify.path);15const property = parts.property;16const parent = parts.parent;17const descriptorInHierarchy = getDescriptorInHierarchy(parent, property);18if (!descriptorInHierarchy) {19console.warn('Descriptor not found for polyfill', itemToModify);20continue;21}22const { descriptor } = descriptorInHierarchy;2324if (itemToModify.propertyName === '_$value') {25if (descriptor.get) {26descriptor.get = proxyGetter(parent, property, () => itemToModify.property);27} else {28descriptor.value = itemToModify.property;29Object.defineProperty(parent, property, descriptor);30}31} else if (itemToModify.propertyName === '_$get') {32overriddenFns.set(descriptor.get, itemToModify.property);33} else if (itemToModify.propertyName === '_$set') {34overriddenFns.set(descriptor.set, itemToModify.property);35}36} catch (err) {37console.log(`WARN: error changing prop ${itemToModify.path}.${itemToModify.propertyName}\n${err.stack}`);38}39}404142