summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMárcio Alexandre Silva Delgado <coadde@lavabit.com>2013-01-16 15:54:22 -0200
committerMárcio Alexandre Silva Delgado <coadde@lavabit.com>2013-01-16 15:54:22 -0200
commit06a7400674aa407e41b5147be016f71c3acdda06 (patch)
tree50f3a7315288f1b8fbdca48c2a265708313d039a
parent01f906403504ea1a61cc42b6bf4d795571dda0f8 (diff)
parent55c09fec2efe49915ada22e000d6e6aa6dc503de (diff)
Merge branch 'master' of ssh://parabolagnulinux.org:1863/srv/git/abslibre
-rw-r--r--libre/iceape-l10n/PKGBUILD1
-rw-r--r--libre/icedove-l10n/PKGBUILD3
-rw-r--r--libre/iceweasel-l10n/.gitignore (renamed from libre/iceweasel-i18n/.gitignore)0
-rw-r--r--libre/iceweasel-l10n/Makefile (renamed from libre/iceweasel-i18n/Makefile)0
-rw-r--r--libre/iceweasel-l10n/PKGBUILD (renamed from libre/iceweasel-i18n/PKGBUILD)28
-rw-r--r--libre/iceweasel-l10n/PKGBUILD.in (renamed from libre/iceweasel-i18n/PKGBUILD.in)0
-rw-r--r--libre/iceweasel-l10n/region.properties32
-rw-r--r--libre/iceweasel-libre/PKGBUILD8
-rw-r--r--libre/iceweasel-libre/bug677092.patch330
9 files changed, 394 insertions, 8 deletions
diff --git a/libre/iceape-l10n/PKGBUILD b/libre/iceape-l10n/PKGBUILD
index 785b726a4..1170df1d5 100644
--- a/libre/iceape-l10n/PKGBUILD
+++ b/libre/iceape-l10n/PKGBUILD
@@ -56,6 +56,7 @@ do
package_iceape-l10n-$(echo $lang | tr A-Z a-z)() {
replaces=(iceape-i18n-$(echo $lang | tr A-Z a-z))
conflicts=(iceape-i18n-$(echo $lang | tr A-Z a-z))
+ provides=(iceape-i18n-$(echo $lang | tr A-Z a-z))
install -Dm644 \"\$srcdir$_path/langpack-$lang@iceape.mozilla.org.xpi\" \"\$pkgdir$_path/langpack-$lang@iceape.mozilla.org.xpi\"
}
"
diff --git a/libre/icedove-l10n/PKGBUILD b/libre/icedove-l10n/PKGBUILD
index 7e983a88c..208e176ba 100644
--- a/libre/icedove-l10n/PKGBUILD
+++ b/libre/icedove-l10n/PKGBUILD
@@ -10,7 +10,7 @@ pkgname=($(for lang in ${_langpacks[@]}
do echo $pkgbase-$lang | tr A-Z a-z
done))
-pkgrel=1
+pkgrel=2
pkgdesc="Language packs for Debian Icedove."
arch=('i686' 'x86_64' 'mips64el')
url="http://packages.debian.org/source/experimental/icedove"
@@ -35,6 +35,7 @@ do
package_icedove-l10n-$(echo $lang | tr A-Z a-z)() {
replaces=(icedove-i18n-$(echo $lang | tr A-Z a-z))
conflicts=(icedove-i18n-$(echo $lang | tr A-Z a-z))
+ provides=(icedove-i18n-$(echo $lang | tr A-Z a-z))
install -Dm644 \"\$srcdir/langpack-$lang@icedove.mozilla.org.xpi\" \"\$pkgdir$_path/langpack-$lang@icedove.mozilla.org.xpi\"
}
"
diff --git a/libre/iceweasel-i18n/.gitignore b/libre/iceweasel-l10n/.gitignore
index 3e1eb57b5..3e1eb57b5 100644
--- a/libre/iceweasel-i18n/.gitignore
+++ b/libre/iceweasel-l10n/.gitignore
diff --git a/libre/iceweasel-i18n/Makefile b/libre/iceweasel-l10n/Makefile
index d596111f3..d596111f3 100644
--- a/libre/iceweasel-i18n/Makefile
+++ b/libre/iceweasel-l10n/Makefile
diff --git a/libre/iceweasel-i18n/PKGBUILD b/libre/iceweasel-l10n/PKGBUILD
index 437e959d3..ec959542e 100644
--- a/libre/iceweasel-i18n/PKGBUILD
+++ b/libre/iceweasel-l10n/PKGBUILD
@@ -16,7 +16,7 @@ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; }
_langpacks=(ach af ak ar as ast be bg bn-BD bn-IN br bs ca cs csb cy da de el en-GB en-ZA eo es-AR es-CL es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gu-IN he hi-IN hr hu hy-AM id is it ja kk km kn ko ku lg lij lt lv mai mk ml mr nb-NO nl nn-NO nso or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son sq sr sv-SE ta ta-LK te th tr uk vi zh-CN zh-TW zu)
-pkgbase=iceweasel-i18n
+pkgbase=iceweasel-l10n
pkgname=($(for lang in ${_langpacks[@]}
do echo $pkgbase-$lang | tr A-Z a-z
done))
@@ -29,12 +29,15 @@ arch=('any')
url="http://www.geticeweasel.org/"
license=('MPL')
depends=("iceweasel-libre>=$pkgver")
-source=()
+makedepends=('unzip' 'zip')
+source=('region.properties')
for lang in ${_langpacks[@]}
do
source+=("${_debrepo}/`debfile ${_debname}`-l10n-$(echo $lang | tr A-Z a-z)_${_debver}-${_debrel}_all.deb")
done
+_path="/usr/lib/iceweasel/extensions"
+
build() {
cd "${srcdir}"
for f in *.deb
@@ -42,21 +45,34 @@ build() {
bsdtar xf $f
bsdtar xf data.tar.xz
done
-}
-_path="/usr/lib/iceweasel/extensions"
+cd $srcdir$_path
+for i in ${_langpacks[@]}
+do
+ unzip -q langpack-$i@iceweasel.mozilla.org.xpi -d $i
+ rm langpack-$i@iceweasel.mozilla.org.xpi
+ install -Dm644 $srcdir/region.properties $i/chrome/$i/locale/browser-region
+ zip -q -r langpack-$i@iceweasel.mozilla.org.xpi $i
+done
+
+cd $srcdir
+}
for lang in ${_langpacks[@]}
do
eval "
-package_iceweasel-i18n-$(echo $lang | tr A-Z a-z)() {
+package_iceweasel-l10n-$(echo $lang | tr A-Z a-z)() {
+ replaces=(icedove-i18n-$(echo $lang | tr A-Z a-z))
+ conflicts=(icedove-i18n-$(echo $lang | tr A-Z a-z))
+ provides=(icedove-i18n-$(echo $lang | tr A-Z a-z))
install -Dm644 \"\$srcdir$_path/langpack-$lang@iceweasel.mozilla.org.xpi\" \"\$pkgdir$_path/langpack-$lang@iceweasel.mozilla.org.xpi\"
}
"
done
-md5sums=('08556c8d27a4313b5e67e655d2e1e828'
+md5sums=('428246ef3fb64103ff2cf5eaae2a92ca'
+ '08556c8d27a4313b5e67e655d2e1e828'
'9fa01f43db09b12cd724f94c28883a9e'
'0d1ef852709fcae1842105d675c22312'
'56247c867b52a19808ca72f7fceb349a'
diff --git a/libre/iceweasel-i18n/PKGBUILD.in b/libre/iceweasel-l10n/PKGBUILD.in
index 05477caef..05477caef 100644
--- a/libre/iceweasel-i18n/PKGBUILD.in
+++ b/libre/iceweasel-l10n/PKGBUILD.in
diff --git a/libre/iceweasel-l10n/region.properties b/libre/iceweasel-l10n/region.properties
new file mode 100644
index 000000000..4399d8db7
--- /dev/null
+++ b/libre/iceweasel-l10n/region.properties
@@ -0,0 +1,32 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Default search engine
+browser.search.defaultenginename=DuckDuckGo HTML
+
+# Search engine order (order displayed in the search bar dropdown)s
+browser.search.order.1=DuckDuckGo HTML
+browser.search.order.2=DuckDuckGo Lite
+browser.search.order.3=Seeks Search
+
+# URL for site-specific search engines
+# TRANSLATION NOTE: {moz:domain} and {searchTerms} are placeholders for the site
+# to be searched and the user's search query. Place them in the appropriate location
+# for your locale's URL but do not translate them.
+browser.search.siteSearchURL=https://duckduckgo.com/html/?q=site%3A{moz:domain}+{searchTerms}
+
+# increment this number when anything gets changed in the list below. This will
+# cause Firefox to re-read these prefs and inject any new handlers into the
+# profile database. Note that "new" is defined as "has a different URL"; this
+# means that it's not possible to update the name of existing handler, so
+# don't make any spelling errors here.
+gecko.handlerService.defaultHandlersVersion=3
+
+# The default set of protocol handlers for irc:
+gecko.handlerService.schemes.irc.0.name=Freenode
+gecko.handlerService.schemes.irc.0.uriTemplate=https://webchat.freenode.net/?channels=%s
+
+# The default set of protocol handlers for ircs:
+gecko.handlerService.schemes.ircs.0.name=Freenode
+gecko.handlerService.schemes.ircs.0.uriTemplate=https://webchat.freenode.net/?channels=%s
diff --git a/libre/iceweasel-libre/PKGBUILD b/libre/iceweasel-libre/PKGBUILD
index 12cdb98d5..cbf402860 100644
--- a/libre/iceweasel-libre/PKGBUILD
+++ b/libre/iceweasel-libre/PKGBUILD
@@ -22,7 +22,7 @@ debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; }
_pkgname=iceweasel
pkgname=iceweasel-libre
pkgver=$_debver.$_debrel
-pkgrel=1
+pkgrel=4
if [ -z "$pkgname" ]; then pkgname=$_pkgname; fi
if $_pgo; then
@@ -52,6 +52,7 @@ source=("$_debrepo/`debfile $_debname`_$_debver.orig.tar.bz2"
iceweasel-install-dir.patch
vendor.js
shared-libs.patch
+ bug677092.patch
Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch)
md5sums=('366e1e4847d7e00eba77ee5a4be0d3db'
'6a571d3a3b355c331f67d57702f4fccf'
@@ -62,6 +63,7 @@ md5sums=('366e1e4847d7e00eba77ee5a4be0d3db'
'abf5ecb74caa857abb42bcfbb3442d9c'
'0d053487907de4376d67d8f499c5502b'
'52e52f840a49eb1d14be1c0065b03a93'
+ 'e1204e0be964b6964ebfb6467e05141f'
'65f68090d2a69b467bd2707d0c4ea3bd')
if [ "$_pkgname" != "$pkgname" ]; then
@@ -97,6 +99,10 @@ build() {
patch -Np1 -i "$srcdir/iceweasel-install-dir.patch" # install to /usr/lib/$_pkgname
patch -Np1 -i "$srcdir/libre.patch"
patch -Np1 -i "$srcdir/shared-libs.patch"
+
+ # Back out https://bugzilla.mozilla.org/show_bug.cgi?id=677092
+ # in order to fix https://bugzilla.mozilla.org/show_bug.cgi?id=818468
+ patch -Rp1 -i ../bug677092.patch
cp "$srcdir/mozconfig" .mozconfig # Load our build config, disable SafeSearch
diff --git a/libre/iceweasel-libre/bug677092.patch b/libre/iceweasel-libre/bug677092.patch
new file mode 100644
index 000000000..aee09b451
--- /dev/null
+++ b/libre/iceweasel-libre/bug677092.patch
@@ -0,0 +1,330 @@
+exporting patch:
+# HG changeset patch
+# User Axel Hecht <axel@pike.org>
+# Date 1348128099 -7200
+# Node ID 812d0ba8317507c4026958a740960384eac1507a
+# Parent 97e49e7a33266a0680e5af59289264a07e4321f8
+bug 677092, make language packs restartless, r=Unfocused
+Make language packs just trigger the chrome registration hooks, and
+disable picking up bootstrap.js, and declare them restartless.
+
+diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/XPIProvider.jsm
+--- a/toolkit/mozapps/extensions/XPIProvider.jsm Wed Sep 26 13:08:50 2012 +0200
++++ b/toolkit/mozapps/extensions/XPIProvider.jsm Thu Sep 20 10:01:39 2012 +0200
+@@ -740,8 +740,8 @@
+ }
+ }
+ else {
+- // spell check dictionaries never require a restart
+- if (addon.type == "dictionary")
++ // spell check dictionaries and language packs never require a restart
++ if (addon.type == "dictionary" || addon.type == "locale")
+ addon.bootstrap = true;
+
+ // Only extensions are allowed to provide an optionsURL, optionsType or aboutURL. For
+@@ -3695,6 +3695,11 @@
+ Components.manager.addBootstrappedManifestLocation(aFile);
+
+ try {
++ // Don't call bootstrap.js methods for language packs,
++ // they only contain chrome.
++ if (aType == "locale")
++ return;
++
+ // Load the scope if it hasn't already been loaded
+ if (!(aId in this.bootstrapScopes))
+ this.loadBootstrapScope(aId, aFile, aVersion, aType);
+diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/addons/test_langpack/chrome.manifest
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/toolkit/mozapps/extensions/test/addons/test_langpack/chrome.manifest Thu Sep 20 10:01:39 2012 +0200
+@@ -0,0 +1,1 @@
++locale test-langpack x-testing locale/x-testing
+diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/addons/test_langpack/install.rdf
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/toolkit/mozapps/extensions/test/addons/test_langpack/install.rdf Thu Sep 20 10:01:39 2012 +0200
+@@ -0,0 +1,23 @@
++<?xml version="1.0"?>
++
++<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++ xmlns:em="http://www.mozilla.org/2004/em-rdf#">
++
++ <Description about="urn:mozilla:install-manifest">
++ <em:id>langpack-x-testing@tests.mozilla.org</em:id>
++ <em:type>8</em:type>
++ <em:version>1.0</em:version>
++
++ <!-- Front End MetaData -->
++ <em:name>Language Pack x-testing</em:name>
++
++ <em:targetApplication>
++ <Description>
++ <em:id>xpcshell@tests.mozilla.org</em:id>
++ <em:minVersion>1</em:minVersion>
++ <em:maxVersion>2</em:maxVersion>
++ </Description>
++ </em:targetApplication>
++
++ </Description>
++</RDF>
+diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/xpcshell/test_langpack.js
+--- /dev/null Thu Jan 01 00:00:00 1970 +0000
++++ b/toolkit/mozapps/extensions/test/xpcshell/test_langpack.js Thu Sep 20 10:01:39 2012 +0200
+@@ -0,0 +1,247 @@
++/* Any copyright is dedicated to the Public Domain.
++ * http://creativecommons.org/publicdomain/zero/1.0/
++ */
++
++// This verifies that language packs can be used without restarts.
++Components.utils.import("resource://gre/modules/Services.jsm");
++
++// Enable loading extensions from the user scopes
++Services.prefs.setIntPref("extensions.enabledScopes",
++ AddonManager.SCOPE_PROFILE + AddonManager.SCOPE_USER);
++
++createAppInfo("xpcshell@tests.mozilla.org", "XPCShell", "1", "1.9.2");
++
++const profileDir = gProfD.clone();
++profileDir.append("extensions");
++const userExtDir = gProfD.clone();
++userExtDir.append("extensions2");
++userExtDir.append(gAppInfo.ID);
++registerDirectory("XREUSysExt", userExtDir.parent);
++
++var chrome = Components.classes["@mozilla.org/chrome/chrome-registry;1"]
++ .getService(Components.interfaces.nsIXULChromeRegistry);
++
++function do_check_locale_not_registered(provider) {
++ let didThrow = false;
++ try {
++ chrome.getSelectedLocale(provider);
++ } catch (e) {
++ didThrow = true;
++ }
++ do_check_true(didThrow);
++}
++
++function run_test() {
++ do_test_pending();
++
++ startupManager();
++
++ run_test_1();
++}
++
++// Tests that installing doesn't require a restart
++function run_test_1() {
++ prepare_test({ }, [
++ "onNewInstall"
++ ]);
++
++ AddonManager.getInstallForFile(do_get_addon("test_langpack"), function(install) {
++ ensure_test_completed();
++
++ do_check_neq(install, null);
++ do_check_eq(install.type, "locale");
++ do_check_eq(install.version, "1.0");
++ do_check_eq(install.name, "Language Pack x-testing");
++ do_check_eq(install.state, AddonManager.STATE_DOWNLOADED);
++ do_check_true(install.addon.hasResource("install.rdf"));
++ do_check_false(install.addon.hasResource("bootstrap.js"));
++ do_check_eq(install.addon.operationsRequiringRestart &
++ AddonManager.OP_NEEDS_RESTART_INSTALL, 0);
++
++ let addon = install.addon;
++ prepare_test({
++ "langpack-x-testing@tests.mozilla.org": [
++ ["onInstalling", false],
++ "onInstalled"
++ ]
++ }, [
++ "onInstallStarted",
++ "onInstallEnded",
++ ], function() {
++ do_check_true(addon.hasResource("install.rdf"));
++ check_test_1();
++ });
++ install.install();
++ });
++}
++
++function check_test_1() {
++ AddonManager.getAllInstalls(function(installs) {
++ // There should be no active installs now since the install completed and
++ // doesn't require a restart.
++ do_check_eq(installs.length, 0);
++
++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
++ do_check_neq(b1, null);
++ do_check_eq(b1.version, "1.0");
++ do_check_false(b1.appDisabled);
++ do_check_false(b1.userDisabled);
++ do_check_true(b1.isActive);
++ // check chrome reg that language pack is registered
++ do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
++ do_check_true(b1.hasResource("install.rdf"));
++ do_check_false(b1.hasResource("bootstrap.js"));
++
++ let dir = do_get_addon_root_uri(profileDir, "langpack-x-testing@tests.mozilla.org");
++
++ AddonManager.getAddonsWithOperationsByTypes(null, function(list) {
++ do_check_eq(list.length, 0);
++
++ run_test_2();
++ });
++ });
++ });
++}
++
++// Tests that disabling doesn't require a restart
++function run_test_2() {
++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
++ prepare_test({
++ "langpack-x-testing@tests.mozilla.org": [
++ ["onDisabling", false],
++ "onDisabled"
++ ]
++ });
++
++ do_check_eq(b1.operationsRequiringRestart &
++ AddonManager.OP_NEEDS_RESTART_DISABLE, 0);
++ b1.userDisabled = true;
++ ensure_test_completed();
++
++ do_check_neq(b1, null);
++ do_check_eq(b1.version, "1.0");
++ do_check_false(b1.appDisabled);
++ do_check_true(b1.userDisabled);
++ do_check_false(b1.isActive);
++ // check chrome reg that language pack is not registered
++ do_check_locale_not_registered("test-langpack");
++
++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) {
++ do_check_neq(newb1, null);
++ do_check_eq(newb1.version, "1.0");
++ do_check_false(newb1.appDisabled);
++ do_check_true(newb1.userDisabled);
++ do_check_false(newb1.isActive);
++
++ run_test_3();
++ });
++ });
++}
++
++// Test that restarting doesn't accidentally re-enable
++function run_test_3() {
++ shutdownManager();
++ startupManager(false);
++ // check chrome reg that language pack is not registered
++ do_check_locale_not_registered("test-langpack");
++
++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
++ do_check_neq(b1, null);
++ do_check_eq(b1.version, "1.0");
++ do_check_false(b1.appDisabled);
++ do_check_true(b1.userDisabled);
++ do_check_false(b1.isActive);
++
++ run_test_4();
++ });
++}
++
++// Tests that enabling doesn't require a restart
++function run_test_4() {
++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
++ prepare_test({
++ "langpack-x-testing@tests.mozilla.org": [
++ ["onEnabling", false],
++ "onEnabled"
++ ]
++ });
++
++ do_check_eq(b1.operationsRequiringRestart &
++ AddonManager.OP_NEEDS_RESTART_ENABLE, 0);
++ b1.userDisabled = false;
++ ensure_test_completed();
++
++ do_check_neq(b1, null);
++ do_check_eq(b1.version, "1.0");
++ do_check_false(b1.appDisabled);
++ do_check_false(b1.userDisabled);
++ do_check_true(b1.isActive);
++ // check chrome reg that language pack is registered
++ do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
++
++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) {
++ do_check_neq(newb1, null);
++ do_check_eq(newb1.version, "1.0");
++ do_check_false(newb1.appDisabled);
++ do_check_false(newb1.userDisabled);
++ do_check_true(newb1.isActive);
++
++ run_test_5();
++ });
++ });
++}
++
++// Tests that a restart shuts down and restarts the add-on
++function run_test_5() {
++ shutdownManager();
++ startupManager(false);
++ // check chrome reg that language pack is registered
++ do_check_eq(chrome.getSelectedLocale("test-langpack"), "x-testing");
++
++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
++ do_check_neq(b1, null);
++ do_check_eq(b1.version, "1.0");
++ do_check_false(b1.appDisabled);
++ do_check_false(b1.userDisabled);
++ do_check_true(b1.isActive);
++ do_check_false(isExtensionInAddonsList(profileDir, b1.id));
++
++ run_test_7();
++ });
++}
++
++// Tests that uninstalling doesn't require a restart
++function run_test_7() {
++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
++ prepare_test({
++ "langpack-x-testing@tests.mozilla.org": [
++ ["onUninstalling", false],
++ "onUninstalled"
++ ]
++ });
++
++ do_check_eq(b1.operationsRequiringRestart &
++ AddonManager.OP_NEEDS_RESTART_UNINSTALL, 0);
++ b1.uninstall();
++
++ check_test_7();
++ });
++}
++
++function check_test_7() {
++ ensure_test_completed();
++ // check chrome reg that language pack is not registered
++ do_check_locale_not_registered("test-langpack");
++
++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(b1) {
++ do_check_eq(b1, null);
++
++ restartManager();
++
++ AddonManager.getAddonByID("langpack-x-testing@tests.mozilla.org", function(newb1) {
++ do_check_eq(newb1, null);
++
++ do_test_finished();
++ });
++ });
++}
+diff -r 97e49e7a3326 -r 812d0ba83175 toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini
+--- a/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini Wed Sep 26 13:08:50 2012 +0200
++++ b/toolkit/mozapps/extensions/test/xpcshell/xpcshell.ini Thu Sep 20 10:01:39 2012 +0200
+@@ -139,6 +139,7 @@
+ [test_corrupt_strictcompat.js]
+ [test_db_sanity.js]
+ [test_dictionary.js]
++[test_langpack.js]
+ [test_disable.js]
+ [test_distribution.js]
+ [test_dss.js]