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

[tor-browser-build/master] Bug 28469: Fix unsupported libbacktrace in Rust 1.26
by gk@torproject.org 16 Nov '18
by gk@torproject.org 16 Nov '18
16 Nov '18
commit d4215cdbc472573bafe020532ebfcfb491e7615f
Author: sisbell <shane.isbell(a)gmail.com>
Date: Fri Nov 16 07:19:03 2018 +0000
Bug 28469: Fix unsupported libbacktrace in Rust 1.26
---
...e-dl_iterate_phdr-is-undefined-on-Android.patch | 34 +++++++++++++++++
projects/rust/build | 5 +++
projects/rust/config | 6 ++-
projects/rust/replace_pagesize_in_mmap.patch | 44 ++++++++++++++++++++++
4 files changed, 88 insertions(+), 1 deletion(-)
diff --git a/projects/rust/0001-Make-sure-dl_iterate_phdr-is-undefined-on-Android.patch b/projects/rust/0001-Make-sure-dl_iterate_phdr-is-undefined-on-Android.patch
new file mode 100644
index 0000000..75cd657
--- /dev/null
+++ b/projects/rust/0001-Make-sure-dl_iterate_phdr-is-undefined-on-Android.patch
@@ -0,0 +1,34 @@
+From 4fa67c8a014ac10558be71edec9048851ca7a02d Mon Sep 17 00:00:00 2001
+From: Georg Koppen <gk(a)torproject.org>
+Date: Thu, 15 Nov 2018 19:04:46 +0000
+Subject: [PATCH] Make sure `dl_iterate_phdr` is undefined on Android
+
+If we build with API < 21 we'll run into undefined reference errors.
+We follow the Rust people who ran into similar issues when
+upgrading libbacktrace for 1.28.0 in making sure `dl_iterate_phdr` is
+not defined for Android.
+
+diff --git a/src/libbacktrace/configure b/src/libbacktrace/configure
+index 8bdb29d256..8941fcd2b0 100755
+--- a/src/libbacktrace/configure
++++ b/src/libbacktrace/configure
+@@ -12397,7 +12397,15 @@ rm -f conftest*
+ have_dl_iterate_phdr=no ;;
+ esac
+ else
+- ac_fn_c_check_func "$LINENO" "dl_iterate_phdr" "ac_cv_func_dl_iterate_phdr"
++ case "${host}" in
++ *-*-androideabi*)
++ # Avoid dl_iterate_phdr on older Android API (which we use),
++ # as defining it causes undefined reference errors when
++ # compiling Firefox later on.
++ have_dl_iterate_phdr=no ;;
++ *) ac_fn_c_check_func "$LINENO" "dl_iterate_phdr" "ac_cv_func_dl_iterate_phdr" ;;
++ esac
++
+ if test "x$ac_cv_func_dl_iterate_phdr" = x""yes; then :
+ have_dl_iterate_phdr=yes
+ else
+--
+2.19.1
+
diff --git a/projects/rust/build b/projects/rust/build
index 7ae3073..12f012a 100644
--- a/projects/rust/build
+++ b/projects/rust/build
@@ -62,6 +62,11 @@ cd /var/tmp/build/rustc-[% c('version') %]-src
patch -p1 < $rootdir/unwind.patch
[% END %]
+[% IF c("var/android") %]
+ patch -p1 < $rootdir/0001-Make-sure-dl_iterate_phdr-is-undefined-on-Android.patch
+ patch -p1 < $rootdir/replace_pagesize_in_mmap.patch
+[% END %]
+
mkdir build
cd build
../configure --prefix=$distdir [% c("var/configure_opt") %]
diff --git a/projects/rust/config b/projects/rust/config
index 83ae690..99d1177 100644
--- a/projects/rust/config
+++ b/projects/rust/config
@@ -22,7 +22,7 @@ targets:
- libssl-dev
- pkg-config
- zlib1g-dev
- configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=armv7-linux-androideabi --set=target.armv7-linux-androideabi.ar=$ANDROID_NDK_HOME/arm/bin/arm-linux-androideabi-ar --set=target.armv7-linux-androideabi.linker=$ANDROID_NDK_HOME/arm/bin/arm-linux-androideabi-clang --set=target.armv7-linux-androideabi.cc=$ANDROID_NDK_HOME/arm/bin/arm-linux-androideabi-gcc
+ configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=armv7-linux-androideabi --set=target.armv7-linux-androideabi.cc=$ANDROID_NDK_HOME/arm/bin/arm-linux-androideabi-gcc
linux:
var:
@@ -90,3 +90,7 @@ input_files:
gpg_keyring: rust.gpg
- filename: unwind.patch
enable: '[% c("var/windows-i686") %]'
+ - filename: 0001-Make-sure-dl_iterate_phdr-is-undefined-on-Android.patch
+ enable: '[% c("var/android") %]'
+ - filename: replace_pagesize_in_mmap.patch
+ enable: '[% c("var/android") %]'
diff --git a/projects/rust/replace_pagesize_in_mmap.patch b/projects/rust/replace_pagesize_in_mmap.patch
new file mode 100644
index 0000000..598f190
--- /dev/null
+++ b/projects/rust/replace_pagesize_in_mmap.patch
@@ -0,0 +1,44 @@
+diff --git a/src/libbacktrace/mmap.c b/src/libbacktrace/mmap.c
+index 138ef70711..e3c4cd2643 100644
+--- a/src/libbacktrace/mmap.c
++++ b/src/libbacktrace/mmap.c
+@@ -140,7 +140,7 @@ backtrace_alloc (struct backtrace_state *state,
+ {
+ /* Allocate a new page. */
+
+- pagesize = getpagesize ();
++ pagesize = sysconf(_SC_PAGESIZE);
+ asksize = (size + pagesize - 1) & ~ (pagesize - 1);
+ page = mmap (NULL, asksize, PROT_READ | PROT_WRITE,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+@@ -181,7 +181,7 @@ backtrace_free (struct backtrace_state *state, void *addr, size_t size,
+ {
+ size_t pagesize;
+
+- pagesize = getpagesize ();
++ pagesize = sysconf(_SC_PAGESIZE);
+ if (((uintptr_t) addr & (pagesize - 1)) == 0
+ && (size & (pagesize - 1)) == 0)
+ {
+@@ -226,7 +226,7 @@ backtrace_vector_grow (struct backtrace_state *state,size_t size,
+ size_t alc;
+ void *base;
+
+- pagesize = getpagesize ();
++ pagesize = sysconf(_SC_PAGESIZE);
+ alc = vec->size + size;
+ if (vec->size == 0)
+ alc = 16 * size;
+diff --git a/src/libbacktrace/mmapio.c b/src/libbacktrace/mmapio.c
+index dfdaf6fa52..5b23003090 100644
+--- a/src/libbacktrace/mmapio.c
++++ b/src/libbacktrace/mmapio.c
+@@ -60,7 +60,7 @@ backtrace_get_view (struct backtrace_state *state ATTRIBUTE_UNUSED,
+ off_t pageoff;
+ void *map;
+
+- pagesize = getpagesize ();
++ pagesize = sysconf(_SC_PAGESIZE);
+ inpage = offset % pagesize;
+ pageoff = offset - inpage;
+
1
0

[tor-browser/tor-browser-60.3.0esr-8.5-1] Bug 22343: Make 'Save Page As' obey first-party isolation
by gk@torproject.org 15 Nov '18
by gk@torproject.org 15 Nov '18
15 Nov '18
commit c2b7e89ecaf3ea6a14a650a0a71c6dc3ebb02c50
Author: Arthur Edelstein <arthuredelstein(a)gmail.com>
Date: Tue May 30 10:25:34 2017 -0700
Bug 22343: Make 'Save Page As' obey first-party isolation
Fixes:
* File menu:
- Save Page As
* Context menu in content pages:
- Save Page As
- Save Image As
- Save Video As
- Save Link As
- Save Frame As
* Page Info "Media" Panel:
- Save As
---
browser/base/content/browser.js | 2 +-
browser/base/content/nsContextMenu.js | 39 ++++++++++++++++++--------
browser/base/content/pageinfo/pageInfo.js | 5 ++--
browser/base/content/utilityOverlay.js | 6 ++--
dom/webbrowserpersist/nsIWebBrowserPersist.idl | 9 +++++-
dom/webbrowserpersist/nsWebBrowserPersist.cpp | 18 ++++++++++--
dom/webbrowserpersist/nsWebBrowserPersist.h | 2 ++
mobile/android/chrome/content/browser.js | 6 ++--
netwerk/base/LoadContextInfo.cpp | 18 ++++++++++--
toolkit/components/browser/nsWebBrowser.cpp | 12 ++++++++
toolkit/content/contentAreaUtils.js | 32 +++++++++++++++------
11 files changed, 115 insertions(+), 34 deletions(-)
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 0fc6a72daf66..5eed34e08086 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -6175,7 +6175,7 @@ function handleLinkClick(event, href, linkNode) {
if (where == "save") {
saveURL(href, linkNode ? gatherTextUnder(linkNode) : "", null, true,
- true, doc.documentURIObject, doc);
+ true, doc.documentURIObject, doc, undefined, doc.nodePrincipal);
event.preventDefault();
return true;
}
diff --git a/browser/base/content/nsContextMenu.js b/browser/base/content/nsContextMenu.js
index 368d0475ac34..37ebde22ea07 100644
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -989,9 +989,11 @@ nsContextMenu.prototype = {
let onMessage = (message) => {
mm.removeMessageListener("ContextMenu:SaveVideoFrameAsImage:Result", onMessage);
let dataURL = message.data.dataURL;
+ const principal = Services.scriptSecurityManager.createCodebasePrincipal(
+ makeURI(dataURL), this.principal.originAttributes);
saveImageURL(dataURL, name, "SaveImageTitle", true, false,
document.documentURIObject, null, null, null,
- isPrivate);
+ isPrivate, principal);
};
mm.addMessageListener("ContextMenu:SaveVideoFrameAsImage:Result", onMessage);
},
@@ -1063,7 +1065,7 @@ nsContextMenu.prototype = {
// Helper function to wait for appropriate MIME-type headers and
// then prompt the user with a file picker
saveHelper(linkURL, linkText, dialogTitle, bypassCache, doc, docURI,
- windowID, linkDownload, isContentWindowPrivate) {
+ windowID, linkDownload, isContentWindowPrivate, contentPrincipal) {
// canonical def in nsURILoader.h
const NS_ERROR_SAVE_LINK_AS_TIMEOUT = 0x805d0020;
@@ -1116,7 +1118,7 @@ nsContextMenu.prototype = {
// do it the old fashioned way, which will pick the best filename
// it can without waiting.
saveURL(linkURL, linkText, dialogTitle, bypassCache, false, docURI,
- doc, isContentWindowPrivate);
+ doc, isContentWindowPrivate, contentPrincipal);
}
if (this.extListener)
this.extListener.onStopRequest(aRequest, aContext, aStatusCode);
@@ -1156,10 +1158,13 @@ nsContextMenu.prototype = {
}
};
+ const principal = Services.scriptSecurityManager.createCodebasePrincipal(
+ makeURI(linkURL), this.principal.originAttributes);
+
// setting up a new channel for 'right click - save link as ...'
var channel = NetUtil.newChannel({
uri: makeURI(linkURL),
- loadingPrincipal: this.principal,
+ loadingPrincipal: principal,
contentPolicyType: Ci.nsIContentPolicy.TYPE_SAVEAS_DOWNLOAD,
securityFlags: Ci.nsILoadInfo.SEC_ALLOW_CROSS_ORIGIN_DATA_INHERITS,
});
@@ -1201,14 +1206,17 @@ nsContextMenu.prototype = {
// Save URL of clicked-on link.
saveLink() {
- urlSecurityCheck(this.linkURL, this.principal);
+ const principal = Services.scriptSecurityManager.createCodebasePrincipal(
+ makeURI(this.linkURL), this.principal.originAttributes);
+ urlSecurityCheck(this.linkURL, principal);
let isContentWindowPrivate = this.isRemote ? this.ownerDoc.isPrivate : undefined;
this.saveHelper(this.linkURL, this.linkTextStr, null, true, this.ownerDoc,
gContextMenuContentData.documentURIObject,
this.frameOuterWindowID,
this.linkDownload,
- isContentWindowPrivate);
+ isContentWindowPrivate,
+ principal);
},
// Backwards-compatibility wrapper
@@ -1223,23 +1231,32 @@ nsContextMenu.prototype = {
let isContentWindowPrivate = this.isRemote ? this.ownerDoc.isPrivate : undefined;
let referrerURI = gContextMenuContentData.documentURIObject;
let isPrivate = PrivateBrowsingUtils.isBrowserPrivate(this.browser);
+ let thisPrincipal = this.principal;
if (this.onCanvas) {
// Bypass cache, since it's a data: URL.
this._canvasToBlobURL(this.target).then(function(blobURL) {
+ const principal = Services.scriptSecurityManager.createCodebasePrincipal(
+ makeURI(blobURL), thisPrincipal.originAttributes);
saveImageURL(blobURL, "canvas.png", "SaveImageTitle",
true, false, referrerURI, null, null, null,
- isPrivate);
+ isPrivate, principal);
}, Cu.reportError);
} else if (this.onImage) {
- urlSecurityCheck(this.mediaURL, this.principal);
+ const principal = Services.scriptSecurityManager.createCodebasePrincipal(
+ makeURI(this.mediaURL), thisPrincipal.originAttributes);
+ urlSecurityCheck(this.mediaURL, principal);
saveImageURL(this.mediaURL, null, "SaveImageTitle", false,
false, referrerURI, null, gContextMenuContentData.contentType,
- gContextMenuContentData.contentDisposition, isPrivate);
+ gContextMenuContentData.contentDisposition, isPrivate,
+ principal);
} else if (this.onVideo || this.onAudio) {
- urlSecurityCheck(this.mediaURL, this.principal);
+ const principal = Services.scriptSecurityManager.createCodebasePrincipal(
+ makeURI(this.mediaURL), thisPrincipal.originAttributes);
+ urlSecurityCheck(this.mediaURL, principal);
var dialogTitle = this.onVideo ? "SaveVideoTitle" : "SaveAudioTitle";
this.saveHelper(this.mediaURL, null, dialogTitle, false, doc, referrerURI,
- this.frameOuterWindowID, "", isContentWindowPrivate);
+ this.frameOuterWindowID, "", isContentWindowPrivate,
+ principal);
}
},
diff --git a/browser/base/content/pageinfo/pageInfo.js b/browser/base/content/pageinfo/pageInfo.js
index 86f548c74494..efe24f7487d9 100644
--- a/browser/base/content/pageinfo/pageInfo.js
+++ b/browser/base/content/pageinfo/pageInfo.js
@@ -696,7 +696,7 @@ function saveMedia() {
titleKey = "SaveAudioTitle";
saveURL(url, null, titleKey, false, false, makeURI(item.baseURI),
- null, gDocInfo.isContentWindowPrivate);
+ null, gDocInfo.isContentWindowPrivate, gDocInfo.principal);
}
} else {
selectSaveFolder(function(aDirectory) {
@@ -704,7 +704,8 @@ function saveMedia() {
var saveAnImage = function(aURIString, aChosenData, aBaseURI) {
uniqueFile(aChosenData.file);
internalSave(aURIString, null, null, null, null, false, "SaveImageTitle",
- aChosenData, aBaseURI, null, false, null, gDocInfo.isContentWindowPrivate);
+ aChosenData, aBaseURI, null, false, null, gDocInfo.isContentWindowPrivate,
+ gDocInfo.principal);
};
for (var i = 0; i < rowArray.length; i++) {
diff --git a/browser/base/content/utilityOverlay.js b/browser/base/content/utilityOverlay.js
index b73a01a0b0f3..4cd7d91e4e9a 100644
--- a/browser/base/content/utilityOverlay.js
+++ b/browser/base/content/utilityOverlay.js
@@ -258,14 +258,16 @@ function openLinkIn(url, where, params) {
// ContentClick.jsm passes isContentWindowPrivate for saveURL instead of passing a CPOW initiatingDoc
if ("isContentWindowPrivate" in params) {
- saveURL(url, null, null, true, true, aNoReferrer ? null : aReferrerURI, null, params.isContentWindowPrivate);
+ saveURL(url, null, null, true, true, aNoReferrer ? null : aReferrerURI,
+ null, params.isContentWindowPrivate,
+ aPrincipal || aTriggeringPrincipal);
} else {
if (!aInitiatingDoc) {
Cu.reportError("openUILink/openLinkIn was called with " +
"where == 'save' but without initiatingDoc. See bug 814264.");
return;
}
- saveURL(url, null, null, true, true, aNoReferrer ? null : aReferrerURI, aInitiatingDoc);
+ saveURL(url, null, null, true, true, aNoReferrer ? null : aReferrerURI, aInitiatingDoc, params.isContentWindowPrivate, aPrincipal || aTriggeringPrincipal);
}
return;
}
diff --git a/dom/webbrowserpersist/nsIWebBrowserPersist.idl b/dom/webbrowserpersist/nsIWebBrowserPersist.idl
index 8de84f5e2904..62ac1c1cd7bd 100644
--- a/dom/webbrowserpersist/nsIWebBrowserPersist.idl
+++ b/dom/webbrowserpersist/nsIWebBrowserPersist.idl
@@ -13,11 +13,12 @@ interface nsIWebProgressListener;
interface nsIFile;
interface nsIChannel;
interface nsILoadContext;
+interface nsIPrincipal;
/**
* Interface for persisting DOM documents and URIs to local or remote storage.
*/
-[scriptable, uuid(8cd752a4-60b1-42c3-a819-65c7a1138a28)]
+[scriptable, uuid(ccdbc750-be09-4f11-bb01-4e0a4db76c41)]
interface nsIWebBrowserPersist : nsICancelable
{
/** No special persistence behaviour. */
@@ -112,6 +113,12 @@ interface nsIWebBrowserPersist : nsICancelable
attribute nsIWebProgressListener progressListener;
/**
+ * This attribute can be used to set the loading principal
+ * of the document or URI to be persisted.
+ */
+ attribute nsIPrincipal loadingPrincipal;
+
+ /**
* Save the specified URI to file.
*
* @param aURI URI to save to file. Some implementations of this interface
diff --git a/dom/webbrowserpersist/nsWebBrowserPersist.cpp b/dom/webbrowserpersist/nsWebBrowserPersist.cpp
index fd6d9d0d9315..4f49b63475f3 100644
--- a/dom/webbrowserpersist/nsWebBrowserPersist.cpp
+++ b/dom/webbrowserpersist/nsWebBrowserPersist.cpp
@@ -277,6 +277,7 @@ const char *kWebBrowserPersistStringBundle =
nsWebBrowserPersist::nsWebBrowserPersist() :
mCurrentDataPathIsRelative(false),
mCurrentThingsToPersist(0),
+ mLoadingPrincipal(nsContentUtils::GetSystemPrincipal()),
mFirstAndOnlyUse(true),
mSavingDocument(false),
mCancel(false),
@@ -413,6 +414,19 @@ NS_IMETHODIMP nsWebBrowserPersist::SetProgressListener(
return NS_OK;
}
+NS_IMETHODIMP nsWebBrowserPersist::GetLoadingPrincipal(nsIPrincipal** loadingPrincipal)
+{
+ *loadingPrincipal = mLoadingPrincipal;
+ return NS_OK;
+}
+
+NS_IMETHODIMP nsWebBrowserPersist::SetLoadingPrincipal(nsIPrincipal* loadingPrincipal)
+{
+ mLoadingPrincipal = loadingPrincipal ? loadingPrincipal :
+ nsContentUtils::GetSystemPrincipal();
+ return NS_OK;
+}
+
NS_IMETHODIMP nsWebBrowserPersist::SaveURI(
nsIURI *aURI, nsISupports *aCacheKey,
nsIURI *aReferrer, uint32_t aReferrerPolicy,
@@ -1385,7 +1399,7 @@ nsresult nsWebBrowserPersist::SaveURIInternal(
nsCOMPtr<nsIChannel> inputChannel;
rv = NS_NewChannel(getter_AddRefs(inputChannel),
aURI,
- nsContentUtils::GetSystemPrincipal(),
+ mLoadingPrincipal,
nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL,
nsIContentPolicy::TYPE_OTHER,
nullptr, // aPerformanceStorage
@@ -2756,7 +2770,7 @@ nsWebBrowserPersist::CreateChannelFromURI(nsIURI *aURI, nsIChannel **aChannel)
rv = NS_NewChannel(aChannel,
aURI,
- nsContentUtils::GetSystemPrincipal(),
+ mLoadingPrincipal,
nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_IS_NULL,
nsIContentPolicy::TYPE_OTHER);
NS_ENSURE_SUCCESS(rv, rv);
diff --git a/dom/webbrowserpersist/nsWebBrowserPersist.h b/dom/webbrowserpersist/nsWebBrowserPersist.h
index 17b570d783e7..f95300be12cb 100644
--- a/dom/webbrowserpersist/nsWebBrowserPersist.h
+++ b/dom/webbrowserpersist/nsWebBrowserPersist.h
@@ -147,6 +147,8 @@ private:
nsCOMPtr<nsIMIMEService> mMIMEService;
nsCOMPtr<nsIURI> mURI;
nsCOMPtr<nsIWebProgressListener> mProgressListener;
+ nsCOMPtr<nsIPrincipal> mLoadingPrincipal;
+
/**
* Progress listener for 64-bit values; this is the same object as
* mProgressListener, but is a member to avoid having to qi it for each
diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js
index d081fde9b20e..51fe1422acc5 100644
--- a/mobile/android/chrome/content/browser.js
+++ b/mobile/android/chrome/content/browser.js
@@ -886,10 +886,10 @@ var BrowserApp = {
if (!permissionGranted) {
return;
}
-
+ let doc = aTarget.ownerDocument;
ContentAreaUtils.saveImageURL(aTarget.currentRequestFinalURI.spec, null, "SaveImageTitle",
- false, true, aTarget.ownerDocument.documentURIObject,
- aTarget.ownerDocument);
+ false, true, doc.documentURIObject,
+ null, null, null, doc.isPrivate, doc.nodePrincipal);
});
});
diff --git a/netwerk/base/LoadContextInfo.cpp b/netwerk/base/LoadContextInfo.cpp
index 79f870e8d20d..1218345b63ed 100644
--- a/netwerk/base/LoadContextInfo.cpp
+++ b/netwerk/base/LoadContextInfo.cpp
@@ -121,8 +121,6 @@ GetLoadContextInfo(nsIChannel * aChannel)
{
nsresult rv;
- DebugOnly<bool> pb = NS_UsePrivateBrowsing(aChannel);
-
bool anon = false;
nsLoadFlags loadFlags;
rv = aChannel->GetLoadFlags(&loadFlags);
@@ -132,7 +130,21 @@ GetLoadContextInfo(nsIChannel * aChannel)
OriginAttributes oa;
NS_GetOriginAttributes(aChannel, oa);
- MOZ_ASSERT(pb == (oa.mPrivateBrowsingId > 0));
+
+#ifdef DEBUG
+ nsCOMPtr<nsILoadInfo> loadInfo = aChannel->GetLoadInfo();
+ if (loadInfo) {
+ nsCOMPtr<nsIPrincipal> principal = loadInfo->LoadingPrincipal();
+ if (principal) {
+ bool chrome;
+ principal->GetIsSystemPrincipal(&chrome);
+ if (!chrome) {
+ bool pb = NS_UsePrivateBrowsing(aChannel);
+ MOZ_ASSERT(pb == (oa.mPrivateBrowsingId > 0));
+ }
+ }
+ }
+#endif
return new LoadContextInfo(anon, oa);
}
diff --git a/toolkit/components/browser/nsWebBrowser.cpp b/toolkit/components/browser/nsWebBrowser.cpp
index 40ac82210502..ff1e728243b4 100644
--- a/toolkit/components/browser/nsWebBrowser.cpp
+++ b/toolkit/components/browser/nsWebBrowser.cpp
@@ -997,6 +997,18 @@ nsWebBrowser::SetProgressListener(nsIWebProgressListener* aProgressListener)
}
NS_IMETHODIMP
+nsWebBrowser::GetLoadingPrincipal(nsIPrincipal** loadingPrincipal)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+NS_IMETHODIMP
+nsWebBrowser::SetLoadingPrincipal(nsIPrincipal* loadingPrincipal)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+NS_IMETHODIMP
nsWebBrowser::SaveURI(nsIURI* aURI,
nsISupports* aCacheKey,
nsIURI* aReferrer,
diff --git a/toolkit/content/contentAreaUtils.js b/toolkit/content/contentAreaUtils.js
index 48cf448798a5..e213a0e4333e 100644
--- a/toolkit/content/contentAreaUtils.js
+++ b/toolkit/content/contentAreaUtils.js
@@ -62,14 +62,14 @@ function forbidCPOW(arg, func, argname) {
// - A linked document using Alt-click Save Link As...
//
function saveURL(aURL, aFileName, aFilePickerTitleKey, aShouldBypassCache,
- aSkipPrompt, aReferrer, aSourceDocument, aIsContentWindowPrivate) {
+ aSkipPrompt, aReferrer, aSourceDocument, aIsContentWindowPrivate,
+ aContentPrincipal) {
forbidCPOW(aURL, "saveURL", "aURL");
forbidCPOW(aReferrer, "saveURL", "aReferrer");
// Allow aSourceDocument to be a CPOW.
-
internalSave(aURL, null, aFileName, null, null, aShouldBypassCache,
aFilePickerTitleKey, null, aReferrer, aSourceDocument,
- aSkipPrompt, null, aIsContentWindowPrivate);
+ aSkipPrompt, null, aIsContentWindowPrivate, aContentPrincipal);
}
// Just like saveURL, but will get some info off the image before
@@ -109,10 +109,12 @@ const nsISupportsCString = Ci.nsISupportsCString;
* @param aIsContentWindowPrivate (bool)
* Whether or not the containing window is in private browsing mode.
* Does not need to be provided is aDoc is passed.
+ * @param aContentPrincipal [optional]
+ * The principal to be used for fetching and saving the target URL.
*/
function saveImageURL(aURL, aFileName, aFilePickerTitleKey, aShouldBypassCache,
aSkipPrompt, aReferrer, aDoc, aContentType, aContentDisp,
- aIsContentWindowPrivate) {
+ aIsContentWindowPrivate, aContentPrincipal) {
forbidCPOW(aURL, "saveImageURL", "aURL");
forbidCPOW(aReferrer, "saveImageURL", "aReferrer");
@@ -156,7 +158,8 @@ function saveImageURL(aURL, aFileName, aFilePickerTitleKey, aShouldBypassCache,
internalSave(aURL, null, aFileName, aContentDisp, aContentType,
aShouldBypassCache, aFilePickerTitleKey, null, aReferrer,
- null, aSkipPrompt, null, aIsContentWindowPrivate);
+ null, aSkipPrompt, null, aIsContentWindowPrivate,
+ aContentPrincipal);
}
// This is like saveDocument, but takes any browser/frame-like element
@@ -170,7 +173,7 @@ function saveBrowser(aBrowser, aSkipPrompt, aOuterWindowID = 0) {
let stack = Components.stack.caller;
persistable.startPersistence(aOuterWindowID, {
onDocumentReady(document) {
- saveDocument(document, aSkipPrompt);
+ saveDocument(document, aSkipPrompt, aBrowser.contentPrincipal);
},
onError(status) {
throw new Components.Exception("saveBrowser failed asynchronously in startPersistence",
@@ -186,7 +189,9 @@ function saveBrowser(aBrowser, aSkipPrompt, aOuterWindowID = 0) {
// case "save as" modes that serialize the document's DOM are
// unavailable. This is a temporary measure for the "Save Frame As"
// command (bug 1141337) and pre-e10s add-ons.
-function saveDocument(aDocument, aSkipPrompt) {
+//
+// aContentPrincipal is the principal for downloading and saving the document.
+function saveDocument(aDocument, aSkipPrompt, aContentPrincipal) {
if (!aDocument)
throw "Must have a document when calling saveDocument";
@@ -241,7 +246,7 @@ function saveDocument(aDocument, aSkipPrompt) {
internalSave(aDocument.documentURI, aDocument, null, contentDisposition,
aDocument.contentType, false, null, null,
aDocument.referrer ? makeURI(aDocument.referrer) : null,
- aDocument, aSkipPrompt, cacheKey);
+ aDocument, aSkipPrompt, cacheKey, undefined, aContentPrincipal);
}
function DownloadListener(win, transfer) {
@@ -350,11 +355,13 @@ XPCOMUtils.defineConstant(this, "kSaveAsType_Text", kSaveAsType_Text);
* This parameter is provided when the aInitiatingDocument is not a
* real document object. Stores whether aInitiatingDocument.defaultView
* was private or not.
+ * @param aContentPrincipal [optional]
+ * The principal to be used for fetching and saving the target URL.
*/
function internalSave(aURL, aDocument, aDefaultFileName, aContentDisposition,
aContentType, aShouldBypassCache, aFilePickerTitleKey,
aChosenData, aReferrer, aInitiatingDocument, aSkipPrompt,
- aCacheKey, aIsContentWindowPrivate) {
+ aCacheKey, aIsContentWindowPrivate, aContentPrincipal) {
forbidCPOW(aURL, "internalSave", "aURL");
forbidCPOW(aReferrer, "internalSave", "aReferrer");
forbidCPOW(aCacheKey, "internalSave", "aCacheKey");
@@ -423,6 +430,7 @@ function internalSave(aURL, aDocument, aDefaultFileName, aContentDisposition,
let nonCPOWDocument =
aDocument && !Cu.isCrossProcessWrapper(aDocument);
+
let isPrivate = aIsContentWindowPrivate;
if (isPrivate === undefined) {
isPrivate = aInitiatingDocument instanceof Ci.nsIDOMDocument
@@ -440,6 +448,7 @@ function internalSave(aURL, aDocument, aDefaultFileName, aContentDisposition,
sourcePostData: nonCPOWDocument ? getPostData(aDocument) : null,
bypassCache: aShouldBypassCache,
isPrivate,
+ loadingPrincipal: aContentPrincipal,
};
// Start the actual save process
@@ -476,10 +485,15 @@ function internalSave(aURL, aDocument, aDefaultFileName, aContentDisposition,
* If true, the document will always be refetched from the server
* @param persistArgs.isPrivate
* Indicates whether this is taking place in a private browsing context.
+ * @param persistArgs.loadingPrincipal
+ * The principal assigned to the document being saved.
*/
function internalPersist(persistArgs) {
var persist = makeWebBrowserPersist();
+ if (["http", "https", "ftp"].includes(persistArgs.sourceURI.scheme)) {
+ persist.loadingPrincipal = persistArgs.loadingPrincipal;
+ }
// Calculate persist flags.
const nsIWBP = Ci.nsIWebBrowserPersist;
const flags = nsIWBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES |
1
0

[tor-browser-build/master] Bug 28436: Update link to gn cross_compiles.md.
by boklm@torproject.org 14 Nov '18
by boklm@torproject.org 14 Nov '18
14 Nov '18
commit c50a316848b6efad58644a1c85594b8e92c9b2ff
Author: David Fifield <david(a)bamsoftware.com>
Date: Tue Nov 13 16:17:07 2018 -0700
Bug 28436: Update link to gn cross_compiles.md.
---
projects/webrtc/build | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/webrtc/build b/projects/webrtc/build
index d3975b3..5a6cece 100644
--- a/projects/webrtc/build
+++ b/projects/webrtc/build
@@ -92,7 +92,7 @@ EOF
export GN_ARGS=""
# For a list of all possible GN args, do "gn gen out/Release; gn args --list out/Release".
-# https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/cross…
+# https://gn.googlesource.com/gn/+/master/docs/cross_compiles.md
# Not debug.
GN_ARGS+=" is_debug=false"
# There are warnings from unused returns.
1
0
commit c4f92596551ae6651a25be34f330a14776d2e09e
Author: Georg Koppen <gk(a)torproject.org>
Date: Wed Nov 14 15:11:31 2018 +0000
Translations update
---
src/chrome/locale/de/browserOnboarding.properties | 16 ++++++++--------
src/chrome/locale/ko/torbutton.dtd | 22 +++++++++++-----------
2 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/src/chrome/locale/de/browserOnboarding.properties b/src/chrome/locale/de/browserOnboarding.properties
index 1243128c..d57b3f15 100644
--- a/src/chrome/locale/de/browserOnboarding.properties
+++ b/src/chrome/locale/de/browserOnboarding.properties
@@ -15,11 +15,11 @@ onboarding.tour-tor-privacy.button=Öffne Tor-Netzwerk
onboarding.tour-tor-network=Tor-Netzwerk
onboarding.tour-tor-network.title=Bereise ein dezentrales Netzwerk.
onboarding.tour-tor-network.description=Der Tor Browser verbindet sich mit dem Tor-Netzwerk, das von tausenden Freiwilligen betrieben wird. Anders als bei einem VPN gibt es keinen zentralen Punkt, dem vertraut werden muss, um das Internet privat zu nutzen.
-onboarding.tour-tor-network.button=Circuit-Ansicht öffnen
+onboarding.tour-tor-network.button=Kanal-Ansicht öffnen
-onboarding.tour-tor-circuit-display=Circuit-Ansicht
+onboarding.tour-tor-circuit-display=Kanal-Ansicht
onboarding.tour-tor-circuit-display.title=Zeige deinen Pfad
-onboarding.tour-tor-circuit-display.description=Für jede Webseite wandern Anfragen und Antworten mehrfach verschlüsselt über drei Server (Relays) um die Welt. Keine Webseite weiß, woher die Verbindung ursprünglich kommt. Um eine Webseite über einen neuen Pfad erneut zu laden, klicke auf das Informations-Symbol in der Adressleiste und wähle "Neuer Pfad für diese Seite".
+onboarding.tour-tor-circuit-display.description=Für jede Webseite wandern Anfragen und Antworten mehrfach verschlüsselt über drei Server (Relays) um die Welt. Keine Webseite weiß, woher die Verbindung ursprünglich kommt. Um eine Webseite über einen neuen Kanal erneut zu laden, öffne die Kanal-Ansicht und klicke "Neuer Kanal für diese Seite".
onboarding.tour-tor-circuit-display.button=Meinen Pfad sehen
onboarding.tour-tor-security=Sicherheit
@@ -44,11 +44,11 @@ onboarding.tor-circuit-display.one-of-three=1 von 3
onboarding.tor-circuit-display.two-of-three=2 von 3
onboarding.tor-circuit-display.three-of-three=3 von 3
-onboarding.tor-circuit-display.intro.title=Wie funktionieren Circuits?
-onboarding.tor-circuit-display.intro.msg=Circuits bestehen aus zufällig zugeordneten Relays, d.h. Computern auf der ganzen Welt, die konfiguriert sind, um Torverkehr weiterzuleiten. Circuits ermöglichen es Ihnen, privat zu surfen und sich mit Onion-Diensten zu verbinden.\n
+onboarding.tor-circuit-display.intro.title=Wie funktionieren Kanäle?
+onboarding.tor-circuit-display.intro.msg=Kanäle bestehen aus zufällig zugeordneten Relays, d.h. Server auf der ganzen Welt, die konfiguriert sind, um Torverkehr weiterzuleiten. Kanäle ermöglichen es Ihnen, privat zu surfen und sich mit Onion-Diensten zu verbinden.\n
-onboarding.tor-circuit-display.diagram.title=Circuit-Ansicht
-onboarding.tor-circuit-display.diagram.msg=Dieses Diagramm zeigt die Relays, aus denen die Circuits für diese Website besteht. Um zu verhindern, dass Aktivitäten zwischen verschiedenen Standorten verlinkt werden, erhält jede Website einen anderen Circuit.
+onboarding.tor-circuit-display.diagram.title=Kanal-Ansicht
+onboarding.tor-circuit-display.diagram.msg=Dieses Diagramm zeigt die Relays, die den Kanal für diese Website bilden. Um zu verhindern, dass Aktivitäten zwischen verschiedenen Standorten verlinkt werden, nutzt Tor Browser für jede Website einen eigenen Kanal.
onboarding.tor-circuit-display.new-circuit.title=Brauchen Sie einen neuen Circuit?
-onboarding.tor-circuit-display.new-circuit.msg=Wenn Sie keine Verbindung zu der Website herstellen können, die Sie besuchen möchten, oder wenn sie nicht richtig geladen wird, können Sie diese Schaltfläche verwenden, um die Website über einen neuen Circuit zu laden.
+onboarding.tor-circuit-display.new-circuit.msg=Wenn Sie keine Verbindung zu der Website herstellen können, die Sie besuchen möchten, oder wenn sie nicht richtig geladen wird, können Sie diese Schaltfläche verwenden, um die Website über einen neuen Kanal zu laden.
diff --git a/src/chrome/locale/ko/torbutton.dtd b/src/chrome/locale/ko/torbutton.dtd
index 5daf9f14..b23701b2 100644
--- a/src/chrome/locale/ko/torbutton.dtd
+++ b/src/chrome/locale/ko/torbutton.dtd
@@ -34,18 +34,18 @@
<!ENTITY torbutton.prefs.sec_caption "보안 등급">
<!ENTITY torbutton.prefs.sec_caption_tooltip "보안 슬라이더를 사용하면 특정 브라우저 기능이 비활성화 되어 브라우저가 해킹 시도에 취약해질 수 있습니다.">
<!ENTITY torbutton.prefs.sec_standard_label "표준">
-<!ENTITY torbutton.prefs.sec_standard_description "All Tor Browser and website features are enabled.">
-<!ENTITY torbutton.prefs.sec_safer_label "Safer">
-<!ENTITY torbutton.prefs.sec_safer_description "Disables website features that are often dangerous, causing some sites to lose functionality.">
-<!ENTITY torbutton.prefs.sec_safer_list_label "At the safer setting:">
-<!ENTITY torbutton.prefs.sec_safest_label "Safest">
-<!ENTITY torbutton.prefs.sec_safest_description "Only allows website features required for static sites and basic services. These changes affect images, media, and scripts.">
-<!ENTITY torbutton.prefs.sec_safest_list_label "At the safest setting:">
+<!ENTITY torbutton.prefs.sec_standard_description "모든 Tor 브라우저와 웹사이트의 기능들이 활성화 됩니다.">
+<!ENTITY torbutton.prefs.sec_safer_label "더 안전합니다">
+<!ENTITY torbutton.prefs.sec_safer_description "이 설정으로 흔히 위험한 웹사이트의 기능이 비활성화하면 일부의 사이트의 기능들을 사용 할 수 없습니다.">
+<!ENTITY torbutton.prefs.sec_safer_list_label "더 안전한 설정을 선택하고 있습니다:">
+<!ENTITY torbutton.prefs.sec_safest_label "제일 안전합니다">
+<!ENTITY torbutton.prefs.sec_safest_description "정적 사이트와 기본 서비스에 필요한 기능이만 용남합니다. 그 변경들은 사진이며 메디아며 스크립트를 영향할 것입니다.">
+<!ENTITY torbutton.prefs.sec_safest_list_label "제일 안전한 설정을 선택하고 있습니다:">
<!ENTITY torbutton.prefs.sec_learn_more_label "더 알아보기">
-<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "JavaScript is disabled on non-HTTPS sites.">
+<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "JavaScript가 HTTPS을 적용되지 않은 사이트에서 비활성화 됩니다.">
<!ENTITY torbutton.prefs.sec_js_disabled "자바 스크립트는 기본 설정으로 모든 사이트에서 비활성화 되어 있습니다.">
-<!ENTITY torbutton.prefs.sec_limit_typography "Some fonts and math symbols are disabled.">
-<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Some fonts, icons, math symbols, and images are disabled.">
+<!ENTITY torbutton.prefs.sec_limit_typography "일부 글꼴이며 수학기호가 비활성화 됩니다.">
+<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "일부 글꼴이며 상징이며 수학기호며 사진이 비활성화 됩니다.">
<!ENTITY torbutton.prefs.sec_click_to_play_media "오디오와 동영상(HTML5 media) 보려면 누르십시오.">
<!ENTITY torbutton.circuit_display.title "토르 서킷">
-<!ENTITY torbutton.circuit_display.new_circuit "New Circuit for this Site">
+<!ENTITY torbutton.circuit_display.new_circuit "이 사이트에서 새로운 서킷을 재구축">
1
0

[tor-browser/tor-browser-60.3.0esr-8.5-1] Bug 25013: Add torbutton as a tor-browser submodule
by gk@torproject.org 14 Nov '18
by gk@torproject.org 14 Nov '18
14 Nov '18
commit fbccad5b7b28a975f2e9de73f8362fcf937db6aa
Author: Igor Oliveira <igt0(a)torproject.org>
Date: Tue Nov 13 07:23:52 2018 -0200
Bug 25013: Add torbutton as a tor-browser submodule
Because of the non-restartless nature of Torbutton, it required
a two-stage installation process. On mobile, it was a problem,
because it was not loading when the user opened the browser for
the first time.
Moving it to tor-browser and making it a system extension allows it
to load when the user opens the browser for first time.
Additionally, this patch also fixes Bug 27611.
---
.gitmodules | 3 +++
mobile/android/installer/package-manifest.in | 4 ++++
toolkit/moz.build | 3 +++
toolkit/torproject/torbutton | 1 +
4 files changed, 11 insertions(+)
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 000000000000..2f03bd8e22df
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "toolkit/torproject/torbutton"]
+ path = toolkit/torproject/torbutton
+ url = https://git.torproject.org/torbutton.git
diff --git a/mobile/android/installer/package-manifest.in b/mobile/android/installer/package-manifest.in
index 8a2a356c151c..69714f9eca7c 100644
--- a/mobile/android/installer/package-manifest.in
+++ b/mobile/android/installer/package-manifest.in
@@ -426,6 +426,10 @@
@BINPATH@/chrome/devtools@JAREXT@
@BINPATH@/chrome/devtools.manifest
+; Torbutton
+@BINPATH@/chrome/torbutton@JAREXT@
+@BINPATH@/chrome/torbutton.manifest
+
; [Default Preferences]
; All the pref files must be part of base to prevent migration bugs
#ifdef MOZ_GECKOVIEW_JAR
diff --git a/toolkit/moz.build b/toolkit/moz.build
index df0b09d3bc0f..ba89c51efea1 100644
--- a/toolkit/moz.build
+++ b/toolkit/moz.build
@@ -28,6 +28,9 @@ if CONFIG['MOZ_MAINTENANCE_SERVICE'] or CONFIG['MOZ_UPDATER']:
'mozapps/update/common',
]
+if CONFIG['MOZ_BUILD_APP'] == 'mobile/android':
+ DIRS += ['torproject/torbutton']
+
if CONFIG['MOZ_MAINTENANCE_SERVICE']:
DIRS += [
'components/maintenanceservice'
diff --git a/toolkit/torproject/torbutton b/toolkit/torproject/torbutton
new file mode 160000
index 000000000000..ac8d92514940
--- /dev/null
+++ b/toolkit/torproject/torbutton
@@ -0,0 +1 @@
+Subproject commit ac8d9251494056e761bb2cf5c2a4795a888f38bd
1
0
commit ac8d9251494056e761bb2cf5c2a4795a888f38bd
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Nov 12 13:24:11 2018 +0000
Translations update
---
src/chrome/locale/ar/aboutTBUpdate.dtd | 2 +-
src/chrome/locale/cs/aboutTor.dtd | 4 +-
src/chrome/locale/cs/brand.properties | 4 +-
src/chrome/locale/cs/torbutton.properties | 4 +-
src/chrome/locale/da/torbutton.properties | 2 +-
src/chrome/locale/el/aboutDialog.dtd | 2 +-
src/chrome/locale/el/aboutTor.dtd | 8 +--
src/chrome/locale/el/browserOnboarding.properties | 8 +--
src/chrome/locale/fr/aboutDialog.dtd | 2 +-
src/chrome/locale/fr/aboutTor.dtd | 2 +-
src/chrome/locale/fr/brand.dtd | 2 +-
src/chrome/locale/ja/aboutTBUpdate.dtd | 2 +-
src/chrome/locale/ja/aboutTor.dtd | 14 ++---
src/chrome/locale/ja/browserOnboarding.properties | 8 +--
src/chrome/locale/ka/torbutton.properties | 2 +-
src/chrome/locale/sv/aboutTBUpdate.dtd | 6 +-
src/chrome/locale/sv/aboutTor.dtd | 38 ++++++-------
src/chrome/locale/sv/browserOnboarding.properties | 68 +++++++++++------------
src/chrome/locale/sv/torbutton.properties | 4 +-
src/chrome/locale/tr/browserOnboarding.properties | 2 +-
src/chrome/locale/tr/torbutton.dtd | 2 +-
src/chrome/locale/zh-CN/aboutTor.dtd | 20 +++----
22 files changed, 103 insertions(+), 103 deletions(-)
diff --git a/src/chrome/locale/ar/aboutTBUpdate.dtd b/src/chrome/locale/ar/aboutTBUpdate.dtd
index eee3db56..0c25a117 100644
--- a/src/chrome/locale/ar/aboutTBUpdate.dtd
+++ b/src/chrome/locale/ar/aboutTBUpdate.dtd
@@ -6,5 +6,5 @@
<!ENTITY aboutTBUpdate.changeLogHeading "سجل التغييرات:">
<!ENTITY aboutTBUpdate.circuitDisplayHeading "تصميم جديد لطريقة عرض الدوائر">
-<!ENTITY aboutTBUpdate.circuitDisplayDescription "The Tor circuit display has been relocated and improved! Click the Site Identity button (located on the left side of the URL bar) to see the new circuit display.">
+<!ENTITY aboutTBUpdate.circuitDisplayDescription "عرض دوائر تور نقل إلى مكان آخر وخضع للتحسين. انقر على زر «هوية الموقع» (تجده يمين شريط العنوانين) لترى العرض الجديد.">
<!ENTITY aboutTBUpdate.learnMore "إعرف/ي أكثر ">
diff --git a/src/chrome/locale/cs/aboutTor.dtd b/src/chrome/locale/cs/aboutTor.dtd
index 435bdfdc..7c5ba384 100644
--- a/src/chrome/locale/cs/aboutTor.dtd
+++ b/src/chrome/locale/cs/aboutTor.dtd
@@ -7,8 +7,8 @@
<!ENTITY aboutTor.title "O Toru">
<!ENTITY aboutTor.ready.label "Prohlížejte v soukromí.">
-<!ENTITY aboutTor.ready2.label "Vše je připraveno pro maximální soukromí pro vaše prohlížení.">
-<!ENTITY aboutTor.failure.label "Něco se nepovedlo!">
+<!ENTITY aboutTor.ready2.label "Vše je připraveno pro maximální soukromí Vašeho prohlížení.">
+<!ENTITY aboutTor.failure.label "Něco se pokazilo!">
<!ENTITY aboutTor.failure2.label "Tor v tomto prohlížeči nefunguje.">
<!ENTITY aboutTor.search.label "Vyhledejte s DuckDuckGo">
diff --git a/src/chrome/locale/cs/brand.properties b/src/chrome/locale/cs/brand.properties
index 1ac05c0b..7a8228a1 100644
--- a/src/chrome/locale/cs/brand.properties
+++ b/src/chrome/locale/cs/brand.properties
@@ -7,10 +7,10 @@ brandShortName=Prohlížeč Tor
brandFullName=Prohlížeč Tor
vendorShortName=Tor Project
-homePageSingleStartMain=Firefox Start, domovská stránka s vestavěných vyhledávačem
+homePageSingleStartMain=Firefox Start, domovská stránka s vestavěným vyhledávačem
homePageImport=Importovat vaši domovskou stránku z aplikace %S
homePageMigrationPageTitle=Výběr domovské stránky
-homePageMigrationDescription=Vyberte prosím domovskou stránku, kterou chcete používat:
+homePageMigrationDescription=Vyberte prosím domovskou stránku, kterou si přejete používat:
syncBrandShortName=Synchronizace
diff --git a/src/chrome/locale/cs/torbutton.properties b/src/chrome/locale/cs/torbutton.properties
index ef9b8092..acbe680a 100644
--- a/src/chrome/locale/cs/torbutton.properties
+++ b/src/chrome/locale/cs/torbutton.properties
@@ -21,10 +21,10 @@ torbutton.popup.external.suggest = Chcete-li být v bezpečí, otevírejte staž
torbutton.popup.launch = Stáhnout soubor
torbutton.popup.cancel = Zrušit
torbutton.popup.dontask = Od teď stahovat soubory automaticky
-torbutton.popup.no_newnym = Torbutton vám nemůže bezpečně poskytnout novou identitu, protože nemá přístup ke controlnímu portu Tor.\n\nMáte spuštěn Tor Browser Bundle?
+torbutton.popup.no_newnym = Torbutton vám nemůže bezpečně poskytnout novou identitu, protože nemá přístup ke kontrolnímu portu Tor.\n\nMáte spuštěn Tor Browser Bundle?
torbutton.security_settings.menu.title = Nastavení zabezpečení
torbutton.title.prompt_torbrowser = Důležitá zpráva Torbutton
-torbutton.popup.prompt_torbrowser = Torbutton nyní pracuje jinak: nemůžete jej nyní vypnout.\n\nPro tuto změnu jsme se rozhodli kvůli bezpečnosti používvání Torbutton v prohlížeči. který je zároveň využíván pro prohlížení mimo síť Tor. Docházelo kvůli tomu k příliš mnoha chybám, které jsme nemohli jinak opravit.\n\nPokud chcete dále používat Firefox běžným způsobem, nainstalujte si Tor Browser Bundle. Nastavení soukromí prohlížeče Tor jsou nadřazeny těm ve Firefoxu, dokonce i když Firefox používáte společně s Torbutton. \n\nTorbutton můžete odstranit v Nástroje > Doplňky > Rozšíření a klepnutím na tlačítko Odebrat.
+torbutton.popup.prompt_torbrowser = Torbutton nyní pracuje jinak: nemůžete jej nyní vypnout.\n\nPro tuto změnu jsme se rozhodli kvůli bezpečnosti používání Torbutton v prohlížeči. který je zároveň využíván pro prohlížení mimo síť Tor. Docházelo kvůli tomu k příliš mnoha chybám, které jsme nemohli jinak opravit.\n\nPokud chcete dále používat Firefox běžným způsobem, nainstalujte si Tor Browser Bundle. Nastavení soukromí prohlížeče Tor jsou nadřazeny těm ve Firefoxu, dokonce i když Firefox používáte společně s Torbutton. \n\nTorbutton můžete odstranit v Nástroje > Doplňky > Rozšíření a klepnutím na tlačítko Odebrat.
torbutton.popup.short_torbrowser = Důležitá informace!\n\nTorbutton je nyní stále aktivní.\n\nPro více informací klepněte na Torbutton.
torbutton.popup.confirm_plugins = Zásuvné moduly, jako je třeba Flash, mohou narušit vaše soukromí a anonymitu.\n\nTaké mohou obejít Tor a vyzradit vaše umístění a IP adresu.\n\nOpravdu chcete zásuvné moduly povolit?\n\n
diff --git a/src/chrome/locale/da/torbutton.properties b/src/chrome/locale/da/torbutton.properties
index eaf46742..ef2e85a9 100644
--- a/src/chrome/locale/da/torbutton.properties
+++ b/src/chrome/locale/da/torbutton.properties
@@ -16,7 +16,7 @@ torbutton.panel.label.enabled = Tor aktiveret
extensions.torbutton(a)torproject.org.description = Torbutton tilbyder en knap, der konfigurerer Tor-indstillinger, samt hurtigt og nemt fjerner private data browsing-data.
torbutton.popup.external.title = Download en ekstern filtype?
torbutton.popup.external.app = Tor Browser kan ikke vis denne file. Du skal derfor åbne den med et andet program.\n\n
-torbutton.popup.external.note = Nogle filtyper kan lede programmer til at forbinde til internettet uden at bruge Tor.\n\n
+torbutton.popup.external.note = Nogle filtyper kan lede programmer til at oprette forbindelse til internettet uden at bruge Tor.\n\n
torbutton.popup.external.suggest = For at være sikker bør du kun åbne downloade filer mens du er offline, eller bruge en Tor Live CD såsom Tails.\n
torbutton.popup.launch = Download fil
torbutton.popup.cancel = Annuller
diff --git a/src/chrome/locale/el/aboutDialog.dtd b/src/chrome/locale/el/aboutDialog.dtd
index a5c0cf69..d75b039e 100644
--- a/src/chrome/locale/el/aboutDialog.dtd
+++ b/src/chrome/locale/el/aboutDialog.dtd
@@ -1,7 +1,7 @@
<!ENTITY project.start "&brandShortName; έχει φτιαχτεί από">
<!-- LOCALIZATION NOTE (project.tpoLink): This is a link title that links to https://www.torproject.org -->
<!ENTITY project.tpoLink "ο &vendorShortName;">
-<!ENTITY project.end ",μια μη κερδοσκοπική οργάνωση που υπερασπίζεται την ιδιωτικότητα και την ελευθερεία σας στο διαδύκτιο.">
+<!ENTITY project.end ", μια μη κερδοσκοπική οργάνωση που υπερασπίζεται την ιδιωτικότητα και την ελευθερία σας στο διαδίκτυο.">
<!ENTITY help.start "Θέλετε να βοηθήσετε?">
<!-- LOCALIZATION NOTE (help.donate): This is a link title that links to https://www.torproject.org/donate/donate.html.en -->
diff --git a/src/chrome/locale/el/aboutTor.dtd b/src/chrome/locale/el/aboutTor.dtd
index 738b81ac..96301e2a 100644
--- a/src/chrome/locale/el/aboutTor.dtd
+++ b/src/chrome/locale/el/aboutTor.dtd
@@ -7,7 +7,7 @@
<!ENTITY aboutTor.title "Σχετικά με το Tor">
<!ENTITY aboutTor.ready.label "Εξερευνήστε. Με ιδιωτικότητα.">
-<!ENTITY aboutTor.ready2.label "Είσαι έτοιμος για την πιο ιδιωτική εμπειρία περιήγησης.">
+<!ENTITY aboutTor.ready2.label "Είστε έτοιμος για την πιο ιδιωτική εμπειρία περιήγησης.">
<!ENTITY aboutTor.failure.label "Κάτι πήγε στραβά!">
<!ENTITY aboutTor.failure2.label "Το Tor δεν λειτουργεί σε αυτόν τον browser.">
@@ -15,7 +15,7 @@
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torbrowser_user_manual_questions.label "Ερωτήσεις?">
-<!ENTITY aboutTor.torbrowser_user_manual_link.label "Κοιτάξτε το εγχειρίδιό μας για τον Tor Browser»">
+<!ENTITY aboutTor.torbrowser_user_manual_link.label "Κοιτάξτε το εγχειρίδιο μας για τον Tor Browser »">
<!-- The next two entities are used within the browser's Help menu. -->
<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M">
<!ENTITY aboutTor.torbrowser_user_manual.label "Εγχειρίδιο του Tor Browser">
@@ -24,10 +24,10 @@
<!ENTITY aboutTor.getInvolved.label "Βοηθήστε κι εσείς »">
<!ENTITY aboutTor.getInvolved.link "https://www.torproject.org/getinvolved/volunteer.html.en">
-<!ENTITY aboutTor.newsletter.tagline "Λάβετε τα τελευταία νέα του Tor κατευθείαν στα εισερχόμενά σας.">
+<!ENTITY aboutTor.newsletter.tagline "Λάβετε τα τελευταία νέα του Tor κατευθείαν στα εισερχόμενα σας.">
<!ENTITY aboutTor.newsletter.link_text "Εγγραφτείτε για τα νέα του Tor.">
-<!ENTITY aboutTor.donationBanner.line1 "Tor: Η ισχύς των πολλών. ">
+<!ENTITY aboutTor.donationBanner.line1 "Tor: Ισχύς εν τη ενώσει.">
<!ENTITY aboutTor.donationBanner.line2a "Η ανωνυμία αγαπά την παρέα.">
<!ENTITY aboutTor.donationBanner.line2b "Προωθήστε τα ανθρώπινα δικαιώματα παγκοσμίως.">
diff --git a/src/chrome/locale/el/browserOnboarding.properties b/src/chrome/locale/el/browserOnboarding.properties
index 766e982a..680a904d 100644
--- a/src/chrome/locale/el/browserOnboarding.properties
+++ b/src/chrome/locale/el/browserOnboarding.properties
@@ -13,7 +13,7 @@ onboarding.tour-tor-privacy.description=Ο Tor Browser απομονώνει τα
onboarding.tour-tor-privacy.button=Πάμε στο Δίκτυο Tor
onboarding.tour-tor-network=Δίκτυο Tor
-onboarding.tour-tor-network.title=Ας ταξιδεύσουμε σε ένα αποκεντρωμένο δίκτυο.
+onboarding.tour-tor-network.title=Ας ταξιδέψουμε σε ένα αποκεντρωμένο δίκτυο.
onboarding.tour-tor-network.description=Ο Tor Browser σας συνδέει στο δίκτυο Tor, που λειτουργεί χάρη σε χιλιάδες εθελοντές από όλο τον κόσμο. Σε αντίθεση με ένα VPN, δεν υπάρχει κανένα σημείο αποτυχίας ή κεντρική οντότητα που πρέπει να εμπιστευτείτε για να απολαύσετε το διαδίκτυο ιδιωτικά.
onboarding.tour-tor-network.button=Πάμε στην προεπισκόπηση κυκλώματος
@@ -24,7 +24,7 @@ onboarding.tour-tor-circuit-display.button=Βλέπω το μονοπάτι μο
onboarding.tour-tor-security=Ασφάλεια
onboarding.tour-tor-security.title=Επιλέξτε την εμπειρία σας.
-onboarding.tour-tor-security.description=Μπορούμε να προσφέρουμε επιπρόσθετες ρυθμίσεις για να ενισχύσουμε την ασφάλεια του περιηγητή σας. Οι Ρυθμίσεις Ασφάλειας σας επιτρέπουν να μπλοκάρεετε στοιχεία που θα μπορούσαν να χρηστιμοποιηθούν για επιθέσεις στον υπολογιστή σας. Επίλεξτε παρακάτω για να δείτε τι κάνουν οι διαφορετικές ρυθμίσεις.
+onboarding.tour-tor-security.description=Μπορούμε να προσφέρουμε επιπρόσθετες ρυθμίσεις για να ενισχύσουμε την ασφάλεια του περιηγητή σας. Οι Ρυθμίσεις Ασφαλείας σας επιτρέπουν να μπλοκάρεετε στοιχεία που θα μπορούσαν να χρησιμοποιηθούν για επιθέσεις στον υπολογιστή σας. Επίλεξτε παρακάτω για να δείτε τι κάνουν οι διαφορετικές ρυθμίσεις.
onboarding.tour-tor-security.button=Έλεγχος Ρυθμίσεων
onboarding.tour-tor-expect-differences=Προτάσεις εμπειρίας
@@ -34,7 +34,7 @@ onboarding.tour-tor-expect-differences.button=Δείτε τις Συχνές Ε
onboarding.tour-tor-onion-services=Υπηρεσίες Onion
onboarding.tour-tor-onion-services.title=Προστατευτείτε πιο πολύ.
-onboarding.tour-tor-onion-services.description=Οι υπηρεσίες του Onion είναι ιστοσελίδες που τελειώνουν σε .onion και παρέχουν επιπλέον προστασία σε όσους δημοσιεύουν και επισκέπτονται, συμπεριλαμβανομένου και ασφαλειών ενάντια στη λογοκρισία. Οι υπηρεσίες του Onion επιτρέπουν στον καθένα να παράσχει υλικά και υπηρεσίες ανώνυμα. Επιλέξτε κάτω για να επισκεφτείτε τη σελίδα του Onion DuckDuckGo.
+onboarding.tour-tor-onion-services.description=Οι υπηρεσίες του Onion είναι ιστοσελίδες που τελειώνουν σε .onion και παρέχουν επιπλέον προστασία στους δημοσιευτές και τους επισκέπτες, συμπεριλαμβανομένων και μέτρων ασφάλειας ενάντια στη λογοκρισία. Οι υπηρεσίες του Onion επιτρέπουν στον καθένα να παράσχει υλικά και υπηρεσίες ανώνυμα. Επιλέξτε κάτω για να επισκεφτείτε τη σελίδα του Onion DuckDuckGo.
onboarding.tour-tor-onion-services.button=Επισκεφτείτε ένα Onion
# Circuit Display onboarding.
@@ -50,5 +50,5 @@ onboarding.tor-circuit-display.intro.msg=Τα κυκλώματα δημιουρ
onboarding.tor-circuit-display.diagram.title=Προεπισκόπηση κυκλώματος
onboarding.tor-circuit-display.diagram.msg=Αυτό το διάγραμμα δείχνει τις συνδέσεις που αποτελούν το κύκλωμα για αυτήν την ιστοσελίδα. Για να αποφύγετε τη σύνδεση της δραστηριότητας από σελίδα σε σελίδα, κάθε ιστοσελίδα παίρνει διαφορετικό κύκλωμα.
-onboarding.tor-circuit-display.new-circuit.title=Χρειάζεσαι καινούριο κύκλωμα;
+onboarding.tor-circuit-display.new-circuit.title=Χρειάζεστε καινούριο κύκλωμα;
onboarding.tor-circuit-display.new-circuit.msg=Αν δεν μπορείτε να συνδεθείτε στην ιστοσελίδα που προσπαθείτε να συνδεθείτε ή αν δεν φορτώνει σωστά, τότε μπορείτε να χρησιμοποιήσετε αυτό το κουμπί για να ανανεώσετε τη σελίδα με νέο κύκλωμα.
diff --git a/src/chrome/locale/fr/aboutDialog.dtd b/src/chrome/locale/fr/aboutDialog.dtd
index a6d1ec4b..f67c4434 100644
--- a/src/chrome/locale/fr/aboutDialog.dtd
+++ b/src/chrome/locale/fr/aboutDialog.dtd
@@ -16,4 +16,4 @@
<!ENTITY bottomLinks.grow "Aidez à la croissance du réseau Tor !">
<!-- LOCALIZATION NOTE (bottom.questions): This is a link title that links to about:license -->
<!ENTITY bottomLinks.license "Informations de licence">
-<!ENTITY tor.TrademarkStatement "« Tor » et le « logo Oignon » sont des marques déposées de « The Tor Project, Inc. »">
+<!ENTITY tor.TrademarkStatement "« Tor » et le « logo Oignon » sont des marques de commerce de « The Tor Project, Inc. »">
diff --git a/src/chrome/locale/fr/aboutTor.dtd b/src/chrome/locale/fr/aboutTor.dtd
index f373d753..959842c6 100644
--- a/src/chrome/locale/fr/aboutTor.dtd
+++ b/src/chrome/locale/fr/aboutTor.dtd
@@ -20,7 +20,7 @@
<!ENTITY aboutTor.torbrowser_user_manual.accesskey "G">
<!ENTITY aboutTor.torbrowser_user_manual.label "Guide d’utilisation du Navigateur Tor">
-<!ENTITY aboutTor.tor_mission.label "Le Projet Tor est une organisation sans but lucratif US 501(c)(3) qui fait progresser les droits de la personne et les libertés en créant et en déployant des technologies d’anonymat et de confidentialité gratuites et à code source ouvert. Nous soutenons leur disponibilité et leur utilisation sans restriction, et promouvons une meilleure compréhension scientifique et populaire.">
+<!ENTITY aboutTor.tor_mission.label "Le Projet Tor est une organisation sans but lucratif US 501(c)(3) qui fait progresser les droits de la personne et les libertés en créant et en déployant des technologies d’anonymat et de confidentialité gratuites et à code source ouvert. Nous soutenons leur disponibilité et leur utilisation sans restriction, et promouvons une meilleure compréhension scientifique et populaire.">
<!ENTITY aboutTor.getInvolved.label "Impliquez-vous »">
<!ENTITY aboutTor.getInvolved.link "https://www.torproject.org/getinvolved/volunteer.html">
diff --git a/src/chrome/locale/fr/brand.dtd b/src/chrome/locale/fr/brand.dtd
index b3fe3f1c..a55f3014 100644
--- a/src/chrome/locale/fr/brand.dtd
+++ b/src/chrome/locale/fr/brand.dtd
@@ -6,7 +6,7 @@
<!ENTITY brandShortName "Navigateur Tor">
<!ENTITY brandFullName "Navigateur Tor">
<!ENTITY vendorShortName "Projet Tor">
-<!ENTITY trademarkInfo.part1 "Firefox et les logos de Firefox sont des marques déposées de la Fondation Mozilla.">
+<!ENTITY trademarkInfo.part1 "Firefox et les logos de Firefox sont des marques de commerce de la Fondation Mozilla.">
<!-- The following strings are for bug #10280's UI. We place them here for our translators -->
<!ENTITY plugins.installed.find "Cliquer pour charger les greffons système installés">
diff --git a/src/chrome/locale/ja/aboutTBUpdate.dtd b/src/chrome/locale/ja/aboutTBUpdate.dtd
index 4ded2bf7..8be08aa4 100644
--- a/src/chrome/locale/ja/aboutTBUpdate.dtd
+++ b/src/chrome/locale/ja/aboutTBUpdate.dtd
@@ -7,4 +7,4 @@
<!ENTITY aboutTBUpdate.circuitDisplayHeading "New, Redesigned Circuit Display">
<!ENTITY aboutTBUpdate.circuitDisplayDescription "The Tor circuit display has been relocated and improved! Click the Site Identity button (located on the left side of the URL bar) to see the new circuit display.">
-<!ENTITY aboutTBUpdate.learnMore "Learn More">
+<!ENTITY aboutTBUpdate.learnMore "さらに詳しく">
diff --git a/src/chrome/locale/ja/aboutTor.dtd b/src/chrome/locale/ja/aboutTor.dtd
index 8c573564..19a54e77 100644
--- a/src/chrome/locale/ja/aboutTor.dtd
+++ b/src/chrome/locale/ja/aboutTor.dtd
@@ -6,19 +6,19 @@
<!ENTITY aboutTor.title "Torについて">
-<!ENTITY aboutTor.ready.label "Explore. Privately.">
-<!ENTITY aboutTor.ready2.label "You’re ready for the world’s most private browsing experience.">
+<!ENTITY aboutTor.ready.label "探索する。 プライベートに。">
+<!ENTITY aboutTor.ready2.label "世界で最もプライベートなブラウジングを体験する準備が整いました。">
<!ENTITY aboutTor.failure.label "何かが間違っています!">
<!ENTITY aboutTor.failure2.label "Torは、このブラウザでは動作しません。">
-<!ENTITY aboutTor.search.label "Search with DuckDuckGo">
+<!ENTITY aboutTor.search.label "DuckDuckGoで検索">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torbrowser_user_manual_questions.label "質問がありますか?">
<!ENTITY aboutTor.torbrowser_user_manual_link.label "Check our Tor Browser Manual »">
<!-- The next two entities are used within the browser's Help menu. -->
<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M">
-<!ENTITY aboutTor.torbrowser_user_manual.label "Tor Browser Manual">
+<!ENTITY aboutTor.torbrowser_user_manual.label "Tor Browser マニュアル">
<!ENTITY aboutTor.tor_mission.label "The Tor Project is a US 501(c)(3) non-profit organization advancing human rights and freedoms by creating and deploying free and open source anonymity and privacy technologies, supporting their unrestricted availability and use, and furthering their scientific and popular understanding.">
<!ENTITY aboutTor.getInvolved.label "Get Involved »">
@@ -31,12 +31,12 @@
<!ENTITY aboutTor.donationBanner.line2a "Anonymity loves company.">
<!ENTITY aboutTor.donationBanner.line2b "Advance universal human rights.">
-<!ENTITY aboutTor.donationBanner.line2c "Stand up for freedom.">
+<!ENTITY aboutTor.donationBanner.line2c "自由のために立ち上がる。">
<!ENTITY aboutTor.donationBanner.line2d "Protect the privacy of millions.">
<!ENTITY aboutTor.donationBanner.line2e "Keep Tor strong.">
-<!ENTITY aboutTor.donationBanner.line2f "We need your support!">
+<!ENTITY aboutTor.donationBanner.line2f "我々にはあなたのサポートが必要です!">
<!ENTITY aboutTor.donationBanner.line3 "Give today, and Mozilla will match your donation.">
-<!ENTITY aboutTor.donationBanner.buttonA "Donate Now">
+<!ENTITY aboutTor.donationBanner.buttonA "今すぐ寄付">
<!ENTITY aboutTor.donationBanner.buttonB "Count Me In">
diff --git a/src/chrome/locale/ja/browserOnboarding.properties b/src/chrome/locale/ja/browserOnboarding.properties
index 2261c993..e3f09909 100644
--- a/src/chrome/locale/ja/browserOnboarding.properties
+++ b/src/chrome/locale/ja/browserOnboarding.properties
@@ -5,14 +5,14 @@
onboarding.tour-tor-welcome=ようこそ
onboarding.tour-tor-welcome.title=You’re ready.
onboarding.tour-tor-welcome.description=Tor Browser offers the highest standard of privacy and security while browsing the web. You’re now protected against tracking, surveillance, and censorship. This quick onboarding will show you how.
-onboarding.tour-tor-welcome.button=Start Now
+onboarding.tour-tor-welcome.button=今すぐ開始
onboarding.tour-tor-privacy=プライバシー
onboarding.tour-tor-privacy.title=Snub trackers and snoopers.
onboarding.tour-tor-privacy.description=Tor Browser isolates cookies and deletes your browser history after your session. These modifications ensure your privacy and security are protected in the browser. Click ‘Tor Network’ to learn how we protect you on the network level.
onboarding.tour-tor-privacy.button=Go to Tor Network
-onboarding.tour-tor-network=Tor Network
+onboarding.tour-tor-network=Torネットワーク
onboarding.tour-tor-network.title=Travel a decentralized network.
onboarding.tour-tor-network.description=Tor Browser connects you to the Tor network run by thousands of volunteers around the world. Unlike a VPN, there’s no one point of failure or centralized entity you need to trust in order to enjoy the internet privately.
onboarding.tour-tor-network.button=Go to Circuit Display
@@ -30,7 +30,7 @@ onboarding.tour-tor-security.button=Review Settings
onboarding.tour-tor-expect-differences=Experience Tips
onboarding.tour-tor-expect-differences.title=Expect some differences.
onboarding.tour-tor-expect-differences.description=With all the security and privacy features provided by Tor, your experience while browsing the internet may be a little different. Things may be a bit slower, and depending on your security level, some elements may not work or load. You may also be asked to prove you are a human and not a robot.
-onboarding.tour-tor-expect-differences.button=See FAQs
+onboarding.tour-tor-expect-differences.button=よくある質問を見る
onboarding.tour-tor-onion-services=Onion Services
onboarding.tour-tor-onion-services.title=Be extra protected.
@@ -50,5 +50,5 @@ onboarding.tor-circuit-display.intro.msg=Circuits are made up of randomly assign
onboarding.tor-circuit-display.diagram.title=Circuit Display
onboarding.tor-circuit-display.diagram.msg=This diagram shows the relays that make up the circuit for this website. To prevent linking of activity across different sites, each website gets a different circuit.
-onboarding.tor-circuit-display.new-circuit.title=Do you need a new circuit?
+onboarding.tor-circuit-display.new-circuit.title=新しいサーキットが必要ですか?
onboarding.tor-circuit-display.new-circuit.msg=If you are not able to connect to the website you’re trying to visit or it is not loading properly, then you can use this button to reload the site with a new circuit.
diff --git a/src/chrome/locale/ka/torbutton.properties b/src/chrome/locale/ka/torbutton.properties
index 21d96e32..cbe0d8b0 100644
--- a/src/chrome/locale/ka/torbutton.properties
+++ b/src/chrome/locale/ka/torbutton.properties
@@ -24,7 +24,7 @@ torbutton.popup.dontask = ავტომატურად ჩამოიტ
torbutton.popup.no_newnym = Torbutton ვერ ახერხებს ახალი ვინაობის უსაფრთხოდ მონიჭებას. წვდომა არ აქვს წვდომა Tor-ის მართვის პორტთან.\n\nAre you running Tor Browser Bundle?
torbutton.security_settings.menu.title = უსაფრთხოების პარამეტრები
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.prompt_torbrowser = Torbutton ახლა უკვე სხვანაირად მუშაობს: მისი გამორთვა აღარ შეგიძლიათ.\n\nეს ცვლილება იმიტომ გავაკეთეთ, რომ არაა უსაფრთხო Torbutton-ის იმ ბრაუზერში გამოყენება, რომელიც Tor-ის გარეშეც მუშაობს. ამ ყველაფერს უამრავი ხარვეზი ახლავს თან, რომელთა მოგვარებაც სხვა გზით ვერ მოვახერხებთ.\n\nთუ გსურთ განაგრძოთ Firefox-ის ჩვეულებრივ გამოყენება, უნდა ამოშალოთ Torbutton და ჩამოტვირთოთ Tor-ბრაუზერის კრებ
ული. პირადი მონაცემების დაცვის შესაძლებლობები გაცილებით უკეთესია Tor-ბრაუზერში, ვიდრე ჩვეულებრივ Firefox-ში, მისი Torbutton-თან ერთად გამოყენების შემთხვევაშიც კი.\n\nTorbutton-ის წასაშლელად, გადადით ხელსაწყოები->დამატებები->გაფართოებები და შემდეგ დააწკაპეთ ამოშლის ღილაკს Torbutton-ის გვერდით.
torbutton.popup.short_torbrowser = Important Torbutton Information!\n\nTorbutton is now always enabled.\n\nClick on the Torbutton for more information.
torbutton.popup.confirm_plugins = მოდულობს, როგორიცაა Flash შეუძლია საფრთხის ქვეშ დააყენოს თქვენი პირადი მონაცემები და ვინაობის გაუმხელობა.\n\nმათი საშუალებით, შესაძლებელია Tor-ის გვერდის ავლით დადგინდეს თქვენი მდებარეობა და IP-მისამართი.\n\nნამდვილად გსურთ მოდულების ჩართვა?\n\n
diff --git a/src/chrome/locale/sv/aboutTBUpdate.dtd b/src/chrome/locale/sv/aboutTBUpdate.dtd
index 02a58303..7b757280 100644
--- a/src/chrome/locale/sv/aboutTBUpdate.dtd
+++ b/src/chrome/locale/sv/aboutTBUpdate.dtd
@@ -5,6 +5,6 @@
<!ENTITY aboutTBUpdate.linkSuffix ".">
<!ENTITY aboutTBUpdate.changeLogHeading "Ändringslogg:">
-<!ENTITY aboutTBUpdate.circuitDisplayHeading "New, Redesigned Circuit Display">
-<!ENTITY aboutTBUpdate.circuitDisplayDescription "The Tor circuit display has been relocated and improved! Click the Site Identity button (located on the left side of the URL bar) to see the new circuit display.">
-<!ENTITY aboutTBUpdate.learnMore "Learn More">
+<!ENTITY aboutTBUpdate.circuitDisplayHeading "Ny, omformad kretsrutan">
+<!ENTITY aboutTBUpdate.circuitDisplayDescription "Tor-kretsrutan har flyttats och förbättrats! Klicka på webbplatsen Identitetsknapp (ligger på vänster sida av webbadressfältet) för att se den nya kretsrutan.">
+<!ENTITY aboutTBUpdate.learnMore "Läs mer">
diff --git a/src/chrome/locale/sv/aboutTor.dtd b/src/chrome/locale/sv/aboutTor.dtd
index 94cea14a..76dcfa01 100644
--- a/src/chrome/locale/sv/aboutTor.dtd
+++ b/src/chrome/locale/sv/aboutTor.dtd
@@ -6,37 +6,37 @@
<!ENTITY aboutTor.title "Om Tor">
-<!ENTITY aboutTor.ready.label "Explore. Privately.">
-<!ENTITY aboutTor.ready2.label "You’re ready for the world’s most private browsing experience.">
+<!ENTITY aboutTor.ready.label "Utforska. Privat.">
+<!ENTITY aboutTor.ready2.label "Du är redo för världens mest privata surfupplevelse.">
<!ENTITY aboutTor.failure.label "Någonting gick fel!">
<!ENTITY aboutTor.failure2.label "Tor fungerar inte i den här webbläsaren.">
-<!ENTITY aboutTor.search.label "Search with DuckDuckGo">
+<!ENTITY aboutTor.search.label "Sök med DuckDuckGo">
<!ENTITY aboutTor.searchDDGPost.link "https://duckduckgo.com">
<!ENTITY aboutTor.torbrowser_user_manual_questions.label "Frågor?">
-<!ENTITY aboutTor.torbrowser_user_manual_link.label "Check our Tor Browser Manual »">
+<!ENTITY aboutTor.torbrowser_user_manual_link.label "Kolla in bruksanvisning för Tor-webbläsaren »">
<!-- The next two entities are used within the browser's Help menu. -->
<!ENTITY aboutTor.torbrowser_user_manual.accesskey "M">
-<!ENTITY aboutTor.torbrowser_user_manual.label "Tor Browser Manual">
+<!ENTITY aboutTor.torbrowser_user_manual.label "Bruksanvisning för Tor-webbläsaren">
-<!ENTITY aboutTor.tor_mission.label "The Tor Project is a US 501(c)(3) non-profit organization advancing human rights and freedoms by creating and deploying free and open source anonymity and privacy technologies, supporting their unrestricted availability and use, and furthering their scientific and popular understanding.">
-<!ENTITY aboutTor.getInvolved.label "Get Involved »">
+<!ENTITY aboutTor.tor_mission.label "Tor-projektet är en amerikansk 501(c)(3) ideell organisation som främjar mänskliga rättigheter och friheter genom att skapa och distribuera anonymitets- och sekretessteknik med fri och öppen källkod, stödja deras obegränsade tillgänglighet och användning och främja deras vetenskapliga och populära förståelse.">
+<!ENTITY aboutTor.getInvolved.label "Engagera dig »">
<!ENTITY aboutTor.getInvolved.link "https://www.torproject.org/getinvolved/volunteer.html.en">
-<!ENTITY aboutTor.newsletter.tagline "Get the latest news from Tor straight to your inbox.">
-<!ENTITY aboutTor.newsletter.link_text "Sign up for Tor News.">
+<!ENTITY aboutTor.newsletter.tagline "Få de senaste nyheterna från Tor direkt till din inkorg.">
+<!ENTITY aboutTor.newsletter.link_text "Anmäl dig till Tor-nyheter.">
-<!ENTITY aboutTor.donationBanner.line1 "Tor: Strength in Numbers">
+<!ENTITY aboutTor.donationBanner.line1 "Tor: Styrka i antal">
-<!ENTITY aboutTor.donationBanner.line2a "Anonymity loves company.">
-<!ENTITY aboutTor.donationBanner.line2b "Advance universal human rights.">
-<!ENTITY aboutTor.donationBanner.line2c "Stand up for freedom.">
-<!ENTITY aboutTor.donationBanner.line2d "Protect the privacy of millions.">
-<!ENTITY aboutTor.donationBanner.line2e "Keep Tor strong.">
-<!ENTITY aboutTor.donationBanner.line2f "We need your support!">
+<!ENTITY aboutTor.donationBanner.line2a "Anonymitet älskar sällskap.">
+<!ENTITY aboutTor.donationBanner.line2b "Främja universella mänskliga rättigheter.">
+<!ENTITY aboutTor.donationBanner.line2c "Stå upp för frihet.">
+<!ENTITY aboutTor.donationBanner.line2d "Skydda miljontals privatliv.">
+<!ENTITY aboutTor.donationBanner.line2e "Håll Tor stark.">
+<!ENTITY aboutTor.donationBanner.line2f "Vi behöver ert stöd!">
-<!ENTITY aboutTor.donationBanner.line3 "Give today, and Mozilla will match your donation.">
+<!ENTITY aboutTor.donationBanner.line3 "Ge idag, och Mozilla kommer att matcha din donation.">
-<!ENTITY aboutTor.donationBanner.buttonA "Donate Now">
-<!ENTITY aboutTor.donationBanner.buttonB "Count Me In">
+<!ENTITY aboutTor.donationBanner.buttonA "Donera nu">
+<!ENTITY aboutTor.donationBanner.buttonB "Räkna med mig">
diff --git a/src/chrome/locale/sv/browserOnboarding.properties b/src/chrome/locale/sv/browserOnboarding.properties
index 847225d6..779564db 100644
--- a/src/chrome/locale/sv/browserOnboarding.properties
+++ b/src/chrome/locale/sv/browserOnboarding.properties
@@ -2,53 +2,53 @@
# See LICENSE for licensing information.
# vim: set sw=2 sts=2 ts=8 et:
-onboarding.tour-tor-welcome=Welcome
-onboarding.tour-tor-welcome.title=You’re ready.
-onboarding.tour-tor-welcome.description=Tor Browser offers the highest standard of privacy and security while browsing the web. You’re now protected against tracking, surveillance, and censorship. This quick onboarding will show you how.
-onboarding.tour-tor-welcome.button=Start Now
+onboarding.tour-tor-welcome=Välkommen
+onboarding.tour-tor-welcome.title=Du är redo.
+onboarding.tour-tor-welcome.description=Tor-webbläsaren erbjuder högsta standard för integritet och säkerhet när du surfar på webben. Du är nu skyddad mot spårning, övervakning och censur. Denna snabba introduktion kommer att visa dig hur.
+onboarding.tour-tor-welcome.button=Börja nu
onboarding.tour-tor-privacy=Sekretess
-onboarding.tour-tor-privacy.title=Snub trackers and snoopers.
-onboarding.tour-tor-privacy.description=Tor Browser isolates cookies and deletes your browser history after your session. These modifications ensure your privacy and security are protected in the browser. Click ‘Tor Network’ to learn how we protect you on the network level.
-onboarding.tour-tor-privacy.button=Go to Tor Network
+onboarding.tour-tor-privacy.title=Avvisa bevakare och snokare.
+onboarding.tour-tor-privacy.description=Tor-webbläsaren isolerar kakor och tar bort din webbläsarhistorik efter din session. Dessa ändringar säkerställa din integritet och säkerhet skyddas i webbläsaren. Klicka på "Tor-nätverk" för att lära dig hur vi skyddar dig på nätverksnivå.
+onboarding.tour-tor-privacy.button=Gå till Tor-nätverket
-onboarding.tour-tor-network=Tor Network
-onboarding.tour-tor-network.title=Travel a decentralized network.
-onboarding.tour-tor-network.description=Tor Browser connects you to the Tor network run by thousands of volunteers around the world. Unlike a VPN, there’s no one point of failure or centralized entity you need to trust in order to enjoy the internet privately.
-onboarding.tour-tor-network.button=Go to Circuit Display
+onboarding.tour-tor-network=Tor-nätverk
+onboarding.tour-tor-network.title=Res ett decentraliserat nätverk.
+onboarding.tour-tor-network.description=Tor-webbläsaren ansluter dig till Tor-nätverket som drivs av tusentals volontärer runt om i världen. Till skillnad från en VPN, det finns ingen punkt av misslyckande eller centraliserad enhet du behöver lita på för att njuta av internet privat.
+onboarding.tour-tor-network.button=Gå till kretsvisning
-onboarding.tour-tor-circuit-display=Circuit Display
-onboarding.tour-tor-circuit-display.title=See your path.
-onboarding.tour-tor-circuit-display.description=For each domain you visit, your traffic is relayed and encrypted in a circuit across three Tor relays around the world. No website knows where you are connecting from. You can request a new circuit by clicking ‘New Circuit for this Site’ on our Circuit Display.
-onboarding.tour-tor-circuit-display.button=See My Path
+onboarding.tour-tor-circuit-display=Kretsvisning
+onboarding.tour-tor-circuit-display.title=Se din väg.
+onboarding.tour-tor-circuit-display.description=För varje domän du besöker förmedlas din trafik och krypteras i en krets över tre tor-reläer runt om i världen. Ingen webbplats vet var du ansluter från. Du kan begära en ny krets genom att klicka på "ny krets för denna webbplats" på vår kretsvisning.
+onboarding.tour-tor-circuit-display.button=Se Min väg
onboarding.tour-tor-security=Säkerhet
-onboarding.tour-tor-security.title=Choose your experience.
-onboarding.tour-tor-security.description=We also provide you with additional settings for bumping up your browser security. Our Security Settings allow you to block elements that could be used to attack your computer. Click below to see what the different options do.
-onboarding.tour-tor-security.button=Review Settings
+onboarding.tour-tor-security.title=Välj din upplevelse.
+onboarding.tour-tor-security.description=Vi ger dig också ytterligare inställningar för att stöta upp din webbläsares säkerhet. Våra säkerhetsinställningar kan du blockera element som kan användas för att attackera din dator. Klicka nedan för att se vad de olika alternativen gör.
+onboarding.tour-tor-security.button=Granska Inställningar
-onboarding.tour-tor-expect-differences=Experience Tips
-onboarding.tour-tor-expect-differences.title=Expect some differences.
-onboarding.tour-tor-expect-differences.description=With all the security and privacy features provided by Tor, your experience while browsing the internet may be a little different. Things may be a bit slower, and depending on your security level, some elements may not work or load. You may also be asked to prove you are a human and not a robot.
-onboarding.tour-tor-expect-differences.button=See FAQs
+onboarding.tour-tor-expect-differences=Erfarenhets tips
+onboarding.tour-tor-expect-differences.title=Förvänta dig vissa skillnader.
+onboarding.tour-tor-expect-differences.description=Med alla säkerhets- och sekretessfunktioner som Tor tillhandahåller kan din upplevelse när du surfar på internet vara lite annorlunda. Saker kan vara lite långsammare, och beroende på din säkerhetsnivå, vissa element kanske inte fungerar eller ladda. Du kan också bli ombedd att bevisa att du är en människa och inte en robot.
+onboarding.tour-tor-expect-differences.button=Se Vanliga frågor
onboarding.tour-tor-onion-services=Onion tjänster
-onboarding.tour-tor-onion-services.title=Be extra protected.
-onboarding.tour-tor-onion-services.description=Onion services are sites that end with a .onion that provide extra protections to publishers and visitors, including added safeguards against censorship. Onion services allow anyone to provide content and services anonymously. Click below to visit the DuckDuckGo onion site.
-onboarding.tour-tor-onion-services.button=Visit an Onion
+onboarding.tour-tor-onion-services.title=Var extra skyddad.
+onboarding.tour-tor-onion-services.description=Onion-tjänster är webbplatser som slutar med en .onion som ger extra skydd till utgivare och besökare, inklusive extra garantier mot censur. Onion-tjänster tillåter alla att tillhandahålla innehåll och tjänster anonymt. Klicka nedan för att besöka DuckDuckGo-onion webbplatsen.
+onboarding.tour-tor-onion-services.button=Besök en Onion
# Circuit Display onboarding.
onboarding.tor-circuit-display.next=Nästa
onboarding.tor-circuit-display.done=Färdig
-onboarding.tor-circuit-display.one-of-three=1 of 3
-onboarding.tor-circuit-display.two-of-three=2 of 3
-onboarding.tor-circuit-display.three-of-three=3 of 3
+onboarding.tor-circuit-display.one-of-three=1 av 3
+onboarding.tor-circuit-display.two-of-three=2 av 3
+onboarding.tor-circuit-display.three-of-three=3 av 3
-onboarding.tor-circuit-display.intro.title=How do circuits work?
-onboarding.tor-circuit-display.intro.msg=Circuits are made up of randomly assigned relays, which are computers around the world configured to forward Tor traffic. Circuits allow you to browse privately and to connect to onion services.
+onboarding.tor-circuit-display.intro.title=Hur fungerar kretsar?
+onboarding.tor-circuit-display.intro.msg=Kretsar består av slumpmässigt tilldelade reläer, som är datorer runt om i världen konfigurerade för att vidarebefordra Tor-trafik. Kretsar kan du bläddra privat och ansluta till onion-tjänster.
-onboarding.tor-circuit-display.diagram.title=Circuit Display
-onboarding.tor-circuit-display.diagram.msg=This diagram shows the relays that make up the circuit for this website. To prevent linking of activity across different sites, each website gets a different circuit.
+onboarding.tor-circuit-display.diagram.title=Kretsvisning
+onboarding.tor-circuit-display.diagram.msg=Detta diagram visar reläer som utgör kretsen för denna webbplats. För att förhindra länkning av aktivitet över olika platser, varje webbplats får en annan krets.
-onboarding.tor-circuit-display.new-circuit.title=Do you need a new circuit?
-onboarding.tor-circuit-display.new-circuit.msg=If you are not able to connect to the website you’re trying to visit or it is not loading properly, then you can use this button to reload the site with a new circuit.
+onboarding.tor-circuit-display.new-circuit.title=Behöver du en ny krets?
+onboarding.tor-circuit-display.new-circuit.msg=Om du inte kan ansluta till webbplatsen du försöker besöka eller det inte laddas ordentligt, kan du använda den här knappen för att ladda om webbplatsen med en ny krets.
diff --git a/src/chrome/locale/sv/torbutton.properties b/src/chrome/locale/sv/torbutton.properties
index 5069c79e..83f5eee7 100644
--- a/src/chrome/locale/sv/torbutton.properties
+++ b/src/chrome/locale/sv/torbutton.properties
@@ -51,5 +51,5 @@ profileAccessDenied=%S har inte rättighet att använda profilen. Vänligen änd
profileMigrationFailed=Migrering av din befintliga %S profil misslyckades.\nNya inställningar kommer att användas.
# .Onion Page Info prompt. Strings are kept here for ease of translation.
-pageInfo_OnionEncryptionWithBitsAndProtocol=Connection Encrypted (Onion Service, %1$S, %2$S bit keys, %3$S)
-pageInfo_OnionEncryption=Connection Encrypted (Onion Service)
+pageInfo_OnionEncryptionWithBitsAndProtocol=Anslutning krypterad (Onion-tjänst, %1$S, %2$S bit nycklar, %3$S)
+pageInfo_OnionEncryption=Anslutning krypterad (Onion-tjänst)
diff --git a/src/chrome/locale/tr/browserOnboarding.properties b/src/chrome/locale/tr/browserOnboarding.properties
index 219f3037..1b10fd9a 100644
--- a/src/chrome/locale/tr/browserOnboarding.properties
+++ b/src/chrome/locale/tr/browserOnboarding.properties
@@ -9,7 +9,7 @@ onboarding.tour-tor-welcome.button=Başlayın
onboarding.tour-tor-privacy=Kişisel Gizlilik
onboarding.tour-tor-privacy.title=İzleyenlere ve meraklılara hadlerini bildirin.
-onboarding.tour-tor-privacy.description=Tor Browser çerezleri yalıtır ve kapattıığınızda web tarayıcı geçmişinizi siler. Bu değişiklikler web tarayıcı üzerinde kişisel gizliliğinizin ve güvenliğinizin korunmasını sağlar. Ağ düzeyinde nasıl koruma sağladığımızı öğrenmek için 'Tor Ağo' üzerine tıklayın.
+onboarding.tour-tor-privacy.description=Tor Browser çerezleri yalıtır ve kapattığınızda web tarayıcı geçmişinizi siler. Bu değişiklikler web tarayıcı üzerinde kişisel gizliliğinizin ve güvenliğinizin korunmasını sağlar. Ağ düzeyinde nasıl koruma sağladığımızı öğrenmek için 'Tor Ağı' üzerine tıklayın.
onboarding.tour-tor-privacy.button=Tor Ağına Geç
onboarding.tour-tor-network=Tor Ağı
diff --git a/src/chrome/locale/tr/torbutton.dtd b/src/chrome/locale/tr/torbutton.dtd
index e349d913..358a958a 100644
--- a/src/chrome/locale/tr/torbutton.dtd
+++ b/src/chrome/locale/tr/torbutton.dtd
@@ -42,7 +42,7 @@
<!ENTITY torbutton.prefs.sec_safest_description "Yalnız durağan siteler ve temel hizmetler için gerekli web sitesi özelliklerine izin verilir. Bu değişiklikler görselleri, ortamları ve betikleri etkiler.">
<!ENTITY torbutton.prefs.sec_safest_list_label "En güvenli ayarlar kullanıldığında:">
<!ENTITY torbutton.prefs.sec_learn_more_label "Ayrıntılı bilgi alın">
-<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "JavaScript,,HTTPS kullanmayan sitelerde devre dışı bırakılır.">
+<!ENTITY torbutton.prefs.sec_js_on_https_sites_only "JavaScript, HTTPS kullanmayan sitelerde devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_js_disabled "JavaScript betikleri tüm sitelerde varsayılan olarak devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_limit_typography "Bazı yazı türleri ve matematik simgeleri devre dışı bırakılır.">
<!ENTITY torbutton.prefs.sec_limit_graphics_and_typography "Bazı yazı türleri, simgeler, matematik simgeleri ve görseller devre dışı bırakılır.">
diff --git a/src/chrome/locale/zh-CN/aboutTor.dtd b/src/chrome/locale/zh-CN/aboutTor.dtd
index 502cbb8c..f61e2a91 100644
--- a/src/chrome/locale/zh-CN/aboutTor.dtd
+++ b/src/chrome/locale/zh-CN/aboutTor.dtd
@@ -27,16 +27,16 @@
<!ENTITY aboutTor.newsletter.tagline "通过邮件获取 Tor 的最新消息。">
<!ENTITY aboutTor.newsletter.link_text "注册 Tor 新闻列表">
-<!ENTITY aboutTor.donationBanner.line1 "Tor: Strength in Numbers">
+<!ENTITY aboutTor.donationBanner.line1 "Tor:众人拾柴火焰高">
-<!ENTITY aboutTor.donationBanner.line2a "Anonymity loves company.">
-<!ENTITY aboutTor.donationBanner.line2b "Advance universal human rights.">
-<!ENTITY aboutTor.donationBanner.line2c "Stand up for freedom.">
-<!ENTITY aboutTor.donationBanner.line2d "Protect the privacy of millions.">
-<!ENTITY aboutTor.donationBanner.line2e "Keep Tor strong.">
-<!ENTITY aboutTor.donationBanner.line2f "We need your support!">
+<!ENTITY aboutTor.donationBanner.line2a "匿名的表示对公司的爱意。">
+<!ENTITY aboutTor.donationBanner.line2b "推进基本人权。">
+<!ENTITY aboutTor.donationBanner.line2c "为自由呐喊。">
+<!ENTITY aboutTor.donationBanner.line2d "保护数百万人的隐私。">
+<!ENTITY aboutTor.donationBanner.line2e "让 Tor 网络保持健壮。">
+<!ENTITY aboutTor.donationBanner.line2f "我们需要你的帮助!">
-<!ENTITY aboutTor.donationBanner.line3 "Give today, and Mozilla will match your donation.">
+<!ENTITY aboutTor.donationBanner.line3 "现在捐款, Mozilla 也能从你的捐赠中受益。">
-<!ENTITY aboutTor.donationBanner.buttonA "Donate Now">
-<!ENTITY aboutTor.donationBanner.buttonB "Count Me In">
+<!ENTITY aboutTor.donationBanner.buttonA "现在就捐助">
+<!ENTITY aboutTor.donationBanner.buttonB "算我一个">
1
0

[torbutton/master] Bug 25013: Make `en` a symlink of `en-US` instead
by gk@torproject.org 12 Nov '18
by gk@torproject.org 12 Nov '18
12 Nov '18
commit 152a94d5779076525da8a420641ff82b6d85d6de
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Nov 12 13:14:25 2018 +0000
Bug 25013: Make `en` a symlink of `en-US` instead
---
src/chrome/locale/en | 1 +
src/chrome/locale/en-US | 1 -
src/chrome/locale/{en => en-US}/aboutDialog.dtd | 0
src/chrome/locale/{en => en-US}/aboutTBUpdate.dtd | 0
src/chrome/locale/{en => en-US}/aboutTor.dtd | 0
src/chrome/locale/{en => en-US}/brand.dtd | 0
src/chrome/locale/{en => en-US}/brand.properties | 0
src/chrome/locale/{en => en-US}/browserOnboarding.properties | 0
src/chrome/locale/{en => en-US}/torbutton.dtd | 0
src/chrome/locale/{en => en-US}/torbutton.properties | 0
10 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/chrome/locale/en b/src/chrome/locale/en
new file mode 120000
index 00000000..f2b0341f
--- /dev/null
+++ b/src/chrome/locale/en
@@ -0,0 +1 @@
+en-US
\ No newline at end of file
diff --git a/src/chrome/locale/en-US b/src/chrome/locale/en-US
deleted file mode 120000
index 2c4c454f..00000000
--- a/src/chrome/locale/en-US
+++ /dev/null
@@ -1 +0,0 @@
-en
\ No newline at end of file
diff --git a/src/chrome/locale/en/aboutDialog.dtd b/src/chrome/locale/en-US/aboutDialog.dtd
similarity index 100%
rename from src/chrome/locale/en/aboutDialog.dtd
rename to src/chrome/locale/en-US/aboutDialog.dtd
diff --git a/src/chrome/locale/en/aboutTBUpdate.dtd b/src/chrome/locale/en-US/aboutTBUpdate.dtd
similarity index 100%
rename from src/chrome/locale/en/aboutTBUpdate.dtd
rename to src/chrome/locale/en-US/aboutTBUpdate.dtd
diff --git a/src/chrome/locale/en/aboutTor.dtd b/src/chrome/locale/en-US/aboutTor.dtd
similarity index 100%
rename from src/chrome/locale/en/aboutTor.dtd
rename to src/chrome/locale/en-US/aboutTor.dtd
diff --git a/src/chrome/locale/en/brand.dtd b/src/chrome/locale/en-US/brand.dtd
similarity index 100%
rename from src/chrome/locale/en/brand.dtd
rename to src/chrome/locale/en-US/brand.dtd
diff --git a/src/chrome/locale/en/brand.properties b/src/chrome/locale/en-US/brand.properties
similarity index 100%
rename from src/chrome/locale/en/brand.properties
rename to src/chrome/locale/en-US/brand.properties
diff --git a/src/chrome/locale/en/browserOnboarding.properties b/src/chrome/locale/en-US/browserOnboarding.properties
similarity index 100%
rename from src/chrome/locale/en/browserOnboarding.properties
rename to src/chrome/locale/en-US/browserOnboarding.properties
diff --git a/src/chrome/locale/en/torbutton.dtd b/src/chrome/locale/en-US/torbutton.dtd
similarity index 100%
rename from src/chrome/locale/en/torbutton.dtd
rename to src/chrome/locale/en-US/torbutton.dtd
diff --git a/src/chrome/locale/en/torbutton.properties b/src/chrome/locale/en-US/torbutton.properties
similarity index 100%
rename from src/chrome/locale/en/torbutton.properties
rename to src/chrome/locale/en-US/torbutton.properties
1
0

[tor-browser/tor-browser-60.3.0esr-8.5-1] Bug 26540: Enabling pdfjs disableRange option prevents pdfs from loading
by gk@torproject.org 12 Nov '18
by gk@torproject.org 12 Nov '18
12 Nov '18
commit e00084a6a67ba6ab0c504421ed13a49765dc83d2
Author: Richard Pospesel <richard(a)torproject.org>
Date: Tue Nov 6 15:47:31 2018 -0800
Bug 26540: Enabling pdfjs disableRange option prevents pdfs from loading
Large pdf files download in parts via range-based requests so that users
can begin reading before the entire file has finished downloading. This
is implemented using XMLHttpRequests. However, since these requests are
created in the chrome, they are given the System Principal and lack the
correct firstPartyDomain associated with the parent window.
This patch manually sets the XMLHttpRequest's originAttributes to the
one provided by the real owning window cached in the RangedChromeActions
object. This is done via the chrome-only setOriginAttributes method.
The method is called in the xhr_onreadystatechanged() callback rather
than directly after construction in getXhr() because the
setOriginAttributes implementation requires the internal nsIChannel
object to have been created but not used. Fortunately, the
XMLHttpRequest object fires the readStateChangedEvent precisely after
the channel has been created in the XmlHttpRequest's Open() method.
The nsIChannel's nsILoadInfo's OriginAttributes are now overwritten
with the known OriginAttributes of the parent window before anything
else has had a chance to use it.
---
browser/extensions/pdfjs/content/PdfStreamConverter.jsm | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm
index a2ebec9450d4..a9978f7e7863 100644
--- a/browser/extensions/pdfjs/content/PdfStreamConverter.jsm
+++ b/browser/extensions/pdfjs/content/PdfStreamConverter.jsm
@@ -233,6 +233,15 @@ class ChromeActions {
return PrivateBrowsingUtils.isContentWindowPrivate(this.domWindow);
}
+ getWindowOriginAttributes()
+ {
+ try {
+ return this.domWindow.document.nodePrincipal.originAttributes;
+ } catch(err) {
+ return {};
+ }
+ }
+
download(data, sendResponse) {
var self = this;
var originalUrl = data.originalUrl;
@@ -591,6 +600,9 @@ class RangedChromeActions extends ChromeActions {
var self = this;
var xhr_onreadystatechange = function xhr_onreadystatechange() {
if (this.readyState === 1) { // LOADING
+ // override this XMLHttpRequest's OriginAttributes with our cached parent window's
+ // OriginAttributes, as we are currently running under the SystemPrincipal
+ this.setOriginAttributes(self.getWindowOriginAttributes());
var netChannel = this.channel;
if ("nsIPrivateBrowsingChannel" in Ci &&
netChannel instanceof Ci.nsIPrivateBrowsingChannel) {
1
0

12 Nov '18
commit 831c8bee11a464b42dcee9c84ad52fca07e5e241
Merge: 923fd850 78d26b12
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Nov 12 11:21:30 2018 +0000
Merge remote-tracking branch 'igt0/25013-v4'
makexpi.sh | 4 +--
moz.build | 12 ++++++++
src/chrome/content/torbutton.js | 2 --
src/chrome/locale/en-US | 1 +
src/jar.mn | 68 +++++++++++++++++++++++++++++++++++++++++
5 files changed, 83 insertions(+), 4 deletions(-)
1
0

[torbutton/master] bug 25013: Remove non needed import, it is already available in the window object
by gk@torproject.org 12 Nov '18
by gk@torproject.org 12 Nov '18
12 Nov '18
commit 9c2adcecd64ab6a390e305509fbe77d1acb9ea90
Author: Igor Oliveira <igt0(a)torproject.org>
Date: Mon Oct 22 07:56:35 2018 -0200
bug 25013: Remove non needed import, it is already available in the window object
---
src/chrome/content/torbutton.js | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index fc1a38d8..90da5827 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -13,8 +13,6 @@ let { unescapeTorString } = Cu.import("resource://torbutton/modules/utils.js", {
let SecurityPrefs = Cu.import("resource://torbutton/modules/security-prefs.js", {});
let { bindPrefAndInit, observe } = Cu.import("resource://torbutton/modules/utils.js", {});
-Cu.importGlobalProperties(["XMLHttpRequest"]);
-
const k_tb_last_browser_version_pref = "extensions.torbutton.lastBrowserVersion";
const k_tb_browser_update_needed_pref = "extensions.torbutton.updateNeeded";
const k_tb_last_update_check_pref = "extensions.torbutton.lastUpdateCheck";
1
0