tbb-commits
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 1 participants
- 18540 discussions

[tor-browser-build/master] There is no separate Torbutton project to build anymore
by gk@torproject.org 08 Aug '19
by gk@torproject.org 08 Aug '19
08 Aug '19
commit 44c6bc36a106f2e95eec12c296041bd13c999c58
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Aug 8 08:09:57 2019 +0000
There is no separate Torbutton project to build anymore
---
projects/tor-browser/build | 1 -
projects/tor-browser/config | 3 ---
projects/torbutton/build | 13 -------------
projects/torbutton/config | 26 --------------------------
4 files changed, 43 deletions(-)
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 71084f2..f728612 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -49,7 +49,6 @@ mkdir -p "$TBDIR/$MEEKPROFILEPATH/extensions"
unzip -d $rootdir $rootdir/[% c('input_files_by_name/firefox') %]/mar-tools-*.zip
MARTOOLS=$rootdir/mar-tools
-mv [% c('input_files_by_name/torbutton') %] "$TBDIR/$EXTSPATH/torbutton(a)torproject.org.xpi"
mv [% c('input_files_by_name/https-everywhere') %] "$TBDIR/$EXTSPATH/https-everywhere-eff(a)eff.org.xpi"
mv [% c('input_files_by_name/noscript') %] "$TBDIR/$EXTSPATH/{73a6fe31-595d-460b-a920-fcc0f8843232}.xpi"
diff --git a/projects/tor-browser/config b/projects/tor-browser/config
index dc95350..cf8fcb3 100644
--- a/projects/tor-browser/config
+++ b/projects/tor-browser/config
@@ -60,9 +60,6 @@ input_files:
- project: firefox-langpacks
name: firefox-langpacks
enable: '[% ! c("var/testbuild") && ! c("var/android") %]'
- - project: torbutton
- name: torbutton
- enable: '[% ! c("var/android") %]'
- project: https-everywhere
name: https-everywhere
- project: fonts
diff --git a/projects/torbutton/build b/projects/torbutton/build
deleted file mode 100644
index 38136c4..0000000
--- a/projects/torbutton/build
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-[% c("var/set_default_env") -%]
-tar xvf [% project %]-[% c('version') %].tar.gz
-cd [% project %]-[% c('version') %]
-mkdir -p pkg
-./makexpi.sh
-mkdir pkg/tmp
-cd pkg/tmp
-unzip ../*.xpi
-[% c('zip', {
- zip_src => [ '.' ],
- zip_args => dest_dir _ '/' _ c('filename'),
- }) %]
diff --git a/projects/torbutton/config b/projects/torbutton/config
deleted file mode 100644
index 1e37b80..0000000
--- a/projects/torbutton/config
+++ /dev/null
@@ -1,26 +0,0 @@
-# vim: filetype=yaml sw=2
-version: 2.2.1
-git_url: https://git.torproject.org/torbutton.git
-git_hash: '[% c("version") %]'
-gpg_keyring: torbutton.gpg
-tag_gpg_id: 1
-filename: "[% project %]-[% c('version') %]-[% c('var/build_id') %].xpi"
-var:
- container:
- use_container: 1
-input_files:
- - project: container-image
-
-steps:
- src-tarballs:
- filename: 'src-[% project %]-[% c("version") %].tar.xz'
- input_files: []
- var:
- container:
- use_container: 0
-
-targets:
- nightly:
- version: '[% c("abbrev") %]'
- git_hash: master
- tag_gpg_id: 0
1
0
commit f6ebe5f9d074459d8a566e82f441e908e411b7ad
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Aug 7 21:18:55 2019 +0000
Switching over to esr68
---
projects/firefox-langpacks/config | 2 +-
projects/firefox/config | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/projects/firefox-langpacks/config b/projects/firefox-langpacks/config
index 34d6fad..17a707a 100644
--- a/projects/firefox-langpacks/config
+++ b/projects/firefox-langpacks/config
@@ -4,7 +4,7 @@ filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/buil
var:
ff_version: '[% pc("firefox", "var/firefox_version") %]'
- ff_build: build1
+ ff_build: build2
input_filename: 'dl-langpack-[% c("var/ff_arch") %]-[% c("version") %]'
targets:
diff --git a/projects/firefox/config b/projects/firefox/config
index 3608a56..ef0fa83 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -8,7 +8,7 @@ git_submodule: 1
gpg_keyring: torbutton.gpg
var:
- firefox_platform_version: 60.8.0
+ firefox_platform_version: 68.0
firefox_version: '[% c("var/firefox_platform_version") %]esr'
torbrowser_branch: 9.0
torbrowser_update_channel: alpha
1
0

[tor-browser-build/master] Bug 30321: Linux changes for Firefox ESR 68
by gk@torproject.org 07 Aug '19
by gk@torproject.org 07 Aug '19
07 Aug '19
commit c26b8196c90e908a83104c639865a2aca6598efe
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Aug 7 20:12:43 2019 +0000
Bug 30321: Linux changes for Firefox ESR 68
---
projects/firefox/build | 40 ++++++++++++++++-----------------
projects/firefox/config | 24 +++++++++++---------
projects/firefox/mozconfig-linux-i686 | 23 +++++++++++--------
projects/firefox/mozconfig-linux-x86_64 | 12 ++++++++--
4 files changed, 56 insertions(+), 43 deletions(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index e0870c1..18db7b9 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -55,18 +55,20 @@ EOF
[% IF c("var/linux") %]
mkdir -p /var/tmp/dist
tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/binutils') %]
- export PATH="/var/tmp/dist/binutils/bin:$PATH"
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/python') %]
+ tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/node') %]
+ export PATH="/var/tmp/dist/binutils/bin:/var/tmp/dist/python/bin:/var/tmp/dist/node/bin:$PATH"
+ # Use clang for everything on Linux now.
+ tar -C /var/tmp/dist -xf [% c('input_files_by_name/clang') %]
+ export LLVM_CONFIG="/var/tmp/dist/clang/bin/llvm-config"
+ export PATH="/var/tmp/dist/clang/bin:$PATH"
[% END -%]
mkdir -p /var/tmp/dist
tar -C /var/tmp/dist -xf [% c('input_files_by_name/rust') %]
-export PATH="/var/tmp/dist/rust/bin:$PATH"
-
-[% IF c("var/linux") %]
- # Add llvm so stylo can build
- tar -C /var/tmp/dist -xf [% c('input_files_by_name/llvm') %]
- export LLVM_CONFIG="/var/tmp/dist/llvm/bin/llvm-config"
-[% END -%]
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/cbindgen') %]
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/nasm') %]
+export PATH="/var/tmp/dist/rust/bin:/var/tmp/dist/cbindgen:/var/tmp/dist/nasm/bin:$PATH"
tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
@@ -135,12 +137,6 @@ fi
export WIDL_TIME_OVERRIDE="0"
[% END %]
-[% IF c("var/osname") == "linux-i686" -%]
- export LDFLAGS=-m32
- export CFLAGS=-m32
- export CC='gcc -m32'
-[% END -%]
-
[% IF c("var/windows") %]
patch -p1 < $rootdir/nsis-uninstall.patch
[% END -%]
@@ -159,8 +155,10 @@ fi
rm -f configure
rm -f js/src/configure
-./mach configure --with-tor-browser-version=[% c("var/torbrowser_version") %] --with-distribution-id=org.torproject --enable-update-channel=[% c("var/torbrowser_update_channel") %] --enable-bundled-fonts --with-branding=[% c("var/branding_directory") %]
-./mach build --verbose
+./mach configure --with-distribution-id=org.torproject --enable-bundled-fonts
+# Don't build with --verbose anymore or otherwise Stylo compilation breaks on
+# Linux. See: #30321 for details.
+./mach build
[% IF c("var/android") %]
# Building a multi-locale .apk
@@ -229,11 +227,11 @@ cp -p tools/update-packaging/*.sh $MARTOOLS/
cp -p obj-*/dist/host/bin/mar $MARTOOLS/
cp -p obj-*/dist/host/bin/mbsdiff $MARTOOLS/
[% IF c("var/linux") %]
- cp -p obj-*/modules/libmar/tool/signmar $MARTOOLS/
- cp -p obj-*/security/nss/cmd/certutil/certutil_certutil/certutil $MARTOOLS/
- cp -p obj-*/security/nss/cmd/modutil/modutil_modutil/modutil $MARTOOLS/
- cp -p obj-*/security/nss/cmd/pk12util/pk12util_pk12util/pk12util $MARTOOLS/
- cp -p obj-*/security/nss/cmd/shlibsign/shlibsign_shlibsign/shlibsign $MARTOOLS/
+ cp -p obj-*/dist/bin/signmar $MARTOOLS/
+ cp -p obj-*/dist/bin/certutil $MARTOOLS/
+ cp -p obj-*/dist/bin/modutil $MARTOOLS/
+ cp -p obj-*/dist/bin/pk12util $MARTOOLS/
+ cp -p obj-*/dist/bin/shlibsign $MARTOOLS/
NSS_LIBS="libfreeblpriv3.so libmozsqlite3.so libnss3.so libnssckbi.so libnssdbm3.so libnssutil3.so libsmime3.so libsoftokn3.so libssl3.so"
NSPR_LIBS="libnspr4.so libplc4.so libplds4.so"
for LIB in $NSS_LIBS $NSPR_LIBS; do
diff --git a/projects/firefox/config b/projects/firefox/config
index 14be6ef..3608a56 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -20,7 +20,9 @@ var:
- zip
- autoconf2.13
- yasm
+ # XXX: for mach
- python
+ - pkg-config
container:
use_container: 1
# this should be updated when the list of gradle dependencies is changed
@@ -78,12 +80,8 @@ targets:
- hardening-wrapper
# To pass configure since ESR 31.
- libpulse-dev
- # To pass configure since ESR 45.
- - libgconf2-dev
# To pass configure since ESR 52
- libx11-xcb-dev
- # We built GCC but not the libmpc2, thus we need to install it
- - libmpc2
linux-i686:
var:
@@ -94,15 +92,11 @@ targets:
- libgtk-3-dev:i386
- libdbus-glib-1-dev:i386
- libxt-dev:i386
+ - hardening-wrapper
# To pass configure since ESR 31.
- libpulse-dev:i386
- # To pass configure since ESR 45.
- - libgconf2-dev:i386
# To pass configure since ESR 52
- libx11-xcb-dev:i386
- # We built GCC but not the libmpc2, thus we need to install it
- - libmpc2
- - hardening-wrapper
osx-x86_64:
var:
@@ -148,8 +142,16 @@ input_files:
enable: '[% c("var/windows") %]'
- project: rust
name: rust
- - project: llvm
- name: llvm
+ - project: cbindgen
+ name: cbindgen
+ - project: node
+ name: node
+ - project: nasm
+ name: nasm
+ - project: python
+ name: python
+ - project: clang
+ name: clang
enable: '[% c("var/linux") %]'
- project: fxc2
name: fxc2
diff --git a/projects/firefox/mozconfig-linux-i686 b/projects/firefox/mozconfig-linux-i686
index ef952aa..ff65c87 100755
--- a/projects/firefox/mozconfig-linux-i686
+++ b/projects/firefox/mozconfig-linux-i686
@@ -6,15 +6,20 @@ mk_add_options MOZILLA_OFFICIAL=1
export MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
-export CFLAGS=-m32
-export CXXFLAGS=-m32
-export LDFLAGS=-m32
-export XLDOPTS=-m32
-export ASFLAGS=-m32
-export BINDGEN_CFLAGS='-m32 --gcc-toolchain=/var/tmp/dist/gcc'
+# We want to build with clang now and point to the GCC toolchain until #29041 is
+# fixed. We explicitly need to define the host compiler as well as for some
+# reason the gcc-toolchain argument does not get passed along otherwise.
+CC="clang --gcc-toolchain=/var/tmp/dist/gcc"
+CXX="clang++ --gcc-toolchain=/var/tmp/dist/gcc"
+HOST_CC=$CC
+HOST_CXX=$CXX
+
+export BINDGEN_CFLAGS='--gcc-toolchain=/var/tmp/dist/gcc'
ac_add_options --target=i686-linux-gnu
-ac_add_options --host=i686-linux-gnu
+
+# XXX: gold and lld break when linking libxul, resort to bfd
+ac_add_options --enable-linker=bfd
ac_add_options --enable-optimize
#ac_add_options --disable-optimize
@@ -23,7 +28,7 @@ ac_add_options --enable-official-branding
# Let's support GTK3 for ESR60
ac_add_options --enable-default-toolkit=cairo-gtk3
-ac_add_options --enable-tor-browser-update
+# XXX: ac_add_options --enable-tor-browser-update
ac_add_options --enable-signmar
ac_add_options --enable-verify-mar
@@ -31,9 +36,9 @@ ac_add_options --disable-strip
ac_add_options --disable-install-strip
ac_add_options --disable-tests
ac_add_options --disable-debug
-ac_add_options --disable-maintenance-service
ac_add_options --disable-crashreporter
ac_add_options --disable-webrtc
# Let's make sure no preference is enabling either Adobe's or Google's CDM.
ac_add_options --disable-eme
+ac_add_options --enable-proxy-bypass-protection
#ac_add_options --disable-ctypes
diff --git a/projects/firefox/mozconfig-linux-x86_64 b/projects/firefox/mozconfig-linux-x86_64
index 75fba50..69dc4ef 100755
--- a/projects/firefox/mozconfig-linux-x86_64
+++ b/projects/firefox/mozconfig-linux-x86_64
@@ -6,6 +6,14 @@ mk_add_options MOZILLA_OFFICIAL=1
export MOZILLA_OFFICIAL=1
mk_add_options BUILD_OFFICIAL=1
+# We want to build with clang now and point to the GCC toolchain until #29041 is
+# fixed. We explicitly need to define the host compiler as well as for some
+# reason the gcc-toolchain argument does not get passed along otherwise.
+CC="clang --gcc-toolchain=/var/tmp/dist/gcc"
+CXX="clang++ --gcc-toolchain=/var/tmp/dist/gcc"
+HOST_CC=$CC
+HOST_CXX=$CXX
+
export BINDGEN_CFLAGS='--gcc-toolchain=/var/tmp/dist/gcc'
ac_add_options --enable-optimize
@@ -15,7 +23,7 @@ ac_add_options --enable-official-branding
# Let's support GTK3 for ESR60
ac_add_options --enable-default-toolkit=cairo-gtk3
-ac_add_options --enable-tor-browser-update
+# XXX: ac_add_options --enable-tor-browser-update
ac_add_options --enable-signmar
ac_add_options --enable-verify-mar
@@ -23,9 +31,9 @@ ac_add_options --disable-strip
ac_add_options --disable-install-strip
ac_add_options --disable-tests
ac_add_options --disable-debug
-ac_add_options --disable-maintenance-service
ac_add_options --disable-crashreporter
ac_add_options --disable-webrtc
# Let's make sure no preference is enabling either Adobe's or Google's CDM.
ac_add_options --disable-eme
+ac_add_options --enable-proxy-bypass-protection
#ac_add_options --disable-ctypes
1
0

[tor-browser-build/master] Remove search engines from language packs
by gk@torproject.org 07 Aug '19
by gk@torproject.org 07 Aug '19
07 Aug '19
commit 4a632f8ac10f5d01ac9ef075fc698bd7454ab6cb
Author: Nicolas Vigier <boklm(a)torproject.org>
Date: Mon Aug 5 10:36:18 2019 +0200
Remove search engines from language packs
With https://bugzilla.mozilla.org/show_bug.cgi?id=1437942 search engines
are removed from language packs.
---
projects/tor-browser/build | 53 +++++++++++++++++++++-------------------------
1 file changed, 24 insertions(+), 29 deletions(-)
diff --git a/projects/tor-browser/build b/projects/tor-browser/build
index 1f155d1..71084f2 100644
--- a/projects/tor-browser/build
+++ b/projects/tor-browser/build
@@ -169,10 +169,6 @@ fi
pushd "$TBDIR[% IF c("var/osx") %]/Contents/Resources[% END %]/browser/"
-# For the proper search engines in our language packs
-unzip omni.ja chrome/en-US/locale/browser/searchplugins* || [ $? -lt 3 ]
-mv chrome/en-US/locale/browser/searchplugins $rootdir
-rm -rf chrome/en-US
unzip omni.ja defaults/preferences/000-tor-browser.js || [ $? -lt 3 ]
# Append our built extension-overrides.js to 000-tor-browser.js
cat "$GENERATEDPREFSPATH" >> defaults/preferences/000-tor-browser.js
@@ -194,32 +190,31 @@ rm -rf defaults
echo '{"version":"[% c("var/torbrowser_version") %]","architecture":"[% c("var/mar_osname") %]","channel":"[% c("var/channel") %]","locale":"en-US"}' > ../tbb_version.json
popd
-# Prepare our language packs for using the proper search engines and embed
-# our default bookmarks. See bugs 18915 and 21879 for more details.
-[% SET locales = c("var/testbuild") ? [] : c("var/locales") -%]
-[% FOREACH lang = locales %]
-[% SET lang = tmpl(lang);
- SET xpi = '$rootdir/' _ c('input_files_by_name/firefox-langpacks') _ '/' _ lang _ '.xpi';
- %]
- unzip -d prep_[% lang %] [% xpi %]
- search_plugins_path=prep_[% lang %]/browser/chrome/[% lang %]/locale/browser
- rm -rf $search_plugins_path/searchplugins
- cp -rf $rootdir/searchplugins $search_plugins_path
- [% IF c("var/osx") -%]
- cp $rootdir/bookmarks.html prep_[% lang %]/browser/chrome/[% lang %]/locale/browser/
- [% END -%]
- rm [% xpi %]
- cd prep_[% lang %]
- [% c('zip', {
- zip_src => [ '.' ],
- zip_args => xpi,
- }) %]
- # If we are building a multi-lingual package, add all of the language packs.
- [% IF c("var/multi_lingual") %]
- cp [% xpi %] "$TBDIR/$EXTSPATH/langpack-[% lang %](a)firefox.mozilla.org.xpi"
+[% IF c("var/osx") || c("var/multi_lingual") -%]
+ # Prepare our language packs to embed our default bookmarks.
+ # See bug 21879 for more details.
+ [% SET locales = c("var/testbuild") ? [] : c("var/locales") -%]
+ [% FOREACH lang = locales %]
+ [% SET lang = tmpl(lang);
+ SET xpi = '$rootdir/' _ c('input_files_by_name/firefox-langpacks') _ '/' _ lang _ '.xpi';
+ %]
+ [% IF c("var/osx") -%]
+ unzip -d prep_[% lang %] [% xpi %]
+ cp $rootdir/bookmarks.html prep_[% lang %]/browser/chrome/[% lang %]/locale/browser/
+ rm [% xpi %]
+ cd prep_[% lang %]
+ [% c('zip', {
+ zip_src => [ '.' ],
+ zip_args => xpi,
+ }) %]
+ [% END -%]
+ # If we are building a multi-lingual package, add all of the language packs.
+ [% IF c("var/multi_lingual") %]
+ cp [% xpi %] "$TBDIR/$EXTSPATH/langpack-[% lang %](a)firefox.mozilla.org.xpi"
+ [% END %]
+ cd ..
+ rm -rf prep_[% lang %]
[% END %]
- cd ..
- rm -rf prep_[% lang %]
[% END %]
[% IF c("var/multi_lingual") %]
1
0

[tor-browser-build/master] Bug 30490: Add cbindgen project for building Firefox 68 ESR
by gk@torproject.org 07 Aug '19
by gk@torproject.org 07 Aug '19
07 Aug '19
commit a61d68dc37a39d0aca74b273ca2b444fe33a07dc
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Aug 7 19:45:53 2019 +0000
Bug 30490: Add cbindgen project for building Firefox 68 ESR
---
projects/cbindgen/build | 32 ++++++++++++++++++++++++++++++++
projects/cbindgen/config | 15 +++++++++++++++
2 files changed, 47 insertions(+)
diff --git a/projects/cbindgen/build b/projects/cbindgen/build
new file mode 100644
index 0000000..429f567
--- /dev/null
+++ b/projects/cbindgen/build
@@ -0,0 +1,32 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+distdir=/var/tmp/dist
+builddir=/var/tmp/build/[% project %]
+mkdir -p $distdir/[% project %]
+tar -C /var/tmp/dist -xf $rootdir/[% c('input_files_by_name/rust') %]
+export PATH="/var/tmp/dist/rust/bin:$PATH"
+mkdir -p /var/tmp/build
+tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
+
+# Now prepare the offline build
+# Move the directory for hardcoding the path in .cargo/config
+mv /var/tmp/build/[% project %]-[% c('version') %] $builddir
+tar -C $builddir -xjf cbindgen-vendor.tar.bz2
+cd $builddir
+mkdir .cargo
+cat > .cargo/config << 'EOF'
+[source.crates-io]
+replace-with = "vendored-sources"
+
+[source.vendored-sources]
+directory = "/var/tmp/build/cbindgen/vendor"
+EOF
+
+cargo build --release --frozen --target x86_64-unknown-linux-gnu
+mv target/x86_64-unknown-linux-gnu/release/cbindgen $distdir/[% project %]
+
+cd $distdir
+[% c('tar', {
+ tar_src => [ project ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/cbindgen/config b/projects/cbindgen/config
new file mode 100644
index 0000000..69014bf
--- /dev/null
+++ b/projects/cbindgen/config
@@ -0,0 +1,15 @@
+# vim: filetype=yaml sw=2
+version: '[% c("abbrev") %]'
+git_url: https://github.com/eqrion/cbindgen
+git_hash: 23a991a5b21e89aa1dcdc70f1371be20c93ece8e #v0.8.7
+filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
+
+var:
+ container:
+ use_container: 1
+input_files:
+ - project: container-image
+ - name: rust
+ project: rust
+ - URL: https://people.torproject.org/~boklm/mirrors/sources/cbindgen-vendor.tar.bz2
+ sha256sum: f4cde3d56df893b543b35b7e4a6e295a275dbb3cee8e8eae549efe679db50ab9
1
0

[tor-browser-build/master] Bug 30376: Use Rust 1.34 for Tor Browser 9
by gk@torproject.org 07 Aug '19
by gk@torproject.org 07 Aug '19
07 Aug '19
commit d4f7c37aefc702fb9a66604cdf05bd8977036fc8
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Aug 7 19:34:23 2019 +0000
Bug 30376: Use Rust 1.34 for Tor Browser 9
Use 1.34 for tor Rust support on nightly builds as well.
---
projects/rust/build | 15 +---
projects/rust/config | 19 ++---
projects/rust/unwind.patch | 102 +++++++++++++-------------
projects/rust/unwind_128.patch | 161 -----------------------------------------
projects/tor/config | 6 --
5 files changed, 61 insertions(+), 242 deletions(-)
diff --git a/projects/rust/build b/projects/rust/build
index 0df84a1..633604c 100644
--- a/projects/rust/build
+++ b/projects/rust/build
@@ -59,11 +59,7 @@ cd /var/tmp/build/rustc-[% c('version') %]-src
# See: https://github.com/rust-lang/rust/issues/12859 for discussion about
# that and https://github.com/rust-lang/rust/pull/49633 for a newer attempt to
# fix this problem. We apply the patch from neersighted.
- [% IF !c("input_file_var/unwind_128") %]
- patch -p1 < $rootdir/unwind.patch
- [% ELSE %]
- patch -p1 < $rootdir/unwind_128.patch
- [% END %]
+ patch -p1 < $rootdir/unwind.patch
[% END %]
[% IF c("var/android") %]
@@ -78,15 +74,6 @@ mkdir build
cd build
../configure --prefix=$distdir [% c("var/configure_opt") %]
-# We need to disable Thin LTO due to reproducibility issues on macOS and
-# probably Linux. Alas, there is no direct option available in the config.toml
-# in 1.26.1 yet, so we need to toggle this indirectly via `codegen-units`.
-[% IF c("var/osx") || c("var/linux") %]
- # It seems hard to pass the proper value via ./configure so we resort to our
- # old friend `sed`.
- sed -i 's/#codegen-units = 1/codegen-units = 1/' config.toml
-[% END %]
-
make -j[% c("buildconf/num_procs") %]
make install
cd /var/tmp/dist
diff --git a/projects/rust/config b/projects/rust/config
index d784d39..011920b 100644
--- a/projects/rust/config
+++ b/projects/rust/config
@@ -1,15 +1,9 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
-version: '[% c("input_file_var/rust_version") %]'
-
-# those values can be changed from the input_files section of other
-# projects. See projects/tor/config and bug 28260.
-input_file_var:
- rust_version: 1.26.1
- prev_version: 1.25.0
+version: 1.34.2
var:
- prev_version: '[% c("input_file_var/prev_version") %]'
+ prev_version: 1.33.0
rust_arch: '[% c("arch") %]'
container:
use_container: 1
@@ -55,6 +49,9 @@ targets:
#
# `--enable-extended` to build not only rustc but cargo as well
#
+ # `--enable-llvm-static-stdccp` to take a libstdc++ on Wheezy into account
+ # which is too old and if used gives undefined reference errors
+ #
# `--release-channel=stable` to just include stable features in the
# compiler
#
@@ -72,7 +69,7 @@ targets:
# version mismatch. We avoid that with this configure option. We need to
# build our own GCC in the first place as 4.7.2 is too old to get all the
# Rust pieces compiled.
- configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=x86_64-unknown-linux-gnu,i686-unknown-linux-gnu --set=target.x86_64-unknown-linux-gnu.cc=gcc --set=target.i686-unknown-linux-gnu.cc=gcc
+ configure_opt: --enable-local-rust --enable-vendor --enable-extended --enable-llvm-static-stdcpp --release-channel=stable --sysconfdir=etc --target=x86_64-unknown-linux-gnu,i686-unknown-linux-gnu --set=target.x86_64-unknown-linux-gnu.cc=gcc --set=target.i686-unknown-linux-gnu.cc=gcc
osx-x86_64:
var:
@@ -107,9 +104,7 @@ input_files:
file_gpg_id: 1
gpg_keyring: rust.gpg
- filename: unwind.patch
- enable: '[% c("var/windows-i686") && !c("input_file_var/unwind_128") %]'
- - filename: unwind_128.patch
- enable: '[% c("input_file_var/unwind_128") %]'
+ enable: '[% c("var/windows-i686") %]'
- filename: replace_pagesize_in_mmap.patch
enable: '[% c("var/android") %]'
- filename: 0001-Make-sure-dl_iterate_phdr-is-undefined-on-Android.patch
diff --git a/projects/rust/unwind.patch b/projects/rust/unwind.patch
index 3a191b9..7b22dcb 100644
--- a/projects/rust/unwind.patch
+++ b/projects/rust/unwind.patch
@@ -1,6 +1,6 @@
-From dd808373aefe6247975455006bbfb89aa6410ed9 Mon Sep 17 00:00:00 2001
+From b3bea7008ece7a5bdf9b5a5dcc95e82febad1854 Mon Sep 17 00:00:00 2001
From: Bjorn Neergaard <bjorn(a)neersighted.com>
-Date: Tue, 3 Apr 2018 19:01:07 -0600
+Date: Sat, 9 Feb 2019 19:39:23 +0000
Subject: [PATCH] Fix cross-compiling i686-pc-windows-gnu from Linux
This is still very rough and serves as a proof-of-concept for fixing
@@ -32,49 +32,49 @@ rethinking of how iOS is special-cased above, to avoid further
duplication. Input on how to best structure this file is requested.
diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
-index e6aa78fba5..624f2ccfbe 100644
+index 249a183189..df08d6eb0c 100644
--- a/src/bootstrap/compile.rs
+++ b/src/bootstrap/compile.rs
-@@ -146,6 +146,11 @@ pub fn std_cargo(build: &Builder,
- cargo.env("MACOSX_DEPLOYMENT_TARGET", target);
- }
-
-+ // FIXME: Temporary detection of SJLJ MinGW compilers.
-+ if build.build.build.contains("linux") && target == "i686-pc-windows-gnu" {
-+ features.push_str(" sjlj_eh");
-+ }
+@@ -162,7 +162,12 @@ pub fn std_cargo(builder: &Builder<'_>,
+ .arg("--features")
+ .arg("compiler-builtins-mem");
+ } else {
+- let features = builder.std_features();
++ let mut features = builder.std_features();
+
- // When doing a local rebuild we tell cargo that we're stage1 rather than
- // stage0. This works fine if the local rust and being-built rust have the
- // same view of what the default allocator is, but fails otherwise. Since
++ // FIXME: Temporary detection of SJLJ MinGW compilers.
++ if builder.config.build.contains("linux") && target == "i686-pc-windows-gnu" {
++ features.push_str(" sjlj_eh");
++ }
+
+ if compiler.stage != 0 && builder.config.sanitizers {
+ // This variable is used by the sanitizer runtime crates, e.g.
diff --git a/src/libstd/Cargo.toml b/src/libstd/Cargo.toml
-index 1201759885..a06ef7e0e6 100644
+index 7d60a17042..d876d0b89a 100644
--- a/src/libstd/Cargo.toml
+++ b/src/libstd/Cargo.toml
-@@ -49,3 +49,4 @@ force_alloc_system = []
- panic-unwind = ["panic_unwind"]
- profiler = ["profiler_builtins"]
- wasm_syscall = []
+@@ -71,3 +71,4 @@ wasm-bindgen-threads = []
+ # https://github.com/rust-lang-nursery/stdsimd/blob/master/crates/std_detect/…
+ std_detect_file_io = []
+ std_detect_dlsym_getauxval = []
+sjlj_eh = ["unwind/sjlj_eh"]
diff --git a/src/libunwind/Cargo.toml b/src/libunwind/Cargo.toml
-index fbd9789d2f..15a20d7ff4 100644
+index 2378b0a315..0b5979ed62 100644
--- a/src/libunwind/Cargo.toml
+++ b/src/libunwind/Cargo.toml
-@@ -14,3 +14,7 @@ doc = false
- [dependencies]
+@@ -16,3 +16,6 @@ doc = false
core = { path = "../libcore" }
- libc = { path = "../rustc/libc_shim" }
+ libc = { version = "0.2.43", features = ['rustc-dep-of-std'], default-features = false }
+ compiler_builtins = "0.1.0"
+
+[features]
+sjlj_eh = []
-+
diff --git a/src/libunwind/libunwind.rs b/src/libunwind/libunwind.rs
-index aa73b11fb3..16c21be736 100644
+index 339b554ed6..ec2f93ed60 100644
--- a/src/libunwind/libunwind.rs
+++ b/src/libunwind/libunwind.rs
-@@ -10,11 +10,6 @@
-
- #![allow(bad_style)]
+@@ -1,10 +1,5 @@
+ #![allow(nonstandard_style)]
-macro_rules! cfg_if {
- ( $( if #[cfg( $meta:meta )] { $($it1:item)* } else { $($it2:item)* } )* ) =>
@@ -84,15 +84,18 @@ index aa73b11fb3..16c21be736 100644
use libc::{c_int, c_void, uintptr_t};
#[repr(C)]
-@@ -85,7 +80,6 @@ pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reaso
+@@ -73,8 +68,8 @@ pub enum _Unwind_Context {}
+ pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reason_Code,
+ exception: *mut _Unwind_Exception);
extern "C" {
- #[cfg_attr(stage0, unwind)]
- #[cfg_attr(not(stage0), unwind(allowed))]
+- #[unwind(allowed)]
- pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
++ #[cfg_attr(stage0, unwind)]
++ #[cfg_attr(not(stage0), unwind(allowed))]
pub fn _Unwind_DeleteException(exception: *mut _Unwind_Exception);
pub fn _Unwind_GetLanguageSpecificData(ctx: *mut _Unwind_Context) -> *mut c_void;
pub fn _Unwind_GetRegionStart(ctx: *mut _Unwind_Context) -> _Unwind_Ptr;
-@@ -217,28 +211,52 @@ if #[cfg(all(any(target_os = "ios", not(target_arch = "arm"))))] {
+@@ -206,26 +201,52 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm
pc
}
}
@@ -104,17 +107,13 @@ index aa73b11fb3..16c21be736 100644
+if #[cfg(all(target_os = "ios", target_arch = "arm"))] {
+ // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
extern "C" {
- #[cfg_attr(stage0, unwind)]
- #[cfg_attr(not(stage0), unwind(allowed))]
+- #[unwind(allowed)]
- pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
-- pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
-- trace_argument: *mut c_void)
-- -> _Unwind_Reason_Code;
++ #[cfg_attr(stage0, unwind)]
++ #[cfg_attr(not(stage0), unwind(allowed))]
+ pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
+ pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
- }
--} else {
-- // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
++ }
+
+ #[inline]
+ pub unsafe fn _Unwind_RaiseException(exc: *mut _Unwind_Exception) -> _Unwind_Reason_Code {
@@ -122,15 +121,20 @@ index aa73b11fb3..16c21be736 100644
+ }
+
+} else if #[cfg(feature = "sjlj_eh")] {
- extern "C" {
- #[cfg_attr(stage0, unwind)]
- #[cfg_attr(not(stage0), unwind(allowed))]
++ extern "C" {
++ #[cfg_attr(stage0, unwind)]
++ #[cfg_attr(not(stage0), unwind(allowed))]
+ pub fn _Unwind_SjLj_Resume(e: *mut _Unwind_Exception) -> !;
- pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
-+ pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
-+ trace_argument: *mut c_void)
-+ -> _Unwind_Reason_Code;
-+ }
++ pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
+ pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
+ trace_argument: *mut c_void)
+ -> _Unwind_Reason_Code;
+ }
+-} else {
+- // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
+- extern "C" {
+- #[unwind(allowed)]
+- pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
+
+ #[inline]
+ pub unsafe fn _Unwind_Resume(exc: *mut _Unwind_Exception) -> ! {
@@ -154,5 +158,5 @@ index aa73b11fb3..16c21be736 100644
}
} // cfg_if!
--
-2.17.1
+2.23.0.rc0
diff --git a/projects/rust/unwind_128.patch b/projects/rust/unwind_128.patch
deleted file mode 100644
index 93528c9..0000000
--- a/projects/rust/unwind_128.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-From 0a186eafebf26ca01879827a4cc95cc274791334 Mon Sep 17 00:00:00 2001
-From: Bjorn Neergaard <bjorn(a)neersighted.com>
-Date: Sat, 9 Feb 2019 19:39:23 +0000
-Subject: [PATCH] Fix cross-compiling i686-pc-windows-gnu from Linux
-
-This is still very rough and serves as a proof-of-concept for fixing
-Linux -> 32-bit MinGW cross compilation workflow. Currently, clang and
-GCC's MinGW targets both only support DW2 (DWARF) or SJLJ (Set Jump Long
-Jump) unwinding on 32-bit Windows.
-
-The default for GCC (and the way it is shipped on every major distro) is
-to use SJLJ on Windows, as DWARF cannot traverse non-DWARF frames. This
-would work fine, except for the fact that libgcc (our C runtime on the
-MinGW platform) exports symbols under a different name when configured
-to use SJLJ-style unwinding, and uses a preprocessor macro internally to
-alias them.
-
-Because of this, we have to detect this scenario and link to the correct
-symbols ourselves. Linking has been tested with a full bootstrap on both
-x86_64-unknown-linux-gnu and i686-pc-windows-gnu, as well as
-cross-compilation of some of my own projects.
-
-Obviously, the detection is a bit unrefined. Right now we
-unconditionally use SJLJ when compiling Linux -> MinGW. I'd like to add
-feature detection using compiler build flags or autotools-style
-compilation and object analysis. Input on the best way to proceed here
-is welcome.
-
-Also, currently there is copy-pasted/duplicated code in libunwind.
-Ideally, this could be reduced, but this would likely require a
-rethinking of how iOS is special-cased above, to avoid further
-duplication. Input on how to best structure this file is requested.
-
-diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
-index 11d9154ba6..bd8ff844f7 100644
---- a/src/bootstrap/compile.rs
-+++ b/src/bootstrap/compile.rs
-@@ -154,6 +154,11 @@ pub fn std_cargo(builder: &Builder,
- } else {
- let mut features = builder.std_features();
-
-+ // FIXME: Temporary detection of SJLJ MinGW compilers.
-+ if builder.config.build.contains("linux") && target == "i686-pc-windows-gnu" {
-+ features.push_str(" sjlj_eh");
-+ }
-+
- // When doing a local rebuild we tell cargo that we're stage1 rather than
- // stage0. This works fine if the local rust and being-built rust have the
- // same view of what the default allocator is, but fails otherwise. Since
-diff --git a/src/libstd/Cargo.toml b/src/libstd/Cargo.toml
-index 5a2dce5930..e1c876f503 100644
---- a/src/libstd/Cargo.toml
-+++ b/src/libstd/Cargo.toml
-@@ -50,3 +50,4 @@ force_alloc_system = []
- panic-unwind = ["panic_unwind"]
- profiler = ["profiler_builtins"]
- wasm_syscall = []
-+sjlj_eh = ["unwind/sjlj_eh"]
-diff --git a/src/libunwind/Cargo.toml b/src/libunwind/Cargo.toml
-index 4760461df6..27c7303604 100644
---- a/src/libunwind/Cargo.toml
-+++ b/src/libunwind/Cargo.toml
-@@ -15,3 +15,6 @@ doc = false
- core = { path = "../libcore" }
- libc = { path = "../rustc/libc_shim" }
- compiler_builtins = { path = "../rustc/compiler_builtins_shim" }
-+
-+[features]
-+sjlj_eh = []
-diff --git a/src/libunwind/libunwind.rs b/src/libunwind/libunwind.rs
-index 73a259bd44..ff3404864f 100644
---- a/src/libunwind/libunwind.rs
-+++ b/src/libunwind/libunwind.rs
-@@ -10,11 +10,6 @@
-
- #![allow(bad_style)]
-
--macro_rules! cfg_if {
-- ( $( if #[cfg( $meta:meta )] { $($it1:item)* } else { $($it2:item)* } )* ) =>
-- ( $( $( #[cfg($meta)] $it1)* $( #[cfg(not($meta))] $it2)* )* )
--}
--
- use libc::{c_int, c_void, uintptr_t};
-
- #[repr(C)]
-@@ -83,8 +78,8 @@ pub enum _Unwind_Context {}
- pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reason_Code,
- exception: *mut _Unwind_Exception);
- extern "C" {
-- #[unwind(allowed)]
-- pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
-+ #[cfg_attr(stage0, unwind)]
-+ #[cfg_attr(not(stage0), unwind(allowed))]
- pub fn _Unwind_DeleteException(exception: *mut _Unwind_Exception);
- pub fn _Unwind_GetLanguageSpecificData(ctx: *mut _Unwind_Context) -> *mut c_void;
- pub fn _Unwind_GetRegionStart(ctx: *mut _Unwind_Context) -> _Unwind_Ptr;
-@@ -216,26 +211,52 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm
- pc
- }
- }
-+} // cfg_if!
-
--if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] {
-- // Not 32-bit iOS
-+cfg_if! {
-+if #[cfg(all(target_os = "ios", target_arch = "arm"))] {
-+ // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
- extern "C" {
-- #[unwind(allowed)]
-- pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
-+ #[cfg_attr(stage0, unwind)]
-+ #[cfg_attr(not(stage0), unwind(allowed))]
-+ pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
-+ pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
-+ }
-+
-+ #[inline]
-+ pub unsafe fn _Unwind_RaiseException(exc: *mut _Unwind_Exception) -> _Unwind_Reason_Code {
-+ _Unwind_SjLj_RaiseException(exc)
-+ }
-+
-+} else if #[cfg(feature = "sjlj_eh")] {
-+ extern "C" {
-+ #[cfg_attr(stage0, unwind)]
-+ #[cfg_attr(not(stage0), unwind(allowed))]
-+ pub fn _Unwind_SjLj_Resume(e: *mut _Unwind_Exception) -> !;
-+ pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
- pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
- trace_argument: *mut c_void)
- -> _Unwind_Reason_Code;
- }
--} else {
-- // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
-- extern "C" {
-- #[unwind(allowed)]
-- pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
-+
-+ #[inline]
-+ pub unsafe fn _Unwind_Resume(exc: *mut _Unwind_Exception) -> ! {
-+ _Unwind_SjLj_Resume(exc)
- }
-
- #[inline]
- pub unsafe fn _Unwind_RaiseException(exc: *mut _Unwind_Exception) -> _Unwind_Reason_Code {
- _Unwind_SjLj_RaiseException(exc)
- }
-+} else {
-+ extern "C" {
-+ #[cfg_attr(stage0, unwind)]
-+ #[cfg_attr(not(stage0), unwind(allowed))]
-+ pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
-+ pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
-+ pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
-+ trace_argument: *mut c_void)
-+ -> _Unwind_Reason_Code;
-+ }
- }
- } // cfg_if!
---
-2.20.1
-
diff --git a/projects/tor/config b/projects/tor/config
index 35b37ce..682cfd3 100644
--- a/projects/tor/config
+++ b/projects/tor/config
@@ -59,10 +59,4 @@ input_files:
project: '[% c("var/compiler") %]'
- name: rust
project: rust
- # Tor needs rust >= 1.28.0
- # See bug 28260
- input_file_var:
- rust_version: 1.28.0
- prev_version: 1.27.2
- unwind_128: '[% c("var/windows-i686") %]'
enable: '[% !c("var/android") && c("var/nightly") %]'
1
0
commit 2a501682217eff74df47f45c60618b71f2a38353
Author: Alex Catarineu <acat(a)torproject.org>
Date: Mon May 13 18:30:50 2019 +0200
Remove unused files
---
src/chrome/content/popup.xul | 43 ----
src/chrome/content/pref-connection.xul | 10 -
src/chrome/content/torbutton_tb.xul | 38 ----
src/chrome/content/torcookie.js | 385 ---------------------------------
src/chrome/content/torcookiedialog.xul | 72 ------
5 files changed, 548 deletions(-)
diff --git a/src/chrome/content/popup.xul b/src/chrome/content/popup.xul
deleted file mode 100644
index 5d9b76ce..00000000
--- a/src/chrome/content/popup.xul
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://torbutton/skin/torbutton.css" type="text/css"?>
-
-<!DOCTYPE overlay SYSTEM "chrome://torbutton/locale/torbutton.dtd">
-
-<overlay id="torbutton-popup-overlay"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
- <stringbundleset id="torbutton-stringbundleset">
- <stringbundle id="torbutton-bundle" src="chrome://torbutton/locale/torbutton.properties"/>
- </stringbundleset>
- <panel id="torbutton-context-menu"
- onpopupshowing="torbutton_check_protections();"
- titlebar="normal" noautohide="true"
- anchor="torbutton-button" position="after_start" >
- <hbox align="start">
- <vbox>
- <menuitem id="torbutton-new-identity"
- label="&torbutton.context_menu.new_identity;"
- accesskey="&torbutton.context_menu.new_identity_key;"
- insertafter="context-stop"
- oncommand="torbutton_new_identity()"/>
- <menuseparator/>
- <menuitem id="torbutton-cookie-protector"
- label="&torbutton.context_menu.cookieProtections;"
- accesskey="&torbutton.context_menu.cookieProtections.key;"
- insertafter="context-stop"
- hidden="true"
- oncommand="torbutton_open_cookie_dialog()"/>
- <menuitem id="torbutton-networksettings"
- label="&torbutton.context_menu.networksettings;"
- accesskey="&torbutton.context_menu.networksettings.key;"
- oncommand="torbutton_open_network_settings()"/>
- <menuseparator id="torbutton-checkForUpdateSeparator"/>
- <menuitem id="torbutton-checkForUpdate"
- label="&torbutton.context_menu.downloadUpdate;"
- accesskey="&torbutton.context_menu.downloadUpdate.key;"
- insertafter="context-stop"
- oncommand="torbutton_check_for_update()"/>
- </vbox>
- </hbox>
- </panel>
-</overlay>
diff --git a/src/chrome/content/pref-connection.xul b/src/chrome/content/pref-connection.xul
deleted file mode 100644
index 4d5fb613..00000000
--- a/src/chrome/content/pref-connection.xul
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0"?>
-
-<!-- TODO: This entire file could be removed, but see bug 19929. -->
-
-<!DOCTYPE overlay SYSTEM "chrome://torbutton/locale/torbutton.dtd">
-
-<overlay id="torbutton-prefs-notice"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-
-</overlay>
diff --git a/src/chrome/content/torbutton_tb.xul b/src/chrome/content/torbutton_tb.xul
deleted file mode 100644
index 450ffb3a..00000000
--- a/src/chrome/content/torbutton_tb.xul
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://torbutton/skin/torbutton.css" type="text/css"?>
-<?xul-overlay href="chrome://torbutton/content/popup.xul"?>
-
-<!DOCTYPE overlay SYSTEM "chrome://torbutton/locale/torbutton.dtd">
-
-<overlay id="torbutton-overlay"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <script type="application/x-javascript" src="chrome://torbutton/content/torbutton_util.js" />
- <script type="application/x-javascript" src="chrome://torbutton/content/torbutton.js" />
- <script language="JavaScript">
- //onLoad Hander
- try{window.addEventListener("load", torbutton_init, false);}catch(e){}
- </script>
-
- <stringbundleset id="torbutton-stringbundleset">
- <stringbundle id="torbutton-bundle" src="chrome://torbutton/locale/torbutton.properties"/>
- </stringbundleset>
-
- <toolbarpalette id="MailToolbarPalette">
- <toolbarbutton
- id="torbutton-button-tb"
- class="toolbarbutton-1"
- label="Torbutton"
- tooltiptext="&torbutton.button.tooltip;"
- context="torbutton-context-menu" />
- </toolbarpalette>
-
- <toolbarpalette id="MsgComposeToolbarPalette">
- <toolbarbutton
- id="torbutton-button-tb-msg"
- class="toolbarbutton-1"
- label="Torbutton"
- tooltiptext="&torbutton.button.tooltip;"
- context="torbutton-context-menu" />
- </toolbarpalette>
-
-</overlay>
diff --git a/src/chrome/content/torcookie.js b/src/chrome/content/torcookie.js
deleted file mode 100644
index 0a3dace6..00000000
--- a/src/chrome/content/torcookie.js
+++ /dev/null
@@ -1,385 +0,0 @@
-// Bug 1506 P2: I think cookie protections is a neat feature.
-
-var cookiesTree = null;
-var prefs = null;
-var cookies = [];
-var protectedCookies = [];
-var deletedCookies = [];
-var lastCookieSortColumn = "";
-var lastCookieSortAscending = false;
-var cookiemanager = null;
-var selector = null;
-//custom tree view, this is how we dynamically add the cookies
-var cookiesTreeView = {
- rowCount : 0,
- setTree : function(tree){},
- getImageSrc : function(row,column) {},
- getProgressMode : function(row,column) {},
- getCellValue : function(row,column) {},
- getCellText : function(row,column){
- var rv="";
- switch (column.id) {
- case "domainCol" : rv = cookies[row].rawHost; break;
- case "nameCol" : rv = cookies[row].name; break;
- case "lockCol" : rv = cookies[row].isProtected; break;
- case "pathCol" : rv = cookies[row].path; break;
- }
- return rv;
- },
- isSeparator : function(index) {return false;},
- isSorted: function() { return false; },
- isContainer : function(index) {return false;},
- cycleHeader : function(column, aElt) {},
- getRowProperties : function(row,column,prop){},
- getColumnProperties : function(column,columnElement,prop){},
- getCellProperties : function(row,column,prop) {}
- };
-
-// XXX: Must match the definition in cookie-jar-selector :/
-function Cookie(number,name,value,isDomain,host,rawHost,HttpOnly,path,isSecure,isSession,
- expires,isProtected) {
- this.number = number;
- this.name = name;
- this.value = value;
- this.isDomain = isDomain;
- this.host = host;
- this.rawHost = rawHost;
- this.isHttpOnly = HttpOnly;
- this.path = path;
- this.isSecure = isSecure;
- this.isSession = isSession;
- this.expires = expires;
- this.isProtected = isProtected;
-}
-
-function initDialog() {
- cookiesTree = document.getElementById("cookiesTree");
- prefs =Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefBranch);
- selector = Components.classes["@torproject.org/cookie-jar-selector;1"]
- .getService(Components.interfaces.nsISupports)
- .wrappedJSObject;
- //init cookie manager
- cookiemanager = Components.classes["@mozilla.org/cookiemanager;1"].getService();
- cookiemanager = cookiemanager.QueryInterface(Components.interfaces.nsICookieManager);
- var enumerator = cookiemanager.enumerator;
- var count = 0;
- getProtectedCookies();
- while (enumerator.hasMoreElements()) {
- var nextCookie = enumerator.getNext();
- if (!nextCookie) break;
- nextCookie = nextCookie.QueryInterface(Components.interfaces.nsICookie);
- var host = nextCookie.host;
- var isProt = checkIfProtected(nextCookie.name, host, nextCookie.path);
- //populate list
- cookies[count] =
- new Cookie(count++, nextCookie.name, nextCookie.value, nextCookie.isDomain, host,
- (host.charAt(0)==".") ? host.substring(1,host.length) : host, nextCookie.isHttpOnly,
- nextCookie.path, nextCookie.isSecure, nextCookie.isSession, nextCookie.expires,
- isProt);
- }
- //apply custom view
- cookiesTreeView.rowCount = cookies.length;
- cookiesTree.treeBoxObject.view = cookiesTreeView;
- document.getElementById('defaultCookieGroup').selectedIndex = prefs.getBoolPref("extensions.torbutton.cookie_auto_protect")? 0 : 1;
-}
-function protectCookie()
-{
- ProtectInTree(cookiesTree, cookiesTreeView,
- cookies, "protectCookie", "unprotectCookie", "removeCookie");
-}
-function unprotectCookie() {
- UnProtectInTree(cookiesTree, cookiesTreeView,
- cookies, "protectCookie", "unprotectCookie", "removeCookie");
-}
-function checkIfProtected(name, host, path)
-{
- for (var i = 0; i < protectedCookies.length; i++)
- {
- var cookie = protectedCookies[i];
- if (cookie.name == name && cookie.host == host && cookie.path == path)
- return true;
- }
- return false;
-}
-function itemSelected() {
- var selections = getTreeSelections(cookiesTree);
- if (selections.length) {
-
-//DY - check if (the last in list) selection is protected/unprotected, set buttons
- if (cookies[selections[(selections.length)-1]].isProtected) {
- document.getElementById("removeCookie").disabled = true;
- document.getElementById("unprotectCookie").disabled = false;
- document.getElementById("protectCookie").disabled = true;
- } else {
- document.getElementById("removeCookie").disabled = false;
- document.getElementById("unprotectCookie").disabled = true;
- document.getElementById("protectCookie").disabled = false;
- }
-
- }
-}
-function acceptDialog() {
-
- FinalizeCookieDeletions();
- var protectedcount = 0;
- var protcookies = [];
- for (var i = 0; i < cookies.length; i++)
- {
- if (cookies[i].isProtected)
- {
- protcookies[protectedcount] = cookies[i];
- protectedcount++;
- }
- }
- selector.protectCookies(protcookies);
- //output protected cookies
- prefs.setBoolPref("extensions.torbutton.cookie_auto_protect",document.getElementById('saveAllCookies').selected);
-}
-function CookieColumnSort(column) {
- lastCookieSortAscending =
- SortTree(cookiesTree, cookiesTreeView, cookies,
- column, lastCookieSortColumn, lastCookieSortAscending);
- lastCookieSortColumn = column;
-}
-function DeleteCookie() {
-//DY - check if any selection is protected
- var selections = getTreeSelections(cookiesTree);
- var protect = false;
- var i;
- for (i=0; i<selections.length; i++) {
- if (cookies[selections[i]].isProtected) {
- protect = true;
- }
- }
- if (!protect && i>0 ) {
- DeleteSelectedItemFromTree(cookiesTree, cookiesTreeView,
- cookies, deletedCookies,
- "removeCookie", "removeAllCookies",
- "protectCookie", "unprotectCookie");
- if (!cookies.length) {
- ;//ClearCookieProperties();
- }
-
- }
-}
-
-function getProtectedCookies()
-{
- var gotCookies = selector.getProtectedCookies("tor");
- if (gotCookies == null)
- return;
- protectedCookies = gotCookies;
-}
-
-//Tree Utils
-
-function SortTree(tree, view, table, column, lastSortColumn, lastSortAscending, updateSelection) {
-
- // remember which item was selected so we can restore it after the sort
- var selections = getTreeSelections(tree);
- var selectedNumber = selections.length ? table[selections[0]].number : -1;
-
- // determine if sort is to be ascending or descending
- var ascending = (column == lastSortColumn) ? !lastSortAscending : true;
-
- // do the sort or re-sort
- var compareFunc = function compare(first, second) {
- if (column=="isProtected") {
- return second[column].toString().localeCompare(first[column].toString());
- } else {
- return first[column].toLowerCase().localeCompare(second[column].toLowerCase());
- }
- }
- table.sort(compareFunc);
- if (!ascending)
- table.reverse();
-
- // restore the selection
- var selectedRow = -1;
- if (selectedNumber>=0 && updateSelection) {
- for (var s=0; s<table.length; s++) {
- if (table[s].number == selectedNumber) {
- // update selection
- // note: we need to deselect before reselecting in order to trigger ...Selected()
- tree.view.selection.select(-1);
- tree.view.selection.select(s);
- selectedRow = s;
- break;
- }
- }
- }
-
- // display the results
- tree.treeBoxObject.invalidate();
- if (selectedRow >= 0) {
- tree.treeBoxObject.ensureRowIsVisible(selectedRow)
- }
-
- return ascending;
-}
-function FinalizeCookieDeletions() {
- for (var c=0; c<deletedCookies.length; c++) {
- cookiemanager.remove(deletedCookies[c].host,
- deletedCookies[c].name,
- deletedCookies[c].path,
- false);
- }
- deletedCookies.length = 0;
-}
-function getTreeSelections(tree) {
- var selections = [];
- var select;
-
- select = tree.view.selection;
- if (select) {
- var count = select.getRangeCount();
- var min = new Object();
- var max = new Object();
- for (var i=0; i<count; i++) {
- select.getRangeAt(i, min, max);
- for (var k=min.value; k<=max.value; k++) {
- if (k != -1) {
- selections[selections.length] = k;
- }
- }
- }
- }
- return selections;
-}
-function ProtectInTree
- (tree, view, table, protButton, unprotButton, removeButton) {
-
- var selections = getTreeSelections(tree);
- for (var s=selections.length-1; s>= 0; s--) {
- var i = selections[s];
- table[i].isProtected = true;
- }
-
- //update tree view
- tree.treeBoxObject.invalidate();
-//DY - Update selections
- tree.treeBoxObject.ensureRowIsVisible(selections[0]);
- // disable/enable buttons
- document.getElementById(unprotButton).disabled = false;
- document.getElementById(protButton).disabled = true;
- document.getElementById(removeButton).disabled = true;
-}
-function UnProtectInTree
- (tree, view, table, protButton, unprotButton, removeButton) {
-
- var selections = getTreeSelections(tree);
- for (var s=selections.length-1; s>= 0; s--) {
- var i = selections[s];
- table[i].isProtected = false;
- }
-
- //update tree view
- tree.treeBoxObject.invalidate();
-//DY - Update selections
- tree.treeBoxObject.ensureRowIsVisible(selections[0]);
- // disable/enable buttons
- document.getElementById(unprotButton).disabled = true;
- document.getElementById(protButton).disabled = false;
- document.getElementById(removeButton).disabled = false;
-}
-function DeleteAllCookies() {
-
- DeleteAllFromTree(cookiesTree, cookiesTreeView,
- cookies, deletedCookies,
- "removeCookie", "removeAllCookies",
- "protectCookie", "unprotectCookie");
-
-}
-function DeleteSelectedItemFromTree
- (tree, view, table, deletedTable, removeButton, removeAllButton, protButton, unprotButton) {
-
- var selections = getTreeSelections(tree);
-
- tree.view.selection.clearSelection();
-
-
- // remove selected items from list (by setting them to null) and place in deleted list
- for (var s=selections.length-1; s>= 0; s--) {
- var i = selections[s];
- deletedTable[deletedTable.length] = table[i];
- table[i] = null;
- }
- // collapse list by removing all the null entries
- for (var j=0; j<table.length; j++) {
- if (table[j] == null) {
- var k = j;
- while ((k < table.length) && (table[k] == null)) {
- k++;
- }
- table.splice(j, k-j);
- view.rowCount -= k - j;
- tree.treeBoxObject.rowCountChanged(j, j - k);
- }
- }
-//DY - update selection and/or buttons
- if (table.length) {
-
-//DY - update selection to previous (first of) selected position or bottom
- var nextSelection = (selections[0] < table.length) ? selections[0] : table.length-1;
-
- tree.view.selection.select(nextSelection);
- tree.treeBoxObject.ensureRowIsVisible(nextSelection);
- if (table[nextSelection].isProtected) {
- document.getElementById(unprotButton).disabled = false;
- document.getElementById(protButton).disabled = true;
- } else {
- document.getElementById(unprotButton).disabled = true;
- document.getElementById(protButton).disabled = false;
- }
- } else {
- // disable buttons
- document.getElementById(removeButton).disabled = true;
- document.getElementById(removeAllButton).disabled = true;
- document.getElementById(unprotButton).disabled = true;
- document.getElementById(protButton).disabled = true;
- }
-}
-function DeleteAllFromTree
- (tree, view, table, deletedTable, removeButton, removeAllButton, protButton, unprotButton) {
-
- // remove items from table and place in deleted table
- for (var i=0; i<table.length; i++) {
-//DY - only if unprotected
- if (!table[i].isProtected) {
- deletedTable[deletedTable.length] = table[i];
- table[i] = null;
- }
- }
-
- tree.view.selection.clearSelection();
-
-//DY - fix up tree
- // collapse list by removing all the null entries
- for (var j=0; j<table.length; j++) {
- if (table[j] == null) {
- var k = j;
- while ((k < table.length) && (table[k] == null)) {
- k++;
- }
- table.splice(j, k-j);
- view.rowCount -= k - j;
- tree.treeBoxObject.rowCountChanged(j, j - k);
- }
- }
- // update selection and/or buttons
- if (table.length) {
- // update selection to top
- tree.view.selection.select(0);
- tree.treeBoxObject.ensureRowIsVisible(0);
- //if it exists is must already be protected
- document.getElementById(unprotButton).disabled = false;
- document.getElementById(protButton).disabled = true;
- } else {
- // disable all buttons
- document.getElementById(removeButton).disabled = true;
- document.getElementById(removeAllButton).disabled = true;
- document.getElementById(unprotButton).disabled = true;
- document.getElementById(protButton).disabled = true;
- }
-}
diff --git a/src/chrome/content/torcookiedialog.xul b/src/chrome/content/torcookiedialog.xul
deleted file mode 100644
index 68a7cafe..00000000
--- a/src/chrome/content/torcookiedialog.xul
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://torbutton/skin/torbutton.css" type="text/css"?>
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-
-<!DOCTYPE overlay SYSTEM "chrome://torbutton/locale/torbutton.dtd">
-
-<dialog id="TorCookieDialog"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- title="&torbutton.cookiedialog.title;"
- buttons="accept,cancel"
- style="width: 30em;"
- onload="initDialog();"
- ondialogaccept="acceptDialog();"
- persist="screenX screenY width height">
- <script src="chrome://torbutton/content/torbutton.js" type="application/x-javascript"/>
- <script src="chrome://torbutton/content/torcookie.js" type="application/x-javascript"/>
- <stringbundleset id="torbutton-stringbundleset">
- <stringbundle id="torbutton-bundle" src="chrome://torbutton/locale/torbutton.properties"/>
- </stringbundleset>
-
- <label value=""/>
- <separator class="thin"/>
- <vbox flex="1">
- <tree id="cookiesTree" flex="1" style="height: 10em;"
- onkeypress="return;//do this later"
- onselect="itemSelected();"
- hidecolumnpicker="true">
- <treecols>
- <treecol id="lockCol" label="&torbutton.cookiedialog.lockCol;" flex="1"
- onclick="CookieColumnSort('isProtected', true);" persist="width"/>
- <splitter class="tree-splitter"/>
- <treecol id="domainCol" label="&torbutton.cookiedialog.domainCol;" flex="2"
- onclick="CookieColumnSort('rawHost', true);" persist="width"/>
- <splitter class="tree-splitter"/>
- <treecol id="nameCol" label="&torbutton.cookiedialog.nameCol;" flex="1"
- onclick="CookieColumnSort('name', true);" persist="width"/>
- <treecol id="pathCol" label="&torbutton.cookiedialog.pathCol;" flex="1"
- onclick="CookieColumnSort('path', true);" persist="width"/>
-
- </treecols>
- <treechildren/>
- </tree>
- </vbox>
- <groupbox>
- <hbox>
- <vbox>
- <button id="protectCookie" disabled="true"
- label="&torbutton.cookiedialog.protectCookie;"
- oncommand="protectCookie();"/>
- <button id="removeCookie" disabled="true"
- label="&torbutton.cookiedialog.removeCookie;"
- oncommand="DeleteCookie();"/>
- </vbox>
- <vbox>
- <button id="unprotectCookie" disabled="true"
- label="&torbutton.cookiedialog.unprotectCookie;"
- oncommand="unprotectCookie();"/>
- <button id="removeAllCookies"
- label="&torbutton.cookiedialog.removeAllBut;"
- oncommand="DeleteAllCookies();"/>
- </vbox>
- </hbox>
- <hbox>
- <radiogroup id="defaultCookieGroup">
- <radio id="saveAllCookies" label="&torbutton.cookiedialog.saveAllCookies;" />
- <radio id="donnotsaveCookies" label="&torbutton.cookiedialog.doNotSaveAllCookies;" />
- </radiogroup>
- </hbox>
- </groupbox>
-
-</dialog>
-
1
0
commit 02c91349acdb2a493fe0089139ae765b64250a77
Author: Alex Catarineu <acat(a)torproject.org>
Date: Fri May 10 11:51:26 2019 +0200
Delete chrome.manifest.*jar
---
src/chrome.manifest.jar | 60 -----------------------------------------------
src/chrome.manifest.nojar | 60 -----------------------------------------------
2 files changed, 120 deletions(-)
diff --git a/src/chrome.manifest.jar b/src/chrome.manifest.jar
deleted file mode 100644
index 8d503630..00000000
--- a/src/chrome.manifest.jar
+++ /dev/null
@@ -1,60 +0,0 @@
-content torbutton jar:chrome/torbutton.jar!/content/
-overlay chrome://browser/content/browser.xul chrome://torbutton/content/torbutton.xul
-overlay chrome://browser/content/preferences/connection.xul chrome://torbutton/content/pref-connection.xul
-overlay chrome://messenger/content/messenger.xul chrome://torbutton/content/torbutton_tb.xul
-overlay chrome://messenger/content/messengercompose/messengercompose.xul chrome://torbutton/content/torbutton_tb.xul
-
-locale torbutton af jar:chrome/torbutton.jar!/locale/af/
-locale torbutton ar jar:chrome/torbutton.jar!/locale/ar/
-locale torbutton bg jar:chrome/torbutton.jar!/locale/bg/
-locale torbutton bms jar:chrome/torbutton.jar!/locale/bms/
-locale torbutton bo jar:chrome/torbutton.jar!/locale/bo/
-locale torbutton ca jar:chrome/torbutton.jar!/locale/ca/
-locale torbutton cs jar:chrome/torbutton.jar!/locale/cs/
-locale torbutton da jar:chrome/torbutton.jar!/locale/da/
-locale torbutton de jar:chrome/torbutton.jar!/locale/de/
-locale torbutton el jar:chrome/torbutton.jar!/locale/el/
-locale torbutton en jar:chrome/torbutton.jar!/locale/en/
-locale torbutton es jar:chrome/torbutton.jar!/locale/es/
-locale torbutton eu jar:chrome/torbutton.jar!/locale/eu/
-locale torbutton fa jar:chrome/torbutton.jar!/locale/fa/
-locale torbutton fi jar:chrome/torbutton.jar!/locale/fi/
-locale torbutton fr jar:chrome/torbutton.jar!/locale/fr/
-locale torbutton fur jar:chrome/torbutton.jar!/locale/fur/
-locale torbutton gl jar:chrome/torbutton.jar!/locale/gl/
-locale torbutton gu jar:chrome/torbutton.jar!/locale/gu/
-locale torbutton he jar:chrome/torbutton.jar!/locale/he/
-locale torbutton hi jar:chrome/torbutton.jar!/locale/hi/
-locale torbutton hr jar:chrome/torbutton.jar!/locale/hr/
-locale torbutton hu jar:chrome/torbutton.jar!/locale/hu/
-locale torbutton id jar:chrome/torbutton.jar!/locale/id/
-locale torbutton is jar:chrome/torbutton.jar!/locale/is/
-locale torbutton it jar:chrome/torbutton.jar!/locale/it/
-locale torbutton ja jar:chrome/torbutton.jar!/locale/ja/
-locale torbutton ka jar:chrome/torbutton.jar!/locale/ka/
-locale torbutton km jar:chrome/torbutton.jar!/locale/km/
-locale torbutton ko jar:chrome/torbutton.jar!/locale/ko/
-locale torbutton ku jar:chrome/torbutton.jar!/locale/ku/
-locale torbutton mt jar:chrome/torbutton.jar!/locale/mt/
-locale torbutton nb jar:chrome/torbutton.jar!/locale/nb/
-locale torbutton nl jar:chrome/torbutton.jar!/locale/nl/
-locale torbutton pa jar:chrome/torbutton.jar!/locale/pa/
-locale torbutton pl jar:chrome/torbutton.jar!/locale/pl/
-locale torbutton pt-BR jar:chrome/torbutton.jar!/locale/pt-BR/
-locale torbutton pt jar:chrome/torbutton.jar!/locale/pt/
-locale torbutton ro jar:chrome/torbutton.jar!/locale/ro/
-locale torbutton ru jar:chrome/torbutton.jar!/locale/ru/
-locale torbutton sl jar:chrome/torbutton.jar!/locale/sl/
-locale torbutton sq jar:chrome/torbutton.jar!/locale/sq/
-locale torbutton sv jar:chrome/torbutton.jar!/locale/sv/
-locale torbutton sw jar:chrome/torbutton.jar!/locale/sw/
-locale torbutton th jar:chrome/torbutton.jar!/locale/th/
-locale torbutton tr jar:chrome/torbutton.jar!/locale/tr/
-locale torbutton uk jar:chrome/torbutton.jar!/locale/uk/
-locale torbutton vi jar:chrome/torbutton.jar!/locale/vi/
-locale torbutton zh-CN jar:chrome/torbutton.jar!/locale/zh-CN/
-locale torbutton zh-HK jar:chrome/torbutton.jar!/locale/zh-HK/
-locale torbutton zh-TW jar:chrome/torbutton.jar!/locale/zh-TW/
-
-skin torbutton classic/1.0 jar:chrome/torbutton.jar!/skin/
-style chrome://global/content/customizeToolbar.xul chrome://torbutton/skin/torbutton.css
diff --git a/src/chrome.manifest.nojar b/src/chrome.manifest.nojar
deleted file mode 100644
index 7631874e..00000000
--- a/src/chrome.manifest.nojar
+++ /dev/null
@@ -1,60 +0,0 @@
-content torbutton chrome/content/
-overlay chrome://browser/content/browser.xul chrome://torbutton/content/torbutton.xul
-overlay chrome://browser/content/preferences/connection.xul chrome://torbutton/content/pref-connection.xul
-overlay chrome://messenger/content/messenger.xul chrome://torbutton/content/torbutton_tb.xul
-overlay chrome://messenger/content/messengercompose/messengercompose.xul chrome://torbutton/content/torbutton_tb.xul
-
-locale torbutton af chrome/locale/af/
-locale torbutton ar chrome/locale/ar/
-locale torbutton bg chrome/locale/bg/
-locale torbutton bms chrome/locale/bms/
-locale torbutton bo chrome/locale/bo/
-locale torbutton ca chrome/locale/ca/
-locale torbutton cs chrome/locale/cs/
-locale torbutton da chrome/locale/da/
-locale torbutton de chrome/locale/de/
-locale torbutton el chrome/locale/el/
-locale torbutton en chrome/locale/en/
-locale torbutton es chrome/locale/es/
-locale torbutton eu chrome/locale/eu/
-locale torbutton fa chrome/locale/fa/
-locale torbutton fi chrome/locale/fi/
-locale torbutton fr chrome/locale/fr/
-locale torbutton fur chrome/locale/fur/
-locale torbutton gl chrome/locale/gl/
-locale torbutton gu chrome/locale/gu/
-locale torbutton he chrome/locale/he/
-locale torbutton hi chrome/locale/hi/
-locale torbutton hr chrome/locale/hr/
-locale torbutton hu chrome/locale/hu/
-locale torbutton id chrome/locale/id/
-locale torbutton is chrome/locale/is/
-locale torbutton it chrome/locale/it/
-locale torbutton ja chrome/locale/ja/
-locale torbutton ka chrome/locale/ka/
-locale torbutton km chrome/locale/km/
-locale torbutton ko chrome/locale/ko/
-locale torbutton ku chrome/locale/ku/
-locale torbutton mt chrome/locale/mt/
-locale torbutton nb chrome/locale/nb/
-locale torbutton nl chrome/locale/nl/
-locale torbutton pa chrome/locale/pa/
-locale torbutton pl chrome/locale/pl/
-locale torbutton pt chrome/locale/pt/
-locale torbutton pt-BR chrome/locale/pt-BR/
-locale torbutton ro chrome/locale/ro/
-locale torbutton ru chrome/locale/ru/
-locale torbutton sl chrome/locale/sl/
-locale torbutton sq chrome/locale/sq/
-locale torbutton sv chrome/locale/sv/
-locale torbutton sw chrome/locale/sw/
-locale torbutton th chrome/locale/th/
-locale torbutton tr chrome/locale/tr/
-locale torbutton uk chrome/locale/uk/
-locale torbutton vi chrome/locale/vi/
-locale torbutton zh-CN chrome/locale/zh-CN/
-locale torbutton zh-HK chrome/locale/zh-HK/
-locale torbutton zh-TW chrome/locale/zh-TW/
-
-skin torbutton classic/1.0 chrome/skin/
-style chrome://global/content/customizeToolbar.xul chrome://torbutton/skin/torbutton.css
1
0

[torbutton/master] Fix components and modules, and minor style changes
by gk@torproject.org 07 Aug '19
by gk@torproject.org 07 Aug '19
07 Aug '19
commit 18e7226776301a82bb2c5715739b25f9c2b281ad
Author: Alex Catarineu <acat(a)torproject.org>
Date: Thu May 9 19:48:10 2019 +0200
Fix components and modules, and minor style changes
---
src/chrome/content/preferences-mobile.js | 10 +-
src/chrome/content/tor-circuit-display.js | 18 +--
src/chrome/content/torbutton.js | 230 +++++++++++++-----------------
src/chrome/content/torbutton_util.js | 14 +-
src/components/aboutTor.js | 21 +--
src/components/cookie-jar-selector.js | 131 +++++------------
src/components/domain-isolator.js | 19 ++-
src/components/dragDropFilter.js | 16 +--
src/components/external-app-blocker.js | 13 +-
src/components/torCheckService.js | 27 +---
src/components/torbutton-logger.js | 38 ++---
src/modules/default-prefs.js | 2 +-
src/modules/noscript-control.js | 50 ++++---
src/modules/security-prefs.js | 9 +-
src/modules/tor-control-port.js | 10 +-
src/modules/utils.js | 16 +--
16 files changed, 243 insertions(+), 381 deletions(-)
diff --git a/src/chrome/content/preferences-mobile.js b/src/chrome/content/preferences-mobile.js
index e2da9b88..fa79dce8 100644
--- a/src/chrome/content/preferences-mobile.js
+++ b/src/chrome/content/preferences-mobile.js
@@ -1,12 +1,12 @@
// # Security Settings User Interface for Mobile
// Utilities
-let { utils: Cu } = Components;
-let { getBoolPref, getIntPref, setBoolPref, setIntPref, getCharPref } =
- Cu.import("resource://gre/modules/Services.jsm", {}).Services.prefs;
+const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
+const { getBoolPref, getIntPref, setBoolPref, setIntPref, getCharPref }
+ = Services.prefs;
let { getLocale, show_torbrowser_manual } =
- Cu.import("resource://torbutton/modules/utils.js", {});
+ ChromeUtils.import("resource://torbutton/modules/utils.js", {});
// Description elements have the follow names.
const descNames =
@@ -64,7 +64,7 @@ function torbutton_set_learn_more_links() {
locale = getLocale();
}
let links = linkNames.map(name => document.getElementById(name));
- links.forEach(link => {;
+ links.forEach(link => {
if (show_manual && locale != "") {
link.href= "https:/tb-manual.torproject.org/" + locale +
"/security-slider.html";
diff --git a/src/chrome/content/tor-circuit-display.js b/src/chrome/content/tor-circuit-display.js
index 5ecbe7d7..05dc14de 100644
--- a/src/chrome/content/tor-circuit-display.js
+++ b/src/chrome/content/tor-circuit-display.js
@@ -26,18 +26,17 @@ let createTorCircuitDisplay = (function () {
"use strict";
// Mozilla utilities
-const { Cu : utils , Ci : interfaces } = Components.utils;
-Cu.import("resource://gre/modules/Services.jsm");
+const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
// Import the controller code.
-let { controller } = Cu.import("resource://torbutton/modules/tor-control-port.js", {});
+let { controller } = ChromeUtils.import("resource://torbutton/modules/tor-control-port.js", {});
// Utility functions
-let { bindPrefAndInit, observe, getLocale, getDomainForBrowser } = Cu.import("resource://torbutton/modules/utils.js", {});
+let { bindPrefAndInit, observe, getLocale, getDomainForBrowser } = ChromeUtils.import("resource://torbutton/modules/utils.js", {});
// Make the TorButton logger available.
let logger = Cc["@torproject.org/torbutton-logger;1"]
- .getService(Components.interfaces.nsISupports).wrappedJSObject;
+ .getService(Ci.nsISupports).wrappedJSObject;
// ## Circuit/stream credentials and node monitoring
@@ -209,18 +208,13 @@ let uiString = function (shortName) {
return torbuttonBundle.GetStringFromName("torbutton.circuit_display." + shortName);
};
-// __regionBundle__.
-// A list of localized region (country) names.
-let regionBundle = Services.strings.createBundle(
- "chrome://global/locale/regionNames.properties");
-
// __localizedCountryNameFromCode(countryCode)__.
// Convert a country code to a localized country name.
// Example: `'de'` -> `'Deutschland'` in German locale.
let localizedCountryNameFromCode = function (countryCode) {
if (!countryCode) return uiString("unknown_country");
try {
- return regionBundle.GetStringFromName(countryCode.toLowerCase());
+ return Services.intl.getRegionDisplayNames(undefined, [countryCode])[0];
} catch (e) {
return countryCode.toUpperCase();
}
@@ -363,7 +357,7 @@ let setupGuardNote = function () {
["div", {},
noteBefore, ["span", {class: "circuit-guard-name"}, name],
noteAfter, " ",
- ["span", {onclick: `gBrowser.selectedTab = gBrowser.addTab('https://support.torproject.org/${localeCode}/tbb/tbb-2/');`,
+ ["span", {onclick: `gBrowser.selectedTab = gBrowser.addTab('https://support.torproject.org/${localeCode}/tbb/tbb-2/', {triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()});`,
class: "circuit-link"},
learnMoreString]]);
};
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index a7bd4f8c..d73ddf73 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -7,16 +7,20 @@
// TODO: Double-check there are no strange exploits to defeat:
// http://kb.mozillazine.org/Links_to_local_pages_don%27t_work
-let { Services } = Cu.import("resource://gre/modules/Services.jsm", {});
-const {AppConstants} = ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
+/* global torbutton_log, gBrowser, torbutton_safelog, CustomizableUI,
+ createTorCircuitDisplay, torbutton_get_property_string, gFindBarInitialized,
+ gFindBar, OpenBrowserWindow, PrivateBrowsingUtils, torbutton_get_stringbundle,
+ Services, AppConstants
+ */
+
let {
showDialog,
show_torbrowser_manual,
unescapeTorString,
bindPrefAndInit,
getDomainForBrowser,
-} = Cu.import("resource://torbutton/modules/utils.js", {});
-let SecurityPrefs = Cu.import("resource://torbutton/modules/security-prefs.js", {});
+} = ChromeUtils.import("resource://torbutton/modules/utils.js", {});
+let SecurityPrefs = ChromeUtils.import("resource://torbutton/modules/security-prefs.js", {});
const k_tb_last_browser_version_pref = "extensions.torbutton.lastBrowserVersion";
const k_tb_browser_update_needed_pref = "extensions.torbutton.updateNeeded";
@@ -44,8 +48,7 @@ var m_tb_control_host = null; // Set if using TCP.
var m_tb_control_pass = null;
var m_tb_control_desc = null; // For logging.
-var m_tb_domWindowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor).
- getInterface(Ci.nsIDOMWindowUtils);
+var m_tb_domWindowUtils = window.windowUtils;
// Bug 1506 P1: This object is only for updating the UI for toggling and style
var torbutton_window_pref_observer =
@@ -91,9 +94,8 @@ var torbutton_unique_pref_observer =
m_tb_prefs.addObserver("privacy.resistFingerprinting", this, false);
// We observe xpcom-category-entry-added for plugins w/ Gecko-Content-Viewers
- var observerService = Cc["@mozilla.org/observer-service;1"].
- getService(Ci.nsIObserverService);
- observerService.addObserver(this, "xpcom-category-entry-added", false);
+ var observerService = Services.obs;
+ observerService.addObserver(this, "xpcom-category-entry-added");
},
unregister: function()
@@ -106,8 +108,7 @@ var torbutton_unique_pref_observer =
m_tb_prefs.removeObserver("privacy.firstparty.isolate", this);
m_tb_prefs.removeObserver("privacy.resistFingerprinting", this);
- var observerService = Cc["@mozilla.org/observer-service;1"].
- getService(Ci.nsIObserverService);
+ var observerService = Services.obs;
observerService.removeObserver(this, "xpcom-category-entry-added");
},
@@ -165,11 +166,9 @@ var torbutton_unique_pref_observer =
}
var torbutton_tor_check_observer = {
- register: function()
- {
- this._obsSvc = Cc["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService);
- this._obsSvc.addObserver(this, k_tb_tor_check_failed_topic, false);
+ register() {
+ this._obsSvc = Services.obs;
+ this._obsSvc.addObserver(this, k_tb_tor_check_failed_topic);
},
unregister: function()
@@ -189,22 +188,24 @@ var torbutton_tor_check_observer = {
// If the user does not have an about:tor tab open in the front most
// window, open one.
- var wm = Cc["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
+ var wm = Services.wm;
var win = wm.getMostRecentWindow("navigator:browser");
if (win == window) {
let foundTab = false;
- let tabBrowser = top.getBrowser();
+ let tabBrowser = top.gBrowser;
for (let i = 0; !foundTab && (i < tabBrowser.browsers.length); ++i) {
let b = tabBrowser.getBrowserAtIndex(i);
foundTab = (b.currentURI.spec.toLowerCase() == "about:tor");
}
- if (!foundTab)
- gBrowser.selectedTab = gBrowser.addTab("about:tor");
+ if (!foundTab) {
+ gBrowser.selectedTab = gBrowser.addTab("about:tor", {
+ triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
+ });
+ }
}
}
- }
+ },
};
function torbutton_init_toolbutton()
@@ -268,8 +269,8 @@ function torbutton_init() {
} catch(e) {}
// Bug 1506 P4: These vars are very important for New Identity
- var environ = Components.classes["@mozilla.org/process/environment;1"]
- .getService(Components.interfaces.nsIEnvironment);
+ var environ = Cc["@mozilla.org/process/environment;1"]
+ .getService(Ci.nsIEnvironment);
if (environ.exists("TOR_CONTROL_PASSWD")) {
m_tb_control_pass = environ.get("TOR_CONTROL_PASSWD");
@@ -282,10 +283,12 @@ function torbutton_init() {
} catch(e) {
torbutton_log(4, 'unable to read authentication cookie');
}
- } else try {
+ } else {
+ try {
// Try to get password from Tor Launcher.
m_tb_control_pass = tlps.TorGetPassword(false);
- } catch(e) {}
+ } catch (e) {}
+ }
// Try to get the control port IPC file (an nsIFile) from Tor Launcher,
// since Tor Launcher knows how to handle its own preferences and how to
@@ -341,9 +344,8 @@ function torbutton_init() {
// This works only by setting the pref to `true` otherwise we get an
// exception and nothing is happening.
m_tb_prefs.setBoolPref("dom.quotaManager.testing", true);
- Cc["@mozilla.org/dom/quota-manager-service;1"]
- .getService(Ci.nsIQuotaManagerService).clear();
- } catch(e) {
+ Services.qms.clear();
+ } catch (e) {
} finally {
m_tb_prefs.setBoolPref("dom.quotaManager.testing", orig_quota_test);
}
@@ -503,8 +505,7 @@ function torbutton_confirm_plugins() {
torbutton_log(3, "Confirming plugin usage.");
- var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
+ var prompts = Services.prompt;
// Display two buttons, both with string titles.
var flags = prompts.STD_YES_NO_BUTTONS + prompts.BUTTON_DELAY_ENABLE;
@@ -513,8 +514,7 @@ function torbutton_confirm_plugins() {
var askAgainText = torbutton_get_property_string("torbutton.popup.never_ask_again");
var askAgain = {value: false};
- var wm = Cc["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
+ var wm = Services.wm;
var win = wm.getMostRecentWindow("navigator:browser");
var no_plugins = (prompts.confirmEx(win, "", message, flags, null, null, null,
askAgainText, askAgain) == 1);
@@ -531,8 +531,6 @@ function torbutton_confirm_plugins() {
// Now, if any tabs were open to about:addons, reload them. Our popup
// messed up that page.
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
var browserEnumerator = wm.getEnumerator("navigator:browser");
// Check each browser instance for our URL
@@ -553,15 +551,13 @@ function torbutton_confirm_plugins() {
}
function torbutton_inform_about_tbb() {
- var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Components.interfaces.nsIPromptService);
+ var prompts = Services.prompt;
var message = torbutton_get_property_string("torbutton.popup.prompt_torbrowser");
var title = torbutton_get_property_string("torbutton.title.prompt_torbrowser");
var checkbox = {value: false};
- var sb = Components.classes["@mozilla.org/intl/stringbundle;1"]
- .getService(Components.interfaces.nsIStringBundleService);
+ var sb = Services.strings;
var browserstrings = sb.createBundle("chrome://browser/locale/browser.properties");
var askagain = browserstrings.GetStringFromName("privateBrowsingNeverAsk");
@@ -761,14 +757,14 @@ function torbutton_socket_readline(input) {
// Bug 1506 P4: Control port interaction. Needed for New Identity.
function torbutton_read_authentication_cookie(path) {
- var file = Components.classes['@mozilla.org/file/local;1']
- .createInstance(Components.interfaces.nsIFile);
+ var file = Cc["@mozilla.org/file/local;1"]
+ .createInstance(Ci.nsIFile);
file.initWithPath(path);
- var fileStream = Components.classes['@mozilla.org/network/file-input-stream;1']
- .createInstance(Components.interfaces.nsIFileInputStream);
+ var fileStream = Cc["@mozilla.org/network/file-input-stream;1"]
+ .createInstance(Ci.nsIFileInputStream);
fileStream.init(file, 1, 0, false);
- var binaryStream = Components.classes['@mozilla.org/binaryinputstream;1']
- .createInstance(Components.interfaces.nsIBinaryInputStream);
+ var binaryStream = Cc["@mozilla.org/binaryinputstream;1"]
+ .createInstance(Ci.nsIBinaryInputStream);
binaryStream.setInputStream(fileStream);
var array = binaryStream.readByteArray(fileStream.available());
binaryStream.close();
@@ -795,8 +791,7 @@ function torbutton_send_ctrl_cmd(command) {
// suppressing/unsuppressing user initiated events in a window's document to
// be sure that these events are not interfering with processing events being
// in the event queue.
- var thread = Cc["@mozilla.org/thread-manager;1"].
- getService(Ci.nsIThreadManager).currentThread;
+ var thread = Services.tm.currentThread;
m_tb_domWindowUtils.suppressEventHandling(true);
while (thread.processNextEvent(false)) {}
m_tb_domWindowUtils.suppressEventHandling(false);
@@ -871,15 +866,14 @@ function torbutton_new_identity() {
// conditions leading to failures (see bug 11783 for an example).
// TODO: Remove the Torbutton menu entry again once we have done our
// security control redesign.
- document.getElementById("torbutton-new-identity").disabled = true;
+ // document.getElementById("torbutton-new-identity").disabled = true;
document.getElementById("menu_newIdentity").disabled = true;
document.getElementById("appMenuNewIdentity").disabled = true;
let shouldConfirm = m_tb_prefs.getBoolPref("extensions.torbutton.confirm_newnym");
if (shouldConfirm) {
- let prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
- .getService(Ci.nsIPromptService);
+ let prompts = Services.prompt;
// Display two buttons, both with string titles.
let flags = prompts.STD_YES_NO_BUTTONS;
@@ -898,7 +892,7 @@ function torbutton_new_identity() {
} else {
// TODO: Remove the Torbutton menu entry again once we have done our
// security control redesign.
- document.getElementById("torbutton-new-identity").disabled = false;
+ // document.getElementById("torbutton-new-identity").disabled = false;
document.getElementById("menu_newIdentity").disabled = false;
document.getElementById("appMenuNewIdentity").disabled = false;
}
@@ -910,11 +904,11 @@ function torbutton_new_identity() {
// enabled (again).
// TODO: Remove the Torbutton menu entry again once we have done our
// security control redesign.
- document.getElementById("torbutton-new-identity").disabled = false;
+ torbutton_log(5, "Unexpected error on new identity: " + e);
+ window.alert("Torbutton: Unexpected error on new identity: " + e);
+ // document.getElementById("torbutton-new-identity").disabled = false;
document.getElementById("menu_newIdentity").disabled = false;
document.getElementById("appMenuNewIdentity").disabled = false;
- torbutton_log(5, "Unexpected error on new identity: "+e);
- window.alert("Torbutton: Unexpected error on new identity: "+e);
}
}
@@ -941,7 +935,7 @@ function torbutton_new_identity() {
*/
// Bug 1506 P4: Needed for New Identity.
function torbutton_do_new_identity() {
- var obsSvc = Components.classes["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
+ var obsSvc = Services.obs;
torbutton_log(3, "New Identity: Disabling JS");
torbutton_disable_all_js();
@@ -995,9 +989,9 @@ function torbutton_do_new_identity() {
torbutton_log(3, "New Identity: Clearing HTTP Auth");
- if(m_tb_prefs.getBoolPref('extensions.torbutton.clear_http_auth')) {
- var auth = Components.classes["@mozilla.org/network/http-auth-manager;1"].
- getService(Components.interfaces.nsIHttpAuthManager);
+ if (m_tb_prefs.getBoolPref("extensions.torbutton.clear_http_auth")) {
+ var auth = Cc["@mozilla.org/network/http-auth-manager;1"].
+ getService(Ci.nsIHttpAuthManager);
auth.clearAll();
}
@@ -1006,8 +1000,8 @@ function torbutton_do_new_identity() {
// Clear all crypto auth tokens. This includes calls to PK11_LogoutAll(),
// nsNSSComponent::LogoutAuthenticatedPK11() and clearing the SSL session
// cache.
- let sdr = Components.classes["@mozilla.org/security/sdr;1"].
- getService(Components.interfaces.nsISecretDecoderRing);
+ let sdr = Cc["@mozilla.org/security/sdr;1"].
+ getService(Ci.nsISecretDecoderRing);
sdr.logoutAndTeardown();
// This clears the OCSP cache.
@@ -1047,8 +1041,7 @@ function torbutton_do_new_identity() {
torbutton_log(3, "New Identity: Clearing Offline Cache");
try {
- const LoadContextInfo = Cc["@mozilla.org/load-context-info-factory;1"]
- .getService(Ci.nsILoadContextInfoFactory);
+ const LoadContextInfo = Services.loadContextInfo;
for (let contextInfo of [LoadContextInfo.default, LoadContextInfo.private]) {
let appCacheStorage = Services.cache2.appCacheStorage(contextInfo, null);
@@ -1089,19 +1082,18 @@ function torbutton_do_new_identity() {
// This works only by setting the pref to `true` otherwise we get an
// exception and nothing is happening.
m_tb_prefs.setBoolPref("dom.quotaManager.testing", true);
- Cc["@mozilla.org/dom/quota-manager-service;1"]
- .getService(Ci.nsIQuotaManagerService).clear();
- } catch(e) {
- torbutton_log(5, "Exception on storage clearing: "+e);
+ Services.qms.clear();
+ } catch (e) {
+ torbutton_log(5, "Exception on storage clearing: " + e);
} finally {
m_tb_prefs.setBoolPref("dom.quotaManager.testing", orig_quota_test);
}
torbutton_log(3, "New Identity: Clearing Cookies and DOM Storage");
- if (m_tb_prefs.getBoolPref('extensions.torbutton.cookie_protections')) {
- var selector = Components.classes["@torproject.org/cookie-jar-selector;1"]
- .getService(Components.interfaces.nsISupports)
+ if (m_tb_prefs.getBoolPref("extensions.torbutton.cookie_protections")) {
+ var selector = Cc["@torproject.org/cookie-jar-selector;1"]
+ .getService(Ci.nsISupports)
.wrappedJSObject;
// This emits "cookie-changed", "cleared", which kills DOM storage
// and the safe browsing API key
@@ -1119,18 +1111,12 @@ function torbutton_do_new_identity() {
// XXX: This may not clear zoom site-specific
// browser.content.full-zoom
- if (Ci.nsIContentPrefService2) { // Firefox >= 20
- XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils",
- "resource://gre/modules/PrivateBrowsingUtils.jsm");
- var pbCtxt = PrivateBrowsingUtils.privacyContextFromWindow(window);
- var cps = Cc["@mozilla.org/content-pref/service;1"]
- .getService(Ci.nsIContentPrefService2);
- cps.removeAllDomains(pbCtxt);
- } else { // Firefox < 20
- var cps = Cc["@mozilla.org/content-pref/service;1"].
- createInstance(Ci.nsIContentPrefService);
- cps.removeGroupedPrefs();
- }
+ ChromeUtils.defineModuleGetter(this, "PrivateBrowsingUtils",
+ "resource://gre/modules/PrivateBrowsingUtils.jsm");
+ var pbCtxt = PrivateBrowsingUtils.privacyContextFromWindow(window);
+ var cps = Cc["@mozilla.org/content-pref/service;1"]
+ .getService(Ci.nsIContentPrefService2);
+ cps.removeAllDomains(pbCtxt);
torbutton_log(3, "New Identity: Syncing prefs");
@@ -1139,8 +1125,7 @@ function torbutton_do_new_identity() {
torbutton_log(3, "New Identity: Clearing permissions");
- let pm = Cc["@mozilla.org/permissionmanager;1"].
- getService(Ci.nsIPermissionManager);
+ let pm = Services.perms;
pm.removeAll();
// Clear the domain isolation state.
@@ -1234,8 +1219,7 @@ function torbutton_clear_image_caches()
// Try to clear the private browsing cache. To do so, we must locate
// a content document that is contained within a private browsing window.
let didClearPBCache = false;
- let wm = Cc["@mozilla.org/appshell/window-mediator;1"]
- .getService(Ci.nsIWindowMediator);
+ let wm = Services.wm;
let enumerator = wm.getEnumerator("navigator:browser");
while (!didClearPBCache && enumerator.hasMoreElements()) {
let win = enumerator.getNext();
@@ -1243,7 +1227,7 @@ function torbutton_clear_image_caches()
if (!browserDoc.hasAttribute("privatebrowsingmode"))
continue;
- let tabbrowser = win.getBrowser();
+ let tabbrowser = win.gBrowser;
if (!tabbrowser)
continue;
@@ -1372,8 +1356,7 @@ function torbutton_local_tor_check()
if (socksAddr && socksAddr.startsWith("file:")) {
// Convert the file URL to a file path.
try {
- let ioService = Cc["@mozilla.org/network/io-service;1"]
- .getService(Ci.nsIIOService);
+ let ioService = Services.io;
let fph = ioService.getProtocolHandler("file")
.QueryInterface(Ci.nsIFileProtocolHandler);
socksIPCPath = fph.getFileFromURLSpec(socksAddr).path;
@@ -1440,11 +1423,8 @@ function torbutton_local_tor_check()
} // torbutton_local_tor_check
-function torbutton_initiate_remote_tor_check()
-{
- let obsSvc = Cc["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService);
-
+function torbutton_initiate_remote_tor_check() {
+ let obsSvc = Services.obs;
try {
let checkSvc = Cc["@torproject.org/torbutton-torCheckService;1"]
.getService(Ci.nsISupports).wrappedJSObject;
@@ -1573,13 +1553,12 @@ function torbutton_close_tabs_on_new_identity() {
// TODO: muck around with browser.tabs.warnOnClose.. maybe..
torbutton_log(3, "Closing tabs...");
- let wm = Cc["@mozilla.org/appshell/window-mediator;1"]
- .getService(Ci.nsIWindowMediator);
+ let wm = Services.wm;
let enumerator = wm.getEnumerator("navigator:browser");
- let windowsToClose = new Array();
+ let windowsToClose = [];
while (enumerator.hasMoreElements()) {
let win = enumerator.getNext();
- let browser = win.getBrowser();
+ let browser = win.gBrowser;
if (!browser) {
torbutton_log(5, "No browser for possible closed window");
continue;
@@ -1598,7 +1577,9 @@ function torbutton_close_tabs_on_new_identity() {
}
if (win == window) {
- browser.addTab("about:blank");
+ browser.addTab("about:blank", {
+ triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
+ });
} else {
// It is a bad idea to alter the window list while iterating
// over it, so add this window to an array and close it later.
@@ -1672,9 +1653,8 @@ function torbutton_open_cookie_dialog() {
// Bug 1506 P4: Used by New Identity if cookie protections are
// not in use.
function torbutton_clear_cookies() {
- torbutton_log(2, 'called torbutton_clear_cookies');
- var cm = Components.classes["@mozilla.org/cookiemanager;1"]
- .getService(Components.interfaces.nsICookieManager);
+ torbutton_log(2, "called torbutton_clear_cookies");
+ var cm = Services.cookies;
cm.removeAll();
}
@@ -1692,7 +1672,7 @@ function torbutton_disable_browser_js(browser) {
torbutton_log(3, "No content window to disable JS events.");
else
eventSuppressor = browser.contentWindow.
- QueryInterface(Components.interfaces.nsIInterfaceRequestor).
+ QueryInterface(Ci.nsIInterfaceRequestor).
getInterface(Ci.nsIDOMWindowUtils);
} catch(e) {
torbutton_log(4, "Failed to disable JS events: "+e)
@@ -1718,8 +1698,8 @@ function torbutton_disable_browser_js(browser) {
// Bug 1506 P3: The JS-killing bits of this are used by
// New Identity as a defense-in-depth measure.
function torbutton_disable_window_js(win) {
- var browser = win.getBrowser();
- if(!browser) {
+ var browser = win.gBrowser;
+ if (!browser) {
torbutton_log(5, "No browser for plugin window...");
return;
}
@@ -1760,8 +1740,7 @@ function torbutton_disable_window_js(win) {
// This is an ugly beast.. But unfortunately it has to be so..
// Looping over all tabs twice is not somethign we wanna do..
function torbutton_disable_all_js() {
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
+ var wm = Services.wm;
var enumerator = wm.getEnumerator("navigator:browser");
while(enumerator.hasMoreElements()) {
var win = enumerator.getNext();
@@ -1817,8 +1796,8 @@ function torbutton_do_startup()
{
if(m_tb_prefs.getBoolPref("extensions.torbutton.startup")) {
// Bug 1506: Still want to do this
- torbutton_toggle_plugins(
- m_tb_prefs.getBoolPref("plugin.disable"));
+ // torbutton_toggle_plugins(
+ // m_tb_prefs.getBoolPref("plugin.disable"));
// Bug 1506: Should probably be moved to an XPCOM component
torbutton_do_main_window_startup();
@@ -1839,7 +1818,7 @@ function torbutton_do_startup()
if (!m_tb_tbb && m_tb_prefs.getBoolPref("extensions.torbutton.prompt_torbrowser")) {
var warning = torbutton_get_property_string("torbutton.popup.short_torbrowser");
var title = torbutton_get_property_string("torbutton.title.prompt_torbrowser");
- var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);
+ var prompts = Services.prompt;
prompts.alert(null, title, warning);
}
@@ -1867,8 +1846,8 @@ function torbutton_new_tab(event)
function torbutton_is_windowed(wind) {
torbutton_log(3, "Window: (" + wind.outerWidth + "," + wind.outerHeight + ") ?= ("
+ wind.screen.availWidth + "," + wind.screen.availHeight + ")");
- if(wind.windowState == Components.interfaces.nsIDOMChromeWindow.STATE_MINIMIZED
- || wind.windowState == Components.interfaces.nsIDOMChromeWindow.STATE_MAXIMIZED) {
+ if (wind.windowState == Ci.nsIDOMChromeWindow.STATE_MINIMIZED
+ || wind.windowState == Ci.nsIDOMChromeWindow.STATE_MAXIMIZED) {
torbutton_log(2, "Window is minimized/maximized");
return false;
}
@@ -1904,8 +1883,9 @@ function showSecurityPreferencesPanel(chromeWindow) {
if (settingsTab === null) {
// Open up the settings panel in a new tab.
tabBrowser.addTab(SECURITY_PREFERENCES_URI, {
- 'selected': true,
- 'parentId': tabBrowser.selectedTab.id
+ "selected": true,
+ "parentId": tabBrowser.selectedTab.id,
+ triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
});
} else {
// Activate an existing settings panel tab.
@@ -1984,8 +1964,7 @@ function torbutton_close_window(event) {
// But that is a major overhaul..
if (m_tb_is_main_window) {
torbutton_log(3, "Original window closed. Searching for another");
- var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
- .getService(Components.interfaces.nsIWindowMediator);
+ var wm = Services.wm;
var enumerator = wm.getEnumerator("navigator:browser");
while(enumerator.hasMoreElements()) {
var win = enumerator.getNext();
@@ -2016,9 +1995,8 @@ function torbutton_close_window(event) {
function torbutton_open_network_settings() {
- var obsSvc = Components.classes["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService);
- obsSvc.notifyObservers(this, "TorOpenNetworkSettings", null);
+ var obsSvc = Services.obs;
+ obsSvc.notifyObservers(this, "TorOpenNetworkSettings");
}
@@ -2032,14 +2010,7 @@ var m_tb_resize_date = null;
// probably not for android.
var torbutton_resizelistener =
{
- QueryInterface: function(aIID)
- {
- if (aIID.equals(Ci.nsIWebProgressListener) ||
- aIID.equals(Ci.nsISupportsWeakReference) ||
- aIID.equals(Ci.nsISupports))
- return this;
- throw Cr.NS_NOINTERFACE;
- },
+ QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener", "nsISupportsWeakReference"]),
onLocationChange: function(aProgress, aRequest, aURI) {},
onStateChange: function(aProgress, aRequest, aFlag, aStatus) {
@@ -2072,10 +2043,8 @@ var torbutton_resizelistener =
m_tb_resize_date = Date.now();
}
- let sb = torbutton_get_stringbundle();
// No need to get "OK" translated again.
- let sbSvc = Cc["@mozilla.org/intl/stringbundle;1"].
- getService(Ci.nsIStringBundleService);
+ let sbSvc = Services.strings;
let bundle = sbSvc.
createBundle("chrome://global/locale/commonDialogs.properties");
let button_label = bundle.GetStringFromName("OK");
@@ -2141,8 +2110,7 @@ var torbutton_resizelistener =
function torbutton_get_current_accept_language_value(aURI)
{
try {
- let ioService = Cc["@mozilla.org/network/io-service;1"]
- .getService(Ci.nsIIOService);
+ let ioService = Services.io;
let channel = ioService.newChannelFromURI(aURI);
let httpChannel = channel.QueryInterface(Ci.nsIHttpChannel);
return httpChannel.getRequestHeader("Accept-Language");
diff --git a/src/chrome/content/torbutton_util.js b/src/chrome/content/torbutton_util.js
index e6de7681..c7116a09 100644
--- a/src/chrome/content/torbutton_util.js
+++ b/src/chrome/content/torbutton_util.js
@@ -3,8 +3,9 @@
// code directly. I don't see any of them as essential for 1506,
// really.
-var m_tb_torlog = Components.classes["@torproject.org/torbutton-logger;1"]
-.getService(Components.interfaces.nsISupports).wrappedJSObject;
+// let { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm", {});
+var m_tb_torlog = Cc["@torproject.org/torbutton-logger;1"]
+.getService(Ci.nsISupports).wrappedJSObject;
var m_tb_string_bundle = torbutton_get_stringbundle();
@@ -28,10 +29,8 @@ function torbutton_get_prefbranch(branch_name) {
var o_branch = false;
torbutton_log(1, "called get_prefbranch()");
- o_prefs = Components.classes["@mozilla.org/preferences-service;1"]
- .getService(Components.interfaces.nsIPrefService);
- if (!o_prefs)
- {
+ o_prefs = Services.prefs;
+ if (!o_prefs) {
torbutton_log(5, "Failed to get preferences-service!");
return false;
}
@@ -52,8 +51,7 @@ function torbutton_get_stringbundle()
var o_stringbundle = false;
try {
- var oBundle = Components.classes["@mozilla.org/intl/stringbundle;1"]
- .getService(Components.interfaces.nsIStringBundleService);
+ var oBundle = Services.strings;
o_stringbundle = oBundle.createBundle("chrome://torbutton/locale/torbutton.properties");
} catch(err) {
o_stringbundle = false;
diff --git a/src/components/aboutTor.js b/src/components/aboutTor.js
index e3ee03d6..ec48d668 100644
--- a/src/components/aboutTor.js
+++ b/src/components/aboutTor.js
@@ -14,20 +14,15 @@ const kMODULE_CID = Components.ID("84d47da6-79c3-4661-aa9f-8049476f7bf5");
const kAboutTorURL = "chrome://torbutton/content/aboutTor/aboutTor.xhtml";
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
+const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-
-function AboutTor()
-{
-}
+function AboutTor() {}
AboutTor.prototype =
{
- QueryInterface: XPCOMUtils.generateQI([Ci.nsIAboutModule]),
+ QueryInterface: ChromeUtils.generateQI([Ci.nsIAboutModule]),
// nsIClassInfo implementation:
classDescription: kMODULE_NAME,
@@ -35,11 +30,9 @@ AboutTor.prototype =
contractID: kMODULE_CONTRACTID,
// nsIAboutModule implementation:
- newChannel: function(aURI, aLoadInfo)
- {
- let ioSvc = Cc["@mozilla.org/network/io-service;1"]
- .getService(Ci.nsIIOService);
- let uri = ioSvc.newURI(kAboutTorURL, null, null);
+ newChannel(aURI, aLoadInfo) {
+ let ioSvc = Services.io;
+ let uri = ioSvc.newURI(kAboutTorURL);
let channel = ioSvc.newChannelFromURIWithLoadInfo(uri, aLoadInfo);
channel.originalURI = aURI;
diff --git a/src/components/cookie-jar-selector.js b/src/components/cookie-jar-selector.js
index 8456da3b..b3eeda53 100644
--- a/src/components/cookie-jar-selector.js
+++ b/src/components/cookie-jar-selector.js
@@ -18,12 +18,11 @@ const kMODULE_NAME = "Cookie Jar Selector";
const kMODULE_CONTRACTID = "@torproject.org/cookie-jar-selector;1";
const kMODULE_CID = Components.ID("e6204253-b690-4159-bfe8-d4eedab6b3be");
-const Cr = Components.results;
-const Cu = Components.utils;
-
-Cu.import("resource://torbutton/modules/default-prefs.js", {})
+ChromeUtils.import("resource://torbutton/modules/default-prefs.js", {})
.ensureDefaultPrefs();
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
+
// XXX: Must match the definition in torcookie.js :/
function Cookie(number,name,value,isDomain,host,rawHost,HttpOnly,path,isSecure,isSession,
expires,isProtected) {
@@ -42,73 +41,32 @@ function Cookie(number,name,value,isDomain,host,rawHost,HttpOnly,path,isSecure,i
}
function CookieJarSelector() {
- var Cc = Components.classes;
- var Ci = Components.interfaces;
-
- this.logger = Components.classes["@torproject.org/torbutton-logger;1"]
- .getService(Components.interfaces.nsISupports).wrappedJSObject;
+ this.logger = Cc["@torproject.org/torbutton-logger;1"]
+ .getService(Ci.nsISupports).wrappedJSObject;
- this.logger.log(3, "Component Load 5: New CookieJarSelector "+kMODULE_CONTRACTID);
+ this.logger.log(3, "Component Load 5: New CookieJarSelector " + kMODULE_CONTRACTID);
- this.prefs = Cc["@mozilla.org/preferences-service;1"].getService(Ci.nsIPrefBranch);
+ this.prefs = Services.prefs;
var getProfileFile = function(filename) {
- var loc = "ProfD"; // profile directory
- var file =
- Cc["@mozilla.org/file/directory_service;1"]
- .getService(Ci.nsIProperties)
+ var loc = "ProfD"; // profile directory
+ var file = Services.dirsvc
.get(loc, Ci.nsIFile)
.clone();
file.append(filename);
return file;
};
- var copyProfileFile = function(src, dest) {
- var srcfile = getProfileFile(src);
- var destfile = getProfileFile(dest);
- if (srcfile.exists()) {
- // XXX: Permissions issue with Vista roaming profiles?
- // Maybe file locking?
- try {
- if (destfile.exists()) {
- destfile.remove(false);
- }
- } catch(e) {
- this.logger.log(4, "Cookie file deletion exception: "+e);
- }
- try {
- srcfile.copyTo(null, dest);
- } catch(e) {
- this.logger.log(5, "Cookie file copy exception: "+e);
- }
- }
- };
-
- var moveProfileFile = function(src, dest) { // FIXME: Why does this not work?
- var srcfile = getProfileFile(src);
- var destfile = getProfileFile(dest);
- if (srcfile.exists()) {
- if (destfile.exists()) {
- destfile.remove(false);
- }
- srcfile.moveTo(null, dest);
- }
- };
-
this.clearCookies = function() {
try {
- Cc["@mozilla.org/cookiemanager;1"]
- .getService(Ci.nsICookieManager)
- .removeAll();
- } catch(e) {
- this.logger.log(4, "Cookie clearing exception: "+e);
+ Services.cookies.removeAll();
+ } catch (e) {
+ this.logger.log(4, "Cookie clearing exception: " + e);
}
};
this._cookiesToJS = function(getSession) {
- var cookieManager =
- Cc["@mozilla.org/cookiemanager;1"]
- .getService(Ci.nsICookieManager);
+ var cookieManager = Services.cookies;
var cookiesEnum = cookieManager.enumerator;
var cookiesAsJS = [];
var count = 0;
@@ -353,7 +311,7 @@ function CookieJarSelector() {
var nextCookie = enumerator.getNext();
if (!nextCookie) break;
- nextCookie = nextCookie.QueryInterface(Components.interfaces.nsICookie);
+ nextCookie = nextCookie.QueryInterface(Ci.nsICookie);
for (var i = 0; i < protCookies.length; i++) {
protcookie = protcookie || (nextCookie.host == protCookies[i].host &&
nextCookie.name == protCookies[i].name &&
@@ -371,7 +329,7 @@ function CookieJarSelector() {
}
// Emit cookie-changed event. This instructs other components to clear their identifiers
// (Specifically DOM storage and safe browsing, but possibly others)
- var obsSvc = Components.classes["@mozilla.org/observer-service;1"].getService(nsIObserverService);
+ var obsSvc = Cc["@mozilla.org/observer-service;1"].getService(nsIObserverService);
obsSvc.notifyObservers(this, "cookie-changed", "cleared");
} catch (e) {
this.logger.log(5, "Error deleting unprotected cookies: " + e);
@@ -410,10 +368,8 @@ function CookieJarSelector() {
};
// Check firefox version to know filename
- var appInfo = Components.classes["@mozilla.org/xre/app-info;1"]
- .getService(Components.interfaces.nsIXULAppInfo);
- var versionChecker = Components.classes["@mozilla.org/xpcom/version-comparator;1"]
- .getService(Components.interfaces.nsIVersionComparator);
+ // var appInfo = Services.appinfo;
+ // var versionChecker = Services.vc;
// This JSObject is exported directly to chrome
this.wrappedJSObject = this;
@@ -424,15 +380,8 @@ function CookieJarSelector() {
this.timerCallback = {
cookie_changed: false,
- QueryInterface: function(iid) {
- if (!iid.equals(Component.interfaces.nsISupports) &&
- !iid.equals(Component.interfaces.nsITimer)) {
- Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
- return null;
- }
- return this;
- },
- notify: function() {
+ QueryInterface: ChromeUtils.generateQI(["nsITimer"]),
+ notify() {
// this refers to timerCallback object. use jarThis to reference
// CookieJarSelector object.
if(!this.cookie_changed) {
@@ -450,27 +399,18 @@ function CookieJarSelector() {
}
-const nsISupports = Components.interfaces.nsISupports;
-const nsIClassInfo = Components.interfaces.nsIClassInfo;
-const nsIObserver = Components.interfaces.nsIObserver;
-const nsITimer = Components.interfaces.nsITimer;
-const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
-const nsIObserverService = Components.interfaces.nsIObserverService;
-const nsICategoryManager = Components.interfaces.nsICategoryManager;
+const nsISupports = Ci.nsISupports;
+const nsIClassInfo = Ci.nsIClassInfo;
+const nsIObserver = Ci.nsIObserver;
+const nsITimer = Ci.nsITimer;
+const nsIComponentRegistrar = Ci.nsIComponentRegistrar;
+const nsIObserverService = Ci.nsIObserverService;
+const nsICategoryManager = Ci.nsICategoryManager;
// Start1506: You may or may not care about this:
CookieJarSelector.prototype =
{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIClassInfo) &&
- !iid.equals(nsIObserver) &&
- !iid.equals(nsISupports)) {
- Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
- return null;
- }
- return this;
- },
+ QueryInterface: ChromeUtils.generateQI(["nsIClassInfo", "nsIObserver"]),
wrappedJSObject: null, // Initialized by constructor
@@ -496,19 +436,18 @@ CookieJarSelector.prototype =
observe : function(aSubject, aTopic, aData) {
switch(aTopic) {
case "cookie-changed":
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
+ var prefs = Services.prefs;
this.timerCallback.cookie_changed = true;
-
+
if (aData == "added"
&& prefs.getBoolPref("extensions.torbutton.cookie_auto_protect")
- && !prefs.getBoolPref("extensions.torbutton.tor_memory_jar"))
- {
- this.addProtectedCookie(aSubject.QueryInterface(Components.interfaces.nsICookie2));//protect the new cookie!
+ && !prefs.getBoolPref("extensions.torbutton.tor_memory_jar")) {
+ this.addProtectedCookie(aSubject.QueryInterface(Ci.nsICookie2));// protect the new cookie!
}
break;
case "profile-after-change":
- var obsSvc = Components.classes["@mozilla.org/observer-service;1"].getService(nsIObserverService);
- obsSvc.addObserver(this, "cookie-changed", false);
+ var obsSvc = Cc["@mozilla.org/observer-service;1"].getService(nsIObserverService);
+ obsSvc.addObserver(this, "cookie-changed");
// after profil loading, initialize a timer to call timerCallback
// at a specified interval
this.timer.initWithCallback(this.timerCallback, 60 * 1000, nsITimer.TYPE_REPEATING_SLACK); // 1 minute
@@ -517,7 +456,7 @@ CookieJarSelector.prototype =
}
},
- timer: Components.classes["@mozilla.org/timer;1"].createInstance(nsITimer),
+ timer: Cc["@mozilla.org/timer;1"].createInstance(nsITimer),
}
@@ -525,7 +464,7 @@ CookieJarSelector.prototype =
* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
if (XPCOMUtils.generateNSGetFactory)
var NSGetFactory = XPCOMUtils.generateNSGetFactory([CookieJarSelector]);
else
diff --git a/src/components/domain-isolator.js b/src/components/domain-isolator.js
index fc28703f..e04005a5 100644
--- a/src/components/domain-isolator.js
+++ b/src/components/domain-isolator.js
@@ -6,21 +6,19 @@
// call earlier functions). The code file can be processed
// with docco.js to provide clear documentation.
-/* jshint esversion: 6 */
-/* global Components, console, XPCOMUtils */
-
// ### Abbreviations
-const Cc = Components.classes, Ci = Components.interfaces, Cu = Components.utils;
+
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
// Make the logger available.
let logger = Cc["@torproject.org/torbutton-logger;1"]
- .getService(Components.interfaces.nsISupports).wrappedJSObject;
+ .getService(Ci.nsISupports).wrappedJSObject;
-let { ensureDefaultPrefs } = Cu.import("resource://torbutton/modules/default-prefs.js", {});
+let { ensureDefaultPrefs } = ChromeUtils.import("resource://torbutton/modules/default-prefs.js", {});
ensureDefaultPrefs();
// Import Services object
-Cu.import("resource://gre/modules/Services.jsm");
+ChromeUtils.import("resource://gre/modules/Services.jsm");
// Import crypto object (FF 37+).
Cu.importGlobalProperties(["crypto"]);
@@ -82,6 +80,8 @@ tor.socksProxyCredentials = function (originalProxy, domain) {
proxy.port,
domain, // username
tor.noncesForDomains[domain], // password
+ "", // aProxyAuthorizationHeader
+ "", // aConnectionIsolationKey
proxy.flags,
proxy.failoverTimeout,
proxy.failoverProxy);
@@ -138,7 +138,6 @@ tor.isolateCircuitsByDomain = function () {
}
try {
let channel = aChannel.QueryInterface(Ci.nsIChannel),
- proxy = aProxy.QueryInterface(Ci.nsIProxyInfo),
firstPartyDomain = channel.loadInfo.originAttributes.firstPartyDomain;
if (firstPartyDomain === "") {
firstPartyDomain = "--unknown--";
@@ -165,7 +164,7 @@ const kMODULE_CONTRACTID = "@torproject.org/domain-isolator;1";
const kMODULE_CID = Components.ID("e33fd6d4-270f-475f-a96f-ff3140279f68");
// Import XPCOMUtils object.
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
// DomainIsolator object.
function DomainIsolator() {
@@ -174,7 +173,7 @@ function DomainIsolator() {
// Firefox component requirements
DomainIsolator.prototype = {
- QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports, Ci.nsIObserver]),
+ QueryInterface: ChromeUtils.generateQI([Ci.nsISupports, Ci.nsIObserver]),
classDescription: kMODULE_NAME,
classID: kMODULE_CID,
contractID: kMODULE_CONTRACTID,
diff --git a/src/components/dragDropFilter.js b/src/components/dragDropFilter.js
index 916b835f..4465187e 100644
--- a/src/components/dragDropFilter.js
+++ b/src/components/dragDropFilter.js
@@ -5,13 +5,11 @@
* access to URLs (a potential proxy bypass vector).
*************************************************************************/
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-Cu.import("resource://torbutton/modules/default-prefs.js", {}).ensureDefaultPrefs();
+ChromeUtils.import("resource://torbutton/modules/default-prefs.js", {}).ensureDefaultPrefs();
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
// Module specific constants
const kMODULE_NAME = "Torbutton Drag and Drop Handler";
@@ -26,17 +24,15 @@ function DragDropFilter() {
this.logger.log(3, "Component Load 0: New DragDropFilter.");
try {
- var observerService = Cc["@mozilla.org/observer-service;1"].
- getService(Ci.nsIObserverService);
- observerService.addObserver(this, "on-datatransfer-available", false);
- } catch(e) {
+ Services.obs.addObserver(this, "on-datatransfer-available");
+ } catch (e) {
this.logger.log(5, "Failed to register drag observer");
}
}
DragDropFilter.prototype =
{
- QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports, Ci.nsIObserver]),
+ QueryInterface: ChromeUtils.generateQI([Ci.nsISupports, Ci.nsIObserver]),
// make this an nsIClassInfo object
flags: Ci.nsIClassInfo.DOM_OBJECT,
diff --git a/src/components/external-app-blocker.js b/src/components/external-app-blocker.js
index 1f88fc78..747824d1 100644
--- a/src/components/external-app-blocker.js
+++ b/src/components/external-app-blocker.js
@@ -12,14 +12,9 @@
* handle an URL (e.g., when the user clicks on a mailto: URL).
*************************************************************************/
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cr = Components.results;
-const Cu = Components.utils;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/SharedPromptUtils.jsm");
+const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
+const {PromptUtils} = ChromeUtils.import("resource://gre/modules/SharedPromptUtils.jsm");
// Module specific constants
const kMODULE_NAME = "Torbutton External App Handler";
@@ -38,7 +33,7 @@ ExternalAppBlocker.prototype =
{
_helperAppLauncher: undefined,
- QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports, Ci.nsIObserver,
+ QueryInterface: ChromeUtils.generateQI([Ci.nsISupports, Ci.nsIObserver,
Ci.nsIHelperAppWarningDialog]),
// make this an nsIClassInfo object
diff --git a/src/components/torCheckService.js b/src/components/torCheckService.js
index 19e13f49..4f79bef4 100644
--- a/src/components/torCheckService.js
+++ b/src/components/torCheckService.js
@@ -7,16 +7,13 @@
* Tor check service
*************************************************************************/
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
+
// Module specific constants
const kMODULE_NAME = "Torbutton Tor Check Service";
const kMODULE_CONTRACTID = "@torproject.org/torbutton-torCheckService;1";
const kMODULE_CID = Components.ID("5d57312b-5d8c-4169-b4af-e80d6a28a72e");
-const Cr = Components.results;
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
-
function TBTorCheckService() {
this._logger = Cc["@torproject.org/torbutton-logger;1"]
.getService(Ci.nsISupports).wrappedJSObject;
@@ -28,15 +25,7 @@ function TBTorCheckService() {
TBTorCheckService.prototype =
{
- QueryInterface: function(iid) {
- if (!iid.equals(Ci.nsIClassInfo) &&
- !iid.equals(Ci.nsISupports)) {
- Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
- return null;
- }
-
- return this;
- },
+ QueryInterface: ChromeUtils.generateQI([Ci.nsISupports, Ci.nsIClassInfo]),
kCheckNotInitiated: 0, // Possible values for statusOfTorCheck.
kCheckSuccessful: 1,
@@ -79,10 +68,8 @@ TBTorCheckService.prototype =
{
Cu.importGlobalProperties(["XMLHttpRequest"]);
let req = new XMLHttpRequest();
- let prefs = Cc["@mozilla.org/preferences-service;1"]
- .getService(Ci.nsIPrefBranch);
- let url = prefs.getCharPref("extensions.torbutton.test_url");
- req.open('GET', url, aAsync);
+ let url = Services.prefs.getCharPref("extensions.torbutton.test_url");
+ req.open("GET", url, aAsync);
req.channel.loadFlags |= Ci.nsIRequest.LOAD_BYPASS_CACHE;
req.overrideMimeType("text/xml");
req.timeout = 120000; // Wait at most two minutes for a response.
@@ -140,8 +127,8 @@ TBTorCheckService.prototype =
}
return ret;
- }
+ },
};
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
var NSGetFactory = XPCOMUtils.generateNSGetFactory([TBTorCheckService]);
diff --git a/src/components/torbutton-logger.js b/src/components/torbutton-logger.js
index fdf7bb7d..ce4ba70b 100644
--- a/src/components/torbutton-logger.js
+++ b/src/components/torbutton-logger.js
@@ -13,31 +13,25 @@ const kMODULE_NAME = "Torbutton Logger";
const kMODULE_CONTRACTID = "@torproject.org/torbutton-logger;1";
const kMODULE_CID = Components.ID("f36d72c9-9718-4134-b550-e109638331d7");
-const Cr = Components.results;
-const Cc = Components.classes;
-const Ci = Components.interfaces;
-const Cu = Components.utils;
+ChromeUtils.import("resource://torbutton/modules/default-prefs.js", {}).ensureDefaultPrefs();
-Cu.import("resource://torbutton/modules/default-prefs.js", {}).ensureDefaultPrefs();
-
-Cu.import("resource://gre/modules/Services.jsm");
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
function TorbuttonLogger() {
// Register observer
- Services.prefs.addObserver("extensions.torbutton", this, false);
+ Services.prefs.addObserver("extensions.torbutton", this);
this.loglevel = Services.prefs.getIntPref("extensions.torbutton.loglevel");
this.logmethod = Services.prefs.getIntPref("extensions.torbutton.logmethod");
try {
- var logMngr = Components.classes["@mozmonkey.com/debuglogger/manager;1"]
- .getService(Components.interfaces.nsIDebugLoggerManager);
+ var logMngr = Cc["@mozmonkey.com/debuglogger/manager;1"]
+ .getService(Ci.nsIDebugLoggerManager);
this._debuglog = logMngr.registerLogger("torbutton");
} catch (exErr) {
this._debuglog = false;
}
- this._console = Components.classes["@mozilla.org/consoleservice;1"]
- .getService(Components.interfaces.nsIConsoleService);
+ this._console = Services.console;
// This JSObject is exported directly to chrome
this.wrappedJSObject = this;
@@ -50,10 +44,10 @@ function TorbuttonLogger() {
* Everything below is boring boilerplate and can probably be ignored.
*/
-const nsISupports = Components.interfaces.nsISupports;
-const nsIClassInfo = Components.interfaces.nsIClassInfo;
-const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
-const nsIObserverService = Components.interfaces.nsIObserverService;
+const nsISupports = Ci.nsISupports;
+const nsIClassInfo = Ci.nsIClassInfo;
+const nsIComponentRegistrar = Ci.nsIComponentRegistrar;
+const nsIObserverService = Ci.nsIObserverService;
const logString = { 1:"VERB", 2:"DBUG", 3: "INFO", 4:"NOTE", 5:"WARN" };
@@ -64,15 +58,7 @@ function padInt(i)
TorbuttonLogger.prototype =
{
- QueryInterface: function(iid)
- {
- if (!iid.equals(nsIClassInfo) &&
- !iid.equals(nsISupports)) {
- Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
- return null;
- }
- return this;
- },
+ QueryInterface: ChromeUtils.generateQI([Ci.nsISupports, Ci.nsIClassInfo]),
wrappedJSObject: null, // Initialized by constructor
@@ -176,7 +162,7 @@ TorbuttonLogger.prototype =
* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
*/
-Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+const {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
if (XPCOMUtils.generateNSGetFactory)
var NSGetFactory = XPCOMUtils.generateNSGetFactory([TorbuttonLogger]);
else
diff --git a/src/modules/default-prefs.js b/src/modules/default-prefs.js
index 6a2bd86c..5ea549f4 100644
--- a/src/modules/default-prefs.js
+++ b/src/modules/default-prefs.js
@@ -4,7 +4,7 @@ function ensureDefaultPrefs () {
if (loaded) {
return;
}
- Components.utils.import("resource://gre/modules/Services.jsm");
+ const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");
const kDefaultPreferences = "resource://torbutton/defaults/preferences/preferences.js";
const defaultPrefBranch = Services.prefs.getDefaultBranch(null);
diff --git a/src/modules/noscript-control.js b/src/modules/noscript-control.js
index 4513dce8..0daf15e1 100644
--- a/src/modules/noscript-control.js
+++ b/src/modules/noscript-control.js
@@ -1,17 +1,16 @@
// # NoScript settings control (for binding to Security Slider)
-/* jshint esversion:6 */
-
// ## Utilities
-const { utils: Cu } = Components;
-const { Services } = Cu.import("resource://gre/modules/Services.jsm", {});
-const { LegacyExtensionContext } =
- Cu.import("resource://gre/modules/LegacyExtensionsUtils.jsm", {});
+const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm", {});
const { bindPref } =
- Cu.import("resource://torbutton/modules/utils.js", {});
-let logger = Components.classes["@torproject.org/torbutton-logger;1"]
- .getService(Components.interfaces.nsISupports).wrappedJSObject;
+ ChromeUtils.import("resource://torbutton/modules/utils.js", {});
+
+const { ExtensionUtils } = ChromeUtils.import("resource://gre/modules/ExtensionUtils.jsm");
+const { MessageChannel } = ChromeUtils.import("resource://gre/modules/MessageChannel.jsm");
+
+let logger = Cc["@torproject.org/torbutton-logger;1"]
+ .getService(Ci.nsISupports).wrappedJSObject;
let log = (level, msg) => logger.log(level, msg);
// ## NoScript settings
@@ -100,20 +99,28 @@ var initialize = () => {
initialized = true;
try {
- // A mock extension object that can communicate with another extension
- // via the WebExtensions sendMessage/onMessage mechanism.
- let extensionContext = new LegacyExtensionContext({ id : noscriptID });
+ // LegacyExtensionContext is not there anymore. Using raw
+ // Services.mm.broadcastAsyncMessage mecanism to communicate with
+ // NoScript.
// The component that handles WebExtensions' sendMessage.
- let messageManager = extensionContext.messenger.messageManagers[0];
// __setNoScriptSettings(settings)__.
// NoScript listens for internal settings with onMessage. We can send
// a new settings JSON object according to NoScript's
// protocol and these are accepted! See the use of
// `browser.runtime.onMessage.addListener(...)` in NoScript's bg/main.js.
+
+ // TODO: Is there a better way?
let sendNoScriptSettings = settings =>
- extensionContext.messenger.sendMessage(messageManager, settings, noscriptID);
+ Services.mm.broadcastAsyncMessage("MessageChannel:Messages", [{
+ messageName: "Extension:Message",
+ sender: { id: noscriptID, extensionId: noscriptID },
+ recipient: { extensionId: noscriptID },
+ data: new StructuredCloneHolder(settings),
+ channelId: ExtensionUtils.getUniqueId(),
+ responseType: MessageChannel.RESPONSE_NONE,
+ }]);
// __setNoScriptSafetyLevel(safetyLevel)__.
// Set NoScript settings according to a particular safety level
@@ -129,13 +136,20 @@ var initialize = () => {
// Wait for the first message from NoScript to arrive, and then
// bind the security_slider pref to the NoScript settings.
- let messageListener = (a,b,c) => {
+ const listener = ({ data }) => {
+ for (const msg of data) {
+ if (msg.recipient.extensionId === noscriptID) {
+ messageListener(msg.data.deserialize({}), msg.sender);
+ }
+ }
+ };
+ let messageListener = (a, b, c) => {
try {
- log(3, `Message received from NoScript: ${JSON.stringify([a,b,c])}`);
+ log(3, `Message received from NoScript: ${JSON.stringify([a, b, c])}`);
if (!["started", "pageshow"].includes(a.__meta.name)) {
return;
}
- extensionContext.api.browser.runtime.onMessage.removeListener(messageListener);
+ Services.mm.removeMessageListener("MessageChannel:Messages", listener);
let noscriptPersist = Services.prefs.getBoolPref("extensions.torbutton.noscript_persist", false);
let noscriptInited = Services.prefs.getBoolPref("extensions.torbutton.noscript_inited", false);
// Set the noscript safety level once if we have never run noscript
@@ -153,7 +167,7 @@ var initialize = () => {
log(5, e.message);
}
};
- extensionContext.api.browser.runtime.onMessage.addListener(messageListener);
+ Services.mm.addMessageListener("MessageChannel:Messages", listener);
log(3, "Listening for message from NoScript.");
} catch (e) {
log(5, e.message);
diff --git a/src/modules/security-prefs.js b/src/modules/security-prefs.js
index fa97b70d..ffc5ee39 100644
--- a/src/modules/security-prefs.js
+++ b/src/modules/security-prefs.js
@@ -2,13 +2,12 @@
// ### Utilities
-let {classes: Cc, utils: Cu } = Components;
let { getBoolPref, setBoolPref, getIntPref, setIntPref } =
- Cu.import("resource://gre/modules/Services.jsm", {}).Services.prefs;
+ ChromeUtils.import("resource://gre/modules/Services.jsm", {}).Services.prefs;
let { bindPref, bindPrefAndInit } =
- Cu.import("resource://torbutton/modules/utils.js", {});
-let logger = Components.classes["@torproject.org/torbutton-logger;1"]
- .getService(Components.interfaces.nsISupports).wrappedJSObject;
+ ChromeUtils.import("resource://torbutton/modules/utils.js", {});
+let logger = Cc["@torproject.org/torbutton-logger;1"]
+ .getService(Ci.nsISupports).wrappedJSObject;
let log = (level, msg) => logger.log(level, msg);
// ### Constants
diff --git a/src/modules/tor-control-port.js b/src/modules/tor-control-port.js
index 2c399367..f1d9ed14 100644
--- a/src/modules/tor-control-port.js
+++ b/src/modules/tor-control-port.js
@@ -19,15 +19,15 @@
"use strict";
// ### Mozilla Abbreviations
-let {classes: Cc, interfaces: Ci, results: Cr, Constructor: CC, utils: Cu } = Components;
+let { Constructor: CC } = Components;
// ### Import Mozilla Services
-Cu.import("resource://gre/modules/Services.jsm");
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
// __log__.
// Logging function
let logger = Cc["@torproject.org/torbutton-logger;1"]
- .getService(Components.interfaces.nsISupports).wrappedJSObject;
+ .getService(Ci.nsISupports).wrappedJSObject;
let log = x => logger.eclog(3, x.trimRight().replace(/\r\n/g, "\n"));
// ### announce this file
@@ -42,8 +42,8 @@ let io = {};
// given ipcFile or host and port.
io.asyncSocketStreams = function (ipcFile, host, port) {
let sts = Cc["@mozilla.org/network/socket-transport-service;1"]
- .getService(Components.interfaces.nsISocketTransportService),
- UNBUFFERED = Ci.nsITransport.OPEN_UNBUFFERED;
+ .getService(Ci.nsISocketTransportService),
+ UNBUFFERED = Ci.nsITransport.OPEN_UNBUFFERED;
// Create an instance of a socket transport.
let socketTransport;
diff --git a/src/modules/utils.js b/src/modules/utils.js
index d7baca6e..7b81819d 100644
--- a/src/modules/utils.js
+++ b/src/modules/utils.js
@@ -1,14 +1,8 @@
// # Utils.js
// Various helpful utility functions.
-// ### Shortcut
-const { Cu: utils, Cr: results } = Components;
-
// ### Import Mozilla Services
-Cu.import("resource://gre/modules/Services.jsm");
-
-// ### Import global URL
-Cu.importGlobalProperties(["URL"]);
+const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
// ### About firstPartyDomain literal
const k_tb_about_uri_first_party_domain = "about.ef2a7dd5-93bc-417f-a698-142c3116864f.mozilla";
@@ -76,8 +70,8 @@ var observe = function (topic, callback) {
// __env__.
// Provides access to process environment variables.
-let env = Components.classes["@mozilla.org/process/environment;1"]
- .getService(Components.interfaces.nsIEnvironment);
+let env = Cc["@mozilla.org/process/environment;1"]
+ .getService(Ci.nsIEnvironment);
// __getEnv(name)__.
// Reads the environment variable of the given name.
@@ -88,8 +82,8 @@ var getEnv = function (name) {
// __getLocale
// Reads the browser locale, the default locale is en-US.
var getLocale = function() {
- return Services.locale.getRequestedLocale() || "en-US";
-}
+ return Services.locale.requestedLocale || "en-US";
+};
// ## Windows
1
0
commit f7238d222fe4803070f65638cd5bbd4f778a477a
Author: Alex Catarineu <acat(a)torproject.org>
Date: Fri May 10 13:11:03 2019 +0200
XPI build not supported anymore
---
.gitignore | 1 -
README.BUILD | 19 ---
README.RELEASE | 107 --------------
makexpi.sh | 32 -----
update-unsigned.rdf | 392 ----------------------------------------------------
5 files changed, 551 deletions(-)
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 5fff1d9c..00000000
--- a/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-pkg
diff --git a/README.BUILD b/README.BUILD
deleted file mode 100644
index ea0803d7..00000000
--- a/README.BUILD
+++ /dev/null
@@ -1,19 +0,0 @@
-To build an XPI that is suitable for Babelzilla, do the following:
-
- patch -p0 < no-english.diff
- chmod +x makexpi.sh
- ./makexpi.sh
- cd pkg/
-
-You should see:
-
- file torbutton-1.2.0rc1.xpi
- pkg/torbutton-1.2.0rc1.xpi: Zip archive data, at least v1.0 to extract
-
-This is to work around the fact that an xpi requires empty strings for
-incomplete translations or the formatting of various dialogs will be broken.
-Furthermore, Babelzilla doesn't know an english string from a Japanese string
-and simply records translations as matching strings. The XPI resulting from
-the above build process will be ready for Babelzilla but should not be used by
-anyone else.
-
diff --git a/README.RELEASE b/README.RELEASE
deleted file mode 100644
index 42365832..00000000
--- a/README.RELEASE
+++ /dev/null
@@ -1,107 +0,0 @@
-# Magical Torbutton Release Process Incantations
-#
-# "May this part of my job one day be replaced by a small shell script"
-#
-
-#. Decide the version number.
-
- export VERSION="1.5.2"
- vim ./src/install.rdf # edit <em:version> tag to reflect version
-
-#. Test upgrades of candidate XPI in latest Firefox and TBB product matrix
-
- # TODO: Currently manual
-
-#. Generate changelog from git shortlog
-
- # TODO: Currently manual
-
-#. tx noise: https://svn.torproject.org/svn/translation/trunk/documentation/howto.txt
-
- cd torbutton.git/trans_tools/po
- torsocks svn up
- torsocks tx pull -a
- cd ..
- ./validate_all.sh | less
-
- torsocks ./new_tb_strings.sh
-
- ./mkmoz.sh
- ./mvmoz.sh
- cd ..
- git diff .
- git commit .
-
-#. Tag the release:
-
- git tag -u mikeperry(a)fscked.org -s ${VERSION}
- torsocks git push origin-push --tags
-
-#. Create the .xpi
-
- cd /tmp/
- torsocks git clone git://git.torproject.org/git/torbutton.git torbutton-release
- cd torbutton-release
- git tag -v ${VERSION} # verify signature against git protocol haaAAXXXX
- git checkout -b tag-${VERSION} ${VERSION}
- mkdir ./pkg
- sh makexpi.sh
-
-#. SHA1 + Sign the .xpi
-
- gpg -abs ./pkg/torbutton-${VERSION}.xpi
- sha1sum ./pkg/torbutton-${VERSION}.xpi
-
-#. Upload .xpi to website
-
- chmod 664 ./pkg/torbutton-${VERSION}.xpi*
- torsocks scp ./pkg/torbutton-${VERSION}.xpi* vescum:/srv/www-master.torproject.org/htdocs/dist/torbutton/
- torsocks scp ./pkg/torbutton-${VERSION}.xpi vescum:/srv/www-master.torproject.org/htdocs/dist/torbutton/torbutton-curre…
- torsocks scp ./pkg/torbutton-${VERSION}.xpi.asc vescum:/srv/www-master.torproject.org/htdocs/dist/torbutton/torbutton-curre…
-
-#. Update update-unsigned.rdf in torbutton.git with package sha1
-
- cd torbutton.git
- vim update-unsigned.rdf # Add <li> and <description> w/ sha1 and version
-
-#. Sign the new update-unsigned.rdf.
-
- # Key creation based on these instructions:
- # Command line: http://blog.techno-barje.fr/post/2009/10/08/How-to-setup-a-mozilla-extensio…
- # Gui: https://www.binaryturf.com/steps-release-extension-firefox-3/
-
- # TODO: Process currently manual due to offline signing.
- # No need to fear the reaper, man. We can do online signing if we just put
- # our minds to it: https://trac.torproject.org/projects/tor/ticket/6011
-
- # Special note: I was unable to update an already signed
- # copy of the update.rdf for a new release. We probably need to
- # keep the unsigned version around as input? See the root directory
- # of the torbutton.git for a copy.
- ./mccoy-cli.x86/mccoy -profile ./.mozilla/mccoy/*.default/ -signRDF update-unsigned.rdf -key Torbutton
-
- # Copy the signed update.rdf into place in the website svn
-
-#. Update update.rdf
-
- cd website-svn
- vim ./include/versions.wmi # Add sha1 and version
- cp /mnt/update-signed.rdf ./torbutton/update.rdf
-
-#. Update website
-
- torsocks svn up .
- torsocks svn commit .
-
- torsocks ssh vescum "/home/mirroradm/bin/trigger-mirrors"
-
-#. Test firefox autoupdate
-
- # Wait for mirrors to sync first.. Pester phobos/weasel/helix/Sebastian for
- # website push + dist chown + mirror update.
- # TODO: Currently manual
-
-#. Announce on tor-talk
-
- # FIXME: May need eventual minor improvements
- echo "Troll food." | mail tor-talk(a)lists.torproject.org -s "Feed the trolls"
diff --git a/makexpi.sh b/makexpi.sh
deleted file mode 100755
index 243fbd6b..00000000
--- a/makexpi.sh
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-APP_NAME=torbutton
-#VERSION=`grep em:version src/install.rdf | sed -e 's/["]//g' | cut -f2 -d=`
-XPI_NAME="$APP_NAME-`grep em:version src/install.rdf | sed -e 's/[<>]/ /g' | cut -f3`.xpi"
-
-if [ -e "pkg/$XPI_NAME" ]; then
- echo pkg/$XPI_NAME already exists.
- rm pkg/$XPI_NAME # meh.
- # exit 1
-fi
-
-# create jar file (we're just storing files here)
-echo ---------- create $APP_NAME.jar file ----------
-cd src/chrome
-#zip -r0 ../../$APP_NAME.jar ./ -x "*.svn/*"
-cd ../..
-
-# create .xpi
-echo ---------- create $APP_NAME.xpi ----------
-# create the pkg directory if it doesn't exist yet
-mkdir -p pkg
-cd src
-echo zip -X -9r ../pkg/$XPI_NAME ./ -x "chrome/*" -x "*.diff" -x "*.svn/*"
-zip -X -9r ../pkg/$XPI_NAME ./ -x "*.svn/*" -x "*.diff" #-x "chrome/*"
-#mv ../$APP_NAME.jar ./chrome
-#zip -9m ../pkg/$XPI_NAME chrome/$APP_NAME.jar
-cd ..
-
-#cp ./pkg/$XPI_NAME ~/
-#zip -9m ../../downloads/$sXpiName chrome/$APP_NAME.jar
-#zip -9 ../../downloads/$sXpiName install.rdf
-#cd ..
diff --git a/update-unsigned.rdf b/update-unsigned.rdf
deleted file mode 100644
index d4a013a7..00000000
--- a/update-unsigned.rdf
+++ /dev/null
@@ -1,392 +0,0 @@
-<?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:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}">
- <em:updates>
- <Seq>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.1.14-alpha"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.1.15-alpha"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.1.16-alpha"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.1.17-alpha"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.1.18alpha"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0rc1"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0rc2"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0rc3"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0rc4"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0rc5"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0rc6"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.3.2-alpha"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.3.3-alpha"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.0"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.1"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.2"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.3"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.4"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.4.1"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.5"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.5.1"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.6"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.6.1"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.6.2"/>
- <li resource="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.6.3"/>
- </Seq>
- </em:updates>
-
- </Description>
-
- <!-- version 1.1.14 -->
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.1.14-alpha">
- <em:version>1.1.14-alpha</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.0b*</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.1.14-alpha.xpi</em:updateLink>
- <em:updateHash>sha1:b316f9d84930ecf23b0797f93a6433334a4c38d5</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.1.15-alpha">
- <em:version>1.1.15-alpha</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.0b*</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.1.15-alpha.xpi</em:updateLink>
- <em:updateHash>sha1:fa0d47c98d258ba904d828bea15b140ab438eb56</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.1.16-alpha">
- <em:version>1.1.16-alpha</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.0b*</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.1.16-alpha.xpi</em:updateLink>
- <em:updateHash>sha1:f892dac7e5da8c63005f896c9aa1436e3f77ab4b</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.1.17-alpha">
- <em:version>1.1.17-alpha</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.0b*</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.1.17-alpha.xpi</em:updateLink>
- <em:updateHash>sha1:93e17f955655eb31e5a6ff9f71dfde479a5b7a6d</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.1.18alpha">
- <em:version>1.1.18alpha</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.0b*</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.1.18alpha.xpi</em:updateLink>
- <em:updateHash>sha1:6fdcebcb1e6cc694b45065c2b6df07ffb12ea164</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0rc1">
- <em:version>1.2.0rc1</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.1a1pre</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.2.0rc1.xpi</em:updateLink>
- <em:updateHash>sha1:8c8cb5e7e3844b8310151c5b56fb622134ea67f6</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0rc2">
- <em:version>1.2.0rc2</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.1a1pre</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.2.0rc2.xpi</em:updateLink>
- <em:updateHash>sha1:f0d6e121e2b0fbd4d1db7c3f333b8d7ab5c1d906</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0rc3">
- <em:version>1.2.0rc3</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.1a1pre</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.2.0rc3.xpi</em:updateLink>
- <em:updateHash>sha1:184294b480119bb7b943ede116345c52ee7772fc</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0rc4">
- <em:version>1.2.0rc4</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.1a1pre</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.2.0rc4.xpi</em:updateLink>
- <em:updateHash>sha1:23df6a12c7140b5817338136da1cd7737412bbbb</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0rc5">
- <em:version>1.2.0rc5</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.1a1pre</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.2.0rc5.xpi</em:updateLink>
- <em:updateHash>sha1:050925e2c02e61f2f0ceb4683600fc0c58a835bb</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0rc6">
- <em:version>1.2.0rc6</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.1a1pre</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.2.0rc6.xpi</em:updateLink>
- <em:updateHash>sha1:7f01c577641b6222781cd880c9825d6f50ff1cc4</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.0">
- <em:version>1.2.0</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.1a1pre</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.2.0.xpi</em:updateLink>
- <em:updateHash>sha1:086e2a05b8e5393f2f28533cdb715e69465c3169</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.2.1">
- <em:version>1.2.1</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>3.1a1pre</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.2.1.xpi</em:updateLink>
- <em:updateHash>sha1:204766e5c9112aba7313e3ab98023f57f1668978</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.3.2-alpha">
- <em:version>1.3.2-alpha</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>4.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/torbutton/releases/torbutton-1.3.2-alpha.xpi</em:updateLink>
- <em:updateHash>sha1:4231cf0e568fe61f49011d4626e85cdb467c6a48</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.3.3-alpha">
- <em:version>1.3.3-alpha</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.3.3-alpha.xpi</em:updateLink>
- <em:updateHash>sha1:c7323cd408ebee28ee23b6a91fe056d59de668f5</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.0">
- <em:version>1.4.0</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.4.0.xpi</em:updateLink>
- <em:updateHash>sha1:4df99e70b2991bb51ea70d0c217961174b24a98e</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.1">
- <em:version>1.4.1</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.4.1.xpi</em:updateLink>
- <em:updateHash>sha1:7f80cf8eea6d523fdb0bac94eefce52ebbb192be</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.2">
- <em:version>1.4.2</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.4.2.xpi</em:updateLink>
- <em:updateHash>sha1:a724c55165f81a86e2ec1d56026c9160964c5b87</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.3">
- <em:version>1.4.3</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.4.3.xpi</em:updateLink>
- <em:updateHash>sha1:e048d53b3e36c161ccfb75b09c6aece8b7f1e94f</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.4">
- <em:version>1.4.4</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.4.4.xpi</em:updateLink>
- <em:updateHash>sha1:3f352e7d8577fc576a9011d858a8b34f4fea4b09</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.4.1">
- <em:version>1.4.4.1</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.4.4.1.xpi</em:updateLink>
- <em:updateHash>sha1:95dc1e079da873aae9ca1beb7354fb8fdeaa7414</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.5">
- <em:version>1.4.5</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.4.5.xpi</em:updateLink>
- <em:updateHash>sha1:5f2e2d72343b2d4702ec24491a11babedd3650b9</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.5.1">
- <em:version>1.4.5.1</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.4.5.1.xpi</em:updateLink>
- <em:updateHash>sha1:0002e2d61613504e41d8b773c30ff6307b8286da</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.6">
- <em:version>1.4.6</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.4.6.xpi</em:updateLink>
- <em:updateHash>sha1:eedadda6e5aacb8dabe2118e6c14c4dd4441fed0</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.6.1">
- <em:version>1.4.6.1</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.4.6.1.xpi</em:updateLink>
- <em:updateHash>sha1:fb1df9ce40c5b1282e701f2a96694b0bfbdc2687</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.6.2">
- <em:version>1.4.6.2</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.4.6.2.xpi</em:updateLink>
- <em:updateHash>sha1:1182fa2dcb095ad8054a218c41bc0a849b5b30ed</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
- <Description about="urn:mozilla:extension:{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}:1.4.6.3">
- <em:version>1.4.6.3</em:version>
- <em:targetApplication>
- <Description>
- <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
- <em:minVersion>0.9</em:minVersion>
- <em:maxVersion>10000.0</em:maxVersion>
- <em:updateLink>https://www.torproject.org/dist/torbutton/torbutton-1.4.6.3.xpi</em:updateLink>
- <em:updateHash>sha1:968455a5b702b3cabb6c16499e531a5a8f4c5f21</em:updateHash>
- </Description>
- </em:targetApplication>
- </Description>
-
-</RDF>
1
0