Compatibility/System Addon
From MozillaWiki
Contents
Introduction
The WebCompat System add-on proposes to provide a site patching mechanism for Firefox users. A site patch is defined as an origin- or path-scoped block of JavaScript that runs in the context of a web page.
By using the go faster system add-ons infrastructure and delivery mechanism, we can add and remove top web property site patches via out of band updates (i.e., not tied to the release train cadence). The intention is to provide a means to fix urgent issues until outreach efforts are successful, or until platform bugs or regressions are shipping in release builds as fixed.
Use Cases
- A top site has a bug that affects Firefox users that can be worked around by modifying navigator.userAgent:
- trailers.apple.com blocking Firefox users on OS X 10.11 and above, but videos work when sending a Chrome user agent: bug 1262149
- YouTube stopped serving MSE/WebM to Firefox 43 users, due to a server side UA parsing bug. Worked around by hard coding 42 in UA string, for youtube.com (until they fixed): bug 1233970
- Firefox ships a regression in release breaking top sites
- Hiding messages such as "Best seen in Chrome”, or unsupported browser banners or redirected pages in top sites. e.g., Bank of America on OSX: bug 1280834
- Working around widely deployed libraries or frameworks that don't support Firefox, have bugs, or make bad assumptions about Gecko, e.g., BrightCove and Ooyola serving HLS over .m3u8 to Firefox for Android on Android 4 (which is not supported) or greater but mp4 to Android 3 (which is supported).
- Relaxing plugin click-to-play restrictions (bug 1186948) on some sites to fix Flash plugin detection.
- Temporarily shim APIs that have been removed until top site is updated (e.g. showModalDialog).
- A top site relies on a (mostly) shimmable non-standard API, e.g., window.event
Looking for source?
The development of our Go Faster Addon is happening on GitHub.
Automated Tests
Other important documents
- Override Policies and Workflows - on when and how to add overrides and code injections.
- Currently deployed interventions across all channels are listed on GitHub with the sitepatch-applied label