tor-commits
Threads by month
- ----- 2025 -----
- 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
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
October 2012
- 20 participants
- 1288 discussions

[tor/maint-0.2.3] Don't call fmt_addr() twice in a parameter list.
by nickm@torproject.org 10 Oct '12
by nickm@torproject.org 10 Oct '12
10 Oct '12
commit 721f99e495474fc7b80250ba52351b5771f0ed36
Author: George Kadianakis <desnacked(a)riseup.net>
Date: Thu Oct 4 20:54:29 2012 -0400
Don't call fmt_addr() twice in a parameter list.
---
changes/bug7014 | 5 +++++
src/or/circuitbuild.c | 7 +++++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/changes/bug7014 b/changes/bug7014
new file mode 100644
index 0000000..1d39103
--- /dev/null
+++ b/changes/bug7014
@@ -0,0 +1,5 @@
+ o Minor bugfixes:
+ - Fix two cases in src/or/transports.c where we were calling
+ fmt_addr() twice in a parameter list. Bug found by David
+ Fifield. Fixes bug 7014; bugfix on 0.2.3.9-alpha.
+
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index a7d370c..f8521c5 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -5310,19 +5310,22 @@ transport_resolve_conflicts(transport_t *t)
t_tmp->marked_for_removal = 0;
return 1;
} else { /* same name but different addrport */
+ char *new_transport_addr = tor_strdup(fmt_addr(&t->addr));
if (t_tmp->marked_for_removal) { /* marked for removal */
log_notice(LD_GENERAL, "You tried to add transport '%s' at '%s:%u' "
"but there was already a transport marked for deletion at "
"'%s:%u'. We deleted the old transport and registered the "
- "new one.", t->name, fmt_addr(&t->addr), t->port,
+ "new one.", t->name, new_transport_addr, t->port,
fmt_addr(&t_tmp->addr), t_tmp->port);
smartlist_remove(transport_list, t_tmp);
transport_free(t_tmp);
+ tor_free(new_transport_addr);
} else { /* *not* marked for removal */
log_notice(LD_GENERAL, "You tried to add transport '%s' at '%s:%u' "
"but the same transport already exists at '%s:%u'. "
- "Skipping.", t->name, fmt_addr(&t->addr), t->port,
+ "Skipping.", t->name, new_transport_addr, t->port,
fmt_addr(&t_tmp->addr), t_tmp->port);
+ tor_free(new_transport_addr);
return -1;
}
}
1
0

10 Oct '12
commit 02c1fa6c6118486fd45a96dbb3c1e7224f0660bc
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Oct 10 00:15:40 2012 +0000
Update translations for torbirdy
---
fa/torbirdy.properties | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/fa/torbirdy.properties b/fa/torbirdy.properties
new file mode 100644
index 0000000..59ef3a7
--- /dev/null
+++ b/fa/torbirdy.properties
@@ -0,0 +1,13 @@
+# torbirdy.name=TorBirdy
+
+# torbirdy.enabled.tor=TorBirdy Enabled: Tor
+# torbirdy.enabled.jondo=TorBirdy Enabled: JonDo
+# torbirdy.enabled.custom=TorBirdy Enabled: Custom Proxy
+# torbirdy.enabled.torification=TorBirdy Enabled: Transparent Torification
+# torbirdy.disabled=TorBirdy: Disabled!
+
+# torbirdy.email.prompt=TorBirdy has disabled Thunderbird's auto-configuration wizard to protect your anonymity.\n\nThe recommended security settings for %S have been set.\n\nYou can now configure the other account settings manually.
+
+# torbirdy.email.advanced=Please note that changing the advanced settings of TorBirdy is NOT recommended.\n\nYou should only continue if you are sure of what you are doing.
+# torbirdy.email.advanced.nextwarning=Show this warning next time
+# torbirdy.email.advanced.title=TorBirdy Advanced Settings
1
0

09 Oct '12
commit 7add8e1220f21b0bdb7e343218d493d7218584b6
Author: Mike Perry <mikeperry-git(a)fscked.org>
Date: Tue Oct 9 16:15:58 2012 -0700
Update locales with new strings.
---
src/chrome/locale/af/torbutton.properties | 7 +
src/chrome/locale/ak/torbutton.properties | 7 +
src/chrome/locale/am/torbutton.properties | 7 +
src/chrome/locale/ar/torbutton.dtd | 2 +-
src/chrome/locale/ar/torbutton.properties | 13 ++-
src/chrome/locale/arn/torbutton.properties | 7 +
src/chrome/locale/ast/torbutton.properties | 7 +
src/chrome/locale/az/torbutton.properties | 7 +
src/chrome/locale/be/torbutton.properties | 7 +
src/chrome/locale/bg/torbutton.properties | 7 +
src/chrome/locale/bn-IN/torbutton.properties | 7 +
src/chrome/locale/bn/torbutton.properties | 7 +
src/chrome/locale/bo/torbutton.properties | 7 +
src/chrome/locale/br/torbutton.properties | 7 +
src/chrome/locale/bs/torbutton.properties | 7 +
src/chrome/locale/ca/torbutton.properties | 7 +
src/chrome/locale/cs/torbutton.properties | 7 +
src/chrome/locale/csb/torbutton.properties | 7 +
src/chrome/locale/cy/torbutton.properties | 7 +
src/chrome/locale/da/torbutton.properties | 7 +
src/chrome/locale/de/torbutton.properties | 7 +
src/chrome/locale/dz/torbutton.properties | 7 +
src/chrome/locale/el/torbutton.properties | 7 +
src/chrome/locale/eo/torbutton.properties | 7 +
src/chrome/locale/es/torbutton.properties | 7 +
src/chrome/locale/et/torbutton.properties | 7 +
src/chrome/locale/eu/torbutton.properties | 9 ++-
src/chrome/locale/fa/torbutton.properties | 7 +
src/chrome/locale/fi/torbutton.properties | 7 +
src/chrome/locale/fil/torbutton.properties | 7 +
src/chrome/locale/fo/torbutton.properties | 7 +
src/chrome/locale/fr/torbutton.properties | 13 ++-
src/chrome/locale/fur/torbutton.properties | 7 +
src/chrome/locale/fy/torbutton.properties | 7 +
src/chrome/locale/ga/torbutton.properties | 7 +
src/chrome/locale/gl/torbutton.properties | 7 +
src/chrome/locale/gu/torbutton.properties | 7 +
src/chrome/locale/gun/torbutton.properties | 7 +
src/chrome/locale/ha/torbutton.properties | 7 +
src/chrome/locale/he/torbutton.dtd | 158 +++++++++++++-------------
src/chrome/locale/he/torbutton.properties | 13 ++-
src/chrome/locale/hi/torbutton.properties | 7 +
src/chrome/locale/hr/torbutton.properties | 7 +
src/chrome/locale/ht/torbutton.properties | 7 +
src/chrome/locale/hu/torbutton.properties | 13 ++-
src/chrome/locale/hy/torbutton.properties | 7 +
src/chrome/locale/id/torbutton.properties | 7 +
src/chrome/locale/is/torbutton.properties | 7 +
src/chrome/locale/it/torbutton.properties | 7 +
src/chrome/locale/ja/torbutton.properties | 7 +
src/chrome/locale/jv/torbutton.properties | 7 +
src/chrome/locale/ka/torbutton.properties | 7 +
src/chrome/locale/km/torbutton.properties | 7 +
src/chrome/locale/kn/torbutton.properties | 7 +
src/chrome/locale/ko/torbutton.properties | 7 +
src/chrome/locale/ku/torbutton.properties | 7 +
src/chrome/locale/kw/torbutton.properties | 7 +
src/chrome/locale/ky/torbutton.properties | 7 +
src/chrome/locale/lb/torbutton.properties | 7 +
src/chrome/locale/ln/torbutton.properties | 7 +
src/chrome/locale/lo/torbutton.properties | 7 +
src/chrome/locale/lt/torbutton.properties | 7 +
src/chrome/locale/lv/torbutton.properties | 13 ++-
src/chrome/locale/mg/torbutton.properties | 7 +
src/chrome/locale/mi/torbutton.properties | 7 +
src/chrome/locale/mk/torbutton.properties | 7 +
src/chrome/locale/ml/torbutton.properties | 7 +
src/chrome/locale/mn/torbutton.properties | 7 +
src/chrome/locale/mr/torbutton.properties | 7 +
src/chrome/locale/ms/torbutton.properties | 7 +
src/chrome/locale/mt/torbutton.properties | 7 +
src/chrome/locale/my/torbutton.properties | 7 +
src/chrome/locale/nah/torbutton.properties | 7 +
src/chrome/locale/nap/torbutton.properties | 7 +
src/chrome/locale/nb/torbutton.properties | 7 +
src/chrome/locale/ne/torbutton.properties | 7 +
src/chrome/locale/nl/torbutton.properties | 13 ++-
src/chrome/locale/nn/torbutton.properties | 7 +
src/chrome/locale/nso/torbutton.properties | 7 +
src/chrome/locale/oc/torbutton.properties | 7 +
src/chrome/locale/or/torbutton.properties | 7 +
src/chrome/locale/pa/torbutton.properties | 7 +
src/chrome/locale/pap/torbutton.properties | 7 +
src/chrome/locale/pl/torbutton.properties | 13 ++-
src/chrome/locale/pms/torbutton.properties | 7 +
src/chrome/locale/ps/torbutton.properties | 7 +
src/chrome/locale/pt-BR/torbutton.properties | 7 +
src/chrome/locale/pt/torbutton.properties | 7 +
src/chrome/locale/ro/torbutton.properties | 7 +
src/chrome/locale/ru/torbutton.properties | 7 +
src/chrome/locale/sco/torbutton.properties | 7 +
src/chrome/locale/sk/torbutton.properties | 7 +
src/chrome/locale/sl/torbutton.properties | 7 +
src/chrome/locale/so/torbutton.properties | 7 +
src/chrome/locale/son/torbutton.properties | 7 +
src/chrome/locale/sq/torbutton.properties | 7 +
src/chrome/locale/sr/torbutton.properties | 7 +
src/chrome/locale/st/torbutton.properties | 7 +
src/chrome/locale/su/torbutton.properties | 7 +
src/chrome/locale/sv/torbutton.properties | 49 +++++----
src/chrome/locale/sw/torbutton.properties | 7 +
src/chrome/locale/ta/torbutton.properties | 7 +
src/chrome/locale/te/torbutton.properties | 7 +
src/chrome/locale/tg/torbutton.properties | 7 +
src/chrome/locale/th/torbutton.properties | 7 +
src/chrome/locale/ti/torbutton.properties | 7 +
src/chrome/locale/tk/torbutton.properties | 7 +
src/chrome/locale/tr/torbutton.properties | 7 +
src/chrome/locale/uk/torbutton.properties | 7 +
src/chrome/locale/ur/torbutton.properties | 7 +
src/chrome/locale/ve/torbutton.properties | 7 +
src/chrome/locale/vi/torbutton.properties | 7 +
src/chrome/locale/wa/torbutton.properties | 7 +
src/chrome/locale/wo/torbutton.properties | 7 +
src/chrome/locale/zh-CN/torbutton.properties | 11 ++-
src/chrome/locale/zh-HK/torbutton.properties | 7 +
src/chrome/locale/zh-TW/torbutton.properties | 7 +
src/chrome/locale/zu/torbutton.properties | 7 +
118 files changed, 937 insertions(+), 125 deletions(-)
diff --git a/src/chrome/locale/af/torbutton.properties b/src/chrome/locale/af/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/af/torbutton.properties
+++ b/src/chrome/locale/af/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ak/torbutton.properties b/src/chrome/locale/ak/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ak/torbutton.properties
+++ b/src/chrome/locale/ak/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/am/torbutton.properties b/src/chrome/locale/am/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/am/torbutton.properties
+++ b/src/chrome/locale/am/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ar/torbutton.dtd b/src/chrome/locale/ar/torbutton.dtd
index 8f924ca..b6b30ce 100644
--- a/src/chrome/locale/ar/torbutton.dtd
+++ b/src/chrome/locale/ar/torbutton.dtd
@@ -141,7 +141,7 @@
<!ENTITY torbutton.prefs.engine1 "ixquick.com">
<!ENTITY torbutton.prefs.engine2 "Bing.com">
<!ENTITY torbutton.prefs.engine3 "Yahoo.com">
-<!ENTITY torbutton.prefs.engine4 "startpage.com">
+<!ENTITY torbutton.prefs.engine4 "ØµÙØØ© Ø§ÙØšØ¯Ø§ÙØ©">
<!ENTITY torbutton.prefs.engine5 "duckduckgo.com">
<!ENTITY torbutton.prefs.fix_google_srch "أز٠اÙÙ
ÙØµØ© ÙØ§ÙÙØºØ© Ù
Ù Ø§Ø³ØªÙØ³Ø§Ø±Ø§Øª Ù
ØØ±Ù ØšØØ« ØºÙØºÙ">
<!ENTITY torbutton.prefs.transparentTor "ØŽÙØ§ÙÙØ© ØªÙØ±ÙÙÙÙØŽÙ (ØªØØªØ§Ø¬ Ù
ÙØ¬Ù ØªÙØ± Ø£Ù ØªØ±Ø§ÙØ³ØšÙÙØ³Ù Ù
خصص)">
diff --git a/src/chrome/locale/ar/torbutton.properties b/src/chrome/locale/ar/torbutton.properties
index 008fef1..b3f8df6 100644
--- a/src/chrome/locale/ar/torbutton.properties
+++ b/src/chrome/locale/ar/torbutton.properties
@@ -40,6 +40,13 @@ torbutton.popup.use_tbb = ÙØšØ¯Ù Ø£Ù٠تستخدÙ
زر ØªÙØ± Ù
ع ÙØ§Ùر
torbutton.popup.pref_error = ÙØ§ ÙÙ
ÙÙ ÙØ²Ø± ØªÙØ± ØªØØ¯ÙØ« Ø§ÙØªÙضÙÙØ§Øª ÙÙ Ù
Ø¬ÙØ¯ Ù
ØªØµÙØ ØªÙØ±.
torbutton.popup.permission_denied = ÙØ±Ø¬Ù أ٠تÙÙÙ
ؚتغÙÙØ± Ø§ÙØµÙاØÙات ÙÙ
Ø¬ÙØ¯ Ù
ØªØµÙØ ØªÙØ± Ø£Ù ÙÙ
ØšÙÙÙÙ ÙÙ
ÙØ§Ù آخر.
torbutton.popup.device_full = ÙØšØ¯Ù أ٠اÙÙØ±Øµ Ù
Ù
ØªÙØŠ. ÙØ±Ø¬Ù ØªÙØ³Ùع Ù
Ø³Ø§ØØ© Ø£ÙØ«Ø± Ø£Ù ÙÙ
ØšÙÙÙ Ù
ØªØµÙØ ØªÙØ± Ø¥ÙÙ ÙØØ¯Ø© تخزÙ٠أخرÙ.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.title.prompt_torbrowser = Ù
عÙÙÙ
ات ÙØ§Ù
Ø© Ø¹Ù ØªÙØ±
+torbutton.popup.prompt_torbrowser = ØªØºÙØ±Øª طرÙÙØ© عÙ
٠زر ØªÙØ± Ø§ÙØ§Ù: ÙØ§ ÙÙ
ÙÙ ÙÙ Ø§Ù ØªØ·ÙØ£Ù Ø§ÙØ§Ù \n\nÙÙ
ÙØ§ ØšÙØ°Ø§ Ø§ÙØªØºÙÙØ± ÙØ§ÙÙ Ø§ØµØšØ Ù
Ù ØºÙØ± Ø§ÙØ¢Ù
٠استخداÙ
زر ØªÙØ± Ù٠اÙÙ
ØªØµÙØ اÙÙ ÙØ³ØªØ®Ø¯Ù
ÙÙ Ø§ÙØªØµÙØ Ø®Ø§Ø±Ø¬ ØªÙØ±. ÙØ§Ù ÙÙØ§Ù Ø§ÙØ¹Ø¯Ùد Ù
Ù Ø§ÙØ¹ÙÙ Ù Ø§ÙØªÙ ÙÙ
ÙÙ
ÙÙ Ù
٠اÙÙ
Ù
ÙÙ Ù
Ø¹Ø§ÙØ¬ØªÙا ؚا٠طرÙÙØ© اخرÙ.\n\nإذا اردت Ø§ÙØ§Ø³ØªÙ
رار Ù٠استخداÙ
ÙØ§ÙرÙÙÙØ³ تÙÙÙØ¯ÙØ§ÙØ ÙØªÙجؚ عÙÙÙ Ø¥Ø²Ø§ÙØ© زر ØªÙØ± ٠تØÙ
ÙÙ Ù
جÙ
ÙØ¹Ø© ؚراÙ
ج Ù
ØªØµÙØ ØªÙØ±. ÙÙ
ا ا٠خصا؊ص Ø§ÙØ®ØµÙØµÙØ© ÙÙ
ØªØµÙØ ØªÙØ± تتÙÙ٠عÙ٠تÙÙ Ø§ÙØªÙ ÙÙ Ù
ØªØµÙØ ÙØ§ÙرÙÙÙØ³ Ø§ÙØªÙÙÙØ¯ÙØ ØØªÙ Ù٠تÙ
استخداÙ
Ù
ØªØµÙØ ÙØ§ÙرÙÙÙØ³ Ù
ع زر ØªÙØ±.\n\nÙØ¥Ø²Ø§ÙØ© زر ØªÙØ±Ø ÙÙ
ØšØ§ÙØªÙØ¬Ù Ø£Ø¯ÙØ§Øª - Ø¥Ø¶Ø§ÙØ§Øª - Ù
ØÙÙØ§Øª Ø Ø«Ù
إضغط عÙÙ Ø§ÙØ²Ø± ا
ÙÙ
عÙÙÙ Ø¥Ø²Ø§ÙØ© ؚاÙÙØ±Øš Ù
٠زر ØªÙØ±.
+torbutton.popup.short_torbrowser = Ù
عÙÙÙ
ات ÙØ§Ù
Ø© Ø¹Ù ØªÙØ± \nتÙ
تÙ
ÙÙ٠زر ØªÙØ± ÙÙØ¹Ù
٠ؚاستÙ
رار Ø§ÙØ§Ù\nاضغط عÙ٠زر ØªÙØ± ÙÙÙ
Ø²ÙØ¯ Ù
٠اÙÙ
عÙÙÙ
ات
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/arn/torbutton.properties b/src/chrome/locale/arn/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/arn/torbutton.properties
+++ b/src/chrome/locale/arn/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ast/torbutton.properties b/src/chrome/locale/ast/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ast/torbutton.properties
+++ b/src/chrome/locale/ast/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/az/torbutton.properties b/src/chrome/locale/az/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/az/torbutton.properties
+++ b/src/chrome/locale/az/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/be/torbutton.properties b/src/chrome/locale/be/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/be/torbutton.properties
+++ b/src/chrome/locale/be/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/bg/torbutton.properties b/src/chrome/locale/bg/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/bg/torbutton.properties
+++ b/src/chrome/locale/bg/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/bn-IN/torbutton.properties b/src/chrome/locale/bn-IN/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/bn-IN/torbutton.properties
+++ b/src/chrome/locale/bn-IN/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/bn/torbutton.properties b/src/chrome/locale/bn/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/bn/torbutton.properties
+++ b/src/chrome/locale/bn/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/bo/torbutton.properties b/src/chrome/locale/bo/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/bo/torbutton.properties
+++ b/src/chrome/locale/bo/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/br/torbutton.properties b/src/chrome/locale/br/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/br/torbutton.properties
+++ b/src/chrome/locale/br/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/bs/torbutton.properties b/src/chrome/locale/bs/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/bs/torbutton.properties
+++ b/src/chrome/locale/bs/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ca/torbutton.properties b/src/chrome/locale/ca/torbutton.properties
index ba64026..d511726 100644
--- a/src/chrome/locale/ca/torbutton.properties
+++ b/src/chrome/locale/ca/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = Sembla que el disc és ple. Siusplau allibereu esp
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/cs/torbutton.properties b/src/chrome/locale/cs/torbutton.properties
index 1ee8fec..23890b9 100644
--- a/src/chrome/locale/cs/torbutton.properties
+++ b/src/chrome/locale/cs/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/csb/torbutton.properties b/src/chrome/locale/csb/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/csb/torbutton.properties
+++ b/src/chrome/locale/csb/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/cy/torbutton.properties b/src/chrome/locale/cy/torbutton.properties
index 491ef3b..f78fbb1 100644
--- a/src/chrome/locale/cy/torbutton.properties
+++ b/src/chrome/locale/cy/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/da/torbutton.properties b/src/chrome/locale/da/torbutton.properties
index 0a1d60a..84b21ef 100644
--- a/src/chrome/locale/da/torbutton.properties
+++ b/src/chrome/locale/da/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = Disken ser ud til at vÊre fuld. FrigÞr venligst
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/de/torbutton.properties b/src/chrome/locale/de/torbutton.properties
index 3b0c0a4..1d26d90 100644
--- a/src/chrome/locale/de/torbutton.properties
+++ b/src/chrome/locale/de/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = Es scheint als wÃŒrde die Disk voll sein. Bitte ma
torbutton.title.prompt_torbrowser = Wichtige Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton funktioniert jetzt anders als vorher: es kann nichtmehr abgeschaltet werden.\n\nWir haben diese Ãnderung vorgenommen, da es nicht sicher ist, Torbutton auch in einem Browser zu benutzen, der auch fÃŒr den Betrieb ohne Tor gedacht ist. Es gab zu viele Fehler, die wir sonst nicht hÀtten beheben können.\n\nWenn Sie Firefox weiterhin normal benutzen möchten, sollten Sie Torbutton deinstallieren, und das Tor Browser Bundle runterladen. Die PrivatsphÀre-Einstellungen des Tor Browsers sind auÃerdem denen des normalen Firefox ÃŒberlegen, selbst wenn Firefox mit Torbutton benutzt wird.\n\nUm Torbutton zu entfernen, gehen Sie einfach auf Extras->Add-ons->Erweiterungen und klicken Sie auf Entfernen neben dem Torbutton.
torbutton.popup.short_torbrowser = Wichtige Torbutton Information!\n\nTorbutton ist jetzt immer aktiviert.\n\nKlicken sie auf den Torbutton, um mehr Informationen zu erhalten.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/dz/torbutton.properties b/src/chrome/locale/dz/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/dz/torbutton.properties
+++ b/src/chrome/locale/dz/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/el/torbutton.properties b/src/chrome/locale/el/torbutton.properties
index b8f9327..9e63138 100644
--- a/src/chrome/locale/el/torbutton.properties
+++ b/src/chrome/locale/el/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = ΠΎίÏÎºÎ¿Ï ÏαίΜεÏαι ÏÏι είΜαι
torbutton.title.prompt_torbrowser = ΣηΌαΜÏικÎÏ ÏληÏοÏοÏÎ¯ÎµÏ Î³Î¹Î± Ïο Torbutton
torbutton.popup.prompt_torbrowser = ΀ο Torbutton λειÏοÏ
Ïγεί ΎιαÏοÏεÏικά, ÏÏÏα: ΎεΜ ÎŒÏοÏείÏε ÏλÎοΜ Μα Ïο αÏεΜεÏγοÏοιήÏεÏε\n\nÎ ÏοβήκαΌε Ïε αÏ
Ïή ÏηΜ αλλαγή ΎιÏÏι, ΎεΜ είΜαι αÏÏαλÎÏ ÎœÎ± ÏÏηÏιΌοÏοιείÏαι Ïο Torbutton ÎŒÎÏα αÏÏ ÎΜα ÏεÏιηγηÏή ιÏÏÎ¿Ï Î¿ οÏÎ¿Î¯Î¿Ï ÏÏηÏιΌεÏει και για εÏγαÏÎ¯ÎµÏ ÏÏÏÎ¯Ï ÏηΜ ÏÏήÏη Tor. ÎÎŒÏαΜίζοΜÏαΜ ΎιάÏοÏα ÏÏάλΌαÏα-bugs Ïα οÏοία ΎεΜ ÎŒÏοÏοÏÏαΌε Μα ΎιοÏΞÏÏοÏ
Όε.\n\nÎΜ ΞÎλεÏε Μα εΟακολοÏ
ΞήÏεÏε Μα ÏÏηÏιΌοÏοιείÏε ÏοΜ Firefox καΜοΜικά, Ξα ÏÏÎÏει Μα εγκαÏαÏÏήÏεÏε Ïο Torbutton και Μα κάΜεÏε λήÏη ÏοÏ
ΠακÎÏοÏ
ΊÏ
λλοΌεÏÏηÏή Tor. Îι ιΎιÏÏηÏÎµÏ Î¹ÎŽÎ¹ÏÏικÏÏηÏÎ±Ï ÏοÏ
ΠεÏιηγηÏή Tor είΜαÎ
¹ αΜÏÏεÏÎµÏ Î±ÏÏ ÎµÎºÎµÎ¯ÎœÎµÏ ÏοÏ
αÏÎ»Î¿Ï Firefox, ακÏΌη και ÏÏηΜ ÏεÏίÏÏÏÏη ÏοÏ
ο Firefox ÏÏηÏιΌοÏοιείÏαι Όαζί Όε Ïο Torbutton.\n\nÎια Μα αÏοΌακÏÏΜεÏε Ïο Torbutton, ÏηγαίΜεÏε ÎÏγαλεία->Î ÏÏÏΞεÏα->Extensions και ÏαÏήÏÏε Ïο ÏλήκÏÏο ÎÏοΌάκÏÏ
ΜÏη ÏοÏ
βÏίÏκεÏαι ΎίÏλα αÏÏ Ïο Torbutton.
torbutton.popup.short_torbrowser = ΣηΌαΜÏική ΠληÏοÏοÏία για Ïο Torbutton\n\n΀ο Torbutton είΜαι ÏÏÏα ÏÏ
ΜεÏÏÏ ÎµÎœÎµÏγοÏοιηΌÎΜο.\n\nÎια ÏεÏιÏÏÏÏεÏÎµÏ ÏληÏοÏοÏίεÏ, κάΜεÏε κλικ ÏÏο Torbutton.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/eo/torbutton.properties b/src/chrome/locale/eo/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/eo/torbutton.properties
+++ b/src/chrome/locale/eo/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/es/torbutton.properties b/src/chrome/locale/es/torbutton.properties
index e647c77..8d5eea9 100644
--- a/src/chrome/locale/es/torbutton.properties
+++ b/src/chrome/locale/es/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = El disco parece estar lleno. Por favor libere espa
torbutton.title.prompt_torbrowser = Información importante sobre Torbutton
torbutton.popup.prompt_torbrowser = Torbutton funciona diferente ahora: ya no lo podrá apagar.\n\n\nCambiamos esto porque creemos que no es seguro utilizar Torbutton en un navegador que se utilice para navegar sin Tor. Hubieron demasiados fallos por esto que no podamos arreglar de otra manera.\n\nSi quiere seguir usando Firefox normalmente, deberÃa desinstalar Torbutton y descargar el Tor Browser Bundle. Las propiedades de privacidad de Tor Browser son superiores a las de Firefox, aún cuando éste se use con Torbutton.\n\nPara eliminar Torbutton. vaya a Herramientas->Complementos->Extensiones y haga clic en el botón Eliminar próximo a Torbutton.
torbutton.popup.short_torbrowser = Información importante sobre Torbutton: Torbutton ahora siempre estará encendido. Haga clic en el Torbutton para más información
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/et/torbutton.properties b/src/chrome/locale/et/torbutton.properties
index 4935488..8a87922 100644
--- a/src/chrome/locale/et/torbutton.properties
+++ b/src/chrome/locale/et/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/eu/torbutton.properties b/src/chrome/locale/eu/torbutton.properties
index 581d6ee..dfe7ae5 100644
--- a/src/chrome/locale/eu/torbutton.properties
+++ b/src/chrome/locale/eu/torbutton.properties
@@ -40,6 +40,13 @@ torbutton.popup.use_tbb = Badirudi Torbutton Firefoxekin erabiltzen ari zarela,
torbutton.popup.pref_error = Torbuttonek ezin ditu Tor Browser profilaren direktorioan hobespenak eguneratu.
torbutton.popup.permission_denied = Mesedez berrezarri Tor Browser direktorioaren baimenak edo kopia ezazu beste kokaleku batera.
torbutton.popup.device_full = Diska beteta dago, antza. Mesedez egizu lekua edo mugitu Tor Nabigatzailea gailu berri batera.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
+torbutton.title.prompt_torbrowser = Torbutton informazio garratzitsua
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/fa/torbutton.properties b/src/chrome/locale/fa/torbutton.properties
index 75ddaf8..c278f13 100644
--- a/src/chrome/locale/fa/torbutton.properties
+++ b/src/chrome/locale/fa/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = Ø¯ÛØ³Ú© ØšÙ ÙØžØ± Ù
Û Ø±Ø³Ø¯ ٟر ؎د٠اس
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/fi/torbutton.properties b/src/chrome/locale/fi/torbutton.properties
index dda9d2d..b1914a3 100644
--- a/src/chrome/locale/fi/torbutton.properties
+++ b/src/chrome/locale/fi/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = Levy nÀyttÀisi olevan tÀysi. Vapauta tilaa tai
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/fil/torbutton.properties b/src/chrome/locale/fil/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/fil/torbutton.properties
+++ b/src/chrome/locale/fil/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/fo/torbutton.properties b/src/chrome/locale/fo/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/fo/torbutton.properties
+++ b/src/chrome/locale/fo/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/fr/torbutton.properties b/src/chrome/locale/fr/torbutton.properties
index 759de19..e0a3408 100644
--- a/src/chrome/locale/fr/torbutton.properties
+++ b/src/chrome/locale/fr/torbutton.properties
@@ -40,6 +40,13 @@ torbutton.popup.use_tbb = Il semble que vous utilisez Torbutton avec Firefox, ce
torbutton.popup.pref_error = Torbutton ne peut pas mettre à jour les préférences dans le répertoire du profil du Navigateur Tor.
torbutton.popup.permission_denied = Merci de réinitialiser les permissions du répertoire du Navigateur Tor ou de le copier dans un nouvel emplacement.
torbutton.popup.device_full = Le disque semble être plein. Merci de libérer de la place ou déplacer le Navigateur Tor vers un nouveau périphérique.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.title.prompt_torbrowser = Information importante concernant Torbutton
+torbutton.popup.prompt_torbrowser = Torbutton fonctionne différemment maintenant: vous ne pouvez plus le désactiver.\n\nNous avons effectué ce changement car il n'est pas sûr d'utiliser Torbutton dans un navigateur qui est également utiliser pour une navigation sans Tor. Ils y avaient trop de bugs ne nous pouvions résoudre.\n\nSi vous désirez vous servir de Firefox normalement, vous devriez déinstaller le Torbutton et télécharger Tor Browsser Bundle. Les propriétés de confidentialité de Tor Browser sont supérieures à celles de Firefox, même s'il est utilisé avec TorButton.\n\nPour supprimer Torbutton, allez dans Outils->Modules Complémentaires->Extensions et cliquez le button Supprimer à coté de Torbutton.
+torbutton.popup.short_torbrowser = Information importante concernant Torbutton!\n\nTorbutton est dorénavant toujours activé.\n\nCliquer sur Torbutton pour plus d'informations.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/fur/torbutton.properties b/src/chrome/locale/fur/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/fur/torbutton.properties
+++ b/src/chrome/locale/fur/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/fy/torbutton.properties b/src/chrome/locale/fy/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/fy/torbutton.properties
+++ b/src/chrome/locale/fy/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ga/torbutton.properties b/src/chrome/locale/ga/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ga/torbutton.properties
+++ b/src/chrome/locale/ga/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/gl/torbutton.properties b/src/chrome/locale/gl/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/gl/torbutton.properties
+++ b/src/chrome/locale/gl/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/gu/torbutton.properties b/src/chrome/locale/gu/torbutton.properties
index be2f34c..bee55b0 100644
--- a/src/chrome/locale/gu/torbutton.properties
+++ b/src/chrome/locale/gu/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/gun/torbutton.properties b/src/chrome/locale/gun/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/gun/torbutton.properties
+++ b/src/chrome/locale/gun/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ha/torbutton.properties b/src/chrome/locale/ha/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ha/torbutton.properties
+++ b/src/chrome/locale/ha/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/he/torbutton.dtd b/src/chrome/locale/he/torbutton.dtd
index f002b19..0c22f89 100644
--- a/src/chrome/locale/he/torbutton.dtd
+++ b/src/chrome/locale/he/torbutton.dtd
@@ -1,11 +1,11 @@
<!ENTITY torbutton.prefs.title "×××ך×ת Torbutton">
<!ENTITY torbutton.prefs.display_settings "××Š× ×××ך×ת">
-<!ENTITY torbutton.prefs.display_panel "Display Tor proxy setting in the status bar">
-<!ENTITY torbutton.prefs.panel_format "Status bar display format:">
+<!ENTITY torbutton.prefs.display_panel "××Š× ×××ך×ת Tor proxy ">
+<!ENTITY torbutton.prefs.panel_format "×€×ך×× ×©×ךת ××׊×:">
<!ENTITY torbutton.prefs.panel_text_format "×קס×">
<!ENTITY torbutton.prefs.panel_icon_format "××××§××">
<!ENTITY torbutton.prefs.tor_settings "×××ך×ת ׀ך×קס×">
-<!ENTITY torbutton.prefs.recommended_settings '×שת×ש ××××ך×ת ׀ך××§×¡× ××××׊×ת ×¢××ך ×ךס×ת ×"×€××ך׀×קס" ש××'>
+<!ENTITY torbutton.prefs.recommended_settings '×שת×ש ××××ך×ת ׀ך××§×¡× ××××׊×ת ×¢××ך ×ךסת ×"×€××ך׀×קס" ש××'>
<!ENTITY torbutton.prefs.use_privoxy "×שת×ש ×׀ך×××קס×">
<!ENTITY torbutton.prefs.use_polipo "×שת×ש ××€××××€×">
<!ENTITY torbutton.prefs.custom_settings "×שת×ש ××××ך×ת ׀ך××§×¡× ××××ך×ת ×ך×ש">
@@ -13,79 +13,79 @@
<!ENTITY torbutton.prefs.proxy.host.https "׀ך××§×¡× SSL:">
<!ENTITY torbutton.prefs.proxy.host.ftp "׀ך××§×¡× FTP:">
<!ENTITY torbutton.prefs.proxy.host.gopher "Gopher Proxy:">
-<!ENTITY torbutton.prefs.proxy.host.socks "SOCKS Host:">
+<!ENTITY torbutton.prefs.proxy.host.socks "×××š× SOCKS:">
<!ENTITY torbutton.prefs.proxy.port "×€×ך×:">
-<!ENTITY torbutton.about.title "××××ת ×××Š× ××ך">
-<!ENTITY torbutton.about.version "Version:">
-<!ENTITY torbutton.about.summary "Protects the privacy of your Tor browsing.">
+<!ENTITY torbutton.about.title "××××ת Torbutton">
+<!ENTITY torbutton.about.version "×ךס×:">
+<!ENTITY torbutton.about.summary "××× ×¢× ×׀ך×××ת ×©× ×××שת ×-Tor ש××">
<!ENTITY torbutton.about.code "Code Contributors:">
<!ENTITY torbutton.about.maintainer "Maintainer:">
-<!ENTITY torbutton.about.security_review "Security Review:">
+<!ENTITY torbutton.about.security_review "ס××§×ך ×××××">
<!ENTITY torbutton.about.donate "If you like using Tor, you might consider">
-<!ENTITY torbutton.about.make_donation "making a donation.">
-<!ENTITY torbutton.pref_connection.notice "Disable Torbutton to change these settings.">
+<!ENTITY torbutton.about.make_donation "×תך××">
+<!ENTITY torbutton.pref_connection.notice "×ש×ת ×ת Torbutton ×¢× ×× ×ª ××©× ×ת ×××ך×ת ×××">
<!ENTITY torbutton.pref_connection.more_info "××××¢ × ×סף">
-<!ENTITY torbutton.pref_connection_more_info.title "Help">
-<!ENTITY torbutton.pref_connection_more_info.text "Torbutton is currently enabled. If you would like to change your non-Tor proxy settings, please disable Torbutton and return here. If you would like to change your Tor settings, please use the Torbutton preference window.">
-<!ENTITY torbutton.context_menu.new_identity "New Identity">
+<!ENTITY torbutton.pref_connection_more_info.title "×¢×ך×">
+<!ENTITY torbutton.pref_connection_more_info.text "Torbutton ×€××¢× ×עת. ×× ×ך׊×× × ××©× ×ת ×ת ×××ך×ת ×׀ך××§×¡× ×©××× × ×©× Tor, ×× × ×ש×ת ×ת Torbutton ××××ך ×× ×. ×× ×ך׊×× × ××©× ×ת ×ת ×××ך×ת Tor, ×× × ×שת×ש ××××× ××××ך×ת ×©× Torbutton.">
+<!ENTITY torbutton.context_menu.new_identity "×××ת ××ש×">
<!ENTITY torbutton.context_menu.new_identity_key "I">
-<!ENTITY torbutton.context_menu.toggle "Toggle Tor status">
+<!ENTITY torbutton.context_menu.toggle "××××××£ ××¢×× ××ך">
<!ENTITY torbutton.context_menu.toggle.key "T">
-<!ENTITY torbutton.context_menu.preferences "Preferences...">
+<!ENTITY torbutton.context_menu.preferences "×××ך×ת">
<!ENTITY torbutton.context_menu.preferences.key "P">
-<!ENTITY torbutton.context_menu.about "××××ת ×××Š× ××ך...">
+<!ENTITY torbutton.context_menu.about "××××ת Torbutton...">
<!ENTITY torbutton.context_menu.about.key "A">
-<!ENTITY torbutton.context_menu.cookieProtections "Cookie Protections">
+<!ENTITY torbutton.context_menu.cookieProtections "××× ×ת ×§××§××">
<!ENTITY torbutton.context_menu.cookieProtections.key "C">
-<!ENTITY torbutton.context_menu.copyTor "Copy Tor URL">
+<!ENTITY torbutton.context_menu.copyTor "×עתק ×ת ×-URL ×©× Tor">
<!ENTITY torbutton.context_menu.copyTor.key "p">
-<!ENTITY torbutton.context_menu.openTorTab "Open Tor URL in new Tab">
+<!ENTITY torbutton.context_menu.openTorTab "×€×ª× ×ת ××תך ×©× Tor ××ך××ס××× ××ש×">
<!ENTITY torbutton.context_menu.openTorTab.key "r">
-<!ENTITY torbutton.context_menu.openTorWindow "Open Tor URL in new Window">
+<!ENTITY torbutton.context_menu.openTorWindow "×€×ª× ×ת ××תך ×©× Tor ××××× ××ש">
<!ENTITY torbutton.context_menu.openTorWindow.key "d">
-<!ENTITY torbutton.button.label "×××Š× ××ך">
-<!ENTITY torbutton.button.tooltip "×××¥ ×××× ××ת×× ×ת ×××Š× ××ך">
+<!ENTITY torbutton.button.label "Torbutton">
+<!ENTITY torbutton.button.tooltip "×××¥ ×××× ××ת×× ×ת Torbutton">
<!ENTITY torbutton.prefs.sec_settings "×××ך×ת ×××××">
-<!ENTITY torbutton.prefs.block_thread "Block history reads during Tor (crucial)">
-<!ENTITY torbutton.prefs.block_thwrite "×ס×× ×ת×××ת ×××ס××ך×× ×××× ×ך׊ת ××ך (×××××¥)">
-<!ENTITY torbutton.prefs.block_nthread "Block history reads during Non-Tor (optional)">
-<!ENTITY torbutton.prefs.block_nthwrite "Block history writes during Non-Tor (optional)">
-<!ENTITY torbutton.prefs.clear_history "Clear history on Tor toggle (optional)">
-<!ENTITY torbutton.prefs.clear_cache "Block Tor disk cache and clear all cache on Tor toggle">
-<!ENTITY torbutton.prefs.block_cache "Block disk and memory cache access during Tor">
-<!ENTITY torbutton.prefs.cookie_jars "Store Non-Tor cookies in a protected jar">
-<!ENTITY torbutton.prefs.cookie_protection "Use the Cookie Protections Dialog to choose">
-<!ENTITY torbutton.prefs.mmm_cookies "I will manually manage my cookies (dangerous)">
-<!ENTITY torbutton.prefs.clear_cookies "Clear cookies on Tor toggle">
-<!ENTITY torbutton.prefs.disable_plugins "Disable plugins during Tor usage (crucial)">
-<!ENTITY torbutton.prefs.kill_bad_js "Hook dangerous javascript (crucial)">
+<!ENTITY torbutton.prefs.block_thread "×ס×× ×§×š×××ת ××ס××ך×× ××××× ×ש×××ש ×-Tor (××ך××¢)">
+<!ENTITY torbutton.prefs.block_thwrite "×ס×× ×ת×××ת ×××ס××ך×× ×××× ×ך׊ת Tor (×××××¥)">
+<!ENTITY torbutton.prefs.block_nthread "×ס×× ×§×š××ת ××ס××ך×× ×××× ××××©× ×š×××× (××׀׊××× ××)">
+<!ENTITY torbutton.prefs.block_nthwrite "×ס×× ×ת×××ת ××ס××ך×× ×××× ××××©× ×š×××× (××׀׊××× ××)">
+<!ENTITY torbutton.prefs.clear_history "× ×§× ××ס××ך×× ×××ך Toggle (××׀׊××× ××)">
+<!ENTITY torbutton.prefs.clear_cache "×ס×× ×ת ××××× ××סק Tor ××× ×§×ת ×ת ×× ×××××× Toggle Tor">
+<!ENTITY torbutton.prefs.block_cache "×ס×× ×××©× ×××סק ××××××× ×××× ×©×××ש ×-Tor">
+<!ENTITY torbutton.prefs.cookie_jars " ×××¡× ×§××§×× ×š××××× ×××× ×">
+<!ENTITY torbutton.prefs.cookie_protection "××ך ×ת׀ך×× ××× ×ª ××§××§×× ×¢× ×× ×ª ××××ך">
+<!ENTITY torbutton.prefs.mmm_cookies "×× × ×× ×× ××× ×ת ×ת ××§××§×× ×©×× (×ס×××)">
+<!ENTITY torbutton.prefs.clear_cookies "× ×§× ×¢××××ת ×¢× Tor toggle">
+<!ENTITY torbutton.prefs.disable_plugins "×ש×ת ×€××××× ×× ×××× ×©×××ש ×-Tor (×××ת×)">
+<!ENTITY torbutton.prefs.kill_bad_js "×תך סקך××€××× ×ס××× ×× (×××ת×)">
<!ENTITY torbutton.prefs.isolate_content "Isolate dynamic content to Tor state (crucial)">
-<!ENTITY torbutton.prefs.no_updates "Disable updates during Tor usage">
-<!ENTITY torbutton.prefs.set_uagent "Set user agent for Tor usage (crucial)">
-<!ENTITY torbutton.prefs.dynamic "Dynamic Content">
-<!ENTITY torbutton.prefs.cookies "×¢××××ת">
-<!ENTITY torbutton.prefs.cache "Cache">
+<!ENTITY torbutton.prefs.no_updates "×ש×ת ×¢×××× ×× ×××× ×©×××ש ×-Tor">
+<!ENTITY torbutton.prefs.set_uagent "×××ךת ס××× ×שת×ש ×¢××ך ש×××ש Tor (×××× ×)">
+<!ENTITY torbutton.prefs.dynamic "ת××× ××× ×××">
+<!ENTITY torbutton.prefs.cookies "×§××§××">
+<!ENTITY torbutton.prefs.cache "×××××">
<!ENTITY torbutton.prefs.history "××ס××ך××">
-<!ENTITY torbutton.prefs.no_search "Disable search suggestions during Tor (recommended)">
+<!ENTITY torbutton.prefs.no_search "×ש×ת ×׊ע×ת ×××€×ש ×-Tor (×××××¥)">
<!ENTITY torbutton.prefs.shutdown "×××××">
-<!ENTITY torbutton.prefs.tor_shutdown "Clear Tor cookies during Tor-enabled browser shutdown">
-<!ENTITY torbutton.prefs.all_shutdown "Clear cookies during any browser shutdown">
-<!ENTITY torbutton.prefs.no_shutdown "Do not clear my cookies at shutdown">
-<!ENTITY torbutton.prefs.disable_sessionstore "Disable Session Saving (recommended)">
-<!ENTITY torbutton.prefs.headers "Headers">
-<!ENTITY torbutton.prefs.spoof_english "Spoof US English Browser">
-<!ENTITY torbutton.prefs.refererspoofing "Referer spoofing">
+<!ENTITY torbutton.prefs.tor_shutdown "×××§ ×§××§×× ×©× Tor ×ס××ךת×">
+<!ENTITY torbutton.prefs.all_shutdown "× ×§× ×§××§×× ××××× ×¡×××š× ×©× ×× ××€××€×">
+<!ENTITY torbutton.prefs.no_shutdown "×× ×ª× ×§× ×ת ××§××§×× ×©×× ×××× ×¡××ךת ×××€××€×">
+<!ENTITY torbutton.prefs.disable_sessionstore "××××× ×©××ךת ×××©× (×××××¥)">
+<!ENTITY torbutton.prefs.headers "××תך×ת">
+<!ENTITY torbutton.prefs.spoof_english '××€××€× ×× ×××ת ×××××£ ×ך×"×'>
+<!ENTITY torbutton.prefs.refererspoofing "××××£ Referer">
<!ENTITY torbutton.prefs.spoofblank "Spoof blank referer during Tor usage (may break some sites)">
-<!ENTITY torbutton.prefs.smartspoof "Smart referer spoof during Tor usage (spoofs cross domain referers)">
+<!ENTITY torbutton.prefs.smartspoof "×××××£ referer ××× ××××× ×©×××ש ××ך (×ש×××× ×××××£ ׊××× ××××××)">
<!ENTITY torbutton.prefs.nospoof "No referer spoof during Tor usage (sends referers as normal)">
<!ENTITY torbutton.prefs.disable_domstorage "Disable DOM Storage during Tor usage (crucial)">
-<!ENTITY torbutton.prefs.forms "Forms">
-<!ENTITY torbutton.prefs.block_tforms "Block password+form saving during Tor (recommended)">
-<!ENTITY torbutton.prefs.block_ntforms "Block password+form saving during Non-Tor (optional)">
+<!ENTITY torbutton.prefs.forms "×׀ס××">
+<!ENTITY torbutton.prefs.block_tforms "×ס×× ×©×××š× ×©× ×¡×ס×××ת ××׀ס×× ××××× Tor (×××××¥)">
+<!ENTITY torbutton.prefs.block_ntforms "×ס×× ×©×××š× ×©× ×¡×ס×××ת ××׀ס×× ××××× ×©×××ש ש××× × ×©× Tor (×××××¥)">
<!ENTITY torbutton.prefs.tor "Tor">
-<!ENTITY torbutton.prefs.non_tor "Non-Tor">
+<!ENTITY torbutton.prefs.non_tor "×× ×©× Tor">
<!ENTITY torbutton.prefs.restore_tor "On session restored startup, set Tor state to:">
-<!ENTITY torbutton.prefs.startup_tor "On browser startup, set Tor state to:">
+<!ENTITY torbutton.prefs.startup_tor "×××€×¢×ת ×××€××€×, ×§××¢ ×ת ×××Š× ×©× Tor ×:">
<!ENTITY torbutton.prefs.reload_crashed_jar "Reload cookie jar/clear cookies on Firefox crash (recommended)">
<!ENTITY torbutton.prefs.dual_cookie_jars "Store both Tor and Non-Tor cookies in protected jars (dangerous)">
<!ENTITY torbutton.prefs.clear_http_auth "Clear HTTP auth sessions (recommended)">
@@ -99,44 +99,44 @@
<!ENTITY torbutton.prefs.locked_mode "Disable Button and Hotkeys to prevent accidental toggle">
<!ENTITY torbutton.prefs.startup_state "On normal startup, set Tor state to:">
<!ENTITY torbutton.prefs.shutdown_state "Shutdown state">
-<!ENTITY torbutton.prefs.startup "Startup">
-<!ENTITY torbutton.prefs.block_tor_file_net "Block Tor access to network from file:// urls (recommended)">
-<!ENTITY torbutton.prefs.block_nontor_file_net "Block Non-Tor access to network from file:// urls">
-<!ENTITY torbutton.prefs.restore_defaults "Restore Defaults">
-<!ENTITY torbutton.prefs.test_settings "Test Settings">
+<!ENTITY torbutton.prefs.startup "××€×¢××">
+<!ENTITY torbutton.prefs.block_tor_file_net "×ס×× ××שת Tor ×ךשת ××ת×××ת file:// (×××××¥)">
+<!ENTITY torbutton.prefs.block_nontor_file_net "×ס×× ×××©× ×× ×©× Tor ×ךשת ××ת×××ת file://">
+<!ENTITY torbutton.prefs.restore_defaults "×××š× ××ך×ךת ××××">
+<!ENTITY torbutton.prefs.test_settings "××× ×××ך×ת">
<!ENTITY torbutton.prefs.test_auto "Test my Tor settings after the first time I toggle on every Firefox start">
<!ENTITY torbutton.prefs.disable_livemarks "Disable livemarks updates during Tor usage">
-<!ENTITY torbutton.prefs.tor_memory_jar "Do not write Tor cookies to disk">
-<!ENTITY torbutton.prefs.nontor_memory_jar "Do not write Non-Tor cookies to disk">
+<!ENTITY torbutton.prefs.tor_memory_jar "×× ×ª×ת×× ×§××§×× ×©× Tor ×××סק ×קש××">
+<!ENTITY torbutton.prefs.nontor_memory_jar "×× ×ª×ת×× ×§××§×× ×× ×©× Tor ×××סק ×קש××">
<!ENTITY torbutton.prefs.session_restore "Have the session store save and restore these tabs:">
-<!ENTITY torbutton.prefs.nontor_tabs "Tabs loaded in Non-Tor">
-<!ENTITY torbutton.prefs.tor_tabs "Tabs loaded in Tor">
+<!ENTITY torbutton.prefs.nontor_tabs "×ך××ס××ת ××¢×× ×ת ×× ×-Tor">
+<!ENTITY torbutton.prefs.tor_tabs "×ך××ס××ת ××¢×× ×ת ×-Tor">
<!ENTITY torbutton.prefs.socks_vfour "SOCKS v4">
<!ENTITY torbutton.prefs.socks_vfive "SOCKS v5">
-<!ENTITY torbutton.prefs.no_proxies_on "No Proxies for: ">
+<!ENTITY torbutton.prefs.no_proxies_on "××× ×€×š×קס×× ×¢××ך:">
<!ENTITY torbutton.prefs.no_proxy_warning "Warning: Avoid using any hostnames above">
<!ENTITY torbutton.prefs.spoofreresh "Spoof Refresh">
<!ENTITY torbutton.prefs.refereroptions "Referer Spoofing Options">
-<!ENTITY torbutton.prefs.nospoof "Do not spoof referer">
+<!ENTITY torbutton.prefs.nospoof "×× ×××××£ ××€× × ××××× ×©×××ש ת×ך (ש××× ×ש××××× ×ך×××)">
<!ENTITY torbutton.prefs.spoofroot "Spoof the containing folder of the page">
<!ENTITY torbutton.prefs.spoofdomain "Spoof the domain as referer">
<!ENTITY torbutton.prefs.spoofblank "Make referer blank">
-<!ENTITY torbutton.cookiedialog.title "Manage Cookie Protections">
-<!ENTITY torbutton.cookiedialog.lockCol "Protected">
+<!ENTITY torbutton.cookiedialog.title "× ×× ××× ×ת ×§××§××">
+<!ENTITY torbutton.cookiedialog.lockCol "××××">
<!ENTITY torbutton.cookiedialog.domainCol "Host">
-<!ENTITY torbutton.cookiedialog.nameCol "Name">
-<!ENTITY torbutton.cookiedialog.pathCol "Path">
-<!ENTITY torbutton.cookiedialog.protectCookie "Protect Cookie">
-<!ENTITY torbutton.cookiedialog.removeCookie "Remove Cookie">
-<!ENTITY torbutton.cookiedialog.unprotectCookie "Unprotect Cookie">
-<!ENTITY torbutton.cookiedialog.removeAllBut "Remove All But Protected">
-<!ENTITY torbutton.cookiedialog.saveAllCookies "Protect New Cookies">
-<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "Do Not Protect New Cookies">
+<!ENTITY torbutton.cookiedialog.nameCol "ש×">
+<!ENTITY torbutton.cookiedialog.pathCol "××¢×ך">
+<!ENTITY torbutton.cookiedialog.protectCookie "××× ×¢× ××§××§×">
+<!ENTITY torbutton.cookiedialog.removeCookie "×××§ ×ת ××§××§×">
+<!ENTITY torbutton.cookiedialog.unprotectCookie "×× ×ª×× ×¢× ××§××§×">
+<!ENTITY torbutton.cookiedialog.removeAllBut "×××§ ×ת ×× ××§××§×× ××× ×××× ××">
+<!ENTITY torbutton.cookiedialog.saveAllCookies "××× ×¢× ×§××§×× ××ש××">
+<!ENTITY torbutton.cookiedialog.doNotSaveAllCookies "×× ×ª×× ×¢× ×§××§×× ××ש××">
<!ENTITY torbutton.prefs.disable_livemarks "Disable Livemark updates during Tor usage">
-<!ENTITY torbutton.prefs.dtd_recommended "(recommended)">
-<!ENTITY torbutton.prefs.dtd_optional "(optional)">
-<!ENTITY torbutton.prefs.dtd_crucial "(crucial)">
-<!ENTITY torbutton.prefs.update_torbutton_via_tor "Redirect Torbutton updates through Tor">
+<!ENTITY torbutton.prefs.dtd_recommended "(×××××¥)">
+<!ENTITY torbutton.prefs.dtd_optional "(××׀׊××× ××)">
+<!ENTITY torbutton.prefs.dtd_crucial "(×××ת×)">
+<!ENTITY torbutton.prefs.update_torbutton_via_tor "×××š× ×¢×××× ×× ×-Torbutton ××š× Tor">
<!ENTITY torbutton.prefs.dodge_google_captcha "Automatically use an alternate search engine when presented with a Google Captcha:">
<!ENTITY torbutton.prefs.engine1 "ixquick.com">
<!ENTITY torbutton.prefs.engine2 "Bing.com">
diff --git a/src/chrome/locale/he/torbutton.properties b/src/chrome/locale/he/torbutton.properties
index ff436e4..3512105 100644
--- a/src/chrome/locale/he/torbutton.properties
+++ b/src/chrome/locale/he/torbutton.properties
@@ -40,6 +40,13 @@ torbutton.popup.use_tbb = × ×š×× ×©××ª× ×שת×ש ×-Torbutton ×¢× ×€××
torbutton.popup.pref_error = Torbutton ××× × ×××× ××¢××× ×ת ×××¢××€×ת ×ת××§×ת ×׀ך××€××.
torbutton.popup.permission_denied = ×× × ×§××¢ ×ךש××ת ××ש×ת ×ת××§××× ×× × ××Š× ××€××€× Tor ×× ×עתק ×××ª× ××××§×× ××ש.
torbutton.popup.device_full = ×××סק × ×š×× ××× ×©×× ××ס×× ×€× ××. ×× × ×€× × ××§×× ×× ××¢×ך ×ת ××€××€× Tor ××××§×× ××ש.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.title.prompt_torbrowser = ××××¢ Torbutton ×ש××
+torbutton.popup.prompt_torbrowser = Torbutton ×¢×ש×× ×¢××× ××ךת: ××-×׀שך ××××ת ×××ª× ××תך. עש×× × ×ת ×ש×× ×× ××× ×× ×× ×× ×××× ××שת×ש ×-Torbutton ×××€××€× ×©×ת×ש×× ×× ×× ×š×§ ×-Tor. ××× ××תך ×××× ××××× ×©×× ××××× × ××ª×§× ×ש×× ××š× ××ךת. ×× ×ך׊×× ×× ×××ש×× ×ש×××ש ך××× ××€××ך׀×קס, ×¢×××× ××ס×ך ×ת Torbutton ××××ך×× ×ת Tor Browser Bundle. ×××€××× × ×׀ך×××ת ×©× Tor Browser ××¢×××× ××××€××× × ×׀ך×××ת ×ך××××× ×©× ×€××ך׀×קס, ××€××× ×× ×€××ך׀×קס ×ש×××ש ××× ×¢× Torbutton. ××סךת Torbutton, ××©× ×××××âת×ס׀×תâ×ך×××ת ××× ×××Š× ×¢× ×׀ת×ך ×××¡×š× ××× ×-Torbutton.
+torbutton.popup.short_torbrowser = ××××¢ ×ש×× ×¢× Torbutton!\nTorbutton ×¢×ש×× ×€××¢× ×ª×××.\n×××Š× ×¢× ×-Torbutton ×××××¢ × ×סף.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/hi/torbutton.properties b/src/chrome/locale/hi/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/hi/torbutton.properties
+++ b/src/chrome/locale/hi/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/hr/torbutton.properties b/src/chrome/locale/hr/torbutton.properties
index 53e081a..0e17809 100644
--- a/src/chrome/locale/hr/torbutton.properties
+++ b/src/chrome/locale/hr/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ht/torbutton.properties b/src/chrome/locale/ht/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ht/torbutton.properties
+++ b/src/chrome/locale/ht/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/hu/torbutton.properties b/src/chrome/locale/hu/torbutton.properties
index f0ed90f..2307a95 100644
--- a/src/chrome/locale/hu/torbutton.properties
+++ b/src/chrome/locale/hu/torbutton.properties
@@ -40,6 +40,13 @@ torbutton.popup.use_tbb = Ãgy tűnik, hogy jelenleg Torbutton-t használ Firefo
torbutton.popup.pref_error = A Torbutton nem tudja frissÃteni a beállÃtásokat a Tor böngészÅ profil könyvtárában.
torbutton.popup.permission_denied = KérjÃŒk, vagy állÃtsa vissza a jogosultságokat a Tor Browser könyvtárhoz, vagy másolja azt egy új helyre.
torbutton.popup.device_full = Ãgy tűnik, hogy a lemez megtelt. KérjÃŒk, szabadÃtson fel helyet, vagy helyezze át a Tor Browser-t egy másik háttértárolóra.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.title.prompt_torbrowser = Fontos Torbutton információ
+torbutton.popup.prompt_torbrowser = A Torbutton most már másképp működik: nem kapcsolható ki többé.\n\nAzért hoztok ezt a döntést, mert nem biztonságos egy olyan böngészÅbÅl Torbuttont használni, amely Tor használatán kÃvÃŒli is böngészésre használt. Túl soh hiba történhet, amit másképp nem tudunk javÃtani.\n\nHa szeretné a Firefox-ot normálisan használni, akkor a Torbutton-t el kell távolÃtania, és helyette letölteni a Tor BöngészÅ Csomagot. Az adatvédelmi beállÃtásai a Tor BöngészÅnek továbbá magasabbak, mint a normális Firefox-nak, még akkor is, ha a Firefox Torbutton-nal kerÃŒlt egyÃŒtt felhasználásra.\n\nA Torbutton eltávolÃtásához navigáljon az Eszközök>KiegészÃtÅk>Kiterjesztések menÃŒpontba., majd nyomja meg az EltávolÃtás gombot a Torbutton mellett.
+torbutton.popup.short_torbrowser = Fontos Torbutton információ!\n\na Torbutton most már mindig engedélyezett.\n\nKattintson a Torbutton-ra további információkért.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/hy/torbutton.properties b/src/chrome/locale/hy/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/hy/torbutton.properties
+++ b/src/chrome/locale/hy/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/id/torbutton.properties b/src/chrome/locale/id/torbutton.properties
index 827a7c9..75940d3 100644
--- a/src/chrome/locale/id/torbutton.properties
+++ b/src/chrome/locale/id/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = Disk tampaknya sudah penuh. Harap kosongkan tempat
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/is/torbutton.properties b/src/chrome/locale/is/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/is/torbutton.properties
+++ b/src/chrome/locale/is/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/it/torbutton.properties b/src/chrome/locale/it/torbutton.properties
index e7f37c8..a123224 100644
--- a/src/chrome/locale/it/torbutton.properties
+++ b/src/chrome/locale/it/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = Sembra che il disco sia pieno. Liberare spazio o s
torbutton.title.prompt_torbrowser = Informazioni importanti su Torbutton
torbutton.popup.prompt_torbrowser = Torbutton ora funziona in modo diverso: non Ú possibile disabilitarlo.\n\nQuesto cambiamento Ú stato apportato poiché risulta poco sicuro utilizzare Torbutton in un browser utilizzato anche senza di esso. Ci sono alcuni problemi critici che non Ú possibile risolvere in un modo diverso da questo.\n\nSe si desidera utilizzare Firefox normalmente (senza, quindi, Torbutton) Ú necessario disinstallare manualmente Torbutton ed installare Tor Browser Bundle. Le impostazioni per la privacy, inoltre, sono superiori su Tor Browser rispetto ad una normale installazione di Firefox, anche quando quest'ultimo Ú utilizzato con Torbutton.\n\nPer rimuovere Torbutton, andare in Strumenti -> Componenti aggiuntivi -> Estensioni e cliccare sul pulsante Disinstalla per Torbutton.
torbutton.popup.short_torbrowser = Informazioni importanti su Torbutton!\n\nTorbutton ora Ú sempre abilitato.\n\nClicca su Torbutton per ulteriori informazioni.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ja/torbutton.properties b/src/chrome/locale/ja/torbutton.properties
index e98759b..c13a160 100644
--- a/src/chrome/locale/ja/torbutton.properties
+++ b/src/chrome/locale/ja/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = èšæ¶è£
眮ã®ç©ºã容éãäžè¶³ããŠãã
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/jv/torbutton.properties b/src/chrome/locale/jv/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/jv/torbutton.properties
+++ b/src/chrome/locale/jv/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ka/torbutton.properties b/src/chrome/locale/ka/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ka/torbutton.properties
+++ b/src/chrome/locale/ka/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/km/torbutton.properties b/src/chrome/locale/km/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/km/torbutton.properties
+++ b/src/chrome/locale/km/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/kn/torbutton.properties b/src/chrome/locale/kn/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/kn/torbutton.properties
+++ b/src/chrome/locale/kn/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ko/torbutton.properties b/src/chrome/locale/ko/torbutton.properties
index 32f11ce..ab184a3 100644
--- a/src/chrome/locale/ko/torbutton.properties
+++ b/src/chrome/locale/ko/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = ìŽ ëì€í¬ë ê°ë ì°¬ ê² ê°ìµëë€. ë¹
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ku/torbutton.properties b/src/chrome/locale/ku/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ku/torbutton.properties
+++ b/src/chrome/locale/ku/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/kw/torbutton.properties b/src/chrome/locale/kw/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/kw/torbutton.properties
+++ b/src/chrome/locale/kw/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ky/torbutton.properties b/src/chrome/locale/ky/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ky/torbutton.properties
+++ b/src/chrome/locale/ky/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/lb/torbutton.properties b/src/chrome/locale/lb/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/lb/torbutton.properties
+++ b/src/chrome/locale/lb/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ln/torbutton.properties b/src/chrome/locale/ln/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ln/torbutton.properties
+++ b/src/chrome/locale/ln/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/lo/torbutton.properties b/src/chrome/locale/lo/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/lo/torbutton.properties
+++ b/src/chrome/locale/lo/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/lt/torbutton.properties b/src/chrome/locale/lt/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/lt/torbutton.properties
+++ b/src/chrome/locale/lt/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/lv/torbutton.properties b/src/chrome/locale/lv/torbutton.properties
index 620e159..4a44026 100644
--- a/src/chrome/locale/lv/torbutton.properties
+++ b/src/chrome/locale/lv/torbutton.properties
@@ -40,6 +40,13 @@ torbutton.popup.use_tbb = Å Ä·iet, ka strÄdÄjot ar Firefox lietojat Torbutton,
torbutton.popup.pref_error = Torbutton nespÄj atjauninÄt preferences PÄrlÅ«ka Tor profila direktorijÄ.
torbutton.popup.permission_denied = LÅ«dzu vai nu atiestatiet pÄrlÅ«ka Tor direktorijas atÄŒaujas, vai arÄ« kopÄjiet to uz jaunu vietu.
torbutton.popup.device_full = Å Ä·iet, ka cietais disks ir pilns. LÅ«dzu, atbrÄ«vojiet vietu uz diska vai pÄrvietojiet pÄrlÅ«ku Tor uz citu ierÄ«ci.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.title.prompt_torbrowser = SvarÄ«ga Torbutton informÄcija
+torbutton.popup.prompt_torbrowser = Torbutton tagad strÄdÄ citÄdÄk: to vairs nevarat izslÄgt.\n\nMÄs izdarÄ«jÄm Å¡o izmaiÅu jo nav droÅ¡i izmantot Torbutton pÄrlÅ«kÄ, kurÅ¡ tiek arÄ« izmantots pÄrlÅ«koÅ¡anai, kas neizmanto Tor. VienkÄrÅ¡i bija pÄrÄk daudz kČūdu, kuras mÄs savÄdÄk nevarÄjÄm labot.\n\nJa vÄlaties turpinÄt izmantot Firefox kÄ ierasts, atinstalÄjiet Torbutton un lejupielÄdÄjiet Tor Browser Bundle. Tor Browser privÄtuma rekvizÄ«ti ir svarÄ«gÄki nekÄ Firefox rekvizÄ«ti, pat tad ja Firefox tiek izmantots ar Torbutton.\n\nLai nonÄmtu Torbutton, izvÄlieties Tools->Addons->Extensions un klikšķiniet uz Remove pogu, kura atrodas blakus Torbutton.
+torbutton.popup.short_torbrowser = SvarÄ«ga Torbutton informÄcija!\n\nTorbutton tagad ir iespÄjots vienmÄr.\n\nNoklikšķiniet uz Torbutton, lai saÅemtu papildu informÄciju.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/mg/torbutton.properties b/src/chrome/locale/mg/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/mg/torbutton.properties
+++ b/src/chrome/locale/mg/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/mi/torbutton.properties b/src/chrome/locale/mi/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/mi/torbutton.properties
+++ b/src/chrome/locale/mi/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/mk/torbutton.properties b/src/chrome/locale/mk/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/mk/torbutton.properties
+++ b/src/chrome/locale/mk/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ml/torbutton.properties b/src/chrome/locale/ml/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ml/torbutton.properties
+++ b/src/chrome/locale/ml/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/mn/torbutton.properties b/src/chrome/locale/mn/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/mn/torbutton.properties
+++ b/src/chrome/locale/mn/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/mr/torbutton.properties b/src/chrome/locale/mr/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/mr/torbutton.properties
+++ b/src/chrome/locale/mr/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ms/torbutton.properties b/src/chrome/locale/ms/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ms/torbutton.properties
+++ b/src/chrome/locale/ms/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/mt/torbutton.properties b/src/chrome/locale/mt/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/mt/torbutton.properties
+++ b/src/chrome/locale/mt/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/my/torbutton.properties b/src/chrome/locale/my/torbutton.properties
index e005bc0..a577f71 100644
--- a/src/chrome/locale/my/torbutton.properties
+++ b/src/chrome/locale/my/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = Disk ááŒááºá·áá±áá¯á¶áá±á«áºá
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/nah/torbutton.properties b/src/chrome/locale/nah/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/nah/torbutton.properties
+++ b/src/chrome/locale/nah/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/nap/torbutton.properties b/src/chrome/locale/nap/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/nap/torbutton.properties
+++ b/src/chrome/locale/nap/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/nb/torbutton.properties b/src/chrome/locale/nb/torbutton.properties
index 7fd5f1c..c8b32f2 100644
--- a/src/chrome/locale/nb/torbutton.properties
+++ b/src/chrome/locale/nb/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ne/torbutton.properties b/src/chrome/locale/ne/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ne/torbutton.properties
+++ b/src/chrome/locale/ne/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/nl/torbutton.properties b/src/chrome/locale/nl/torbutton.properties
index 611807a..1c1682a 100644
--- a/src/chrome/locale/nl/torbutton.properties
+++ b/src/chrome/locale/nl/torbutton.properties
@@ -40,6 +40,13 @@ torbutton.popup.use_tbb = Het lijkt er op dat je Torbutton met Firefox gebruikt,
torbutton.popup.pref_error = Torbutton kan instellingen niet bijwerken in de Tor Browser profiel folder.
torbutton.popup.permission_denied = Stel de rechten van de Tor Browser folder opnieuw in of kopieer deze naar een nieuwe lokatie.
torbutton.popup.device_full = De schijf lijkt vol te zijn. Maak ruimte vrij of verplaats Tor Browser naar een nieuw apparaat.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.title.prompt_torbrowser = Belangrijke Torbutton informatie
+torbutton.popup.prompt_torbrowser = Torbutton werkt nu anders: je kan het niet meer uitzetten.\n\nWe hebben deze verandering doorgevoerd, omdat het niet veilig is om Torbutton te gebruiken in een browser welke ook gebruikt wordt voor niet-Tor browsen. Er zaten teveel fouten in welke we niet konden repareren op een andere manier.\n\nAls je Firefox wilt blijven gebruiken op de normale manier, dan zal je Torbutten moeten deinstalleren en de Tor Browser Bundle moeten downloaden. De privacy eigenschappen van Tor Browser zijn ook superieur ten opzichte van de normale Firefox, zelfs wanneer Firefox gebruikt wordt met Torbutton.\n\nOm Torbutton te verwijderen, ga naar Extra->Add-ons->Extensies en klik dan op de knop Uitschakelen naast Torbutton.
+torbutton.popup.short_torbrowser = Belangrijke Torbutton Informatie!\n\nTorbutten is nu altijd ingeschakeld.\n\nKlik op de Torbutton voor meer informatie.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/nn/torbutton.properties b/src/chrome/locale/nn/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/nn/torbutton.properties
+++ b/src/chrome/locale/nn/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/nso/torbutton.properties b/src/chrome/locale/nso/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/nso/torbutton.properties
+++ b/src/chrome/locale/nso/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/oc/torbutton.properties b/src/chrome/locale/oc/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/oc/torbutton.properties
+++ b/src/chrome/locale/oc/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/or/torbutton.properties b/src/chrome/locale/or/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/or/torbutton.properties
+++ b/src/chrome/locale/or/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/pa/torbutton.properties b/src/chrome/locale/pa/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/pa/torbutton.properties
+++ b/src/chrome/locale/pa/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/pap/torbutton.properties b/src/chrome/locale/pap/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/pap/torbutton.properties
+++ b/src/chrome/locale/pap/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/pl/torbutton.properties b/src/chrome/locale/pl/torbutton.properties
index b08c088..93573ac 100644
--- a/src/chrome/locale/pl/torbutton.properties
+++ b/src/chrome/locale/pl/torbutton.properties
@@ -40,6 +40,13 @@ torbutton.popup.use_tbb = WyglÄ
da na to, ÅŒe uÅŒywasz Torbuttona z Firefoksem,
torbutton.popup.pref_error = Torbutton nie moÅŒe zaktualizowaÄ preferencji w katalogu profilowym PrzeglÄ
darki Tora.
torbutton.popup.permission_denied = ProszÄ albo ponownie ustawiÄ uprawnienia do katalogu PrzeglÄ
darki Tora albo skopiowaÄ go w nowe miejsce.
torbutton.popup.device_full = Dysk zdaje siÄ byÄ peÅny. ProszÄ zwolniÄ miejsce lub przenieÅÄ PrzeglÄ
darkÄ Tora na nowe urzÄ
dzenie.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
-torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.title.prompt_torbrowser = WaÅŒne informacje o Torbuttonie
+torbutton.popup.prompt_torbrowser = Torbutton teraz dziaÅa inaczej: nie moÅŒna juÅŒ go wyÅÄ
czyÄ.\n\nZrobiliÅmy tÄ zmianÄ, gdyÅŒ nie jest bezpiecznie uÅŒywaÄ Torbuttona w przeglÄ
darce uÅŒywanej takÅŒe do przeglÄ
dania sieci bez Tora. ByÅo za duÅŒo bÅÄdów, których nie mogliÅmy naprawiÄ inaczej.\n\nJeÅli chcesz dalej normalnie uÅŒywaÄ Firefoksa, odinstaluj Torbutton i pobierz PaczkÄ Tora z PrzeglÄ
darkÄ
. Cechy prywatnoÅci w PrzeglÄ
darce Tora sÄ
lepsze od tych w normalnym Firefoksie, nawet gdy jest uÅŒywany z Torbutonem.\n\nAby usunÄ
Ä Torbuttona, wejdź do NarzÄdzia->Dodatki->Rozszerzenia i kliknij przycisk UsuÅ obok Torbuttona.
+torbutton.popup.short_torbrowser = WaÅŒne informacje o Torbuttonie!\n\nTorbutton jest teraz ciÄ
gle wÅÄ
czony.\n\nKliknij Turbutton, aby dowiedzieÄ siÄ wiÄcej.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/pms/torbutton.properties b/src/chrome/locale/pms/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/pms/torbutton.properties
+++ b/src/chrome/locale/pms/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ps/torbutton.properties b/src/chrome/locale/ps/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ps/torbutton.properties
+++ b/src/chrome/locale/ps/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/pt-BR/torbutton.properties b/src/chrome/locale/pt-BR/torbutton.properties
index 5611b9a..9f9641e 100644
--- a/src/chrome/locale/pt-BR/torbutton.properties
+++ b/src/chrome/locale/pt-BR/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = Este disco parece estar cheio. Por favor, libere e
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/pt/torbutton.properties b/src/chrome/locale/pt/torbutton.properties
index bbdf04f..8be2313 100644
--- a/src/chrome/locale/pt/torbutton.properties
+++ b/src/chrome/locale/pt/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ro/torbutton.properties b/src/chrome/locale/ro/torbutton.properties
index 98d8b87..bdf5f99 100644
--- a/src/chrome/locale/ro/torbutton.properties
+++ b/src/chrome/locale/ro/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = Discul pare sa fie plin. Va rugam sa asigurati mai
torbutton.title.prompt_torbrowser = Informatii importante Torbutton
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ru/torbutton.properties b/src/chrome/locale/ru/torbutton.properties
index 30221c8..0fd195a 100644
--- a/src/chrome/locale/ru/torbutton.properties
+++ b/src/chrome/locale/ru/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = ÐПÑ
Пже, ÑÑП ЎОÑк запПлМеМ. Ð
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/sco/torbutton.properties b/src/chrome/locale/sco/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/sco/torbutton.properties
+++ b/src/chrome/locale/sco/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/sk/torbutton.properties b/src/chrome/locale/sk/torbutton.properties
index 34dd9ce..fe21f72 100644
--- a/src/chrome/locale/sk/torbutton.properties
+++ b/src/chrome/locale/sk/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = DÎleşité Torbutton Informácie
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = DÃŽleÅŸité Torbutton Informácie!\n\nTorbutton je odteraz povolenÜ.\n\nStlaÄte Torbutton pre viacej informáciÃ.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/sl/torbutton.properties b/src/chrome/locale/sl/torbutton.properties
index 0863194..67c140b 100644
--- a/src/chrome/locale/sl/torbutton.properties
+++ b/src/chrome/locale/sl/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = Na disku ni veÄ prostora. Naredite prostor ali pr
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/so/torbutton.properties b/src/chrome/locale/so/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/so/torbutton.properties
+++ b/src/chrome/locale/so/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/son/torbutton.properties b/src/chrome/locale/son/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/son/torbutton.properties
+++ b/src/chrome/locale/son/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/sq/torbutton.properties b/src/chrome/locale/sq/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/sq/torbutton.properties
+++ b/src/chrome/locale/sq/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/sr/torbutton.properties b/src/chrome/locale/sr/torbutton.properties
index 51a8333..6daf7da 100644
--- a/src/chrome/locale/sr/torbutton.properties
+++ b/src/chrome/locale/sr/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = ÐзглеЎа Ўа Ñе ЎОÑк пÑМ. ÐÑлП
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/st/torbutton.properties b/src/chrome/locale/st/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/st/torbutton.properties
+++ b/src/chrome/locale/st/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/su/torbutton.properties b/src/chrome/locale/su/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/su/torbutton.properties
+++ b/src/chrome/locale/su/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/sv/torbutton.properties b/src/chrome/locale/sv/torbutton.properties
index 4d7ecde..50e0a98 100644
--- a/src/chrome/locale/sv/torbutton.properties
+++ b/src/chrome/locale/sv/torbutton.properties
@@ -6,40 +6,47 @@ torbutton.panel.plugins.disabled = Klicka för att aktivera plugins
torbutton.panel.plugins.enabled = Klicka för att inaktivera plugins
torbutton.panel.label.disabled = Tor inaktiv
torbutton.panel.label.enabled = Tor aktiv
-extensions.{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}.description = Torbutton provides a button to easily enable or disable pointing Firefox to the Tor proxy
+extensions.{e0204bd5-9d31-402b-a99d-a6aa8ffebdca}.description = Torbutton ger en knapp för att enkelt aktivera eller inaktivera peka Firefox till Tor proxy
torbutton.popup.history.warning = Torbutton blocked activity from a tab loaded in a different Tor state.\n\nThis is to work around Firefox Bugs 409737 and 417869.\n\nIf this popup seemed to happen for no reason, one of your tabs is attempting to reload itself in the background, and this was blocked.\n\nTo reload the tab in this Tor state, hit 'enter' in the URL location box.\n\n
-torbutton.popup.plugin.warning = Torbutton blocked direct Tor load of plugin content.\n\nUse Save-As instead.\n\n
+torbutton.popup.plugin.warning = Torbutton blockerade direkt Tor belastning insticksprogram.\n\nAnvÀnd spara som i stÀllet.\n\n
torbutton.popup.confirm_ca_certs = Torbutton Note: It appears you have no custom Certificate Authorities. Examining the Certificate Authority list is a slow operation and slows down Tor toggle. Would you like to disable the isolation of Certificate Authority certificates? (If you don't understand this, it is safe to click OK)
-torbutton.popup.ff3.warning = Warning!\n\nTorbutton on Firefox 3 is known to leak your timezone and livemarks via Tor.\n\nDo you wish to continue anyway?
-torbutton.popup.toggle.warning = You need to toggle Tor or restart for your settings to take effect.
+torbutton.popup.ff3.warning = Varning!\n\nTorbutton på Firefox 3 Àr kÀnt för att lÀcka din tidszon och livemarks via Tor. \n\nVill du fortsÀtta Àndå?
+torbutton.popup.toggle.warning = Du måste vÀxla Tor eller starta för instÀllningarna ska börja gÀlla.
torbutton.popup.test.success = Tor-proxy testet lyckades!
-torbutton.popup.test.failure = Tor proxy test FAILED! Check your proxy and Polipo settings.
+torbutton.popup.test.failure = Tor proxy MISSLYCKADES! Kontrollera din proxy och instÀllningar polipo.
torbutton.popup.test.confirm_toggle = The most recent Tor proxy test failed to use Tor.\n\nAre you sure you want to enable anyway?\n\nNote: If you have fixed the problem, you can rerun the test in the Torbutton Proxy Preferences window to eliminate this warning.
-torbutton.popup.test.ff3_notice = Click OK to test Tor proxy settings. This test will happen in the background. Please be patient.
+torbutton.popup.test.ff3_notice = Klicka på OK för att testa Tor proxyinstÀllningar. Detta test kommer att ske i bakgrunden. Ha tålamod.
torbutton.panel.label.verified = Tor verifierad
-torbutton.popup.test.auto_failed = The automatic Tor proxy test failed to use Tor.\n\nAre you sure you want to enable anyway?
+torbutton.popup.test.auto_failed = Den automatiska Tor proxy misslyckades att anvÀnda Tor.\n\nÃr du sÀker pÃ¥ att du vill aktivera ÀndÃ¥?
torbutton.prefs.recommended = (rekommenderat)
torbutton.prefs.optional = (valfritt)
torbutton.prefs.crucial = (kritiskt)
-torbutton.popup.external.title = Load external content?
-torbutton.popup.external.app = An external application is needed to handle:\n\n
-torbutton.popup.external.note = \n\nNOTE: External applications are NOT Tor safe by default and can unmask you!\n
-torbutton.popup.external.suggest = \nIf this file is untrusted, you should either save it to view while offline or in a VM,\nor consider using a transparent Tor proxy like Tails LiveCD or torsocks.\n
+torbutton.popup.external.title = Fyll externt innehåll?
+torbutton.popup.external.app = En extern applikation för att hantera:\n\n
+torbutton.popup.external.note = \n\nOBS: Externa program Àr INTE Tor sÀkra som standard och kan avslöja dig!\n
+torbutton.popup.external.suggest = \nOm denna fil Àr inte tillförlitlig, bör du spara antingen den för att visa offline eller i en VM,\neller övervÀga att anvÀnda en transparent Tor proxy som Tails LiveCD eller torsocks.\n
torbutton.popup.launch = Starta program
torbutton.popup.cancel = Avbryt
-torbutton.popup.dontask = Always launch applications from now on
-torbutton.popup.test.no_http_proxy = Tor proxy test: Local HTTP Proxy is unreachable. Is Polipo running properly?
+torbutton.popup.dontask = Alltid starta program från och med nu
+torbutton.popup.test.no_http_proxy = Tor proxy test: Lokal HTTP Proxy Àr onÃ¥bar. Ãr Polipo igÃ¥ng ordentligt?
torbutton.popup.captcha.title = Undvik Google Captchas?
-torbutton.popup.captcha.ask = Torbutton detected a Google Captcha. Would you like to be redirected to another search engine for this query?
-torbutton.popup.captcha.always = Always perform this action from now on
+torbutton.popup.captcha.ask = Torbutton upptÀckt en Google Captcha. Vill du att omdirigeras till en annan sökmotor för den hÀr frågan?
+torbutton.popup.captcha.always = Utför alltid denna åtgÀrd från och med nu
torbutton.popup.redirect = Omdirigera
torbutton.popup.no_redirect = Omdirigera inte
torbutton.popup.prompted_language = To give you more privacy, Torbutton can request the English language version of web pages. This may cause web pages that you prefer to read in your native language to display in English instead.\n\nWould you like to request English language web pages for better privacy?
-torbutton.popup.no_newnym = Torbutton cannot safely give you a new identity. It does not have access to the Tor Control Port.\n\nAre you running Tor Browser Bundle?
+torbutton.popup.no_newnym = Torbutton kan inte sÀkert ge dig en ny identitet. Det har inte tillgång till Tor Control Port.\n\nKör du Tor Browser Bundle?
torbutton.popup.use_tbb = It appears that you are using Torbutton with Firefox, which is no longer a recommended safe configuration.\n\nInstead, we recommend that you obtain the latest Tor Browser Bundle by sending email to gettor(a)torproject.org or by downloading it at the following URL:
-torbutton.popup.pref_error = Torbutton cannot update preferences in the Tor Browser profile directory.
-torbutton.popup.permission_denied = Please either reset the permissions of the Tor Browser directory or copy it to a new location.
-torbutton.popup.device_full = The disk appears to be full. Please free up space or move Tor Browser to a new device.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
+torbutton.popup.pref_error = Torbutton kan inte uppdatera instÀllningar i Tor Browser profilen katalog.
+torbutton.popup.permission_denied = Du antingen återstÀlla behörigheterna Tor Browser katalogen eller kopiera den till en ny plats.
+torbutton.popup.device_full = Skivan verkar vara full. VÀnligen frigöra utrymme eller flytta Tor webblÀsare till en ny enhet.
+torbutton.title.prompt_torbrowser = Viktig Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.popup.short_torbrowser = Viktig Torbutton information!\n\nTorbutton Àr nu alltid aktiverad.\n\nKlicka på Torbutton för mer information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/sw/torbutton.properties b/src/chrome/locale/sw/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/sw/torbutton.properties
+++ b/src/chrome/locale/sw/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ta/torbutton.properties b/src/chrome/locale/ta/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ta/torbutton.properties
+++ b/src/chrome/locale/ta/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/te/torbutton.properties b/src/chrome/locale/te/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/te/torbutton.properties
+++ b/src/chrome/locale/te/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/tg/torbutton.properties b/src/chrome/locale/tg/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/tg/torbutton.properties
+++ b/src/chrome/locale/tg/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/th/torbutton.properties b/src/chrome/locale/th/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/th/torbutton.properties
+++ b/src/chrome/locale/th/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ti/torbutton.properties b/src/chrome/locale/ti/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ti/torbutton.properties
+++ b/src/chrome/locale/ti/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/tk/torbutton.properties b/src/chrome/locale/tk/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/tk/torbutton.properties
+++ b/src/chrome/locale/tk/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/tr/torbutton.properties b/src/chrome/locale/tr/torbutton.properties
index e93d909..dfe88ba 100644
--- a/src/chrome/locale/tr/torbutton.properties
+++ b/src/chrome/locale/tr/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = Disk dolu gözÌkÌyor. LÌtfen diskte yer açın
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Ãnemli Torbutton bilgisi!\nTorbutton Åimdi tamamen etkinleÅtirildi.\nDaha fazla bilgi için Torbutton'a tıklayınız.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/uk/torbutton.properties b/src/chrome/locale/uk/torbutton.properties
index 175550b..0999774 100644
--- a/src/chrome/locale/uk/torbutton.properties
+++ b/src/chrome/locale/uk/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ur/torbutton.properties b/src/chrome/locale/ur/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ur/torbutton.properties
+++ b/src/chrome/locale/ur/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/ve/torbutton.properties b/src/chrome/locale/ve/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/ve/torbutton.properties
+++ b/src/chrome/locale/ve/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/vi/torbutton.properties b/src/chrome/locale/vi/torbutton.properties
index 5bcf819..900bf7d 100644
--- a/src/chrome/locale/vi/torbutton.properties
+++ b/src/chrome/locale/vi/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = á» lưu trữ Äã Äầy, Hảy chuẩn bá» th
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/wa/torbutton.properties b/src/chrome/locale/wa/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/wa/torbutton.properties
+++ b/src/chrome/locale/wa/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/wo/torbutton.properties b/src/chrome/locale/wo/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/wo/torbutton.properties
+++ b/src/chrome/locale/wo/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/zh-CN/torbutton.properties b/src/chrome/locale/zh-CN/torbutton.properties
index 90ccd27..ae66072 100644
--- a/src/chrome/locale/zh-CN/torbutton.properties
+++ b/src/chrome/locale/zh-CN/torbutton.properties
@@ -40,6 +40,13 @@ torbutton.popup.use_tbb = It appears that you are using Torbutton with Firefox,
torbutton.popup.pref_error = Torbutton cannot update preferences in the Tor Browser profile directory.
torbutton.popup.permission_denied = Please either reset the permissions of the Tor Browser directory or copy it to a new location.
torbutton.popup.device_full = The disk appears to be full. Please free up space or move Tor Browser to a new device.
-torbutton.title.prompt_torbrowser = Important Torbutton Information
+torbutton.title.prompt_torbrowser = éèŠçTorbuttonçä¿¡æ¯
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
-torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+torbutton.popup.short_torbrowser = TorbuttonçéèŠä¿¡æ¯\n\nTorbuttonçæ¯çŸåšå§çµèæŒåçšçæ
\n\n黿TorbuttonçæŽå€ä¿¡æ¯
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/zh-HK/torbutton.properties b/src/chrome/locale/zh-HK/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/zh-HK/torbutton.properties
+++ b/src/chrome/locale/zh-HK/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/zh-TW/torbutton.properties b/src/chrome/locale/zh-TW/torbutton.properties
index e3d42fa..908b6cc 100644
--- a/src/chrome/locale/zh-TW/torbutton.properties
+++ b/src/chrome/locale/zh-TW/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = ç£ç¢ç©ºéå¯èœå·²æ»¿ãè«ç©ºåºäžäºç©ºé
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
diff --git a/src/chrome/locale/zu/torbutton.properties b/src/chrome/locale/zu/torbutton.properties
index 8679003..875240e 100644
--- a/src/chrome/locale/zu/torbutton.properties
+++ b/src/chrome/locale/zu/torbutton.properties
@@ -43,3 +43,10 @@ torbutton.popup.device_full = The disk appears to be full. Please free up space
torbutton.title.prompt_torbrowser = Important Torbutton Information
torbutton.popup.prompt_torbrowser = Torbutton works differently now: you can't turn it off any more.\n\nWe made this change because it isn't safe to use Torbutton in a browser that's also used for non-Tor browsing. There were too many bugs there that we couldn't fix any other way.\n\nIf you want to keep using Firefox normally, you should uninstall Torbutton and download Tor Browser Bundle. The privacy properties of Tor Browser are also superior to those of normal Firefox, even when Firefox is used with Torbutton.\n\nTo remove Torbutton, go to Tools->Addons->Extensions and then click the Remove button next to Torbutton.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
+
+# Canvas permission prompt. Strings are kept here for ease of translation.
+canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Since canvas image data can be used to discover information about your computer, blank image data was returned this time.
+canvas.allow=Allow in the Future
+canvas.allowAccessKey=A
+canvas.never=Never for This Site
+canvas.neverAccessKey=e
1
0
Author: mikeperry
Date: 2012-10-09 22:44:12 +0000 (Tue, 09 Oct 2012)
New Revision: 25843
Modified:
translation/trunk/projects/torbutton/po/af/torbutton.properties.po
translation/trunk/projects/torbutton/po/ak/torbutton.properties.po
translation/trunk/projects/torbutton/po/am/torbutton.properties.po
translation/trunk/projects/torbutton/po/ar/torbutton.dtd.po
translation/trunk/projects/torbutton/po/ar/torbutton.properties.po
translation/trunk/projects/torbutton/po/arn/torbutton.properties.po
translation/trunk/projects/torbutton/po/ast/torbutton.properties.po
translation/trunk/projects/torbutton/po/az/torbutton.properties.po
translation/trunk/projects/torbutton/po/be/torbutton.properties.po
translation/trunk/projects/torbutton/po/bg/torbutton.properties.po
translation/trunk/projects/torbutton/po/bn/torbutton.properties.po
translation/trunk/projects/torbutton/po/bn_IN/torbutton.properties.po
translation/trunk/projects/torbutton/po/bo/torbutton.properties.po
translation/trunk/projects/torbutton/po/br/torbutton.properties.po
translation/trunk/projects/torbutton/po/bs/torbutton.properties.po
translation/trunk/projects/torbutton/po/ca/torbutton.properties.po
translation/trunk/projects/torbutton/po/cs/torbutton.properties.po
translation/trunk/projects/torbutton/po/csb/torbutton.properties.po
translation/trunk/projects/torbutton/po/cy/torbutton.properties.po
translation/trunk/projects/torbutton/po/da/torbutton.properties.po
translation/trunk/projects/torbutton/po/de/torbutton.properties.po
translation/trunk/projects/torbutton/po/dz/torbutton.properties.po
translation/trunk/projects/torbutton/po/el/torbutton.dtd.po
translation/trunk/projects/torbutton/po/el/torbutton.properties.po
translation/trunk/projects/torbutton/po/en/torbutton.properties.po
translation/trunk/projects/torbutton/po/eo/torbutton.properties.po
translation/trunk/projects/torbutton/po/es/torbutton.dtd.po
translation/trunk/projects/torbutton/po/es/torbutton.properties.po
translation/trunk/projects/torbutton/po/et/torbutton.properties.po
translation/trunk/projects/torbutton/po/eu/torbutton.properties.po
translation/trunk/projects/torbutton/po/fa/torbutton.properties.po
translation/trunk/projects/torbutton/po/fi/torbutton.properties.po
translation/trunk/projects/torbutton/po/fil/torbutton.properties.po
translation/trunk/projects/torbutton/po/fo/torbutton.properties.po
translation/trunk/projects/torbutton/po/fr/torbutton.dtd.po
translation/trunk/projects/torbutton/po/fr/torbutton.properties.po
translation/trunk/projects/torbutton/po/fur/torbutton.properties.po
translation/trunk/projects/torbutton/po/fy/torbutton.properties.po
translation/trunk/projects/torbutton/po/ga/torbutton.properties.po
translation/trunk/projects/torbutton/po/gl/torbutton.properties.po
translation/trunk/projects/torbutton/po/gu/torbutton.properties.po
translation/trunk/projects/torbutton/po/gun/torbutton.properties.po
translation/trunk/projects/torbutton/po/ha/torbutton.properties.po
translation/trunk/projects/torbutton/po/he/torbutton.dtd.po
translation/trunk/projects/torbutton/po/he/torbutton.properties.po
translation/trunk/projects/torbutton/po/hi/torbutton.properties.po
translation/trunk/projects/torbutton/po/hr/torbutton.properties.po
translation/trunk/projects/torbutton/po/ht/torbutton.properties.po
translation/trunk/projects/torbutton/po/hu/torbutton.dtd.po
translation/trunk/projects/torbutton/po/hu/torbutton.properties.po
translation/trunk/projects/torbutton/po/hy/torbutton.properties.po
translation/trunk/projects/torbutton/po/id/torbutton.properties.po
translation/trunk/projects/torbutton/po/is/torbutton.properties.po
translation/trunk/projects/torbutton/po/it/torbutton.dtd.po
translation/trunk/projects/torbutton/po/it/torbutton.properties.po
translation/trunk/projects/torbutton/po/ja/torbutton.properties.po
translation/trunk/projects/torbutton/po/jv/torbutton.properties.po
translation/trunk/projects/torbutton/po/ka/torbutton.properties.po
translation/trunk/projects/torbutton/po/km/torbutton.properties.po
translation/trunk/projects/torbutton/po/kn/torbutton.properties.po
translation/trunk/projects/torbutton/po/ko/torbutton.properties.po
translation/trunk/projects/torbutton/po/ku/torbutton.properties.po
translation/trunk/projects/torbutton/po/kw/torbutton.properties.po
translation/trunk/projects/torbutton/po/ky/torbutton.properties.po
translation/trunk/projects/torbutton/po/lb/torbutton.properties.po
translation/trunk/projects/torbutton/po/ln/torbutton.properties.po
translation/trunk/projects/torbutton/po/lo/torbutton.properties.po
translation/trunk/projects/torbutton/po/lt/torbutton.properties.po
translation/trunk/projects/torbutton/po/lv/torbutton.properties.po
translation/trunk/projects/torbutton/po/mg/torbutton.properties.po
translation/trunk/projects/torbutton/po/mi/torbutton.properties.po
translation/trunk/projects/torbutton/po/mk/torbutton.properties.po
translation/trunk/projects/torbutton/po/ml/torbutton.properties.po
translation/trunk/projects/torbutton/po/mn/torbutton.properties.po
translation/trunk/projects/torbutton/po/mr/torbutton.properties.po
translation/trunk/projects/torbutton/po/ms/torbutton.properties.po
translation/trunk/projects/torbutton/po/mt/torbutton.properties.po
translation/trunk/projects/torbutton/po/my/torbutton.properties.po
translation/trunk/projects/torbutton/po/nah/torbutton.properties.po
translation/trunk/projects/torbutton/po/nap/torbutton.properties.po
translation/trunk/projects/torbutton/po/nb/torbutton.properties.po
translation/trunk/projects/torbutton/po/ne/torbutton.properties.po
translation/trunk/projects/torbutton/po/nl/torbutton.dtd.po
translation/trunk/projects/torbutton/po/nl/torbutton.properties.po
translation/trunk/projects/torbutton/po/nn/torbutton.properties.po
translation/trunk/projects/torbutton/po/nso/torbutton.properties.po
translation/trunk/projects/torbutton/po/oc/torbutton.properties.po
translation/trunk/projects/torbutton/po/or/torbutton.properties.po
translation/trunk/projects/torbutton/po/pa/torbutton.properties.po
translation/trunk/projects/torbutton/po/pap/torbutton.properties.po
translation/trunk/projects/torbutton/po/pl/torbutton.dtd.po
translation/trunk/projects/torbutton/po/pl/torbutton.properties.po
translation/trunk/projects/torbutton/po/pms/torbutton.properties.po
translation/trunk/projects/torbutton/po/ps/torbutton.properties.po
translation/trunk/projects/torbutton/po/pt/torbutton.properties.po
translation/trunk/projects/torbutton/po/pt_BR/torbutton.properties.po
translation/trunk/projects/torbutton/po/ro/torbutton.properties.po
translation/trunk/projects/torbutton/po/ru/torbutton.properties.po
translation/trunk/projects/torbutton/po/sco/torbutton.properties.po
translation/trunk/projects/torbutton/po/sk/torbutton.properties.po
translation/trunk/projects/torbutton/po/sl/torbutton.properties.po
translation/trunk/projects/torbutton/po/so/torbutton.properties.po
translation/trunk/projects/torbutton/po/son/torbutton.properties.po
translation/trunk/projects/torbutton/po/sq/torbutton.properties.po
translation/trunk/projects/torbutton/po/sr/torbutton.properties.po
translation/trunk/projects/torbutton/po/st/torbutton.properties.po
translation/trunk/projects/torbutton/po/su/torbutton.properties.po
translation/trunk/projects/torbutton/po/sv/torbutton.properties.po
translation/trunk/projects/torbutton/po/sw/torbutton.properties.po
translation/trunk/projects/torbutton/po/ta/torbutton.properties.po
translation/trunk/projects/torbutton/po/te/torbutton.properties.po
translation/trunk/projects/torbutton/po/templates/torbutton.dtd.pot
translation/trunk/projects/torbutton/po/templates/torbutton.properties.pot
translation/trunk/projects/torbutton/po/tg/torbutton.properties.po
translation/trunk/projects/torbutton/po/th/torbutton.properties.po
translation/trunk/projects/torbutton/po/ti/torbutton.properties.po
translation/trunk/projects/torbutton/po/tk/torbutton.properties.po
translation/trunk/projects/torbutton/po/tr/torbutton.properties.po
translation/trunk/projects/torbutton/po/uk/torbutton.properties.po
translation/trunk/projects/torbutton/po/ur/torbutton.properties.po
translation/trunk/projects/torbutton/po/ve/torbutton.properties.po
translation/trunk/projects/torbutton/po/vi/torbutton.properties.po
translation/trunk/projects/torbutton/po/wa/torbutton.properties.po
translation/trunk/projects/torbutton/po/wo/torbutton.properties.po
translation/trunk/projects/torbutton/po/zh_CN/torbutton.properties.po
translation/trunk/projects/torbutton/po/zh_HK/torbutton.properties.po
translation/trunk/projects/torbutton/po/zh_TW/torbutton.properties.po
translation/trunk/projects/torbutton/po/zu/torbutton.properties.po
Log:
Update with new Torbutton strings.
Modified: translation/trunk/projects/torbutton/po/af/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/af/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/af/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ak/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ak/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ak/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/am/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/am/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/am/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ar/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/ar/torbutton.dtd.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ar/torbutton.dtd.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -3,15 +3,16 @@
# mikeperry <mikeperry-trans(a)fscked.org>, 2011.
# mohammad Alhargan <malham1(a)gmail.com>, 2011.
# Mohammed Babiker <sudanhacker(a)hotmail.com>, 2011.
+# <n0mad(a)tormail.org>, 2012.
# runasand <runa.sandvik(a)gmail.com>, 2011.
#. extracted from ../src/chrome/locale/en/torbutton.dtd
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-12 21:20+0000\n"
+"Last-Translator: n0mad <n0mad(a)tormail.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
@@ -609,7 +610,7 @@
#: torbutton.prefs.engine4
msgid "startpage.com"
-msgstr ""
+msgstr "صفحة البداية"
#: torbutton.prefs.engine5
msgid "duckduckgo.com"
Modified: translation/trunk/projects/torbutton/po/ar/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ar/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ar/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -2,6 +2,7 @@
# Translators:
# Fadi Mansour <fadi.redeemer.mansour(a)gmail.com>, 2011.
# mohammad Alhargan <malham1(a)gmail.com>, 2011.
+# <n0mad(a)tormail.org>, 2012.
# OsamaK <osamak(a)gnu.org>, 2011.
# runasand <runa.sandvik(a)gmail.com>, 2011.
#. extracted from ../src/chrome/locale/en/torbutton.properties
@@ -9,9 +10,9 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-12 21:17+0000\n"
+"Last-Translator: n0mad <n0mad(a)tormail.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
@@ -323,7 +324,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "معلومات هامة عن تور"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -341,6 +342,19 @@
"To remove Torbutton, go to Tools->Addons->Extensions and then click the "
"Remove button next to Torbutton."
msgstr ""
+"تغيرت طريقة عمل زر تور الان: لا يمكن لك ان تطفأه الان \n"
+"\n"
+"قمنا بهذا التغيير لانه اصبح من غير الآمن استخدام زر تور في المتصفح الي "
+"يستخدم في التصفح خارج تور. كان هناك العديد من العلل و التي لم يمكن من الممكن "
+"معالجتها باي طريقة اخرى.\n"
+"\n"
+"إذا اردت الاستمرار في استخدام فايرفوكس تقليدياً، يتوجب عليك إزالة زر تور و "
+"تحميل مجموعة برامج متصفح تور. كما ان خصائص الخصوصية لمتصفح تور تتفوق على تلك "
+"التي في متصفح فايرفوكس التقليدي، حتى لو تم استخدام متصفح فايرفوكس مع زر "
+"تور.\n"
+"\n"
+"لإزالة زر تور، قم بالتوجه أدوات - إضافات - محلقات ، ثم إضغط على الزر المعنون "
+"إزالة بالقرب من زر تور."
#: torbutton.popup.short_torbrowser
msgid ""
@@ -350,3 +364,30 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"معلومات هامة عن تور \n"
+"تم تمكين زر تور للعمل باستمرار الان\n"
+"اضغط على زر تور للمزيد من المعلومات "
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/arn/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/arn/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/arn/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ast/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ast/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ast/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/az/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/az/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/az/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/be/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/be/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/be/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -283,3 +283,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/bg/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/bg/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/bg/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/bn/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/bn/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/bn/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/bn_IN/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/bn_IN/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/bn_IN/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/bo/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/bo/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/bo/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/br/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/br/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/br/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/bs/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/bs/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/bs/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -283,3 +283,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ca/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ca/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ca/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -362,3 +362,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/cs/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/cs/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/cs/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -335,3 +335,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/csb/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/csb/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/csb/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -283,3 +283,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/cy/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/cy/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/cy/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -284,3 +284,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/da/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/da/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/da/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -354,3 +354,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/de/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/de/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/de/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-09-11 17:53+0000\n"
"Last-Translator: Sacro <Scion(a)T-Online.de>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -382,3 +382,27 @@
"Torbutton ist jetzt immer aktiviert.\n"
"\n"
"Klicken sie auf den Torbutton, um mehr Informationen zu erhalten."
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/dz/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/dz/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/dz/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/el/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/el/torbutton.dtd.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/el/torbutton.dtd.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -9,9 +9,9 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-10-02 20:30+0000\n"
+"Last-Translator: anvo <fragos.george(a)hotmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: el\n"
"MIME-Version: 1.0\n"
@@ -646,7 +646,7 @@
#: torbutton.prefs.engine4
msgid "startpage.com"
-msgstr ""
+msgstr "startpage.com"
#: torbutton.prefs.engine5
msgid "duckduckgo.com"
Modified: translation/trunk/projects/torbutton/po/el/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/el/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/el/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-09-11 08:30+0000\n"
"Last-Translator: anvo <fragos.george(a)hotmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -389,3 +389,27 @@
"Το Torbutton είναι τώρα συνεχώς ενεργοποιημένο.\n"
"\n"
"Για περισσότερες πληροφορίες, κάνετε κλικ στο Torbutton."
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/en/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/en/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/en/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -281,3 +281,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/eo/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/eo/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/eo/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/es/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/es/torbutton.dtd.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/es/torbutton.dtd.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -3,6 +3,7 @@
# <against.cybercrime.eu(a)gmail.com>, 2011.
# <gioyik(a)gmail.com>, 2011.
# Ian Martorell <ianmartorell(a)gmail.com>, 2011.
+# <jan.reister(a)unimi.it>, 2012.
# piliquintana <piliquintana(a)hotmail.com>, 2011.
# runasand <runa.sandvik(a)gmail.com>, 2011.
#. extracted from ../src/chrome/locale/en/torbutton.dtd
@@ -10,9 +11,9 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-24 09:34+0000\n"
+"Last-Translator: jan <jan.reister(a)unimi.it>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/torproject/"
"language/es/)\n"
"Language: es\n"
@@ -641,7 +642,7 @@
#: torbutton.prefs.engine4
msgid "startpage.com"
-msgstr ""
+msgstr "startpage.com"
#: torbutton.prefs.engine5
msgid "duckduckgo.com"
Modified: translation/trunk/projects/torbutton/po/es/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/es/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/es/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-09-07 03:38+0000\n"
"Last-Translator: kelopez <kelopez.cl(a)gmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/projects/p/torproject/"
@@ -380,3 +380,27 @@
msgstr ""
"Información importante sobre Torbutton: Torbutton ahora siempre estará "
"encendido. Haga clic en el Torbutton para más información"
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/et/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/et/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/et/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -325,3 +325,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/eu/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/eu/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/eu/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -1,15 +1,15 @@
#
# Translators:
# Antxon Baldarra <baldarra(a)euskalerria.org>, 2012.
-# <baldarra(a)euskalerria.org>, 2011, 2012.
+# <baldarra(a)euskalerria.org>, 2011-2012.
#. extracted from ../src/chrome/locale/en/torbutton.properties
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-10-09 12:40+0000\n"
+"Last-Translator: Antxon Baldarra <baldarra(a)euskalerria.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
@@ -335,7 +335,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Torbutton informazio garratzitsua"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -362,3 +362,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/fa/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/fa/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/fa/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -355,3 +355,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/fi/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/fi/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/fi/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -359,3 +359,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/fil/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/fil/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/fil/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/fo/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/fo/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/fo/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/fr/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/fr/torbutton.dtd.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/fr/torbutton.dtd.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -1,5 +1,6 @@
#
# Translators:
+# arpalord <arpalord(a)gmail.com>, 2012.
# Gordontesos <translate(a)gordontesos.com>, 2011.
# Pierre Antoine <pierre.antoine(a)ieee.org>, 2011.
# runasand <runa.sandvik(a)gmail.com>, 2011.
@@ -8,9 +9,9 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-24 08:08+0000\n"
+"Last-Translator: arpalord <arpalord(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -644,7 +645,7 @@
#: torbutton.prefs.engine4
msgid "startpage.com"
-msgstr ""
+msgstr "startpage.com"
#: torbutton.prefs.engine5
msgid "duckduckgo.com"
Modified: translation/trunk/projects/torbutton/po/fr/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/fr/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/fr/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -1,5 +1,6 @@
#
# Translators:
+# arpalord <arpalord(a)gmail.com>, 2012.
# <clbaldock(a)gmail.com>, 2011.
# Gordontesos <translate(a)gordontesos.com>, 2011.
# Pierre Antoine <pierre.antoine(a)ieee.org>, 2011.
@@ -9,9 +10,9 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-24 12:31+0000\n"
+"Last-Translator: arpalord <arpalord(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
@@ -342,7 +343,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Information importante concernant Torbutton"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -360,6 +361,20 @@
"To remove Torbutton, go to Tools->Addons->Extensions and then click the "
"Remove button next to Torbutton."
msgstr ""
+"Torbutton fonctionne différemment maintenant: vous ne pouvez plus le "
+"désactiver.\n"
+"\n"
+"Nous avons effectué ce changement car il n'est pas sûr d'utiliser Torbutton "
+"dans un navigateur qui est également utiliser pour une navigation sans Tor. "
+"Ils y avaient trop de bugs ne nous pouvions résoudre.\n"
+"\n"
+"Si vous désirez vous servir de Firefox normalement, vous devriez déinstaller "
+"le Torbutton et télécharger Tor Browsser Bundle. Les propriétés de "
+"confidentialité de Tor Browser sont supérieures à celles de Firefox, même "
+"s'il est utilisé avec TorButton.\n"
+"\n"
+"Pour supprimer Torbutton, allez dans Outils->Modules Complémentaires-"
+">Extensions et cliquez le button Supprimer à coté de Torbutton."
#: torbutton.popup.short_torbrowser
msgid ""
@@ -369,3 +384,32 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Information importante concernant Torbutton!\n"
+"\n"
+"Torbutton est dorénavant toujours activé.\n"
+"\n"
+"Cliquer sur Torbutton pour plus d'informations."
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/fur/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/fur/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/fur/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/fy/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/fy/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/fy/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ga/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ga/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ga/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -283,3 +283,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/gl/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/gl/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/gl/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/gu/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/gu/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/gu/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -283,3 +283,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/gun/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/gun/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/gun/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ha/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ha/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ha/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/he/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/he/torbutton.dtd.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/he/torbutton.dtd.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -1,15 +1,17 @@
#
# Translators:
+# <aharonoosh1(a)gmail.com>, 2012.
# Amichay P. K. <am1chay.p.k(a)gmail.com>, 2011.
# Something Another <roeyjobsyud(a)gmail.com>, 2012.
+# יעקב פייקין <jacobpa9(a)gmail.com>, 2012.
#. extracted from ../src/chrome/locale/en/torbutton.dtd
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-10-05 08:16+0000\n"
+"Last-Translator: aharonoosh <aharonoosh1(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
@@ -29,11 +31,11 @@
#: torbutton.prefs.display_panel
msgid "Display Tor proxy setting in the status bar"
-msgstr ""
+msgstr "הצג הגדרות Tor proxy "
#: torbutton.prefs.panel_format
msgid "Status bar display format:"
-msgstr ""
+msgstr "פורמט שורת המצב:"
#: torbutton.prefs.panel_text_format
msgid "Text"
@@ -49,7 +51,7 @@
#: torbutton.prefs.recommended_settings
msgid "Use the recommended proxy settings for my version of Firefox"
-msgstr "השתמש בהגדרות פרוקסי מומלצות עבור גרסאת ה\"פיירפוקס\" שלי"
+msgstr "השתמש בהגדרות פרוקסי מומלצות עבור גרסת ה\"פיירפוקס\" שלי"
#: torbutton.prefs.use_privoxy
msgid "Use Privoxy"
@@ -81,7 +83,7 @@
#: torbutton.prefs.proxy.host.socks
msgid "SOCKS Host:"
-msgstr ""
+msgstr "מארח SOCKS:"
#: torbutton.prefs.proxy.port
msgid "Port:"
@@ -89,15 +91,15 @@
#: torbutton.about.title
msgid "About Torbutton"
-msgstr "אודות לחצן טור"
+msgstr "אודות Torbutton"
#: torbutton.about.version
msgid "Version:"
-msgstr ""
+msgstr "גרסה:"
#: torbutton.about.summary
msgid "Protects the privacy of your Tor browsing."
-msgstr ""
+msgstr "מגן על הפרטיות של גלישת ה-Tor שלך"
#: torbutton.about.code
msgid "Code Contributors:"
@@ -109,7 +111,7 @@
#: torbutton.about.security_review
msgid "Security Review:"
-msgstr ""
+msgstr "סיקור אבטחה"
#: torbutton.about.donate
msgid "If you like using Tor, you might consider"
@@ -117,11 +119,11 @@
#: torbutton.about.make_donation
msgid "making a donation."
-msgstr ""
+msgstr "לתרום"
#: torbutton.pref_connection.notice
msgid "Disable Torbutton to change these settings."
-msgstr ""
+msgstr "השבת את Torbutton על מנת לשנות הגדרות אלו"
#: torbutton.pref_connection.more_info
msgid "More information"
@@ -129,7 +131,7 @@
#: torbutton.pref_connection_more_info.title
msgid "Help"
-msgstr ""
+msgstr "עזרה"
#: torbutton.pref_connection_more_info.text
msgid ""
@@ -137,10 +139,13 @@
"proxy settings, please disable Torbutton and return here. If you would like "
"to change your Tor settings, please use the Torbutton preference window."
msgstr ""
+"Torbutton פועל כעת. אם ברצונך לשנות את הגדרות הפרוקסי שאינם של Tor, אנא השבת "
+"את Torbutton וחזור הנה. אם ברצונך לשנות את הגדרות Tor, אנא השתמש בחלון "
+"ההגדרות של Torbutton."
#: torbutton.context_menu.new_identity
msgid "New Identity"
-msgstr ""
+msgstr "זהות חדשה"
#: torbutton.context_menu.new_identity_key
msgid "I"
@@ -148,67 +153,67 @@
#: torbutton.context_menu.toggle
msgid "Toggle Tor status"
-msgstr ""
+msgstr "להחליף מעמד טור"
#: torbutton.context_menu.toggle.key
msgid "T"
-msgstr ""
+msgstr "T"
#: torbutton.context_menu.preferences
msgid "Preferences..."
-msgstr ""
+msgstr "הגדרות"
#: torbutton.context_menu.preferences.key
msgid "P"
-msgstr ""
+msgstr "P"
#: torbutton.context_menu.about
msgid "About Torbutton..."
-msgstr "אודות לחצן טור..."
+msgstr "אודות Torbutton..."
#: torbutton.context_menu.about.key
msgid "A"
-msgstr ""
+msgstr "A"
#: torbutton.context_menu.cookieProtections
msgid "Cookie Protections"
-msgstr ""
+msgstr "הגנות קוקיז"
#: torbutton.context_menu.cookieProtections.key
msgid "C"
-msgstr ""
+msgstr "C"
#: torbutton.context_menu.copyTor
msgid "Copy Tor URL"
-msgstr ""
+msgstr "העתק את ה-URL של Tor"
#: torbutton.context_menu.copyTor.key
msgid "p"
-msgstr ""
+msgstr "p"
#: torbutton.context_menu.openTorTab
msgid "Open Tor URL in new Tab"
-msgstr ""
+msgstr "פתח את האתר של Tor בכרטיסייה חדשה"
#: torbutton.context_menu.openTorTab.key
msgid "r"
-msgstr ""
+msgstr "r"
#: torbutton.context_menu.openTorWindow
msgid "Open Tor URL in new Window"
-msgstr ""
+msgstr "פתח את האתר של Tor בחלון חדש"
#: torbutton.context_menu.openTorWindow.key
msgid "d"
-msgstr ""
+msgstr "d"
#: torbutton.button.label
msgid "Torbutton"
-msgstr "לחצן טור"
+msgstr "Torbutton"
#: torbutton.button.tooltip
msgid "Click to initialize Torbutton"
-msgstr "לחץ בכדי לאתחל את לחצן טור"
+msgstr "לחץ בכדי לאתחל את Torbutton"
#: torbutton.prefs.sec_settings
msgid "Security Settings"
@@ -216,79 +221,79 @@
#: torbutton.prefs.block_thread
msgid "Block history reads during Tor (crucial)"
-msgstr ""
+msgstr "חסום קריאות היסטוריה במהלך השימוש ב-Tor (מכריע)"
#: torbutton.prefs.block_thwrite
msgid "Block history writes during Tor (recommended)"
-msgstr "חסום כתיבות בהיסטוריה בזמן הרצת טור (מומלץ)"
+msgstr "חסום כתיבות בהיסטוריה בזמן הרצת Tor (מומלץ)"
#: torbutton.prefs.block_nthread
msgid "Block history reads during Non-Tor (optional)"
-msgstr ""
+msgstr "חסום קריאת היסטוריה בזמן גלישה רגילה (אופציונלי)"
#: torbutton.prefs.block_nthwrite
msgid "Block history writes during Non-Tor (optional)"
-msgstr ""
+msgstr "חסום כתיבות היסטוריה בזמן גלישה רגילה (אופציונלי)"
#: torbutton.prefs.clear_history
msgid "Clear history on Tor toggle (optional)"
-msgstr ""
+msgstr "נקה היסטוריה בטור Toggle (אופציונלי)"
#: torbutton.prefs.clear_cache
msgid "Block Tor disk cache and clear all cache on Tor toggle"
-msgstr ""
+msgstr "חסום את מטמון דיסק Tor ולנקות את כל המטמון Toggle Tor"
#: torbutton.prefs.block_cache
msgid "Block disk and memory cache access during Tor"
-msgstr ""
+msgstr "חסום גישה לדיסק ולמטמון בזמן שימוש ב-Tor"
#: torbutton.prefs.cookie_jars
msgid "Store Non-Tor cookies in a protected jar"
-msgstr ""
+msgstr " אחסן קוקיז רגילים בהגנה"
#: torbutton.prefs.cookie_protection
msgid "Use the Cookie Protections Dialog to choose"
-msgstr ""
+msgstr "בחר בתפריט הגנת הקוקיז על מנת לבחור"
#: torbutton.prefs.mmm_cookies
msgid "I will manually manage my cookies (dangerous)"
-msgstr ""
+msgstr "אני אנהל ידנית את הקוקיז שלי (מסוכן)"
#: torbutton.prefs.clear_cookies
msgid "Clear cookies on Tor toggle"
-msgstr ""
+msgstr "נקה עוגיות על Tor toggle"
#: torbutton.prefs.disable_plugins
msgid "Disable plugins during Tor usage (crucial)"
-msgstr ""
+msgstr "השבת פלאגינים בזמן שימוש ב-Tor (מהותי)"
#: torbutton.prefs.kill_bad_js
msgid "Hook dangerous javascript (crucial)"
-msgstr ""
+msgstr "אתר סקריפטים מסוכנים (מהותי)"
#: torbutton.prefs.isolate_content
msgid "Isolate dynamic content to Tor state (crucial)"
-msgstr ""
+msgstr "Isolate dynamic content to Tor state (crucial)"
#: torbutton.prefs.no_updates
msgid "Disable updates during Tor usage"
-msgstr ""
+msgstr "השבת עדכונים בזמן שימוש ב-Tor"
#: torbutton.prefs.set_uagent
msgid "Set user agent for Tor usage (crucial)"
-msgstr ""
+msgstr "הגדרת סוכן משתמש עבור שימוש Tor (חיוני)"
#: torbutton.prefs.dynamic
msgid "Dynamic Content"
-msgstr ""
+msgstr "תוכן דינאמי"
#: torbutton.prefs.cookies
msgid "Cookies"
-msgstr "עוגיות"
+msgstr "קוקיז"
#: torbutton.prefs.cache
msgid "Cache"
-msgstr "Cache"
+msgstr "מטמון"
#: torbutton.prefs.history
msgid "History"
@@ -296,7 +301,7 @@
#: torbutton.prefs.no_search
msgid "Disable search suggestions during Tor (recommended)"
-msgstr ""
+msgstr "השבת הצעות חיפוש ב-Tor (מומלץ)"
#: torbutton.prefs.shutdown
msgid "Shutdown"
@@ -304,31 +309,31 @@
#: torbutton.prefs.tor_shutdown
msgid "Clear Tor cookies during Tor-enabled browser shutdown"
-msgstr ""
+msgstr "מחק קוקיז של Tor בסגירתו"
#: torbutton.prefs.all_shutdown
msgid "Clear cookies during any browser shutdown"
-msgstr ""
+msgstr "נקה קוקיז במהלך סגירה של כל דפדפן"
#: torbutton.prefs.no_shutdown
msgid "Do not clear my cookies at shutdown"
-msgstr ""
+msgstr "אל תנקה את הקוקיז שלי בזמן סגירת הדפדפן"
#: torbutton.prefs.disable_sessionstore
msgid "Disable Session Saving (recommended)"
-msgstr ""
+msgstr "ביטול שמירת מושב (מומלץ)"
#: torbutton.prefs.headers
msgid "Headers"
-msgstr ""
+msgstr "כותרות"
#: torbutton.prefs.spoof_english
msgid "Spoof US English Browser"
-msgstr ""
+msgstr "דפדפן אנגלית לזייף ארה\"ב"
#: torbutton.prefs.refererspoofing
msgid "Referer spoofing"
-msgstr ""
+msgstr "זיוף Referer"
#: torbutton.prefs.spoofblank
msgid "Spoof blank referer during Tor usage (may break some sites)"
@@ -336,11 +341,11 @@
#: torbutton.prefs.smartspoof
msgid "Smart referer spoof during Tor usage (spoofs cross domain referers)"
-msgstr ""
+msgstr "לזייף referer חכם במהלך שימוש טור (משייכי מזייף צולב דומיין)"
#: torbutton.prefs.nospoof
msgid "No referer spoof during Tor usage (sends referers as normal)"
-msgstr ""
+msgstr "לא לזייף מפנה במהלך שימוש תור (שולח משייכים כרגיל)"
#: torbutton.prefs.disable_domstorage
msgid "Disable DOM Storage during Tor usage (crucial)"
@@ -348,23 +353,23 @@
#: torbutton.prefs.forms
msgid "Forms"
-msgstr ""
+msgstr "טפסים"
#: torbutton.prefs.block_tforms
msgid "Block password+form saving during Tor (recommended)"
-msgstr ""
+msgstr "חסום שמירה של סיסמאות וטפסים במהלך Tor (מומלץ)"
#: torbutton.prefs.block_ntforms
msgid "Block password+form saving during Non-Tor (optional)"
-msgstr ""
+msgstr "חסום שמירה של סיסמאות וטפסים במהלך שימוש שאינו של Tor (מומלץ)"
#: torbutton.prefs.tor
msgid "Tor"
-msgstr ""
+msgstr "Tor"
#: torbutton.prefs.non_tor
msgid "Non-Tor"
-msgstr ""
+msgstr "לא של Tor"
#: torbutton.prefs.restore_tor
msgid "On session restored startup, set Tor state to:"
@@ -372,7 +377,7 @@
#: torbutton.prefs.startup_tor
msgid "On browser startup, set Tor state to:"
-msgstr ""
+msgstr "בהפעלת הדפדפן, קבע את המצב של Tor ל:"
#: torbutton.prefs.reload_crashed_jar
msgid "Reload cookie jar/clear cookies on Firefox crash (recommended)"
@@ -428,23 +433,23 @@
#: torbutton.prefs.startup
msgid "Startup"
-msgstr ""
+msgstr "הפעלה"
#: torbutton.prefs.block_tor_file_net
msgid "Block Tor access to network from file:// urls (recommended)"
-msgstr ""
+msgstr "חסום גישת Tor לרשת מכתובות file:// (מומלץ)"
#: torbutton.prefs.block_nontor_file_net
msgid "Block Non-Tor access to network from file:// urls"
-msgstr ""
+msgstr "חסום גישה לא של Tor לרשת מכתובות file://"
#: torbutton.prefs.restore_defaults
msgid "Restore Defaults"
-msgstr ""
+msgstr "חזרה לברירת מחדל"
#: torbutton.prefs.test_settings
msgid "Test Settings"
-msgstr ""
+msgstr "בחן הגדרות"
#: torbutton.prefs.test_auto
msgid ""
@@ -457,11 +462,11 @@
#: torbutton.prefs.tor_memory_jar
msgid "Do not write Tor cookies to disk"
-msgstr ""
+msgstr "אל תכתוב קוקיז של Tor לדיסק הקשיח"
#: torbutton.prefs.nontor_memory_jar
msgid "Do not write Non-Tor cookies to disk"
-msgstr ""
+msgstr "אל תכתוב קוקיז לא של Tor לדיסק הקשיח"
#: torbutton.prefs.session_restore
msgid "Have the session store save and restore these tabs:"
@@ -469,11 +474,11 @@
#: torbutton.prefs.nontor_tabs
msgid "Tabs loaded in Non-Tor"
-msgstr ""
+msgstr "כרטיסיות טעונות לא ב-Tor"
#: torbutton.prefs.tor_tabs
msgid "Tabs loaded in Tor"
-msgstr ""
+msgstr "כרטיסיות טעונות ב-Tor"
#: torbutton.prefs.socks_vfour
msgid "SOCKS v4"
@@ -485,7 +490,7 @@
#: torbutton.prefs.no_proxies_on
msgid "No Proxies for: "
-msgstr ""
+msgstr "אין פרוקסים עבור:"
#: torbutton.prefs.no_proxy_warning
msgid "Warning: Avoid using any hostnames above"
@@ -517,11 +522,11 @@
#: torbutton.cookiedialog.title
msgid "Manage Cookie Protections"
-msgstr ""
+msgstr "נהל הגנות קוקיז"
#: torbutton.cookiedialog.lockCol
msgid "Protected"
-msgstr ""
+msgstr "מוגן"
#: torbutton.cookiedialog.domainCol
msgid "Host"
@@ -529,35 +534,35 @@
#: torbutton.cookiedialog.nameCol
msgid "Name"
-msgstr ""
+msgstr "שם"
#: torbutton.cookiedialog.pathCol
msgid "Path"
-msgstr ""
+msgstr "מעבר"
#: torbutton.cookiedialog.protectCookie
msgid "Protect Cookie"
-msgstr ""
+msgstr "הגן על הקוקי"
#: torbutton.cookiedialog.removeCookie
msgid "Remove Cookie"
-msgstr ""
+msgstr "מחק את הקוקי"
#: torbutton.cookiedialog.unprotectCookie
msgid "Unprotect Cookie"
-msgstr ""
+msgstr "אל תגן על הקוקי"
#: torbutton.cookiedialog.removeAllBut
msgid "Remove All But Protected"
-msgstr ""
+msgstr "מחק את כל הקוקיז הלא מוגנים"
#: torbutton.cookiedialog.saveAllCookies
msgid "Protect New Cookies"
-msgstr ""
+msgstr "הגן על קוקיז חדשים"
#: torbutton.cookiedialog.doNotSaveAllCookies
msgid "Do Not Protect New Cookies"
-msgstr ""
+msgstr "אל תגן על קוקיז חדשים"
#: torbutton.prefs.disable_livemarks
msgid "Disable Livemark updates during Tor usage"
@@ -565,19 +570,19 @@
#: torbutton.prefs.dtd_recommended
msgid "(recommended)"
-msgstr ""
+msgstr "(מומלץ)"
#: torbutton.prefs.dtd_optional
msgid "(optional)"
-msgstr ""
+msgstr "(אופציונלי)"
#: torbutton.prefs.dtd_crucial
msgid "(crucial)"
-msgstr ""
+msgstr "(מהותי)"
#: torbutton.prefs.update_torbutton_via_tor
msgid "Redirect Torbutton updates through Tor"
-msgstr ""
+msgstr "הורד עדכונים ל-Torbutton דרך Tor"
#: torbutton.prefs.dodge_google_captcha
msgid ""
@@ -587,23 +592,23 @@
#: torbutton.prefs.engine1
msgid "ixquick.com"
-msgstr ""
+msgstr "ixquick.com"
#: torbutton.prefs.engine2
msgid "Bing.com"
-msgstr ""
+msgstr "Bing.com"
#: torbutton.prefs.engine3
msgid "Yahoo.com"
-msgstr ""
+msgstr "Yahoo.com"
#: torbutton.prefs.engine4
msgid "startpage.com"
-msgstr ""
+msgstr "startpage.com"
#: torbutton.prefs.engine5
msgid "duckduckgo.com"
-msgstr ""
+msgstr "duckduckgo.com"
#: torbutton.prefs.fix_google_srch
msgid "Strip platform and language off of Google Search Box queries"
Modified: translation/trunk/projects/torbutton/po/he/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/he/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/he/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -1,14 +1,15 @@
#
# Translators:
# Amichay P. K. <am1chay.p.k(a)gmail.com>, 2011.
+# <jacobpa9(a)gmail.com>, 2012.
#. extracted from ../src/chrome/locale/en/torbutton.properties
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-16 14:26+0000\n"
+"Last-Translator: יעקב פייקין <jacobpa9(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: he\n"
"MIME-Version: 1.0\n"
@@ -310,7 +311,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "מידע Torbutton חשוב"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -328,6 +329,13 @@
"To remove Torbutton, go to Tools->Addons->Extensions and then click the "
"Remove button next to Torbutton."
msgstr ""
+"Torbutton עכשיו עובד אחרת: אי-אפשר לכבות אותו יותר. עשינו את השינוי הזה כי "
+"זה לא בטוח להשתמש ב-Torbutton בדפדפן שמתמשים בו לא רק ל-Tor. היו יותר מידי "
+"באגים שלא יכולנו לתקן בשום דרך אחרת. אם ברצונכם להמשיך בשימוש רגיל "
+"בפיירפוקס, עליכם להסיר את Torbutton ולהוריד את Tor Browser Bundle. מאפייני "
+"הפרטיות של Tor Browser מעולים למאפייני הפרטיות הרגילים של פיירפוקס, אפילו אם "
+"פיירפוקס בשימוש יחד עם Torbutton. להסרת Torbutton, גשו לכלים←תוספות←הרחבות "
+"ואז לחצו על כפתור ההסרה ליד ה-Torbutton."
#: torbutton.popup.short_torbrowser
msgid ""
@@ -337,3 +345,30 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"מידע חשוב על Torbutton!\n"
+"Torbutton עכשיו פועל תמיד.\n"
+"לחצו על ה-Torbutton למידע נוסף."
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/hi/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/hi/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/hi/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/hr/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/hr/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/hr/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -285,3 +285,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ht/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ht/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ht/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/hu/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/hu/torbutton.dtd.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/hu/torbutton.dtd.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -1,14 +1,14 @@
#
# Translators:
-# <viktor.varga(a)gmail.com>, 2011.
+# <viktor.varga(a)gmail.com>, 2011-2012.
#. extracted from ../src/chrome/locale/en/torbutton.dtd
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-10-07 16:14+0000\n"
+"Last-Translator: vargaviktor <viktor.varga(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
@@ -642,7 +642,7 @@
#: torbutton.prefs.engine4
msgid "startpage.com"
-msgstr ""
+msgstr "startpage.com"
#: torbutton.prefs.engine5
msgid "duckduckgo.com"
Modified: translation/trunk/projects/torbutton/po/hu/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/hu/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/hu/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -1,14 +1,14 @@
#
# Translators:
-# <viktor.varga(a)gmail.com>, 2011.
+# <viktor.varga(a)gmail.com>, 2011-2012.
#. extracted from ../src/chrome/locale/en/torbutton.properties
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-10-07 16:28+0000\n"
+"Last-Translator: vargaviktor <viktor.varga(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: hu\n"
"MIME-Version: 1.0\n"
@@ -330,7 +330,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Fontos Torbutton információ"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -348,6 +348,20 @@
"To remove Torbutton, go to Tools->Addons->Extensions and then click the "
"Remove button next to Torbutton."
msgstr ""
+"A Torbutton most már másképp működik: nem kapcsolható ki többé.\n"
+"\n"
+"Azért hoztok ezt a döntést, mert nem biztonságos egy olyan böngészőből "
+"Torbuttont használni, amely Tor használatán kívüli is böngészésre használt. "
+"Túl soh hiba történhet, amit másképp nem tudunk javítani.\n"
+"\n"
+"Ha szeretné a Firefox-ot normálisan használni, akkor a Torbutton-t el kell "
+"távolítania, és helyette letölteni a Tor Böngésző Csomagot. Az adatvédelmi "
+"beállításai a Tor Böngészőnek továbbá magasabbak, mint a normális Firefox-"
+"nak, még akkor is, ha a Firefox Torbutton-nal került együtt felhasználásra.\n"
+"\n"
+"A Torbutton eltávolításához navigáljon az "
+"Eszközök>Kiegészítők>Kiterjesztések menüpontba., majd nyomja meg az "
+"Eltávolítás gombot a Torbutton mellett."
#: torbutton.popup.short_torbrowser
msgid ""
@@ -357,3 +371,32 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Fontos Torbutton információ!\n"
+"\n"
+"a Torbutton most már mindig engedélyezett.\n"
+"\n"
+"Kattintson a Torbutton-ra további információkért."
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/hy/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/hy/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/hy/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/id/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/id/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/id/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -353,3 +353,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/is/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/is/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/is/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/it/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/it/torbutton.dtd.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/it/torbutton.dtd.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -1,6 +1,7 @@
#
# Translators:
# <a.n0on3(a)gmail.com>, 2011.
+# <jan.reister(a)unimi.it>, 2012.
# runasand <runa.sandvik(a)gmail.com>, 2011.
# <tru74368(a)yahoo.com>, 2011.
#. extracted from ../src/chrome/locale/en/torbutton.dtd
@@ -8,9 +9,9 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-20 15:25+0000\n"
+"Last-Translator: jan <jan.reister(a)unimi.it>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/torproject/"
"language/it/)\n"
"Language: it\n"
@@ -648,7 +649,7 @@
#: torbutton.prefs.engine4
msgid "startpage.com"
-msgstr ""
+msgstr "startpage.com"
#: torbutton.prefs.engine5
msgid "duckduckgo.com"
Modified: translation/trunk/projects/torbutton/po/it/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/it/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/it/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-09-11 17:02+0000\n"
"Last-Translator: Vincenzo Cerminara <rebek994(a)gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/projects/p/torproject/"
@@ -383,3 +383,27 @@
"Torbutton ora è sempre abilitato.\n"
"\n"
"Clicca su Torbutton per ulteriori informazioni."
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ja/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ja/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ja/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -320,3 +320,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/jv/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/jv/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/jv/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ka/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ka/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ka/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/km/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/km/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/km/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/kn/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/kn/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/kn/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ko/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ko/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ko/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -351,3 +351,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ku/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ku/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ku/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/kw/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/kw/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/kw/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ky/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ky/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ky/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/lb/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/lb/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/lb/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ln/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ln/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ln/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/lo/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/lo/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/lo/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/lt/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/lt/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/lt/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -283,3 +283,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/lv/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/lv/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/lv/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -6,9 +6,9 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-25 08:52+0000\n"
+"Last-Translator: Ojars Balcers <ojars.balcers(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: lv\n"
"MIME-Version: 1.0\n"
@@ -313,7 +313,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Svarīga Torbutton informācija"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -331,6 +331,19 @@
"To remove Torbutton, go to Tools->Addons->Extensions and then click the "
"Remove button next to Torbutton."
msgstr ""
+"Torbutton tagad strādā citādāk: to vairs nevarat izslēgt.\n"
+"\n"
+"Mēs izdarījām šo izmaiņu jo nav droši izmantot Torbutton pārlūkā, kurš tiek "
+"arī izmantots pārlūkošanai, kas neizmanto Tor. Vienkārši bija pārāk daudz "
+"kļūdu, kuras mēs savādāk nevarējām labot.\n"
+"\n"
+"Ja vēlaties turpināt izmantot Firefox kā ierasts, atinstalējiet Torbutton un "
+"lejupielādējiet Tor Browser Bundle. Tor Browser privātuma rekvizīti ir "
+"svarīgāki nekā Firefox rekvizīti, pat tad ja Firefox tiek izmantots ar "
+"Torbutton.\n"
+"\n"
+"Lai nonēmtu Torbutton, izvēlieties Tools->Addons->Extensions un klikšķiniet "
+"uz Remove pogu, kura atrodas blakus Torbutton."
#: torbutton.popup.short_torbrowser
msgid ""
@@ -340,3 +353,32 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Svarīga Torbutton informācija!\n"
+"\n"
+"Torbutton tagad ir iespējots vienmēr.\n"
+"\n"
+"Noklikšķiniet uz Torbutton, lai saņemtu papildu informāciju."
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/mg/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/mg/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/mg/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/mi/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/mi/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/mi/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/mk/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/mk/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/mk/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ml/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ml/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ml/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/mn/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/mn/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/mn/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/mr/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/mr/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/mr/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ms/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ms/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ms/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/mt/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/mt/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/mt/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -283,3 +283,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/my/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/my/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/my/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -350,3 +350,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/nah/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/nah/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/nah/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/nap/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/nap/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/nap/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/nb/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/nb/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/nb/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -318,3 +318,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ne/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ne/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ne/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/nl/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/nl/torbutton.dtd.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/nl/torbutton.dtd.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -2,14 +2,15 @@
# Translators:
# runasand <runa.sandvik(a)gmail.com>, 2011.
# Shondoit Walker <shondoit+transifex(a)gmail.com>, 2011.
+# <unknown365(a)hotmail.com>, 2012.
#. extracted from ../src/chrome/locale/en/torbutton.dtd
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-25 23:09+0000\n"
+"Last-Translator: unknown365 <unknown365(a)hotmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
@@ -626,7 +627,7 @@
#: torbutton.prefs.engine4
msgid "startpage.com"
-msgstr ""
+msgstr "startpage.com"
#: torbutton.prefs.engine5
msgid "duckduckgo.com"
Modified: translation/trunk/projects/torbutton/po/nl/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/nl/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/nl/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -2,14 +2,15 @@
# Translators:
# runasand <runa.sandvik(a)gmail.com>, 2011.
# Shondoit Walker <shondoit+transifex(a)gmail.com>, 2011.
+# <unknown365(a)hotmail.com>, 2012.
#. extracted from ../src/chrome/locale/en/torbutton.properties
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-25 22:49+0000\n"
+"Last-Translator: unknown365 <unknown365(a)hotmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: nl\n"
"MIME-Version: 1.0\n"
@@ -329,7 +330,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Belangrijke Torbutton informatie"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -347,6 +348,20 @@
"To remove Torbutton, go to Tools->Addons->Extensions and then click the "
"Remove button next to Torbutton."
msgstr ""
+"Torbutton werkt nu anders: je kan het niet meer uitzetten.\n"
+"\n"
+"We hebben deze verandering doorgevoerd, omdat het niet veilig is om "
+"Torbutton te gebruiken in een browser welke ook gebruikt wordt voor niet-Tor "
+"browsen. Er zaten teveel fouten in welke we niet konden repareren op een "
+"andere manier.\n"
+"\n"
+"Als je Firefox wilt blijven gebruiken op de normale manier, dan zal je "
+"Torbutten moeten deinstalleren en de Tor Browser Bundle moeten downloaden. "
+"De privacy eigenschappen van Tor Browser zijn ook superieur ten opzichte van "
+"de normale Firefox, zelfs wanneer Firefox gebruikt wordt met Torbutton.\n"
+"\n"
+"Om Torbutton te verwijderen, ga naar Extra->Add-ons->Extensies en klik dan "
+"op de knop Uitschakelen naast Torbutton."
#: torbutton.popup.short_torbrowser
msgid ""
@@ -356,3 +371,32 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Belangrijke Torbutton Informatie!\n"
+"\n"
+"Torbutten is nu altijd ingeschakeld.\n"
+"\n"
+"Klik op de Torbutton voor meer informatie."
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/nn/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/nn/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/nn/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/nso/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/nso/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/nso/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/oc/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/oc/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/oc/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/or/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/or/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/or/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/pa/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/pa/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/pa/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/pap/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/pap/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/pap/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/pl/torbutton.dtd.po
===================================================================
--- translation/trunk/projects/torbutton/po/pl/torbutton.dtd.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/pl/torbutton.dtd.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -1,5 +1,6 @@
#
# Translators:
+# <bog.d(a)gazeta.pl>, 2012.
# bogdrozd <bog.d(a)gazeta.pl>, 2011.
# runasand <runa.sandvik(a)gmail.com>, 2011.
#. extracted from ../src/chrome/locale/en/torbutton.dtd
@@ -7,9 +8,9 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-16 09:42+0000\n"
+"Last-Translator: bogdrozd <bog.d(a)gazeta.pl>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
@@ -626,7 +627,7 @@
#: torbutton.prefs.engine4
msgid "startpage.com"
-msgstr ""
+msgstr "startpage.com"
#: torbutton.prefs.engine5
msgid "duckduckgo.com"
Modified: translation/trunk/projects/torbutton/po/pl/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/pl/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/pl/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -1,5 +1,6 @@
#
# Translators:
+# <bog.d(a)gazeta.pl>, 2012.
# bogdrozd <bog.d(a)gazeta.pl>, 2011.
# mikeperry <mikeperry-trans(a)fscked.org>, 2011.
# runasand <runa.sandvik(a)gmail.com>, 2011.
@@ -8,9 +9,9 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-16 09:49+0000\n"
+"Last-Translator: bogdrozd <bog.d(a)gazeta.pl>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
@@ -328,7 +329,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Ważne informacje o Torbuttonie"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -346,6 +347,18 @@
"To remove Torbutton, go to Tools->Addons->Extensions and then click the "
"Remove button next to Torbutton."
msgstr ""
+"Torbutton teraz działa inaczej: nie można już go wyłączyć.\n"
+"\n"
+"Zrobiliśmy tę zmianę, gdyż nie jest bezpiecznie używać Torbuttona w "
+"przeglądarce używanej także do przeglądania sieci bez Tora. Było za dużo "
+"błędów, których nie mogliśmy naprawić inaczej.\n"
+"\n"
+"Jeśli chcesz dalej normalnie używać Firefoksa, odinstaluj Torbutton i "
+"pobierz Paczkę Tora z Przeglądarką. Cechy prywatności w Przeglądarce Tora są "
+"lepsze od tych w normalnym Firefoksie, nawet gdy jest używany z Torbutonem.\n"
+"\n"
+"Aby usunąć Torbuttona, wejdź do Narzędzia->Dodatki->Rozszerzenia i kliknij "
+"przycisk Usuń obok Torbuttona."
#: torbutton.popup.short_torbrowser
msgid ""
@@ -355,3 +368,32 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Ważne informacje o Torbuttonie!\n"
+"\n"
+"Torbutton jest teraz ciągle włączony.\n"
+"\n"
+"Kliknij Turbutton, aby dowiedzieć się więcej."
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/pms/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/pms/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/pms/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ps/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ps/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ps/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/pt/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/pt/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/pt/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -321,3 +321,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/pt_BR/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/pt_BR/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/pt_BR/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -356,3 +356,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ro/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ro/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ro/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-31 23:47+0000\n"
"Last-Translator: anouser <anouser(a)yahoo.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -362,3 +362,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ru/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ru/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ru/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: Russian (http://www.transifex.com/projects/p/torproject/"
@@ -358,3 +358,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/sco/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/sco/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/sco/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/sk/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/sk/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/sk/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-09-06 19:40+0000\n"
"Last-Translator: K0L0M4N <koloman375(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -299,3 +299,27 @@
"Torbutton je odteraz povolený.\n"
"\n"
"Stlačte Torbutton pre viacej informácií."
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/sl/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/sl/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/sl/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -305,3 +305,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/so/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/so/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/so/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/son/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/son/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/son/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/sq/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/sq/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/sq/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/sr/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/sr/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/sr/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -8,7 +8,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -360,3 +360,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/st/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/st/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/st/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/su/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/su/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/su/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/sv/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/sv/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/sv/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -1,14 +1,15 @@
#
# Translators:
# runasand <runa.sandvik(a)gmail.com>, 2011.
+# <unknown365(a)hotmail.com>, 2012.
#. extracted from ../src/chrome/locale/en/torbutton.properties
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-28 21:31+0000\n"
+"Last-Translator: unknown365 <unknown365(a)hotmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: sv\n"
"MIME-Version: 1.0\n"
@@ -55,6 +56,8 @@
"Torbutton provides a button to easily enable or disable pointing Firefox to "
"the Tor proxy"
msgstr ""
+"Torbutton ger en knapp för att enkelt aktivera eller inaktivera peka Firefox "
+"till Tor proxy"
#: torbutton.popup.history.warning
msgid ""
@@ -76,6 +79,10 @@
"Use Save-As instead.\n"
"\n"
msgstr ""
+"Torbutton blockerade direkt Tor belastning insticksprogram.\n"
+"\n"
+"Använd spara som i stället.\n"
+"\n"
#: torbutton.popup.confirm_ca_certs
msgid ""
@@ -94,10 +101,16 @@
"\n"
"Do you wish to continue anyway?"
msgstr ""
+"Varning!\n"
+"\n"
+"Torbutton på Firefox 3 är känt för att läcka din tidszon och livemarks via "
+"Tor. \n"
+"\n"
+"Vill du fortsätta ändå?"
#: torbutton.popup.toggle.warning
msgid "You need to toggle Tor or restart for your settings to take effect."
-msgstr ""
+msgstr "Du måste växla Tor eller starta för inställningarna ska börja gälla."
#: torbutton.popup.test.success
msgid "Tor proxy test successful!"
@@ -106,6 +119,7 @@
#: torbutton.popup.test.failure
msgid "Tor proxy test FAILED! Check your proxy and Polipo settings."
msgstr ""
+"Tor proxy MISSLYCKADES! Kontrollera din proxy och inställningar polipo."
#: torbutton.popup.test.confirm_toggle
msgid ""
@@ -122,6 +136,8 @@
"Click OK to test Tor proxy settings. This test will happen in the "
"background. Please be patient."
msgstr ""
+"Klicka på OK för att testa Tor proxyinställningar. Detta test kommer att ske "
+"i bakgrunden. Ha tålamod."
#: torbutton.panel.label.verified
msgid "Tor Verified"
@@ -133,6 +149,9 @@
"\n"
"Are you sure you want to enable anyway?"
msgstr ""
+"Den automatiska Tor proxy misslyckades att använda Tor.\n"
+"\n"
+"Är du säker på att du vill aktivera ändå?"
#: torbutton.prefs.recommended
msgid "(recommended)"
@@ -148,13 +167,15 @@
#: torbutton.popup.external.title
msgid "Load external content?"
-msgstr ""
+msgstr "Fyll externt innehåll?"
#: torbutton.popup.external.app
msgid ""
"An external application is needed to handle:\n"
"\n"
msgstr ""
+"En extern applikation för att hantera:\n"
+"\n"
#: torbutton.popup.external.note
msgid ""
@@ -162,6 +183,9 @@
"\n"
"NOTE: External applications are NOT Tor safe by default and can unmask you!\n"
msgstr ""
+"\n"
+"\n"
+"OBS: Externa program är INTE Tor säkra som standard och kan avslöja dig!\n"
#: torbutton.popup.external.suggest
msgid ""
@@ -170,6 +194,11 @@
"or in a VM,\n"
"or consider using a transparent Tor proxy like Tails LiveCD or torsocks.\n"
msgstr ""
+"\n"
+"Om denna fil är inte tillförlitlig, bör du spara antingen den för att visa "
+"offline eller i en VM,\n"
+"eller överväga att använda en transparent Tor proxy som Tails LiveCD eller "
+"torsocks.\n"
#: torbutton.popup.launch
msgid "Launch application"
@@ -181,12 +210,13 @@
#: torbutton.popup.dontask
msgid "Always launch applications from now on"
-msgstr ""
+msgstr "Alltid starta program från och med nu"
#: torbutton.popup.test.no_http_proxy
msgid ""
"Tor proxy test: Local HTTP Proxy is unreachable. Is Polipo running properly?"
msgstr ""
+"Tor proxy test: Lokal HTTP Proxy är onåbar. Är Polipo igång ordentligt?"
#: torbutton.popup.captcha.title
msgid "Avoid Google Captchas?"
@@ -197,10 +227,12 @@
"Torbutton detected a Google Captcha. Would you like to be redirected to "
"another search engine for this query?"
msgstr ""
+"Torbutton upptäckt en Google Captcha. Vill du att omdirigeras till en annan "
+"sökmotor för den här frågan?"
#: torbutton.popup.captcha.always
msgid "Always perform this action from now on"
-msgstr ""
+msgstr "Utför alltid denna åtgärd från och med nu"
#: torbutton.popup.redirect
msgid "Redirect"
@@ -226,6 +258,10 @@
"\n"
"Are you running Tor Browser Bundle?"
msgstr ""
+"Torbutton kan inte säkert ge dig en ny identitet. Det har inte tillgång till "
+"Tor Control Port.\n"
+"\n"
+"Kör du Tor Browser Bundle?"
#: torbutton.popup.use_tbb
msgid ""
@@ -241,22 +277,27 @@
msgid ""
"Torbutton cannot update preferences in the Tor Browser profile directory."
msgstr ""
+"Torbutton kan inte uppdatera inställningar i Tor Browser profilen katalog."
#: torbutton.popup.permission_denied
msgid ""
"Please either reset the permissions of the Tor Browser directory or copy it "
"to a new location."
msgstr ""
+"Du antingen återställa behörigheterna Tor Browser katalogen eller kopiera "
+"den till en ny plats."
#: torbutton.popup.device_full
msgid ""
"The disk appears to be full. Please free up space or move Tor Browser to a "
"new device."
msgstr ""
+"Skivan verkar vara full. Vänligen frigöra utrymme eller flytta Tor "
+"webbläsare till en ny enhet."
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "Viktig Torbutton Information"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -283,3 +324,32 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Viktig Torbutton information!\n"
+"\n"
+"Torbutton är nu alltid aktiverad.\n"
+"\n"
+"Klicka på Torbutton för mer information."
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/sw/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/sw/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/sw/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ta/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ta/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ta/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/te/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/te/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/te/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/templates/torbutton.dtd.pot
===================================================================
--- translation/trunk/projects/torbutton/po/templates/torbutton.dtd.pot 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/templates/torbutton.dtd.pot 2012-10-09 22:44:12 UTC (rev 25843)
@@ -3,7 +3,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
Modified: translation/trunk/projects/torbutton/po/templates/torbutton.properties.pot
===================================================================
--- translation/trunk/projects/torbutton/po/templates/torbutton.properties.pot 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/templates/torbutton.properties.pot 2012-10-09 22:44:12 UTC (rev 25843)
@@ -3,7 +3,7 @@
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -277,3 +277,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/tg/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/tg/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/tg/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/th/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/th/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/th/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ti/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ti/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ti/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/tk/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/tk/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/tk/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/tr/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/tr/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/tr/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -9,7 +9,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-09-05 20:21+0000\n"
"Last-Translator: DalinOK <oguzkagan(a)gmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -372,3 +372,27 @@
"Önemli Torbutton bilgisi!\n"
"Torbutton şimdi tamamen etkinleştirildi.\n"
"Daha fazla bilgi için Torbutton'a tıklayınız."
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/uk/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/uk/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/uk/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -6,7 +6,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -295,3 +295,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ur/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ur/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ur/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/ve/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/ve/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/ve/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/vi/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/vi/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/vi/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -359,3 +359,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/wa/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/wa/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/wa/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/wo/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/wo/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/wo/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/zh_CN/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/zh_CN/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/zh_CN/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -2,14 +2,15 @@
# Translators:
# jhk <j_hk001(a)126.com>, 2011.
# runasand <runa.sandvik(a)gmail.com>, 2011.
+# <unknown365(a)hotmail.com>, 2012.
#. extracted from ../src/chrome/locale/en/torbutton.properties
msgid ""
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
-"PO-Revision-Date: 2012-08-30 22:10+0000\n"
-"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
+"PO-Revision-Date: 2012-09-25 22:53+0000\n"
+"Last-Translator: unknown365 <unknown365(a)hotmail.com>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
@@ -293,7 +294,7 @@
#: torbutton.title.prompt_torbrowser
msgid "Important Torbutton Information"
-msgstr ""
+msgstr "重要的Torbutton的信息"
#: torbutton.popup.prompt_torbrowser
msgid ""
@@ -320,3 +321,32 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+"Torbutton的重要信息\n"
+"\n"
+"Torbutton的是現在始終處於啟用狀態\n"
+"\n"
+"點擊Torbutton的更多信息"
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/zh_HK/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/zh_HK/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/zh_HK/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/zh_TW/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/zh_TW/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/zh_TW/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-09-12 13:26-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2012-08-30 22:10+0000\n"
"Last-Translator: mikeperry <mikeperry-trans(a)fscked.org>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -290,3 +290,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
Modified: translation/trunk/projects/torbutton/po/zu/torbutton.properties.po
===================================================================
--- translation/trunk/projects/torbutton/po/zu/torbutton.properties.po 2012-10-08 18:30:12 UTC (rev 25842)
+++ translation/trunk/projects/torbutton/po/zu/torbutton.properties.po 2012-10-09 22:44:12 UTC (rev 25843)
@@ -5,7 +5,7 @@
msgstr ""
"Project-Id-Version: The Tor Project\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-08-30 14:54-0700\n"
+"POT-Creation-Date: 2012-10-09 15:37-0700\n"
"PO-Revision-Date: 2010-12-05 19:40+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL(a)li.org>\n"
@@ -282,3 +282,27 @@
"\n"
"Click on the Torbutton for more information."
msgstr ""
+
+#. # Canvas permission prompt. Strings are kept here for ease of translation.
+#: canvas.siteprompt
+msgid ""
+"This website (%S) attempted to access image data on a canvas. Since canvas "
+"image data can be used to discover information about your computer, blank "
+"image data was returned this time."
+msgstr ""
+
+#: canvas.allow
+msgid "Allow in the Future"
+msgstr ""
+
+#: canvas.allowAccessKey
+msgid "A"
+msgstr ""
+
+#: canvas.never
+msgid "Never for This Site"
+msgstr ""
+
+#: canvas.neverAccessKey
+msgid "e"
+msgstr ""
1
0

09 Oct '12
commit 115394478d1bf987b8b7a9ac43d321eb8951e669
Merge: 9a21a47 1720f15
Author: Mike Perry <mikeperry-git(a)fscked.org>
Date: Tue Oct 9 15:12:30 2012 -0700
Merge branch 'maint-2.2' into maint-2.3
1
0

[torbrowser/master] Include anti-fingerprinting patches from Pearl Crescent, LLC.
by mikeperry@torproject.org 09 Oct '12
by mikeperry@torproject.org 09 Oct '12
09 Oct '12
commit 1720f1520443c0c1e3be03abbb467662d4d54e33
Author: Mike Perry <mikeperry-git(a)fscked.org>
Date: Tue Oct 9 15:04:56 2012 -0700
Include anti-fingerprinting patches from Pearl Crescent, LLC.
---
...nents.interfaces-lookupMethod-from-conten.patch | 10 +-
...0002-Make-Permissions-Manager-memory-only.patch | 4 +-
...-Make-Intermediate-Cert-Store-memory-only.patch | 4 +-
.../firefox/0004-Add-a-string-based-cacheKey.patch | 4 +-
.../0005-Block-all-plugins-except-flash.patch | 4 +-
...ontent-pref-service-memory-only-clearable.patch | 4 +-
...owser-exit-when-not-launched-from-Vidalia.patch | 6 +-
.../0008-Disable-SSL-Session-ID-tracking.patch | 6 +-
...observer-event-to-close-persistent-connec.patch | 4 +-
...ice-and-system-specific-CSS-Media-Queries.patch | 68 ++-
...11-Limit-the-number-of-fonts-per-document.patch | 4 +-
.../0012-Rebrand-Firefox-to-TorBrowser.patch | 4 +-
.../0013-Make-Download-manager-memory-only.patch | 4 +-
.../0014-Add-DDG-and-StartPage-to-Omnibox.patch | 4 +-
...-nsICacheService.EvictEntries-synchronous.patch | 8 +-
.../firefox/0016-Prevent-WebSocket-DNS-leak.patch | 4 +-
...ize-HTTP-request-order-and-pipeline-depth.patch | 4 +-
...th-headers-before-the-modify-request-obse.patch | 4 +-
...Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch | 4 +-
...d-mozIThirdPartyUtil.getFirstPartyURI-API.patch | 4 +-
.../0021-Add-canvas-image-extraction-prompt.patch | 551 ++++++++++++++++++++
...nt-window-coordinates-for-mouse-event-scr.patch | 43 ++
...se-physical-screen-info.-via-window-and-w.patch | 312 +++++++++++
...not-expose-system-colors-to-CSS-or-canvas.patch | 537 +++++++++++++++++++
24 files changed, 1541 insertions(+), 60 deletions(-)
diff --git a/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch b/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch
index c99e10a..1a82800 100644
--- a/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch
+++ b/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch
@@ -1,7 +1,7 @@
-From 18fea351a9f218893514ccbca82c492ce81d038d Mon Sep 17 00:00:00 2001
+From 1c2ccbea73720db5405602e4033c69b706068a8b Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:40:40 -0800
-Subject: [PATCH 01/19] Block Components.interfaces,lookupMethod from content
+Subject: [PATCH 01/24] Block Components.interfaces,lookupMethod from content
This patch removes the ability of content script to access
Components.interfaces.* as well as call or access Components.lookupMethod.
@@ -20,10 +20,10 @@ https://trac.torproject.org/projects/tor/ticket/2874
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/js/xpconnect/src/XPCComponents.cpp b/js/xpconnect/src/XPCComponents.cpp
-index 3bcbf91..d5c020a 100644
+index 38bfe08..7224b9b 100644
--- a/js/xpconnect/src/XPCComponents.cpp
+++ b/js/xpconnect/src/XPCComponents.cpp
-@@ -4456,7 +4456,9 @@ nsXPCComponents::CanCreateWrapper(const nsIID * iid, char **_retval)
+@@ -4502,7 +4502,9 @@ nsXPCComponents::CanCreateWrapper(const nsIID * iid, char **_retval)
NS_IMETHODIMP
nsXPCComponents::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, char **_retval)
{
@@ -34,7 +34,7 @@ index 3bcbf91..d5c020a 100644
*_retval = xpc_CheckAccessList(methodName, allowed);
return NS_OK;
}
-@@ -4465,7 +4467,9 @@ nsXPCComponents::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, c
+@@ -4511,7 +4513,9 @@ nsXPCComponents::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, c
NS_IMETHODIMP
nsXPCComponents::CanGetProperty(const nsIID * iid, const PRUnichar *propertyName, char **_retval)
{
diff --git a/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch b/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
index 5d5a741..fa23d93 100644
--- a/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
+++ b/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
@@ -1,7 +1,7 @@
-From 336217485d707ff63ef42d2a0bc3705c2c7f7a3c Mon Sep 17 00:00:00 2001
+From cd983b1b57b1f4ae10c8deec5aa12ec957fdc855 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:45:16 -0800
-Subject: [PATCH 02/19] Make Permissions Manager memory-only
+Subject: [PATCH 02/24] Make Permissions Manager memory-only
This patch exposes a pref 'permissions.memory_only' that properly isolates the
permissions manager to memory, which is responsible for all user specified
diff --git a/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch b/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
index 912d82f..b10fb85 100644
--- a/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
+++ b/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
@@ -1,7 +1,7 @@
-From e6d127b805461470bff0dad12f5ad89fc3cd3df3 Mon Sep 17 00:00:00 2001
+From f100a7979e1a44863a8a67a09743f0e17b5dd14e Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Fri, 19 Aug 2011 17:58:23 -0700
-Subject: [PATCH 03/19] Make Intermediate Cert Store memory-only.
+Subject: [PATCH 03/24] Make Intermediate Cert Store memory-only.
This patch makes the intermediate SSL cert store exist in memory only.
diff --git a/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch b/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
index af88b70..f3afa97 100644
--- a/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
+++ b/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
@@ -1,7 +1,7 @@
-From 84668dfe7bdcd35d96ffcaf273ade5a5d8d470f8 Mon Sep 17 00:00:00 2001
+From d674d09bc233d200b1ebc47f8e6ac4ebd6e4225a Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Fri, 2 Sep 2011 20:47:02 -0700
-Subject: [PATCH 04/19] Add a string-based cacheKey.
+Subject: [PATCH 04/24] Add a string-based cacheKey.
Used for isolating cache according to same-origin policy.
---
diff --git a/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch b/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
index e6d5adc..e7a831e 100644
--- a/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
+++ b/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
@@ -1,7 +1,7 @@
-From 3457f78e346df5962449cbd5aa86624e19fd5f64 Mon Sep 17 00:00:00 2001
+From 88a390822d232ba037de1f15091977ca7e1064bf Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:50:15 -0800
-Subject: [PATCH 05/19] Block all plugins except flash.
+Subject: [PATCH 05/24] Block all plugins except flash.
We cannot use the @mozilla.org/extensions/blocklist;1 service, because we
actually want to stop plugins from ever entering the browser's process space
diff --git a/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch b/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
index 1ea7e14..17af793 100644
--- a/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
+++ b/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
@@ -1,7 +1,7 @@
-From 66ff6c30d5b1de5d549181acbba686f792fe4cb4 Mon Sep 17 00:00:00 2001
+From 71ba98d81a6ecada62af4d2ee03be050d371d996 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Thu, 8 Sep 2011 08:40:17 -0700
-Subject: [PATCH 06/19] Make content pref service memory-only + clearable
+Subject: [PATCH 06/24] Make content pref service memory-only + clearable
This prevents random urls from being inserted into content-prefs.sqllite in
the profile directory as content prefs change (includes site-zoom and perhaps
diff --git a/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch b/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
index 5d384a7..cc496d3 100644
--- a/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
+++ b/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
@@ -1,7 +1,7 @@
-From d6956a597662f3d753622377183cb317ef6a3ad4 Mon Sep 17 00:00:00 2001
+From 12579def59d67416b841f6b0a6eadfd94bba72e9 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Sun, 9 Oct 2011 22:50:07 -0700
-Subject: [PATCH 07/19] Make Tor Browser exit when not launched from Vidalia
+Subject: [PATCH 07/24] Make Tor Browser exit when not launched from Vidalia
Turns out the Windows 7 UI encourages users to "dock" their Tor Browser app
for easy relaunch. If they manage to do this, we should fail closed rather
@@ -16,7 +16,7 @@ actually be common.
1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
-index b06a17b..fc1d305 100644
+index f16a0c5..20e3666 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -1217,6 +1217,21 @@ function BrowserStartup() {
diff --git a/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch b/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
index 82438c2..39e1483 100644
--- a/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
+++ b/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
@@ -1,7 +1,7 @@
-From 70161b38e1855ce4b7a61ac1e9572fb07dfbedda Mon Sep 17 00:00:00 2001
+From 7586e413761858ce705d25d4a1673e608a162bed Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Wed, 7 Dec 2011 19:36:38 -0800
-Subject: [PATCH 08/19] Disable SSL Session ID tracking.
+Subject: [PATCH 08/24] Disable SSL Session ID tracking.
We can't easily bind SSL Session ID tracking to url bar domain,
so we have to disable them to satisfy
@@ -11,7 +11,7 @@ https://www.torproject.org/projects/torbrowser/design/#identifier-linkabili….
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/security/nss/lib/ssl/sslsock.c b/security/nss/lib/ssl/sslsock.c
-index 28e6210..fa48ecd 100644
+index 0c4d0c7..8d23fc0 100644
--- a/security/nss/lib/ssl/sslsock.c
+++ b/security/nss/lib/ssl/sslsock.c
@@ -173,7 +173,7 @@ static sslOptions ssl_defaults = {
diff --git a/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch b/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
index 39a71a4..e693c71 100644
--- a/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
+++ b/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
@@ -1,7 +1,7 @@
-From d5ef29d9219a7ff9a78f9523845a2e2966c2a266 Mon Sep 17 00:00:00 2001
+From 9c6f997dd9a44336af9a1db17f5b680cc80a0e6c Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:53:28 -0800
-Subject: [PATCH 09/19] Provide an observer event to close persistent
+Subject: [PATCH 09/24] Provide an observer event to close persistent
connections
We need to prevent linkability across "New Identity", which includes closing
diff --git a/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch b/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch
index d4f1a1a..14e584c 100644
--- a/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch
+++ b/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch
@@ -1,19 +1,14 @@
-From d3261423b0bd07fb3c0ca7b9448c9abb97053be2 Mon Sep 17 00:00:00 2001
-From: Shondoit Walker <shondoit(a)gmail.com>
-Date: Mon, 4 Jun 2012 19:15:31 +0200
-Subject: [PATCH 10/19] Limit device- and system-specific CSS Media Queries
+From 8f97f2f36adb9e4416f3d19af10880c800c846c2 Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Thu, 4 Oct 2012 14:28:48 -0400
+Subject: [PATCH 10/24] Limit device and system specific CSS Media Queries.
-This is done to address
-https://www.torproject.org/projects/torbrowser/design/#fingerprinting-linkability
-
-This also fixes bug #4795 by making queries still available for chrome windows,
-whilst returning nothing or non-device-specific values for web pages or extensions.
---
- layout/style/nsMediaFeatures.cpp | 42 ++++++++++++++++++++++++-------------
- 1 files changed, 27 insertions(+), 15 deletions(-)
+ layout/style/nsMediaFeatures.cpp | 71 ++++++++++++++++++++++++-------------
+ 1 files changed, 46 insertions(+), 25 deletions(-)
diff --git a/layout/style/nsMediaFeatures.cpp b/layout/style/nsMediaFeatures.cpp
-index 6eca06e..25735e8 100644
+index 6eca06e..5b1df7e 100644
--- a/layout/style/nsMediaFeatures.cpp
+++ b/layout/style/nsMediaFeatures.cpp
@@ -130,6 +130,9 @@ GetDeviceContextFor(nsPresContext* aPresContext)
@@ -63,7 +58,50 @@ index 6eca06e..25735e8 100644
}
static nsresult
-@@ -311,8 +315,12 @@ static nsresult
+@@ -236,13 +240,17 @@ static nsresult
+ GetColor(nsPresContext* aPresContext, const nsMediaFeature*,
+ nsCSSValue& aResult)
+ {
+- // FIXME: This implementation is bogus. nsDeviceContext
+- // doesn't provide reliable information (should be fixed in bug
+- // 424386).
+- // FIXME: On a monochrome device, return 0!
+- nsDeviceContext *dx = GetDeviceContextFor(aPresContext);
+- PRUint32 depth;
+- dx->GetDepth(depth);
++ PRUint32 depth = 24; // Always return 24 to non-chrome callers.
++
++ if (aPresContext->IsChrome()) {
++ // FIXME: This implementation is bogus. nsDeviceContext
++ // doesn't provide reliable information (should be fixed in bug
++ // 424386).
++ // FIXME: On a monochrome device, return 0!
++ nsDeviceContext *dx = GetDeviceContextFor(aPresContext);
++ dx->GetDepth(depth);
++ }
++
+ // The spec says to use bits *per color component*, so divide by 3,
+ // and round down, since the spec says to use the smallest when the
+ // color components differ.
+@@ -280,9 +288,14 @@ static nsresult
+ GetResolution(nsPresContext* aPresContext, const nsMediaFeature*,
+ nsCSSValue& aResult)
+ {
+- // Resolution values are in device pixels, not CSS pixels.
+- nsDeviceContext *dx = GetDeviceContextFor(aPresContext);
+- float dpi = float(dx->AppUnitsPerPhysicalInch()) / float(dx->AppUnitsPerDevPixel());
++ float dpi = 96; // Always return 96 to non-chrome callers.
++
++ if (aPresContext->IsChrome()) {
++ // Resolution values are in device pixels, not CSS pixels.
++ nsDeviceContext *dx = GetDeviceContextFor(aPresContext);
++ dpi = float(dx->AppUnitsPerPhysicalInch()) / float(dx->AppUnitsPerDevPixel());
++ }
++
+ aResult.SetFloatValue(dpi, eCSSUnit_Inch);
+ return NS_OK;
+ }
+@@ -311,8 +324,12 @@ static nsresult
GetDevicePixelRatio(nsPresContext* aPresContext, const nsMediaFeature*,
nsCSSValue& aResult)
{
@@ -78,7 +116,7 @@ index 6eca06e..25735e8 100644
return NS_OK;
}
-@@ -320,18 +328,21 @@ static nsresult
+@@ -320,18 +337,21 @@ static nsresult
GetSystemMetric(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
nsCSSValue& aResult)
{
@@ -101,7 +139,7 @@ index 6eca06e..25735e8 100644
aResult.Reset();
#ifdef XP_WIN
PRUint8 windowsThemeId =
-@@ -350,7 +361,8 @@ GetWindowsTheme(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
+@@ -350,7 +370,8 @@ GetWindowsTheme(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
}
}
#endif
diff --git a/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch b/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
index 33500a7..ff9e618 100644
--- a/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
+++ b/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
@@ -1,7 +1,7 @@
-From b562518157b03735bc4a17ecb9a233f11ff99a45 Mon Sep 17 00:00:00 2001
+From cb3a6f45dd2c15d6b75084e1a4dded18ed638632 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 16:01:21 -0800
-Subject: [PATCH 11/19] Limit the number of fonts per document.
+Subject: [PATCH 11/24] Limit the number of fonts per document.
We create two prefs:
browser.display.max_font_count and browser.display.max_font_attempts.
diff --git a/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch b/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch
index 583d1bf..e627238 100644
--- a/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch
+++ b/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch
@@ -1,7 +1,7 @@
-From 235aa1bffd7ada80e14d7a15b2d3e7f89f4af710 Mon Sep 17 00:00:00 2001
+From 5820fc300fe1cae27752673e8721a19e70bf727c Mon Sep 17 00:00:00 2001
From: Erinn Clark <erinn(a)torproject.org>
Date: Wed, 25 Apr 2012 09:14:00 -0300
-Subject: [PATCH 12/19] Rebrand Firefox to TorBrowser
+Subject: [PATCH 12/24] Rebrand Firefox to TorBrowser
This patch does some basic renaming of Firefox to TorBrowser. The rest of the
branding is done by images and icons.
diff --git a/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch b/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch
index 9a0533b..1ad0972 100644
--- a/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch
+++ b/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch
@@ -1,7 +1,7 @@
-From 6eba0489502d7298e0941df12a0823b13078c52b Mon Sep 17 00:00:00 2001
+From 28178fb406d86b317b13b16ade3b06e5e1500c7e Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 25 Apr 2012 13:39:35 -0700
-Subject: [PATCH 13/19] Make Download manager memory only.
+Subject: [PATCH 13/24] Make Download manager memory only.
Solves https://trac.torproject.org/projects/tor/ticket/4017.
diff --git a/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch b/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch
index df71776..adbd3d4 100644
--- a/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch
+++ b/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch
@@ -1,7 +1,7 @@
-From c47053eea6488c5c949ff98c37a9669f969e4175 Mon Sep 17 00:00:00 2001
+From 2a80e84755c97cf4ff3ab63bda1bd5f0936d9594 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 25 Apr 2012 15:03:46 -0700
-Subject: [PATCH 14/19] Add DDG and StartPage to Omnibox.
+Subject: [PATCH 14/24] Add DDG and StartPage to Omnibox.
You mean there are search engines that don't require captchas if you don't
have a cookie? Holy crap. Get those in there now.
diff --git a/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch b/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch
index 840c1c9..93a989b 100644
--- a/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch
+++ b/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch
@@ -1,7 +1,7 @@
-From 231dc894259f16bb39ff7d9fe3cc3fa1cda30eb1 Mon Sep 17 00:00:00 2001
+From 20c94cb890a8872c07ba13686e293ca147b85cd6 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue, 1 May 2012 15:02:03 -0700
-Subject: [PATCH 15/19] Make nsICacheService.EvictEntries synchronous
+Subject: [PATCH 15/24] Make nsICacheService.EvictEntries synchronous
This fixes a race condition that allows cache-based EverCookies to persist for
a brief time (on the order of minutes?) after cache clearing/"New Identity".
@@ -12,10 +12,10 @@ https://trac.torproject.org/projects/tor/ticket/5715
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/netwerk/cache/nsCacheService.cpp b/netwerk/cache/nsCacheService.cpp
-index 8af611f..65686c7 100644
+index 83ce887..e9f1a76 100644
--- a/netwerk/cache/nsCacheService.cpp
+++ b/netwerk/cache/nsCacheService.cpp
-@@ -1315,10 +1315,21 @@ NS_IMETHODIMP nsCacheService::VisitEntries(nsICacheVisitor *visitor)
+@@ -1316,10 +1316,21 @@ NS_IMETHODIMP nsCacheService::VisitEntries(nsICacheVisitor *visitor)
return NS_OK;
}
diff --git a/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch b/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch
index 05f1923..bb70b17 100644
--- a/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch
+++ b/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch
@@ -1,7 +1,7 @@
-From bf5c8236b9b995e01e7909181dfe3f01bec05149 Mon Sep 17 00:00:00 2001
+From 976f0d4fabb6b0b50c83192d622827357c761bd3 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 2 May 2012 17:44:39 -0700
-Subject: [PATCH 16/19] Prevent WebSocket DNS leak.
+Subject: [PATCH 16/24] Prevent WebSocket DNS leak.
This is due to an improper implementation of the WebSocket spec by Mozilla.
diff --git a/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch b/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch
index 4d0ee81..f1814e7 100644
--- a/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch
+++ b/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch
@@ -1,7 +1,7 @@
-From 276cc8cd478a6ad495758ab7aee27a6a88d12bcc Mon Sep 17 00:00:00 2001
+From 36f826e64411a74912ba1adebd1a30b84716bf84 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 6 Jun 2012 11:08:56 -0700
-Subject: [PATCH 17/19] Randomize HTTP request order and pipeline depth.
+Subject: [PATCH 17/24] Randomize HTTP request order and pipeline depth.
This is an experimental defense against
http://lorre.uni.lu/~andriy/papers/acmccs-wpes11-fingerprinting.pdf
diff --git a/src/current-patches/firefox/0018-Add-HTTP-auth-headers-before-the-modify-request-obse.patch b/src/current-patches/firefox/0018-Add-HTTP-auth-headers-before-the-modify-request-obse.patch
index 845d60e..46cf611 100644
--- a/src/current-patches/firefox/0018-Add-HTTP-auth-headers-before-the-modify-request-obse.patch
+++ b/src/current-patches/firefox/0018-Add-HTTP-auth-headers-before-the-modify-request-obse.patch
@@ -1,7 +1,7 @@
-From 3a0261c7fdbed4a4705d5c6c39edeed4c127121f Mon Sep 17 00:00:00 2001
+From c1e26c8a294abe426fd6fb84508db6074ef23379 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Fri, 2 Sep 2011 15:33:20 -0700
-Subject: [PATCH 18/19] Add HTTP auth headers before the modify-request
+Subject: [PATCH 18/24] Add HTTP auth headers before the modify-request
observer.
Otherwise, how are we supposed to modify them?
diff --git a/src/current-patches/firefox/0019-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch b/src/current-patches/firefox/0019-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch
index 16ce98a..7f3869c 100644
--- a/src/current-patches/firefox/0019-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch
+++ b/src/current-patches/firefox/0019-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch
@@ -1,7 +1,7 @@
-From e263c559a4799a26a9ef5ca3490372fc93a62d3e Mon Sep 17 00:00:00 2001
+From 49cccdba3e6fc10e0e376d423b3ba1b6135f62e1 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu, 7 Jun 2012 16:25:48 -0700
-Subject: [PATCH 19/19] Adapt Steven Michaud's Mac crashfix patch
+Subject: [PATCH 19/24] Adapt Steven Michaud's Mac crashfix patch
Source is: https://bugzilla.mozilla.org/show_bug.cgi?id=715885#c35
diff --git a/src/current-patches/firefox/0020-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch b/src/current-patches/firefox/0020-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch
index 56d9848..700a795 100644
--- a/src/current-patches/firefox/0020-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch
+++ b/src/current-patches/firefox/0020-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch
@@ -1,7 +1,7 @@
-From 73e548ceee36b99f06e33010163ed8b8cc86b3dd Mon Sep 17 00:00:00 2001
+From 24f62d79a6179598ed633481e2bbeac1b2ccd9bc Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue, 28 Aug 2012 18:35:33 -0700
-Subject: [PATCH 20/20] Add mozIThirdPartyUtil.getFirstPartyURI API
+Subject: [PATCH 20/24] Add mozIThirdPartyUtil.getFirstPartyURI API
API allows you to get the url bar URI for a channel or nsIDocument.
---
diff --git a/src/current-patches/firefox/0021-Add-canvas-image-extraction-prompt.patch b/src/current-patches/firefox/0021-Add-canvas-image-extraction-prompt.patch
new file mode 100644
index 0000000..f303683
--- /dev/null
+++ b/src/current-patches/firefox/0021-Add-canvas-image-extraction-prompt.patch
@@ -0,0 +1,551 @@
+From 3e8d778866d96e1ca82f2b08e7b8d948c1c3853d Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Tue, 9 Oct 2012 11:21:06 -0400
+Subject: [PATCH 21/24] Add canvas image extraction prompt.
+
+---
+ browser/base/content/browser.css | 1 +
+ browser/base/content/browser.js | 102 ++++++++++++++++++++
+ browser/base/content/browser.xul | 1 +
+ .../en-US/chrome/browser/browser.properties | 7 ++
+ browser/themes/gnomestripe/browser/browser.css | 2 +
+ browser/themes/pinstripe/browser/browser.css | 2 +
+ browser/themes/winstripe/browser/browser.css | 2 +
+ content/canvas/src/CanvasUtils.cpp | 63 ++++++++++++
+ content/canvas/src/CanvasUtils.h | 2 +
+ content/canvas/src/nsCanvasRenderingContext2D.cpp | 15 +++
+ .../canvas/src/nsCanvasRenderingContext2DAzure.cpp | 15 +++
+ content/html/content/public/nsHTMLCanvasElement.h | 3 +
+ content/html/content/src/Makefile.in | 1 +
+ content/html/content/src/nsHTMLCanvasElement.cpp | 39 ++++++--
+ 14 files changed, 246 insertions(+), 9 deletions(-)
+
+diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css
+index f033c2b..c709631 100644
+--- a/browser/base/content/browser.css
++++ b/browser/base/content/browser.css
+@@ -440,6 +440,7 @@ window[chromehidden~="toolbar"] toolbar:not(.toolbar-primary):not(.chromeclass-m
+ created with a null anchorID, so in that case use a default anchor icon. */
+ #notification-popup-box[anchorid="notification-popup-box"] > #default-notification-icon,
+ #notification-popup-box[anchorid="geo-notification-icon"] > #geo-notification-icon,
++#notification-popup-box[anchorid="canvas-notification-icon"] > #canvas-notification-icon,
+ #notification-popup-box[anchorid="indexedDB-notification-icon"] > #indexedDB-notification-icon,
+ #notification-popup-box[anchorid="addons-notification-icon"] > #addons-notification-icon,
+ #notification-popup-box[anchorid="password-notification-icon"] > #password-notification-icon {
+diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
+index 20e3666..0c6bd46 100644
+--- a/browser/base/content/browser.js
++++ b/browser/base/content/browser.js
+@@ -1522,6 +1522,7 @@ function delayedStartup(isLoadingBlank, mustLoadSidebar) {
+ BrowserOffline.init();
+ OfflineApps.init();
+ IndexedDBPromptHelper.init();
++ CanvasPermissionPromptHelper.init();
+ gFormSubmitObserver.init();
+ AddonManager.addAddonListener(AddonsMgrListener);
+
+@@ -1834,6 +1835,7 @@ function BrowserShutdown() {
+ BrowserOffline.uninit();
+ OfflineApps.uninit();
+ IndexedDBPromptHelper.uninit();
++ CanvasPermissionPromptHelper.uninit();
+ AddonManager.removeAddonListener(AddonsMgrListener);
+ }
+
+@@ -6656,6 +6658,106 @@ var IndexedDBPromptHelper = {
+ }
+ };
+
++var CanvasPermissionPromptHelper = {
++ _permissionsPrompt: "canvas-permissions-prompt",
++ _notificationIcon: "canvas-notification-icon",
++
++ init:
++ function CanvasPermissionPromptHelper_init() {
++ Services.obs.addObserver(this, this._permissionsPrompt, false);
++ },
++
++ uninit:
++ function CanvasPermissionPromptHelper_uninit() {
++ Services.obs.removeObserver(this, this._permissionsPrompt, false);
++ },
++
++ // aSubject is an nsIDOMWindow.
++ // aData is an URL string.
++ observe:
++ function CanvasPermissionPromptHelper_observe(aSubject, aTopic, aData) {
++ if ((aTopic != this._permissionsPrompt) || !aData)
++ throw new Error("Unexpected topic or missing URL");
++
++ var uri = makeURI(aData);
++ var contentWindow = aSubject.QueryInterface(Ci.nsIDOMWindow);
++ var contentDocument = contentWindow.document;
++ var browserWindow =
++ OfflineApps._getBrowserWindowForContentWindow(contentWindow);
++
++ if (browserWindow != window) {
++ // Must belong to some other window.
++ return;
++ }
++
++ // If canvas prompt is already displayed, just return. This is OK (and
++ // more efficient) since this permission is associated with the top
++ // browser's URL.
++ if (PopupNotifications.getNotification(aTopic, browser))
++ return;
++
++ var bundleSvc = Cc["@mozilla.org/intl/stringbundle;1"].
++ getService(Ci.nsIStringBundleService);
++ var torBtnBundle;
++ try {
++ torBtnBundle = bundleSvc.createBundle(
++ "chrome://torbutton/locale/torbutton.properties");
++ } catch (e) {}
++
++ var message = getLocalizedString("canvas.siteprompt", [ uri.asciiHost ]);
++
++ var mainAction = {
++ label: getLocalizedString("canvas.allow"),
++ accessKey: getLocalizedString("canvas.allowAccessKey"),
++ callback: function() {
++ setCanvasPermission(uri, Ci.nsIPermissionManager.ALLOW_ACTION);
++ }
++ };
++
++ var secondaryActions = [
++ {
++ label: getLocalizedString("canvas.never"),
++ accessKey: getLocalizedString("canvas.neverAccessKey"),
++ callback: function() {
++ setCanvasPermission(uri, Ci.nsIPermissionManager.DENY_ACTION);
++ }
++ }
++ ];
++
++ // Since we have a process in place to perform localization for the
++ // Torbutton extension, get our strings from the extension if possible.
++ function getLocalizedString(aID, aParams) {
++ var s;
++ if (torBtnBundle) try {
++ if (aParams)
++ s = torBtnBundle.formatStringFromName(aID, aParams, aParams.length);
++ else
++ s = torBtnBundle.GetStringFromName(aID);
++ } catch (e) {}
++
++ if (!s) {
++ if (aParams)
++ s = gNavigatorBundle.getFormattedString(aID, aParams);
++ else
++ s = gNavigatorBundle.getString(aID);
++ }
++
++ return s;
++ }
++
++ function setCanvasPermission(aURI, aPerm) {
++ Services.perms.add(aURI, "canvas/extractData", aPerm,
++ Ci.nsIPermissionManager.EXPIRE_NEVER);
++ }
++
++ var browser = OfflineApps._getBrowserForContentWindow(browserWindow,
++ contentWindow);
++ notification = PopupNotifications.show(browser, aTopic, message,
++ this._notificationIcon, mainAction,
++ secondaryActions, null);
++ }
++};
++
+ function WindowIsClosing()
+ {
+ if (TabView.isVisible()) {
+diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
+index ba2a7cb..1acea43 100644
+--- a/browser/base/content/browser.xul
++++ b/browser/base/content/browser.xul
+@@ -520,6 +520,7 @@
+ <image id="default-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="geo-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="addons-notification-icon" class="notification-anchor-icon" role="button"/>
++ <image id="canvas-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="indexedDB-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="password-notification-icon" class="notification-anchor-icon" role="button"/>
+ </box>
+diff --git a/browser/locales/en-US/chrome/browser/browser.properties b/browser/locales/en-US/chrome/browser/browser.properties
+index 380e3c3..98154d1 100644
+--- a/browser/locales/en-US/chrome/browser/browser.properties
++++ b/browser/locales/en-US/chrome/browser/browser.properties
+@@ -197,6 +197,13 @@ offlineApps.usage=This website (%S) is now storing more than %SMB of data on you
+ offlineApps.manageUsage=Show settings
+ offlineApps.manageUsageAccessKey=S
+
++# Canvas permission prompt
++canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Blank (white) image data was returned this time.
++canvas.allow=Allow in the Future
++canvas.allowAccessKey=A
++canvas.never=Never for This Site
++canvas.neverAccessKey=e
++
+ # LOCALIZATION NOTE (indexedDB.usage): %1$S is the website host name
+ # %2$S a number of megabytes.
+ indexedDB.usage=This website (%1$S) is attempting to store more than %2$S MB of data on your computer for offline use.
+diff --git a/browser/themes/gnomestripe/browser/browser.css b/browser/themes/gnomestripe/browser/browser.css
+index edc0b72..8ba057e 100644
+--- a/browser/themes/gnomestripe/browser/browser.css
++++ b/browser/themes/gnomestripe/browser/browser.css
+@@ -1227,6 +1227,7 @@ toolbar[iconsize="small"] #feed-button {
+ list-style-image: url("moz-icon://stock/gtk-cancel?size=menu");
+ }
+
++.popup-notification-icon[popupid="canvas-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-quota-prompt"] {
+ list-style-image: url(chrome://global/skin/icons/question-64.png);
+@@ -1281,6 +1282,7 @@ toolbar[iconsize="small"] #feed-button {
+ list-style-image: url(chrome://mozapps/skin/extensions/extensionGeneric-16.png);
+ }
+
++#canvas-notification-icon,
+ #indexedDB-notification-icon {
+ list-style-image: url(chrome://global/skin/icons/question-16.png);
+ }
+diff --git a/browser/themes/pinstripe/browser/browser.css b/browser/themes/pinstripe/browser/browser.css
+index 2a96556..f94a6f2 100644
+--- a/browser/themes/pinstripe/browser/browser.css
++++ b/browser/themes/pinstripe/browser/browser.css
+@@ -2404,10 +2404,12 @@ toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
+ -moz-image-region: rect(0px, 48px, 16px, 32px);
+ }
+
++#canvas-notification-icon,
+ #indexedDB-notification-icon {
+ list-style-image: url(chrome://global/skin/icons/question-16.png);
+ }
+
++.popup-notification-icon[popupid="canvas-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-quota-prompt"] {
+ list-style-image: url(chrome://global/skin/icons/question-64.png);
+diff --git a/browser/themes/winstripe/browser/browser.css b/browser/themes/winstripe/browser/browser.css
+index 0103c79..d352790 100644
+--- a/browser/themes/winstripe/browser/browser.css
++++ b/browser/themes/winstripe/browser/browser.css
+@@ -2294,6 +2294,7 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
+ -moz-image-region: rect(32px, 32px, 48px, 16px);
+ }
+
++.popup-notification-icon[popupid="canvas-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-quota-prompt"] {
+ list-style-image: url(chrome://global/skin/icons/question-64.png);
+@@ -2346,6 +2347,7 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
+ list-style-image: url(chrome://mozapps/skin/extensions/extensionGeneric-16.png);
+ }
+
++#canvas-notification-icon,
+ #indexedDB-notification-icon {
+ list-style-image: url(chrome://global/skin/icons/question-16.png);
+ }
+diff --git a/content/canvas/src/CanvasUtils.cpp b/content/canvas/src/CanvasUtils.cpp
+index 2f822eb..d7d0591 100644
+--- a/content/canvas/src/CanvasUtils.cpp
++++ b/content/canvas/src/CanvasUtils.cpp
+@@ -59,6 +59,15 @@
+ #include "CanvasUtils.h"
+ #include "mozilla/gfx/Matrix.h"
+
++#include "nsIScriptObjectPrincipal.h"
++#include "nsIPermissionManager.h"
++#include "mozIThirdPartyUtil.h"
++#include "nsContentUtils.h"
++#include "nsUnicharUtils.h"
++
++#define TOPIC_CANVAS_PERMISSIONS_PROMPT "canvas-permissions-prompt"
++#define PERMISSION_CANVAS_EXTRACT_DATA "canvas/extractData"
++
+ namespace mozilla {
+ namespace CanvasUtils {
+
+@@ -101,6 +110,60 @@ DoDrawImageSecurityCheck(nsHTMLCanvasElement *aCanvasElement,
+ aCanvasElement->SetWriteOnly();
+ }
+
++// Check site-specific permission and display prompt if appropriate.
++bool
++IsImageExtractionAllowed(nsIDocument *aDocument)
++{
++ if (!aDocument)
++ return false;
++
++ nsPIDOMWindow *win = aDocument->GetWindow();
++ nsCOMPtr<nsIScriptObjectPrincipal> sop(do_QueryInterface(win));
++ if (sop && nsContentUtils::IsSystemPrincipal(sop->GetPrincipal()))
++ return true;
++
++ bool isAllowed = false;
++ nsCOMPtr<mozIThirdPartyUtil> thirdPartyUtil =
++ do_GetService(THIRDPARTYUTIL_CONTRACTID);
++ nsCOMPtr<nsIPermissionManager> permissionManager =
++ do_GetService(NS_PERMISSIONMANAGER_CONTRACTID);
++ if (thirdPartyUtil && permissionManager) {
++ nsCOMPtr<nsIURI> uri;
++ nsresult rv = thirdPartyUtil->GetFirstPartyURI(NULL, aDocument,
++ getter_AddRefs(uri));
++ uint32_t permission = nsIPermissionManager::UNKNOWN_ACTION;
++ if (NS_SUCCEEDED(rv)) {
++ // Allow local files to access canvas data; check content permissions
++ // for remote pages.
++ bool isFileURL = false;
++ (void)uri->SchemeIs("file", &isFileURL);
++ if (isFileURL)
++ permission = nsIPermissionManager::ALLOW_ACTION;
++ else {
++ rv = permissionManager->TestPermission(uri,
++ PERMISSION_CANVAS_EXTRACT_DATA, &permission);
++ }
++ }
++
++ if (NS_SUCCEEDED(rv)) {
++ isAllowed = (permission == nsIPermissionManager::ALLOW_ACTION);
++
++ if (!isAllowed && (permission != nsIPermissionManager::DENY_ACTION)) {
++ // Send notification so that a prompt is displayed.
++ nsCString spec;
++ rv = uri->GetSpec(spec);
++ NS_ENSURE_SUCCESS(rv, rv);
++ nsCOMPtr<nsIObserverService> obs =
++ mozilla::services::GetObserverService();
++ obs->NotifyObservers(win, TOPIC_CANVAS_PERMISSIONS_PROMPT,
++ NS_ConvertUTF8toUTF16(spec).get());
++ }
++ }
++ }
++
++ return isAllowed;
++}
++
+ void
+ LogMessage (const nsCString& errorString)
+ {
+diff --git a/content/canvas/src/CanvasUtils.h b/content/canvas/src/CanvasUtils.h
+index 36186dd..067ee46 100644
+--- a/content/canvas/src/CanvasUtils.h
++++ b/content/canvas/src/CanvasUtils.h
+@@ -77,6 +77,8 @@ void DoDrawImageSecurityCheck(nsHTMLCanvasElement *aCanvasElement,
+ bool forceWriteOnly,
+ bool CORSUsed);
+
++bool IsImageExtractionAllowed(nsIDocument *aDocument);
++
+ void LogMessage (const nsCString& errorString);
+ void LogMessagef (const char *fmt, ...);
+
+diff --git a/content/canvas/src/nsCanvasRenderingContext2D.cpp b/content/canvas/src/nsCanvasRenderingContext2D.cpp
+index 36389b0..0cf97ce 100644
+--- a/content/canvas/src/nsCanvasRenderingContext2D.cpp
++++ b/content/canvas/src/nsCanvasRenderingContext2D.cpp
+@@ -3886,6 +3886,21 @@ nsCanvasRenderingContext2D::GetImageData_explicit(PRInt32 x, PRInt32 y, PRUint32
+ if (!rightMost.valid() || !bottomMost.valid())
+ return NS_ERROR_DOM_SYNTAX_ERR;
+
++ // Check for site-specific permission and return all-white, opaque pixel
++ // data if no permission. This check is not needed if the canvas was
++ // created with a docshell (that is only done for special internal uses).
++ bool usePlaceholder = false;
++ if (mCanvasElement) {
++ nsCOMPtr<nsIDocument> ownerDoc = HTMLCanvasElement()->OwnerDoc();
++ usePlaceholder = !ownerDoc ||
++ !CanvasUtils::IsImageExtractionAllowed(ownerDoc);
++ }
++
++ if (usePlaceholder) {
++ memset(aData, 0xFF, aDataLen);
++ return NS_OK;
++ }
++
+ /* Copy the surface contents to the buffer */
+ nsRefPtr<gfxImageSurface> tmpsurf =
+ new gfxImageSurface(aData,
+diff --git a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+index 13baaa5..e8dfb1e 100644
+--- a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
++++ b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+@@ -4038,6 +4038,21 @@ nsCanvasRenderingContext2DAzure::GetImageData_explicit(PRInt32 x, PRInt32 y, PRU
+ return NS_OK;
+ }
+
++ // Check for site-specific permission and return all-white, opaque pixel
++ // data if no permission. This check is not needed if the canvas was
++ // created with a docshell (that is only done for special internal uses).
++ bool usePlaceholder = false;
++ if (mCanvasElement) {
++ nsCOMPtr<nsIDocument> ownerDoc = HTMLCanvasElement()->OwnerDoc();
++ usePlaceholder = !ownerDoc ||
++ !CanvasUtils::IsImageExtractionAllowed(ownerDoc);
++ }
++
++ if (usePlaceholder) {
++ memset(aData, 0xFF, aDataLen);
++ return NS_OK;
++ }
++
+ IntRect srcRect(0, 0, mWidth, mHeight);
+ IntRect destRect(x, y, w, h);
+
+diff --git a/content/html/content/public/nsHTMLCanvasElement.h b/content/html/content/public/nsHTMLCanvasElement.h
+index 86202a8..66176f2 100644
+--- a/content/html/content/public/nsHTMLCanvasElement.h
++++ b/content/html/content/public/nsHTMLCanvasElement.h
+@@ -188,13 +188,16 @@ protected:
+ nsresult UpdateContext(nsIPropertyBag *aNewContextOptions = nsnull);
+ nsresult ExtractData(const nsAString& aType,
+ const nsAString& aOptions,
++ bool aUsePlaceholder,
+ nsIInputStream** aStream,
+ bool& aFellBackToPNG);
+ nsresult ToDataURLImpl(const nsAString& aMimeType,
+ nsIVariant* aEncoderOptions,
++ bool aUsePlaceholder,
+ nsAString& aDataURL);
+ nsresult MozGetAsFileImpl(const nsAString& aName,
+ const nsAString& aType,
++ bool aUsePlaceholder,
+ nsIDOMFile** aResult);
+ nsresult GetContextHelper(const nsAString& aContextId,
+ bool aForceThebes,
+diff --git a/content/html/content/src/Makefile.in b/content/html/content/src/Makefile.in
+index 019d297..3db4f7c 100644
+--- a/content/html/content/src/Makefile.in
++++ b/content/html/content/src/Makefile.in
+@@ -138,6 +138,7 @@ INCLUDES += \
+ -I$(srcdir)/../../../events/src \
+ -I$(srcdir)/../../../xbl/src \
+ -I$(srcdir)/../../../xul/content/src \
++ -I$(srcdir)/../../../canvas/src/ \
+ -I$(srcdir)/../../../../layout/forms \
+ -I$(srcdir)/../../../../layout/style \
+ -I$(srcdir)/../../../../layout/tables \
+diff --git a/content/html/content/src/nsHTMLCanvasElement.cpp b/content/html/content/src/nsHTMLCanvasElement.cpp
+index a302f67..572a81b 100644
+--- a/content/html/content/src/nsHTMLCanvasElement.cpp
++++ b/content/html/content/src/nsHTMLCanvasElement.cpp
+@@ -60,6 +60,8 @@
+
+ #include "nsIWritablePropertyBag2.h"
+
++#include "CanvasUtils.h"
++
+ #define DEFAULT_CANVAS_WIDTH 300
+ #define DEFAULT_CANVAS_HEIGHT 150
+
+@@ -213,25 +215,36 @@ nsHTMLCanvasElement::ToDataURL(const nsAString& aType, nsIVariant* aParams,
+ return NS_ERROR_DOM_SECURITY_ERR;
+ }
+
+- return ToDataURLImpl(aType, aParams, aDataURL);
++ // Check site-specific permission and display prompt if appropriate.
++ // If no permission, return all-white, opaque image data.
++ bool usePlaceholder = !CanvasUtils::IsImageExtractionAllowed(OwnerDoc());
++ return ToDataURLImpl(aType, aParams, usePlaceholder, aDataURL);
+ }
+
++// TODO: on FF trunk, we also need to patch mozFetchAsStream().
+ nsresult
+ nsHTMLCanvasElement::ExtractData(const nsAString& aType,
+ const nsAString& aOptions,
++ bool aUsePlaceholder,
+ nsIInputStream** aStream,
+ bool& aFellBackToPNG)
+ {
+ // note that if we don't have a current context, the spec says we're
+ // supposed to just return transparent black pixels of the canvas
+ // dimensions.
++ // If placeholder data was requested, return all-white, opaque image data.
+ nsRefPtr<gfxImageSurface> emptyCanvas;
+ nsIntSize size = GetWidthHeight();
+- if (!mCurrentContext) {
++ if (aUsePlaceholder || !mCurrentContext) {
+ emptyCanvas = new gfxImageSurface(gfxIntSize(size.width, size.height), gfxASurface::ImageFormatARGB32);
+ if (emptyCanvas->CairoStatus()) {
+ return NS_ERROR_INVALID_ARG;
+ }
++
++ if (aUsePlaceholder) {
++ int32_t dataSize = emptyCanvas->GetDataSize();
++ memset(emptyCanvas->Data(), 0xFF, dataSize);
++ }
+ }
+
+ nsresult rv;
+@@ -241,12 +254,13 @@ nsHTMLCanvasElement::ExtractData(const nsAString& aType,
+ NS_ConvertUTF16toUTF8 encoderType(aType);
+
+ try_again:
+- if (mCurrentContext) {
++ if (!aUsePlaceholder && mCurrentContext) {
+ rv = mCurrentContext->GetInputStream(encoderType.get(),
+ nsPromiseFlatString(aOptions).get(),
+ getter_AddRefs(imgStream));
+ } else {
+- // no context, so we have to encode the empty image we created above
++ // Using placeholder or we have no context: encode the empty/white image
++ // we created above.
+ nsCString enccid("@mozilla.org/image/encoder;2?type=");
+ enccid += encoderType;
+
+@@ -284,6 +298,7 @@ nsHTMLCanvasElement::ExtractData(const nsAString& aType,
+ nsresult
+ nsHTMLCanvasElement::ToDataURLImpl(const nsAString& aMimeType,
+ nsIVariant* aEncoderOptions,
++ bool aUsePlaceholder,
+ nsAString& aDataURL)
+ {
+ bool fallbackToPNG = false;
+@@ -339,13 +354,15 @@ nsHTMLCanvasElement::ToDataURLImpl(const nsAString& aMimeType,
+ }
+
+ nsCOMPtr<nsIInputStream> stream;
+- rv = ExtractData(type, params, getter_AddRefs(stream), fallbackToPNG);
++ rv = ExtractData(type, params, aUsePlaceholder,
++ getter_AddRefs(stream), fallbackToPNG);
+
+ // If there are unrecognized custom parse options, we should fall back to
+ // the default values for the encoder without any options at all.
+ if (rv == NS_ERROR_INVALID_ARG && usingCustomParseOptions) {
+ fallbackToPNG = false;
+- rv = ExtractData(type, EmptyString(), getter_AddRefs(stream), fallbackToPNG);
++ rv = ExtractData(type, EmptyString(), aUsePlaceholder,
++ getter_AddRefs(stream), fallbackToPNG);
+ }
+
+ NS_ENSURE_SUCCESS(rv, rv);
+@@ -376,19 +393,23 @@ nsHTMLCanvasElement::MozGetAsFile(const nsAString& aName,
+ return NS_ERROR_DOM_SECURITY_ERR;
+ }
+
+- return MozGetAsFileImpl(aName, aType, aResult);
++ // Check site-speciifc permission and display prompt if appropriate.
++ // If no permission, return all-white, opaque image data.
++ bool usePlaceholder = !CanvasUtils::IsImageExtractionAllowed(OwnerDoc());
++ return MozGetAsFileImpl(aName, aType, usePlaceholder, aResult);
+ }
+
+ nsresult
+ nsHTMLCanvasElement::MozGetAsFileImpl(const nsAString& aName,
+ const nsAString& aType,
++ bool aUsePlaceholder,
+ nsIDOMFile** aResult)
+ {
+ bool fallbackToPNG = false;
+
+ nsCOMPtr<nsIInputStream> stream;
+- nsresult rv = ExtractData(aType, EmptyString(), getter_AddRefs(stream),
+- fallbackToPNG);
++ nsresult rv = ExtractData(aType, EmptyString(), aUsePlaceholder,
++ getter_AddRefs(stream), fallbackToPNG);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsAutoString type(aType);
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0022-Return-client-window-coordinates-for-mouse-event-scr.patch b/src/current-patches/firefox/0022-Return-client-window-coordinates-for-mouse-event-scr.patch
new file mode 100644
index 0000000..2532e5f
--- /dev/null
+++ b/src/current-patches/firefox/0022-Return-client-window-coordinates-for-mouse-event-scr.patch
@@ -0,0 +1,43 @@
+From eb9cc23d7b04d9c441f69e98834561622533f6ba Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Tue, 9 Oct 2012 11:13:45 -0400
+Subject: [PATCH 22/24] Return client window coordinates for mouse event
+ screenX/Y (for dragend, 0,0 is returned).
+
+---
+ content/events/src/nsDOMUIEvent.cpp | 15 +++++++++++++++
+ 1 files changed, 15 insertions(+), 0 deletions(-)
+
+diff --git a/content/events/src/nsDOMUIEvent.cpp b/content/events/src/nsDOMUIEvent.cpp
+index fe57f52..d641f0d 100644
+--- a/content/events/src/nsDOMUIEvent.cpp
++++ b/content/events/src/nsDOMUIEvent.cpp
+@@ -135,10 +135,25 @@ nsDOMUIEvent::GetScreenPoint()
+ return nsIntPoint(0, 0);
+ }
+
++ bool isChrome = nsContentUtils::IsCallerChrome();
++
+ if (!((nsGUIEvent*)mEvent)->widget ) {
++ // For non-chrome callers, return 0,0 if there is no widget associated
++ // with this event, e.g., for dragend events. Since dragend is for the
++ // drag originator and not for the receiver, it is probably not widely
++ // used (receivers get a drop event). Therefore, returning 0,0 should
++ // not break many web pages. Also, a few years ago Firefox returned 0,0.
++ // See: https://bugzilla.mozilla.org/show_bug.cgi?id=466379
++ if (!isChrome)
++ return nsIntPoint(0, 0);
++
+ return mEvent->refPoint;
+ }
+
++ // For non-chrome callers, return client area coordinates instead.
++ if (!isChrome)
++ return GetClientPoint();
++
+ nsIntPoint offset = mEvent->refPoint +
+ ((nsGUIEvent*)mEvent)->widget->WidgetToScreenOffset();
+ nscoord factor = mPresContext->DeviceContext()->UnscaledAppUnitsPerDevPixel();
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0023-Do-not-expose-physical-screen-info.-via-window-and-w.patch b/src/current-patches/firefox/0023-Do-not-expose-physical-screen-info.-via-window-and-w.patch
new file mode 100644
index 0000000..1907906
--- /dev/null
+++ b/src/current-patches/firefox/0023-Do-not-expose-physical-screen-info.-via-window-and-w.patch
@@ -0,0 +1,312 @@
+From f842f612d98477ad36014338a72f812cf4183e2f Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Wed, 3 Oct 2012 17:06:48 -0400
+Subject: [PATCH 23/24] Do not expose physical screen info. via window and
+ window.screen.
+
+---
+ dom/base/nsGlobalWindow.cpp | 46 +++++++++++++++++++++
+ dom/base/nsGlobalWindow.h | 2 +
+ dom/base/nsScreen.cpp | 92 +++++++++++++++++++++++++++++++++++++++++++
+ dom/base/nsScreen.h | 3 +
+ 4 files changed, 143 insertions(+), 0 deletions(-)
+
+diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp
+index 2c99571..982d931 100644
+--- a/dom/base/nsGlobalWindow.cpp
++++ b/dom/base/nsGlobalWindow.cpp
+@@ -3817,6 +3817,10 @@ nsGlobalWindow::GetOuterWidth(PRInt32* aOuterWidth)
+ {
+ FORWARD_TO_OUTER(GetOuterWidth, (aOuterWidth), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, return inner width to prevent fingerprinting.
++ if (!IsChrome())
++ return GetInnerWidth(aOuterWidth);
++
+ nsIntSize sizeCSSPixels;
+ nsresult rv = GetOuterSize(&sizeCSSPixels);
+ NS_ENSURE_SUCCESS(rv, rv);
+@@ -3830,6 +3834,10 @@ nsGlobalWindow::GetOuterHeight(PRInt32* aOuterHeight)
+ {
+ FORWARD_TO_OUTER(GetOuterHeight, (aOuterHeight), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, return inner height to prevent fingerprinting.
++ if (!IsChrome())
++ return GetInnerHeight(aOuterHeight);
++
+ nsIntSize sizeCSSPixels;
+ nsresult rv = GetOuterSize(&sizeCSSPixels);
+ NS_ENSURE_SUCCESS(rv, rv);
+@@ -3892,6 +3900,12 @@ nsGlobalWindow::GetScreenX(PRInt32* aScreenX)
+ {
+ FORWARD_TO_OUTER(GetScreenX, (aScreenX), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aScreenX = 0;
++ return NS_OK;
++ }
++
+ nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
+ GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
+ NS_ENSURE_TRUE(treeOwnerAsWin, NS_ERROR_FAILURE);
+@@ -3933,6 +3947,12 @@ nsGlobalWindow::GetMozInnerScreenX(float* aScreenX)
+ {
+ FORWARD_TO_OUTER(GetMozInnerScreenX, (aScreenX), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aScreenX = 0;
++ return NS_OK;
++ }
++
+ nsRect r = GetInnerScreenRect();
+ *aScreenX = nsPresContext::AppUnitsToFloatCSSPixels(r.x);
+ return NS_OK;
+@@ -3943,6 +3963,12 @@ nsGlobalWindow::GetMozInnerScreenY(float* aScreenY)
+ {
+ FORWARD_TO_OUTER(GetMozInnerScreenY, (aScreenY), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aScreenY = 0;
++ return NS_OK;
++ }
++
+ nsRect r = GetInnerScreenRect();
+ *aScreenY = nsPresContext::AppUnitsToFloatCSSPixels(r.y);
+ return NS_OK;
+@@ -4064,6 +4090,12 @@ nsGlobalWindow::GetScreenY(PRInt32* aScreenY)
+ {
+ FORWARD_TO_OUTER(GetScreenY, (aScreenY), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aScreenY = 0;
++ return NS_OK;
++ }
++
+ nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
+ GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
+ NS_ENSURE_TRUE(treeOwnerAsWin, NS_ERROR_FAILURE);
+@@ -4110,6 +4142,20 @@ nsGlobalWindow::SetScreenY(PRInt32 aScreenY)
+ return NS_OK;
+ }
+
++bool
++nsGlobalWindow::IsChrome()
++{
++ bool isChrome = false;
++
++ if (mDocShell) {
++ nsRefPtr<nsPresContext> presContext;
++ mDocShell->GetPresContext(getter_AddRefs(presContext));
++ isChrome = (presContext && presContext->IsChrome());
++ }
++
++ return isChrome;
++}
++
+ // NOTE: Arguments to this function should have values scaled to
+ // CSS pixels, not device pixels.
+ nsresult
+diff --git a/dom/base/nsGlobalWindow.h b/dom/base/nsGlobalWindow.h
+index 2ffe4a7..863329c 100644
+--- a/dom/base/nsGlobalWindow.h
++++ b/dom/base/nsGlobalWindow.h
+@@ -744,6 +744,8 @@ protected:
+ nsresult SetOuterSize(PRInt32 aLengthCSSPixels, bool aIsWidth);
+ nsRect GetInnerScreenRect();
+
++ bool IsChrome();
++
+ bool IsFrame()
+ {
+ return GetParentInternal() != nsnull;
+diff --git a/dom/base/nsScreen.cpp b/dom/base/nsScreen.cpp
+index 33a03dc..29a3598 100644
+--- a/dom/base/nsScreen.cpp
++++ b/dom/base/nsScreen.cpp
+@@ -82,6 +82,12 @@ nsScreen::SetDocShell(nsIDocShell* aDocShell)
+ NS_IMETHODIMP
+ nsScreen::GetTop(PRInt32* aTop)
+ {
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aTop = 0;
++ return NS_OK;
++ }
++
+ nsRect rect;
+ nsresult rv = GetRect(rect);
+
+@@ -94,6 +100,12 @@ nsScreen::GetTop(PRInt32* aTop)
+ NS_IMETHODIMP
+ nsScreen::GetLeft(PRInt32* aLeft)
+ {
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aLeft = 0;
++ return NS_OK;
++ }
++
+ nsRect rect;
+ nsresult rv = GetRect(rect);
+
+@@ -106,6 +118,14 @@ nsScreen::GetLeft(PRInt32* aLeft)
+ NS_IMETHODIMP
+ nsScreen::GetWidth(PRInt32* aWidth)
+ {
++ // For non-chrome callers, return content width to prevent fingerprinting.
++ if (!IsChrome()) {
++ nsCOMPtr<nsIDOMWindow> win;
++ nsresult rv = GetDOMWindow(getter_AddRefs(win));
++ NS_ENSURE_SUCCESS(rv, rv);
++ return win->GetInnerWidth(aWidth);
++ }
++
+ nsRect rect;
+ nsresult rv = GetRect(rect);
+
+@@ -117,6 +137,14 @@ nsScreen::GetWidth(PRInt32* aWidth)
+ NS_IMETHODIMP
+ nsScreen::GetHeight(PRInt32* aHeight)
+ {
++ // For non-chrome callers, return content height to prevent fingerprinting.
++ if (!IsChrome()) {
++ nsCOMPtr<nsIDOMWindow> win;
++ nsresult rv = GetDOMWindow(getter_AddRefs(win));
++ NS_ENSURE_SUCCESS(rv, rv);
++ return win->GetInnerHeight(aHeight);
++ }
++
+ nsRect rect;
+ nsresult rv = GetRect(rect);
+
+@@ -128,6 +156,12 @@ nsScreen::GetHeight(PRInt32* aHeight)
+ NS_IMETHODIMP
+ nsScreen::GetPixelDepth(PRInt32* aPixelDepth)
+ {
++ // For non-chrome callers, always return 24 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aPixelDepth = 24;
++ return NS_OK;
++ }
++
+ nsDeviceContext* context = GetDeviceContext();
+
+ if (!context) {
+@@ -153,6 +187,14 @@ nsScreen::GetColorDepth(PRInt32* aColorDepth)
+ NS_IMETHODIMP
+ nsScreen::GetAvailWidth(PRInt32* aAvailWidth)
+ {
++ // For non-chrome callers, return content width to prevent fingerprinting.
++ if (!IsChrome()) {
++ nsCOMPtr<nsIDOMWindow> win;
++ nsresult rv = GetDOMWindow(getter_AddRefs(win));
++ NS_ENSURE_SUCCESS(rv, rv);
++ return win->GetInnerWidth(aAvailWidth);
++ }
++
+ nsRect rect;
+ nsresult rv = GetAvailRect(rect);
+
+@@ -164,6 +206,14 @@ nsScreen::GetAvailWidth(PRInt32* aAvailWidth)
+ NS_IMETHODIMP
+ nsScreen::GetAvailHeight(PRInt32* aAvailHeight)
+ {
++ // For non-chrome callers, return content height to prevent fingerprinting.
++ if (!IsChrome()) {
++ nsCOMPtr<nsIDOMWindow> win;
++ nsresult rv = GetDOMWindow(getter_AddRefs(win));
++ NS_ENSURE_SUCCESS(rv, rv);
++ return win->GetInnerHeight(aAvailHeight);
++ }
++
+ nsRect rect;
+ nsresult rv = GetAvailRect(rect);
+
+@@ -175,6 +225,12 @@ nsScreen::GetAvailHeight(PRInt32* aAvailHeight)
+ NS_IMETHODIMP
+ nsScreen::GetAvailLeft(PRInt32* aAvailLeft)
+ {
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aAvailLeft = 0;
++ return NS_OK;
++ }
++
+ nsRect rect;
+ nsresult rv = GetAvailRect(rect);
+
+@@ -186,6 +242,12 @@ nsScreen::GetAvailLeft(PRInt32* aAvailLeft)
+ NS_IMETHODIMP
+ nsScreen::GetAvailTop(PRInt32* aAvailTop)
+ {
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aAvailTop = 0;
++ return NS_OK;
++ }
++
+ nsRect rect;
+ nsresult rv = GetAvailRect(rect);
+
+@@ -237,3 +299,33 @@ nsScreen::GetAvailRect(nsRect& aRect)
+
+ return NS_OK;
+ }
++
++bool
++nsScreen::IsChrome()
++{
++ bool isChrome = false;
++ if (mDocShell) {
++ nsRefPtr<nsPresContext> presContext;
++ mDocShell->GetPresContext(getter_AddRefs(presContext));
++ if (presContext)
++ isChrome = presContext->IsChrome();
++ }
++
++ return isChrome;
++}
++
++nsresult
++nsScreen::GetDOMWindow(nsIDOMWindow **aResult)
++{
++ NS_ENSURE_ARG_POINTER(aResult);
++ *aResult = NULL;
++
++ if (!mDocShell)
++ return NS_ERROR_FAILURE;
++
++ nsCOMPtr<nsIDOMWindow> win = do_GetInterface(mDocShell);
++ NS_ENSURE_STATE(win);
++ win.swap(*aResult);
++
++ return NS_OK;
++}
+diff --git a/dom/base/nsScreen.h b/dom/base/nsScreen.h
+index 52eab29..d4edaa3 100644
+--- a/dom/base/nsScreen.h
++++ b/dom/base/nsScreen.h
+@@ -44,6 +44,7 @@
+
+ class nsIDocShell;
+ class nsDeviceContext;
++class nsIDOMWindow;
+ struct nsRect;
+
+ // Script "screen" object
+@@ -62,6 +63,8 @@ protected:
+ nsDeviceContext* GetDeviceContext();
+ nsresult GetRect(nsRect& aRect);
+ nsresult GetAvailRect(nsRect& aRect);
++ bool IsChrome();
++ nsresult GetDOMWindow(nsIDOMWindow **aResult);
+
+ nsIDocShell* mDocShell; // Weak Reference
+ };
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0024-Do-not-expose-system-colors-to-CSS-or-canvas.patch b/src/current-patches/firefox/0024-Do-not-expose-system-colors-to-CSS-or-canvas.patch
new file mode 100644
index 0000000..5b808ad
--- /dev/null
+++ b/src/current-patches/firefox/0024-Do-not-expose-system-colors-to-CSS-or-canvas.patch
@@ -0,0 +1,537 @@
+From a3a36dbaebcacdcf6b4343a587ea673e6245102d Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Thu, 4 Oct 2012 14:53:13 -0400
+Subject: [PATCH 24/24] Do not expose system colors to CSS or canvas.
+
+---
+ content/canvas/src/nsCanvasRenderingContext2D.cpp | 36 +++-
+ .../canvas/src/nsCanvasRenderingContext2DAzure.cpp | 51 ++++--
+ layout/style/nsCSSParser.cpp | 19 ++-
+ layout/style/nsRuleNode.cpp | 4 +-
+ widget/public/LookAndFeel.h | 9 +
+ widget/src/xpwidgets/nsXPLookAndFeel.cpp | 173 +++++++++++++++++++-
+ widget/src/xpwidgets/nsXPLookAndFeel.h | 5 +-
+ 7 files changed, 269 insertions(+), 28 deletions(-)
+
+diff --git a/content/canvas/src/nsCanvasRenderingContext2D.cpp b/content/canvas/src/nsCanvasRenderingContext2D.cpp
+index 0cf97ce..6c47821 100644
+--- a/content/canvas/src/nsCanvasRenderingContext2D.cpp
++++ b/content/canvas/src/nsCanvasRenderingContext2D.cpp
+@@ -186,8 +186,9 @@ class nsCanvasGradient : public nsIDOMCanvasGradient
+ public:
+ NS_DECLARE_STATIC_IID_ACCESSOR(NS_CANVASGRADIENT_PRIVATE_IID)
+
+- nsCanvasGradient(gfxPattern* pat)
+- : mPattern(pat)
++ nsCanvasGradient(mozilla::css::Loader* aLoader, gfxPattern* pat)
++ : mCSSLoader(aLoader)
++ , mPattern(pat)
+ {
+ }
+
+@@ -203,7 +204,7 @@ public:
+ return NS_ERROR_DOM_INDEX_SIZE_ERR;
+
+ nscolor color;
+- nsCSSParser parser;
++ nsCSSParser parser(mCSSLoader);
+ nsresult rv = parser.ParseColorString(nsString(colorstr),
+ nsnull, 0, &color);
+ if (NS_FAILED(rv))
+@@ -217,6 +218,7 @@ public:
+ NS_DECL_ISUPPORTS
+
+ protected:
++ mozilla::css::Loader* mCSSLoader; // not ref counted, it owns us
+ nsRefPtr<gfxPattern> mPattern;
+ };
+
+@@ -875,7 +877,9 @@ nsCanvasRenderingContext2D::SetStyleFromStringOrInterface(const nsAString& aStr,
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error
+- // reports to include the outer window ID.
++ // reports to include the outer window ID. The parser also uses it to
++ // detect whether the caller is chrome in order to avoid exposing
++ // system colors.
+ nsCSSParser parser(document ? document->CSSLoader() : nsnull);
+ rv = parser.ParseColorString(aStr, nsnull, 0, &color);
+ if (NS_FAILED(rv)) {
+@@ -1778,7 +1782,14 @@ nsCanvasRenderingContext2D::CreateLinearGradient(float x0, float y0, float x1, f
+ if (!gradpat)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+- nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(gradpat);
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsIDocument* doc = mCanvasElement ? HTMLCanvasElement()->OwnerDoc()
++ : nsnull;
++ mozilla::css::Loader* cssLoader = doc ? doc->CSSLoader() : nsnull;
++ nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(cssLoader,
++ gradpat);
+ if (!grad)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+@@ -1800,7 +1811,14 @@ nsCanvasRenderingContext2D::CreateRadialGradient(float x0, float y0, float r0, f
+ if (!gradpat)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+- nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(gradpat);
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsIDocument* doc = mCanvasElement ? HTMLCanvasElement()->OwnerDoc()
++ : nsnull;
++ mozilla::css::Loader* cssLoader = doc ? doc->CSSLoader() : nsnull;
++ nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(cssLoader,
++ gradpat);
+ if (!grad)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+@@ -1922,7 +1940,8 @@ nsCanvasRenderingContext2D::SetShadowColor(const nsAString& colorstr)
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error reports
+- // to include the outer window ID.
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(document ? document->CSSLoader() : nsnull);
+ nscolor color;
+ nsresult rv = parser.ParseColorString(colorstr, nsnull, 0, &color);
+@@ -3694,7 +3713,8 @@ nsCanvasRenderingContext2D::DrawWindow(nsIDOMWindow* aWindow, float aX, float aY
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error reports
+- // to include the outer window ID.
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(elementDoc ? elementDoc->CSSLoader() : nsnull);
+ nsresult rv = parser.ParseColorString(PromiseFlatString(aBGColor),
+ nsnull, 0, &bgColor);
+diff --git a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+index e8dfb1e..cb5a5f5 100644
+--- a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
++++ b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+@@ -201,7 +201,10 @@ public:
+ }
+
+ nscolor color;
+- nsCSSParser parser;
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsCSSParser parser(mCSSLoader);;
+ nsresult rv = parser.ParseColorString(nsString(colorstr),
+ nsnull, 0, &color);
+ if (NS_FAILED(rv)) {
+@@ -221,20 +224,24 @@ public:
+ }
+
+ protected:
+- nsCanvasGradientAzure(Type aType) : mType(aType)
++ nsCanvasGradientAzure(mozilla::css::Loader* aLoader, Type aType)
++ : mCSSLoader(aLoader)
++ , mType(aType)
+ {}
+
+ nsTArray<GradientStop> mRawStops;
+ RefPtr<GradientStops> mStops;
++ mozilla::css::Loader* mCSSLoader; // not ref counted, it owns us
+ Type mType;
+ };
+
+ class nsCanvasRadialGradientAzure : public nsCanvasGradientAzure
+ {
+ public:
+- nsCanvasRadialGradientAzure(const Point &aBeginOrigin, Float aBeginRadius,
++ nsCanvasRadialGradientAzure(mozilla::css::Loader* aLoader,
++ const Point &aBeginOrigin, Float aBeginRadius,
+ const Point &aEndOrigin, Float aEndRadius)
+- : nsCanvasGradientAzure(RADIAL)
++ : nsCanvasGradientAzure(aLoader, RADIAL)
+ , mCenter1(aBeginOrigin)
+ , mCenter2(aEndOrigin)
+ , mRadius1(aBeginRadius)
+@@ -251,8 +258,9 @@ public:
+ class nsCanvasLinearGradientAzure : public nsCanvasGradientAzure
+ {
+ public:
+- nsCanvasLinearGradientAzure(const Point &aBegin, const Point &aEnd)
+- : nsCanvasGradientAzure(LINEAR)
++ nsCanvasLinearGradientAzure(mozilla::css::Loader* aLoader,
++ const Point &aBegin, const Point &aEnd)
++ : nsCanvasGradientAzure(aLoader, LINEAR)
+ , mBegin(aBegin)
+ , mEnd(aEnd)
+ {
+@@ -1066,8 +1074,9 @@ nsCanvasRenderingContext2DAzure::SetStyleFromStringOrInterface(const nsAString&
+ nsIDocument* document = mCanvasElement ?
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+- // Pass the CSS Loader object to the parser, to allow parser error
+- // reports to include the outer window ID.
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(document ? document->CSSLoader() : nsnull);
+ rv = parser.ParseColorString(aStr, nsnull, 0, &color);
+ if (NS_FAILED(rv)) {
+@@ -1855,8 +1864,14 @@ nsCanvasRenderingContext2DAzure::CreateLinearGradient(float x0, float y0, float
+ return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
+ }
+
+- nsRefPtr<nsIDOMCanvasGradient> grad =
+- new nsCanvasLinearGradientAzure(Point(x0, y0), Point(x1, y1));
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsIDocument* doc = mCanvasElement ? HTMLCanvasElement()->OwnerDoc()
++ : nsnull;
++ mozilla::css::Loader* cssLoader = doc ? doc->CSSLoader() : nsnull;
++ nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasLinearGradientAzure(
++ cssLoader, Point(x0, y0), Point(x1, y1));
+
+ *_retval = grad.forget().get();
+ return NS_OK;
+@@ -1875,8 +1890,14 @@ nsCanvasRenderingContext2DAzure::CreateRadialGradient(float x0, float y0, float
+ return NS_ERROR_DOM_INDEX_SIZE_ERR;
+ }
+
+- nsRefPtr<nsIDOMCanvasGradient> grad =
+- new nsCanvasRadialGradientAzure(Point(x0, y0), r0, Point(x1, y1), r1);
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsIDocument* doc = mCanvasElement ? HTMLCanvasElement()->OwnerDoc()
++ : nsnull;
++ mozilla::css::Loader* cssLoader = doc ? doc->CSSLoader() : nsnull;
++ nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasRadialGradientAzure(
++ cssLoader, Point(x0, y0), r0, Point(x1, y1), r1);
+
+ *_retval = grad.forget().get();
+ return NS_OK;
+@@ -2024,7 +2045,8 @@ nsCanvasRenderingContext2DAzure::SetShadowColor(const nsAString& colorstr)
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error reports
+- // to include the outer window ID.
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(document ? document->CSSLoader() : nsnull);
+ nscolor color;
+ nsresult rv = parser.ParseColorString(colorstr, nsnull, 0, &color);
+@@ -3847,7 +3869,8 @@ nsCanvasRenderingContext2DAzure::DrawWindow(nsIDOMWindow* aWindow, float aX, flo
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error reports
+- // to include the outer window ID.
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(elementDoc ? elementDoc->CSSLoader() : nsnull);
+ nsresult rv = parser.ParseColorString(PromiseFlatString(aBGColor),
+ nsnull, 0, &bgColor);
+diff --git a/layout/style/nsCSSParser.cpp b/layout/style/nsCSSParser.cpp
+index ae1a474..30e179c 100644
+--- a/layout/style/nsCSSParser.cpp
++++ b/layout/style/nsCSSParser.cpp
+@@ -1216,8 +1216,25 @@ CSSParserImpl::ParseColorString(const nsSubstring& aBuffer,
+ // Should remove this limitation at some point.
+ return NS_ERROR_FAILURE;
+ }
++
++ // We do not want to expose system/native colors to content. All callers
++ // who are working with content should ensure that they set the CSS
++ // loader (mChildLoader) so we can check here if the content is chrome.
++ bool isChrome = true;
++ if (mChildLoader) {
++ nsIDocument *doc = mChildLoader->GetDocument();
++ if (doc) {
++ nsIPresShell *presShell = doc->GetShell();
++ if (presShell) {
++ nsPresContext* presCtxt = presShell->GetPresContext();
++ if (presCtxt)
++ isChrome = presCtxt->IsChrome();
++ }
++ }
++ }
+ nscolor rgba;
+- nsresult rv = LookAndFeel::GetColor(LookAndFeel::ColorID(val), &rgba);
++ nsresult rv = LookAndFeel::GetColor(LookAndFeel::ColorID(val), !isChrome,
++ &rgba);
+ if (NS_FAILED(rv)) {
+ return rv;
+ }
+diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp
+index 827585a..d19524e 100644
+--- a/layout/style/nsRuleNode.cpp
++++ b/layout/style/nsRuleNode.cpp
+@@ -768,7 +768,9 @@ static bool SetColor(const nsCSSValue& aValue, const nscolor aParentColor,
+ PRInt32 intValue = aValue.GetIntValue();
+ if (0 <= intValue) {
+ LookAndFeel::ColorID colorID = (LookAndFeel::ColorID) intValue;
+- if (NS_SUCCEEDED(LookAndFeel::GetColor(colorID, &aResult))) {
++ bool useStandinsForNativeColors = !aPresContext->IsChrome();
++ if (NS_SUCCEEDED(LookAndFeel::GetColor(colorID,
++ useStandinsForNativeColors, &aResult))) {
+ result = true;
+ }
+ }
+diff --git a/widget/public/LookAndFeel.h b/widget/public/LookAndFeel.h
+index aae3b28..bb7be3c 100644
+--- a/widget/public/LookAndFeel.h
++++ b/widget/public/LookAndFeel.h
+@@ -445,6 +445,15 @@ public:
+ static nsresult GetColor(ColorID aID, nscolor* aResult);
+
+ /**
++ * This variant of GetColor() take an extra Boolean parameter that allows
++ * the caller to ask that hard-coded color values be substituted for
++ * native colors (used when it is desireable to hide system colors to
++ * avoid system fingerprinting).
++ */
++ static nsresult GetColor(ColorID aID, bool aUseStandinsForNativeColors,
++ nscolor* aResult);
++
++ /**
+ * GetInt() and GetFloat() return a int or float value for aID. The result
+ * might be distance, time, some flags or a int value which has particular
+ * meaning. See each document at definition of each ID for the detail.
+diff --git a/widget/src/xpwidgets/nsXPLookAndFeel.cpp b/widget/src/xpwidgets/nsXPLookAndFeel.cpp
+index 8053432..96937ac 100644
+--- a/widget/src/xpwidgets/nsXPLookAndFeel.cpp
++++ b/widget/src/xpwidgets/nsXPLookAndFeel.cpp
+@@ -502,6 +502,155 @@ nsXPLookAndFeel::IsSpecialColor(ColorID aID, nscolor &aColor)
+ return false;
+ }
+
++bool
++nsXPLookAndFeel::ColorIsNotCSSAccessible(ColorID aID)
++{
++ bool result = false;
++
++ switch (aID) {
++ case eColorID_WindowBackground:
++ case eColorID_WindowForeground:
++ case eColorID_WidgetBackground:
++ case eColorID_WidgetForeground:
++ case eColorID_WidgetSelectBackground:
++ case eColorID_WidgetSelectForeground:
++ case eColorID_Widget3DHighlight:
++ case eColorID_Widget3DShadow:
++ case eColorID_TextBackground:
++ case eColorID_TextForeground:
++ case eColorID_TextSelectBackground:
++ case eColorID_TextSelectForeground:
++ case eColorID_TextSelectBackgroundDisabled:
++ case eColorID_TextSelectBackgroundAttention:
++ case eColorID_TextHighlightBackground:
++ case eColorID_TextHighlightForeground:
++ case eColorID_IMERawInputBackground:
++ case eColorID_IMERawInputForeground:
++ case eColorID_IMERawInputUnderline:
++ case eColorID_IMESelectedRawTextBackground:
++ case eColorID_IMESelectedRawTextForeground:
++ case eColorID_IMESelectedRawTextUnderline:
++ case eColorID_IMEConvertedTextBackground:
++ case eColorID_IMEConvertedTextForeground:
++ case eColorID_IMEConvertedTextUnderline:
++ case eColorID_IMESelectedConvertedTextBackground:
++ case eColorID_IMESelectedConvertedTextForeground:
++ case eColorID_IMESelectedConvertedTextUnderline:
++ case eColorID_SpellCheckerUnderline:
++ result = true;
++ break;
++ default:
++ break;
++ }
++
++ return result;
++}
++
++nscolor
++nsXPLookAndFeel::GetStandinForNativeColor(ColorID aID)
++{
++ nscolor result = NS_RGB(0xFF, 0xFF, 0xFF);
++
++ // The stand-in colors are taken from the Windows 7 Aero theme
++ // except Mac-specific colors which are taken from Mac OS 10.7.
++ switch (aID) {
++ // CSS 2 colors:
++ case eColorID_activeborder: result = NS_RGB(0xB4, 0xB4, 0xB4); break;
++ case eColorID_activecaption: result = NS_RGB(0x99, 0xB4, 0xD1); break;
++ case eColorID_appworkspace: result = NS_RGB(0xAB, 0xAB, 0xAB); break;
++ case eColorID_background: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_buttonface: result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID_buttonhighlight: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID_buttonshadow: result = NS_RGB(0xA0, 0xA0, 0xA0); break;
++ case eColorID_buttontext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_captiontext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_graytext: result = NS_RGB(0x6D, 0x6D, 0x6D); break;
++ case eColorID_highlight: result = NS_RGB(0x33, 0x99, 0xFF); break;
++ case eColorID_highlighttext: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID_inactiveborder: result = NS_RGB(0xF4, 0xF7, 0xFC); break;
++ case eColorID_inactivecaption: result = NS_RGB(0xBF, 0xCD, 0xDB); break;
++ case eColorID_inactivecaptiontext:
++ result = NS_RGB(0x43, 0x4E, 0x54); break;
++ case eColorID_infobackground: result = NS_RGB(0xFF, 0xFF, 0xE1); break;
++ case eColorID_infotext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_menu: result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID_menutext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_scrollbar: result = NS_RGB(0xC8, 0xC8, 0xC8); break;
++ case eColorID_threeddarkshadow: result = NS_RGB(0x69, 0x69, 0x69); break;
++ case eColorID_threedface: result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID_threedhighlight: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID_threedlightshadow: result = NS_RGB(0xE3, 0xE3, 0xE3); break;
++ case eColorID_threedshadow: result = NS_RGB(0xA0, 0xA0, 0xA0); break;
++ case eColorID_window: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID_windowframe: result = NS_RGB(0x64, 0x64, 0x64); break;
++ case eColorID_windowtext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_buttondefault:
++ result = NS_RGB(0x69, 0x69, 0x69); break;
++ case eColorID__moz_field: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_fieldtext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_dialog: result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID__moz_dialogtext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_dragtargetzone:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_cellhighlight:
++ result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID__moz_cellhighlighttext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_html_cellhighlight:
++ result = NS_RGB(0x33, 0x99, 0xFF); break;
++ case eColorID__moz_html_cellhighlighttext:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_buttonhoverface:
++ result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID__moz_buttonhovertext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_menuhover:
++ result = NS_RGB(0x33, 0x99, 0xFF); break;
++ case eColorID__moz_menuhovertext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_menubartext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_menubarhovertext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_oddtreerow:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_mac_chrome_active:
++ result = NS_RGB(0xB2, 0xB2, 0xB2); break;
++ case eColorID__moz_mac_chrome_inactive:
++ result = NS_RGB(0xE1, 0xE1, 0xE1); break;
++ case eColorID__moz_mac_focusring:
++ result = NS_RGB(0x60, 0x9D, 0xD7); break;
++ case eColorID__moz_mac_menuselect:
++ result = NS_RGB(0x38, 0x75, 0xD7); break;
++ case eColorID__moz_mac_menushadow:
++ result = NS_RGB(0xA3, 0xA3, 0xA3); break;
++ case eColorID__moz_mac_menutextdisable:
++ result = NS_RGB(0x88, 0x88, 0x88); break;
++ case eColorID__moz_mac_menutextselect:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_mac_disabledtoolbartext:
++ result = NS_RGB(0x3F, 0x3F, 0x3F); break;
++ case eColorID__moz_mac_alternateprimaryhighlight:
++ result = NS_RGB(0x38, 0x75, 0xD7); break;
++ case eColorID__moz_mac_secondaryhighlight:
++ result = NS_RGB(0xD4, 0xD4, 0xD4); break;
++ case eColorID__moz_win_mediatext:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_win_communicationstext:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_nativehyperlinktext:
++ result = NS_RGB(0x00, 0x66, 0xCC); break;
++ case eColorID__moz_comboboxtext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_combobox:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ default:
++ break;
++ }
++
++ return result;
++}
++
+ //
+ // All these routines will return NS_OK if they have a value,
+ // in which case the nsLookAndFeel should use that value;
+@@ -509,7 +658,8 @@ nsXPLookAndFeel::IsSpecialColor(ColorID aID, nscolor &aColor)
+ // platform-specific nsLookAndFeel should use its own values instead.
+ //
+ nsresult
+-nsXPLookAndFeel::GetColorImpl(ColorID aID, nscolor &aResult)
++nsXPLookAndFeel::GetColorImpl(ColorID aID, bool aUseStandinsForNativeColors,
++ nscolor &aResult)
+ {
+ if (!sInitialized)
+ Init();
+@@ -595,7 +745,10 @@ nsXPLookAndFeel::GetColorImpl(ColorID aID, nscolor &aResult)
+ }
+ #endif // DEBUG_SYSTEM_COLOR_USE
+
+- if (IS_COLOR_CACHED(aID)) {
++ if (aUseStandinsForNativeColors && ColorIsNotCSSAccessible(aID))
++ aUseStandinsForNativeColors = false;
++
++ if (!aUseStandinsForNativeColors && IS_COLOR_CACHED(aID)) {
+ aResult = sCachedColors[aID];
+ return NS_OK;
+ }
+@@ -629,6 +782,12 @@ nsXPLookAndFeel::GetColorImpl(ColorID aID, nscolor &aResult)
+ return NS_OK;
+ }
+
++ if (sUseNativeColors && aUseStandinsForNativeColors)
++ {
++ aResult = GetStandinForNativeColor(aID);
++ return NS_OK;
++ }
++
+ if (sUseNativeColors && NS_SUCCEEDED(NativeGetColor(aID, aResult))) {
+ if ((gfxPlatform::GetCMSMode() == eCMSMode_All) &&
+ !IsSpecialColor(aID, aResult)) {
+@@ -719,7 +878,15 @@ namespace mozilla {
+ nsresult
+ LookAndFeel::GetColor(ColorID aID, nscolor* aResult)
+ {
+- return nsLookAndFeel::GetInstance()->GetColorImpl(aID, *aResult);
++ return nsLookAndFeel::GetInstance()->GetColorImpl(aID, false, *aResult);
++}
++
++nsresult
++LookAndFeel::GetColor(ColorID aID, bool aUseStandinsForNativeColors,
++ nscolor* aResult)
++{
++ return nsLookAndFeel::GetInstance()->GetColorImpl(aID,
++ aUseStandinsForNativeColors, *aResult);
+ }
+
+ // static
+diff --git a/widget/src/xpwidgets/nsXPLookAndFeel.h b/widget/src/xpwidgets/nsXPLookAndFeel.h
+index ce06575..c0ecc32 100644
+--- a/widget/src/xpwidgets/nsXPLookAndFeel.h
++++ b/widget/src/xpwidgets/nsXPLookAndFeel.h
+@@ -84,7 +84,8 @@ public:
+ // otherwise we'll return NS_ERROR_NOT_AVAILABLE, in which case, the
+ // platform-specific nsLookAndFeel should use its own values instead.
+ //
+- nsresult GetColorImpl(ColorID aID, nscolor &aResult);
++ nsresult GetColorImpl(ColorID aID, bool aUseStandinsForNativeColors,
++ nscolor &aResult);
+ virtual nsresult GetIntImpl(IntID aID, PRInt32 &aResult);
+ virtual nsresult GetFloatImpl(FloatID aID, float &aResult);
+
+@@ -111,6 +112,8 @@ protected:
+ void InitColorFromPref(PRInt32 aIndex);
+ virtual nsresult NativeGetColor(ColorID aID, nscolor &aResult) = 0;
+ bool IsSpecialColor(ColorID aID, nscolor &aColor);
++ bool ColorIsNotCSSAccessible(ColorID aID);
++ nscolor GetStandinForNativeColor(ColorID aID);
+
+ static int OnPrefChanged(const char* aPref, void* aClosure);
+
+--
+1.7.5.4
+
1
0

[torbrowser/maint-2.3] Merge branch 'maint-2.2' into maint-2.3
by mikeperry@torproject.org 09 Oct '12
by mikeperry@torproject.org 09 Oct '12
09 Oct '12
commit 115394478d1bf987b8b7a9ac43d321eb8951e669
Merge: 9a21a47 1720f15
Author: Mike Perry <mikeperry-git(a)fscked.org>
Date: Tue Oct 9 15:12:30 2012 -0700
Merge branch 'maint-2.2' into maint-2.3
1
0

[torbrowser/maint-2.3] Include anti-fingerprinting patches from Pearl Crescent, LLC.
by mikeperry@torproject.org 09 Oct '12
by mikeperry@torproject.org 09 Oct '12
09 Oct '12
commit 1720f1520443c0c1e3be03abbb467662d4d54e33
Author: Mike Perry <mikeperry-git(a)fscked.org>
Date: Tue Oct 9 15:04:56 2012 -0700
Include anti-fingerprinting patches from Pearl Crescent, LLC.
---
...nents.interfaces-lookupMethod-from-conten.patch | 10 +-
...0002-Make-Permissions-Manager-memory-only.patch | 4 +-
...-Make-Intermediate-Cert-Store-memory-only.patch | 4 +-
.../firefox/0004-Add-a-string-based-cacheKey.patch | 4 +-
.../0005-Block-all-plugins-except-flash.patch | 4 +-
...ontent-pref-service-memory-only-clearable.patch | 4 +-
...owser-exit-when-not-launched-from-Vidalia.patch | 6 +-
.../0008-Disable-SSL-Session-ID-tracking.patch | 6 +-
...observer-event-to-close-persistent-connec.patch | 4 +-
...ice-and-system-specific-CSS-Media-Queries.patch | 68 ++-
...11-Limit-the-number-of-fonts-per-document.patch | 4 +-
.../0012-Rebrand-Firefox-to-TorBrowser.patch | 4 +-
.../0013-Make-Download-manager-memory-only.patch | 4 +-
.../0014-Add-DDG-and-StartPage-to-Omnibox.patch | 4 +-
...-nsICacheService.EvictEntries-synchronous.patch | 8 +-
.../firefox/0016-Prevent-WebSocket-DNS-leak.patch | 4 +-
...ize-HTTP-request-order-and-pipeline-depth.patch | 4 +-
...th-headers-before-the-modify-request-obse.patch | 4 +-
...Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch | 4 +-
...d-mozIThirdPartyUtil.getFirstPartyURI-API.patch | 4 +-
.../0021-Add-canvas-image-extraction-prompt.patch | 551 ++++++++++++++++++++
...nt-window-coordinates-for-mouse-event-scr.patch | 43 ++
...se-physical-screen-info.-via-window-and-w.patch | 312 +++++++++++
...not-expose-system-colors-to-CSS-or-canvas.patch | 537 +++++++++++++++++++
24 files changed, 1541 insertions(+), 60 deletions(-)
diff --git a/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch b/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch
index c99e10a..1a82800 100644
--- a/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch
+++ b/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch
@@ -1,7 +1,7 @@
-From 18fea351a9f218893514ccbca82c492ce81d038d Mon Sep 17 00:00:00 2001
+From 1c2ccbea73720db5405602e4033c69b706068a8b Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:40:40 -0800
-Subject: [PATCH 01/19] Block Components.interfaces,lookupMethod from content
+Subject: [PATCH 01/24] Block Components.interfaces,lookupMethod from content
This patch removes the ability of content script to access
Components.interfaces.* as well as call or access Components.lookupMethod.
@@ -20,10 +20,10 @@ https://trac.torproject.org/projects/tor/ticket/2874
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/js/xpconnect/src/XPCComponents.cpp b/js/xpconnect/src/XPCComponents.cpp
-index 3bcbf91..d5c020a 100644
+index 38bfe08..7224b9b 100644
--- a/js/xpconnect/src/XPCComponents.cpp
+++ b/js/xpconnect/src/XPCComponents.cpp
-@@ -4456,7 +4456,9 @@ nsXPCComponents::CanCreateWrapper(const nsIID * iid, char **_retval)
+@@ -4502,7 +4502,9 @@ nsXPCComponents::CanCreateWrapper(const nsIID * iid, char **_retval)
NS_IMETHODIMP
nsXPCComponents::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, char **_retval)
{
@@ -34,7 +34,7 @@ index 3bcbf91..d5c020a 100644
*_retval = xpc_CheckAccessList(methodName, allowed);
return NS_OK;
}
-@@ -4465,7 +4467,9 @@ nsXPCComponents::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, c
+@@ -4511,7 +4513,9 @@ nsXPCComponents::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, c
NS_IMETHODIMP
nsXPCComponents::CanGetProperty(const nsIID * iid, const PRUnichar *propertyName, char **_retval)
{
diff --git a/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch b/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
index 5d5a741..fa23d93 100644
--- a/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
+++ b/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
@@ -1,7 +1,7 @@
-From 336217485d707ff63ef42d2a0bc3705c2c7f7a3c Mon Sep 17 00:00:00 2001
+From cd983b1b57b1f4ae10c8deec5aa12ec957fdc855 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:45:16 -0800
-Subject: [PATCH 02/19] Make Permissions Manager memory-only
+Subject: [PATCH 02/24] Make Permissions Manager memory-only
This patch exposes a pref 'permissions.memory_only' that properly isolates the
permissions manager to memory, which is responsible for all user specified
diff --git a/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch b/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
index 912d82f..b10fb85 100644
--- a/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
+++ b/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
@@ -1,7 +1,7 @@
-From e6d127b805461470bff0dad12f5ad89fc3cd3df3 Mon Sep 17 00:00:00 2001
+From f100a7979e1a44863a8a67a09743f0e17b5dd14e Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Fri, 19 Aug 2011 17:58:23 -0700
-Subject: [PATCH 03/19] Make Intermediate Cert Store memory-only.
+Subject: [PATCH 03/24] Make Intermediate Cert Store memory-only.
This patch makes the intermediate SSL cert store exist in memory only.
diff --git a/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch b/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
index af88b70..f3afa97 100644
--- a/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
+++ b/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
@@ -1,7 +1,7 @@
-From 84668dfe7bdcd35d96ffcaf273ade5a5d8d470f8 Mon Sep 17 00:00:00 2001
+From d674d09bc233d200b1ebc47f8e6ac4ebd6e4225a Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Fri, 2 Sep 2011 20:47:02 -0700
-Subject: [PATCH 04/19] Add a string-based cacheKey.
+Subject: [PATCH 04/24] Add a string-based cacheKey.
Used for isolating cache according to same-origin policy.
---
diff --git a/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch b/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
index e6d5adc..e7a831e 100644
--- a/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
+++ b/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
@@ -1,7 +1,7 @@
-From 3457f78e346df5962449cbd5aa86624e19fd5f64 Mon Sep 17 00:00:00 2001
+From 88a390822d232ba037de1f15091977ca7e1064bf Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:50:15 -0800
-Subject: [PATCH 05/19] Block all plugins except flash.
+Subject: [PATCH 05/24] Block all plugins except flash.
We cannot use the @mozilla.org/extensions/blocklist;1 service, because we
actually want to stop plugins from ever entering the browser's process space
diff --git a/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch b/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
index 1ea7e14..17af793 100644
--- a/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
+++ b/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
@@ -1,7 +1,7 @@
-From 66ff6c30d5b1de5d549181acbba686f792fe4cb4 Mon Sep 17 00:00:00 2001
+From 71ba98d81a6ecada62af4d2ee03be050d371d996 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Thu, 8 Sep 2011 08:40:17 -0700
-Subject: [PATCH 06/19] Make content pref service memory-only + clearable
+Subject: [PATCH 06/24] Make content pref service memory-only + clearable
This prevents random urls from being inserted into content-prefs.sqllite in
the profile directory as content prefs change (includes site-zoom and perhaps
diff --git a/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch b/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
index 5d384a7..cc496d3 100644
--- a/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
+++ b/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
@@ -1,7 +1,7 @@
-From d6956a597662f3d753622377183cb317ef6a3ad4 Mon Sep 17 00:00:00 2001
+From 12579def59d67416b841f6b0a6eadfd94bba72e9 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Sun, 9 Oct 2011 22:50:07 -0700
-Subject: [PATCH 07/19] Make Tor Browser exit when not launched from Vidalia
+Subject: [PATCH 07/24] Make Tor Browser exit when not launched from Vidalia
Turns out the Windows 7 UI encourages users to "dock" their Tor Browser app
for easy relaunch. If they manage to do this, we should fail closed rather
@@ -16,7 +16,7 @@ actually be common.
1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
-index b06a17b..fc1d305 100644
+index f16a0c5..20e3666 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -1217,6 +1217,21 @@ function BrowserStartup() {
diff --git a/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch b/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
index 82438c2..39e1483 100644
--- a/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
+++ b/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
@@ -1,7 +1,7 @@
-From 70161b38e1855ce4b7a61ac1e9572fb07dfbedda Mon Sep 17 00:00:00 2001
+From 7586e413761858ce705d25d4a1673e608a162bed Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Wed, 7 Dec 2011 19:36:38 -0800
-Subject: [PATCH 08/19] Disable SSL Session ID tracking.
+Subject: [PATCH 08/24] Disable SSL Session ID tracking.
We can't easily bind SSL Session ID tracking to url bar domain,
so we have to disable them to satisfy
@@ -11,7 +11,7 @@ https://www.torproject.org/projects/torbrowser/design/#identifier-linkabili….
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/security/nss/lib/ssl/sslsock.c b/security/nss/lib/ssl/sslsock.c
-index 28e6210..fa48ecd 100644
+index 0c4d0c7..8d23fc0 100644
--- a/security/nss/lib/ssl/sslsock.c
+++ b/security/nss/lib/ssl/sslsock.c
@@ -173,7 +173,7 @@ static sslOptions ssl_defaults = {
diff --git a/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch b/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
index 39a71a4..e693c71 100644
--- a/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
+++ b/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
@@ -1,7 +1,7 @@
-From d5ef29d9219a7ff9a78f9523845a2e2966c2a266 Mon Sep 17 00:00:00 2001
+From 9c6f997dd9a44336af9a1db17f5b680cc80a0e6c Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:53:28 -0800
-Subject: [PATCH 09/19] Provide an observer event to close persistent
+Subject: [PATCH 09/24] Provide an observer event to close persistent
connections
We need to prevent linkability across "New Identity", which includes closing
diff --git a/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch b/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch
index d4f1a1a..14e584c 100644
--- a/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch
+++ b/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch
@@ -1,19 +1,14 @@
-From d3261423b0bd07fb3c0ca7b9448c9abb97053be2 Mon Sep 17 00:00:00 2001
-From: Shondoit Walker <shondoit(a)gmail.com>
-Date: Mon, 4 Jun 2012 19:15:31 +0200
-Subject: [PATCH 10/19] Limit device- and system-specific CSS Media Queries
+From 8f97f2f36adb9e4416f3d19af10880c800c846c2 Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Thu, 4 Oct 2012 14:28:48 -0400
+Subject: [PATCH 10/24] Limit device and system specific CSS Media Queries.
-This is done to address
-https://www.torproject.org/projects/torbrowser/design/#fingerprinting-linkability
-
-This also fixes bug #4795 by making queries still available for chrome windows,
-whilst returning nothing or non-device-specific values for web pages or extensions.
---
- layout/style/nsMediaFeatures.cpp | 42 ++++++++++++++++++++++++-------------
- 1 files changed, 27 insertions(+), 15 deletions(-)
+ layout/style/nsMediaFeatures.cpp | 71 ++++++++++++++++++++++++-------------
+ 1 files changed, 46 insertions(+), 25 deletions(-)
diff --git a/layout/style/nsMediaFeatures.cpp b/layout/style/nsMediaFeatures.cpp
-index 6eca06e..25735e8 100644
+index 6eca06e..5b1df7e 100644
--- a/layout/style/nsMediaFeatures.cpp
+++ b/layout/style/nsMediaFeatures.cpp
@@ -130,6 +130,9 @@ GetDeviceContextFor(nsPresContext* aPresContext)
@@ -63,7 +58,50 @@ index 6eca06e..25735e8 100644
}
static nsresult
-@@ -311,8 +315,12 @@ static nsresult
+@@ -236,13 +240,17 @@ static nsresult
+ GetColor(nsPresContext* aPresContext, const nsMediaFeature*,
+ nsCSSValue& aResult)
+ {
+- // FIXME: This implementation is bogus. nsDeviceContext
+- // doesn't provide reliable information (should be fixed in bug
+- // 424386).
+- // FIXME: On a monochrome device, return 0!
+- nsDeviceContext *dx = GetDeviceContextFor(aPresContext);
+- PRUint32 depth;
+- dx->GetDepth(depth);
++ PRUint32 depth = 24; // Always return 24 to non-chrome callers.
++
++ if (aPresContext->IsChrome()) {
++ // FIXME: This implementation is bogus. nsDeviceContext
++ // doesn't provide reliable information (should be fixed in bug
++ // 424386).
++ // FIXME: On a monochrome device, return 0!
++ nsDeviceContext *dx = GetDeviceContextFor(aPresContext);
++ dx->GetDepth(depth);
++ }
++
+ // The spec says to use bits *per color component*, so divide by 3,
+ // and round down, since the spec says to use the smallest when the
+ // color components differ.
+@@ -280,9 +288,14 @@ static nsresult
+ GetResolution(nsPresContext* aPresContext, const nsMediaFeature*,
+ nsCSSValue& aResult)
+ {
+- // Resolution values are in device pixels, not CSS pixels.
+- nsDeviceContext *dx = GetDeviceContextFor(aPresContext);
+- float dpi = float(dx->AppUnitsPerPhysicalInch()) / float(dx->AppUnitsPerDevPixel());
++ float dpi = 96; // Always return 96 to non-chrome callers.
++
++ if (aPresContext->IsChrome()) {
++ // Resolution values are in device pixels, not CSS pixels.
++ nsDeviceContext *dx = GetDeviceContextFor(aPresContext);
++ dpi = float(dx->AppUnitsPerPhysicalInch()) / float(dx->AppUnitsPerDevPixel());
++ }
++
+ aResult.SetFloatValue(dpi, eCSSUnit_Inch);
+ return NS_OK;
+ }
+@@ -311,8 +324,12 @@ static nsresult
GetDevicePixelRatio(nsPresContext* aPresContext, const nsMediaFeature*,
nsCSSValue& aResult)
{
@@ -78,7 +116,7 @@ index 6eca06e..25735e8 100644
return NS_OK;
}
-@@ -320,18 +328,21 @@ static nsresult
+@@ -320,18 +337,21 @@ static nsresult
GetSystemMetric(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
nsCSSValue& aResult)
{
@@ -101,7 +139,7 @@ index 6eca06e..25735e8 100644
aResult.Reset();
#ifdef XP_WIN
PRUint8 windowsThemeId =
-@@ -350,7 +361,8 @@ GetWindowsTheme(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
+@@ -350,7 +370,8 @@ GetWindowsTheme(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
}
}
#endif
diff --git a/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch b/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
index 33500a7..ff9e618 100644
--- a/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
+++ b/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
@@ -1,7 +1,7 @@
-From b562518157b03735bc4a17ecb9a233f11ff99a45 Mon Sep 17 00:00:00 2001
+From cb3a6f45dd2c15d6b75084e1a4dded18ed638632 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 16:01:21 -0800
-Subject: [PATCH 11/19] Limit the number of fonts per document.
+Subject: [PATCH 11/24] Limit the number of fonts per document.
We create two prefs:
browser.display.max_font_count and browser.display.max_font_attempts.
diff --git a/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch b/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch
index 583d1bf..e627238 100644
--- a/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch
+++ b/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch
@@ -1,7 +1,7 @@
-From 235aa1bffd7ada80e14d7a15b2d3e7f89f4af710 Mon Sep 17 00:00:00 2001
+From 5820fc300fe1cae27752673e8721a19e70bf727c Mon Sep 17 00:00:00 2001
From: Erinn Clark <erinn(a)torproject.org>
Date: Wed, 25 Apr 2012 09:14:00 -0300
-Subject: [PATCH 12/19] Rebrand Firefox to TorBrowser
+Subject: [PATCH 12/24] Rebrand Firefox to TorBrowser
This patch does some basic renaming of Firefox to TorBrowser. The rest of the
branding is done by images and icons.
diff --git a/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch b/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch
index 9a0533b..1ad0972 100644
--- a/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch
+++ b/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch
@@ -1,7 +1,7 @@
-From 6eba0489502d7298e0941df12a0823b13078c52b Mon Sep 17 00:00:00 2001
+From 28178fb406d86b317b13b16ade3b06e5e1500c7e Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 25 Apr 2012 13:39:35 -0700
-Subject: [PATCH 13/19] Make Download manager memory only.
+Subject: [PATCH 13/24] Make Download manager memory only.
Solves https://trac.torproject.org/projects/tor/ticket/4017.
diff --git a/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch b/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch
index df71776..adbd3d4 100644
--- a/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch
+++ b/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch
@@ -1,7 +1,7 @@
-From c47053eea6488c5c949ff98c37a9669f969e4175 Mon Sep 17 00:00:00 2001
+From 2a80e84755c97cf4ff3ab63bda1bd5f0936d9594 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 25 Apr 2012 15:03:46 -0700
-Subject: [PATCH 14/19] Add DDG and StartPage to Omnibox.
+Subject: [PATCH 14/24] Add DDG and StartPage to Omnibox.
You mean there are search engines that don't require captchas if you don't
have a cookie? Holy crap. Get those in there now.
diff --git a/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch b/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch
index 840c1c9..93a989b 100644
--- a/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch
+++ b/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch
@@ -1,7 +1,7 @@
-From 231dc894259f16bb39ff7d9fe3cc3fa1cda30eb1 Mon Sep 17 00:00:00 2001
+From 20c94cb890a8872c07ba13686e293ca147b85cd6 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue, 1 May 2012 15:02:03 -0700
-Subject: [PATCH 15/19] Make nsICacheService.EvictEntries synchronous
+Subject: [PATCH 15/24] Make nsICacheService.EvictEntries synchronous
This fixes a race condition that allows cache-based EverCookies to persist for
a brief time (on the order of minutes?) after cache clearing/"New Identity".
@@ -12,10 +12,10 @@ https://trac.torproject.org/projects/tor/ticket/5715
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/netwerk/cache/nsCacheService.cpp b/netwerk/cache/nsCacheService.cpp
-index 8af611f..65686c7 100644
+index 83ce887..e9f1a76 100644
--- a/netwerk/cache/nsCacheService.cpp
+++ b/netwerk/cache/nsCacheService.cpp
-@@ -1315,10 +1315,21 @@ NS_IMETHODIMP nsCacheService::VisitEntries(nsICacheVisitor *visitor)
+@@ -1316,10 +1316,21 @@ NS_IMETHODIMP nsCacheService::VisitEntries(nsICacheVisitor *visitor)
return NS_OK;
}
diff --git a/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch b/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch
index 05f1923..bb70b17 100644
--- a/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch
+++ b/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch
@@ -1,7 +1,7 @@
-From bf5c8236b9b995e01e7909181dfe3f01bec05149 Mon Sep 17 00:00:00 2001
+From 976f0d4fabb6b0b50c83192d622827357c761bd3 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 2 May 2012 17:44:39 -0700
-Subject: [PATCH 16/19] Prevent WebSocket DNS leak.
+Subject: [PATCH 16/24] Prevent WebSocket DNS leak.
This is due to an improper implementation of the WebSocket spec by Mozilla.
diff --git a/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch b/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch
index 4d0ee81..f1814e7 100644
--- a/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch
+++ b/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch
@@ -1,7 +1,7 @@
-From 276cc8cd478a6ad495758ab7aee27a6a88d12bcc Mon Sep 17 00:00:00 2001
+From 36f826e64411a74912ba1adebd1a30b84716bf84 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 6 Jun 2012 11:08:56 -0700
-Subject: [PATCH 17/19] Randomize HTTP request order and pipeline depth.
+Subject: [PATCH 17/24] Randomize HTTP request order and pipeline depth.
This is an experimental defense against
http://lorre.uni.lu/~andriy/papers/acmccs-wpes11-fingerprinting.pdf
diff --git a/src/current-patches/firefox/0018-Add-HTTP-auth-headers-before-the-modify-request-obse.patch b/src/current-patches/firefox/0018-Add-HTTP-auth-headers-before-the-modify-request-obse.patch
index 845d60e..46cf611 100644
--- a/src/current-patches/firefox/0018-Add-HTTP-auth-headers-before-the-modify-request-obse.patch
+++ b/src/current-patches/firefox/0018-Add-HTTP-auth-headers-before-the-modify-request-obse.patch
@@ -1,7 +1,7 @@
-From 3a0261c7fdbed4a4705d5c6c39edeed4c127121f Mon Sep 17 00:00:00 2001
+From c1e26c8a294abe426fd6fb84508db6074ef23379 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Fri, 2 Sep 2011 15:33:20 -0700
-Subject: [PATCH 18/19] Add HTTP auth headers before the modify-request
+Subject: [PATCH 18/24] Add HTTP auth headers before the modify-request
observer.
Otherwise, how are we supposed to modify them?
diff --git a/src/current-patches/firefox/0019-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch b/src/current-patches/firefox/0019-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch
index 16ce98a..7f3869c 100644
--- a/src/current-patches/firefox/0019-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch
+++ b/src/current-patches/firefox/0019-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch
@@ -1,7 +1,7 @@
-From e263c559a4799a26a9ef5ca3490372fc93a62d3e Mon Sep 17 00:00:00 2001
+From 49cccdba3e6fc10e0e376d423b3ba1b6135f62e1 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu, 7 Jun 2012 16:25:48 -0700
-Subject: [PATCH 19/19] Adapt Steven Michaud's Mac crashfix patch
+Subject: [PATCH 19/24] Adapt Steven Michaud's Mac crashfix patch
Source is: https://bugzilla.mozilla.org/show_bug.cgi?id=715885#c35
diff --git a/src/current-patches/firefox/0020-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch b/src/current-patches/firefox/0020-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch
index 56d9848..700a795 100644
--- a/src/current-patches/firefox/0020-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch
+++ b/src/current-patches/firefox/0020-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch
@@ -1,7 +1,7 @@
-From 73e548ceee36b99f06e33010163ed8b8cc86b3dd Mon Sep 17 00:00:00 2001
+From 24f62d79a6179598ed633481e2bbeac1b2ccd9bc Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue, 28 Aug 2012 18:35:33 -0700
-Subject: [PATCH 20/20] Add mozIThirdPartyUtil.getFirstPartyURI API
+Subject: [PATCH 20/24] Add mozIThirdPartyUtil.getFirstPartyURI API
API allows you to get the url bar URI for a channel or nsIDocument.
---
diff --git a/src/current-patches/firefox/0021-Add-canvas-image-extraction-prompt.patch b/src/current-patches/firefox/0021-Add-canvas-image-extraction-prompt.patch
new file mode 100644
index 0000000..f303683
--- /dev/null
+++ b/src/current-patches/firefox/0021-Add-canvas-image-extraction-prompt.patch
@@ -0,0 +1,551 @@
+From 3e8d778866d96e1ca82f2b08e7b8d948c1c3853d Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Tue, 9 Oct 2012 11:21:06 -0400
+Subject: [PATCH 21/24] Add canvas image extraction prompt.
+
+---
+ browser/base/content/browser.css | 1 +
+ browser/base/content/browser.js | 102 ++++++++++++++++++++
+ browser/base/content/browser.xul | 1 +
+ .../en-US/chrome/browser/browser.properties | 7 ++
+ browser/themes/gnomestripe/browser/browser.css | 2 +
+ browser/themes/pinstripe/browser/browser.css | 2 +
+ browser/themes/winstripe/browser/browser.css | 2 +
+ content/canvas/src/CanvasUtils.cpp | 63 ++++++++++++
+ content/canvas/src/CanvasUtils.h | 2 +
+ content/canvas/src/nsCanvasRenderingContext2D.cpp | 15 +++
+ .../canvas/src/nsCanvasRenderingContext2DAzure.cpp | 15 +++
+ content/html/content/public/nsHTMLCanvasElement.h | 3 +
+ content/html/content/src/Makefile.in | 1 +
+ content/html/content/src/nsHTMLCanvasElement.cpp | 39 ++++++--
+ 14 files changed, 246 insertions(+), 9 deletions(-)
+
+diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css
+index f033c2b..c709631 100644
+--- a/browser/base/content/browser.css
++++ b/browser/base/content/browser.css
+@@ -440,6 +440,7 @@ window[chromehidden~="toolbar"] toolbar:not(.toolbar-primary):not(.chromeclass-m
+ created with a null anchorID, so in that case use a default anchor icon. */
+ #notification-popup-box[anchorid="notification-popup-box"] > #default-notification-icon,
+ #notification-popup-box[anchorid="geo-notification-icon"] > #geo-notification-icon,
++#notification-popup-box[anchorid="canvas-notification-icon"] > #canvas-notification-icon,
+ #notification-popup-box[anchorid="indexedDB-notification-icon"] > #indexedDB-notification-icon,
+ #notification-popup-box[anchorid="addons-notification-icon"] > #addons-notification-icon,
+ #notification-popup-box[anchorid="password-notification-icon"] > #password-notification-icon {
+diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
+index 20e3666..0c6bd46 100644
+--- a/browser/base/content/browser.js
++++ b/browser/base/content/browser.js
+@@ -1522,6 +1522,7 @@ function delayedStartup(isLoadingBlank, mustLoadSidebar) {
+ BrowserOffline.init();
+ OfflineApps.init();
+ IndexedDBPromptHelper.init();
++ CanvasPermissionPromptHelper.init();
+ gFormSubmitObserver.init();
+ AddonManager.addAddonListener(AddonsMgrListener);
+
+@@ -1834,6 +1835,7 @@ function BrowserShutdown() {
+ BrowserOffline.uninit();
+ OfflineApps.uninit();
+ IndexedDBPromptHelper.uninit();
++ CanvasPermissionPromptHelper.uninit();
+ AddonManager.removeAddonListener(AddonsMgrListener);
+ }
+
+@@ -6656,6 +6658,106 @@ var IndexedDBPromptHelper = {
+ }
+ };
+
++var CanvasPermissionPromptHelper = {
++ _permissionsPrompt: "canvas-permissions-prompt",
++ _notificationIcon: "canvas-notification-icon",
++
++ init:
++ function CanvasPermissionPromptHelper_init() {
++ Services.obs.addObserver(this, this._permissionsPrompt, false);
++ },
++
++ uninit:
++ function CanvasPermissionPromptHelper_uninit() {
++ Services.obs.removeObserver(this, this._permissionsPrompt, false);
++ },
++
++ // aSubject is an nsIDOMWindow.
++ // aData is an URL string.
++ observe:
++ function CanvasPermissionPromptHelper_observe(aSubject, aTopic, aData) {
++ if ((aTopic != this._permissionsPrompt) || !aData)
++ throw new Error("Unexpected topic or missing URL");
++
++ var uri = makeURI(aData);
++ var contentWindow = aSubject.QueryInterface(Ci.nsIDOMWindow);
++ var contentDocument = contentWindow.document;
++ var browserWindow =
++ OfflineApps._getBrowserWindowForContentWindow(contentWindow);
++
++ if (browserWindow != window) {
++ // Must belong to some other window.
++ return;
++ }
++
++ // If canvas prompt is already displayed, just return. This is OK (and
++ // more efficient) since this permission is associated with the top
++ // browser's URL.
++ if (PopupNotifications.getNotification(aTopic, browser))
++ return;
++
++ var bundleSvc = Cc["@mozilla.org/intl/stringbundle;1"].
++ getService(Ci.nsIStringBundleService);
++ var torBtnBundle;
++ try {
++ torBtnBundle = bundleSvc.createBundle(
++ "chrome://torbutton/locale/torbutton.properties");
++ } catch (e) {}
++
++ var message = getLocalizedString("canvas.siteprompt", [ uri.asciiHost ]);
++
++ var mainAction = {
++ label: getLocalizedString("canvas.allow"),
++ accessKey: getLocalizedString("canvas.allowAccessKey"),
++ callback: function() {
++ setCanvasPermission(uri, Ci.nsIPermissionManager.ALLOW_ACTION);
++ }
++ };
++
++ var secondaryActions = [
++ {
++ label: getLocalizedString("canvas.never"),
++ accessKey: getLocalizedString("canvas.neverAccessKey"),
++ callback: function() {
++ setCanvasPermission(uri, Ci.nsIPermissionManager.DENY_ACTION);
++ }
++ }
++ ];
++
++ // Since we have a process in place to perform localization for the
++ // Torbutton extension, get our strings from the extension if possible.
++ function getLocalizedString(aID, aParams) {
++ var s;
++ if (torBtnBundle) try {
++ if (aParams)
++ s = torBtnBundle.formatStringFromName(aID, aParams, aParams.length);
++ else
++ s = torBtnBundle.GetStringFromName(aID);
++ } catch (e) {}
++
++ if (!s) {
++ if (aParams)
++ s = gNavigatorBundle.getFormattedString(aID, aParams);
++ else
++ s = gNavigatorBundle.getString(aID);
++ }
++
++ return s;
++ }
++
++ function setCanvasPermission(aURI, aPerm) {
++ Services.perms.add(aURI, "canvas/extractData", aPerm,
++ Ci.nsIPermissionManager.EXPIRE_NEVER);
++ }
++
++ var browser = OfflineApps._getBrowserForContentWindow(browserWindow,
++ contentWindow);
++ notification = PopupNotifications.show(browser, aTopic, message,
++ this._notificationIcon, mainAction,
++ secondaryActions, null);
++ }
++};
++
+ function WindowIsClosing()
+ {
+ if (TabView.isVisible()) {
+diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
+index ba2a7cb..1acea43 100644
+--- a/browser/base/content/browser.xul
++++ b/browser/base/content/browser.xul
+@@ -520,6 +520,7 @@
+ <image id="default-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="geo-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="addons-notification-icon" class="notification-anchor-icon" role="button"/>
++ <image id="canvas-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="indexedDB-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="password-notification-icon" class="notification-anchor-icon" role="button"/>
+ </box>
+diff --git a/browser/locales/en-US/chrome/browser/browser.properties b/browser/locales/en-US/chrome/browser/browser.properties
+index 380e3c3..98154d1 100644
+--- a/browser/locales/en-US/chrome/browser/browser.properties
++++ b/browser/locales/en-US/chrome/browser/browser.properties
+@@ -197,6 +197,13 @@ offlineApps.usage=This website (%S) is now storing more than %SMB of data on you
+ offlineApps.manageUsage=Show settings
+ offlineApps.manageUsageAccessKey=S
+
++# Canvas permission prompt
++canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Blank (white) image data was returned this time.
++canvas.allow=Allow in the Future
++canvas.allowAccessKey=A
++canvas.never=Never for This Site
++canvas.neverAccessKey=e
++
+ # LOCALIZATION NOTE (indexedDB.usage): %1$S is the website host name
+ # %2$S a number of megabytes.
+ indexedDB.usage=This website (%1$S) is attempting to store more than %2$S MB of data on your computer for offline use.
+diff --git a/browser/themes/gnomestripe/browser/browser.css b/browser/themes/gnomestripe/browser/browser.css
+index edc0b72..8ba057e 100644
+--- a/browser/themes/gnomestripe/browser/browser.css
++++ b/browser/themes/gnomestripe/browser/browser.css
+@@ -1227,6 +1227,7 @@ toolbar[iconsize="small"] #feed-button {
+ list-style-image: url("moz-icon://stock/gtk-cancel?size=menu");
+ }
+
++.popup-notification-icon[popupid="canvas-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-quota-prompt"] {
+ list-style-image: url(chrome://global/skin/icons/question-64.png);
+@@ -1281,6 +1282,7 @@ toolbar[iconsize="small"] #feed-button {
+ list-style-image: url(chrome://mozapps/skin/extensions/extensionGeneric-16.png);
+ }
+
++#canvas-notification-icon,
+ #indexedDB-notification-icon {
+ list-style-image: url(chrome://global/skin/icons/question-16.png);
+ }
+diff --git a/browser/themes/pinstripe/browser/browser.css b/browser/themes/pinstripe/browser/browser.css
+index 2a96556..f94a6f2 100644
+--- a/browser/themes/pinstripe/browser/browser.css
++++ b/browser/themes/pinstripe/browser/browser.css
+@@ -2404,10 +2404,12 @@ toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
+ -moz-image-region: rect(0px, 48px, 16px, 32px);
+ }
+
++#canvas-notification-icon,
+ #indexedDB-notification-icon {
+ list-style-image: url(chrome://global/skin/icons/question-16.png);
+ }
+
++.popup-notification-icon[popupid="canvas-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-quota-prompt"] {
+ list-style-image: url(chrome://global/skin/icons/question-64.png);
+diff --git a/browser/themes/winstripe/browser/browser.css b/browser/themes/winstripe/browser/browser.css
+index 0103c79..d352790 100644
+--- a/browser/themes/winstripe/browser/browser.css
++++ b/browser/themes/winstripe/browser/browser.css
+@@ -2294,6 +2294,7 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
+ -moz-image-region: rect(32px, 32px, 48px, 16px);
+ }
+
++.popup-notification-icon[popupid="canvas-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-quota-prompt"] {
+ list-style-image: url(chrome://global/skin/icons/question-64.png);
+@@ -2346,6 +2347,7 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
+ list-style-image: url(chrome://mozapps/skin/extensions/extensionGeneric-16.png);
+ }
+
++#canvas-notification-icon,
+ #indexedDB-notification-icon {
+ list-style-image: url(chrome://global/skin/icons/question-16.png);
+ }
+diff --git a/content/canvas/src/CanvasUtils.cpp b/content/canvas/src/CanvasUtils.cpp
+index 2f822eb..d7d0591 100644
+--- a/content/canvas/src/CanvasUtils.cpp
++++ b/content/canvas/src/CanvasUtils.cpp
+@@ -59,6 +59,15 @@
+ #include "CanvasUtils.h"
+ #include "mozilla/gfx/Matrix.h"
+
++#include "nsIScriptObjectPrincipal.h"
++#include "nsIPermissionManager.h"
++#include "mozIThirdPartyUtil.h"
++#include "nsContentUtils.h"
++#include "nsUnicharUtils.h"
++
++#define TOPIC_CANVAS_PERMISSIONS_PROMPT "canvas-permissions-prompt"
++#define PERMISSION_CANVAS_EXTRACT_DATA "canvas/extractData"
++
+ namespace mozilla {
+ namespace CanvasUtils {
+
+@@ -101,6 +110,60 @@ DoDrawImageSecurityCheck(nsHTMLCanvasElement *aCanvasElement,
+ aCanvasElement->SetWriteOnly();
+ }
+
++// Check site-specific permission and display prompt if appropriate.
++bool
++IsImageExtractionAllowed(nsIDocument *aDocument)
++{
++ if (!aDocument)
++ return false;
++
++ nsPIDOMWindow *win = aDocument->GetWindow();
++ nsCOMPtr<nsIScriptObjectPrincipal> sop(do_QueryInterface(win));
++ if (sop && nsContentUtils::IsSystemPrincipal(sop->GetPrincipal()))
++ return true;
++
++ bool isAllowed = false;
++ nsCOMPtr<mozIThirdPartyUtil> thirdPartyUtil =
++ do_GetService(THIRDPARTYUTIL_CONTRACTID);
++ nsCOMPtr<nsIPermissionManager> permissionManager =
++ do_GetService(NS_PERMISSIONMANAGER_CONTRACTID);
++ if (thirdPartyUtil && permissionManager) {
++ nsCOMPtr<nsIURI> uri;
++ nsresult rv = thirdPartyUtil->GetFirstPartyURI(NULL, aDocument,
++ getter_AddRefs(uri));
++ uint32_t permission = nsIPermissionManager::UNKNOWN_ACTION;
++ if (NS_SUCCEEDED(rv)) {
++ // Allow local files to access canvas data; check content permissions
++ // for remote pages.
++ bool isFileURL = false;
++ (void)uri->SchemeIs("file", &isFileURL);
++ if (isFileURL)
++ permission = nsIPermissionManager::ALLOW_ACTION;
++ else {
++ rv = permissionManager->TestPermission(uri,
++ PERMISSION_CANVAS_EXTRACT_DATA, &permission);
++ }
++ }
++
++ if (NS_SUCCEEDED(rv)) {
++ isAllowed = (permission == nsIPermissionManager::ALLOW_ACTION);
++
++ if (!isAllowed && (permission != nsIPermissionManager::DENY_ACTION)) {
++ // Send notification so that a prompt is displayed.
++ nsCString spec;
++ rv = uri->GetSpec(spec);
++ NS_ENSURE_SUCCESS(rv, rv);
++ nsCOMPtr<nsIObserverService> obs =
++ mozilla::services::GetObserverService();
++ obs->NotifyObservers(win, TOPIC_CANVAS_PERMISSIONS_PROMPT,
++ NS_ConvertUTF8toUTF16(spec).get());
++ }
++ }
++ }
++
++ return isAllowed;
++}
++
+ void
+ LogMessage (const nsCString& errorString)
+ {
+diff --git a/content/canvas/src/CanvasUtils.h b/content/canvas/src/CanvasUtils.h
+index 36186dd..067ee46 100644
+--- a/content/canvas/src/CanvasUtils.h
++++ b/content/canvas/src/CanvasUtils.h
+@@ -77,6 +77,8 @@ void DoDrawImageSecurityCheck(nsHTMLCanvasElement *aCanvasElement,
+ bool forceWriteOnly,
+ bool CORSUsed);
+
++bool IsImageExtractionAllowed(nsIDocument *aDocument);
++
+ void LogMessage (const nsCString& errorString);
+ void LogMessagef (const char *fmt, ...);
+
+diff --git a/content/canvas/src/nsCanvasRenderingContext2D.cpp b/content/canvas/src/nsCanvasRenderingContext2D.cpp
+index 36389b0..0cf97ce 100644
+--- a/content/canvas/src/nsCanvasRenderingContext2D.cpp
++++ b/content/canvas/src/nsCanvasRenderingContext2D.cpp
+@@ -3886,6 +3886,21 @@ nsCanvasRenderingContext2D::GetImageData_explicit(PRInt32 x, PRInt32 y, PRUint32
+ if (!rightMost.valid() || !bottomMost.valid())
+ return NS_ERROR_DOM_SYNTAX_ERR;
+
++ // Check for site-specific permission and return all-white, opaque pixel
++ // data if no permission. This check is not needed if the canvas was
++ // created with a docshell (that is only done for special internal uses).
++ bool usePlaceholder = false;
++ if (mCanvasElement) {
++ nsCOMPtr<nsIDocument> ownerDoc = HTMLCanvasElement()->OwnerDoc();
++ usePlaceholder = !ownerDoc ||
++ !CanvasUtils::IsImageExtractionAllowed(ownerDoc);
++ }
++
++ if (usePlaceholder) {
++ memset(aData, 0xFF, aDataLen);
++ return NS_OK;
++ }
++
+ /* Copy the surface contents to the buffer */
+ nsRefPtr<gfxImageSurface> tmpsurf =
+ new gfxImageSurface(aData,
+diff --git a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+index 13baaa5..e8dfb1e 100644
+--- a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
++++ b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+@@ -4038,6 +4038,21 @@ nsCanvasRenderingContext2DAzure::GetImageData_explicit(PRInt32 x, PRInt32 y, PRU
+ return NS_OK;
+ }
+
++ // Check for site-specific permission and return all-white, opaque pixel
++ // data if no permission. This check is not needed if the canvas was
++ // created with a docshell (that is only done for special internal uses).
++ bool usePlaceholder = false;
++ if (mCanvasElement) {
++ nsCOMPtr<nsIDocument> ownerDoc = HTMLCanvasElement()->OwnerDoc();
++ usePlaceholder = !ownerDoc ||
++ !CanvasUtils::IsImageExtractionAllowed(ownerDoc);
++ }
++
++ if (usePlaceholder) {
++ memset(aData, 0xFF, aDataLen);
++ return NS_OK;
++ }
++
+ IntRect srcRect(0, 0, mWidth, mHeight);
+ IntRect destRect(x, y, w, h);
+
+diff --git a/content/html/content/public/nsHTMLCanvasElement.h b/content/html/content/public/nsHTMLCanvasElement.h
+index 86202a8..66176f2 100644
+--- a/content/html/content/public/nsHTMLCanvasElement.h
++++ b/content/html/content/public/nsHTMLCanvasElement.h
+@@ -188,13 +188,16 @@ protected:
+ nsresult UpdateContext(nsIPropertyBag *aNewContextOptions = nsnull);
+ nsresult ExtractData(const nsAString& aType,
+ const nsAString& aOptions,
++ bool aUsePlaceholder,
+ nsIInputStream** aStream,
+ bool& aFellBackToPNG);
+ nsresult ToDataURLImpl(const nsAString& aMimeType,
+ nsIVariant* aEncoderOptions,
++ bool aUsePlaceholder,
+ nsAString& aDataURL);
+ nsresult MozGetAsFileImpl(const nsAString& aName,
+ const nsAString& aType,
++ bool aUsePlaceholder,
+ nsIDOMFile** aResult);
+ nsresult GetContextHelper(const nsAString& aContextId,
+ bool aForceThebes,
+diff --git a/content/html/content/src/Makefile.in b/content/html/content/src/Makefile.in
+index 019d297..3db4f7c 100644
+--- a/content/html/content/src/Makefile.in
++++ b/content/html/content/src/Makefile.in
+@@ -138,6 +138,7 @@ INCLUDES += \
+ -I$(srcdir)/../../../events/src \
+ -I$(srcdir)/../../../xbl/src \
+ -I$(srcdir)/../../../xul/content/src \
++ -I$(srcdir)/../../../canvas/src/ \
+ -I$(srcdir)/../../../../layout/forms \
+ -I$(srcdir)/../../../../layout/style \
+ -I$(srcdir)/../../../../layout/tables \
+diff --git a/content/html/content/src/nsHTMLCanvasElement.cpp b/content/html/content/src/nsHTMLCanvasElement.cpp
+index a302f67..572a81b 100644
+--- a/content/html/content/src/nsHTMLCanvasElement.cpp
++++ b/content/html/content/src/nsHTMLCanvasElement.cpp
+@@ -60,6 +60,8 @@
+
+ #include "nsIWritablePropertyBag2.h"
+
++#include "CanvasUtils.h"
++
+ #define DEFAULT_CANVAS_WIDTH 300
+ #define DEFAULT_CANVAS_HEIGHT 150
+
+@@ -213,25 +215,36 @@ nsHTMLCanvasElement::ToDataURL(const nsAString& aType, nsIVariant* aParams,
+ return NS_ERROR_DOM_SECURITY_ERR;
+ }
+
+- return ToDataURLImpl(aType, aParams, aDataURL);
++ // Check site-specific permission and display prompt if appropriate.
++ // If no permission, return all-white, opaque image data.
++ bool usePlaceholder = !CanvasUtils::IsImageExtractionAllowed(OwnerDoc());
++ return ToDataURLImpl(aType, aParams, usePlaceholder, aDataURL);
+ }
+
++// TODO: on FF trunk, we also need to patch mozFetchAsStream().
+ nsresult
+ nsHTMLCanvasElement::ExtractData(const nsAString& aType,
+ const nsAString& aOptions,
++ bool aUsePlaceholder,
+ nsIInputStream** aStream,
+ bool& aFellBackToPNG)
+ {
+ // note that if we don't have a current context, the spec says we're
+ // supposed to just return transparent black pixels of the canvas
+ // dimensions.
++ // If placeholder data was requested, return all-white, opaque image data.
+ nsRefPtr<gfxImageSurface> emptyCanvas;
+ nsIntSize size = GetWidthHeight();
+- if (!mCurrentContext) {
++ if (aUsePlaceholder || !mCurrentContext) {
+ emptyCanvas = new gfxImageSurface(gfxIntSize(size.width, size.height), gfxASurface::ImageFormatARGB32);
+ if (emptyCanvas->CairoStatus()) {
+ return NS_ERROR_INVALID_ARG;
+ }
++
++ if (aUsePlaceholder) {
++ int32_t dataSize = emptyCanvas->GetDataSize();
++ memset(emptyCanvas->Data(), 0xFF, dataSize);
++ }
+ }
+
+ nsresult rv;
+@@ -241,12 +254,13 @@ nsHTMLCanvasElement::ExtractData(const nsAString& aType,
+ NS_ConvertUTF16toUTF8 encoderType(aType);
+
+ try_again:
+- if (mCurrentContext) {
++ if (!aUsePlaceholder && mCurrentContext) {
+ rv = mCurrentContext->GetInputStream(encoderType.get(),
+ nsPromiseFlatString(aOptions).get(),
+ getter_AddRefs(imgStream));
+ } else {
+- // no context, so we have to encode the empty image we created above
++ // Using placeholder or we have no context: encode the empty/white image
++ // we created above.
+ nsCString enccid("@mozilla.org/image/encoder;2?type=");
+ enccid += encoderType;
+
+@@ -284,6 +298,7 @@ nsHTMLCanvasElement::ExtractData(const nsAString& aType,
+ nsresult
+ nsHTMLCanvasElement::ToDataURLImpl(const nsAString& aMimeType,
+ nsIVariant* aEncoderOptions,
++ bool aUsePlaceholder,
+ nsAString& aDataURL)
+ {
+ bool fallbackToPNG = false;
+@@ -339,13 +354,15 @@ nsHTMLCanvasElement::ToDataURLImpl(const nsAString& aMimeType,
+ }
+
+ nsCOMPtr<nsIInputStream> stream;
+- rv = ExtractData(type, params, getter_AddRefs(stream), fallbackToPNG);
++ rv = ExtractData(type, params, aUsePlaceholder,
++ getter_AddRefs(stream), fallbackToPNG);
+
+ // If there are unrecognized custom parse options, we should fall back to
+ // the default values for the encoder without any options at all.
+ if (rv == NS_ERROR_INVALID_ARG && usingCustomParseOptions) {
+ fallbackToPNG = false;
+- rv = ExtractData(type, EmptyString(), getter_AddRefs(stream), fallbackToPNG);
++ rv = ExtractData(type, EmptyString(), aUsePlaceholder,
++ getter_AddRefs(stream), fallbackToPNG);
+ }
+
+ NS_ENSURE_SUCCESS(rv, rv);
+@@ -376,19 +393,23 @@ nsHTMLCanvasElement::MozGetAsFile(const nsAString& aName,
+ return NS_ERROR_DOM_SECURITY_ERR;
+ }
+
+- return MozGetAsFileImpl(aName, aType, aResult);
++ // Check site-speciifc permission and display prompt if appropriate.
++ // If no permission, return all-white, opaque image data.
++ bool usePlaceholder = !CanvasUtils::IsImageExtractionAllowed(OwnerDoc());
++ return MozGetAsFileImpl(aName, aType, usePlaceholder, aResult);
+ }
+
+ nsresult
+ nsHTMLCanvasElement::MozGetAsFileImpl(const nsAString& aName,
+ const nsAString& aType,
++ bool aUsePlaceholder,
+ nsIDOMFile** aResult)
+ {
+ bool fallbackToPNG = false;
+
+ nsCOMPtr<nsIInputStream> stream;
+- nsresult rv = ExtractData(aType, EmptyString(), getter_AddRefs(stream),
+- fallbackToPNG);
++ nsresult rv = ExtractData(aType, EmptyString(), aUsePlaceholder,
++ getter_AddRefs(stream), fallbackToPNG);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsAutoString type(aType);
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0022-Return-client-window-coordinates-for-mouse-event-scr.patch b/src/current-patches/firefox/0022-Return-client-window-coordinates-for-mouse-event-scr.patch
new file mode 100644
index 0000000..2532e5f
--- /dev/null
+++ b/src/current-patches/firefox/0022-Return-client-window-coordinates-for-mouse-event-scr.patch
@@ -0,0 +1,43 @@
+From eb9cc23d7b04d9c441f69e98834561622533f6ba Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Tue, 9 Oct 2012 11:13:45 -0400
+Subject: [PATCH 22/24] Return client window coordinates for mouse event
+ screenX/Y (for dragend, 0,0 is returned).
+
+---
+ content/events/src/nsDOMUIEvent.cpp | 15 +++++++++++++++
+ 1 files changed, 15 insertions(+), 0 deletions(-)
+
+diff --git a/content/events/src/nsDOMUIEvent.cpp b/content/events/src/nsDOMUIEvent.cpp
+index fe57f52..d641f0d 100644
+--- a/content/events/src/nsDOMUIEvent.cpp
++++ b/content/events/src/nsDOMUIEvent.cpp
+@@ -135,10 +135,25 @@ nsDOMUIEvent::GetScreenPoint()
+ return nsIntPoint(0, 0);
+ }
+
++ bool isChrome = nsContentUtils::IsCallerChrome();
++
+ if (!((nsGUIEvent*)mEvent)->widget ) {
++ // For non-chrome callers, return 0,0 if there is no widget associated
++ // with this event, e.g., for dragend events. Since dragend is for the
++ // drag originator and not for the receiver, it is probably not widely
++ // used (receivers get a drop event). Therefore, returning 0,0 should
++ // not break many web pages. Also, a few years ago Firefox returned 0,0.
++ // See: https://bugzilla.mozilla.org/show_bug.cgi?id=466379
++ if (!isChrome)
++ return nsIntPoint(0, 0);
++
+ return mEvent->refPoint;
+ }
+
++ // For non-chrome callers, return client area coordinates instead.
++ if (!isChrome)
++ return GetClientPoint();
++
+ nsIntPoint offset = mEvent->refPoint +
+ ((nsGUIEvent*)mEvent)->widget->WidgetToScreenOffset();
+ nscoord factor = mPresContext->DeviceContext()->UnscaledAppUnitsPerDevPixel();
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0023-Do-not-expose-physical-screen-info.-via-window-and-w.patch b/src/current-patches/firefox/0023-Do-not-expose-physical-screen-info.-via-window-and-w.patch
new file mode 100644
index 0000000..1907906
--- /dev/null
+++ b/src/current-patches/firefox/0023-Do-not-expose-physical-screen-info.-via-window-and-w.patch
@@ -0,0 +1,312 @@
+From f842f612d98477ad36014338a72f812cf4183e2f Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Wed, 3 Oct 2012 17:06:48 -0400
+Subject: [PATCH 23/24] Do not expose physical screen info. via window and
+ window.screen.
+
+---
+ dom/base/nsGlobalWindow.cpp | 46 +++++++++++++++++++++
+ dom/base/nsGlobalWindow.h | 2 +
+ dom/base/nsScreen.cpp | 92 +++++++++++++++++++++++++++++++++++++++++++
+ dom/base/nsScreen.h | 3 +
+ 4 files changed, 143 insertions(+), 0 deletions(-)
+
+diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp
+index 2c99571..982d931 100644
+--- a/dom/base/nsGlobalWindow.cpp
++++ b/dom/base/nsGlobalWindow.cpp
+@@ -3817,6 +3817,10 @@ nsGlobalWindow::GetOuterWidth(PRInt32* aOuterWidth)
+ {
+ FORWARD_TO_OUTER(GetOuterWidth, (aOuterWidth), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, return inner width to prevent fingerprinting.
++ if (!IsChrome())
++ return GetInnerWidth(aOuterWidth);
++
+ nsIntSize sizeCSSPixels;
+ nsresult rv = GetOuterSize(&sizeCSSPixels);
+ NS_ENSURE_SUCCESS(rv, rv);
+@@ -3830,6 +3834,10 @@ nsGlobalWindow::GetOuterHeight(PRInt32* aOuterHeight)
+ {
+ FORWARD_TO_OUTER(GetOuterHeight, (aOuterHeight), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, return inner height to prevent fingerprinting.
++ if (!IsChrome())
++ return GetInnerHeight(aOuterHeight);
++
+ nsIntSize sizeCSSPixels;
+ nsresult rv = GetOuterSize(&sizeCSSPixels);
+ NS_ENSURE_SUCCESS(rv, rv);
+@@ -3892,6 +3900,12 @@ nsGlobalWindow::GetScreenX(PRInt32* aScreenX)
+ {
+ FORWARD_TO_OUTER(GetScreenX, (aScreenX), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aScreenX = 0;
++ return NS_OK;
++ }
++
+ nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
+ GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
+ NS_ENSURE_TRUE(treeOwnerAsWin, NS_ERROR_FAILURE);
+@@ -3933,6 +3947,12 @@ nsGlobalWindow::GetMozInnerScreenX(float* aScreenX)
+ {
+ FORWARD_TO_OUTER(GetMozInnerScreenX, (aScreenX), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aScreenX = 0;
++ return NS_OK;
++ }
++
+ nsRect r = GetInnerScreenRect();
+ *aScreenX = nsPresContext::AppUnitsToFloatCSSPixels(r.x);
+ return NS_OK;
+@@ -3943,6 +3963,12 @@ nsGlobalWindow::GetMozInnerScreenY(float* aScreenY)
+ {
+ FORWARD_TO_OUTER(GetMozInnerScreenY, (aScreenY), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aScreenY = 0;
++ return NS_OK;
++ }
++
+ nsRect r = GetInnerScreenRect();
+ *aScreenY = nsPresContext::AppUnitsToFloatCSSPixels(r.y);
+ return NS_OK;
+@@ -4064,6 +4090,12 @@ nsGlobalWindow::GetScreenY(PRInt32* aScreenY)
+ {
+ FORWARD_TO_OUTER(GetScreenY, (aScreenY), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aScreenY = 0;
++ return NS_OK;
++ }
++
+ nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
+ GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
+ NS_ENSURE_TRUE(treeOwnerAsWin, NS_ERROR_FAILURE);
+@@ -4110,6 +4142,20 @@ nsGlobalWindow::SetScreenY(PRInt32 aScreenY)
+ return NS_OK;
+ }
+
++bool
++nsGlobalWindow::IsChrome()
++{
++ bool isChrome = false;
++
++ if (mDocShell) {
++ nsRefPtr<nsPresContext> presContext;
++ mDocShell->GetPresContext(getter_AddRefs(presContext));
++ isChrome = (presContext && presContext->IsChrome());
++ }
++
++ return isChrome;
++}
++
+ // NOTE: Arguments to this function should have values scaled to
+ // CSS pixels, not device pixels.
+ nsresult
+diff --git a/dom/base/nsGlobalWindow.h b/dom/base/nsGlobalWindow.h
+index 2ffe4a7..863329c 100644
+--- a/dom/base/nsGlobalWindow.h
++++ b/dom/base/nsGlobalWindow.h
+@@ -744,6 +744,8 @@ protected:
+ nsresult SetOuterSize(PRInt32 aLengthCSSPixels, bool aIsWidth);
+ nsRect GetInnerScreenRect();
+
++ bool IsChrome();
++
+ bool IsFrame()
+ {
+ return GetParentInternal() != nsnull;
+diff --git a/dom/base/nsScreen.cpp b/dom/base/nsScreen.cpp
+index 33a03dc..29a3598 100644
+--- a/dom/base/nsScreen.cpp
++++ b/dom/base/nsScreen.cpp
+@@ -82,6 +82,12 @@ nsScreen::SetDocShell(nsIDocShell* aDocShell)
+ NS_IMETHODIMP
+ nsScreen::GetTop(PRInt32* aTop)
+ {
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aTop = 0;
++ return NS_OK;
++ }
++
+ nsRect rect;
+ nsresult rv = GetRect(rect);
+
+@@ -94,6 +100,12 @@ nsScreen::GetTop(PRInt32* aTop)
+ NS_IMETHODIMP
+ nsScreen::GetLeft(PRInt32* aLeft)
+ {
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aLeft = 0;
++ return NS_OK;
++ }
++
+ nsRect rect;
+ nsresult rv = GetRect(rect);
+
+@@ -106,6 +118,14 @@ nsScreen::GetLeft(PRInt32* aLeft)
+ NS_IMETHODIMP
+ nsScreen::GetWidth(PRInt32* aWidth)
+ {
++ // For non-chrome callers, return content width to prevent fingerprinting.
++ if (!IsChrome()) {
++ nsCOMPtr<nsIDOMWindow> win;
++ nsresult rv = GetDOMWindow(getter_AddRefs(win));
++ NS_ENSURE_SUCCESS(rv, rv);
++ return win->GetInnerWidth(aWidth);
++ }
++
+ nsRect rect;
+ nsresult rv = GetRect(rect);
+
+@@ -117,6 +137,14 @@ nsScreen::GetWidth(PRInt32* aWidth)
+ NS_IMETHODIMP
+ nsScreen::GetHeight(PRInt32* aHeight)
+ {
++ // For non-chrome callers, return content height to prevent fingerprinting.
++ if (!IsChrome()) {
++ nsCOMPtr<nsIDOMWindow> win;
++ nsresult rv = GetDOMWindow(getter_AddRefs(win));
++ NS_ENSURE_SUCCESS(rv, rv);
++ return win->GetInnerHeight(aHeight);
++ }
++
+ nsRect rect;
+ nsresult rv = GetRect(rect);
+
+@@ -128,6 +156,12 @@ nsScreen::GetHeight(PRInt32* aHeight)
+ NS_IMETHODIMP
+ nsScreen::GetPixelDepth(PRInt32* aPixelDepth)
+ {
++ // For non-chrome callers, always return 24 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aPixelDepth = 24;
++ return NS_OK;
++ }
++
+ nsDeviceContext* context = GetDeviceContext();
+
+ if (!context) {
+@@ -153,6 +187,14 @@ nsScreen::GetColorDepth(PRInt32* aColorDepth)
+ NS_IMETHODIMP
+ nsScreen::GetAvailWidth(PRInt32* aAvailWidth)
+ {
++ // For non-chrome callers, return content width to prevent fingerprinting.
++ if (!IsChrome()) {
++ nsCOMPtr<nsIDOMWindow> win;
++ nsresult rv = GetDOMWindow(getter_AddRefs(win));
++ NS_ENSURE_SUCCESS(rv, rv);
++ return win->GetInnerWidth(aAvailWidth);
++ }
++
+ nsRect rect;
+ nsresult rv = GetAvailRect(rect);
+
+@@ -164,6 +206,14 @@ nsScreen::GetAvailWidth(PRInt32* aAvailWidth)
+ NS_IMETHODIMP
+ nsScreen::GetAvailHeight(PRInt32* aAvailHeight)
+ {
++ // For non-chrome callers, return content height to prevent fingerprinting.
++ if (!IsChrome()) {
++ nsCOMPtr<nsIDOMWindow> win;
++ nsresult rv = GetDOMWindow(getter_AddRefs(win));
++ NS_ENSURE_SUCCESS(rv, rv);
++ return win->GetInnerHeight(aAvailHeight);
++ }
++
+ nsRect rect;
+ nsresult rv = GetAvailRect(rect);
+
+@@ -175,6 +225,12 @@ nsScreen::GetAvailHeight(PRInt32* aAvailHeight)
+ NS_IMETHODIMP
+ nsScreen::GetAvailLeft(PRInt32* aAvailLeft)
+ {
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aAvailLeft = 0;
++ return NS_OK;
++ }
++
+ nsRect rect;
+ nsresult rv = GetAvailRect(rect);
+
+@@ -186,6 +242,12 @@ nsScreen::GetAvailLeft(PRInt32* aAvailLeft)
+ NS_IMETHODIMP
+ nsScreen::GetAvailTop(PRInt32* aAvailTop)
+ {
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aAvailTop = 0;
++ return NS_OK;
++ }
++
+ nsRect rect;
+ nsresult rv = GetAvailRect(rect);
+
+@@ -237,3 +299,33 @@ nsScreen::GetAvailRect(nsRect& aRect)
+
+ return NS_OK;
+ }
++
++bool
++nsScreen::IsChrome()
++{
++ bool isChrome = false;
++ if (mDocShell) {
++ nsRefPtr<nsPresContext> presContext;
++ mDocShell->GetPresContext(getter_AddRefs(presContext));
++ if (presContext)
++ isChrome = presContext->IsChrome();
++ }
++
++ return isChrome;
++}
++
++nsresult
++nsScreen::GetDOMWindow(nsIDOMWindow **aResult)
++{
++ NS_ENSURE_ARG_POINTER(aResult);
++ *aResult = NULL;
++
++ if (!mDocShell)
++ return NS_ERROR_FAILURE;
++
++ nsCOMPtr<nsIDOMWindow> win = do_GetInterface(mDocShell);
++ NS_ENSURE_STATE(win);
++ win.swap(*aResult);
++
++ return NS_OK;
++}
+diff --git a/dom/base/nsScreen.h b/dom/base/nsScreen.h
+index 52eab29..d4edaa3 100644
+--- a/dom/base/nsScreen.h
++++ b/dom/base/nsScreen.h
+@@ -44,6 +44,7 @@
+
+ class nsIDocShell;
+ class nsDeviceContext;
++class nsIDOMWindow;
+ struct nsRect;
+
+ // Script "screen" object
+@@ -62,6 +63,8 @@ protected:
+ nsDeviceContext* GetDeviceContext();
+ nsresult GetRect(nsRect& aRect);
+ nsresult GetAvailRect(nsRect& aRect);
++ bool IsChrome();
++ nsresult GetDOMWindow(nsIDOMWindow **aResult);
+
+ nsIDocShell* mDocShell; // Weak Reference
+ };
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0024-Do-not-expose-system-colors-to-CSS-or-canvas.patch b/src/current-patches/firefox/0024-Do-not-expose-system-colors-to-CSS-or-canvas.patch
new file mode 100644
index 0000000..5b808ad
--- /dev/null
+++ b/src/current-patches/firefox/0024-Do-not-expose-system-colors-to-CSS-or-canvas.patch
@@ -0,0 +1,537 @@
+From a3a36dbaebcacdcf6b4343a587ea673e6245102d Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Thu, 4 Oct 2012 14:53:13 -0400
+Subject: [PATCH 24/24] Do not expose system colors to CSS or canvas.
+
+---
+ content/canvas/src/nsCanvasRenderingContext2D.cpp | 36 +++-
+ .../canvas/src/nsCanvasRenderingContext2DAzure.cpp | 51 ++++--
+ layout/style/nsCSSParser.cpp | 19 ++-
+ layout/style/nsRuleNode.cpp | 4 +-
+ widget/public/LookAndFeel.h | 9 +
+ widget/src/xpwidgets/nsXPLookAndFeel.cpp | 173 +++++++++++++++++++-
+ widget/src/xpwidgets/nsXPLookAndFeel.h | 5 +-
+ 7 files changed, 269 insertions(+), 28 deletions(-)
+
+diff --git a/content/canvas/src/nsCanvasRenderingContext2D.cpp b/content/canvas/src/nsCanvasRenderingContext2D.cpp
+index 0cf97ce..6c47821 100644
+--- a/content/canvas/src/nsCanvasRenderingContext2D.cpp
++++ b/content/canvas/src/nsCanvasRenderingContext2D.cpp
+@@ -186,8 +186,9 @@ class nsCanvasGradient : public nsIDOMCanvasGradient
+ public:
+ NS_DECLARE_STATIC_IID_ACCESSOR(NS_CANVASGRADIENT_PRIVATE_IID)
+
+- nsCanvasGradient(gfxPattern* pat)
+- : mPattern(pat)
++ nsCanvasGradient(mozilla::css::Loader* aLoader, gfxPattern* pat)
++ : mCSSLoader(aLoader)
++ , mPattern(pat)
+ {
+ }
+
+@@ -203,7 +204,7 @@ public:
+ return NS_ERROR_DOM_INDEX_SIZE_ERR;
+
+ nscolor color;
+- nsCSSParser parser;
++ nsCSSParser parser(mCSSLoader);
+ nsresult rv = parser.ParseColorString(nsString(colorstr),
+ nsnull, 0, &color);
+ if (NS_FAILED(rv))
+@@ -217,6 +218,7 @@ public:
+ NS_DECL_ISUPPORTS
+
+ protected:
++ mozilla::css::Loader* mCSSLoader; // not ref counted, it owns us
+ nsRefPtr<gfxPattern> mPattern;
+ };
+
+@@ -875,7 +877,9 @@ nsCanvasRenderingContext2D::SetStyleFromStringOrInterface(const nsAString& aStr,
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error
+- // reports to include the outer window ID.
++ // reports to include the outer window ID. The parser also uses it to
++ // detect whether the caller is chrome in order to avoid exposing
++ // system colors.
+ nsCSSParser parser(document ? document->CSSLoader() : nsnull);
+ rv = parser.ParseColorString(aStr, nsnull, 0, &color);
+ if (NS_FAILED(rv)) {
+@@ -1778,7 +1782,14 @@ nsCanvasRenderingContext2D::CreateLinearGradient(float x0, float y0, float x1, f
+ if (!gradpat)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+- nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(gradpat);
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsIDocument* doc = mCanvasElement ? HTMLCanvasElement()->OwnerDoc()
++ : nsnull;
++ mozilla::css::Loader* cssLoader = doc ? doc->CSSLoader() : nsnull;
++ nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(cssLoader,
++ gradpat);
+ if (!grad)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+@@ -1800,7 +1811,14 @@ nsCanvasRenderingContext2D::CreateRadialGradient(float x0, float y0, float r0, f
+ if (!gradpat)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+- nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(gradpat);
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsIDocument* doc = mCanvasElement ? HTMLCanvasElement()->OwnerDoc()
++ : nsnull;
++ mozilla::css::Loader* cssLoader = doc ? doc->CSSLoader() : nsnull;
++ nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(cssLoader,
++ gradpat);
+ if (!grad)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+@@ -1922,7 +1940,8 @@ nsCanvasRenderingContext2D::SetShadowColor(const nsAString& colorstr)
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error reports
+- // to include the outer window ID.
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(document ? document->CSSLoader() : nsnull);
+ nscolor color;
+ nsresult rv = parser.ParseColorString(colorstr, nsnull, 0, &color);
+@@ -3694,7 +3713,8 @@ nsCanvasRenderingContext2D::DrawWindow(nsIDOMWindow* aWindow, float aX, float aY
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error reports
+- // to include the outer window ID.
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(elementDoc ? elementDoc->CSSLoader() : nsnull);
+ nsresult rv = parser.ParseColorString(PromiseFlatString(aBGColor),
+ nsnull, 0, &bgColor);
+diff --git a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+index e8dfb1e..cb5a5f5 100644
+--- a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
++++ b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+@@ -201,7 +201,10 @@ public:
+ }
+
+ nscolor color;
+- nsCSSParser parser;
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsCSSParser parser(mCSSLoader);;
+ nsresult rv = parser.ParseColorString(nsString(colorstr),
+ nsnull, 0, &color);
+ if (NS_FAILED(rv)) {
+@@ -221,20 +224,24 @@ public:
+ }
+
+ protected:
+- nsCanvasGradientAzure(Type aType) : mType(aType)
++ nsCanvasGradientAzure(mozilla::css::Loader* aLoader, Type aType)
++ : mCSSLoader(aLoader)
++ , mType(aType)
+ {}
+
+ nsTArray<GradientStop> mRawStops;
+ RefPtr<GradientStops> mStops;
++ mozilla::css::Loader* mCSSLoader; // not ref counted, it owns us
+ Type mType;
+ };
+
+ class nsCanvasRadialGradientAzure : public nsCanvasGradientAzure
+ {
+ public:
+- nsCanvasRadialGradientAzure(const Point &aBeginOrigin, Float aBeginRadius,
++ nsCanvasRadialGradientAzure(mozilla::css::Loader* aLoader,
++ const Point &aBeginOrigin, Float aBeginRadius,
+ const Point &aEndOrigin, Float aEndRadius)
+- : nsCanvasGradientAzure(RADIAL)
++ : nsCanvasGradientAzure(aLoader, RADIAL)
+ , mCenter1(aBeginOrigin)
+ , mCenter2(aEndOrigin)
+ , mRadius1(aBeginRadius)
+@@ -251,8 +258,9 @@ public:
+ class nsCanvasLinearGradientAzure : public nsCanvasGradientAzure
+ {
+ public:
+- nsCanvasLinearGradientAzure(const Point &aBegin, const Point &aEnd)
+- : nsCanvasGradientAzure(LINEAR)
++ nsCanvasLinearGradientAzure(mozilla::css::Loader* aLoader,
++ const Point &aBegin, const Point &aEnd)
++ : nsCanvasGradientAzure(aLoader, LINEAR)
+ , mBegin(aBegin)
+ , mEnd(aEnd)
+ {
+@@ -1066,8 +1074,9 @@ nsCanvasRenderingContext2DAzure::SetStyleFromStringOrInterface(const nsAString&
+ nsIDocument* document = mCanvasElement ?
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+- // Pass the CSS Loader object to the parser, to allow parser error
+- // reports to include the outer window ID.
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(document ? document->CSSLoader() : nsnull);
+ rv = parser.ParseColorString(aStr, nsnull, 0, &color);
+ if (NS_FAILED(rv)) {
+@@ -1855,8 +1864,14 @@ nsCanvasRenderingContext2DAzure::CreateLinearGradient(float x0, float y0, float
+ return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
+ }
+
+- nsRefPtr<nsIDOMCanvasGradient> grad =
+- new nsCanvasLinearGradientAzure(Point(x0, y0), Point(x1, y1));
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsIDocument* doc = mCanvasElement ? HTMLCanvasElement()->OwnerDoc()
++ : nsnull;
++ mozilla::css::Loader* cssLoader = doc ? doc->CSSLoader() : nsnull;
++ nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasLinearGradientAzure(
++ cssLoader, Point(x0, y0), Point(x1, y1));
+
+ *_retval = grad.forget().get();
+ return NS_OK;
+@@ -1875,8 +1890,14 @@ nsCanvasRenderingContext2DAzure::CreateRadialGradient(float x0, float y0, float
+ return NS_ERROR_DOM_INDEX_SIZE_ERR;
+ }
+
+- nsRefPtr<nsIDOMCanvasGradient> grad =
+- new nsCanvasRadialGradientAzure(Point(x0, y0), r0, Point(x1, y1), r1);
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsIDocument* doc = mCanvasElement ? HTMLCanvasElement()->OwnerDoc()
++ : nsnull;
++ mozilla::css::Loader* cssLoader = doc ? doc->CSSLoader() : nsnull;
++ nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasRadialGradientAzure(
++ cssLoader, Point(x0, y0), r0, Point(x1, y1), r1);
+
+ *_retval = grad.forget().get();
+ return NS_OK;
+@@ -2024,7 +2045,8 @@ nsCanvasRenderingContext2DAzure::SetShadowColor(const nsAString& colorstr)
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error reports
+- // to include the outer window ID.
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(document ? document->CSSLoader() : nsnull);
+ nscolor color;
+ nsresult rv = parser.ParseColorString(colorstr, nsnull, 0, &color);
+@@ -3847,7 +3869,8 @@ nsCanvasRenderingContext2DAzure::DrawWindow(nsIDOMWindow* aWindow, float aX, flo
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error reports
+- // to include the outer window ID.
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(elementDoc ? elementDoc->CSSLoader() : nsnull);
+ nsresult rv = parser.ParseColorString(PromiseFlatString(aBGColor),
+ nsnull, 0, &bgColor);
+diff --git a/layout/style/nsCSSParser.cpp b/layout/style/nsCSSParser.cpp
+index ae1a474..30e179c 100644
+--- a/layout/style/nsCSSParser.cpp
++++ b/layout/style/nsCSSParser.cpp
+@@ -1216,8 +1216,25 @@ CSSParserImpl::ParseColorString(const nsSubstring& aBuffer,
+ // Should remove this limitation at some point.
+ return NS_ERROR_FAILURE;
+ }
++
++ // We do not want to expose system/native colors to content. All callers
++ // who are working with content should ensure that they set the CSS
++ // loader (mChildLoader) so we can check here if the content is chrome.
++ bool isChrome = true;
++ if (mChildLoader) {
++ nsIDocument *doc = mChildLoader->GetDocument();
++ if (doc) {
++ nsIPresShell *presShell = doc->GetShell();
++ if (presShell) {
++ nsPresContext* presCtxt = presShell->GetPresContext();
++ if (presCtxt)
++ isChrome = presCtxt->IsChrome();
++ }
++ }
++ }
+ nscolor rgba;
+- nsresult rv = LookAndFeel::GetColor(LookAndFeel::ColorID(val), &rgba);
++ nsresult rv = LookAndFeel::GetColor(LookAndFeel::ColorID(val), !isChrome,
++ &rgba);
+ if (NS_FAILED(rv)) {
+ return rv;
+ }
+diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp
+index 827585a..d19524e 100644
+--- a/layout/style/nsRuleNode.cpp
++++ b/layout/style/nsRuleNode.cpp
+@@ -768,7 +768,9 @@ static bool SetColor(const nsCSSValue& aValue, const nscolor aParentColor,
+ PRInt32 intValue = aValue.GetIntValue();
+ if (0 <= intValue) {
+ LookAndFeel::ColorID colorID = (LookAndFeel::ColorID) intValue;
+- if (NS_SUCCEEDED(LookAndFeel::GetColor(colorID, &aResult))) {
++ bool useStandinsForNativeColors = !aPresContext->IsChrome();
++ if (NS_SUCCEEDED(LookAndFeel::GetColor(colorID,
++ useStandinsForNativeColors, &aResult))) {
+ result = true;
+ }
+ }
+diff --git a/widget/public/LookAndFeel.h b/widget/public/LookAndFeel.h
+index aae3b28..bb7be3c 100644
+--- a/widget/public/LookAndFeel.h
++++ b/widget/public/LookAndFeel.h
+@@ -445,6 +445,15 @@ public:
+ static nsresult GetColor(ColorID aID, nscolor* aResult);
+
+ /**
++ * This variant of GetColor() take an extra Boolean parameter that allows
++ * the caller to ask that hard-coded color values be substituted for
++ * native colors (used when it is desireable to hide system colors to
++ * avoid system fingerprinting).
++ */
++ static nsresult GetColor(ColorID aID, bool aUseStandinsForNativeColors,
++ nscolor* aResult);
++
++ /**
+ * GetInt() and GetFloat() return a int or float value for aID. The result
+ * might be distance, time, some flags or a int value which has particular
+ * meaning. See each document at definition of each ID for the detail.
+diff --git a/widget/src/xpwidgets/nsXPLookAndFeel.cpp b/widget/src/xpwidgets/nsXPLookAndFeel.cpp
+index 8053432..96937ac 100644
+--- a/widget/src/xpwidgets/nsXPLookAndFeel.cpp
++++ b/widget/src/xpwidgets/nsXPLookAndFeel.cpp
+@@ -502,6 +502,155 @@ nsXPLookAndFeel::IsSpecialColor(ColorID aID, nscolor &aColor)
+ return false;
+ }
+
++bool
++nsXPLookAndFeel::ColorIsNotCSSAccessible(ColorID aID)
++{
++ bool result = false;
++
++ switch (aID) {
++ case eColorID_WindowBackground:
++ case eColorID_WindowForeground:
++ case eColorID_WidgetBackground:
++ case eColorID_WidgetForeground:
++ case eColorID_WidgetSelectBackground:
++ case eColorID_WidgetSelectForeground:
++ case eColorID_Widget3DHighlight:
++ case eColorID_Widget3DShadow:
++ case eColorID_TextBackground:
++ case eColorID_TextForeground:
++ case eColorID_TextSelectBackground:
++ case eColorID_TextSelectForeground:
++ case eColorID_TextSelectBackgroundDisabled:
++ case eColorID_TextSelectBackgroundAttention:
++ case eColorID_TextHighlightBackground:
++ case eColorID_TextHighlightForeground:
++ case eColorID_IMERawInputBackground:
++ case eColorID_IMERawInputForeground:
++ case eColorID_IMERawInputUnderline:
++ case eColorID_IMESelectedRawTextBackground:
++ case eColorID_IMESelectedRawTextForeground:
++ case eColorID_IMESelectedRawTextUnderline:
++ case eColorID_IMEConvertedTextBackground:
++ case eColorID_IMEConvertedTextForeground:
++ case eColorID_IMEConvertedTextUnderline:
++ case eColorID_IMESelectedConvertedTextBackground:
++ case eColorID_IMESelectedConvertedTextForeground:
++ case eColorID_IMESelectedConvertedTextUnderline:
++ case eColorID_SpellCheckerUnderline:
++ result = true;
++ break;
++ default:
++ break;
++ }
++
++ return result;
++}
++
++nscolor
++nsXPLookAndFeel::GetStandinForNativeColor(ColorID aID)
++{
++ nscolor result = NS_RGB(0xFF, 0xFF, 0xFF);
++
++ // The stand-in colors are taken from the Windows 7 Aero theme
++ // except Mac-specific colors which are taken from Mac OS 10.7.
++ switch (aID) {
++ // CSS 2 colors:
++ case eColorID_activeborder: result = NS_RGB(0xB4, 0xB4, 0xB4); break;
++ case eColorID_activecaption: result = NS_RGB(0x99, 0xB4, 0xD1); break;
++ case eColorID_appworkspace: result = NS_RGB(0xAB, 0xAB, 0xAB); break;
++ case eColorID_background: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_buttonface: result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID_buttonhighlight: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID_buttonshadow: result = NS_RGB(0xA0, 0xA0, 0xA0); break;
++ case eColorID_buttontext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_captiontext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_graytext: result = NS_RGB(0x6D, 0x6D, 0x6D); break;
++ case eColorID_highlight: result = NS_RGB(0x33, 0x99, 0xFF); break;
++ case eColorID_highlighttext: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID_inactiveborder: result = NS_RGB(0xF4, 0xF7, 0xFC); break;
++ case eColorID_inactivecaption: result = NS_RGB(0xBF, 0xCD, 0xDB); break;
++ case eColorID_inactivecaptiontext:
++ result = NS_RGB(0x43, 0x4E, 0x54); break;
++ case eColorID_infobackground: result = NS_RGB(0xFF, 0xFF, 0xE1); break;
++ case eColorID_infotext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_menu: result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID_menutext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_scrollbar: result = NS_RGB(0xC8, 0xC8, 0xC8); break;
++ case eColorID_threeddarkshadow: result = NS_RGB(0x69, 0x69, 0x69); break;
++ case eColorID_threedface: result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID_threedhighlight: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID_threedlightshadow: result = NS_RGB(0xE3, 0xE3, 0xE3); break;
++ case eColorID_threedshadow: result = NS_RGB(0xA0, 0xA0, 0xA0); break;
++ case eColorID_window: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID_windowframe: result = NS_RGB(0x64, 0x64, 0x64); break;
++ case eColorID_windowtext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_buttondefault:
++ result = NS_RGB(0x69, 0x69, 0x69); break;
++ case eColorID__moz_field: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_fieldtext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_dialog: result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID__moz_dialogtext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_dragtargetzone:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_cellhighlight:
++ result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID__moz_cellhighlighttext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_html_cellhighlight:
++ result = NS_RGB(0x33, 0x99, 0xFF); break;
++ case eColorID__moz_html_cellhighlighttext:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_buttonhoverface:
++ result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID__moz_buttonhovertext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_menuhover:
++ result = NS_RGB(0x33, 0x99, 0xFF); break;
++ case eColorID__moz_menuhovertext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_menubartext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_menubarhovertext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_oddtreerow:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_mac_chrome_active:
++ result = NS_RGB(0xB2, 0xB2, 0xB2); break;
++ case eColorID__moz_mac_chrome_inactive:
++ result = NS_RGB(0xE1, 0xE1, 0xE1); break;
++ case eColorID__moz_mac_focusring:
++ result = NS_RGB(0x60, 0x9D, 0xD7); break;
++ case eColorID__moz_mac_menuselect:
++ result = NS_RGB(0x38, 0x75, 0xD7); break;
++ case eColorID__moz_mac_menushadow:
++ result = NS_RGB(0xA3, 0xA3, 0xA3); break;
++ case eColorID__moz_mac_menutextdisable:
++ result = NS_RGB(0x88, 0x88, 0x88); break;
++ case eColorID__moz_mac_menutextselect:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_mac_disabledtoolbartext:
++ result = NS_RGB(0x3F, 0x3F, 0x3F); break;
++ case eColorID__moz_mac_alternateprimaryhighlight:
++ result = NS_RGB(0x38, 0x75, 0xD7); break;
++ case eColorID__moz_mac_secondaryhighlight:
++ result = NS_RGB(0xD4, 0xD4, 0xD4); break;
++ case eColorID__moz_win_mediatext:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_win_communicationstext:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_nativehyperlinktext:
++ result = NS_RGB(0x00, 0x66, 0xCC); break;
++ case eColorID__moz_comboboxtext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_combobox:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ default:
++ break;
++ }
++
++ return result;
++}
++
+ //
+ // All these routines will return NS_OK if they have a value,
+ // in which case the nsLookAndFeel should use that value;
+@@ -509,7 +658,8 @@ nsXPLookAndFeel::IsSpecialColor(ColorID aID, nscolor &aColor)
+ // platform-specific nsLookAndFeel should use its own values instead.
+ //
+ nsresult
+-nsXPLookAndFeel::GetColorImpl(ColorID aID, nscolor &aResult)
++nsXPLookAndFeel::GetColorImpl(ColorID aID, bool aUseStandinsForNativeColors,
++ nscolor &aResult)
+ {
+ if (!sInitialized)
+ Init();
+@@ -595,7 +745,10 @@ nsXPLookAndFeel::GetColorImpl(ColorID aID, nscolor &aResult)
+ }
+ #endif // DEBUG_SYSTEM_COLOR_USE
+
+- if (IS_COLOR_CACHED(aID)) {
++ if (aUseStandinsForNativeColors && ColorIsNotCSSAccessible(aID))
++ aUseStandinsForNativeColors = false;
++
++ if (!aUseStandinsForNativeColors && IS_COLOR_CACHED(aID)) {
+ aResult = sCachedColors[aID];
+ return NS_OK;
+ }
+@@ -629,6 +782,12 @@ nsXPLookAndFeel::GetColorImpl(ColorID aID, nscolor &aResult)
+ return NS_OK;
+ }
+
++ if (sUseNativeColors && aUseStandinsForNativeColors)
++ {
++ aResult = GetStandinForNativeColor(aID);
++ return NS_OK;
++ }
++
+ if (sUseNativeColors && NS_SUCCEEDED(NativeGetColor(aID, aResult))) {
+ if ((gfxPlatform::GetCMSMode() == eCMSMode_All) &&
+ !IsSpecialColor(aID, aResult)) {
+@@ -719,7 +878,15 @@ namespace mozilla {
+ nsresult
+ LookAndFeel::GetColor(ColorID aID, nscolor* aResult)
+ {
+- return nsLookAndFeel::GetInstance()->GetColorImpl(aID, *aResult);
++ return nsLookAndFeel::GetInstance()->GetColorImpl(aID, false, *aResult);
++}
++
++nsresult
++LookAndFeel::GetColor(ColorID aID, bool aUseStandinsForNativeColors,
++ nscolor* aResult)
++{
++ return nsLookAndFeel::GetInstance()->GetColorImpl(aID,
++ aUseStandinsForNativeColors, *aResult);
+ }
+
+ // static
+diff --git a/widget/src/xpwidgets/nsXPLookAndFeel.h b/widget/src/xpwidgets/nsXPLookAndFeel.h
+index ce06575..c0ecc32 100644
+--- a/widget/src/xpwidgets/nsXPLookAndFeel.h
++++ b/widget/src/xpwidgets/nsXPLookAndFeel.h
+@@ -84,7 +84,8 @@ public:
+ // otherwise we'll return NS_ERROR_NOT_AVAILABLE, in which case, the
+ // platform-specific nsLookAndFeel should use its own values instead.
+ //
+- nsresult GetColorImpl(ColorID aID, nscolor &aResult);
++ nsresult GetColorImpl(ColorID aID, bool aUseStandinsForNativeColors,
++ nscolor &aResult);
+ virtual nsresult GetIntImpl(IntID aID, PRInt32 &aResult);
+ virtual nsresult GetFloatImpl(FloatID aID, float &aResult);
+
+@@ -111,6 +112,8 @@ protected:
+ void InitColorFromPref(PRInt32 aIndex);
+ virtual nsresult NativeGetColor(ColorID aID, nscolor &aResult) = 0;
+ bool IsSpecialColor(ColorID aID, nscolor &aColor);
++ bool ColorIsNotCSSAccessible(ColorID aID);
++ nscolor GetStandinForNativeColor(ColorID aID);
+
+ static int OnPrefChanged(const char* aPref, void* aClosure);
+
+--
+1.7.5.4
+
1
0

[torbrowser/maint-2.2] Include anti-fingerprinting patches from Pearl Crescent, LLC.
by mikeperry@torproject.org 09 Oct '12
by mikeperry@torproject.org 09 Oct '12
09 Oct '12
commit 1720f1520443c0c1e3be03abbb467662d4d54e33
Author: Mike Perry <mikeperry-git(a)fscked.org>
Date: Tue Oct 9 15:04:56 2012 -0700
Include anti-fingerprinting patches from Pearl Crescent, LLC.
---
...nents.interfaces-lookupMethod-from-conten.patch | 10 +-
...0002-Make-Permissions-Manager-memory-only.patch | 4 +-
...-Make-Intermediate-Cert-Store-memory-only.patch | 4 +-
.../firefox/0004-Add-a-string-based-cacheKey.patch | 4 +-
.../0005-Block-all-plugins-except-flash.patch | 4 +-
...ontent-pref-service-memory-only-clearable.patch | 4 +-
...owser-exit-when-not-launched-from-Vidalia.patch | 6 +-
.../0008-Disable-SSL-Session-ID-tracking.patch | 6 +-
...observer-event-to-close-persistent-connec.patch | 4 +-
...ice-and-system-specific-CSS-Media-Queries.patch | 68 ++-
...11-Limit-the-number-of-fonts-per-document.patch | 4 +-
.../0012-Rebrand-Firefox-to-TorBrowser.patch | 4 +-
.../0013-Make-Download-manager-memory-only.patch | 4 +-
.../0014-Add-DDG-and-StartPage-to-Omnibox.patch | 4 +-
...-nsICacheService.EvictEntries-synchronous.patch | 8 +-
.../firefox/0016-Prevent-WebSocket-DNS-leak.patch | 4 +-
...ize-HTTP-request-order-and-pipeline-depth.patch | 4 +-
...th-headers-before-the-modify-request-obse.patch | 4 +-
...Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch | 4 +-
...d-mozIThirdPartyUtil.getFirstPartyURI-API.patch | 4 +-
.../0021-Add-canvas-image-extraction-prompt.patch | 551 ++++++++++++++++++++
...nt-window-coordinates-for-mouse-event-scr.patch | 43 ++
...se-physical-screen-info.-via-window-and-w.patch | 312 +++++++++++
...not-expose-system-colors-to-CSS-or-canvas.patch | 537 +++++++++++++++++++
24 files changed, 1541 insertions(+), 60 deletions(-)
diff --git a/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch b/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch
index c99e10a..1a82800 100644
--- a/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch
+++ b/src/current-patches/firefox/0001-Block-Components.interfaces-lookupMethod-from-conten.patch
@@ -1,7 +1,7 @@
-From 18fea351a9f218893514ccbca82c492ce81d038d Mon Sep 17 00:00:00 2001
+From 1c2ccbea73720db5405602e4033c69b706068a8b Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:40:40 -0800
-Subject: [PATCH 01/19] Block Components.interfaces,lookupMethod from content
+Subject: [PATCH 01/24] Block Components.interfaces,lookupMethod from content
This patch removes the ability of content script to access
Components.interfaces.* as well as call or access Components.lookupMethod.
@@ -20,10 +20,10 @@ https://trac.torproject.org/projects/tor/ticket/2874
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/js/xpconnect/src/XPCComponents.cpp b/js/xpconnect/src/XPCComponents.cpp
-index 3bcbf91..d5c020a 100644
+index 38bfe08..7224b9b 100644
--- a/js/xpconnect/src/XPCComponents.cpp
+++ b/js/xpconnect/src/XPCComponents.cpp
-@@ -4456,7 +4456,9 @@ nsXPCComponents::CanCreateWrapper(const nsIID * iid, char **_retval)
+@@ -4502,7 +4502,9 @@ nsXPCComponents::CanCreateWrapper(const nsIID * iid, char **_retval)
NS_IMETHODIMP
nsXPCComponents::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, char **_retval)
{
@@ -34,7 +34,7 @@ index 3bcbf91..d5c020a 100644
*_retval = xpc_CheckAccessList(methodName, allowed);
return NS_OK;
}
-@@ -4465,7 +4467,9 @@ nsXPCComponents::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, c
+@@ -4511,7 +4513,9 @@ nsXPCComponents::CanCallMethod(const nsIID * iid, const PRUnichar *methodName, c
NS_IMETHODIMP
nsXPCComponents::CanGetProperty(const nsIID * iid, const PRUnichar *propertyName, char **_retval)
{
diff --git a/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch b/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
index 5d5a741..fa23d93 100644
--- a/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
+++ b/src/current-patches/firefox/0002-Make-Permissions-Manager-memory-only.patch
@@ -1,7 +1,7 @@
-From 336217485d707ff63ef42d2a0bc3705c2c7f7a3c Mon Sep 17 00:00:00 2001
+From cd983b1b57b1f4ae10c8deec5aa12ec957fdc855 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:45:16 -0800
-Subject: [PATCH 02/19] Make Permissions Manager memory-only
+Subject: [PATCH 02/24] Make Permissions Manager memory-only
This patch exposes a pref 'permissions.memory_only' that properly isolates the
permissions manager to memory, which is responsible for all user specified
diff --git a/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch b/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
index 912d82f..b10fb85 100644
--- a/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
+++ b/src/current-patches/firefox/0003-Make-Intermediate-Cert-Store-memory-only.patch
@@ -1,7 +1,7 @@
-From e6d127b805461470bff0dad12f5ad89fc3cd3df3 Mon Sep 17 00:00:00 2001
+From f100a7979e1a44863a8a67a09743f0e17b5dd14e Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Fri, 19 Aug 2011 17:58:23 -0700
-Subject: [PATCH 03/19] Make Intermediate Cert Store memory-only.
+Subject: [PATCH 03/24] Make Intermediate Cert Store memory-only.
This patch makes the intermediate SSL cert store exist in memory only.
diff --git a/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch b/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
index af88b70..f3afa97 100644
--- a/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
+++ b/src/current-patches/firefox/0004-Add-a-string-based-cacheKey.patch
@@ -1,7 +1,7 @@
-From 84668dfe7bdcd35d96ffcaf273ade5a5d8d470f8 Mon Sep 17 00:00:00 2001
+From d674d09bc233d200b1ebc47f8e6ac4ebd6e4225a Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Fri, 2 Sep 2011 20:47:02 -0700
-Subject: [PATCH 04/19] Add a string-based cacheKey.
+Subject: [PATCH 04/24] Add a string-based cacheKey.
Used for isolating cache according to same-origin policy.
---
diff --git a/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch b/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
index e6d5adc..e7a831e 100644
--- a/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
+++ b/src/current-patches/firefox/0005-Block-all-plugins-except-flash.patch
@@ -1,7 +1,7 @@
-From 3457f78e346df5962449cbd5aa86624e19fd5f64 Mon Sep 17 00:00:00 2001
+From 88a390822d232ba037de1f15091977ca7e1064bf Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:50:15 -0800
-Subject: [PATCH 05/19] Block all plugins except flash.
+Subject: [PATCH 05/24] Block all plugins except flash.
We cannot use the @mozilla.org/extensions/blocklist;1 service, because we
actually want to stop plugins from ever entering the browser's process space
diff --git a/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch b/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
index 1ea7e14..17af793 100644
--- a/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
+++ b/src/current-patches/firefox/0006-Make-content-pref-service-memory-only-clearable.patch
@@ -1,7 +1,7 @@
-From 66ff6c30d5b1de5d549181acbba686f792fe4cb4 Mon Sep 17 00:00:00 2001
+From 71ba98d81a6ecada62af4d2ee03be050d371d996 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Thu, 8 Sep 2011 08:40:17 -0700
-Subject: [PATCH 06/19] Make content pref service memory-only + clearable
+Subject: [PATCH 06/24] Make content pref service memory-only + clearable
This prevents random urls from being inserted into content-prefs.sqllite in
the profile directory as content prefs change (includes site-zoom and perhaps
diff --git a/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch b/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
index 5d384a7..cc496d3 100644
--- a/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
+++ b/src/current-patches/firefox/0007-Make-Tor-Browser-exit-when-not-launched-from-Vidalia.patch
@@ -1,7 +1,7 @@
-From d6956a597662f3d753622377183cb317ef6a3ad4 Mon Sep 17 00:00:00 2001
+From 12579def59d67416b841f6b0a6eadfd94bba72e9 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Sun, 9 Oct 2011 22:50:07 -0700
-Subject: [PATCH 07/19] Make Tor Browser exit when not launched from Vidalia
+Subject: [PATCH 07/24] Make Tor Browser exit when not launched from Vidalia
Turns out the Windows 7 UI encourages users to "dock" their Tor Browser app
for easy relaunch. If they manage to do this, we should fail closed rather
@@ -16,7 +16,7 @@ actually be common.
1 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
-index b06a17b..fc1d305 100644
+index f16a0c5..20e3666 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -1217,6 +1217,21 @@ function BrowserStartup() {
diff --git a/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch b/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
index 82438c2..39e1483 100644
--- a/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
+++ b/src/current-patches/firefox/0008-Disable-SSL-Session-ID-tracking.patch
@@ -1,7 +1,7 @@
-From 70161b38e1855ce4b7a61ac1e9572fb07dfbedda Mon Sep 17 00:00:00 2001
+From 7586e413761858ce705d25d4a1673e608a162bed Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Wed, 7 Dec 2011 19:36:38 -0800
-Subject: [PATCH 08/19] Disable SSL Session ID tracking.
+Subject: [PATCH 08/24] Disable SSL Session ID tracking.
We can't easily bind SSL Session ID tracking to url bar domain,
so we have to disable them to satisfy
@@ -11,7 +11,7 @@ https://www.torproject.org/projects/torbrowser/design/#identifier-linkabili….
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/security/nss/lib/ssl/sslsock.c b/security/nss/lib/ssl/sslsock.c
-index 28e6210..fa48ecd 100644
+index 0c4d0c7..8d23fc0 100644
--- a/security/nss/lib/ssl/sslsock.c
+++ b/security/nss/lib/ssl/sslsock.c
@@ -173,7 +173,7 @@ static sslOptions ssl_defaults = {
diff --git a/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch b/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
index 39a71a4..e693c71 100644
--- a/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
+++ b/src/current-patches/firefox/0009-Provide-an-observer-event-to-close-persistent-connec.patch
@@ -1,7 +1,7 @@
-From d5ef29d9219a7ff9a78f9523845a2e2966c2a266 Mon Sep 17 00:00:00 2001
+From 9c6f997dd9a44336af9a1db17f5b680cc80a0e6c Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 15:53:28 -0800
-Subject: [PATCH 09/19] Provide an observer event to close persistent
+Subject: [PATCH 09/24] Provide an observer event to close persistent
connections
We need to prevent linkability across "New Identity", which includes closing
diff --git a/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch b/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch
index d4f1a1a..14e584c 100644
--- a/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch
+++ b/src/current-patches/firefox/0010-Limit-device-and-system-specific-CSS-Media-Queries.patch
@@ -1,19 +1,14 @@
-From d3261423b0bd07fb3c0ca7b9448c9abb97053be2 Mon Sep 17 00:00:00 2001
-From: Shondoit Walker <shondoit(a)gmail.com>
-Date: Mon, 4 Jun 2012 19:15:31 +0200
-Subject: [PATCH 10/19] Limit device- and system-specific CSS Media Queries
+From 8f97f2f36adb9e4416f3d19af10880c800c846c2 Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Thu, 4 Oct 2012 14:28:48 -0400
+Subject: [PATCH 10/24] Limit device and system specific CSS Media Queries.
-This is done to address
-https://www.torproject.org/projects/torbrowser/design/#fingerprinting-linkability
-
-This also fixes bug #4795 by making queries still available for chrome windows,
-whilst returning nothing or non-device-specific values for web pages or extensions.
---
- layout/style/nsMediaFeatures.cpp | 42 ++++++++++++++++++++++++-------------
- 1 files changed, 27 insertions(+), 15 deletions(-)
+ layout/style/nsMediaFeatures.cpp | 71 ++++++++++++++++++++++++-------------
+ 1 files changed, 46 insertions(+), 25 deletions(-)
diff --git a/layout/style/nsMediaFeatures.cpp b/layout/style/nsMediaFeatures.cpp
-index 6eca06e..25735e8 100644
+index 6eca06e..5b1df7e 100644
--- a/layout/style/nsMediaFeatures.cpp
+++ b/layout/style/nsMediaFeatures.cpp
@@ -130,6 +130,9 @@ GetDeviceContextFor(nsPresContext* aPresContext)
@@ -63,7 +58,50 @@ index 6eca06e..25735e8 100644
}
static nsresult
-@@ -311,8 +315,12 @@ static nsresult
+@@ -236,13 +240,17 @@ static nsresult
+ GetColor(nsPresContext* aPresContext, const nsMediaFeature*,
+ nsCSSValue& aResult)
+ {
+- // FIXME: This implementation is bogus. nsDeviceContext
+- // doesn't provide reliable information (should be fixed in bug
+- // 424386).
+- // FIXME: On a monochrome device, return 0!
+- nsDeviceContext *dx = GetDeviceContextFor(aPresContext);
+- PRUint32 depth;
+- dx->GetDepth(depth);
++ PRUint32 depth = 24; // Always return 24 to non-chrome callers.
++
++ if (aPresContext->IsChrome()) {
++ // FIXME: This implementation is bogus. nsDeviceContext
++ // doesn't provide reliable information (should be fixed in bug
++ // 424386).
++ // FIXME: On a monochrome device, return 0!
++ nsDeviceContext *dx = GetDeviceContextFor(aPresContext);
++ dx->GetDepth(depth);
++ }
++
+ // The spec says to use bits *per color component*, so divide by 3,
+ // and round down, since the spec says to use the smallest when the
+ // color components differ.
+@@ -280,9 +288,14 @@ static nsresult
+ GetResolution(nsPresContext* aPresContext, const nsMediaFeature*,
+ nsCSSValue& aResult)
+ {
+- // Resolution values are in device pixels, not CSS pixels.
+- nsDeviceContext *dx = GetDeviceContextFor(aPresContext);
+- float dpi = float(dx->AppUnitsPerPhysicalInch()) / float(dx->AppUnitsPerDevPixel());
++ float dpi = 96; // Always return 96 to non-chrome callers.
++
++ if (aPresContext->IsChrome()) {
++ // Resolution values are in device pixels, not CSS pixels.
++ nsDeviceContext *dx = GetDeviceContextFor(aPresContext);
++ dpi = float(dx->AppUnitsPerPhysicalInch()) / float(dx->AppUnitsPerDevPixel());
++ }
++
+ aResult.SetFloatValue(dpi, eCSSUnit_Inch);
+ return NS_OK;
+ }
+@@ -311,8 +324,12 @@ static nsresult
GetDevicePixelRatio(nsPresContext* aPresContext, const nsMediaFeature*,
nsCSSValue& aResult)
{
@@ -78,7 +116,7 @@ index 6eca06e..25735e8 100644
return NS_OK;
}
-@@ -320,18 +328,21 @@ static nsresult
+@@ -320,18 +337,21 @@ static nsresult
GetSystemMetric(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
nsCSSValue& aResult)
{
@@ -101,7 +139,7 @@ index 6eca06e..25735e8 100644
aResult.Reset();
#ifdef XP_WIN
PRUint8 windowsThemeId =
-@@ -350,7 +361,8 @@ GetWindowsTheme(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
+@@ -350,7 +370,8 @@ GetWindowsTheme(nsPresContext* aPresContext, const nsMediaFeature* aFeature,
}
}
#endif
diff --git a/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch b/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
index 33500a7..ff9e618 100644
--- a/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
+++ b/src/current-patches/firefox/0011-Limit-the-number-of-fonts-per-document.patch
@@ -1,7 +1,7 @@
-From b562518157b03735bc4a17ecb9a233f11ff99a45 Mon Sep 17 00:00:00 2001
+From cb3a6f45dd2c15d6b75084e1a4dded18ed638632 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 1 Feb 2012 16:01:21 -0800
-Subject: [PATCH 11/19] Limit the number of fonts per document.
+Subject: [PATCH 11/24] Limit the number of fonts per document.
We create two prefs:
browser.display.max_font_count and browser.display.max_font_attempts.
diff --git a/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch b/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch
index 583d1bf..e627238 100644
--- a/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch
+++ b/src/current-patches/firefox/0012-Rebrand-Firefox-to-TorBrowser.patch
@@ -1,7 +1,7 @@
-From 235aa1bffd7ada80e14d7a15b2d3e7f89f4af710 Mon Sep 17 00:00:00 2001
+From 5820fc300fe1cae27752673e8721a19e70bf727c Mon Sep 17 00:00:00 2001
From: Erinn Clark <erinn(a)torproject.org>
Date: Wed, 25 Apr 2012 09:14:00 -0300
-Subject: [PATCH 12/19] Rebrand Firefox to TorBrowser
+Subject: [PATCH 12/24] Rebrand Firefox to TorBrowser
This patch does some basic renaming of Firefox to TorBrowser. The rest of the
branding is done by images and icons.
diff --git a/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch b/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch
index 9a0533b..1ad0972 100644
--- a/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch
+++ b/src/current-patches/firefox/0013-Make-Download-manager-memory-only.patch
@@ -1,7 +1,7 @@
-From 6eba0489502d7298e0941df12a0823b13078c52b Mon Sep 17 00:00:00 2001
+From 28178fb406d86b317b13b16ade3b06e5e1500c7e Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 25 Apr 2012 13:39:35 -0700
-Subject: [PATCH 13/19] Make Download manager memory only.
+Subject: [PATCH 13/24] Make Download manager memory only.
Solves https://trac.torproject.org/projects/tor/ticket/4017.
diff --git a/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch b/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch
index df71776..adbd3d4 100644
--- a/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch
+++ b/src/current-patches/firefox/0014-Add-DDG-and-StartPage-to-Omnibox.patch
@@ -1,7 +1,7 @@
-From c47053eea6488c5c949ff98c37a9669f969e4175 Mon Sep 17 00:00:00 2001
+From 2a80e84755c97cf4ff3ab63bda1bd5f0936d9594 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 25 Apr 2012 15:03:46 -0700
-Subject: [PATCH 14/19] Add DDG and StartPage to Omnibox.
+Subject: [PATCH 14/24] Add DDG and StartPage to Omnibox.
You mean there are search engines that don't require captchas if you don't
have a cookie? Holy crap. Get those in there now.
diff --git a/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch b/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch
index 840c1c9..93a989b 100644
--- a/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch
+++ b/src/current-patches/firefox/0015-Make-nsICacheService.EvictEntries-synchronous.patch
@@ -1,7 +1,7 @@
-From 231dc894259f16bb39ff7d9fe3cc3fa1cda30eb1 Mon Sep 17 00:00:00 2001
+From 20c94cb890a8872c07ba13686e293ca147b85cd6 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue, 1 May 2012 15:02:03 -0700
-Subject: [PATCH 15/19] Make nsICacheService.EvictEntries synchronous
+Subject: [PATCH 15/24] Make nsICacheService.EvictEntries synchronous
This fixes a race condition that allows cache-based EverCookies to persist for
a brief time (on the order of minutes?) after cache clearing/"New Identity".
@@ -12,10 +12,10 @@ https://trac.torproject.org/projects/tor/ticket/5715
1 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/netwerk/cache/nsCacheService.cpp b/netwerk/cache/nsCacheService.cpp
-index 8af611f..65686c7 100644
+index 83ce887..e9f1a76 100644
--- a/netwerk/cache/nsCacheService.cpp
+++ b/netwerk/cache/nsCacheService.cpp
-@@ -1315,10 +1315,21 @@ NS_IMETHODIMP nsCacheService::VisitEntries(nsICacheVisitor *visitor)
+@@ -1316,10 +1316,21 @@ NS_IMETHODIMP nsCacheService::VisitEntries(nsICacheVisitor *visitor)
return NS_OK;
}
diff --git a/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch b/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch
index 05f1923..bb70b17 100644
--- a/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch
+++ b/src/current-patches/firefox/0016-Prevent-WebSocket-DNS-leak.patch
@@ -1,7 +1,7 @@
-From bf5c8236b9b995e01e7909181dfe3f01bec05149 Mon Sep 17 00:00:00 2001
+From 976f0d4fabb6b0b50c83192d622827357c761bd3 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 2 May 2012 17:44:39 -0700
-Subject: [PATCH 16/19] Prevent WebSocket DNS leak.
+Subject: [PATCH 16/24] Prevent WebSocket DNS leak.
This is due to an improper implementation of the WebSocket spec by Mozilla.
diff --git a/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch b/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch
index 4d0ee81..f1814e7 100644
--- a/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch
+++ b/src/current-patches/firefox/0017-Randomize-HTTP-request-order-and-pipeline-depth.patch
@@ -1,7 +1,7 @@
-From 276cc8cd478a6ad495758ab7aee27a6a88d12bcc Mon Sep 17 00:00:00 2001
+From 36f826e64411a74912ba1adebd1a30b84716bf84 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Wed, 6 Jun 2012 11:08:56 -0700
-Subject: [PATCH 17/19] Randomize HTTP request order and pipeline depth.
+Subject: [PATCH 17/24] Randomize HTTP request order and pipeline depth.
This is an experimental defense against
http://lorre.uni.lu/~andriy/papers/acmccs-wpes11-fingerprinting.pdf
diff --git a/src/current-patches/firefox/0018-Add-HTTP-auth-headers-before-the-modify-request-obse.patch b/src/current-patches/firefox/0018-Add-HTTP-auth-headers-before-the-modify-request-obse.patch
index 845d60e..46cf611 100644
--- a/src/current-patches/firefox/0018-Add-HTTP-auth-headers-before-the-modify-request-obse.patch
+++ b/src/current-patches/firefox/0018-Add-HTTP-auth-headers-before-the-modify-request-obse.patch
@@ -1,7 +1,7 @@
-From 3a0261c7fdbed4a4705d5c6c39edeed4c127121f Mon Sep 17 00:00:00 2001
+From c1e26c8a294abe426fd6fb84508db6074ef23379 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)fscked.org>
Date: Fri, 2 Sep 2011 15:33:20 -0700
-Subject: [PATCH 18/19] Add HTTP auth headers before the modify-request
+Subject: [PATCH 18/24] Add HTTP auth headers before the modify-request
observer.
Otherwise, how are we supposed to modify them?
diff --git a/src/current-patches/firefox/0019-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch b/src/current-patches/firefox/0019-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch
index 16ce98a..7f3869c 100644
--- a/src/current-patches/firefox/0019-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch
+++ b/src/current-patches/firefox/0019-Adapt-Steven-Michaud-s-Mac-crashfix-patch.patch
@@ -1,7 +1,7 @@
-From e263c559a4799a26a9ef5ca3490372fc93a62d3e Mon Sep 17 00:00:00 2001
+From 49cccdba3e6fc10e0e376d423b3ba1b6135f62e1 Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Thu, 7 Jun 2012 16:25:48 -0700
-Subject: [PATCH 19/19] Adapt Steven Michaud's Mac crashfix patch
+Subject: [PATCH 19/24] Adapt Steven Michaud's Mac crashfix patch
Source is: https://bugzilla.mozilla.org/show_bug.cgi?id=715885#c35
diff --git a/src/current-patches/firefox/0020-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch b/src/current-patches/firefox/0020-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch
index 56d9848..700a795 100644
--- a/src/current-patches/firefox/0020-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch
+++ b/src/current-patches/firefox/0020-Add-mozIThirdPartyUtil.getFirstPartyURI-API.patch
@@ -1,7 +1,7 @@
-From 73e548ceee36b99f06e33010163ed8b8cc86b3dd Mon Sep 17 00:00:00 2001
+From 24f62d79a6179598ed633481e2bbeac1b2ccd9bc Mon Sep 17 00:00:00 2001
From: Mike Perry <mikeperry-git(a)torproject.org>
Date: Tue, 28 Aug 2012 18:35:33 -0700
-Subject: [PATCH 20/20] Add mozIThirdPartyUtil.getFirstPartyURI API
+Subject: [PATCH 20/24] Add mozIThirdPartyUtil.getFirstPartyURI API
API allows you to get the url bar URI for a channel or nsIDocument.
---
diff --git a/src/current-patches/firefox/0021-Add-canvas-image-extraction-prompt.patch b/src/current-patches/firefox/0021-Add-canvas-image-extraction-prompt.patch
new file mode 100644
index 0000000..f303683
--- /dev/null
+++ b/src/current-patches/firefox/0021-Add-canvas-image-extraction-prompt.patch
@@ -0,0 +1,551 @@
+From 3e8d778866d96e1ca82f2b08e7b8d948c1c3853d Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Tue, 9 Oct 2012 11:21:06 -0400
+Subject: [PATCH 21/24] Add canvas image extraction prompt.
+
+---
+ browser/base/content/browser.css | 1 +
+ browser/base/content/browser.js | 102 ++++++++++++++++++++
+ browser/base/content/browser.xul | 1 +
+ .../en-US/chrome/browser/browser.properties | 7 ++
+ browser/themes/gnomestripe/browser/browser.css | 2 +
+ browser/themes/pinstripe/browser/browser.css | 2 +
+ browser/themes/winstripe/browser/browser.css | 2 +
+ content/canvas/src/CanvasUtils.cpp | 63 ++++++++++++
+ content/canvas/src/CanvasUtils.h | 2 +
+ content/canvas/src/nsCanvasRenderingContext2D.cpp | 15 +++
+ .../canvas/src/nsCanvasRenderingContext2DAzure.cpp | 15 +++
+ content/html/content/public/nsHTMLCanvasElement.h | 3 +
+ content/html/content/src/Makefile.in | 1 +
+ content/html/content/src/nsHTMLCanvasElement.cpp | 39 ++++++--
+ 14 files changed, 246 insertions(+), 9 deletions(-)
+
+diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css
+index f033c2b..c709631 100644
+--- a/browser/base/content/browser.css
++++ b/browser/base/content/browser.css
+@@ -440,6 +440,7 @@ window[chromehidden~="toolbar"] toolbar:not(.toolbar-primary):not(.chromeclass-m
+ created with a null anchorID, so in that case use a default anchor icon. */
+ #notification-popup-box[anchorid="notification-popup-box"] > #default-notification-icon,
+ #notification-popup-box[anchorid="geo-notification-icon"] > #geo-notification-icon,
++#notification-popup-box[anchorid="canvas-notification-icon"] > #canvas-notification-icon,
+ #notification-popup-box[anchorid="indexedDB-notification-icon"] > #indexedDB-notification-icon,
+ #notification-popup-box[anchorid="addons-notification-icon"] > #addons-notification-icon,
+ #notification-popup-box[anchorid="password-notification-icon"] > #password-notification-icon {
+diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
+index 20e3666..0c6bd46 100644
+--- a/browser/base/content/browser.js
++++ b/browser/base/content/browser.js
+@@ -1522,6 +1522,7 @@ function delayedStartup(isLoadingBlank, mustLoadSidebar) {
+ BrowserOffline.init();
+ OfflineApps.init();
+ IndexedDBPromptHelper.init();
++ CanvasPermissionPromptHelper.init();
+ gFormSubmitObserver.init();
+ AddonManager.addAddonListener(AddonsMgrListener);
+
+@@ -1834,6 +1835,7 @@ function BrowserShutdown() {
+ BrowserOffline.uninit();
+ OfflineApps.uninit();
+ IndexedDBPromptHelper.uninit();
++ CanvasPermissionPromptHelper.uninit();
+ AddonManager.removeAddonListener(AddonsMgrListener);
+ }
+
+@@ -6656,6 +6658,106 @@ var IndexedDBPromptHelper = {
+ }
+ };
+
++var CanvasPermissionPromptHelper = {
++ _permissionsPrompt: "canvas-permissions-prompt",
++ _notificationIcon: "canvas-notification-icon",
++
++ init:
++ function CanvasPermissionPromptHelper_init() {
++ Services.obs.addObserver(this, this._permissionsPrompt, false);
++ },
++
++ uninit:
++ function CanvasPermissionPromptHelper_uninit() {
++ Services.obs.removeObserver(this, this._permissionsPrompt, false);
++ },
++
++ // aSubject is an nsIDOMWindow.
++ // aData is an URL string.
++ observe:
++ function CanvasPermissionPromptHelper_observe(aSubject, aTopic, aData) {
++ if ((aTopic != this._permissionsPrompt) || !aData)
++ throw new Error("Unexpected topic or missing URL");
++
++ var uri = makeURI(aData);
++ var contentWindow = aSubject.QueryInterface(Ci.nsIDOMWindow);
++ var contentDocument = contentWindow.document;
++ var browserWindow =
++ OfflineApps._getBrowserWindowForContentWindow(contentWindow);
++
++ if (browserWindow != window) {
++ // Must belong to some other window.
++ return;
++ }
++
++ // If canvas prompt is already displayed, just return. This is OK (and
++ // more efficient) since this permission is associated with the top
++ // browser's URL.
++ if (PopupNotifications.getNotification(aTopic, browser))
++ return;
++
++ var bundleSvc = Cc["@mozilla.org/intl/stringbundle;1"].
++ getService(Ci.nsIStringBundleService);
++ var torBtnBundle;
++ try {
++ torBtnBundle = bundleSvc.createBundle(
++ "chrome://torbutton/locale/torbutton.properties");
++ } catch (e) {}
++
++ var message = getLocalizedString("canvas.siteprompt", [ uri.asciiHost ]);
++
++ var mainAction = {
++ label: getLocalizedString("canvas.allow"),
++ accessKey: getLocalizedString("canvas.allowAccessKey"),
++ callback: function() {
++ setCanvasPermission(uri, Ci.nsIPermissionManager.ALLOW_ACTION);
++ }
++ };
++
++ var secondaryActions = [
++ {
++ label: getLocalizedString("canvas.never"),
++ accessKey: getLocalizedString("canvas.neverAccessKey"),
++ callback: function() {
++ setCanvasPermission(uri, Ci.nsIPermissionManager.DENY_ACTION);
++ }
++ }
++ ];
++
++ // Since we have a process in place to perform localization for the
++ // Torbutton extension, get our strings from the extension if possible.
++ function getLocalizedString(aID, aParams) {
++ var s;
++ if (torBtnBundle) try {
++ if (aParams)
++ s = torBtnBundle.formatStringFromName(aID, aParams, aParams.length);
++ else
++ s = torBtnBundle.GetStringFromName(aID);
++ } catch (e) {}
++
++ if (!s) {
++ if (aParams)
++ s = gNavigatorBundle.getFormattedString(aID, aParams);
++ else
++ s = gNavigatorBundle.getString(aID);
++ }
++
++ return s;
++ }
++
++ function setCanvasPermission(aURI, aPerm) {
++ Services.perms.add(aURI, "canvas/extractData", aPerm,
++ Ci.nsIPermissionManager.EXPIRE_NEVER);
++ }
++
++ var browser = OfflineApps._getBrowserForContentWindow(browserWindow,
++ contentWindow);
++ notification = PopupNotifications.show(browser, aTopic, message,
++ this._notificationIcon, mainAction,
++ secondaryActions, null);
++ }
++};
++
+ function WindowIsClosing()
+ {
+ if (TabView.isVisible()) {
+diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul
+index ba2a7cb..1acea43 100644
+--- a/browser/base/content/browser.xul
++++ b/browser/base/content/browser.xul
+@@ -520,6 +520,7 @@
+ <image id="default-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="geo-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="addons-notification-icon" class="notification-anchor-icon" role="button"/>
++ <image id="canvas-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="indexedDB-notification-icon" class="notification-anchor-icon" role="button"/>
+ <image id="password-notification-icon" class="notification-anchor-icon" role="button"/>
+ </box>
+diff --git a/browser/locales/en-US/chrome/browser/browser.properties b/browser/locales/en-US/chrome/browser/browser.properties
+index 380e3c3..98154d1 100644
+--- a/browser/locales/en-US/chrome/browser/browser.properties
++++ b/browser/locales/en-US/chrome/browser/browser.properties
+@@ -197,6 +197,13 @@ offlineApps.usage=This website (%S) is now storing more than %SMB of data on you
+ offlineApps.manageUsage=Show settings
+ offlineApps.manageUsageAccessKey=S
+
++# Canvas permission prompt
++canvas.siteprompt=This website (%S) attempted to access image data on a canvas. Blank (white) image data was returned this time.
++canvas.allow=Allow in the Future
++canvas.allowAccessKey=A
++canvas.never=Never for This Site
++canvas.neverAccessKey=e
++
+ # LOCALIZATION NOTE (indexedDB.usage): %1$S is the website host name
+ # %2$S a number of megabytes.
+ indexedDB.usage=This website (%1$S) is attempting to store more than %2$S MB of data on your computer for offline use.
+diff --git a/browser/themes/gnomestripe/browser/browser.css b/browser/themes/gnomestripe/browser/browser.css
+index edc0b72..8ba057e 100644
+--- a/browser/themes/gnomestripe/browser/browser.css
++++ b/browser/themes/gnomestripe/browser/browser.css
+@@ -1227,6 +1227,7 @@ toolbar[iconsize="small"] #feed-button {
+ list-style-image: url("moz-icon://stock/gtk-cancel?size=menu");
+ }
+
++.popup-notification-icon[popupid="canvas-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-quota-prompt"] {
+ list-style-image: url(chrome://global/skin/icons/question-64.png);
+@@ -1281,6 +1282,7 @@ toolbar[iconsize="small"] #feed-button {
+ list-style-image: url(chrome://mozapps/skin/extensions/extensionGeneric-16.png);
+ }
+
++#canvas-notification-icon,
+ #indexedDB-notification-icon {
+ list-style-image: url(chrome://global/skin/icons/question-16.png);
+ }
+diff --git a/browser/themes/pinstripe/browser/browser.css b/browser/themes/pinstripe/browser/browser.css
+index 2a96556..f94a6f2 100644
+--- a/browser/themes/pinstripe/browser/browser.css
++++ b/browser/themes/pinstripe/browser/browser.css
+@@ -2404,10 +2404,12 @@ toolbarbutton.chevron > .toolbarbutton-menu-dropmarker {
+ -moz-image-region: rect(0px, 48px, 16px, 32px);
+ }
+
++#canvas-notification-icon,
+ #indexedDB-notification-icon {
+ list-style-image: url(chrome://global/skin/icons/question-16.png);
+ }
+
++.popup-notification-icon[popupid="canvas-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-quota-prompt"] {
+ list-style-image: url(chrome://global/skin/icons/question-64.png);
+diff --git a/browser/themes/winstripe/browser/browser.css b/browser/themes/winstripe/browser/browser.css
+index 0103c79..d352790 100644
+--- a/browser/themes/winstripe/browser/browser.css
++++ b/browser/themes/winstripe/browser/browser.css
+@@ -2294,6 +2294,7 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
+ -moz-image-region: rect(32px, 32px, 48px, 16px);
+ }
+
++.popup-notification-icon[popupid="canvas-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-permissions-prompt"],
+ .popup-notification-icon[popupid="indexedDB-quota-prompt"] {
+ list-style-image: url(chrome://global/skin/icons/question-64.png);
+@@ -2346,6 +2347,7 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] {
+ list-style-image: url(chrome://mozapps/skin/extensions/extensionGeneric-16.png);
+ }
+
++#canvas-notification-icon,
+ #indexedDB-notification-icon {
+ list-style-image: url(chrome://global/skin/icons/question-16.png);
+ }
+diff --git a/content/canvas/src/CanvasUtils.cpp b/content/canvas/src/CanvasUtils.cpp
+index 2f822eb..d7d0591 100644
+--- a/content/canvas/src/CanvasUtils.cpp
++++ b/content/canvas/src/CanvasUtils.cpp
+@@ -59,6 +59,15 @@
+ #include "CanvasUtils.h"
+ #include "mozilla/gfx/Matrix.h"
+
++#include "nsIScriptObjectPrincipal.h"
++#include "nsIPermissionManager.h"
++#include "mozIThirdPartyUtil.h"
++#include "nsContentUtils.h"
++#include "nsUnicharUtils.h"
++
++#define TOPIC_CANVAS_PERMISSIONS_PROMPT "canvas-permissions-prompt"
++#define PERMISSION_CANVAS_EXTRACT_DATA "canvas/extractData"
++
+ namespace mozilla {
+ namespace CanvasUtils {
+
+@@ -101,6 +110,60 @@ DoDrawImageSecurityCheck(nsHTMLCanvasElement *aCanvasElement,
+ aCanvasElement->SetWriteOnly();
+ }
+
++// Check site-specific permission and display prompt if appropriate.
++bool
++IsImageExtractionAllowed(nsIDocument *aDocument)
++{
++ if (!aDocument)
++ return false;
++
++ nsPIDOMWindow *win = aDocument->GetWindow();
++ nsCOMPtr<nsIScriptObjectPrincipal> sop(do_QueryInterface(win));
++ if (sop && nsContentUtils::IsSystemPrincipal(sop->GetPrincipal()))
++ return true;
++
++ bool isAllowed = false;
++ nsCOMPtr<mozIThirdPartyUtil> thirdPartyUtil =
++ do_GetService(THIRDPARTYUTIL_CONTRACTID);
++ nsCOMPtr<nsIPermissionManager> permissionManager =
++ do_GetService(NS_PERMISSIONMANAGER_CONTRACTID);
++ if (thirdPartyUtil && permissionManager) {
++ nsCOMPtr<nsIURI> uri;
++ nsresult rv = thirdPartyUtil->GetFirstPartyURI(NULL, aDocument,
++ getter_AddRefs(uri));
++ uint32_t permission = nsIPermissionManager::UNKNOWN_ACTION;
++ if (NS_SUCCEEDED(rv)) {
++ // Allow local files to access canvas data; check content permissions
++ // for remote pages.
++ bool isFileURL = false;
++ (void)uri->SchemeIs("file", &isFileURL);
++ if (isFileURL)
++ permission = nsIPermissionManager::ALLOW_ACTION;
++ else {
++ rv = permissionManager->TestPermission(uri,
++ PERMISSION_CANVAS_EXTRACT_DATA, &permission);
++ }
++ }
++
++ if (NS_SUCCEEDED(rv)) {
++ isAllowed = (permission == nsIPermissionManager::ALLOW_ACTION);
++
++ if (!isAllowed && (permission != nsIPermissionManager::DENY_ACTION)) {
++ // Send notification so that a prompt is displayed.
++ nsCString spec;
++ rv = uri->GetSpec(spec);
++ NS_ENSURE_SUCCESS(rv, rv);
++ nsCOMPtr<nsIObserverService> obs =
++ mozilla::services::GetObserverService();
++ obs->NotifyObservers(win, TOPIC_CANVAS_PERMISSIONS_PROMPT,
++ NS_ConvertUTF8toUTF16(spec).get());
++ }
++ }
++ }
++
++ return isAllowed;
++}
++
+ void
+ LogMessage (const nsCString& errorString)
+ {
+diff --git a/content/canvas/src/CanvasUtils.h b/content/canvas/src/CanvasUtils.h
+index 36186dd..067ee46 100644
+--- a/content/canvas/src/CanvasUtils.h
++++ b/content/canvas/src/CanvasUtils.h
+@@ -77,6 +77,8 @@ void DoDrawImageSecurityCheck(nsHTMLCanvasElement *aCanvasElement,
+ bool forceWriteOnly,
+ bool CORSUsed);
+
++bool IsImageExtractionAllowed(nsIDocument *aDocument);
++
+ void LogMessage (const nsCString& errorString);
+ void LogMessagef (const char *fmt, ...);
+
+diff --git a/content/canvas/src/nsCanvasRenderingContext2D.cpp b/content/canvas/src/nsCanvasRenderingContext2D.cpp
+index 36389b0..0cf97ce 100644
+--- a/content/canvas/src/nsCanvasRenderingContext2D.cpp
++++ b/content/canvas/src/nsCanvasRenderingContext2D.cpp
+@@ -3886,6 +3886,21 @@ nsCanvasRenderingContext2D::GetImageData_explicit(PRInt32 x, PRInt32 y, PRUint32
+ if (!rightMost.valid() || !bottomMost.valid())
+ return NS_ERROR_DOM_SYNTAX_ERR;
+
++ // Check for site-specific permission and return all-white, opaque pixel
++ // data if no permission. This check is not needed if the canvas was
++ // created with a docshell (that is only done for special internal uses).
++ bool usePlaceholder = false;
++ if (mCanvasElement) {
++ nsCOMPtr<nsIDocument> ownerDoc = HTMLCanvasElement()->OwnerDoc();
++ usePlaceholder = !ownerDoc ||
++ !CanvasUtils::IsImageExtractionAllowed(ownerDoc);
++ }
++
++ if (usePlaceholder) {
++ memset(aData, 0xFF, aDataLen);
++ return NS_OK;
++ }
++
+ /* Copy the surface contents to the buffer */
+ nsRefPtr<gfxImageSurface> tmpsurf =
+ new gfxImageSurface(aData,
+diff --git a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+index 13baaa5..e8dfb1e 100644
+--- a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
++++ b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+@@ -4038,6 +4038,21 @@ nsCanvasRenderingContext2DAzure::GetImageData_explicit(PRInt32 x, PRInt32 y, PRU
+ return NS_OK;
+ }
+
++ // Check for site-specific permission and return all-white, opaque pixel
++ // data if no permission. This check is not needed if the canvas was
++ // created with a docshell (that is only done for special internal uses).
++ bool usePlaceholder = false;
++ if (mCanvasElement) {
++ nsCOMPtr<nsIDocument> ownerDoc = HTMLCanvasElement()->OwnerDoc();
++ usePlaceholder = !ownerDoc ||
++ !CanvasUtils::IsImageExtractionAllowed(ownerDoc);
++ }
++
++ if (usePlaceholder) {
++ memset(aData, 0xFF, aDataLen);
++ return NS_OK;
++ }
++
+ IntRect srcRect(0, 0, mWidth, mHeight);
+ IntRect destRect(x, y, w, h);
+
+diff --git a/content/html/content/public/nsHTMLCanvasElement.h b/content/html/content/public/nsHTMLCanvasElement.h
+index 86202a8..66176f2 100644
+--- a/content/html/content/public/nsHTMLCanvasElement.h
++++ b/content/html/content/public/nsHTMLCanvasElement.h
+@@ -188,13 +188,16 @@ protected:
+ nsresult UpdateContext(nsIPropertyBag *aNewContextOptions = nsnull);
+ nsresult ExtractData(const nsAString& aType,
+ const nsAString& aOptions,
++ bool aUsePlaceholder,
+ nsIInputStream** aStream,
+ bool& aFellBackToPNG);
+ nsresult ToDataURLImpl(const nsAString& aMimeType,
+ nsIVariant* aEncoderOptions,
++ bool aUsePlaceholder,
+ nsAString& aDataURL);
+ nsresult MozGetAsFileImpl(const nsAString& aName,
+ const nsAString& aType,
++ bool aUsePlaceholder,
+ nsIDOMFile** aResult);
+ nsresult GetContextHelper(const nsAString& aContextId,
+ bool aForceThebes,
+diff --git a/content/html/content/src/Makefile.in b/content/html/content/src/Makefile.in
+index 019d297..3db4f7c 100644
+--- a/content/html/content/src/Makefile.in
++++ b/content/html/content/src/Makefile.in
+@@ -138,6 +138,7 @@ INCLUDES += \
+ -I$(srcdir)/../../../events/src \
+ -I$(srcdir)/../../../xbl/src \
+ -I$(srcdir)/../../../xul/content/src \
++ -I$(srcdir)/../../../canvas/src/ \
+ -I$(srcdir)/../../../../layout/forms \
+ -I$(srcdir)/../../../../layout/style \
+ -I$(srcdir)/../../../../layout/tables \
+diff --git a/content/html/content/src/nsHTMLCanvasElement.cpp b/content/html/content/src/nsHTMLCanvasElement.cpp
+index a302f67..572a81b 100644
+--- a/content/html/content/src/nsHTMLCanvasElement.cpp
++++ b/content/html/content/src/nsHTMLCanvasElement.cpp
+@@ -60,6 +60,8 @@
+
+ #include "nsIWritablePropertyBag2.h"
+
++#include "CanvasUtils.h"
++
+ #define DEFAULT_CANVAS_WIDTH 300
+ #define DEFAULT_CANVAS_HEIGHT 150
+
+@@ -213,25 +215,36 @@ nsHTMLCanvasElement::ToDataURL(const nsAString& aType, nsIVariant* aParams,
+ return NS_ERROR_DOM_SECURITY_ERR;
+ }
+
+- return ToDataURLImpl(aType, aParams, aDataURL);
++ // Check site-specific permission and display prompt if appropriate.
++ // If no permission, return all-white, opaque image data.
++ bool usePlaceholder = !CanvasUtils::IsImageExtractionAllowed(OwnerDoc());
++ return ToDataURLImpl(aType, aParams, usePlaceholder, aDataURL);
+ }
+
++// TODO: on FF trunk, we also need to patch mozFetchAsStream().
+ nsresult
+ nsHTMLCanvasElement::ExtractData(const nsAString& aType,
+ const nsAString& aOptions,
++ bool aUsePlaceholder,
+ nsIInputStream** aStream,
+ bool& aFellBackToPNG)
+ {
+ // note that if we don't have a current context, the spec says we're
+ // supposed to just return transparent black pixels of the canvas
+ // dimensions.
++ // If placeholder data was requested, return all-white, opaque image data.
+ nsRefPtr<gfxImageSurface> emptyCanvas;
+ nsIntSize size = GetWidthHeight();
+- if (!mCurrentContext) {
++ if (aUsePlaceholder || !mCurrentContext) {
+ emptyCanvas = new gfxImageSurface(gfxIntSize(size.width, size.height), gfxASurface::ImageFormatARGB32);
+ if (emptyCanvas->CairoStatus()) {
+ return NS_ERROR_INVALID_ARG;
+ }
++
++ if (aUsePlaceholder) {
++ int32_t dataSize = emptyCanvas->GetDataSize();
++ memset(emptyCanvas->Data(), 0xFF, dataSize);
++ }
+ }
+
+ nsresult rv;
+@@ -241,12 +254,13 @@ nsHTMLCanvasElement::ExtractData(const nsAString& aType,
+ NS_ConvertUTF16toUTF8 encoderType(aType);
+
+ try_again:
+- if (mCurrentContext) {
++ if (!aUsePlaceholder && mCurrentContext) {
+ rv = mCurrentContext->GetInputStream(encoderType.get(),
+ nsPromiseFlatString(aOptions).get(),
+ getter_AddRefs(imgStream));
+ } else {
+- // no context, so we have to encode the empty image we created above
++ // Using placeholder or we have no context: encode the empty/white image
++ // we created above.
+ nsCString enccid("@mozilla.org/image/encoder;2?type=");
+ enccid += encoderType;
+
+@@ -284,6 +298,7 @@ nsHTMLCanvasElement::ExtractData(const nsAString& aType,
+ nsresult
+ nsHTMLCanvasElement::ToDataURLImpl(const nsAString& aMimeType,
+ nsIVariant* aEncoderOptions,
++ bool aUsePlaceholder,
+ nsAString& aDataURL)
+ {
+ bool fallbackToPNG = false;
+@@ -339,13 +354,15 @@ nsHTMLCanvasElement::ToDataURLImpl(const nsAString& aMimeType,
+ }
+
+ nsCOMPtr<nsIInputStream> stream;
+- rv = ExtractData(type, params, getter_AddRefs(stream), fallbackToPNG);
++ rv = ExtractData(type, params, aUsePlaceholder,
++ getter_AddRefs(stream), fallbackToPNG);
+
+ // If there are unrecognized custom parse options, we should fall back to
+ // the default values for the encoder without any options at all.
+ if (rv == NS_ERROR_INVALID_ARG && usingCustomParseOptions) {
+ fallbackToPNG = false;
+- rv = ExtractData(type, EmptyString(), getter_AddRefs(stream), fallbackToPNG);
++ rv = ExtractData(type, EmptyString(), aUsePlaceholder,
++ getter_AddRefs(stream), fallbackToPNG);
+ }
+
+ NS_ENSURE_SUCCESS(rv, rv);
+@@ -376,19 +393,23 @@ nsHTMLCanvasElement::MozGetAsFile(const nsAString& aName,
+ return NS_ERROR_DOM_SECURITY_ERR;
+ }
+
+- return MozGetAsFileImpl(aName, aType, aResult);
++ // Check site-speciifc permission and display prompt if appropriate.
++ // If no permission, return all-white, opaque image data.
++ bool usePlaceholder = !CanvasUtils::IsImageExtractionAllowed(OwnerDoc());
++ return MozGetAsFileImpl(aName, aType, usePlaceholder, aResult);
+ }
+
+ nsresult
+ nsHTMLCanvasElement::MozGetAsFileImpl(const nsAString& aName,
+ const nsAString& aType,
++ bool aUsePlaceholder,
+ nsIDOMFile** aResult)
+ {
+ bool fallbackToPNG = false;
+
+ nsCOMPtr<nsIInputStream> stream;
+- nsresult rv = ExtractData(aType, EmptyString(), getter_AddRefs(stream),
+- fallbackToPNG);
++ nsresult rv = ExtractData(aType, EmptyString(), aUsePlaceholder,
++ getter_AddRefs(stream), fallbackToPNG);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ nsAutoString type(aType);
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0022-Return-client-window-coordinates-for-mouse-event-scr.patch b/src/current-patches/firefox/0022-Return-client-window-coordinates-for-mouse-event-scr.patch
new file mode 100644
index 0000000..2532e5f
--- /dev/null
+++ b/src/current-patches/firefox/0022-Return-client-window-coordinates-for-mouse-event-scr.patch
@@ -0,0 +1,43 @@
+From eb9cc23d7b04d9c441f69e98834561622533f6ba Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Tue, 9 Oct 2012 11:13:45 -0400
+Subject: [PATCH 22/24] Return client window coordinates for mouse event
+ screenX/Y (for dragend, 0,0 is returned).
+
+---
+ content/events/src/nsDOMUIEvent.cpp | 15 +++++++++++++++
+ 1 files changed, 15 insertions(+), 0 deletions(-)
+
+diff --git a/content/events/src/nsDOMUIEvent.cpp b/content/events/src/nsDOMUIEvent.cpp
+index fe57f52..d641f0d 100644
+--- a/content/events/src/nsDOMUIEvent.cpp
++++ b/content/events/src/nsDOMUIEvent.cpp
+@@ -135,10 +135,25 @@ nsDOMUIEvent::GetScreenPoint()
+ return nsIntPoint(0, 0);
+ }
+
++ bool isChrome = nsContentUtils::IsCallerChrome();
++
+ if (!((nsGUIEvent*)mEvent)->widget ) {
++ // For non-chrome callers, return 0,0 if there is no widget associated
++ // with this event, e.g., for dragend events. Since dragend is for the
++ // drag originator and not for the receiver, it is probably not widely
++ // used (receivers get a drop event). Therefore, returning 0,0 should
++ // not break many web pages. Also, a few years ago Firefox returned 0,0.
++ // See: https://bugzilla.mozilla.org/show_bug.cgi?id=466379
++ if (!isChrome)
++ return nsIntPoint(0, 0);
++
+ return mEvent->refPoint;
+ }
+
++ // For non-chrome callers, return client area coordinates instead.
++ if (!isChrome)
++ return GetClientPoint();
++
+ nsIntPoint offset = mEvent->refPoint +
+ ((nsGUIEvent*)mEvent)->widget->WidgetToScreenOffset();
+ nscoord factor = mPresContext->DeviceContext()->UnscaledAppUnitsPerDevPixel();
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0023-Do-not-expose-physical-screen-info.-via-window-and-w.patch b/src/current-patches/firefox/0023-Do-not-expose-physical-screen-info.-via-window-and-w.patch
new file mode 100644
index 0000000..1907906
--- /dev/null
+++ b/src/current-patches/firefox/0023-Do-not-expose-physical-screen-info.-via-window-and-w.patch
@@ -0,0 +1,312 @@
+From f842f612d98477ad36014338a72f812cf4183e2f Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Wed, 3 Oct 2012 17:06:48 -0400
+Subject: [PATCH 23/24] Do not expose physical screen info. via window and
+ window.screen.
+
+---
+ dom/base/nsGlobalWindow.cpp | 46 +++++++++++++++++++++
+ dom/base/nsGlobalWindow.h | 2 +
+ dom/base/nsScreen.cpp | 92 +++++++++++++++++++++++++++++++++++++++++++
+ dom/base/nsScreen.h | 3 +
+ 4 files changed, 143 insertions(+), 0 deletions(-)
+
+diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp
+index 2c99571..982d931 100644
+--- a/dom/base/nsGlobalWindow.cpp
++++ b/dom/base/nsGlobalWindow.cpp
+@@ -3817,6 +3817,10 @@ nsGlobalWindow::GetOuterWidth(PRInt32* aOuterWidth)
+ {
+ FORWARD_TO_OUTER(GetOuterWidth, (aOuterWidth), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, return inner width to prevent fingerprinting.
++ if (!IsChrome())
++ return GetInnerWidth(aOuterWidth);
++
+ nsIntSize sizeCSSPixels;
+ nsresult rv = GetOuterSize(&sizeCSSPixels);
+ NS_ENSURE_SUCCESS(rv, rv);
+@@ -3830,6 +3834,10 @@ nsGlobalWindow::GetOuterHeight(PRInt32* aOuterHeight)
+ {
+ FORWARD_TO_OUTER(GetOuterHeight, (aOuterHeight), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, return inner height to prevent fingerprinting.
++ if (!IsChrome())
++ return GetInnerHeight(aOuterHeight);
++
+ nsIntSize sizeCSSPixels;
+ nsresult rv = GetOuterSize(&sizeCSSPixels);
+ NS_ENSURE_SUCCESS(rv, rv);
+@@ -3892,6 +3900,12 @@ nsGlobalWindow::GetScreenX(PRInt32* aScreenX)
+ {
+ FORWARD_TO_OUTER(GetScreenX, (aScreenX), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aScreenX = 0;
++ return NS_OK;
++ }
++
+ nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
+ GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
+ NS_ENSURE_TRUE(treeOwnerAsWin, NS_ERROR_FAILURE);
+@@ -3933,6 +3947,12 @@ nsGlobalWindow::GetMozInnerScreenX(float* aScreenX)
+ {
+ FORWARD_TO_OUTER(GetMozInnerScreenX, (aScreenX), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aScreenX = 0;
++ return NS_OK;
++ }
++
+ nsRect r = GetInnerScreenRect();
+ *aScreenX = nsPresContext::AppUnitsToFloatCSSPixels(r.x);
+ return NS_OK;
+@@ -3943,6 +3963,12 @@ nsGlobalWindow::GetMozInnerScreenY(float* aScreenY)
+ {
+ FORWARD_TO_OUTER(GetMozInnerScreenY, (aScreenY), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aScreenY = 0;
++ return NS_OK;
++ }
++
+ nsRect r = GetInnerScreenRect();
+ *aScreenY = nsPresContext::AppUnitsToFloatCSSPixels(r.y);
+ return NS_OK;
+@@ -4064,6 +4090,12 @@ nsGlobalWindow::GetScreenY(PRInt32* aScreenY)
+ {
+ FORWARD_TO_OUTER(GetScreenY, (aScreenY), NS_ERROR_NOT_INITIALIZED);
+
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aScreenY = 0;
++ return NS_OK;
++ }
++
+ nsCOMPtr<nsIBaseWindow> treeOwnerAsWin;
+ GetTreeOwner(getter_AddRefs(treeOwnerAsWin));
+ NS_ENSURE_TRUE(treeOwnerAsWin, NS_ERROR_FAILURE);
+@@ -4110,6 +4142,20 @@ nsGlobalWindow::SetScreenY(PRInt32 aScreenY)
+ return NS_OK;
+ }
+
++bool
++nsGlobalWindow::IsChrome()
++{
++ bool isChrome = false;
++
++ if (mDocShell) {
++ nsRefPtr<nsPresContext> presContext;
++ mDocShell->GetPresContext(getter_AddRefs(presContext));
++ isChrome = (presContext && presContext->IsChrome());
++ }
++
++ return isChrome;
++}
++
+ // NOTE: Arguments to this function should have values scaled to
+ // CSS pixels, not device pixels.
+ nsresult
+diff --git a/dom/base/nsGlobalWindow.h b/dom/base/nsGlobalWindow.h
+index 2ffe4a7..863329c 100644
+--- a/dom/base/nsGlobalWindow.h
++++ b/dom/base/nsGlobalWindow.h
+@@ -744,6 +744,8 @@ protected:
+ nsresult SetOuterSize(PRInt32 aLengthCSSPixels, bool aIsWidth);
+ nsRect GetInnerScreenRect();
+
++ bool IsChrome();
++
+ bool IsFrame()
+ {
+ return GetParentInternal() != nsnull;
+diff --git a/dom/base/nsScreen.cpp b/dom/base/nsScreen.cpp
+index 33a03dc..29a3598 100644
+--- a/dom/base/nsScreen.cpp
++++ b/dom/base/nsScreen.cpp
+@@ -82,6 +82,12 @@ nsScreen::SetDocShell(nsIDocShell* aDocShell)
+ NS_IMETHODIMP
+ nsScreen::GetTop(PRInt32* aTop)
+ {
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aTop = 0;
++ return NS_OK;
++ }
++
+ nsRect rect;
+ nsresult rv = GetRect(rect);
+
+@@ -94,6 +100,12 @@ nsScreen::GetTop(PRInt32* aTop)
+ NS_IMETHODIMP
+ nsScreen::GetLeft(PRInt32* aLeft)
+ {
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aLeft = 0;
++ return NS_OK;
++ }
++
+ nsRect rect;
+ nsresult rv = GetRect(rect);
+
+@@ -106,6 +118,14 @@ nsScreen::GetLeft(PRInt32* aLeft)
+ NS_IMETHODIMP
+ nsScreen::GetWidth(PRInt32* aWidth)
+ {
++ // For non-chrome callers, return content width to prevent fingerprinting.
++ if (!IsChrome()) {
++ nsCOMPtr<nsIDOMWindow> win;
++ nsresult rv = GetDOMWindow(getter_AddRefs(win));
++ NS_ENSURE_SUCCESS(rv, rv);
++ return win->GetInnerWidth(aWidth);
++ }
++
+ nsRect rect;
+ nsresult rv = GetRect(rect);
+
+@@ -117,6 +137,14 @@ nsScreen::GetWidth(PRInt32* aWidth)
+ NS_IMETHODIMP
+ nsScreen::GetHeight(PRInt32* aHeight)
+ {
++ // For non-chrome callers, return content height to prevent fingerprinting.
++ if (!IsChrome()) {
++ nsCOMPtr<nsIDOMWindow> win;
++ nsresult rv = GetDOMWindow(getter_AddRefs(win));
++ NS_ENSURE_SUCCESS(rv, rv);
++ return win->GetInnerHeight(aHeight);
++ }
++
+ nsRect rect;
+ nsresult rv = GetRect(rect);
+
+@@ -128,6 +156,12 @@ nsScreen::GetHeight(PRInt32* aHeight)
+ NS_IMETHODIMP
+ nsScreen::GetPixelDepth(PRInt32* aPixelDepth)
+ {
++ // For non-chrome callers, always return 24 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aPixelDepth = 24;
++ return NS_OK;
++ }
++
+ nsDeviceContext* context = GetDeviceContext();
+
+ if (!context) {
+@@ -153,6 +187,14 @@ nsScreen::GetColorDepth(PRInt32* aColorDepth)
+ NS_IMETHODIMP
+ nsScreen::GetAvailWidth(PRInt32* aAvailWidth)
+ {
++ // For non-chrome callers, return content width to prevent fingerprinting.
++ if (!IsChrome()) {
++ nsCOMPtr<nsIDOMWindow> win;
++ nsresult rv = GetDOMWindow(getter_AddRefs(win));
++ NS_ENSURE_SUCCESS(rv, rv);
++ return win->GetInnerWidth(aAvailWidth);
++ }
++
+ nsRect rect;
+ nsresult rv = GetAvailRect(rect);
+
+@@ -164,6 +206,14 @@ nsScreen::GetAvailWidth(PRInt32* aAvailWidth)
+ NS_IMETHODIMP
+ nsScreen::GetAvailHeight(PRInt32* aAvailHeight)
+ {
++ // For non-chrome callers, return content height to prevent fingerprinting.
++ if (!IsChrome()) {
++ nsCOMPtr<nsIDOMWindow> win;
++ nsresult rv = GetDOMWindow(getter_AddRefs(win));
++ NS_ENSURE_SUCCESS(rv, rv);
++ return win->GetInnerHeight(aAvailHeight);
++ }
++
+ nsRect rect;
+ nsresult rv = GetAvailRect(rect);
+
+@@ -175,6 +225,12 @@ nsScreen::GetAvailHeight(PRInt32* aAvailHeight)
+ NS_IMETHODIMP
+ nsScreen::GetAvailLeft(PRInt32* aAvailLeft)
+ {
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aAvailLeft = 0;
++ return NS_OK;
++ }
++
+ nsRect rect;
+ nsresult rv = GetAvailRect(rect);
+
+@@ -186,6 +242,12 @@ nsScreen::GetAvailLeft(PRInt32* aAvailLeft)
+ NS_IMETHODIMP
+ nsScreen::GetAvailTop(PRInt32* aAvailTop)
+ {
++ // For non-chrome callers, always return 0 to prevent fingerprinting.
++ if (!IsChrome()) {
++ *aAvailTop = 0;
++ return NS_OK;
++ }
++
+ nsRect rect;
+ nsresult rv = GetAvailRect(rect);
+
+@@ -237,3 +299,33 @@ nsScreen::GetAvailRect(nsRect& aRect)
+
+ return NS_OK;
+ }
++
++bool
++nsScreen::IsChrome()
++{
++ bool isChrome = false;
++ if (mDocShell) {
++ nsRefPtr<nsPresContext> presContext;
++ mDocShell->GetPresContext(getter_AddRefs(presContext));
++ if (presContext)
++ isChrome = presContext->IsChrome();
++ }
++
++ return isChrome;
++}
++
++nsresult
++nsScreen::GetDOMWindow(nsIDOMWindow **aResult)
++{
++ NS_ENSURE_ARG_POINTER(aResult);
++ *aResult = NULL;
++
++ if (!mDocShell)
++ return NS_ERROR_FAILURE;
++
++ nsCOMPtr<nsIDOMWindow> win = do_GetInterface(mDocShell);
++ NS_ENSURE_STATE(win);
++ win.swap(*aResult);
++
++ return NS_OK;
++}
+diff --git a/dom/base/nsScreen.h b/dom/base/nsScreen.h
+index 52eab29..d4edaa3 100644
+--- a/dom/base/nsScreen.h
++++ b/dom/base/nsScreen.h
+@@ -44,6 +44,7 @@
+
+ class nsIDocShell;
+ class nsDeviceContext;
++class nsIDOMWindow;
+ struct nsRect;
+
+ // Script "screen" object
+@@ -62,6 +63,8 @@ protected:
+ nsDeviceContext* GetDeviceContext();
+ nsresult GetRect(nsRect& aRect);
+ nsresult GetAvailRect(nsRect& aRect);
++ bool IsChrome();
++ nsresult GetDOMWindow(nsIDOMWindow **aResult);
+
+ nsIDocShell* mDocShell; // Weak Reference
+ };
+--
+1.7.5.4
+
diff --git a/src/current-patches/firefox/0024-Do-not-expose-system-colors-to-CSS-or-canvas.patch b/src/current-patches/firefox/0024-Do-not-expose-system-colors-to-CSS-or-canvas.patch
new file mode 100644
index 0000000..5b808ad
--- /dev/null
+++ b/src/current-patches/firefox/0024-Do-not-expose-system-colors-to-CSS-or-canvas.patch
@@ -0,0 +1,537 @@
+From a3a36dbaebcacdcf6b4343a587ea673e6245102d Mon Sep 17 00:00:00 2001
+From: Kathleen Brade <brade(a)pearlcrescent.com>
+Date: Thu, 4 Oct 2012 14:53:13 -0400
+Subject: [PATCH 24/24] Do not expose system colors to CSS or canvas.
+
+---
+ content/canvas/src/nsCanvasRenderingContext2D.cpp | 36 +++-
+ .../canvas/src/nsCanvasRenderingContext2DAzure.cpp | 51 ++++--
+ layout/style/nsCSSParser.cpp | 19 ++-
+ layout/style/nsRuleNode.cpp | 4 +-
+ widget/public/LookAndFeel.h | 9 +
+ widget/src/xpwidgets/nsXPLookAndFeel.cpp | 173 +++++++++++++++++++-
+ widget/src/xpwidgets/nsXPLookAndFeel.h | 5 +-
+ 7 files changed, 269 insertions(+), 28 deletions(-)
+
+diff --git a/content/canvas/src/nsCanvasRenderingContext2D.cpp b/content/canvas/src/nsCanvasRenderingContext2D.cpp
+index 0cf97ce..6c47821 100644
+--- a/content/canvas/src/nsCanvasRenderingContext2D.cpp
++++ b/content/canvas/src/nsCanvasRenderingContext2D.cpp
+@@ -186,8 +186,9 @@ class nsCanvasGradient : public nsIDOMCanvasGradient
+ public:
+ NS_DECLARE_STATIC_IID_ACCESSOR(NS_CANVASGRADIENT_PRIVATE_IID)
+
+- nsCanvasGradient(gfxPattern* pat)
+- : mPattern(pat)
++ nsCanvasGradient(mozilla::css::Loader* aLoader, gfxPattern* pat)
++ : mCSSLoader(aLoader)
++ , mPattern(pat)
+ {
+ }
+
+@@ -203,7 +204,7 @@ public:
+ return NS_ERROR_DOM_INDEX_SIZE_ERR;
+
+ nscolor color;
+- nsCSSParser parser;
++ nsCSSParser parser(mCSSLoader);
+ nsresult rv = parser.ParseColorString(nsString(colorstr),
+ nsnull, 0, &color);
+ if (NS_FAILED(rv))
+@@ -217,6 +218,7 @@ public:
+ NS_DECL_ISUPPORTS
+
+ protected:
++ mozilla::css::Loader* mCSSLoader; // not ref counted, it owns us
+ nsRefPtr<gfxPattern> mPattern;
+ };
+
+@@ -875,7 +877,9 @@ nsCanvasRenderingContext2D::SetStyleFromStringOrInterface(const nsAString& aStr,
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error
+- // reports to include the outer window ID.
++ // reports to include the outer window ID. The parser also uses it to
++ // detect whether the caller is chrome in order to avoid exposing
++ // system colors.
+ nsCSSParser parser(document ? document->CSSLoader() : nsnull);
+ rv = parser.ParseColorString(aStr, nsnull, 0, &color);
+ if (NS_FAILED(rv)) {
+@@ -1778,7 +1782,14 @@ nsCanvasRenderingContext2D::CreateLinearGradient(float x0, float y0, float x1, f
+ if (!gradpat)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+- nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(gradpat);
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsIDocument* doc = mCanvasElement ? HTMLCanvasElement()->OwnerDoc()
++ : nsnull;
++ mozilla::css::Loader* cssLoader = doc ? doc->CSSLoader() : nsnull;
++ nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(cssLoader,
++ gradpat);
+ if (!grad)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+@@ -1800,7 +1811,14 @@ nsCanvasRenderingContext2D::CreateRadialGradient(float x0, float y0, float r0, f
+ if (!gradpat)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+- nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(gradpat);
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsIDocument* doc = mCanvasElement ? HTMLCanvasElement()->OwnerDoc()
++ : nsnull;
++ mozilla::css::Loader* cssLoader = doc ? doc->CSSLoader() : nsnull;
++ nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasGradient(cssLoader,
++ gradpat);
+ if (!grad)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+@@ -1922,7 +1940,8 @@ nsCanvasRenderingContext2D::SetShadowColor(const nsAString& colorstr)
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error reports
+- // to include the outer window ID.
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(document ? document->CSSLoader() : nsnull);
+ nscolor color;
+ nsresult rv = parser.ParseColorString(colorstr, nsnull, 0, &color);
+@@ -3694,7 +3713,8 @@ nsCanvasRenderingContext2D::DrawWindow(nsIDOMWindow* aWindow, float aX, float aY
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error reports
+- // to include the outer window ID.
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(elementDoc ? elementDoc->CSSLoader() : nsnull);
+ nsresult rv = parser.ParseColorString(PromiseFlatString(aBGColor),
+ nsnull, 0, &bgColor);
+diff --git a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+index e8dfb1e..cb5a5f5 100644
+--- a/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
++++ b/content/canvas/src/nsCanvasRenderingContext2DAzure.cpp
+@@ -201,7 +201,10 @@ public:
+ }
+
+ nscolor color;
+- nsCSSParser parser;
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsCSSParser parser(mCSSLoader);;
+ nsresult rv = parser.ParseColorString(nsString(colorstr),
+ nsnull, 0, &color);
+ if (NS_FAILED(rv)) {
+@@ -221,20 +224,24 @@ public:
+ }
+
+ protected:
+- nsCanvasGradientAzure(Type aType) : mType(aType)
++ nsCanvasGradientAzure(mozilla::css::Loader* aLoader, Type aType)
++ : mCSSLoader(aLoader)
++ , mType(aType)
+ {}
+
+ nsTArray<GradientStop> mRawStops;
+ RefPtr<GradientStops> mStops;
++ mozilla::css::Loader* mCSSLoader; // not ref counted, it owns us
+ Type mType;
+ };
+
+ class nsCanvasRadialGradientAzure : public nsCanvasGradientAzure
+ {
+ public:
+- nsCanvasRadialGradientAzure(const Point &aBeginOrigin, Float aBeginRadius,
++ nsCanvasRadialGradientAzure(mozilla::css::Loader* aLoader,
++ const Point &aBeginOrigin, Float aBeginRadius,
+ const Point &aEndOrigin, Float aEndRadius)
+- : nsCanvasGradientAzure(RADIAL)
++ : nsCanvasGradientAzure(aLoader, RADIAL)
+ , mCenter1(aBeginOrigin)
+ , mCenter2(aEndOrigin)
+ , mRadius1(aBeginRadius)
+@@ -251,8 +258,9 @@ public:
+ class nsCanvasLinearGradientAzure : public nsCanvasGradientAzure
+ {
+ public:
+- nsCanvasLinearGradientAzure(const Point &aBegin, const Point &aEnd)
+- : nsCanvasGradientAzure(LINEAR)
++ nsCanvasLinearGradientAzure(mozilla::css::Loader* aLoader,
++ const Point &aBegin, const Point &aEnd)
++ : nsCanvasGradientAzure(aLoader, LINEAR)
+ , mBegin(aBegin)
+ , mEnd(aEnd)
+ {
+@@ -1066,8 +1074,9 @@ nsCanvasRenderingContext2DAzure::SetStyleFromStringOrInterface(const nsAString&
+ nsIDocument* document = mCanvasElement ?
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+- // Pass the CSS Loader object to the parser, to allow parser error
+- // reports to include the outer window ID.
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(document ? document->CSSLoader() : nsnull);
+ rv = parser.ParseColorString(aStr, nsnull, 0, &color);
+ if (NS_FAILED(rv)) {
+@@ -1855,8 +1864,14 @@ nsCanvasRenderingContext2DAzure::CreateLinearGradient(float x0, float y0, float
+ return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
+ }
+
+- nsRefPtr<nsIDOMCanvasGradient> grad =
+- new nsCanvasLinearGradientAzure(Point(x0, y0), Point(x1, y1));
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsIDocument* doc = mCanvasElement ? HTMLCanvasElement()->OwnerDoc()
++ : nsnull;
++ mozilla::css::Loader* cssLoader = doc ? doc->CSSLoader() : nsnull;
++ nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasLinearGradientAzure(
++ cssLoader, Point(x0, y0), Point(x1, y1));
+
+ *_retval = grad.forget().get();
+ return NS_OK;
+@@ -1875,8 +1890,14 @@ nsCanvasRenderingContext2DAzure::CreateRadialGradient(float x0, float y0, float
+ return NS_ERROR_DOM_INDEX_SIZE_ERR;
+ }
+
+- nsRefPtr<nsIDOMCanvasGradient> grad =
+- new nsCanvasRadialGradientAzure(Point(x0, y0), r0, Point(x1, y1), r1);
++ // Pass the CSS Loader object to the parser, to allow parser error reports
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
++ nsIDocument* doc = mCanvasElement ? HTMLCanvasElement()->OwnerDoc()
++ : nsnull;
++ mozilla::css::Loader* cssLoader = doc ? doc->CSSLoader() : nsnull;
++ nsRefPtr<nsIDOMCanvasGradient> grad = new nsCanvasRadialGradientAzure(
++ cssLoader, Point(x0, y0), r0, Point(x1, y1), r1);
+
+ *_retval = grad.forget().get();
+ return NS_OK;
+@@ -2024,7 +2045,8 @@ nsCanvasRenderingContext2DAzure::SetShadowColor(const nsAString& colorstr)
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error reports
+- // to include the outer window ID.
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(document ? document->CSSLoader() : nsnull);
+ nscolor color;
+ nsresult rv = parser.ParseColorString(colorstr, nsnull, 0, &color);
+@@ -3847,7 +3869,8 @@ nsCanvasRenderingContext2DAzure::DrawWindow(nsIDOMWindow* aWindow, float aX, flo
+ HTMLCanvasElement()->OwnerDoc() : nsnull;
+
+ // Pass the CSS Loader object to the parser, to allow parser error reports
+- // to include the outer window ID.
++ // to include the outer window ID. The parser also uses it to detect
++ // whether the caller is chrome in order to avoid exposing system colors.
+ nsCSSParser parser(elementDoc ? elementDoc->CSSLoader() : nsnull);
+ nsresult rv = parser.ParseColorString(PromiseFlatString(aBGColor),
+ nsnull, 0, &bgColor);
+diff --git a/layout/style/nsCSSParser.cpp b/layout/style/nsCSSParser.cpp
+index ae1a474..30e179c 100644
+--- a/layout/style/nsCSSParser.cpp
++++ b/layout/style/nsCSSParser.cpp
+@@ -1216,8 +1216,25 @@ CSSParserImpl::ParseColorString(const nsSubstring& aBuffer,
+ // Should remove this limitation at some point.
+ return NS_ERROR_FAILURE;
+ }
++
++ // We do not want to expose system/native colors to content. All callers
++ // who are working with content should ensure that they set the CSS
++ // loader (mChildLoader) so we can check here if the content is chrome.
++ bool isChrome = true;
++ if (mChildLoader) {
++ nsIDocument *doc = mChildLoader->GetDocument();
++ if (doc) {
++ nsIPresShell *presShell = doc->GetShell();
++ if (presShell) {
++ nsPresContext* presCtxt = presShell->GetPresContext();
++ if (presCtxt)
++ isChrome = presCtxt->IsChrome();
++ }
++ }
++ }
+ nscolor rgba;
+- nsresult rv = LookAndFeel::GetColor(LookAndFeel::ColorID(val), &rgba);
++ nsresult rv = LookAndFeel::GetColor(LookAndFeel::ColorID(val), !isChrome,
++ &rgba);
+ if (NS_FAILED(rv)) {
+ return rv;
+ }
+diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp
+index 827585a..d19524e 100644
+--- a/layout/style/nsRuleNode.cpp
++++ b/layout/style/nsRuleNode.cpp
+@@ -768,7 +768,9 @@ static bool SetColor(const nsCSSValue& aValue, const nscolor aParentColor,
+ PRInt32 intValue = aValue.GetIntValue();
+ if (0 <= intValue) {
+ LookAndFeel::ColorID colorID = (LookAndFeel::ColorID) intValue;
+- if (NS_SUCCEEDED(LookAndFeel::GetColor(colorID, &aResult))) {
++ bool useStandinsForNativeColors = !aPresContext->IsChrome();
++ if (NS_SUCCEEDED(LookAndFeel::GetColor(colorID,
++ useStandinsForNativeColors, &aResult))) {
+ result = true;
+ }
+ }
+diff --git a/widget/public/LookAndFeel.h b/widget/public/LookAndFeel.h
+index aae3b28..bb7be3c 100644
+--- a/widget/public/LookAndFeel.h
++++ b/widget/public/LookAndFeel.h
+@@ -445,6 +445,15 @@ public:
+ static nsresult GetColor(ColorID aID, nscolor* aResult);
+
+ /**
++ * This variant of GetColor() take an extra Boolean parameter that allows
++ * the caller to ask that hard-coded color values be substituted for
++ * native colors (used when it is desireable to hide system colors to
++ * avoid system fingerprinting).
++ */
++ static nsresult GetColor(ColorID aID, bool aUseStandinsForNativeColors,
++ nscolor* aResult);
++
++ /**
+ * GetInt() and GetFloat() return a int or float value for aID. The result
+ * might be distance, time, some flags or a int value which has particular
+ * meaning. See each document at definition of each ID for the detail.
+diff --git a/widget/src/xpwidgets/nsXPLookAndFeel.cpp b/widget/src/xpwidgets/nsXPLookAndFeel.cpp
+index 8053432..96937ac 100644
+--- a/widget/src/xpwidgets/nsXPLookAndFeel.cpp
++++ b/widget/src/xpwidgets/nsXPLookAndFeel.cpp
+@@ -502,6 +502,155 @@ nsXPLookAndFeel::IsSpecialColor(ColorID aID, nscolor &aColor)
+ return false;
+ }
+
++bool
++nsXPLookAndFeel::ColorIsNotCSSAccessible(ColorID aID)
++{
++ bool result = false;
++
++ switch (aID) {
++ case eColorID_WindowBackground:
++ case eColorID_WindowForeground:
++ case eColorID_WidgetBackground:
++ case eColorID_WidgetForeground:
++ case eColorID_WidgetSelectBackground:
++ case eColorID_WidgetSelectForeground:
++ case eColorID_Widget3DHighlight:
++ case eColorID_Widget3DShadow:
++ case eColorID_TextBackground:
++ case eColorID_TextForeground:
++ case eColorID_TextSelectBackground:
++ case eColorID_TextSelectForeground:
++ case eColorID_TextSelectBackgroundDisabled:
++ case eColorID_TextSelectBackgroundAttention:
++ case eColorID_TextHighlightBackground:
++ case eColorID_TextHighlightForeground:
++ case eColorID_IMERawInputBackground:
++ case eColorID_IMERawInputForeground:
++ case eColorID_IMERawInputUnderline:
++ case eColorID_IMESelectedRawTextBackground:
++ case eColorID_IMESelectedRawTextForeground:
++ case eColorID_IMESelectedRawTextUnderline:
++ case eColorID_IMEConvertedTextBackground:
++ case eColorID_IMEConvertedTextForeground:
++ case eColorID_IMEConvertedTextUnderline:
++ case eColorID_IMESelectedConvertedTextBackground:
++ case eColorID_IMESelectedConvertedTextForeground:
++ case eColorID_IMESelectedConvertedTextUnderline:
++ case eColorID_SpellCheckerUnderline:
++ result = true;
++ break;
++ default:
++ break;
++ }
++
++ return result;
++}
++
++nscolor
++nsXPLookAndFeel::GetStandinForNativeColor(ColorID aID)
++{
++ nscolor result = NS_RGB(0xFF, 0xFF, 0xFF);
++
++ // The stand-in colors are taken from the Windows 7 Aero theme
++ // except Mac-specific colors which are taken from Mac OS 10.7.
++ switch (aID) {
++ // CSS 2 colors:
++ case eColorID_activeborder: result = NS_RGB(0xB4, 0xB4, 0xB4); break;
++ case eColorID_activecaption: result = NS_RGB(0x99, 0xB4, 0xD1); break;
++ case eColorID_appworkspace: result = NS_RGB(0xAB, 0xAB, 0xAB); break;
++ case eColorID_background: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_buttonface: result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID_buttonhighlight: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID_buttonshadow: result = NS_RGB(0xA0, 0xA0, 0xA0); break;
++ case eColorID_buttontext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_captiontext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_graytext: result = NS_RGB(0x6D, 0x6D, 0x6D); break;
++ case eColorID_highlight: result = NS_RGB(0x33, 0x99, 0xFF); break;
++ case eColorID_highlighttext: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID_inactiveborder: result = NS_RGB(0xF4, 0xF7, 0xFC); break;
++ case eColorID_inactivecaption: result = NS_RGB(0xBF, 0xCD, 0xDB); break;
++ case eColorID_inactivecaptiontext:
++ result = NS_RGB(0x43, 0x4E, 0x54); break;
++ case eColorID_infobackground: result = NS_RGB(0xFF, 0xFF, 0xE1); break;
++ case eColorID_infotext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_menu: result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID_menutext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID_scrollbar: result = NS_RGB(0xC8, 0xC8, 0xC8); break;
++ case eColorID_threeddarkshadow: result = NS_RGB(0x69, 0x69, 0x69); break;
++ case eColorID_threedface: result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID_threedhighlight: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID_threedlightshadow: result = NS_RGB(0xE3, 0xE3, 0xE3); break;
++ case eColorID_threedshadow: result = NS_RGB(0xA0, 0xA0, 0xA0); break;
++ case eColorID_window: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID_windowframe: result = NS_RGB(0x64, 0x64, 0x64); break;
++ case eColorID_windowtext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_buttondefault:
++ result = NS_RGB(0x69, 0x69, 0x69); break;
++ case eColorID__moz_field: result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_fieldtext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_dialog: result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID__moz_dialogtext: result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_dragtargetzone:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_cellhighlight:
++ result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID__moz_cellhighlighttext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_html_cellhighlight:
++ result = NS_RGB(0x33, 0x99, 0xFF); break;
++ case eColorID__moz_html_cellhighlighttext:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_buttonhoverface:
++ result = NS_RGB(0xF0, 0xF0, 0xF0); break;
++ case eColorID__moz_buttonhovertext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_menuhover:
++ result = NS_RGB(0x33, 0x99, 0xFF); break;
++ case eColorID__moz_menuhovertext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_menubartext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_menubarhovertext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_oddtreerow:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_mac_chrome_active:
++ result = NS_RGB(0xB2, 0xB2, 0xB2); break;
++ case eColorID__moz_mac_chrome_inactive:
++ result = NS_RGB(0xE1, 0xE1, 0xE1); break;
++ case eColorID__moz_mac_focusring:
++ result = NS_RGB(0x60, 0x9D, 0xD7); break;
++ case eColorID__moz_mac_menuselect:
++ result = NS_RGB(0x38, 0x75, 0xD7); break;
++ case eColorID__moz_mac_menushadow:
++ result = NS_RGB(0xA3, 0xA3, 0xA3); break;
++ case eColorID__moz_mac_menutextdisable:
++ result = NS_RGB(0x88, 0x88, 0x88); break;
++ case eColorID__moz_mac_menutextselect:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_mac_disabledtoolbartext:
++ result = NS_RGB(0x3F, 0x3F, 0x3F); break;
++ case eColorID__moz_mac_alternateprimaryhighlight:
++ result = NS_RGB(0x38, 0x75, 0xD7); break;
++ case eColorID__moz_mac_secondaryhighlight:
++ result = NS_RGB(0xD4, 0xD4, 0xD4); break;
++ case eColorID__moz_win_mediatext:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_win_communicationstext:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ case eColorID__moz_nativehyperlinktext:
++ result = NS_RGB(0x00, 0x66, 0xCC); break;
++ case eColorID__moz_comboboxtext:
++ result = NS_RGB(0x00, 0x00, 0x00); break;
++ case eColorID__moz_combobox:
++ result = NS_RGB(0xFF, 0xFF, 0xFF); break;
++ default:
++ break;
++ }
++
++ return result;
++}
++
+ //
+ // All these routines will return NS_OK if they have a value,
+ // in which case the nsLookAndFeel should use that value;
+@@ -509,7 +658,8 @@ nsXPLookAndFeel::IsSpecialColor(ColorID aID, nscolor &aColor)
+ // platform-specific nsLookAndFeel should use its own values instead.
+ //
+ nsresult
+-nsXPLookAndFeel::GetColorImpl(ColorID aID, nscolor &aResult)
++nsXPLookAndFeel::GetColorImpl(ColorID aID, bool aUseStandinsForNativeColors,
++ nscolor &aResult)
+ {
+ if (!sInitialized)
+ Init();
+@@ -595,7 +745,10 @@ nsXPLookAndFeel::GetColorImpl(ColorID aID, nscolor &aResult)
+ }
+ #endif // DEBUG_SYSTEM_COLOR_USE
+
+- if (IS_COLOR_CACHED(aID)) {
++ if (aUseStandinsForNativeColors && ColorIsNotCSSAccessible(aID))
++ aUseStandinsForNativeColors = false;
++
++ if (!aUseStandinsForNativeColors && IS_COLOR_CACHED(aID)) {
+ aResult = sCachedColors[aID];
+ return NS_OK;
+ }
+@@ -629,6 +782,12 @@ nsXPLookAndFeel::GetColorImpl(ColorID aID, nscolor &aResult)
+ return NS_OK;
+ }
+
++ if (sUseNativeColors && aUseStandinsForNativeColors)
++ {
++ aResult = GetStandinForNativeColor(aID);
++ return NS_OK;
++ }
++
+ if (sUseNativeColors && NS_SUCCEEDED(NativeGetColor(aID, aResult))) {
+ if ((gfxPlatform::GetCMSMode() == eCMSMode_All) &&
+ !IsSpecialColor(aID, aResult)) {
+@@ -719,7 +878,15 @@ namespace mozilla {
+ nsresult
+ LookAndFeel::GetColor(ColorID aID, nscolor* aResult)
+ {
+- return nsLookAndFeel::GetInstance()->GetColorImpl(aID, *aResult);
++ return nsLookAndFeel::GetInstance()->GetColorImpl(aID, false, *aResult);
++}
++
++nsresult
++LookAndFeel::GetColor(ColorID aID, bool aUseStandinsForNativeColors,
++ nscolor* aResult)
++{
++ return nsLookAndFeel::GetInstance()->GetColorImpl(aID,
++ aUseStandinsForNativeColors, *aResult);
+ }
+
+ // static
+diff --git a/widget/src/xpwidgets/nsXPLookAndFeel.h b/widget/src/xpwidgets/nsXPLookAndFeel.h
+index ce06575..c0ecc32 100644
+--- a/widget/src/xpwidgets/nsXPLookAndFeel.h
++++ b/widget/src/xpwidgets/nsXPLookAndFeel.h
+@@ -84,7 +84,8 @@ public:
+ // otherwise we'll return NS_ERROR_NOT_AVAILABLE, in which case, the
+ // platform-specific nsLookAndFeel should use its own values instead.
+ //
+- nsresult GetColorImpl(ColorID aID, nscolor &aResult);
++ nsresult GetColorImpl(ColorID aID, bool aUseStandinsForNativeColors,
++ nscolor &aResult);
+ virtual nsresult GetIntImpl(IntID aID, PRInt32 &aResult);
+ virtual nsresult GetFloatImpl(FloatID aID, float &aResult);
+
+@@ -111,6 +112,8 @@ protected:
+ void InitColorFromPref(PRInt32 aIndex);
+ virtual nsresult NativeGetColor(ColorID aID, nscolor &aResult) = 0;
+ bool IsSpecialColor(ColorID aID, nscolor &aColor);
++ bool ColorIsNotCSSAccessible(ColorID aID);
++ nscolor GetStandinForNativeColor(ColorID aID);
+
+ static int OnPrefChanged(const char* aPref, void* aClosure);
+
+--
+1.7.5.4
+
1
0

[torbutton/master] Bug 5856: Disable JS hooks for 10.0.8-ESR.
by mikeperry@torproject.org 09 Oct '12
by mikeperry@torproject.org 09 Oct '12
09 Oct '12
commit 0c062520a45178cd5f85a7ec366def98a1be86df
Author: Mike Perry <mikeperry-git(a)fscked.org>
Date: Tue Oct 9 14:38:34 2012 -0700
Bug 5856: Disable JS hooks for 10.0.8-ESR.
We have a direct patch for TBB now, and a backported fix to 10.0.8-ESR broke our
hooks anyways.
---
src/chrome/content/torbutton.js | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 1f82836..e629102 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -24,6 +24,7 @@ var m_tb_ff35 = false;
var m_tb_ff36 = false;
var m_tb_ff4 = false;
var m_tb_ff15 = false;
+var m_tb_ff10_8 = false;
var m_tb_tbb = false;
var m_tb_control_port = null;
@@ -526,6 +527,13 @@ function torbutton_init() {
m_tb_ff15 = false;
}
+ if(versionChecker.compare(appInfo.version, "10.0.8") >= 0
+ && versionChecker.compare(appInfo.version, "11.0a1") < 0) {
+ m_tb_ff10_8 = true;
+ } else {
+ m_tb_ff10_8 = false;
+ }
+
if(versionChecker.compare(appInfo.version, "4.0a1") >= 0) {
m_tb_ff4 = true;
} else {
@@ -4709,8 +4717,9 @@ function torbutton_update_tags(win, new_loc) {
// Bug 1506 P1: All of our JS hooks should be redone in patch form (#5856)
// Also, tagging can be deprecated.
function torbutton_hookdoc(win, doc, state_change, referrer) {
- /* Firefox 15 broke the last of our JS hooks :/ */
- if (m_tb_ff15) {
+ /* Firefox 15 broke the last of our JS hooks.
+ * So did 10.0.8-ESR... */
+ if (m_tb_ff15 || m_tb_ff10_8) {
return;
}
1
0