feature: add initial openusercss handshake

This commit is contained in:
DecentM 2018-01-06 09:54:21 +01:00
parent 8821c2f23f
commit aa31f53448
No known key found for this signature in database
GPG Key ID: 6BDA2D2BC5EA5B10
2 changed files with 64 additions and 0 deletions

View File

@ -0,0 +1,58 @@
'use strict';
(() => {
const manifest = chrome.runtime.getManifest();
// Tell the page that we exist and that it should send the handshake
window.postMessage({
'type': 'ouc-begin-handshake'
}, '*');
// Wait for the handshake
window.addEventListener('message', event => {
if (event.data && event.data.type === 'ouc-handshake-question') {
// This is a representation of features that Stylus is capable of
const implementedFeatures = [
'install-usercss',
'configure-after-install',
'builtin-editor',
'create-usercss',
'edit-usercss',
'import-moz-export',
'export-moz-export',
'update-manual',
'update-auto',
'export-json-backups',
'import-json-backups',
'manage-local'
];
const reportedFeatures = [];
// The handshake question includes a list of required and optional features
// we match them with features we have implemented, and build a union array.
event.data.featuresList.required.forEach(feature => {
if (implementedFeatures.includes(feature)) {
reportedFeatures.push(feature);
}
});
event.data.featuresList.optional.forEach(feature => {
if (implementedFeatures.includes(feature)) {
reportedFeatures.push(feature);
}
});
// We send the handshake response, which includes the key we got, plus some
// additional metadata
window.postMessage({
'type': 'ouc-handshake-response',
'key': event.data.key,
'extension': {
'name': manifest.name,
'version': manifest.version,
'capabilities': reportedFeatures
}
}, '*');
}
});
})();

View File

@ -60,6 +60,12 @@
"all_frames": false, "all_frames": false,
"js": ["content/install-hook-userstyles.js"] "js": ["content/install-hook-userstyles.js"]
}, },
{
"matches": ["https://openusercss.org/*", "https://openusercss.com/*"],
"run_at": "document_start",
"all_frames": false,
"js": ["content/install-hook-openusercss.js"]
},
{ {
"matches": ["<all_urls>"], "matches": ["<all_urls>"],
"include_globs": ["*.user.css", "*.user.styl"], "include_globs": ["*.user.css", "*.user.styl"],