tbb-commits
Threads by month
- ----- 2025 -----
- July
- 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
- 18606 discussions
commit da6b1ad6bccceed4c07be551f5ca5cedf66af96f
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri May 17 11:36:32 2019 +0000
Release prep for 0.2.19
Version bump
---
src/install.rdf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/install.rdf b/src/install.rdf
index 060b032..828ddfb 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -7,7 +7,7 @@
<em:creator>The Tor Project, Inc.</em:creator>
<em:contributor>Pearl Crescent, LLC</em:contributor>
<em:id>tor-launcher(a)torproject.org</em:id>
- <em:version>0.2.18.2</em:version>
+ <em:version>0.2.19</em:version>
<em:multiprocessCompatible>true</em:multiprocessCompatible>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html</em:homepageURL>
<em:updateURL>data:text/plain,</em:updateURL>
1
0
commit b4e4b0cd81198e52292c110e5745a91f45bb8b7f
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri May 17 11:35:37 2019 +0000
Translations update
---
src/chrome/locale/fr/network-settings.dtd | 2 +-
src/chrome/locale/fr/torlauncher.properties | 4 ++--
src/chrome/locale/nl/torlauncher.properties | 8 ++++----
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/chrome/locale/fr/network-settings.dtd b/src/chrome/locale/fr/network-settings.dtd
index e45fa88..5054c67 100644
--- a/src/chrome/locale/fr/network-settings.dtd
+++ b/src/chrome/locale/fr/network-settings.dtd
@@ -49,7 +49,7 @@
<!ENTITY torsettings.useBridges.label "Saisir des informations de pont provenant d’une source fiable">
<!ENTITY torsettings.useBridges.placeholder "type adresse:port (un par ligne)">
-<!ENTITY torsettings.copyLog "Copier le journal de Tor dans le presse-papiers">
+<!ENTITY torsettings.copyLog "Copier le journal Tor dans le presse-papiers">
<!ENTITY torsettings.proxyHelpTitle "Aide sur les mandataires">
<!ENTITY torsettings.proxyHelp1 "Un mandataire local peut être nécessaire lors d’une connexion par un réseau d’entreprise, d’école ou d’université. Si vous n’êtes pas certain si un mandataire est nécessaire, vérifiez les paramètres Internet d’un autre navigateur ou les paramètres réseau de votre système.">
diff --git a/src/chrome/locale/fr/torlauncher.properties b/src/chrome/locale/fr/torlauncher.properties
index 0c8cd51..59514c1 100644
--- a/src/chrome/locale/fr/torlauncher.properties
+++ b/src/chrome/locale/fr/torlauncher.properties
@@ -4,7 +4,7 @@
torlauncher.error_title=Lanceur Tor
torlauncher.tor_exited_during_startup=Tor s’est fermé pendant le démarrage. Cela peut être dû à une erreur dans votre fichier torrc, un bogue dans Tor ou dans un autre programme de votre système, ou encore à un matériel défectueux. Jusqu’à ce que vous corrigiez le problème sous-jacent et redémarriez Tor, le Navigateur Tor ne démarrera pas.
-torlauncher.tor_exited=Tor s’est fermé de manière imprévue. Cela peut être dû à un bogue dans Tor même, un autre programme dans votre système ou un matériel défectueux. Jusqu’à ce que vous redémarriez Tor, le Navigateur Tor ne pourra atteindre aucun site. Si le problème persiste, veuillez envoyer une copie de votre journal de Tor à l’équipe de soutien.
+torlauncher.tor_exited=Tor s’est fermé de manière imprévue. Cela peut être dû à un bogue dans Tor même, un autre programme dans votre système ou un matériel défectueux. Jusqu’à ce que vous redémarriez Tor, le Navigateur Tor ne pourra atteindre aucun site. Si le problème persiste, veuillez envoyer une copie de votre journal Tor à l’équipe de soutien.
torlauncher.tor_exited2=Redémarrer Tor ne fermera pas les onglets de votre navigateur.
torlauncher.tor_controlconn_failed=Impossible de se connecter au port de contrôle de Tor.
torlauncher.tor_failed_to_start=Tor n’a pas pu démarrer.
@@ -50,7 +50,7 @@ torlauncher.done=Terminé
torlauncher.forAssistance=Pour de l’assistance, contacter %S
torlauncher.forAssistance2=Pour de l’assistance, visiter %S
-torlauncher.copiedNLogMessages=La copie est terminée. %S messages de journalisation de Tor sont prêts à être collés dans un éditeur de texte ou un courriel.
+torlauncher.copiedNLogMessages=La copie est terminée. %S messages du journal Tor sont prêts à être collés dans un éditeur de texte ou dans un courriel.
torlauncher.bootstrapStatus.starting=Démarrage
torlauncher.bootstrapStatus.conn_pt=Connexion au pont
diff --git a/src/chrome/locale/nl/torlauncher.properties b/src/chrome/locale/nl/torlauncher.properties
index 1476281..56d6363 100644
--- a/src/chrome/locale/nl/torlauncher.properties
+++ b/src/chrome/locale/nl/torlauncher.properties
@@ -67,16 +67,16 @@ torlauncher.bootstrapStatus.loading_status=Laden van de netwerkstatus
torlauncher.bootstrapStatus.loading_keys=Laden van de authoriteitcertificaten
torlauncher.bootstrapStatus.requesting_descriptors=Opvragen van verbindingsinformatie
torlauncher.bootstrapStatus.loading_descriptors=Laden van verbindingsinformatie
-torlauncher.bootstrapStatus.enough_dirinfo=Klaar met het laden van relay informatie
+torlauncher.bootstrapStatus.enough_dirinfo=Laden van relay-informatie voltooid
torlauncher.bootstrapStatus.ap_conn_pt=Circuit maken: verbinden met brug
torlauncher.bootstrapStatus.ap_conn_done_pt=Circuits bouwen: verbonden met bridge
torlauncher.bootstrapStatus.ap_conn_proxy=Circuits bouwen: verbinden met proxy
torlauncher.bootstrapStatus.ap_conn_done_proxy=Circuits bouwen: verbonden met proxy
torlauncher.bootstrapStatus.ap_conn=Circuits bouwen: verbinden met een Tor-relay
torlauncher.bootstrapStatus.ap_conn_done=Circuit opbouwen: Verbonden met een Tor relay
-torlauncher.bootstrapStatus.ap_handshake=Circuits opzetten: Onderhandelen met een TOR relay
-torlauncher.bootstrapStatus.ap_handshake_done=Circuits opzetten: Klaar met onderhandelen met een TOR relay
-torlauncher.bootstrapStatus.circuit_create=Circuits opzetten: TOR circuit tot stand aan het brengen
+torlauncher.bootstrapStatus.ap_handshake=Circuits opzetten: onderhandelen met een Tor-relay
+torlauncher.bootstrapStatus.ap_handshake_done=Circuits opzetten: onderhandelen met een Tor-relay voltooid
+torlauncher.bootstrapStatus.circuit_create=Circuits opzetten: Tor-circuit tot stand brengen
torlauncher.bootstrapStatus.done=Verbonden met het Tor-netwerk!
torlauncher.bootstrapWarning.done=uitgevoerd
1
0
commit a89101b9fa856bbfaec49e7b71d5f5e7175f7c81
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri May 17 11:25:16 2019 +0000
Release prep for 2.1.9
---
src/CHANGELOG | 4 ++++
src/install.rdf | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/CHANGELOG b/src/CHANGELOG
index 772975ec..2be620f5 100644
--- a/src/CHANGELOG
+++ b/src/CHANGELOG
@@ -1,3 +1,7 @@
+2.1.9
+ * Bug 30464: Add WebGL to safer descriptions
+ * Translations update
+
2.1.8
* Bug 30171: Don't sync cookie.cookieBehavior and firstparty.isolate
* Bug 30115: Map browser+domain to credentials to fix circuit display
diff --git a/src/install.rdf b/src/install.rdf
index a4c0808d..eebc2de0 100644
--- a/src/install.rdf
+++ b/src/install.rdf
@@ -6,7 +6,7 @@
<em:name>Torbutton</em:name>
<em:creator>Mike Perry</em:creator>
<em:id>torbutton(a)torproject.org</em:id>
- <em:version>2.1.8</em:version>
+ <em:version>2.1.9</em:version>
<em:multiprocessCompatible>true</em:multiprocessCompatible>
<em:homepageURL>https://www.torproject.org/projects/torbrowser.html.en</em:homepageURL>
<em:iconURL>chrome://torbutton/skin/tor.png</em:iconURL>
1
0
commit 4e2b858521762c50c8bc0ebbb9c1e8885a4ecc98
Author: Georg Koppen <gk(a)torproject.org>
Date: Fri May 17 11:21:42 2019 +0000
Translations update
---
src/chrome/locale/ar/securityLevel.properties | 2 +-
src/chrome/locale/ar/torbutton.dtd | 2 +-
src/chrome/locale/bn-BD/securityLevel.properties | 2 +-
src/chrome/locale/bn-BD/torbutton.dtd | 2 +-
src/chrome/locale/ca/securityLevel.properties | 2 +-
src/chrome/locale/ca/torbutton.dtd | 2 +-
src/chrome/locale/cs/securityLevel.properties | 2 +-
src/chrome/locale/cs/torbutton.dtd | 2 +-
src/chrome/locale/da/securityLevel.properties | 2 +-
src/chrome/locale/da/torbutton.dtd | 2 +-
src/chrome/locale/de/securityLevel.properties | 2 +-
src/chrome/locale/de/torbutton.dtd | 2 +-
src/chrome/locale/el/securityLevel.properties | 2 +-
src/chrome/locale/el/torbutton.dtd | 2 +-
src/chrome/locale/es-AR/securityLevel.properties | 2 +-
src/chrome/locale/es-AR/torbutton.dtd | 2 +-
src/chrome/locale/es-ES/securityLevel.properties | 2 +-
src/chrome/locale/es-ES/torbutton.dtd | 2 +-
src/chrome/locale/eu/securityLevel.properties | 2 +-
src/chrome/locale/eu/torbutton.dtd | 2 +-
src/chrome/locale/fa/securityLevel.properties | 2 +-
src/chrome/locale/fa/torbutton.dtd | 2 +-
src/chrome/locale/fr/securityLevel.properties | 2 +-
src/chrome/locale/fr/torbutton.dtd | 6 +++---
src/chrome/locale/fr/torbutton.properties | 4 ++--
src/chrome/locale/ga-IE/securityLevel.properties | 2 +-
src/chrome/locale/ga-IE/torbutton.dtd | 2 +-
src/chrome/locale/he/securityLevel.properties | 2 +-
src/chrome/locale/he/torbutton.dtd | 2 +-
src/chrome/locale/hu/securityLevel.properties | 2 +-
src/chrome/locale/hu/torbutton.dtd | 2 +-
src/chrome/locale/id/securityLevel.properties | 2 +-
src/chrome/locale/id/torbutton.dtd | 2 +-
src/chrome/locale/is/securityLevel.properties | 2 +-
src/chrome/locale/is/torbutton.dtd | 2 +-
src/chrome/locale/it/securityLevel.properties | 2 +-
src/chrome/locale/it/torbutton.dtd | 2 +-
src/chrome/locale/ja/securityLevel.properties | 2 +-
src/chrome/locale/ja/torbutton.dtd | 2 +-
src/chrome/locale/ka/securityLevel.properties | 2 +-
src/chrome/locale/ka/torbutton.dtd | 2 +-
src/chrome/locale/ko/securityLevel.properties | 2 +-
src/chrome/locale/ko/torbutton.dtd | 2 +-
src/chrome/locale/nb-NO/aboutTor.dtd | 4 ++--
src/chrome/locale/nb-NO/securityLevel.properties | 2 +-
src/chrome/locale/nb-NO/torbutton.dtd | 2 +-
src/chrome/locale/nl/aboutTor.dtd | 4 ++--
src/chrome/locale/nl/securityLevel.properties | 2 +-
src/chrome/locale/nl/torbutton.dtd | 2 +-
src/chrome/locale/pl/securityLevel.properties | 2 +-
src/chrome/locale/pl/torbutton.dtd | 2 +-
src/chrome/locale/pt-BR/securityLevel.properties | 2 +-
src/chrome/locale/pt-BR/torbutton.dtd | 2 +-
src/chrome/locale/ru/securityLevel.properties | 2 +-
src/chrome/locale/ru/torbutton.dtd | 2 +-
src/chrome/locale/sv-SE/securityLevel.properties | 2 +-
src/chrome/locale/sv-SE/torbutton.dtd | 2 +-
src/chrome/locale/tr/securityLevel.properties | 2 +-
src/chrome/locale/tr/torbutton.dtd | 2 +-
src/chrome/locale/vi/securityLevel.properties | 2 +-
src/chrome/locale/vi/torbutton.dtd | 2 +-
src/chrome/locale/zh-CN/securityLevel.properties | 2 +-
src/chrome/locale/zh-CN/torbutton.dtd | 2 +-
src/chrome/locale/zh-TW/securityLevel.properties | 2 +-
src/chrome/locale/zh-TW/torbutton.dtd | 2 +-
65 files changed, 70 insertions(+), 70 deletions(-)
diff --git a/src/chrome/locale/ar/securityLevel.properties b/src/chrome/locale/ar/securityLevel.properties
index e628f9c1..a1abde20 100644
--- a/src/chrome/locale/ar/securityLevel.properties
+++ b/src/chrome/locale/ar/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Security Level : Safer
securityLevel.safer.summary = يعطل مميزات مواقع الوب التي عادة ما تكون خطيرة. يتسبب في تعطل خصائص بعض المواقع.
securityLevel.safer.description1 = تعطل جافا سكربت على المواقع التي لا تستخدم HTTPS
securityLevel.safer.description2 = تعطّل بعض الخطوط والرموز الرياضية.
-securityLevel.safer.description3 = الصوت والفيديو يحتاج للنقر لتشغيله.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = الأكثر أمنا
securityLevel.safest.tooltip = Security Level : Safest
securityLevel.safest.summary = اسمح فقط بالخصائص المطلوبة للمواقع غير الديناميكية والخدمات الأساسية. تؤثر هذه التغييرات على الصور والوسائط والنصوص البرمجية.
diff --git a/src/chrome/locale/ar/torbutton.dtd b/src/chrome/locale/ar/torbutton.dtd
index 9c2b5292..1b0a01cd 100644
--- a/src/chrome/locale/ar/torbutton.dtd
+++ b/src/chrome/locale/ar/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "تعطل جافا سكربت مبدئيا على جميع المواقع.">
<!ENTITY torbutton.prefs.sec_limit_typography "تعطّل بعض الخطوط والرموز الرياضية.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "تعطّل بعض الخطوط والأيقونات والرموز الرياضية والصور.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "الصوت والفيديو يحتاج للنقر لتشغيله.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "دائرة تور">
<!ENTITY torbutton.circuit_display.new_circuit "دائرة تور جديدة لهذا الموقع">
diff --git a/src/chrome/locale/bn-BD/securityLevel.properties b/src/chrome/locale/bn-BD/securityLevel.properties
index b6369a12..5a19cb74 100644
--- a/src/chrome/locale/bn-BD/securityLevel.properties
+++ b/src/chrome/locale/bn-BD/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = নিরাপত্তা স্তর: নি
securityLevel.safer.summary = ওয়েবসাইটের বৈশিষ্ট্যগুলি প্রায়ই বিপজ্জনক করে, যা কিছু সাইটগুলি কার্যকারিতা হারাতে বাধা দেয়।
securityLevel.safer.description1 = Non-HTTPS সাইটগুলিতে জাভাস্ক্রিপ্ট অক্ষম করা আছে।
securityLevel.safer.description2 = কিছু ফন্ট এবং গণিত চিহ্ন অক্ষম আছে।
-securityLevel.safer.description3 = অডিও এবং ভিডিও (HTML5 মিডিয়া) ক্লিক-টু-খেলা।
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = নিরাপদ
securityLevel.safest.tooltip = নিরাপত্তা স্তর: নিশ্চিত নিরাপদ
securityLevel.safest.summary = শুধুমাত্র স্থায়ী সাইট এবং মৌলিক পরিষেবাগুলির জন্য প্রয়োজনীয় ওয়েবসাইট বৈশিষ্ট্যগুলি মঞ্জুরি দেয় এই পরিবর্তনগুলি ইমেজ, মিডিয়া এবং স্ক্রিপ্টগুলি প্রভাবিত করে।
diff --git a/src/chrome/locale/bn-BD/torbutton.dtd b/src/chrome/locale/bn-BD/torbutton.dtd
index 27be1a9a..1157450e 100644
--- a/src/chrome/locale/bn-BD/torbutton.dtd
+++ b/src/chrome/locale/bn-BD/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "জাভাস্ক্রিপ্ট সব সাইটে ডিফল্ট দ্বারা নিষ্ক্রিয় করা হয়।">
<!ENTITY torbutton.prefs.sec_limit_typography "কিছু ফন্ট এবং গণিত চিহ্ন অক্ষম আছে।">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "কিছু ফন্ট, আইকন, গণিত প্রতীক এবং ছবি অক্ষম রয়েছে।">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "অডিও এবং ভিডিও (HTML5 মিডিয়া) ক্লিক-টু-খেলা।">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "টর সার্কিট">
<!ENTITY torbutton.circuit_display.new_circuit "এই সাইটের জন্য নতুন সার্কিট">
diff --git a/src/chrome/locale/ca/securityLevel.properties b/src/chrome/locale/ca/securityLevel.properties
index bb4988c6..23f94423 100644
--- a/src/chrome/locale/ca/securityLevel.properties
+++ b/src/chrome/locale/ca/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Nivell de seguretat: més segur
securityLevel.safer.summary = Desactivar les funcions del lloc web que sovint són perilloses, pot fent que alguns llocs perden funcionalitat.
securityLevel.safer.description1 = El JavaScript està desactivat per defecte en tots els llocs no-HTTPS
securityLevel.safer.description2 = Algunes fonts i símbols matemàtics estan desactivats.
-securityLevel.safer.description3 = L'àudio i el vídeo (mitjans de comunicació HTML5) són click-to-play.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = més segur
securityLevel.safest.tooltip = Nivell de seguretat: el més segur
securityLevel.safest.summary = Només es permeten funcions del lloc web requerides per a llocs estàtics i serveis bàsics. Aquests canvis afecten imatges, mitjans de comunicació i scripts.
diff --git a/src/chrome/locale/ca/torbutton.dtd b/src/chrome/locale/ca/torbutton.dtd
index 7537e1d7..3adef8ee 100644
--- a/src/chrome/locale/ca/torbutton.dtd
+++ b/src/chrome/locale/ca/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "El JavaScript està desactivat per defecte a tots els llocs.">
<!ENTITY torbutton.prefs.sec_limit_typography "Algunes fonts i símbols matemàtics estan desactivats. ">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Algunes fonts, icones, símbols matemàtics, i imatges estan desactivats. ">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "L'àudio i el vídeo (mitjans de comunicació HTML5) són click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuit de Tor">
<!ENTITY torbutton.circuit_display.new_circuit " Circuit de Tor per a aquest lloc ">
diff --git a/src/chrome/locale/cs/securityLevel.properties b/src/chrome/locale/cs/securityLevel.properties
index e5aa92b5..357c3b3f 100644
--- a/src/chrome/locale/cs/securityLevel.properties
+++ b/src/chrome/locale/cs/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Úroveň zabezpečení: bezpečnější
securityLevel.safer.summary = Některé méně bezpečné funkce jsou vypnuty, ale některé stránky nemusí fungovat.
securityLevel.safer.description1 = JavaScript je na stránkách bez HTTPS vypnut.
securityLevel.safer.description2 = Některá písma a matematické symboly jsou zablokovány.
-securityLevel.safer.description3 = Audio a video (HTML5 média) se přehrávají po kliknutí.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Nejbezpečnější
securityLevel.safest.tooltip = Úroveň zabezpečení: nejbezpečnější
securityLevel.safest.summary = Povolí jen funkce pro zobrazení statických webových stránek a fungování základních služeb. Ovlivněno bude zobrazení obrázků, médií a fungování skriptů.
diff --git a/src/chrome/locale/cs/torbutton.dtd b/src/chrome/locale/cs/torbutton.dtd
index 1a4feeed..ae92cd70 100644
--- a/src/chrome/locale/cs/torbutton.dtd
+++ b/src/chrome/locale/cs/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript je ve výchozím nastavení vypnut na všech stránkách.">
<!ENTITY torbutton.prefs.sec_limit_typography "Některá písma a matematické symboly jsou zablokovány.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Některá písma, matematické symboly a obrázky jsou zablokovány.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio a video (HTML5 média) se přehrávají po kliknutí.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor okruh">
<!ENTITY torbutton.circuit_display.new_circuit "Nový okruh Toru pro tuto stránku">
diff --git a/src/chrome/locale/da/securityLevel.properties b/src/chrome/locale/da/securityLevel.properties
index f6821b5d..23b0ded9 100644
--- a/src/chrome/locale/da/securityLevel.properties
+++ b/src/chrome/locale/da/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Sikkerhedsniveau : Mere sikker
securityLevel.safer.summary = Deaktiverer webstedsfunktionaliteter som ofte er farlige, hvilket kan gøre at nogle steder mister deres funktionalitet.
securityLevel.safer.description1 = JavaScript er deaktiveret på ikke-HTTPS steder.
securityLevel.safer.description2 = Nogle skrifttyper og matematiksymboler er deaktiverede.
-securityLevel.safer.description3 = Lyd og video (HTML5-medier) er klik-for-at-afspille.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Mest sikker
securityLevel.safest.tooltip = Sikkerhedsniveau : Mest sikker
securityLevel.safest.summary = Tillader kun webstedsfunktionaliteter som kræves til statiske steder og grundlæggende tjenester. Ændringerne påvirker billeder, medier og scripts.
diff --git a/src/chrome/locale/da/torbutton.dtd b/src/chrome/locale/da/torbutton.dtd
index 4fa64baa..6e3b1ef9 100644
--- a/src/chrome/locale/da/torbutton.dtd
+++ b/src/chrome/locale/da/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript er som standard deaktiveret på alle steder.">
<!ENTITY torbutton.prefs.sec_limit_typography "Nogle skrifttyper og matematiksymboler er deaktiverede.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Nogle skrifttyper, ikoner, matematiksymboler og billeder er deaktiveret.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Lyd og video (HTML5-medier) er klik-for-at-afspille.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor-kredsløb">
<!ENTITY torbutton.circuit_display.new_circuit "Nyt kredsløb til dette sted">
diff --git a/src/chrome/locale/de/securityLevel.properties b/src/chrome/locale/de/securityLevel.properties
index 27a6f05e..0f9f2d89 100644
--- a/src/chrome/locale/de/securityLevel.properties
+++ b/src/chrome/locale/de/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Sicherheitsstufe: Sicherer
securityLevel.safer.summary = Deaktiviert Webseiten-Funktionen, die oft gefährlich sind. Sorgt dafür, dass manche Seiten nicht mehr so gut funktionieren
securityLevel.safer.description1 = JavaScript ist auf Nicht-HTTTPS-Sites deaktiviert.
securityLevel.safer.description2 = Einige Schriftarten und mathematische Symbole sind deaktiviert.
-securityLevel.safer.description3 = Audio und Video (HTML5-Medien) müssen zur Wiedergabe angeklickt werden.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Am sichersten
securityLevel.safest.tooltip = Sicherheitsstufe: Am sichersten
securityLevel.safest.summary = Erlaubt nur Webseiten-Funktionen, die für statische Seiten und Basisdienste benötigt werden. Diese Änderungen betreffen Bilder, Medien und Skripte.
diff --git a/src/chrome/locale/de/torbutton.dtd b/src/chrome/locale/de/torbutton.dtd
index c3d815f0..9e044543 100644
--- a/src/chrome/locale/de/torbutton.dtd
+++ b/src/chrome/locale/de/torbutton.dtd
@@ -37,6 +37,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript ist standardmäßig auf allen Seiten deaktiviert.">
<!ENTITY torbutton.prefs.sec_limit_typography "Einige Schriftarten und mathematische Symbole sind deaktiviert.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Einige Schriftarten, Symbole, mathematische Symbole und Bilder sind deaktiviert.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio und Video (HTML5-Medien) müssen zur Wiedergabe angeklickt werden.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Kanal">
<!ENTITY torbutton.circuit_display.new_circuit "Neuen Kanal für diese Seite">
diff --git a/src/chrome/locale/el/securityLevel.properties b/src/chrome/locale/el/securityLevel.properties
index d04b8780..78dee581 100644
--- a/src/chrome/locale/el/securityLevel.properties
+++ b/src/chrome/locale/el/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Επίπεδο ασφαλείας: Ασφαλέσ
securityLevel.safer.summary = Απενεργοποιεί παροχές ιστοσελίδων που είναι επικίνδυνες και οδηγούν κάποιες ιστοσελίδες στο να χάνουν λειτουργικότητα.
securityLevel.safer.description1 = Η JavaScript είναι απενεργοποιημένη σε ιστότοπους που δεν είναι HTTPS.
securityLevel.safer.description2 = Μερικές γραμματοσειρές και μαθηματικά σύμβολα είναι απενεργοποιημένα.
-securityLevel.safer.description3 = Οι ήχοι και τα βίντεο (μέσα HTML5) παίζουν, αφού γίνει κλικ για αναπαραγωγή.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Ασφαλέστατο
securityLevel.safest.tooltip = Επίπεδο ασφαλείας: Ασφαλέστατο
securityLevel.safest.summary = Επιτρέπει μόνο τις παροχές ιστοσελίδας που απαιτούνται για βασικές ιστοσελίδες και υπηρεσίες. Αυτό επηρεάζει εικόνες, μέσα και scripts.
diff --git a/src/chrome/locale/el/torbutton.dtd b/src/chrome/locale/el/torbutton.dtd
index 4f474387..83f40ded 100644
--- a/src/chrome/locale/el/torbutton.dtd
+++ b/src/chrome/locale/el/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "Η JavaScript είναι απενεργοποιημένη σε όλους τους ιστότοπους ως προεπιλογή.">
<!ENTITY torbutton.prefs.sec_limit_typography "Μερικές γραμματοσειρές και μαθηματικά σύμβολα είναι απενεργοποιημένα.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Ορισμένες γραμματοσειρές, εικονίδια, μαθηματικά σύμβολα και εικόνες είναι απενεργοποιημένα.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Οι ήχοι και τα βίντεο (μέσα HTML5) παίζουν, αφού γίνει κλικ για αναπαραγωγή.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Κύκλωμα Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Νέο κύκλωμα για αυτή την ιστοσελίδα">
diff --git a/src/chrome/locale/es-AR/securityLevel.properties b/src/chrome/locale/es-AR/securityLevel.properties
index 0c8564d2..c642566d 100644
--- a/src/chrome/locale/es-AR/securityLevel.properties
+++ b/src/chrome/locale/es-AR/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Nivel de Seguridad: Más Seguro
securityLevel.safer.summary = Deshabilita características del sitio web que son a menudo peligrosas, causando que algunos sitios pierdan funcionalidad.
securityLevel.safer.description1 = JavaScript está deshabilitado en sitios no-HTTPS.
securityLevel.safer.description2 = Algunos tipos de letra y símbolos matemáticos están deshabilitados.
-securityLevel.safer.description3 = Audio y video (medios HTML5) son cliquear-para-reproducir.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = El más seguro
securityLevel.safest.tooltip = Nivel de Seguridad: El más Seguro
securityLevel.safest.summary = Sólo permite características del sitio web requeridas por sitios estáticos y servicios básicos. Estos cambios afectan imágenes, medios y código ejecutable.
diff --git a/src/chrome/locale/es-AR/torbutton.dtd b/src/chrome/locale/es-AR/torbutton.dtd
index 3d2315af..b899ae2e 100644
--- a/src/chrome/locale/es-AR/torbutton.dtd
+++ b/src/chrome/locale/es-AR/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript está deshabilitado por defecto en todos los sitios.">
<!ENTITY torbutton.prefs.sec_limit_typography "Algunos tipos de letra y símbolos matemáticos están deshabilitados.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Algunos tipos de letra, iconos, símbolos matemáticos e imágenes están deshabilitados.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio y video (medios HTML5) son cliquear-para-reproducir.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuito Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Nuevo circuito para este sitio">
diff --git a/src/chrome/locale/es-ES/securityLevel.properties b/src/chrome/locale/es-ES/securityLevel.properties
index 60e70441..f54e1097 100644
--- a/src/chrome/locale/es-ES/securityLevel.properties
+++ b/src/chrome/locale/es-ES/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Nivel de seguridad: Más seguro
securityLevel.safer.summary = Deshabilita características del sitio web que a menudo son peligrosas, lo que causa que algunos sitios pierdan funcionalidad.
securityLevel.safer.description1 = JavaScript está deshabilitado en sitios no-HTTPS.
securityLevel.safer.description2 = Algunas fuentes y símbolos matemáticos están deshabilitados.
-securityLevel.safer.description3 = Audio y vídeo (medios HTML5) son de tipo pulsar-para-reproducir.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = El más seguro de todos
securityLevel.safest.tooltip = Nivel de seguridad: El más seguro de todos
securityLevel.safest.summary = Sólo permite las características de sitio web requeridas para sitios estáticos y servicios básicos. Estos cambios afectan a imágenes, medios, y scripts.
diff --git a/src/chrome/locale/es-ES/torbutton.dtd b/src/chrome/locale/es-ES/torbutton.dtd
index 2c7a8921..a6a5c04f 100644
--- a/src/chrome/locale/es-ES/torbutton.dtd
+++ b/src/chrome/locale/es-ES/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript está deshabilitado por defecto en todos los sitios.">
<!ENTITY torbutton.prefs.sec_limit_typography "Algunas fuentes y símbolos matemáticos están deshabilitados.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Algunas fuentes, iconos, símbolos matemáticos, e imágenes están deshabilitados.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio y vídeo (medios HTML5) son de tipo pulsar-para-reproducir.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuito Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Nuevo Circuito para este Sitio">
diff --git a/src/chrome/locale/eu/securityLevel.properties b/src/chrome/locale/eu/securityLevel.properties
index 4031d3fa..cc96c043 100644
--- a/src/chrome/locale/eu/securityLevel.properties
+++ b/src/chrome/locale/eu/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Security Level : Safer
securityLevel.safer.summary = Disables website features that are often dangerous, causing some sites to lose functionality.
securityLevel.safer.description1 = JavaScript ezgaituta dago HTTPS ez diren web-orrietan.
securityLevel.safer.description2 = Some fonts and math symbols are disabled.
-securityLevel.safer.description3 = Audio and video (HTML5 media) are click-to-play.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Seguruena
securityLevel.safest.tooltip = Security Level : Safest
securityLevel.safest.summary = Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.
diff --git a/src/chrome/locale/eu/torbutton.dtd b/src/chrome/locale/eu/torbutton.dtd
index 18b0bb8f..8ab314c9 100644
--- a/src/chrome/locale/eu/torbutton.dtd
+++ b/src/chrome/locale/eu/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript is disabled by default on all sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media) are click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Zirkuitoa">
<!ENTITY torbutton.circuit_display.new_circuit "Zirkuito berria Gune honetarako">
diff --git a/src/chrome/locale/fa/securityLevel.properties b/src/chrome/locale/fa/securityLevel.properties
index 32056a56..ab7c7791 100644
--- a/src/chrome/locale/fa/securityLevel.properties
+++ b/src/chrome/locale/fa/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = سطح امنیت: ایمنتر
securityLevel.safer.summary = از کار انداختن ویژگیهای وبسایت که اغلب خطرناک هستند و باعث از دست رفتن برخی سایتها میشوند.
securityLevel.safer.description1 = جاوا اسکریپت روی سایتهای غیر HTTPS کار نمیکند.
securityLevel.safer.description2 = برخی از فونت ها و نمادهای ریاضی غیرفعال هستند
-securityLevel.safer.description3 = صدا و ویدیو ( HTML5 رسانه ) برای بازی کلیک میکنند.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = ایمن ترین
securityLevel.safest.tooltip = سطح امنیت: ایمنترین
securityLevel.safest.summary = تنها اجازه میدهد که ویژگیهای وبسایت برای سایتهای ایستا و خدمات پایه مورد نیاز باشد. این تغییرات بر تصاویر، رسانهها و متن تاثیر میگذارند.
diff --git a/src/chrome/locale/fa/torbutton.dtd b/src/chrome/locale/fa/torbutton.dtd
index b748951f..60f0fb92 100644
--- a/src/chrome/locale/fa/torbutton.dtd
+++ b/src/chrome/locale/fa/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "جاوا اسکریپت به طور پیش فرض در تمامی سایت ها غیر فعال است.">
<!ENTITY torbutton.prefs.sec_limit_typography "برخی از فونت ها و نمادهای ریاضی غیرفعال هستند">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "برخی از فونت ها، شمایلها، علایم ریاضی و تصاویر از کار افتاده هستند.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "صدا و ویدیو ( HTML5 رسانه ) برای بازی کلیک میکنند.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "مدار تور">
<!ENTITY torbutton.circuit_display.new_circuit "مدار جدید برای این سایت">
diff --git a/src/chrome/locale/fr/securityLevel.properties b/src/chrome/locale/fr/securityLevel.properties
index 99d19fbe..70a42775 100644
--- a/src/chrome/locale/fr/securityLevel.properties
+++ b/src/chrome/locale/fr/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Niveau de sécurité : plus sûr
securityLevel.safer.summary = Désactive les fonctions souvent dangereuses des sites Web, ce qui pourrait entraîner une perte de fonctionnalité de certains sites Web.
securityLevel.safer.description1 = JavaScript est désactivé pour les sites non HTTPS.
securityLevel.safer.description2 = Certaines polices et certains symboles mathématiques sont désactivés.
-securityLevel.safer.description3 = Le son et la vidéo (médias HTML5) sont « cliquer pour lire ».
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Le plus sûr
securityLevel.safest.tooltip = Niveau de sécurité : le plus sûr
securityLevel.safest.summary = Ne permet que les fonctions de sites Web exigées pour les sites statiques et les services de base. Ces changements affectent les images, les médias et les scripts.
diff --git a/src/chrome/locale/fr/torbutton.dtd b/src/chrome/locale/fr/torbutton.dtd
index d56508bb..ddfeaf40 100644
--- a/src/chrome/locale/fr/torbutton.dtd
+++ b/src/chrome/locale/fr/torbutton.dtd
@@ -2,9 +2,9 @@
<!ENTITY torbutton.context_menu.new_identity_key "I">
<!ENTITY torbutton.context_menu.new_circuit "Nouveau circuit Tor pour ce site">
<!ENTITY torbutton.context_menu.new_circuit_key "C">
-<!ENTITY torbutton.context_menu.networksettings "Paramètres du réseau Tor">
+<!ENTITY torbutton.context_menu.networksettings "Paramètres du réseau Tor…">
<!ENTITY torbutton.context_menu.networksettings.key "R">
-<!ENTITY torbutton.context_menu.downloadUpdate "Vérifier les mises à jour du Navigateur Tor">
+<!ENTITY torbutton.context_menu.downloadUpdate "Vérifier les mises à jour du Navigateur Tor…">
<!ENTITY torbutton.context_menu.downloadUpdate.key "M">
<!ENTITY torbutton.context_menu.cookieProtections "Protections des témoins…">
<!ENTITY torbutton.context_menu.cookieProtections.key "T">
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript est désactivé par défaut pour tous les sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Certaines polices et certains symboles mathématiques sont désactivés.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Certaines polices, icônes, images et certains symboles mathématiques sont désactivés.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Le son et la vidéo (médias HTML5) sont « cliquer pour lire ».">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuit Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Nouveau circuit pour ce site">
diff --git a/src/chrome/locale/fr/torbutton.properties b/src/chrome/locale/fr/torbutton.properties
index 846dac04..e60b11c5 100644
--- a/src/chrome/locale/fr/torbutton.properties
+++ b/src/chrome/locale/fr/torbutton.properties
@@ -24,10 +24,10 @@ torbutton.popup.dontask = Télécharger automatiquement à partir de maintenant
torbutton.popup.no_newnym = BoutonTor ne peut pas vous attribuer une nouvelle identité de façon sûre. Il n’a pas accès au port de contrôle de Tor.\n\nUtilisez-vous l’offre groupée du Navigateur Tor ?
torbutton.security_settings.menu.title = Paramètres de sécurité
torbutton.title.prompt_torbrowser = Renseignements importants sur BoutonTor
-torbutton.popup.prompt_torbrowser = Dorénavant, BoutonTor fonctionne différemment : vous ne pouvez plus le désactiver.\n\nNous avons effectué ce changement, car il n’est pas sécuritaire d’utiliser BoutonTor dans un navigateur qui est également utilisé pour une navigation sans Tor. Trop de bogues ne pouvaient être réglés autrement.\n\nSi vous voulez continuer à utiliser Firefox normalement, vous devriez désinstaller BoutonTor et télécharger l’offre groupée du Navigateur Tor. Les propriétés de confidentialité du Navigateur Tor sont aussi supérieures à celles de Firefox, même s’il est utilisé avec BoutonTor.\n\nPour enlever BoutonTor, allez dans Outils->Modules complémentaires->Extensions et cliquer sur Supprimer à coté de BoutonTor.
+torbutton.popup.prompt_torbrowser = Dorénavant, BoutonTor fonctionne différemment : vous ne pouvez plus le désactiver.\n\nNous avons effectué ce changement, car il n’est pas sécuritaire d’utiliser BoutonTor dans un navigateur qui est aussi utilisé pour une navigation sans Tor. Trop de bogues ne pouvaient être réglés autrement.\n\nSi vous voulez continuer à utiliser Firefox normalement, vous devriez désinstaller BoutonTor et télécharger l’offre groupée du Navigateur Tor. Les propriétés de confidentialité du Navigateur Tor sont aussi supérieures à celles de Firefox, même s’il est utilisé avec BoutonTor.\n\nPour enlever BoutonTor, allez dans Outils->Modules complémentaires->Extensions et cliquer sur Supprimer à coté de BoutonTor.
torbutton.popup.short_torbrowser = Renseignements importants sur BoutonTor !\n\nBoutonTor est dorénavant toujours activé.\n\nCliquer sur BoutonTor pour plus de précisons.
-torbutton.popup.confirm_plugins = Les greffons tels que Flash peuvent nuire à la protection de vos données personnels et à votre anonymat.\n\nIls peuvent également contourner Tor afin de divulguer votre position actuelle ainsi que votre adresse IP.\n\nVoulez-vous vraiment activer les greffons ?\n\n
+torbutton.popup.confirm_plugins = Les greffons tels que Flash peuvent nuire à la protection de vos données personnels et à votre anonymat.\n\nIls peuvent aussi contourner Tor afin de divulguer votre position actuelle ainsi que votre adresse IP.\n\nVoulez-vous vraiment activer les greffons ?\n\n
torbutton.popup.never_ask_again = Ne plus me poser la question.
torbutton.popup.confirm_newnym = Le Navigateur Tor fermera tous les fenêtres et onglets. Les sessions des sites Web seront toutes perdues.\n\nRedémarrer le Navigateur Tor maintenant pour réinitialiser votre identité ?\n\n
diff --git a/src/chrome/locale/ga-IE/securityLevel.properties b/src/chrome/locale/ga-IE/securityLevel.properties
index 4faec508..8423dd67 100644
--- a/src/chrome/locale/ga-IE/securityLevel.properties
+++ b/src/chrome/locale/ga-IE/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Leibhéal Slándála: Níos Sábháilte
securityLevel.safer.summary = Díchumasaítear gnéithe de shuímh atá contúirteach go minic; dá bharr seo, ní fheidhmeoidh gach suíomh mar is ceart.
securityLevel.safer.description1 = Tá JavaScript díchumasaithe ar shuímh nach mbaineann úsáid as HTTPS.
securityLevel.safer.description2 = Tá roinnt clófhoirne agus siombailí matamaiticiúla díchumasaithe.
-securityLevel.safer.description3 = Caithfidh tú fuaimeanna agus físeáin (meáin HTML5) a chliceáil lena seinm.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Is Sábháilte
securityLevel.safest.tooltip = Leibhéal Slándála: Is Sábháilte
securityLevel.safest.summary = Ní cheadaítear ach na gnéithe atá de dhíth ar shuímh statacha agus ar bhunseirbhísí. Téann na hathruithe seo i bhfeidhm ar íomhánna, ar mheáin, agus ar scripteanna.
diff --git a/src/chrome/locale/ga-IE/torbutton.dtd b/src/chrome/locale/ga-IE/torbutton.dtd
index 6f92b5bf..68191bc3 100644
--- a/src/chrome/locale/ga-IE/torbutton.dtd
+++ b/src/chrome/locale/ga-IE/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "Tá JavaScript díchumasaithe ar gach suíomh de réir réamhshocraithe.">
<!ENTITY torbutton.prefs.sec_limit_typography "Tá roinnt clófhoirne agus siombailí matamaiticiúla díchumasaithe.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Tá roinnt clófhoirne, deilbhíní, siombailí matamaiticiúla, agus íomhánna díchumasaithe.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Caithfidh tú fuaimeanna agus físeáin (meáin HTML5) a chliceáil lena seinm.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Ciorcad Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Ciorcad Nua don Suíomh seo">
diff --git a/src/chrome/locale/he/securityLevel.properties b/src/chrome/locale/he/securityLevel.properties
index 8865d9ce..1f907f3d 100644
--- a/src/chrome/locale/he/securityLevel.properties
+++ b/src/chrome/locale/he/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = רמת אבטחה: בטוחה יותר
securityLevel.safer.summary = משבית מאפייני אתר שמסוכנים לעיתים קרובות, מה שגורם למספר אתרים לאבד תפקודיות.
securityLevel.safer.description1 = JavaScript מושבת בכל האתרים שאינם HTTPS.
securityLevel.safer.description2 = מספר גופנים וסמלים מתמטיים מושבתים.
-securityLevel.safer.description3 = שמע ווידיאו (מדית HTML5) הם לחץ־כדי־לנגן.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = הכי בטוחה
securityLevel.safest.tooltip = רמת אבטחה: הכי בטוחה
securityLevel.safest.summary = מתיר רק למאפייני אתר הדרושים עבור אתרים נייחים ושירותים יסודיים. שינויים אלו משפיעים על תמונות, מדיה ותסריטים.
diff --git a/src/chrome/locale/he/torbutton.dtd b/src/chrome/locale/he/torbutton.dtd
index 813eb0aa..a2f5e3d5 100644
--- a/src/chrome/locale/he/torbutton.dtd
+++ b/src/chrome/locale/he/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript מושבת כברירת מחדל בכל האתרים.">
<!ENTITY torbutton.prefs.sec_limit_typography "מספר גופנים וסמלים מתמטיים מושבתים.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "מספר גופנים, צלמיות, סמלים מתמטיים ותמונות מושבתים.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "שמע ווידיאו (מדית HTML5) הם לחץ־כדי־לנגן.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "מעגל Tor">
<!ENTITY torbutton.circuit_display.new_circuit "מעגל חדש עבור אתר זה">
diff --git a/src/chrome/locale/hu/securityLevel.properties b/src/chrome/locale/hu/securityLevel.properties
index 0ba80e28..ea2e700e 100644
--- a/src/chrome/locale/hu/securityLevel.properties
+++ b/src/chrome/locale/hu/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Biztonsági szint: Biztonságosabb
securityLevel.safer.summary = Azon weboldal szolgáltatások tiltása, amelyek többnyire veszélyesek, ami néhány oldal működésének problémáit okozhatja.
securityLevel.safer.description1 = A JavaScript tiltott a nem-HTTPS oldalkon.
securityLevel.safer.description2 = Néhány betűtípus és matematikai szimbólum tiltásra került.
-securityLevel.safer.description3 = Audió és videó (HTML5 média) kattintásra indul.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Legbiztonságosabb
securityLevel.safest.tooltip = Biztonsági szint: Legbiztonságosabb
securityLevel.safest.summary = Csak azon weboldal szolgáltatások engedélyezése, amelyek a statikus, vagy alap szolgáltatásokhoz szükségesek. Ezek a beállítások érintik a képeket, médiákat és scripteket.
diff --git a/src/chrome/locale/hu/torbutton.dtd b/src/chrome/locale/hu/torbutton.dtd
index 0cfce62f..a00bbdba 100644
--- a/src/chrome/locale/hu/torbutton.dtd
+++ b/src/chrome/locale/hu/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "A JavaScript alapértelmezetten tiltott minden oldalon.">
<!ENTITY torbutton.prefs.sec_limit_typography "Néhány betűtípus és matematikai szimbólum tiltásra került.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Néhány betűtípus, ikon és matematikai szimbólum és a képek tiltásra kerültek.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audió és videó (HTML5 média) kattintásra indul.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor áramkör">
<!ENTITY torbutton.circuit_display.new_circuit "Új Tor áramkör ehhez az oldalhoz">
diff --git a/src/chrome/locale/id/securityLevel.properties b/src/chrome/locale/id/securityLevel.properties
index 8d67ab74..b1b7e759 100644
--- a/src/chrome/locale/id/securityLevel.properties
+++ b/src/chrome/locale/id/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Tingkat Keamanan: Lebih aman
securityLevel.safer.summary = Menonaktifkan fitur-fitur situs web yang sering berbahaya, ini akan membuat beberapa situs kehilangan fungsionalitas.
securityLevel.safer.description1 = JavaScript dinonaktifkan di semua situs non-HTTPS.
securityLevel.safer.description2 = Beberapa font dan simbol matematika dinonaktifkan.
-securityLevel.safer.description3 = Audio dan video (media HTML5) dijalankan saat diklik.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Paling aman
securityLevel.safest.tooltip = Tingkat Keamanan: Paling aman
securityLevel.safest.summary = Hanya mengizinkan fitur-fitur situs web yang diperlukan untuk menjalankan situs web statis dan layanan dasar. Perubahan ini mempengaruhi gambar, media, dan skrip.
diff --git a/src/chrome/locale/id/torbutton.dtd b/src/chrome/locale/id/torbutton.dtd
index c1e7603a..4771310b 100644
--- a/src/chrome/locale/id/torbutton.dtd
+++ b/src/chrome/locale/id/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript dinonaktifkan secara default di semua situs.">
<!ENTITY torbutton.prefs.sec_limit_typography "Beberapa font dan simbol matematika dinonaktifkan.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Beberapa font, icon, simbol matematika, dan gambar dinonaktifkan.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio dan video (media HTML5 media) dijalankan saat diklik.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Sirkuit Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Sirkuit Baru untuk Situs Ini">
diff --git a/src/chrome/locale/is/securityLevel.properties b/src/chrome/locale/is/securityLevel.properties
index 50c66702..9e4db6f3 100644
--- a/src/chrome/locale/is/securityLevel.properties
+++ b/src/chrome/locale/is/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Öryggisstig: Öruggara
securityLevel.safer.summary = Gerir óvirka ýmsa eiginleika vefsvæða sem oft eru hættulegir, en veldur því að sum vefsvæði hætta að virka eins og þau eiga að gera.
securityLevel.safer.description1 = JavaScript er óvirkt á öllum ekki-HTTPS vefjum.
securityLevel.safer.description2 = Sumt letur og stærðfræðitákn eru óvirk.
-securityLevel.safer.description3 = Hljóð og myndskeið (HTML5-gagnamiðla) þarf að smella á til að spila.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Öruggast
securityLevel.safest.tooltip = Öryggisstig: Öruggast
securityLevel.safest.summary = Leyfir aðeins þá eiginleika vefsvæða sem krafist er fyrir beinan lestur (static sites) og grunnþjónustur. Þessar breytingar hafa áhrif á myndir, margmiðlunargögn og skriftur.
diff --git a/src/chrome/locale/is/torbutton.dtd b/src/chrome/locale/is/torbutton.dtd
index b408ac95..8a208581 100644
--- a/src/chrome/locale/is/torbutton.dtd
+++ b/src/chrome/locale/is/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript er sjálfgefið óvirkt á öllum vefsvæðum.">
<!ENTITY torbutton.prefs.sec_limit_typography "Sumt letur og stærðfræðitákn eru óvirk.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Sumt letur, táknmyndir, myndir og stærðfræðitákn eru óvirk.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Hljóð og myndskeið (HTML5-gagnamiðla) þarf að smella á til að spila.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor-rás">
<!ENTITY torbutton.circuit_display.new_circuit "Ný rás fyrir þetta vefsvæði">
diff --git a/src/chrome/locale/it/securityLevel.properties b/src/chrome/locale/it/securityLevel.properties
index 58ba3360..9f7a77fd 100644
--- a/src/chrome/locale/it/securityLevel.properties
+++ b/src/chrome/locale/it/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Livello di sicurezza: Più sicuro
securityLevel.safer.summary = Disattiva le caratteristiche dei siti spesso pericolose, causando la perdita di funzionalità di alcuni siti.
securityLevel.safer.description1 = JavaScript è disattivato nei siti non-HTTPS.
securityLevel.safer.description2 = Alcuni caratteri e simboli matematici sono disattivati.
-securityLevel.safer.description3 = Audio e video (media HTML5) sono click-to-play.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Molto sicuro
securityLevel.safest.tooltip = Livello di sicurezza: Il più sicuro
securityLevel.safest.summary = Permette solo le funzionalità necessarie per siti statici e servizi di base. Queste modifiche influiscono su immagini, media e script.
diff --git a/src/chrome/locale/it/torbutton.dtd b/src/chrome/locale/it/torbutton.dtd
index 3c46b13e..8c9b0051 100644
--- a/src/chrome/locale/it/torbutton.dtd
+++ b/src/chrome/locale/it/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript è disattivato in tutti i siti in modo predefinito.">
<!ENTITY torbutton.prefs.sec_limit_typography "Alcuni caratteri e simboli matematici sono disattivati.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Alcuni caratteri, icone, simboli matematici e immagini sono disattivati.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio e video (media HTML5) sono click-to-play.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuito Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Nuovo circuito per questo sito">
diff --git a/src/chrome/locale/ja/securityLevel.properties b/src/chrome/locale/ja/securityLevel.properties
index a352029d..9fc42437 100644
--- a/src/chrome/locale/ja/securityLevel.properties
+++ b/src/chrome/locale/ja/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = セキュリティレベル:やや安全
securityLevel.safer.summary = ウェブサイトのしばしば危険である機能を無効化します。サイトによっては正常に動作しなくなります。
securityLevel.safer.description1 = HTTPS非対応のサイトで JavaScript が無効化されます。
securityLevel.safer.description2 = いくつかのフォントと数学記号が無効化されます。
-securityLevel.safer.description3 = オーディオとビデオ(HTML5メディア)はクリックすると再生されます。
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = 最も安全
securityLevel.safest.tooltip = セキュリティレベル:最も安全
securityLevel.safest.summary = 静的なサイトと基本的なサービスに必要な機能だけを許可します。この変更は画像、メディア、スクリプトに影響します。
diff --git a/src/chrome/locale/ja/torbutton.dtd b/src/chrome/locale/ja/torbutton.dtd
index be6c4dc0..3137fb04 100644
--- a/src/chrome/locale/ja/torbutton.dtd
+++ b/src/chrome/locale/ja/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "すべてのサイトで JavaScript が無効化されます。">
<!ENTITY torbutton.prefs.sec_limit_typography "いくつかのフォントと数学記号が無効化されます。">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "いくつかのアイコン、数学記号および画像が無効化されます。">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "オーディオとビデオ(HTML5メディア)はクリックすると再生されます。">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor サーキット">
<!ENTITY torbutton.circuit_display.new_circuit "このサイトに新しいサーキットを使用する">
diff --git a/src/chrome/locale/ka/securityLevel.properties b/src/chrome/locale/ka/securityLevel.properties
index 3f8d5176..4827ca29 100644
--- a/src/chrome/locale/ka/securityLevel.properties
+++ b/src/chrome/locale/ka/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = უსაფრთხოების დონე
securityLevel.safer.summary = გაითიშება ვებსაიტის საფრთხისშემცველი შესაძლებლობები, სავარაუდოდ საიტების ნაწილი ვერ იმუშავებს გამართულად.
securityLevel.safer.description1 = JavaScript გათიშულია HTTPS-ს არმქონე ყველა საიტზე.
securityLevel.safer.description2 = შრიფტებისა და მათემატიკური სიმბოლოების ნაწილი გათიშულია.
-securityLevel.safer.description3 = ხმოვანი და ვიდეოფაილები (HTML5) ეშვება მხოლოდ დაწკაპებით.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = სრულიად დაცული
securityLevel.safest.tooltip = უსაფრთხოების დონე : სრულიად დაცული
securityLevel.safest.summary = დაშვებულია მხოლოდ ის შესაძლებლობები, რომლებსაც საჭიროებს უცვლელი შიგთავსის მქონე საიტები და ძირითადი მომსახურებები. ცვლილებები შეეხება სურათებს, ფაილებსა და სკრიპტებს.
diff --git a/src/chrome/locale/ka/torbutton.dtd b/src/chrome/locale/ka/torbutton.dtd
index ca4fa8b6..da0ce86f 100644
--- a/src/chrome/locale/ka/torbutton.dtd
+++ b/src/chrome/locale/ka/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript გათიშულია ყველა საიტზე ნაგულისხმევად.">
<!ENTITY torbutton.prefs.sec_limit_typography "შრიფტებისა და მათემატიკური სიმბოლოების ნაწილი გათიშულია.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "შრიფტების, ხატულების, მათემატიკური სიმბოლოებისა და სურათების ნაწილი გათიშულია.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "ხმოვანი და ვიდეოფაილები (HTML5) ეშვება მხოლოდ დაწკაპებით.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor-წრედი">
<!ENTITY torbutton.circuit_display.new_circuit "ახალი წრედი ამ საიტისთვის">
diff --git a/src/chrome/locale/ko/securityLevel.properties b/src/chrome/locale/ko/securityLevel.properties
index c03ad11a..7e0f26c0 100644
--- a/src/chrome/locale/ko/securityLevel.properties
+++ b/src/chrome/locale/ko/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = 보안등급: 더욱 안전
securityLevel.safer.summary = 이 설정을 하여 흔히 위험한 웹사이트의 기능이 비활성화하면, 일부 사이트의 기능들을 사용할 수 없습니다.
securityLevel.safer.description1 = HTTPS을 적용되지 않은 사이트에서는 JavaScript가 비활성화됩니다.
securityLevel.safer.description2 = 일부 글꼴과 수학기호가 비활성화됩니다.
-securityLevel.safer.description3 = 오디오와 동영상(HTML5 media) 보려면 누르십시오.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = 제일 안전합니다
securityLevel.safest.tooltip = 보안등급: 매우 안전
securityLevel.safest.summary = 정적 사이트와 기본 서비스에 필요한 기능에만 허용됩니다. 이 변경사항들은 이미지, 미디어, 스크립트에 영향을 줍니다.
diff --git a/src/chrome/locale/ko/torbutton.dtd b/src/chrome/locale/ko/torbutton.dtd
index 03dfc033..2deef2ba 100644
--- a/src/chrome/locale/ko/torbutton.dtd
+++ b/src/chrome/locale/ko/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "자바 스크립트는 기본 설정으로 모든 사이트에서 비활성화 되어 있습니다.">
<!ENTITY torbutton.prefs.sec_limit_typography "일부 글꼴이며 수학기호가 비활성화 됩니다.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "일부 글꼴이며 상징이며 수학기호며 사진이 비활성화 됩니다.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "오디오와 동영상(HTML5 media) 보려면 누르십시오.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "토르 서킷">
<!ENTITY torbutton.circuit_display.new_circuit "이 사이트에서 새로운 서킷을 재구축">
diff --git a/src/chrome/locale/nb-NO/aboutTor.dtd b/src/chrome/locale/nb-NO/aboutTor.dtd
index 1b77d88d..6970a77d 100644
--- a/src/chrome/locale/nb-NO/aboutTor.dtd
+++ b/src/chrome/locale/nb-NO/aboutTor.dtd
@@ -28,5 +28,5 @@
<!ENTITY aboutTor.newsletter.tagline "Få de siste nyhetene fra Tor rett til innboksen din.">
<!ENTITY aboutTor.newsletter.link_text "Registrer deg for Tor Nyheter.">
-<!ENTITY aboutTor.donationBanner.line2e "Keep Tor strong.">
-<!ENTITY aboutTor.donationBanner.buttonA "Donate Now">
+<!ENTITY aboutTor.donationBanner.line2e "Hold Tor sterk.">
+<!ENTITY aboutTor.donationBanner.buttonA "Donér nå">
diff --git a/src/chrome/locale/nb-NO/securityLevel.properties b/src/chrome/locale/nb-NO/securityLevel.properties
index 05574d6d..3980477c 100644
--- a/src/chrome/locale/nb-NO/securityLevel.properties
+++ b/src/chrome/locale/nb-NO/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Security Level : Safer
securityLevel.safer.summary = Skrur av nettsidefunksjoner som ofte er farlige, som gjør at noen sider blir skadelidende.
securityLevel.safer.description1 = JavaScript er avskrudd på sider som ikke er HTTPS.
securityLevel.safer.description2 = Noen skrifter og mattesymboler er avskrudd.
-securityLevel.safer.description3 = Lyd og video (HTML5-media) må klikkes for å spilles av.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Tryggest
securityLevel.safest.tooltip = Security Level : Safest
securityLevel.safest.summary = Tillater bare nettsidefunksjoner som kreves for statiske sider og grunnleggende tjenester. Disse endringene har innvirkning på bilder, media, og skript.
diff --git a/src/chrome/locale/nb-NO/torbutton.dtd b/src/chrome/locale/nb-NO/torbutton.dtd
index be9665d5..068c4822 100644
--- a/src/chrome/locale/nb-NO/torbutton.dtd
+++ b/src/chrome/locale/nb-NO/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript er som forvalg slått av for alle nettsteder.">
<!ENTITY torbutton.prefs.sec_limit_typography "Noen skrifter og mattesymboler er avskrudd.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Noen skrifter, ikoner, mattesymboler og bilder er avskrudd.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Lyd og video (HTML5-media) må klikkes for å spilles av.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Krets">
<!ENTITY torbutton.circuit_display.new_circuit "Ny Krets for denne siden">
diff --git a/src/chrome/locale/nl/aboutTor.dtd b/src/chrome/locale/nl/aboutTor.dtd
index dc688d98..e551bcec 100644
--- a/src/chrome/locale/nl/aboutTor.dtd
+++ b/src/chrome/locale/nl/aboutTor.dtd
@@ -28,5 +28,5 @@
<!ENTITY aboutTor.newsletter.tagline "Ontvang het laatste nieuws van Tor direct in uw postvak.">
<!ENTITY aboutTor.newsletter.link_text "Meld u aan voor Tor News.">
-<!ENTITY aboutTor.donationBanner.line2e "Houdt Tor sterk.">
-<!ENTITY aboutTor.donationBanner.buttonA "Geef Nu">
+<!ENTITY aboutTor.donationBanner.line2e "Houd Tor sterk.">
+<!ENTITY aboutTor.donationBanner.buttonA "Nu doneren">
diff --git a/src/chrome/locale/nl/securityLevel.properties b/src/chrome/locale/nl/securityLevel.properties
index 25d29f72..9c98f8e9 100644
--- a/src/chrome/locale/nl/securityLevel.properties
+++ b/src/chrome/locale/nl/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Beveiligingsniveau: veiliger
securityLevel.safer.summary = Schakelt websitefuncties uit die vaak gevaarlijk zijn, waardoor sommige websites functionaliteit verliezen.
securityLevel.safer.description1 = JavaScript is uitgeschakeld op niet-HTTPS-websites.
securityLevel.safer.description2 = Sommige lettertypen en wiskundige symbolen zijn uitgeschakeld.
-securityLevel.safer.description3 = Audio en video (HTML5-media) zijn klikken-voor-afspelen.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Veiligste
securityLevel.safest.tooltip = Beveiligingsniveau: veiligste
securityLevel.safest.summary = Staat alleen websitefuncties toe die voor statische websites en basisservices zijn vereist. Deze wijzigingen zijn van invloed op afbeeldingen, media en scripts.
diff --git a/src/chrome/locale/nl/torbutton.dtd b/src/chrome/locale/nl/torbutton.dtd
index 0ab3164b..f5819e37 100644
--- a/src/chrome/locale/nl/torbutton.dtd
+++ b/src/chrome/locale/nl/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "Javascript zijn standaard uitgeschakeld op alle sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Sommige lettertypen en wiskundige symbolen zijn uitgeschakeld.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Sommige lettertypen, pictogrammen, wiskundige symbolen en afbeeldingen zijn uitgeschakeld.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio en video (HTML5-media) zijn klik-bij-afspelen.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Torcircuit">
<!ENTITY torbutton.circuit_display.new_circuit "Nieuw circuit voor deze website">
diff --git a/src/chrome/locale/pl/securityLevel.properties b/src/chrome/locale/pl/securityLevel.properties
index f7a26c20..a3d9dfe3 100644
--- a/src/chrome/locale/pl/securityLevel.properties
+++ b/src/chrome/locale/pl/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Poziom bezpieczeństwa: bezpieczniejszy
securityLevel.safer.summary = Wyłącza funkcje witryny, które często są niebezpieczne, co powoduje, że niektóre witryny tracą funkcjonalność.
securityLevel.safer.description1 = Obsługa skryptów Java na stronach bez HTTPS jest wyłączona.
securityLevel.safer.description2 = Niektóre fonty i symbole są wyłączone.
-securityLevel.safer.description3 = Dźwięk i obraz (media HTML5) to "kliknij, aby odtworzyć".
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Najbezpieczniejszy
securityLevel.safest.tooltip = Poziom bezpieczeństwa: najbezpieczniejszy
securityLevel.safest.summary = Pozwala tylko na funkcje serwisu wymagane w przypadku witryn statycznych i podstawowych usług. Te zmiany dotyczą obrazów, multimediów i skryptów.
diff --git a/src/chrome/locale/pl/torbutton.dtd b/src/chrome/locale/pl/torbutton.dtd
index 134b01fe..98254012 100644
--- a/src/chrome/locale/pl/torbutton.dtd
+++ b/src/chrome/locale/pl/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript jest domyślnie wyłączona na wszystkich stronach.">
<!ENTITY torbutton.prefs.sec_limit_typography "Niektóre fonty i symbole są wyłączone.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Niektóre fonty, ikony, symbole i obrazki są wyłączone.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Dźwięk i obraz (media HTML5) to "kliknij, aby odtworzyć".">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Obwód Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Nowy obwód dla tej strony">
diff --git a/src/chrome/locale/pt-BR/securityLevel.properties b/src/chrome/locale/pt-BR/securityLevel.properties
index 7cfaf0d6..dfc900e2 100644
--- a/src/chrome/locale/pt-BR/securityLevel.properties
+++ b/src/chrome/locale/pt-BR/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Nível de Segurança: Seguro
securityLevel.safer.summary = Desativar recursos geralmente inseguros de websites, o que pode fazer com que alguns sites percam a funcionalidade.
securityLevel.safer.description1 = JavaScript está desativado em todos os sites sem HTTPS.
securityLevel.safer.description2 = Algumas fontes e símbolos matemáticos estão desativados.
-securityLevel.safer.description3 = Clicar para tocar ou ver áudio ou vídeo (mídia HTML5).
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Segurança máxima
securityLevel.safest.tooltip = Nível de Segurança: Segurança máxima
securityLevel.safest.summary = Apenas permitir os recursos dos websites necessários para sites estáticos e serviços básicos. Essas mudanças afetam imagens, mídias e scripts.
diff --git a/src/chrome/locale/pt-BR/torbutton.dtd b/src/chrome/locale/pt-BR/torbutton.dtd
index cf4026bd..bf25596e 100644
--- a/src/chrome/locale/pt-BR/torbutton.dtd
+++ b/src/chrome/locale/pt-BR/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript está desativado por padrão em todos os sites.">
<!ENTITY torbutton.prefs.sec_limit_typography "Algumas fontes e símbolos matemáticos estão desativados.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Algumas fontes, ícones, símbolos matemáticas e imagens estão desativadas.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Clicar para tocar ou ver áudio ou vídeo (mídia HTML5).">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Circuito Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Novo circuito para este site">
diff --git a/src/chrome/locale/ru/securityLevel.properties b/src/chrome/locale/ru/securityLevel.properties
index 7c8d7d7f..d08d6558 100644
--- a/src/chrome/locale/ru/securityLevel.properties
+++ b/src/chrome/locale/ru/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Уровень безопасности : Боле
securityLevel.safer.summary = Отключены функции веб-сайтов, которые часто бывают опасны, что может привести к потере функциональности некоторыми сайтами.
securityLevel.safer.description1 = JavaScript отключен на всех не HTTPS сайтах.
securityLevel.safer.description2 = Некоторые шрифты и математические символы отключены.
-securityLevel.safer.description3 = Аудио и видео (HTML5 медиа) проигрываются только после клика.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Наиболее безопасные
securityLevel.safest.tooltip = Уровень безопасности : Наиболее безопасный
securityLevel.safest.summary = Разрешены только функции веб-сайтов, требующиеся для статических сайтов и основных сервисов. Эти изменения влияют на изображения, медиа и скрипты.
diff --git a/src/chrome/locale/ru/torbutton.dtd b/src/chrome/locale/ru/torbutton.dtd
index bbf416a4..8c8cfb35 100644
--- a/src/chrome/locale/ru/torbutton.dtd
+++ b/src/chrome/locale/ru/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript отключен по умолчанию на всех сайтах.">
<!ENTITY torbutton.prefs.sec_limit_typography "Некоторые шрифты и математические символы отключены.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Некоторые шрифты, значки, математические символы и изображения отключены.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Аудио и видео (HTML5 медиа) проигрываются только после клика.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Схема Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Новая схема для этого Сайта">
diff --git a/src/chrome/locale/sv-SE/securityLevel.properties b/src/chrome/locale/sv-SE/securityLevel.properties
index d414e781..9ac69476 100644
--- a/src/chrome/locale/sv-SE/securityLevel.properties
+++ b/src/chrome/locale/sv-SE/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Säkerhetsnivå : Säkrare
securityLevel.safer.summary = Inaktiverar webbplatsfunktioner som ofta är farliga, vilket gör att vissa webbplatser förlorar funktionalitet.
securityLevel.safer.description1 = JavaScript är inaktiverat på webbplatser utan HTTPS.
securityLevel.safer.description2 = Vissa typsnitt och matte symboler är inaktiverade.
-securityLevel.safer.description3 = Ljud och video (HTML5-media) är klicka-för-att-spel.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = Säkrast
securityLevel.safest.tooltip = Säkerhetsnivå: Säkrast
securityLevel.safest.summary = Tillåt endast webbplatsfunktioner som krävs för statiska webbplatser och grundläggande tjänster. Dessa förändringar påverkar bilder, media och skript.
diff --git a/src/chrome/locale/sv-SE/torbutton.dtd b/src/chrome/locale/sv-SE/torbutton.dtd
index 5c074a65..9b3f4474 100644
--- a/src/chrome/locale/sv-SE/torbutton.dtd
+++ b/src/chrome/locale/sv-SE/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript är inaktiverat som standard på alla webbplatser.">
<!ENTITY torbutton.prefs.sec_limit_typography "Vissa typsnitt och matte symboler är inaktiverade.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Vissa typsnitt, ikoner, matte symboler och bilder är inaktiverade.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Ljud och video (HTML5-media) är klicka-för-att-spel.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor-krets">
<!ENTITY torbutton.circuit_display.new_circuit "Ny krets för denna webbplats">
diff --git a/src/chrome/locale/tr/securityLevel.properties b/src/chrome/locale/tr/securityLevel.properties
index 84a34280..934cdba3 100644
--- a/src/chrome/locale/tr/securityLevel.properties
+++ b/src/chrome/locale/tr/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Güvenlik Düzeyi : Daha Güvenli
securityLevel.safer.summary = Sıklıkla tehlikeli olan web sitesi özellikleri devre dışı bırakılır ve bazı sitelerin işlevlerinde kayıplar olabilir.
securityLevel.safer.description1 = JavaScript, HTTPS kullanmayan sitelerde devre dışı bırakılır.
securityLevel.safer.description2 = Bazı yazı türleri ve matematik simgeleri devre dışı bırakılır.
-securityLevel.safer.description3 = Ses ve görüntüler (HTML5 ortamı) tıklayarak çalıştırılabilir.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = En Güvenli
securityLevel.safest.tooltip = Güvenlik Düzeyi : En Güvenli
securityLevel.safest.summary = Yalnız durağan siteler ve temel hizmetler için gerekli web sitesi özelliklerine izin verilir. Bu değişiklikler görselleri, ortamları ve betikleri etkiler.
diff --git a/src/chrome/locale/tr/torbutton.dtd b/src/chrome/locale/tr/torbutton.dtd
index aee89ec4..022ea92b 100644
--- a/src/chrome/locale/tr/torbutton.dtd
+++ b/src/chrome/locale/tr/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript betikleri tüm sitelerde varsayılan olarak devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_limit_typography "Bazı yazı türleri ve matematik simgeleri devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Bazı yazı türleri, simgeler, matematik simgeleri ve görseller devre dışı bırakılır.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Ses ve görüntüler (HTML5 ortamı) tıklayarak çalıştırılabilir.">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor Devresi">
<!ENTITY torbutton.circuit_display.new_circuit "Bu Sitenin Devresini Yenile">
diff --git a/src/chrome/locale/vi/securityLevel.properties b/src/chrome/locale/vi/securityLevel.properties
index e2eaf7a7..e6d350b0 100644
--- a/src/chrome/locale/vi/securityLevel.properties
+++ b/src/chrome/locale/vi/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = Security Level : Safer
securityLevel.safer.summary = Vô hiệu hóa tính năng website thường gây nguy hiểm, khiến một số trang web mất chức năng.
securityLevel.safer.description1 = JavaScript bị vô hiệu trên các trang web không có HTTPS.
securityLevel.safer.description2 = Một số phông chữ và ký hiêu toán học bị vô hiệu.
-securityLevel.safer.description3 = Âm thanh và video (HTML5 media) phải bấm-để-phát.
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = An toàn nhất
securityLevel.safest.tooltip = Security Level : Safest
securityLevel.safest.summary = Chỉ cho phép các tính năng trang web được yêu cầu cho các trang web tĩnh và các dịch vụ cơ bản. Những thay đổi này ảnh hưởng đến hình ảnh, phương tiện và tập lệnh.
diff --git a/src/chrome/locale/vi/torbutton.dtd b/src/chrome/locale/vi/torbutton.dtd
index 695f6bf1..87310337 100644
--- a/src/chrome/locale/vi/torbutton.dtd
+++ b/src/chrome/locale/vi/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript mặc định bị vô hiệu trên tất cả các trang.">
<!ENTITY torbutton.prefs.sec_limit_typography "Một số phông chữ và ký hiêu toán học bị vô hiệu.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Một số phông chữ, biểu tượng, và hình ảnh bị vô hiệu.">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "Âm thanh và video (HTML5 media) phải bấm-để-phát. ">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Mạch Tor">
<!ENTITY torbutton.circuit_display.new_circuit "Mạch Tor mới cho trang này">
diff --git a/src/chrome/locale/zh-CN/securityLevel.properties b/src/chrome/locale/zh-CN/securityLevel.properties
index bfbd0c20..3b002d14 100644
--- a/src/chrome/locale/zh-CN/securityLevel.properties
+++ b/src/chrome/locale/zh-CN/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = 安全等级:较安全
securityLevel.safer.summary = 禁用网站功能通常是危险的,这会导致一些站不能正常运作。
securityLevel.safer.description1 = 在非HTTPS网站,JavaScripts被禁用。
securityLevel.safer.description2 = 一些字体与数学符号被禁用。
-securityLevel.safer.description3 = 点击播放音频或视频(HTML5 媒体)。
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = 最高安全性
securityLevel.safest.tooltip = 安全等级:最安全
securityLevel.safest.summary = 只允许网站请求静态网页与基本服务。这将会影响图片,媒体与脚本。
diff --git a/src/chrome/locale/zh-CN/torbutton.dtd b/src/chrome/locale/zh-CN/torbutton.dtd
index 483b5c44..44a2f0f6 100644
--- a/src/chrome/locale/zh-CN/torbutton.dtd
+++ b/src/chrome/locale/zh-CN/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "在所有网站上默认禁用JavaScript。">
<!ENTITY torbutton.prefs.sec_limit_typography "一些字体与数学符号被禁用。">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "一些字体,图标,数学符号与图片被禁用。">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "点击播放音频或视频(HTML5 媒体)。">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "tor链路">
<!ENTITY torbutton.circuit_display.new_circuit "为此站点使用新线路">
diff --git a/src/chrome/locale/zh-TW/securityLevel.properties b/src/chrome/locale/zh-TW/securityLevel.properties
index b4d58bcd..aae64e42 100644
--- a/src/chrome/locale/zh-TW/securityLevel.properties
+++ b/src/chrome/locale/zh-TW/securityLevel.properties
@@ -9,7 +9,7 @@ securityLevel.safer.tooltip = 安全性等級:更安全
securityLevel.safer.summary = 停用某些功能,因為其有危險,會造成部份網站失能
securityLevel.safer.description1 = 所有非HTTPS網站會預設停用JavaScript
securityLevel.safer.description2 = 有些字形與數學符號被停用
-securityLevel.safer.description3 = 聲音和影片 (HTML5 媒體) 要點擊播放
+securityLevel.safer.description3 = Audio and video (HTML5 media), and WebGL are click-to-play.
securityLevel.safest.level = 最安全
securityLevel.safest.tooltip = 安全性等級:最安全
securityLevel.safest.summary = 只同意靜態網站和基本服務的網站功能.這些變動會影響圖片,媒體和腳本.
diff --git a/src/chrome/locale/zh-TW/torbutton.dtd b/src/chrome/locale/zh-TW/torbutton.dtd
index 8f3fefcf..d4c46efe 100644
--- a/src/chrome/locale/zh-TW/torbutton.dtd
+++ b/src/chrome/locale/zh-TW/torbutton.dtd
@@ -36,6 +36,6 @@
<!ENTITY torbutton.prefs.sec_js_disabled "所有網站會預設停用JavaScript ">
<!ENTITY torbutton.prefs.sec_limit_typography "有些字形與數學符號被停用">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "有些字型,圖標,數學符號與圖片被停用">
-<!ENTITY torbutton.prefs.sec_click_to_play_media "聲音和影片 (HTML5 媒體) 要點擊播放">
+<!ENTITY torbutton.prefs.sec_click_to_play_media "Audio and video (HTML5 media), and WebGL are click-to-play.">
<!ENTITY torbutton.circuit_display.title "Tor 迴路">
<!ENTITY torbutton.circuit_display.new_circuit "建立新的迴路來連接上此網站">
1
0

[tor-browser-build/master] Bug 30284: Fix broken start-up on KitKat devices
by gk@torproject.org 17 May '19
by gk@torproject.org 17 May '19
17 May '19
commit 7caff7a3f547ca251ebea67e7a7d738185463388
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu May 16 21:45:37 2019 +0000
Bug 30284: Fix broken start-up on KitKat devices
Fix by sisbell
---
projects/tor-onion-proxy-library/30284.patch | 22 ++++++++++++++++++++++
projects/tor-onion-proxy-library/build | 1 +
projects/tor-onion-proxy-library/config | 1 +
3 files changed, 24 insertions(+)
diff --git a/projects/tor-onion-proxy-library/30284.patch b/projects/tor-onion-proxy-library/30284.patch
new file mode 100644
index 0000000..a3594b9
--- /dev/null
+++ b/projects/tor-onion-proxy-library/30284.patch
@@ -0,0 +1,22 @@
+From 4402f247643c7b3b730f0facaf1c45dc02d5721f Mon Sep 17 00:00:00 2001
+From: sisbell <shane.isbell(a)gmail.com>
+Date: Thu, 16 May 2019 21:33:06 +0000
+Subject: [PATCH] Fixes thaliproject#120: Tor Startup Broken on KitKat Devices
+
+
+diff --git a/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfig.java b/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfig.java
+index 3df0f12..1ab7c2d 100644
+--- a/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfig.java
++++ b/universal/src/main/java/com/msopentech/thali/toronionproxy/TorConfig.java
+@@ -372,7 +372,7 @@ public final class TorConfig {
+ public TorConfig build() {
+ if(homeDir == null) {
+ String userHome = System.getProperty("user.home");
+- homeDir = (userHome != null && !"".equals(userHome)) ? new File(userHome) : configDir;
++ homeDir = (userHome != null && !"".equals(userHome) && !"/".equals(userHome)) ? new File(userHome) : configDir;
+ }
+
+ if (torExecutableFile == null) {
+--
+2.20.1
+
diff --git a/projects/tor-onion-proxy-library/build b/projects/tor-onion-proxy-library/build
index defedde..e674061 100644
--- a/projects/tor-onion-proxy-library/build
+++ b/projects/tor-onion-proxy-library/build
@@ -20,6 +20,7 @@ tar -C /var/tmp/build -xf [% project %]-[% c('version') %].tar.gz
cd /var/tmp/build/[% project %]-[% c('version') %]
patch -p1 < $rootdir/maven-repo.patch
patch -p1 < $rootdir/add_socks_port_flags.patch
+patch -p1 < $rootdir/30284.patch
# Build Android Libraries and Apps
$GRADLE_HOME/gradle-4.1/bin/gradle --offline -P androidplugin=3.0.1 assembleRelease -x lint
diff --git a/projects/tor-onion-proxy-library/config b/projects/tor-onion-proxy-library/config
index 889b30d..9db33bd 100644
--- a/projects/tor-onion-proxy-library/config
+++ b/projects/tor-onion-proxy-library/config
@@ -30,3 +30,4 @@ input_files:
exec: '[% INCLUDE "fetch-gradle-dependencies" %]'
- filename: maven-repo.patch
- filename: add_socks_port_flags.patch
+ - filename: 30284.patch
1
0

[tor-browser/tor-browser-60.6.1esr-9.0-1] Bug 1548634 - Update the default letterboxing behavior to use stepped ranges r=johannh
by gk@torproject.org 17 May '19
by gk@torproject.org 17 May '19
17 May '19
commit 166a752ab22ef1415c250eff37e1ada3f2f24915
Author: Tom Ritter <tom(a)mozilla.com>
Date: Tue May 7 16:06:43 2019 +0000
Bug 1548634 - Update the default letterboxing behavior to use stepped ranges r=johannh
Differential Revision: https://phabricator.services.mozilla.com/D29759
---
.../browser/browser_dynamical_window_rounding.js | 11 ++++------
.../components/resistfingerprinting/RFPHelper.jsm | 25 +++++++++++++++++-----
2 files changed, 24 insertions(+), 12 deletions(-)
diff --git a/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js b/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js
index ae8055a49ce5..784fb42b8631 100644
--- a/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js
+++ b/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js
@@ -11,9 +11,7 @@
*/
const TEST_PATH = "http://example.net/browser/browser/components/resistfingerprinting/test/bro…";
-
-const DEFAULT_ROUNDED_WIDTH_STEP = 200;
-const DEFAULT_ROUNDED_HEIGHT_STEP = 100;
+const { RFPHelper } = ChromeUtils.import("resource://gre/modules/RFPHelper.jsm");
// A set of test cases which defines the width and the height of the outer window.
const TEST_CASES = [
@@ -50,10 +48,9 @@ function handleOSFuzziness(aContent, aTarget) {
function checkForDefaultSetting(
aContentWidth, aContentHeight, aRealWidth, aRealHeight) {
- // The default behavior for rounding is to round window with 200x100 stepping.
- // So, we can get the rounded size by subtracting the remainder.
- let targetWidth = aRealWidth - (aRealWidth % DEFAULT_ROUNDED_WIDTH_STEP);
- let targetHeight = aRealHeight - (aRealHeight % DEFAULT_ROUNDED_HEIGHT_STEP);
+ // We can get the rounded size by subtracting twice the margin.
+ let targetWidth = aRealWidth - (2 * RFPHelper.steppedRange(aRealWidth));
+ let targetHeight = aRealHeight - (2 * RFPHelper.steppedRange(aRealHeight));
// This platform-specific code is explained in the large comment below.
if (getPlatform() != "linux") {
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.jsm b/toolkit/components/resistfingerprinting/RFPHelper.jsm
index 2f3a1dd0e659..5f23d0679b53 100755
--- a/toolkit/components/resistfingerprinting/RFPHelper.jsm
+++ b/toolkit/components/resistfingerprinting/RFPHelper.jsm
@@ -21,9 +21,6 @@ const kPrefLetterboxingTesting =
const kTopicDOMWindowOpened = "domwindowopened";
const kEventLetterboxingSizeUpdate = "Letterboxing:ContentSizeUpdated";
-const kDefaultWidthStepping = 200;
-const kDefaultHeightStepping = 100;
-
var logConsole;
function log(msg) {
if (!logConsole) {
@@ -338,6 +335,24 @@ class _RFPHelper {
}
/**
+ * Given a width or height, returns the appropriate margin to apply.
+ */
+ steppedRange(aDimension) {
+ let stepping;
+ if (aDimension <= 50) {
+ return 0;
+ } else if (aDimension <= 500) {
+ stepping = 50;
+ } else if (aDimension <= 1600) {
+ stepping = 100;
+ } else {
+ stepping = 200;
+ }
+
+ return (aDimension % stepping) / 2;
+ }
+
+ /**
* The function will round the given browser by adding margins around the
* content viewport.
*/
@@ -373,8 +388,8 @@ class _RFPHelper {
// stepping size.
if (!this._letterboxingDimensions.length) {
result = {
- width: (aWidth % kDefaultWidthStepping) / 2,
- height: (aHeight % kDefaultHeightStepping) / 2,
+ width: this.steppedRange(aWidth),
+ height: this.steppedRange(aHeight),
};
log("_roundContentView[" + logId + "] calcMargins(" + aWidth + ", " + aHeight + ") = " + result.width + " x " + result.height);
return result;
1
0

[tor-browser/tor-browser-60.6.1esr-9.0-1] Bug 1447592 Do not reset the Spoof English pref after disabling Resist Fingerprinting r=johannh
by gk@torproject.org 17 May '19
by gk@torproject.org 17 May '19
17 May '19
commit 69e7b6d159f3d7ec4d8e0987afe1925ade94c0f6
Author: Tom Ritter <tom(a)mozilla.com>
Date: Wed Apr 24 09:22:04 2019 -0500
Bug 1447592 Do not reset the Spoof English pref after disabling Resist Fingerprinting r=johannh
Backports this patch to esr60 just to keep RFPHelper in sync
---
toolkit/components/resistfingerprinting/RFPHelper.jsm | 1 -
1 file changed, 1 deletion(-)
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.jsm b/toolkit/components/resistfingerprinting/RFPHelper.jsm
index 5aef203ad38b..91630d7c169e 100755
--- a/toolkit/components/resistfingerprinting/RFPHelper.jsm
+++ b/toolkit/components/resistfingerprinting/RFPHelper.jsm
@@ -99,7 +99,6 @@ class _RFPHelper {
this._addRFPObservers();
} else {
this._removeRFPObservers();
- Services.prefs.setIntPref(kPrefSpoofEnglish, 0);
}
}
1
0

[tor-browser/tor-browser-60.6.1esr-9.0-1] Bug 1407366 - Part 3: Implementing the window letterboxing. r=johannh
by gk@torproject.org 17 May '19
by gk@torproject.org 17 May '19
17 May '19
commit 06bed4d6845f681755c1e51db9497aeeaa5cd259
Author: Tom Ritter <tom(a)mozilla.com>
Date: Wed Apr 24 09:35:23 2019 -0500
Bug 1407366 - Part 3: Implementing the window letterboxing. r=johannh
This patch implements the window letterboxing. The implementation
is based on adding margins around the browser element to round the
content viewport size. Whenever the browser content is resized, the
RFPHelper will adjust margins around it. But it won't add any margins
for an empty browser or a browser loads a content with the system
principal.
The letterboxing is hidden behind a hidden pref
"privacy.resistFingerprinting.letterboxing." By default, it will use
stepping size 200x100 to round content window. And we can customize
the set of dimensions used for deciding the size of the rounded
content viewport by the pref
"privacy.resistFingerprinting.letterboxing.dimensions". This pref
should be formated as 'width1xheight1, width2xheight2, ...'. We will
find the dimensions which can fit into the real content size and have
the smallest margins to be the rounded content viewport size. For example
, given the set "400x200, 500x300, 800x500" and the real content size
"600x300", we would round the content size into 500x300.
---
browser/base/content/content.js | 4 +
.../components/resistfingerprinting/RFPHelper.jsm | 288 ++++++++++++++++++++-
toolkit/components/resistfingerprinting/moz.build | 2 +-
3 files changed, 291 insertions(+), 3 deletions(-)
diff --git a/browser/base/content/content.js b/browser/base/content/content.js
index d04adab3095a..9d5aa51dbfc9 100644
--- a/browser/base/content/content.js
+++ b/browser/base/content/content.js
@@ -40,6 +40,10 @@ var contextMenu = this.contextMenu = new ContextMenu(global);
// Load the form validation popup handler
var formSubmitObserver = new FormSubmitObserver(content, this);
+addEventListener("resize", function() {
+ sendAsyncMessage("Letterboxing:ContentSizeUpdated");
+});
+
addMessageListener("RemoteLogins:fillForm", function(message) {
// intercept if ContextMenu.jsm had sent a plain object for remote targets
message.objects.inputElement = contextMenu.getTarget(message, "inputElement");
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.jsm b/toolkit/components/resistfingerprinting/RFPHelper.jsm
index 91630d7c169e..4fb889ab16fe 100755
--- a/toolkit/components/resistfingerprinting/RFPHelper.jsm
+++ b/toolkit/components/resistfingerprinting/RFPHelper.jsm
@@ -13,9 +13,18 @@ const kPrefResistFingerprinting = "privacy.resistFingerprinting";
const kPrefSpoofEnglish = "privacy.spoof_english";
const kTopicHttpOnModifyRequest = "http-on-modify-request";
+const kPrefLetterboxing = "privacy.resistFingerprinting.letterboxing";
+const kPrefLetterboxingDimensions =
+ "privacy.resistFingerprinting.letterboxing.dimensions";
+const kTopicDOMWindowOpened = "domwindowopened";
+const kEventLetterboxingSizeUpdate = "Letterboxing:ContentSizeUpdated";
+
+const kDefaultWidthStepping = 200;
+const kDefaultHeightStepping = 100;
+
class _RFPHelper {
// ============================================================================
- // Setup
+ // Shared Setup
// ============================================================================
constructor() {
this._initialized = false;
@@ -29,8 +38,13 @@ class _RFPHelper {
// Add unconditional observers
Services.prefs.addObserver(kPrefResistFingerprinting, this);
- // Add RFP observers if the pref is enabled
+ Services.prefs.addObserver(kPrefLetterboxing, this);
+ XPCOMUtils.defineLazyPreferenceGetter(this, "_letterboxingDimensions",
+ kPrefLetterboxingDimensions, "", null, this._parseLetterboxingDimensions);
+
+ // Add RFP and Letterboxing observers if prefs are enabled
this._handleResistFingerprintingChanged();
+ this._handleLetterboxingPrefChanged();
}
uninit() {
@@ -41,6 +55,7 @@ class _RFPHelper {
// Remove unconditional observers
Services.prefs.removeObserver(kPrefResistFingerprinting, this);
+ Services.prefs.removeObserver(kPrefLetterboxing, this);
// Remove the RFP observers, swallowing exceptions if they weren't present
this._removeRFPObservers();
}
@@ -53,6 +68,36 @@ class _RFPHelper {
case kTopicHttpOnModifyRequest:
this._handleHttpOnModifyRequest(subject, data);
break;
+ case kTopicDOMWindowOpened:
+ // We attach to the newly created window by adding tabsProgressListener
+ // and event listener on it. We listen for new tabs being added or
+ // the change of the content principal and apply margins accordingly.
+ this._handleDOMWindowOpened(subject);
+ break;
+ default:
+ break;
+ }
+ }
+
+ handleEvent(aMessage) {
+ switch (aMessage.type) {
+ case "TabOpen":
+ {
+ let tab = aMessage.target;
+ this._addOrClearContentMargin(tab.linkedBrowser);
+ break;
+ }
+ default:
+ break;
+ }
+ }
+
+ receiveMessage(aMessage) {
+ switch (aMessage.name) {
+ case kEventLetterboxingSizeUpdate:
+ let win = aMessage.target.ownerGlobal;
+ this._updateMarginsForTabsInWindow(win);
+ break;
default:
break;
}
@@ -66,6 +111,9 @@ class _RFPHelper {
case kPrefSpoofEnglish:
this._handleSpoofEnglishChanged();
break;
+ case kPrefLetterboxing:
+ this._handleLetterboxingPrefChanged();
+ break;
default:
break;
}
@@ -211,6 +259,242 @@ class _RFPHelper {
}
return httpChannel.getRequestHeader("Accept-Language");
}
+
+ // ==============================================================================
+ // Letterboxing
+ // ============================================================================
+ /**
+ * We use the TabsProgressListener to catch the change of the content
+ * principal. We would clear the margins around the content viewport if
+ * it is the system principal.
+ */
+ onLocationChange(aBrowser) {
+ this._addOrClearContentMargin(aBrowser);
+ }
+
+ _handleLetterboxingPrefChanged() {
+ if (Services.prefs.getBoolPref(kPrefLetterboxing, false)) {
+ Services.ww.registerNotification(this);
+ this._attachAllWindows();
+ } else {
+ this._detachAllWindows();
+ Services.ww.unregisterNotification(this);
+ }
+ }
+
+ // The function to parse the dimension set from the pref value. The pref value
+ // should be formated as 'width1xheight1, width2xheight2, ...'. For
+ // example, '100x100, 200x200, 400x200 ...'.
+ _parseLetterboxingDimensions(aPrefValue) {
+ if (!aPrefValue || !aPrefValue.match(/^(?:\d+x\d+,\s*)*(?:\d+x\d+)$/)) {
+ if (aPrefValue) {
+ Cu.reportError(`Invalid pref value for ${kPrefLetterboxingDimensions}: ${aPrefValue}`);
+ }
+ return [];
+ }
+
+ return aPrefValue.split(",").map(item => {
+ let sizes = item.split("x").map(size => parseInt(size, 10));
+
+ return {
+ width: sizes[0],
+ height: sizes[1],
+ };
+ });
+ }
+
+ _addOrClearContentMargin(aBrowser) {
+ let tab = aBrowser.getTabBrowser()
+ .getTabForBrowser(aBrowser);
+
+ // We won't do anything for lazy browsers.
+ if (!aBrowser.isConnected) {
+ return;
+ }
+
+ // We should apply no margin around an empty tab or a tab with system
+ // principal.
+ if (tab.isEmpty || aBrowser.contentPrincipal.isSystemPrincipal) {
+ this._clearContentViewMargin(aBrowser);
+ } else {
+ this._roundContentView(aBrowser);
+ }
+ }
+
+ /**
+ * The function will round the given browser by adding margins around the
+ * content viewport.
+ */
+ async _roundContentView(aBrowser) {
+ let win = aBrowser.ownerGlobal;
+ let browserContainer = aBrowser.getTabBrowser()
+ .getBrowserContainer(aBrowser);
+
+ let {contentWidth, contentHeight, containerWidth, containerHeight} =
+ await win.promiseDocumentFlushed(() => {
+ let contentWidth = aBrowser.clientWidth;
+ let contentHeight = aBrowser.clientHeight;
+ let containerWidth = browserContainer.clientWidth;
+ let containerHeight = browserContainer.clientHeight;
+
+ return {
+ contentWidth,
+ contentHeight,
+ containerWidth,
+ containerHeight,
+ };
+ });
+
+ let calcMargins = (aWidth, aHeight) => {
+ // If the set is empty, we will round the content with the default
+ // stepping size.
+ if (!this._letterboxingDimensions.length) {
+ return {
+ width: (aWidth % kDefaultWidthStepping) / 2,
+ height: (aHeight % kDefaultHeightStepping) / 2,
+ };
+ }
+
+ let matchingArea = aWidth * aHeight;
+ let minWaste = Number.MAX_SAFE_INTEGER;
+ let targetDimensions = undefined;
+
+ // Find the desired dimensions which waste the least content area.
+ for (let dim of this._letterboxingDimensions) {
+ // We don't need to consider the dimensions which cannot fit into the
+ // real content size.
+ if (dim.width > aWidth || dim.height > aHeight) {
+ continue;
+ }
+
+ let waste = matchingArea - dim.width * dim.height;
+
+ if (waste >= 0 && waste < minWaste) {
+ targetDimensions = dim;
+ minWaste = waste;
+ }
+ }
+
+ let result;
+ // If we cannot find any dimensions match to the real content window, this
+ // means the content area is smaller the smallest size in the set. In this
+ // case, we won't apply any margins.
+ if (!targetDimensions) {
+ result = {
+ width: 0,
+ height: 0,
+ };
+ } else {
+ result = {
+ width: (aWidth - targetDimensions.width) / 2,
+ height: (aHeight - targetDimensions.height) / 2,
+ };
+ }
+
+ return result;
+ };
+
+ // Calculating the margins around the browser element in order to round the
+ // content viewport. We will use a 200x100 stepping if the dimension set
+ // is not given.
+ let margins = calcMargins(containerWidth, containerHeight);
+
+ // If the size of the content is already quantized, we do nothing.
+ if (aBrowser.style.margin == `${margins.height}px ${margins.width}px`) {
+ return;
+ }
+
+ win.requestAnimationFrame(() => {
+ // One cannot (easily) control the color of a margin unfortunately.
+ // An initial attempt to use a border instead of a margin resulted
+ // in offset event dispatching; so for now we use a colorless margin.
+ aBrowser.style.margin = `${margins.height}px ${margins.width}px`;
+ });
+ }
+
+ _clearContentViewMargin(aBrowser) {
+ aBrowser.ownerGlobal.requestAnimationFrame(() => {
+ aBrowser.style.margin = "";
+ });
+ }
+
+ _updateMarginsForTabsInWindow(aWindow) {
+ let tabBrowser = aWindow.gBrowser;
+
+ for (let tab of tabBrowser.tabs) {
+ let browser = tab.linkedBrowser;
+ this._addOrClearContentMargin(browser);
+ }
+ }
+
+ _attachWindow(aWindow) {
+ aWindow.gBrowser
+ .addTabsProgressListener(this);
+ aWindow.addEventListener("TabOpen", this);
+ aWindow.messageManager
+ .addMessageListener(kEventLetterboxingSizeUpdate, this);
+
+ // Rounding the content viewport.
+ this._updateMarginsForTabsInWindow(aWindow);
+ }
+
+ _attachAllWindows() {
+ let windowList = Services.wm.getEnumerator("navigator:browser");
+
+ while (windowList.hasMoreElements()) {
+ let win = windowList.getNext();
+
+ if (win.closed || !win.gBrowser) {
+ continue;
+ }
+
+ this._attachWindow(win);
+ }
+ }
+
+ _detachWindow(aWindow) {
+ let tabBrowser = aWindow.gBrowser;
+ tabBrowser.removeTabsProgressListener(this);
+ aWindow.removeEventListener("TabOpen", this);
+ aWindow.messageManager
+ .removeMessageListener(kEventLetterboxingSizeUpdate, this);
+
+ // Clear all margins and tooltip for all browsers.
+ for (let tab of tabBrowser.tabs) {
+ let browser = tab.linkedBrowser;
+ this._clearContentViewMargin(browser);
+ }
+ }
+
+ _detachAllWindows() {
+ let windowList = Services.wm.getEnumerator("navigator:browser");
+
+ while (windowList.hasMoreElements()) {
+ let win = windowList.getNext();
+
+ if (win.closed || !win.gBrowser) {
+ continue;
+ }
+
+ this._detachWindow(win);
+ }
+ }
+
+ _handleDOMWindowOpened(aSubject) {
+ let win = aSubject.QueryInterface(Ci.nsIDOMWindow);
+ let self = this;
+
+ win.addEventListener("load", () => {
+ // We attach to the new window when it has been loaded if the new loaded
+ // window is a browsing window.
+ if (win.document
+ .documentElement
+ .getAttribute("windowtype") !== "navigator:browser") {
+ return;
+ }
+ self._attachWindow(win);
+ }, {once: true});
+ }
}
let RFPHelper = new _RFPHelper();
diff --git a/toolkit/components/resistfingerprinting/moz.build b/toolkit/components/resistfingerprinting/moz.build
index 021f2786f966..f0c904d9c944 100644
--- a/toolkit/components/resistfingerprinting/moz.build
+++ b/toolkit/components/resistfingerprinting/moz.build
@@ -21,5 +21,5 @@ EXPORTS.mozilla += [
]
EXTRA_JS_MODULES += [
- 'RFPHelper.jsm',
+ 'RFPHelper.jsm'
]
1
0

[tor-browser/tor-browser-60.6.1esr-9.0-1] Bug 1407366 - Part 4: Adding a test case for testing letterboxing. r=johannh
by gk@torproject.org 17 May '19
by gk@torproject.org 17 May '19
17 May '19
commit 610ad333716499f5f9cf704a1dd97e07d276f572
Author: Tom Ritter <tom(a)mozilla.com>
Date: Wed Apr 24 09:36:29 2019 -0500
Bug 1407366 - Part 4: Adding a test case for testing letterboxing. r=johannh
This patch adds a test for ensuring the letterboxing works as we expect.
It will open a tab and resize its window into several different sizes
and to see if the margins are correctly apply. And it will also check
that no margin should apply to a tab with chrome privilege.
---
.../resistfingerprinting/test/browser/browser.ini | 1 +
.../browser/browser_dynamical_window_rounding.js | 277 +++++++++++++++++++++
modules/libpref/init/all.js | 3 +
.../components/resistfingerprinting/RFPHelper.jsm | 35 ++-
4 files changed, 314 insertions(+), 2 deletions(-)
diff --git a/browser/components/resistfingerprinting/test/browser/browser.ini b/browser/components/resistfingerprinting/test/browser/browser.ini
index 024ee29907b4..1aa918b4574b 100644
--- a/browser/components/resistfingerprinting/test/browser/browser.ini
+++ b/browser/components/resistfingerprinting/test/browser/browser.ini
@@ -11,6 +11,7 @@ support-files =
head.js
[browser_block_mozAddonManager.js]
+[browser_dynamical_window_rounding.js]
[browser_navigator.js]
[browser_netInfo.js]
[browser_performanceAPI.js]
diff --git a/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js b/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js
new file mode 100644
index 000000000000..ea261b7820d7
--- /dev/null
+++ b/browser/components/resistfingerprinting/test/browser/browser_dynamical_window_rounding.js
@@ -0,0 +1,277 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * Bug 1407366 - A test case for reassuring the size of the content viewport is
+ * rounded if the window is resized when letterboxing is enabled.
+ */
+
+const TEST_PATH = "http://example.net/browser/browser/components/resistfingerprinting/test/bro…";
+
+const DEFAULT_ROUNDED_WIDTH_STEP = 200;
+const DEFAULT_ROUNDED_HEIGHT_STEP = 100;
+
+// A set of test cases which defines the width and the height of the outer window.
+const TEST_CASES = [
+ {width: 1250, height: 1000},
+ {width: 1500, height: 1050},
+ {width: 1120, height: 760},
+ {width: 800, height: 600},
+ {width: 640, height: 400},
+ {width: 500, height: 350},
+ {width: 300, height: 170},
+];
+
+function getPlatform() {
+ const {OS} = Services.appinfo;
+ if (OS == "WINNT") {
+ return "win";
+ } else if (OS == "Darwin") {
+ return "mac";
+ }
+ return "linux";
+}
+
+function handleOSFuzziness(aContent, aTarget) {
+ /*
+ * On Windows, we observed off-by-one pixel differences that
+ * couldn't be expained. When manually setting the window size
+ * to try to reproduce it; it did not occur.
+ */
+ if (getPlatform() == "win") {
+ return Math.abs(aContent - aTarget) <= 1;
+ }
+ return aContent == aTarget;
+}
+
+function checkForDefaultSetting(
+ aContentWidth, aContentHeight, aRealWidth, aRealHeight) {
+ // The default behavior for rounding is to round window with 200x100 stepping.
+ // So, we can get the rounded size by subtracting the remainder.
+ let targetWidth = aRealWidth - (aRealWidth % DEFAULT_ROUNDED_WIDTH_STEP);
+ let targetHeight = aRealHeight - (aRealHeight % DEFAULT_ROUNDED_HEIGHT_STEP);
+
+ // This platform-specific code is explained in the large comment below.
+ if (getPlatform() != "linux") {
+ ok(handleOSFuzziness(aContentWidth, targetWidth),
+ `Default Dimensions: The content window width is correctly rounded into. ${aRealWidth}px -> ${aContentWidth}px should equal ${targetWidth}px`);
+
+ ok(handleOSFuzziness(aContentHeight, targetHeight),
+ `Default Dimensions: The content window height is correctly rounded into. ${aRealHeight}px -> ${aContentHeight}px should equal ${targetHeight}px`);
+
+ // Using ok() above will cause Win/Mac to fail on even the first test, we don't need to repeat it, return true so waitForCondition ends
+ return true;
+ }
+ // Returning true or false depending on if the test succeeded will cause Linux to repeat until it succeeds.
+ return handleOSFuzziness(aContentWidth, targetWidth) && handleOSFuzziness(aContentHeight, targetHeight);
+}
+
+async function test_dynamical_window_rounding(aWindow, aCheckFunc) {
+ // We need to wait for the updating the margins for the newly opened tab, or
+ // it will affect the following tests.
+ let promiseForTheFirstRounding =
+ TestUtils.topicObserved("test:letterboxing:update-margin-finish");
+
+ info("Open a content tab for testing.");
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ aWindow.gBrowser, TEST_PATH + "file_dummy.html");
+
+ info("Wait until the margins are applied for the opened tab.");
+ await promiseForTheFirstRounding;
+
+ let getContainerSize = (aTab) => {
+ let browserContainer = aWindow.gBrowser
+ .getBrowserContainer(aTab.linkedBrowser);
+ return {
+ containerWidth: browserContainer.clientWidth,
+ containerHeight: browserContainer.clientHeight,
+ };
+ };
+
+ for (let {width, height} of TEST_CASES) {
+ let caseString = "Case " + width + "x" + height + ": ";
+ // Create a promise for waiting for the margin update.
+ let promiseRounding =
+ TestUtils.topicObserved("test:letterboxing:update-margin-finish");
+
+ let {containerWidth, containerHeight} = getContainerSize(tab);
+
+ info(caseString + "Resize the window and wait until resize event happened (currently " +
+ containerWidth + "x" + containerHeight + ")");
+ await new Promise(resolve => {
+ ({containerWidth, containerHeight} = getContainerSize(tab));
+ info(caseString + "Resizing (currently " + containerWidth + "x" + containerHeight + ")");
+
+ aWindow.onresize = () => {
+ ({containerWidth, containerHeight} = getContainerSize(tab));
+ info(caseString + "Resized (currently " + containerWidth + "x" + containerHeight + ")");
+ if (getPlatform() == "linux" && containerWidth != width) {
+ /*
+ * We observed frequent test failures that resulted from receiving an onresize
+ * event where the browser was resized to an earlier requested dimension. This
+ * resize event happens on Linux only, and is an artifact of the asynchronous
+ * resizing. (See more discussion on 1407366#53)
+ *
+ * We cope with this problem in two ways.
+ *
+ * 1: If we detect that the browser was resized to the wrong value; we
+ * redo the resize. (This is the lines of code immediately following this
+ * comment)
+ * 2: We repeat the test until it works using waitForCondition(). But we still
+ * test Win/Mac more thoroughly: they do not loop in waitForCondition more
+ * than once, and can fail the test on the first attempt (because their
+ * check() functions use ok() while on Linux, we do not all ok() and instead
+ * rely on waitForCondition to fail).
+ *
+ * The logging statements in this test, and RFPHelper.jsm, help narrow down and
+ * illustrate the issue.
+ */
+ info(caseString + "We hit the weird resize bug. Resize it again.");
+ aWindow.resizeTo(width, height);
+ } else {
+ resolve();
+ }
+ };
+ aWindow.resizeTo(width, height);
+ });
+
+ ({containerWidth, containerHeight} = getContainerSize(tab));
+ info(caseString + "Waiting until margin has been updated on browser element. (currently " +
+ containerWidth + "x" + containerHeight + ")");
+ await promiseRounding;
+
+ info(caseString + "Get innerWidth/Height from the content.");
+ await BrowserTestUtils.waitForCondition(async () => {
+ let {contentWidth, contentHeight} = await ContentTask.spawn(
+ tab.linkedBrowser, null, () => {
+ return {
+ contentWidth: content.innerWidth,
+ contentHeight: content.innerHeight,
+ };
+ });
+
+ info(caseString + "Check the result.");
+ return aCheckFunc(contentWidth, contentHeight, containerWidth, containerHeight);
+ }, "Default Dimensions: The content window width is correctly rounded into.");
+ }
+
+ BrowserTestUtils.removeTab(tab);
+}
+
+async function test_customize_width_and_height(aWindow) {
+ const test_dimensions = `120x80, 200x143, 335x255, 600x312, 742x447, 813x558,
+ 990x672, 1200x733, 1470x858`;
+
+ await SpecialPowers.pushPrefEnv({"set":
+ [
+ ["privacy.resistFingerprinting.letterboxing.dimensions", test_dimensions],
+ ],
+ });
+
+ let dimensions_set = test_dimensions.split(",").map(item => {
+ let sizes = item.split("x").map(size => parseInt(size, 10));
+
+ return {
+ width: sizes[0],
+ height: sizes[1],
+ };
+ });
+
+ let checkDimension =
+ (aContentWidth, aContentHeight, aRealWidth, aRealHeight) => {
+ let matchingArea = aRealWidth * aRealHeight;
+ let minWaste = Number.MAX_SAFE_INTEGER;
+ let targetDimensions = undefined;
+
+ // Find the dimensions which waste the least content area.
+ for (let dim of dimensions_set) {
+ if (dim.width > aRealWidth || dim.height > aRealHeight) {
+ continue;
+ }
+
+ let waste = matchingArea - dim.width * dim.height;
+
+ if (waste >= 0 && waste < minWaste) {
+ targetDimensions = dim;
+ minWaste = waste;
+ }
+ }
+
+ // This platform-specific code is explained in the large comment above.
+ if (getPlatform() != "linux") {
+ ok(handleOSFuzziness(aContentWidth, targetDimensions.width),
+ `Custom Dimension: The content window width is correctly rounded into. ${aRealWidth}px -> ${aContentWidth}px should equal ${targetDimensions.width}`);
+
+ ok(handleOSFuzziness(aContentHeight, targetDimensions.height),
+ `Custom Dimension: The content window height is correctly rounded into. ${aRealHeight}px -> ${aContentHeight}px should equal ${targetDimensions.height}`);
+
+ // Using ok() above will cause Win/Mac to fail on even the first test, we don't need to repeat it, return true so waitForCondition ends
+ return true;
+ }
+ // Returning true or false depending on if the test succeeded will cause Linux to repeat until it succeeds.
+ return handleOSFuzziness(aContentWidth, targetDimensions.width) && handleOSFuzziness(aContentHeight, targetDimensions.height);
+ };
+
+ await test_dynamical_window_rounding(aWindow, checkDimension);
+
+ await SpecialPowers.popPrefEnv();
+}
+
+async function test_no_rounding_for_chrome(aWindow) {
+ // First, resize the window to a size with is not rounded.
+ await new Promise(resolve => {
+ aWindow.onresize = () => resolve();
+ aWindow.resizeTo(700, 450);
+ });
+
+ // open a chrome privilege tab, like about:config.
+ let tab = await BrowserTestUtils.openNewForegroundTab(
+ aWindow.gBrowser, "about:config");
+
+ // Check that the browser element should not have a margin.
+ is(tab.linkedBrowser.style.margin, "", "There is no margin around chrome tab.");
+
+ BrowserTestUtils.removeTab(tab);
+}
+
+add_task(async function setup() {
+ await SpecialPowers.pushPrefEnv({"set":
+ [
+ ["privacy.resistFingerprinting.letterboxing", true],
+ ["privacy.resistFingerprinting.letterboxing.testing", true],
+ ],
+ });
+});
+
+add_task(async function do_tests() {
+ // Store the original window size before testing.
+ let originalOuterWidth = window.outerWidth;
+ let originalOuterHeight = window.outerHeight;
+
+ info("Run test for the default window rounding.");
+ await test_dynamical_window_rounding(window, checkForDefaultSetting);
+
+ info("Run test for the window rounding with customized dimensions.");
+ await test_customize_width_and_height(window);
+
+ info("Run test for no margin around tab with the chrome privilege.");
+ await test_no_rounding_for_chrome(window);
+
+ // Restore the original window size.
+ window.outerWidth = originalOuterWidth;
+ window.outerHeight = originalOuterHeight;
+
+ // Testing that whether the dynamical rounding works for new windows.
+ let win = await BrowserTestUtils.openNewBrowserWindow();
+
+ info("Run test for the default window rounding in new window.");
+ await test_dynamical_window_rounding(win, checkForDefaultSetting);
+
+ info("Run test for the window rounding with customized dimensions in new window.");
+ await test_customize_width_and_height(win);
+
+ info("Run test for no margin around tab with the chrome privilege in new window.");
+ await test_no_rounding_for_chrome(win);
+
+ await BrowserTestUtils.closeWindow(win);
+});
diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js
index 9dc30b8efe44..5b1d0a1c8972 100644
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -1414,6 +1414,9 @@ pref("privacy.resistFingerprinting", false);
// If you do set it, to work around some broken website, please file a bug with
// information so we can understand why it is needed.
pref("privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts", true);
+// The log level for browser console messages logged in RFPHelper.jsm
+// Change to 'All' and restart to see the messages
+pref("privacy.resistFingerprinting.jsmloglevel", "Warn");
// A subset of Resist Fingerprinting protections focused specifically on timers for testing
// This affects the Animation API, the performance APIs, Date.getTime, Event.timestamp,
// File.lastModified, audioContext.currentTime, canvas.captureStream.currentTime
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.jsm b/toolkit/components/resistfingerprinting/RFPHelper.jsm
index 4fb889ab16fe..2f3a1dd0e659 100755
--- a/toolkit/components/resistfingerprinting/RFPHelper.jsm
+++ b/toolkit/components/resistfingerprinting/RFPHelper.jsm
@@ -16,12 +16,26 @@ const kTopicHttpOnModifyRequest = "http-on-modify-request";
const kPrefLetterboxing = "privacy.resistFingerprinting.letterboxing";
const kPrefLetterboxingDimensions =
"privacy.resistFingerprinting.letterboxing.dimensions";
+const kPrefLetterboxingTesting =
+ "privacy.resistFingerprinting.letterboxing.testing";
const kTopicDOMWindowOpened = "domwindowopened";
const kEventLetterboxingSizeUpdate = "Letterboxing:ContentSizeUpdated";
const kDefaultWidthStepping = 200;
const kDefaultHeightStepping = 100;
+var logConsole;
+function log(msg) {
+ if (!logConsole) {
+ logConsole = console.createInstance({
+ prefix: "RFPHelper.jsm",
+ maxLogLevelPref: "privacy.resistFingerprinting.jsmloglevel",
+ });
+ }
+
+ logConsole.log(msg);
+}
+
class _RFPHelper {
// ============================================================================
// Shared Setup
@@ -41,6 +55,8 @@ class _RFPHelper {
Services.prefs.addObserver(kPrefLetterboxing, this);
XPCOMUtils.defineLazyPreferenceGetter(this, "_letterboxingDimensions",
kPrefLetterboxingDimensions, "", null, this._parseLetterboxingDimensions);
+ XPCOMUtils.defineLazyPreferenceGetter(this, "_isLetterboxingTesting",
+ kPrefLetterboxingTesting, false);
// Add RFP and Letterboxing observers if prefs are enabled
this._handleResistFingerprintingChanged();
@@ -326,6 +342,8 @@ class _RFPHelper {
* content viewport.
*/
async _roundContentView(aBrowser) {
+ let logId = Math.random();
+ log("_roundContentView[" + logId + "]");
let win = aBrowser.ownerGlobal;
let browserContainer = aBrowser.getTabBrowser()
.getBrowserContainer(aBrowser);
@@ -345,14 +363,21 @@ class _RFPHelper {
};
});
+ log("_roundContentView[" + logId + "] contentWidth=" + contentWidth + " contentHeight=" + contentHeight +
+ " containerWidth=" + containerWidth + " containerHeight=" + containerHeight + " ");
+
let calcMargins = (aWidth, aHeight) => {
+ let result;
+ log("_roundContentView[" + logId + "] calcMargins(" + aWidth + ", " + aHeight + ")");
// If the set is empty, we will round the content with the default
// stepping size.
if (!this._letterboxingDimensions.length) {
- return {
+ result = {
width: (aWidth % kDefaultWidthStepping) / 2,
height: (aHeight % kDefaultHeightStepping) / 2,
};
+ log("_roundContentView[" + logId + "] calcMargins(" + aWidth + ", " + aHeight + ") = " + result.width + " x " + result.height);
+ return result;
}
let matchingArea = aWidth * aHeight;
@@ -375,7 +400,6 @@ class _RFPHelper {
}
}
- let result;
// If we cannot find any dimensions match to the real content window, this
// means the content area is smaller the smallest size in the set. In this
// case, we won't apply any margins.
@@ -391,6 +415,7 @@ class _RFPHelper {
};
}
+ log("_roundContentView[" + logId + "] calcMargins(" + aWidth + ", " + aHeight + ") = " + result.width + " x " + result.height);
return result;
};
@@ -401,10 +426,16 @@ class _RFPHelper {
// If the size of the content is already quantized, we do nothing.
if (aBrowser.style.margin == `${margins.height}px ${margins.width}px`) {
+ log("_roundContentView[" + logId + "] is_rounded == true");
+ if (this._isLetterboxingTesting) {
+ log("_roundContentView[" + logId + "] is_rounded == true test:letterboxing:update-margin-finish");
+ Services.obs.notifyObservers(null, "test:letterboxing:update-margin-finish");
+ }
return;
}
win.requestAnimationFrame(() => {
+ log("_roundContentView[" + logId + "] setting margins to " + margins.width + " x " + margins.height);
// One cannot (easily) control the color of a margin unfortunately.
// An initial attempt to use a border instead of a margin resulted
// in offset event dispatching; so for now we use a colorless margin.
1
0

[tor-browser/tor-browser-60.6.1esr-9.0-1] Bug 1407366 - Part 2: Rearrange RFPHelper for expansion r=johannh
by gk@torproject.org 17 May '19
by gk@torproject.org 17 May '19
17 May '19
commit 7f3ce3ef4cf86690864a4abd7ca58a9e5dbb087f
Author: Tom Ritter <tom(a)mozilla.com>
Date: Wed Apr 24 09:17:53 2019 -0500
Bug 1407366 - Part 2: Rearrange RFPHelper for expansion r=johannh
This patch rearranges RFPHelper.jsm to make it more clear what parts
of the file are responsible for what feature.
---
.../components/resistfingerprinting/RFPHelper.jsm | 62 +++++++++++++---------
1 file changed, 38 insertions(+), 24 deletions(-)
diff --git a/toolkit/components/resistfingerprinting/RFPHelper.jsm b/toolkit/components/resistfingerprinting/RFPHelper.jsm
index 2e8e85072364..5aef203ad38b 100755
--- a/toolkit/components/resistfingerprinting/RFPHelper.jsm
+++ b/toolkit/components/resistfingerprinting/RFPHelper.jsm
@@ -14,6 +14,9 @@ const kPrefSpoofEnglish = "privacy.spoof_english";
const kTopicHttpOnModifyRequest = "http-on-modify-request";
class _RFPHelper {
+ // ============================================================================
+ // Setup
+ // ============================================================================
constructor() {
this._initialized = false;
}
@@ -24,7 +27,9 @@ class _RFPHelper {
}
this._initialized = true;
+ // Add unconditional observers
Services.prefs.addObserver(kPrefResistFingerprinting, this);
+ // Add RFP observers if the pref is enabled
this._handleResistFingerprintingChanged();
}
@@ -34,8 +39,10 @@ class _RFPHelper {
}
this._initialized = false;
+ // Remove unconditional observers
Services.prefs.removeObserver(kPrefResistFingerprinting, this);
- this._removeObservers();
+ // Remove the RFP observers, swallowing exceptions if they weren't present
+ this._removeRFPObservers();
}
observe(subject, topic, data) {
@@ -51,24 +58,6 @@ class _RFPHelper {
}
}
- _removeObservers() {
- try {
- Services.pref.removeObserver(kPrefSpoofEnglish, this);
- } catch (e) {
- // do nothing
- }
- try {
- Services.obs.removeObserver(this, kTopicHttpOnModifyRequest);
- } catch (e) {
- // do nothing
- }
- }
-
- _shouldPromptForLanguagePref() {
- return (Services.locale.getAppLocaleAsLangTag().substr(0, 2) !== "en")
- && (Services.prefs.getIntPref(kPrefSpoofEnglish) === 0);
- }
-
_handlePrefChanged(data) {
switch (data) {
case kPrefResistFingerprinting:
@@ -82,14 +71,34 @@ class _RFPHelper {
}
}
+ // ============================================================================
+ // Language Prompt
+ // ============================================================================
+ _addRFPObservers() {
+ Services.prefs.addObserver(kPrefSpoofEnglish, this);
+ if (this._shouldPromptForLanguagePref()) {
+ Services.obs.addObserver(this, kTopicHttpOnModifyRequest);
+ }
+ }
+
+ _removeRFPObservers() {
+ try {
+ Services.pref.removeObserver(kPrefSpoofEnglish, this);
+ } catch (e) {
+ // do nothing
+ }
+ try {
+ Services.obs.removeObserver(this, kTopicHttpOnModifyRequest);
+ } catch (e) {
+ // do nothing
+ }
+ }
+
_handleResistFingerprintingChanged() {
if (Services.prefs.getBoolPref(kPrefResistFingerprinting)) {
- Services.prefs.addObserver(kPrefSpoofEnglish, this);
- if (this._shouldPromptForLanguagePref()) {
- Services.obs.addObserver(this, kTopicHttpOnModifyRequest);
- }
+ this._addRFPObservers();
} else {
- this._removeObservers();
+ this._removeRFPObservers();
Services.prefs.setIntPref(kPrefSpoofEnglish, 0);
}
}
@@ -116,6 +125,11 @@ class _RFPHelper {
}
}
+ _shouldPromptForLanguagePref() {
+ return (Services.locale.getAppLocaleAsLangTag().substr(0, 2) !== "en")
+ && (Services.prefs.getIntPref(kPrefSpoofEnglish) === 0);
+ }
+
_handleHttpOnModifyRequest(subject, data) {
// If we are loading an HTTP page from content, show the
// "request English language web pages?" prompt.
1
0