complete "debian" as a target platform

This commit is contained in:
Raymond Hill 2018-04-27 11:43:35 -04:00
parent d0c1c7c4c9
commit 08495c42e9
No known key found for this signature in database
GPG key ID: 25E1490B761470C2
10 changed files with 556 additions and 168 deletions

View file

@ -1,77 +1,89 @@
{ {
"manifest_version": 2, "author": "All uBlock Origin contributors",
"background": {
"name": "uBlock Origin", "page": "background.html"
"version": "1.15.11.0", },
"browser_action": {
"commands": { "default_icon": {
"launch-element-zapper": { "19": "img/browsericons/icon19.png",
"description": "__MSG_popupTipZapper__" "38": "img/browsericons/icon38.png"
},
"launch-element-picker": {
"description": "__MSG_popupTipPicker__"
},
"launch-logger": {
"description": "__MSG_popupTipLog__"
}
}, },
"default_locale": "en", "default_title": "uBlock Origin",
"description": "__MSG_extShortDesc__", "default_popup": "popup.html"
"icons": { },
"16": "img/icon_16.png", "commands": {
"128": "img/icon_128.png" "launch-element-zapper": {
"description": "__MSG_popupTipZapper__"
}, },
"launch-element-picker": {
"browser_action": { "description": "__MSG_popupTipPicker__"
"default_icon": {
"19": "img/browsericons/icon19.png",
"38": "img/browsericons/icon38.png"
},
"default_title": "uBlock Origin",
"default_popup": "popup.html"
}, },
"launch-logger": {
"author": "All uBlock Origin contributors", "description": "__MSG_popupTipLog__"
"background": { }
"page": "background.html" },
"content_scripts": [
{
"matches": [
"http://*/*",
"https://*/*"
],
"js": [
"/js/vapi.js",
"/js/vapi-client.js",
"/js/contentscript.js"
],
"run_at": "document_start",
"all_frames": true
}, },
"content_scripts": [ {
{ "matches": [
"matches": ["http://*/*", "https://*/*"], "http://*/*",
"js": ["/js/vapi.js", "/js/vapi-client.js", "/js/contentscript.js"], "https://*/*"
"run_at": "document_start", ],
"all_frames": true "js": [
}, "/js/scriptlets/subscriber.js"
{ ],
"matches": ["http://*/*", "https://*/*"], "run_at": "document_idle",
"js": ["/js/scriptlets/subscriber.js"], "all_frames": false
"run_at": "document_idle", }
"all_frames": false ],
} "default_locale": "en",
], "description": "__MSG_extShortDesc__",
"incognito": "split", "icons": {
"minimum_chrome_version": "45.0", "16": "img/icon_16.png",
"optional_permissions": [ "file:///*" ], "32": "img/icon_32.png",
"options_page": "dashboard.html", "64": "img/icon_64.png",
"options_ui": { "128": "img/icon_128.png"
"page": "options_ui.html" },
}, "incognito": "split",
"permissions": [ "manifest_version": 2,
"contextMenus", "minimum_chrome_version": "45.0",
"privacy", "name": "uBlock Origin",
"storage", "optional_permissions": [
"tabs", "file:///*"
"unlimitedStorage", ],
"webNavigation", "options_page": "dashboard.html",
"webRequest", "options_ui": {
"webRequestBlocking", "page": "options_ui.html"
"<all_urls>" },
], "permissions": [
"short_name": "uBlock₀", "contextMenus",
"storage": { "privacy",
"managed_schema": "managed_storage.json" "storage",
}, "tabs",
"web_accessible_resources": [ "unlimitedStorage",
"/web_accessible_resources/*" "webNavigation",
] "webRequest",
"webRequestBlocking",
"<all_urls>"
],
"short_name": "uBlock₀",
"storage": {
"managed_schema": "managed_storage.json"
},
"version": "1.15.11.0",
"web_accessible_resources": [
"/web_accessible_resources/*"
]
} }

View file

@ -0,0 +1,105 @@
{
"applications": {
"gecko": {
"id": "uBlock0-webext@raymondhill.net",
"strict_min_version": "52.0"
}
},
"author": "All uBlock Origin contributors",
"background": {
"page": "background.html"
},
"browser_action": {
"browser_style": false,
"default_icon": {
"19": "img/browsericons/icon19.png",
"38": "img/browsericons/icon38.png"
},
"default_title": "uBlock Origin",
"default_popup": "popup.html"
},
"commands": {
"launch-element-zapper": {
"description": "__MSG_popupTipZapper__"
},
"launch-element-picker": {
"description": "__MSG_popupTipPicker__"
},
"launch-logger": {
"description": "__MSG_popupTipLog__"
}
},
"content_scripts": [
{
"matches": [
"http://*/*",
"https://*/*",
"file://*/*"
],
"js": [
"/js/vapi.js",
"/js/vapi-client.js",
"/js/contentscript.js"
],
"run_at": "document_start",
"all_frames": true
},
{
"matches": [
"http://*/*",
"https://*/*"
],
"js": [
"/js/scriptlets/subscriber.js"
],
"run_at": "document_idle",
"all_frames": false
}
],
"default_locale": "en",
"description": "__MSG_extShortDesc__",
"icons": {
"16": "img/icon_16.png",
"32": "img/icon_32.png",
"64": "img/icon_64.png",
"128": "img/icon_128.png"
},
"incognito": "split",
"manifest_version": 2,
"minimum_chrome_version": "45.0",
"name": "uBlock Origin",
"optional_permissions": [
"file:///*"
],
"options_ui": {
"page": "dashboard.html",
"open_in_tab": true
},
"permissions": [
"contextMenus",
"privacy",
"storage",
"tabs",
"unlimitedStorage",
"webNavigation",
"webRequest",
"webRequestBlocking",
"<all_urls>"
],
"short_name": "uBlock₀",
"sidebar_action": {
"default_title": "__MSG_statsPageName__",
"default_panel": "logger-ui.html",
"default_icon": {
"16": "img/ublock.svg",
"48": "img/ublock.svg"
}
},
"storage": {
"managed_schema": "managed_storage.json"
},
"version": "1.9.15.101",
"web_accessible_resources": [
"/web_accessible_resources/*"
]
}

View file

@ -0,0 +1,176 @@
/*******************************************************************************
uBlock Origin - a browser extension to block requests.
Copyright (C) 2018 Raymond Hill
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see {http://www.gnu.org/licenses/}.
Home: https://github.com/gorhill/uBlock
*/
// For background page
'use strict';
/******************************************************************************/
vAPI.net = {
onBeforeRequest: {},
onBeforeMaybeSpuriousCSPReport: {},
onHeadersReceived: {},
nativeCSPReportFiltering: true,
webRequest: chrome.webRequest,
canFilterResponseBody:
typeof chrome.webRequest === 'object' &&
typeof chrome.webRequest.filterResponseData === 'function'
};
/******************************************************************************/
vAPI.net.registerListeners = function() {
let wrApi = chrome.webRequest;
// legacy Chromium understands only these network request types.
let validTypes = new Set([
'image',
'main_frame',
'object',
'other',
'script',
'stylesheet',
'sub_frame',
'xmlhttprequest',
]);
// modern Chromium/WebExtensions: more types available.
if ( wrApi.ResourceType ) {
for ( let typeKey in wrApi.ResourceType ) {
if ( wrApi.ResourceType.hasOwnProperty(typeKey) ) {
validTypes.add(wrApi.ResourceType[typeKey]);
}
}
}
let denormalizeTypes = function(aa) {
if ( aa.length === 0 ) {
return Array.from(validTypes);
}
let out = new Set(),
i = aa.length;
while ( i-- ) {
let type = aa[i];
if ( validTypes.has(type) ) {
out.add(type);
}
if ( type === 'image' && validTypes.has('imageset') ) {
out.add('imageset');
}
}
return Array.from(out);
};
let normalizeRequestDetails = function(details) {
if ( details.tabId === vAPI.noTabId ) {
// Chromium uses `initiator` property.
if (
details.documentUrl === undefined &&
typeof details.initiator === 'string'
) {
details.documentUrl = details.initiator;
}
if ( typeof details.documentUrl === 'string' ) {
details.tabId = vAPI.anyTabId;
}
}
// https://github.com/gorhill/uBlock/issues/1493
// Chromium 49+/WebExtensions support a new request type: `ping`,
// which is fired as a result of using `navigator.sendBeacon`.
if ( details.type === 'ping' ) {
details.type = 'beacon';
return;
}
if ( details.type === 'imageset' ) {
details.type = 'image';
return;
}
};
let onBeforeRequestClient = this.onBeforeRequest.callback;
let onBeforeRequest = function(details) {
normalizeRequestDetails(details);
return onBeforeRequestClient(details);
};
if ( onBeforeRequest ) {
let urls = this.onBeforeRequest.urls || ['<all_urls>'];
let types = this.onBeforeRequest.types || undefined;
if (
(validTypes.has('websocket')) &&
(types === undefined || types.indexOf('websocket') !== -1) &&
(urls.indexOf('<all_urls>') === -1)
) {
if ( urls.indexOf('ws://*/*') === -1 ) {
urls.push('ws://*/*');
}
if ( urls.indexOf('wss://*/*') === -1 ) {
urls.push('wss://*/*');
}
}
wrApi.onBeforeRequest.addListener(
onBeforeRequest,
{ urls: urls, types: types },
this.onBeforeRequest.extra
);
}
// https://github.com/gorhill/uBlock/issues/3140
if ( typeof this.onBeforeMaybeSpuriousCSPReport.callback === 'function' ) {
wrApi.onBeforeRequest.addListener(
this.onBeforeMaybeSpuriousCSPReport.callback,
{
urls: [ 'http://*/*', 'https://*/*' ],
types: [ 'csp_report' ]
},
[ 'blocking', 'requestBody' ]
);
}
let onHeadersReceivedClient = this.onHeadersReceived.callback,
onHeadersReceivedClientTypes = this.onHeadersReceived.types.slice(0),
onHeadersReceivedTypes = denormalizeTypes(onHeadersReceivedClientTypes);
let onHeadersReceived = function(details) {
normalizeRequestDetails(details);
if (
onHeadersReceivedClientTypes.length !== 0 &&
onHeadersReceivedClientTypes.indexOf(details.type) === -1
) {
return;
}
return onHeadersReceivedClient(details);
};
if ( onHeadersReceived ) {
let urls = this.onHeadersReceived.urls || ['<all_urls>'];
let types = onHeadersReceivedTypes;
wrApi.onHeadersReceived.addListener(
onHeadersReceived,
{ urls: urls, types: types },
this.onHeadersReceived.extra
);
}
};
/******************************************************************************/

View file

@ -51,8 +51,10 @@
"default_locale": "en", "default_locale": "en",
"description": "__MSG_extShortDesc__", "description": "__MSG_extShortDesc__",
"icons": { "icons": {
"128": "img/icon_128.png", "16": "img/icon_16.png",
"16": "img/icon_16.png" "32": "img/icon_32.png",
"64": "img/icon_64.png",
"128": "img/icon_128.png"
}, },
"incognito": "split", "incognito": "split",
"manifest_version": 2, "manifest_version": 2,
@ -73,7 +75,7 @@
"webRequestBlocking", "webRequestBlocking",
"<all_urls>" "<all_urls>"
], ],
"short_name": "uBlock\u2080", "short_name": "uBlock",
"sidebar_action": { "sidebar_action": {
"default_icon": { "default_icon": {
"19": "img/browsericons/icon19.png", "19": "img/browsericons/icon19.png",

View file

@ -1,95 +1,95 @@
{ {
"applications":{ "applications": {
"gecko":{ "gecko": {
"id":"uBlock0@raymondhill.net", "id": "uBlock0@raymondhill.net",
"strict_min_version":"52.0" "strict_min_version": "52.0"
} }
}, },
"author":"All uBlock Origin contributors", "author": "All uBlock Origin contributors",
"background":{ "background": {
"page":"background.html" "page": "background.html"
}, },
"browser_action":{ "browser_action": {
"browser_style":false, "browser_style": false,
"default_icon":{ "default_icon": {
"19":"img/browsericons/icon19.png", "19": "img/browsericons/icon19.png",
"38":"img/browsericons/icon38.png" "38": "img/browsericons/icon38.png"
}, },
"default_title":"uBlock Origin", "default_title": "uBlock Origin",
"default_popup":"popup.html" "default_popup": "popup.html"
}, },
"commands":{ "commands": {
"launch-element-zapper":{ "launch-element-zapper": {
"description":"__MSG_popupTipZapper__" "description": "__MSG_popupTipZapper__"
}, },
"launch-element-picker":{ "launch-element-picker": {
"description":"__MSG_popupTipPicker__" "description": "__MSG_popupTipPicker__"
}, },
"launch-logger":{ "launch-logger": {
"description":"__MSG_popupTipLog__" "description": "__MSG_popupTipLog__"
} }
}, },
"content_scripts":[ "content_scripts": [
{ {
"matches":[ "matches": [
"http://*/*", "http://*/*",
"https://*/*", "https://*/*",
"file://*/*" "file://*/*"
], ],
"js":[ "js": [
"/js/vapi.js", "/js/vapi.js",
"/js/vapi-client.js", "/js/vapi-client.js",
"/js/contentscript.js" "/js/contentscript.js"
], ],
"run_at":"document_start", "run_at": "document_start",
"all_frames":true "all_frames": true
}, },
{ {
"matches":[ "matches": [
"http://*/*", "http://*/*",
"https://*/*" "https://*/*"
], ],
"js":[ "js": [
"/js/scriptlets/subscriber.js" "/js/scriptlets/subscriber.js"
], ],
"run_at":"document_idle", "run_at": "document_idle",
"all_frames":false "all_frames": false
} }
], ],
"default_locale":"en", "default_locale": "en",
"description":"__MSG_extShortDesc__", "description": "__MSG_extShortDesc__",
"icons":{ "icons": {
"16":"img/ublock.svg", "16": "img/ublock.svg",
"48":"img/ublock.svg", "48": "img/ublock.svg",
"96":"img/ublock.svg" "96": "img/ublock.svg"
}, },
"manifest_version":2, "manifest_version": 2,
"name":"uBlock Origin", "name": "uBlock Origin",
"options_ui":{ "options_ui": {
"page":"dashboard.html", "page": "dashboard.html",
"open_in_tab": true "open_in_tab": true
}, },
"permissions":[ "permissions": [
"contextMenus", "contextMenus",
"privacy", "privacy",
"storage", "storage",
"tabs", "tabs",
"webNavigation", "webNavigation",
"webRequest", "webRequest",
"webRequestBlocking", "webRequestBlocking",
"<all_urls>" "<all_urls>"
], ],
"short_name":"uBlock₀", "short_name": "uBlock₀",
"sidebar_action":{ "sidebar_action": {
"default_title":"__MSG_statsPageName__", "default_title": "__MSG_statsPageName__",
"default_panel":"logger-ui.html", "default_panel": "logger-ui.html",
"default_icon":{ "default_icon": {
"16":"img/ublock.svg", "16": "img/ublock.svg",
"48":"img/ublock.svg" "48": "img/ublock.svg"
} }
}, },
"version":"1.9.15.101", "version": "1.9.15.101",
"web_accessible_resources": [ "web_accessible_resources": [
"/web_accessible_resources/*" "/web_accessible_resources/*"
] ]
} }

BIN
src/img/icon_32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
src/img/icon_64.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

36
tools/make-debian-meta.py Normal file
View file

@ -0,0 +1,36 @@
#!/usr/bin/env python3
import os
import json
import re
import sys
if len(sys.argv) == 1 or not sys.argv[1]:
raise SystemExit('Build dir missing.')
proj_dir = os.path.join(os.path.split(os.path.abspath(__file__))[0], '..')
build_dir = os.path.abspath(sys.argv[1])
version = ''
with open(os.path.join(proj_dir, 'dist', 'version')) as f:
version = f.read().strip()
webext_manifest = {}
webext_manifest_file = os.path.join(build_dir, 'manifest.json')
with open(webext_manifest_file) as f2:
webext_manifest = json.load(f2)
match = re.search('^(\d+\.\d+\.\d+)(\.\d+)$', version)
if match:
buildtype = int(match.group(2)[1:])
if buildtype < 100:
builttype = 'b' + str(buildtype)
else:
builttype = 'rc' + str(buildtype - 100)
webext_manifest['version'] = match.group(1) + builttype
else:
webext_manifest['version'] = version
with open(webext_manifest_file, 'w') as f2:
json.dump(webext_manifest, f2, indent=2, separators=(',', ': '), sort_keys=True)
f2.write('\n')

58
tools/make-debian.sh Executable file
View file

@ -0,0 +1,58 @@
#!/usr/bin/env bash
#
# This script assumes a linux environment
echo "*** uBlock0.debian: Creating web store package"
echo "*** uBlock0.debian: Copying files"
DES=dist/build/uBlock0.debian
rm -rf $DES
mkdir -p $DES
bash ./tools/make-assets.sh $DES
cp -R src/css $DES/
cp -R src/img $DES/
cp -R src/js $DES/
cp -R src/lib $DES/
cp -R src/_locales $DES/
cp -R $DES/_locales/nb $DES/_locales/no
cp src/*.html $DES/
cp -R platform/chromium/img $DES/
cp platform/chromium/*.js $DES/js/
cp platform/chromium/*.html $DES/
cp platform/chromium/*.json $DES/
cp LICENSE.txt $DES/
cp platform/debian/manifest.json $DES/
cp platform/debian/vapi-usercss.js $DES/js/
cp platform/debian/vapi-webrequest.js $DES/js/
echo "*** uBlock0.debian: concatenating content scripts"
cat $DES/js/vapi-usercss.js > /tmp/contentscript.js
echo >> /tmp/contentscript.js
grep -v "^'use strict';$" $DES/js/vapi-usercss.real.js >> /tmp/contentscript.js
echo >> /tmp/contentscript.js
grep -v "^'use strict';$" $DES/js/vapi-usercss.pseudo.js >> /tmp/contentscript.js
echo >> /tmp/contentscript.js
grep -v "^'use strict';$" $DES/js/contentscript.js >> /tmp/contentscript.js
mv /tmp/contentscript.js $DES/js/contentscript.js
rm $DES/js/vapi-usercss.js
rm $DES/js/vapi-usercss.real.js
rm $DES/js/vapi-usercss.pseudo.js
echo "*** uBlock0.debian: Generating web accessible resources..."
cp -R src/web_accessible_resources $DES/
python3 tools/import-war.py $DES/
echo "*** uBlock0.debian: Generating meta..."
python tools/make-debian-meta.py $DES/
if [ "$1" = all ]; then
echo "*** uBlock0.debian: Creating package..."
pushd $DES > /dev/null
zip ../$(basename $DES).xpi -qr *
popd > /dev/null
fi
echo "*** uBlock0.debian: Package done."

View file

@ -25,7 +25,6 @@ cp platform/chromium/*.json $DES/
cp LICENSE.txt $DES/ cp LICENSE.txt $DES/
cp platform/webext/manifest.json $DES/ cp platform/webext/manifest.json $DES/
cp platform/webext/polyfill.js $DES/js/
cp platform/webext/vapi-usercss.js $DES/js/ cp platform/webext/vapi-usercss.js $DES/js/
cp platform/webext/vapi-webrequest.js $DES/js/ cp platform/webext/vapi-webrequest.js $DES/js/