Spaces:
Runtime error
Runtime error
navigator_plugins = """ | |
data = { | |
"mimeTypes": [ | |
{ | |
"type": "application/pdf", | |
"suffixes": "pdf", | |
"description": "", | |
"__pluginName": "Chrome PDF Viewer" | |
}, | |
{ | |
"type": "application/x-google-chrome-pdf", | |
"suffixes": "pdf", | |
"description": "Portable Document Format", | |
"__pluginName": "Chrome PDF Plugin" | |
}, | |
{ | |
"type": "application/x-nacl", | |
"suffixes": "", | |
"description": "Native Client Executable", | |
"__pluginName": "Native Client" | |
}, | |
{ | |
"type": "application/x-pnacl", | |
"suffixes": "", | |
"description": "Portable Native Client Executable", | |
"__pluginName": "Native Client" | |
} | |
], | |
"plugins": [ | |
{ | |
"name": "Chrome PDF Plugin", | |
"filename": "internal-pdf-viewer", | |
"description": "Portable Document Format", | |
"__mimeTypes": ["application/x-google-chrome-pdf"] | |
}, | |
{ | |
"name": "Chrome PDF Viewer", | |
"filename": "mhjfbmdgcfjbbpaeojofohoefgiehjai", | |
"description": "", | |
"__mimeTypes": ["application/pdf"] | |
}, | |
{ | |
"name": "Native Client", | |
"filename": "internal-nacl-plugin", | |
"description": "", | |
"__mimeTypes": ["application/x-nacl", "application/x-pnacl"] | |
} | |
] | |
} | |
// That means we're running headful | |
const hasPlugins = 'plugins' in navigator && navigator.plugins.length | |
if (!(hasPlugins)) { | |
const mimeTypes = generateMagicArray( | |
data.mimeTypes, | |
MimeTypeArray.prototype, | |
MimeType.prototype, | |
'type' | |
) | |
const plugins = generateMagicArray( | |
data.plugins, | |
PluginArray.prototype, | |
Plugin.prototype, | |
'name' | |
) | |
// Plugin and MimeType cross-reference each other, let's do that now | |
// Note: We're looping through `data.plugins` here, not the generated `plugins` | |
for (const pluginData of data.plugins) { | |
pluginData.__mimeTypes.forEach((type, index) => { | |
plugins[pluginData.name][index] = mimeTypes[type] | |
plugins[type] = mimeTypes[type] | |
Object.defineProperty(mimeTypes[type], 'enabledPlugin', { | |
value: JSON.parse(JSON.stringify(plugins[pluginData.name])), | |
writable: false, | |
enumerable: false, // Important: `JSON.stringify(navigator.plugins)` | |
configurable: false | |
}) | |
}) | |
} | |
const patchNavigator = (name, value) => | |
utils.replaceProperty(Object.getPrototypeOf(navigator), name, { | |
get() { | |
return value | |
} | |
}) | |
patchNavigator('mimeTypes', mimeTypes) | |
patchNavigator('plugins', plugins) | |
} | |
""" | |