Un desarrollador externo ha implementado una API experimental para proporcionar a WebExtensions la capacidad de editar la configuración disponible a través de «about:config» en los navegadores basados en Firefox.
La API puede ser útil para crear extensiones de tweaker que brinden una interfaz de personalización del navegador más fácil de usar. En el mismo repositorio, se suministran 2 extensiones utilizando la API reenviada, que puede servir como ejemplo.
Para obtener acceso a la API, se deben cumplir las siguientes condiciones:
- Usar una versión de Firefox con la capacidad de ejecutar extensiones sin firmar (Mozilla fundamentalmente no firma extensiones que usan WebExtensions Experiments) y activar este modo a través de «xpinstall.signatures.required».
- Usando una versión de Firefox con la capacidad de usar Experimentos de WebExtensions (requiere compilación con la definición de macro «MOZ_DEV_EDITION». De las versiones oficiales, estas son Nightly y Developer Edition). Este modo se activa mediante «extensions.experiments.enabled».
- La presencia de una extensión instalada que reenvía la API. Se encuentra en el directorio «experiments». También contiene un archivo que describe y documenta la versión actual de la API de WebExtensions para editar «about:config». En el futuro, se planea implementar la limitación de los parámetros disponibles para una extensión de usuario de API específica declarándolos en el manifiesto.
- Para trabajar con la API, debe especificar el permiso «experiment.config» en su manifiesto de extensión.
Se debe tener en cuenta que la concesión dinámica (con la posibilidad de que el usuario opte por no participar) de permisos para acceder a API experimentales no funciona en Firefox en este momento.
Además, se menciona que se proporciona una extensión en el directorio «arkenfox» que sincroniza la configuración del navegador con la lista de configuraciones recomendadas para el proyecto arkenfox (anteriormente conocido como ghacksuserjs, pero renombrado porque el proyecto se ha estado desarrollando durante mucho tiempo de forma aislada del sitio de noticias de tecnología Ghacks). Cuando se instala, aparece un botón en la barra de herramientas, cuando que abre una lista de configuraciones, cuyos valores no coinciden con los valores en arkenfox/user.js. Frente a cada diferencia hay un botón, al hacer clic en el que se elimina la diferencia. Es posible eliminar todas las diferencias con un clic.
Para que la extensión funcione desde el directorio «arkenfox», se requiere otra API experimental, webext-experiment-parse, que permite utilizar los recursos del analizador ECMAScript integrado de SpiderMonkey, en lugar de utilizar analizadores implementados en el propio ECMAScript, como ESPrima, para proporcionar un mejor rendimiento y lo que es más importante, eliminar la necesidad de enviar y actualizar esta dependencia.
No se realizó medición y comparación, es muy posible que la sobrecarga de enviar mensajes se lo coma todo, de manera amistosa para no comérselo hay que reenviarlo fuera de la caja, pero por el momento Mozilla está generalmente en contra de reenviar esta API, ya que no garantizan la estabilidad del formato del AST devuelto.
Sin embargo, es posible trabajar sin la extensión especificada, con un respaldo a un analizador primitivo basado en expresiones regulares. Para hacer esto, necesita reconstruir la extensión «arkenfox», eliminando los «experiments».
La extensión «unlock» simplemente desbloquea todas las configuraciones bloqueadas en el momento de su inicialización. Las configuraciones bloqueadas son aquellas que el usuario no puede cambiar a través de «about:config».
Dado que el archivo de configuración personalizada se lee al inicio antes de que se inicialicen las extensiones, los cambios en la configuración bloqueada entre reinicios no se guardan. Si es necesario «eliminar» el valor del ajuste bloqueado en las primeras etapas de la puesta en marcha, puede bloquearlo en otro valor de acuerdo con las instrucciones.
Para crear extensiones, solo necesita comprimir sus archivos en archivos zip sin comprimir con la extensión xpi. Como recordatorio, Mozilla no implementó deliberadamente la edición de la configuración about:config en la forma de la API de WebExtensions.
Finalmente, para los que esten interesados en poder tener acceso a la API pueden consultar el siguiente repositorio donde encontraran todo lo mencionado.