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
January 2019
- 15 participants
- 2081 discussions

[tor-browser-build/master] Bug 25702: Activity 1.1 Update Tor Browser icon to follow design guidelines
by gk@torproject.org 21 Jan '19
by gk@torproject.org 21 Jan '19
21 Jan '19
commit 1f83faba6016d988303a125abcee67aff63a7142
Author: Richard Pospesel <richard(a)torproject.org>
Date: Tue Nov 20 17:15:29 2018 -0800
Bug 25702: Activity 1.1 Update Tor Browser icon to follow design guidelines
Updated firefox build and config to pass appropriate path for
tor-browser branding using the --with-branding ./mach configure flag.
---
projects/firefox/build | 2 +-
projects/firefox/config | 3 +++
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/projects/firefox/build b/projects/firefox/build
index b9d9d5a..6252686 100644
--- a/projects/firefox/build
+++ b/projects/firefox/build
@@ -158,7 +158,7 @@ fi
rm -f configure
rm -f js/src/configure
-./mach configure --with-tor-browser-version=[% c("var/torbrowser_version") %] --with-distribution-id=org.torproject --enable-update-channel=[% c("var/torbrowser_update_channel") %] --enable-bundled-fonts
+./mach configure --with-tor-browser-version=[% c("var/torbrowser_version") %] --with-distribution-id=org.torproject --enable-update-channel=[% c("var/torbrowser_update_channel") %] --enable-bundled-fonts --with-branding=[% c("var/branding_directory") %]
./mach build --verbose
[% IF c("var/android") %]
diff --git a/projects/firefox/config b/projects/firefox/config
index 639d504..ed63979 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -12,6 +12,7 @@ var:
firefox_version: '[% c("var/firefox_platform_version") %]esr'
torbrowser_branch: 8.5
torbrowser_update_channel: alpha
+ branding_directory: browser/branding/alpha
copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]'
deps:
- build-essential
@@ -31,12 +32,14 @@ targets:
release:
var:
torbrowser_update_channel: release
+ branding_directory: browser/branding/official
nightly:
git_hash: 'tor-browser-[% c("var/firefox_version") %]-[% c("var/torbrowser_branch") %]-1'
tag_gpg_id: 0
var:
torbrowser_update_channel: default
+ branding_directory: browser/branding/nightly
android-armv7:
var:
1
0

[torbutton/master] Bug 25702: Update Tor Browser icon to follow design guidelines
by gk@torproject.org 21 Jan '19
by gk@torproject.org 21 Jan '19
21 Jan '19
commit 0c52aa0a90de3c98938d583c2faae0a9f8a11c58
Author: Richard Pospesel <richard(a)torproject.org>
Date: Tue Nov 20 17:11:10 2018 -0800
Bug 25702: Update Tor Browser icon to follow design guidelines
Updated aboutDialog.css to point to the branded default256.png icon now
stored in the firefox jar. Removed old default256.png from torbutton.
---
src/chrome/skin/aboutDialog.css | 2 +-
src/chrome/skin/default256.png | Bin 48898 -> 0 bytes
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/chrome/skin/aboutDialog.css b/src/chrome/skin/aboutDialog.css
index 89eff534..981d68e2 100644
--- a/src/chrome/skin/aboutDialog.css
+++ b/src/chrome/skin/aboutDialog.css
@@ -1,5 +1,5 @@
#leftBox {
- background-image: url('chrome://torbutton/skin/default256.png');
+ background-image: url('chrome://branding/content/icon256.png');
background-position: right top;
background-size: 180px;
}
diff --git a/src/chrome/skin/default256.png b/src/chrome/skin/default256.png
deleted file mode 100644
index 3d440fb5..00000000
Binary files a/src/chrome/skin/default256.png and /dev/null differ
1
0

[tor-browser/tor-browser-60.4.0esr-8.5-1] Bug 25702: Update Tor Browser icon to follow design guidelines
by gk@torproject.org 21 Jan '19
by gk@torproject.org 21 Jan '19
21 Jan '19
commit 7f7a40f907f74a531642a5cb4982f2d762316d38
Author: Richard Pospesel <richard(a)torproject.org>
Date: Fri Jan 11 16:08:47 2019 -0800
Bug 25702: Update Tor Browser icon to follow design guidelines
- Updated all of the branding in /browser/branding/official with new 'stable'
icon series.
- Updated /extensions/onboarding/content/img/tor-watermark.png with new icon and
add the source svg in the same directory
- Copied /browser/branding/official over /browser/branding/nightly and the new
/browser/branding/alpha directories. Replaced content with 'nightly' and
'alpha' icon series.
Updated VisualElements_70.png and VisualElements_150.png with updated icons in
each branding directory (fixes #22654)
- Updated firefox.VisualElementsManfiest.xml with updated colors in each
branding directory
- Updated content/identity-icons-brand.svg with Tor Browser icon (fixes #28111)
- Added firefox.svg to each branding directory from which all the other icons
are derived (apart from document.icns and document.ico)
- Added default256.png and default512.png icons
- Updated aboutTBUpdate.css to point to branding-aware icon128.png and removed
original icon
---
.../base/content/abouttbupdate/aboutTBUpdate.css | 2 +-
.../content/abouttbupdate/aboutTBUpdateLogo.png | Bin 23266 -> 0 bytes
browser/base/jar.mn | 1 -
browser/branding/alpha/VisualElements_150.png | Bin 0 -> 8412 bytes
browser/branding/alpha/VisualElements_70.png | Bin 0 -> 3496 bytes
browser/branding/alpha/background.png | Bin 0 -> 9347 bytes
browser/branding/alpha/bgstub.jpg | Bin 0 -> 12506 bytes
browser/branding/alpha/bgstub_2x.jpg | Bin 0 -> 49771 bytes
browser/branding/alpha/branding.nsi | 47 ++++++++++++++++++++
browser/branding/alpha/configure.sh | 5 +++
browser/branding/alpha/content/about-logo.png | Bin 0 -> 21173 bytes
browser/branding/alpha/content/about-logo(a)2x.png | Bin 0 -> 51309 bytes
browser/branding/alpha/content/about-wordmark.svg | 36 ++++++++++++++++
browser/branding/alpha/content/about.png | Bin 0 -> 18520 bytes
browser/branding/alpha/content/aboutDialog.css | 45 +++++++++++++++++++
.../alpha/content/identity-icons-brand.svg | 25 +++++++++++
browser/branding/alpha/content/jar.mn | 19 ++++++++
browser/branding/alpha/content/moz.build | 7 +++
browser/branding/alpha/default128.png | Bin 0 -> 9397 bytes
browser/branding/alpha/default16.png | Bin 0 -> 811 bytes
browser/branding/alpha/default256.png | Bin 0 -> 20481 bytes
browser/branding/alpha/default32.png | Bin 0 -> 1956 bytes
browser/branding/alpha/default48.png | Bin 0 -> 3067 bytes
browser/branding/alpha/default512.png | Bin 0 -> 44907 bytes
browser/branding/alpha/default64.png | Bin 0 -> 4318 bytes
browser/branding/alpha/disk.icns | Bin 0 -> 1548786 bytes
browser/branding/alpha/document.icns | Bin 0 -> 564054 bytes
browser/branding/alpha/document.ico | Bin 0 -> 119671 bytes
browser/branding/alpha/dsstore | Bin 0 -> 14340 bytes
.../alpha/firefox.VisualElementsManifest.xml | 8 ++++
browser/branding/alpha/firefox.icns | Bin 0 -> 30823 bytes
browser/branding/alpha/firefox.ico | Bin 0 -> 119941 bytes
browser/branding/alpha/firefox.svg | 25 +++++++++++
browser/branding/alpha/firefox64.ico | Bin 0 -> 119941 bytes
.../alpha/locales/browserconfig.properties | 6 +++
browser/branding/alpha/locales/en-US/brand.dtd | 9 ++++
browser/branding/alpha/locales/en-US/brand.ftl | 15 +++++++
.../branding/alpha/locales/en-US/brand.properties | 10 +++++
.../alpha/locales/en-US/tor-browser-brand.ftl | 5 +++
browser/branding/alpha/locales/jar.mn | 13 ++++++
browser/branding/alpha/locales/moz.build | 7 +++
browser/branding/alpha/moz.build | 13 ++++++
browser/branding/alpha/newtab.ico | Bin 0 -> 6518 bytes
browser/branding/alpha/newwindow.ico | Bin 0 -> 6518 bytes
browser/branding/alpha/pbmode.ico | Bin 0 -> 6518 bytes
browser/branding/alpha/pref/firefox-branding.js | 37 ++++++++++++++++
browser/branding/alpha/wizHeader.bmp | Bin 0 -> 34254 bytes
browser/branding/alpha/wizHeaderRTL.bmp | Bin 0 -> 34254 bytes
browser/branding/alpha/wizWatermark.bmp | Bin 0 -> 206038 bytes
browser/branding/branding-common.mozbuild | 2 +
browser/branding/nightly/VisualElements_150.png | Bin 21725 -> 11666 bytes
browser/branding/nightly/VisualElements_70.png | Bin 8636 -> 4273 bytes
browser/branding/nightly/configure.sh | 3 +-
.../nightly/content/identity-icons-brand.svg | 39 ++++++++++++-----
browser/branding/nightly/content/jar.mn | 2 +
browser/branding/nightly/default128.png | Bin 12923 -> 13686 bytes
browser/branding/nightly/default16.png | Bin 783 -> 891 bytes
browser/branding/nightly/default256.png | Bin 0 -> 33587 bytes
browser/branding/nightly/default32.png | Bin 2137 -> 2254 bytes
browser/branding/nightly/default48.png | Bin 3578 -> 3789 bytes
browser/branding/nightly/default512.png | Bin 0 -> 87830 bytes
browser/branding/nightly/default64.png | Bin 5262 -> 5426 bytes
browser/branding/nightly/document.icns | Bin 463531 -> 689723 bytes
browser/branding/nightly/document.ico | Bin 45441 -> 124422 bytes
.../nightly/firefox.VisualElementsManifest.xml | 2 +-
browser/branding/nightly/firefox.icns | Bin 834324 -> 41613 bytes
browser/branding/nightly/firefox.ico | Bin 68763 -> 131711 bytes
browser/branding/nightly/firefox.svg | 29 +++++++++++++
browser/branding/nightly/firefox64.ico | Bin 38630 -> 131711 bytes
browser/branding/nightly/locales/en-US/brand.dtd | 10 ++---
.../nightly/locales/en-US/brand.properties | 8 ++--
.../nightly/locales/en-US/tor-browser-brand.ftl | 5 +++
browser/branding/nightly/locales/jar.mn | 7 ++-
browser/branding/nightly/locales/moz.build | 2 -
browser/branding/nightly/pref/firefox-branding.js | 31 ++++++-------
browser/branding/nightly/wizHeader.bmp | Bin 25820 -> 34254 bytes
browser/branding/nightly/wizHeaderRTL.bmp | Bin 25820 -> 34254 bytes
browser/branding/nightly/wizWatermark.bmp | Bin 154544 -> 206038 bytes
browser/branding/official/VisualElements_150.png | Bin 21353 -> 7949 bytes
browser/branding/official/VisualElements_70.png | Bin 8532 -> 3374 bytes
.../official/content/identity-icons-brand.svg | 48 +++++++++++++--------
browser/branding/official/content/jar.mn | 2 +
browser/branding/official/default128.png | Bin 20445 -> 9007 bytes
browser/branding/official/default16.png | Bin 1413 -> 839 bytes
browser/branding/official/default22.png | Bin 1740 -> 0 bytes
browser/branding/official/default24.png | Bin 1969 -> 0 bytes
browser/branding/official/default256.png | Bin 48401 -> 19136 bytes
browser/branding/official/default32.png | Bin 2907 -> 1965 bytes
browser/branding/official/default48.png | Bin 5190 -> 3074 bytes
browser/branding/official/default512.png | Bin 0 -> 40438 bytes
browser/branding/official/default64.png | Bin 7805 -> 4196 bytes
browser/branding/official/document.icns | Bin 195435 -> 509227 bytes
browser/branding/official/document.ico | Bin 54601 -> 119916 bytes
.../official/firefox.VisualElementsManifest.xml | 2 +-
browser/branding/official/firefox.icns | Bin 242224 -> 31329 bytes
browser/branding/official/firefox.ico | Bin 75112 -> 118595 bytes
browser/branding/official/firefox.svg | 31 +++++++++++++
browser/branding/official/firefox64.ico | Bin 75112 -> 118595 bytes
browser/branding/official/mozicon128.png | Bin 19033 -> 0 bytes
.../onboarding/content/img/tor-watermark.png | Bin 5705 -> 3064 bytes
.../onboarding/content/img/tor-watermark.svg | 6 +++
.../shared/identity-block/identity-block.inc.css | 10 ++++-
102 files changed, 510 insertions(+), 64 deletions(-)
diff --git a/browser/base/content/abouttbupdate/aboutTBUpdate.css b/browser/base/content/abouttbupdate/aboutTBUpdate.css
index 7ec1950e1474..dc42f8ff5f9e 100644
--- a/browser/base/content/abouttbupdate/aboutTBUpdate.css
+++ b/browser/base/content/abouttbupdate/aboutTBUpdate.css
@@ -36,7 +36,7 @@ a {
}
#logo {
- background-image: url("chrome://browser/content/abouttbupdate/aboutTBUpdateLogo.png");
+ background-image: url("chrome://branding/content/icon128.png");
height: 128px;
width: 128px;
margin: 20px;
diff --git a/browser/base/content/abouttbupdate/aboutTBUpdateLogo.png b/browser/base/content/abouttbupdate/aboutTBUpdateLogo.png
deleted file mode 100644
index be5cae93fa96..000000000000
Binary files a/browser/base/content/abouttbupdate/aboutTBUpdateLogo.png and /dev/null differ
diff --git a/browser/base/jar.mn b/browser/base/jar.mn
index 1f7e132beb04..182c1711e422 100644
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -48,7 +48,6 @@ browser.jar:
content/browser/abouttbupdate/aboutTBUpdate.xhtml (content/abouttbupdate/aboutTBUpdate.xhtml)
content/browser/abouttbupdate/aboutTBUpdate.js (content/abouttbupdate/aboutTBUpdate.js)
content/browser/abouttbupdate/aboutTBUpdate.css (content/abouttbupdate/aboutTBUpdate.css)
- content/browser/abouttbupdate/aboutTBUpdateLogo.png (content/abouttbupdate/aboutTBUpdateLogo.png)
#endif
* content/browser/browser.css (content/browser.css)
content/browser/browser.js (content/browser.js)
diff --git a/browser/branding/alpha/VisualElements_150.png b/browser/branding/alpha/VisualElements_150.png
new file mode 100644
index 000000000000..fbf4af94d813
Binary files /dev/null and b/browser/branding/alpha/VisualElements_150.png differ
diff --git a/browser/branding/alpha/VisualElements_70.png b/browser/branding/alpha/VisualElements_70.png
new file mode 100644
index 000000000000..1add6b0e77ff
Binary files /dev/null and b/browser/branding/alpha/VisualElements_70.png differ
diff --git a/browser/branding/alpha/background.png b/browser/branding/alpha/background.png
new file mode 100644
index 000000000000..a30b7d488b02
Binary files /dev/null and b/browser/branding/alpha/background.png differ
diff --git a/browser/branding/alpha/bgstub.jpg b/browser/branding/alpha/bgstub.jpg
new file mode 100644
index 000000000000..3b78c9498c93
Binary files /dev/null and b/browser/branding/alpha/bgstub.jpg differ
diff --git a/browser/branding/alpha/bgstub_2x.jpg b/browser/branding/alpha/bgstub_2x.jpg
new file mode 100644
index 000000000000..c724d1803c26
Binary files /dev/null and b/browser/branding/alpha/bgstub_2x.jpg differ
diff --git a/browser/branding/alpha/branding.nsi b/browser/branding/alpha/branding.nsi
new file mode 100644
index 000000000000..84d6d910b69d
--- /dev/null
+++ b/browser/branding/alpha/branding.nsi
@@ -0,0 +1,47 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# NSIS branding defines for nightly builds.
+# The official release build branding.nsi is located in other-license/branding/firefox/
+# The unofficial build branding.nsi is located in browser/branding/unofficial/
+
+# BrandFullNameInternal is used for some registry and file system values
+# instead of BrandFullName and typically should not be modified.
+!define BrandFullNameInternal "Nightly"
+!define BrandFullName "Firefox Nightly"
+!define CompanyName "mozilla.org"
+!define URLInfoAbout "https://www.mozilla.org"
+!define HelpLink "https://support.mozilla.org"
+
+!define URLStubDownload32 "https://download.mozilla.org/?os=win&lang=${AB_CD}&product=firefox-nightly-…"
+!define URLStubDownload64 "https://download.mozilla.org/?os=win64&lang=${AB_CD}&product=firefox-nightl…"
+!define URLManualDownload "https://www.mozilla.org/${AB_CD}/firefox/installer-help/?channel=nightly&in…"
+!define URLSystemRequirements "https://www.mozilla.org/firefox/system-requirements/"
+!define Channel "nightly"
+
+# The installer's certificate name and issuer expected by the stub installer
+!define CertNameDownload "Mozilla Corporation"
+!define CertIssuerDownload "DigiCert SHA2 Assured ID Code Signing CA"
+
+# Dialog units are used so the UI displays correctly with the system's DPI
+# settings.
+# The dialog units for the bitmap's dimensions should match exactly with the
+# bitmap's width and height in pixels.
+!define APPNAME_BMP_WIDTH_DU 159u
+!define APPNAME_BMP_HEIGHT_DU 28u
+!define INTRO_BLURB_WIDTH_DU "230u"
+!define INTRO_BLURB_EDGE_DU "198u"
+!define INTRO_BLURB_LTR_TOP_DU "16u"
+!define INTRO_BLURB_RTL_TOP_DU "11u"
+
+# UI Colors that can be customized for each channel
+!define FOOTER_CONTROL_TEXT_COLOR_NORMAL 0x000000
+!define FOOTER_CONTROL_TEXT_COLOR_FADED 0x999999
+!define FOOTER_BKGRD_COLOR 0xFFFFFF
+!define INTRO_BLURB_TEXT_COLOR 0xFFFFFF
+!define INSTALL_BLURB_TEXT_COLOR 0xFFFFFF
+!define INSTALL_PROGRESS_TEXT_COLOR_NORMAL 0xFFFFFF
+!define COMMON_TEXT_COLOR_NORMAL 0xFFFFFF
+!define COMMON_TEXT_COLOR_FADED 0xA1AAB3
+!define COMMON_BKGRD_COLOR 0x0F1B26
diff --git a/browser/branding/alpha/configure.sh b/browser/branding/alpha/configure.sh
new file mode 100644
index 000000000000..243091484f75
--- /dev/null
+++ b/browser/branding/alpha/configure.sh
@@ -0,0 +1,5 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+MOZ_APP_DISPLAYNAME="Tor Browser"
diff --git a/browser/branding/alpha/content/about-logo.png b/browser/branding/alpha/content/about-logo.png
new file mode 100644
index 000000000000..7d705be61dfd
Binary files /dev/null and b/browser/branding/alpha/content/about-logo.png differ
diff --git a/browser/branding/alpha/content/about-logo(a)2x.png b/browser/branding/alpha/content/about-logo(a)2x.png
new file mode 100644
index 000000000000..193c856f3e8c
Binary files /dev/null and b/browser/branding/alpha/content/about-logo(a)2x.png differ
diff --git a/browser/branding/alpha/content/about-wordmark.svg b/browser/branding/alpha/content/about-wordmark.svg
new file mode 100644
index 000000000000..6f71130b417d
--- /dev/null
+++ b/browser/branding/alpha/content/about-wordmark.svg
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<svg xmlns="http://www.w3.org/2000/svg" width="270px" height="48px" viewBox="0 0 270 48">
+ <path fill="#fff" d="M75.5,11.8V7.9c0-2.2,1.2-3.5,3.1-3.5c1,0,1.8,0.3,3,0.9l1.8-3.5c-1.7-1-3.5-1.4-5.7-1.4
+ C73.2,0.3,70,2.8,70,8c0,2.3,0.2,3.7,0.2,3.7h-2.5v3.8H70V37h5.4V15.6h5.1l1.4-3.8H75.5z M92.3,11.2c-6.7,0-11,5.2-11,13.3
+ c0,8.1,4.3,13.2,11.1,13.2c6.8,0,11.2-5,11.2-13.2C103.6,16.5,99.5,11.2,92.3,11.2z M92.5,33.6c-3.3,0-5.1-2.1-5.1-9.5
+ c0-6.1,1.5-8.8,5-8.8c3.2,0,5.2,2.1,5.2,9.3C97.6,30.9,95.8,33.6,92.5,33.6z M43.7,11.1c-2.5,0-4.4,1.3-6.4,4c0-1.4-0.3-2.8-0.9-4
+ l-5,1.3c0.6,1.6,0.9,3.6,0.9,6.8V37h5.5V19.9c0.5-2,2.4-3.7,4.7-3.7c0.6,0,1,0.1,1.6,0.4l1.7-5.1C45,11.2,44.5,11.1,43.7,11.1z
+ M0,37h5.7V21.2h9.6v-4.6H5.7V7.2h11.8l0.7-4.7H0V37z M21.4,37h5.5V11.2l-5.5,1V37z M24.2,0.7c-2,0-3.6,1.6-3.6,3.7
+ c0,2,1.5,3.6,3.5,3.6c2,0,3.7-1.6,3.7-3.6C27.8,2.3,26.2,0.7,24.2,0.7z M125.2,11.8h-6.4c-0.7,1.1-3.3,6.1-4,7.7
+ c-1.2-2.3-3.4-6.3-4.6-8.2l-5.9,1.2l7.3,10.8L102.2,37h6.9c0.9-1.4,4.5-7.5,5.5-9.4c0.5,0.9,4.6,8,5.5,9.4h6.9l-9.2-13.8L125.2,11.8
+ z M62.7,13.8c-2.1-1.9-4.4-2.6-6.9-2.6c-3.2,0-5.7,1-7.7,3.4C45.9,17.1,45,20,45,24.5c0,8.1,4.5,13.2,11.6,13.2
+ c3.4,0,6.4-1.1,9.1-3.3L63.4,31c-1.9,1.6-3.9,2.5-6.3,2.5c-4.9,0-6.2-3.7-6.2-7.2v-0.4H66v-1.2C66,18.9,64.9,15.8,62.7,13.8z
+ M51,21.8c0-4.1,1.7-6.5,4.8-6.5c2.8,0,4.5,2.4,4.5,6.5H51z M198.5,14.3l-2.4-2.4c-1.2,0.8-2.2,1.1-3.5,1.1c-3,0-3.8-1.4-7.6-1.4
+ c-5.4,0-9.2,3.4-9.2,8.4c0,3.3,2.2,6.1,5.6,7.2c-3.4,1-4.5,2.2-4.5,4.3c0,2.2,1.8,3.6,4.7,3.6h3.8c2.5,0,3.9,0.2,4.9,0.9
+ c0.9,0.6,1.4,1.6,1.4,3c0,3.1-2.2,4.4-6,4.4c-2,0-3.8-0.5-5.1-1.2c-0.9-0.6-1.5-1.6-1.5-2.9c0-0.8,0.3-1.7,0.7-2.2l-4.1,0.4
+ c-0.3,1-0.5,1.7-0.5,2.6c0,3.5,3,6.4,10.8,6.4c6.1,0,9.9-2.5,9.9-7.9c0-2.1-0.8-3.9-2.7-5.3c-1.5-1.1-3.1-1.4-6-1.4h-4
+ c-1.3,0-2-0.5-2-1.2c0-0.8,1.1-1.7,4.5-2.9c1.8,0,3.4-0.3,4.7-1.1c2.3-1.4,3.7-4.1,3.7-6.8c0-1.6-0.5-3-1.5-4.3
+ c0.4,0.2,1.1,0.3,1.7,0.3C195.8,15.8,196.9,15.4,198.5,14.3z M185,24.8c-3.1,0-4.8-1.7-4.8-4.8c0-3.5,1.6-5.1,4.7-5.1
+ c3.3,0,4.6,1.5,4.6,4.9C189.5,23.1,188,24.8,185,24.8z M168.6,1.3c-1.7,0-3,1.4-3,3.1c0,1.7,1.4,3,3,3c1.7,0,3.1-1.3,3.1-3
+ C171.6,2.7,170.3,1.3,168.6,1.3z M245.7,34.5c-1.1,0-1.4-0.6-1.4-2.5V6.5c0-3.8-0.6-5.9-0.6-5.9l-3.9,0.8c0,0,0.6,1.9,0.6,5.1v26.4
+ c0,1.8,0.4,2.8,1.2,3.5c0.7,0.7,1.7,1,2.9,1c1,0,1.5-0.1,2.5-0.5l-0.8-2.5C246.2,34.4,245.8,34.5,245.7,34.5z M212.7,11.6
+ c-3.2,0-6.1,1.8-8.3,3.9c0,0,0.2-1.8,0.2-3.4V6.3c0-3.8-0.7-5.9-0.7-5.9L200,1.1c0,0,0.7,1.9,0.7,5.1V37h3.9V19.3
+ c2.1-2.7,4.9-4.2,7.2-4.2c1.3,0,2.3,0.4,2.9,1c0.7,0.7,0.9,1.8,0.9,3.7V37h3.8V19.1c0-1.8-0.1-2.6-0.4-3.6
+ C218.4,13.2,215.7,11.6,212.7,11.6z M265.4,12.1l-4.9,16.4c-0.6,2-1.6,5.2-1.6,5.2s-0.7-3.9-1.5-6.2l-5.1-16.2l-3.9,1.3l5.4,15.6
+ c0.8,2.5,2.2,7.4,2.5,9l1.6-0.3c-1.3,5.1-2.5,6.7-5.7,7.6l1.2,2.7c4.4-1,6.4-4.3,8-9.3l8.6-25.8H265.4z M234.9,15l1.2-2.9h-6.2
+ c0-3.3,0.5-7.2,0.5-7.2l-4.1,0.9c0,0-0.4,3.9-0.4,6.3h-3.2V15h3.2v17.1c0,2.5,0.7,4.1,2.4,5c0.9,0.4,1.9,0.7,3.3,0.7
+ c1.8,0,3.1-0.4,4.4-1l-0.6-2.5c-0.7,0.3-1.3,0.5-2.4,0.5c-2.4,0-3.2-0.9-3.2-3.7V15H234.9z M166.5,37h4.1V11.5l-4.1,0.6V37z
+ M156.8,21.3c0,5,0.4,10.5,0.4,10.5s-1.4-3.8-3.2-7.2L142.7,2.7h-4.8V37h4.2l-0.2-19.9c0-4.5-0.4-9.3-0.4-9.3s1.7,4.1,3.9,8.2l11,21
+ h4.3V2.7h-4L156.8,21.3z M128.3,12.9c-0.3-0.1-0.7-0.1-1-0.1v2.3h0.3v-1c0.3,0,0.7,1,0.7,1s0.2,0,0.4,0c-0.2-0.3-0.3-0.7-0.6-1
+ C128.8,14.1,128.9,13.1,128.3,12.9z M127.6,13.8v-0.7c0,0,0.7,0,0.7,0.3C128.3,13.9,127.8,13.9,127.6,13.8z M128,12
+ c-1.1,0-2,0.9-2,2s0.9,2,2,2s2-0.9,2-2S129.1,12,128,12z M128,15.5c-0.8,0-1.5-0.7-1.5-1.5s0.7-1.5,1.5-1.5s1.5,0.7,1.5,1.5
+ S128.8,15.5,128,15.5z"/>
+</svg>
diff --git a/browser/branding/alpha/content/about.png b/browser/branding/alpha/content/about.png
new file mode 100644
index 000000000000..3b93625ddd70
Binary files /dev/null and b/browser/branding/alpha/content/about.png differ
diff --git a/browser/branding/alpha/content/aboutDialog.css b/browser/branding/alpha/content/aboutDialog.css
new file mode 100644
index 000000000000..450a3b2783c1
--- /dev/null
+++ b/browser/branding/alpha/content/aboutDialog.css
@@ -0,0 +1,45 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#aboutDialogContainer {
+ background-color: #000f40;
+ color: #fff;
+}
+
+#leftBox {
+ background-image: url("chrome://branding/content/about-logo.png");
+ background-repeat: no-repeat;
+ background-size: 192px auto;
+ background-position: center 20%;
+ /* min-width and min-height create room for the logo */
+ min-width: 210px;
+ min-height: 210px;
+ margin-top: 20px;
+ margin-inline-start: 30px;
+}
+
+@media (min-resolution: 2dppx) {
+ #leftBox {
+ background-image: url("chrome://branding/content/about-logo@2x.png");
+ }
+}
+
+.text-link {
+ color: #fff !important;
+ text-decoration: underline;
+}
+
+.text-link:-moz-focusring {
+ border-color: #fff;
+}
+
+#rightBox {
+ margin-left: 30px;
+ margin-right: 30px;
+}
+
+#bottomBox {
+ background-color: #0f1126;
+ padding: 15px 10px 15px;
+}
diff --git a/browser/branding/alpha/content/identity-icons-brand.svg b/browser/branding/alpha/content/identity-icons-brand.svg
new file mode 100644
index 000000000000..9bfa43842e2d
--- /dev/null
+++ b/browser/branding/alpha/content/identity-icons-brand.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="-17 -17 546 546" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="50%" y1="3.27248873%" x2="50%" y2="97.1599968%" id="linearGradient-1">
+ <stop stop-color="#00FEFF" offset="0%"></stop>
+ <stop stop-color="#0BE67D" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,25 C152.50841,25 255.874399,127.979815 255.874399,255.011855 C255.874399,382.043895 152.50841,485.02371 25,485.02371 L25,25 Z" id="path-2"></path>
+ <filter x="-20.8%" y="-8.7%" width="134.7%" height="117.4%" filterUnits="objectBoundingBox" id="filter-3">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="12" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.0872579578 0 0 0 0 0.00490370801 0 0 0 0 0.234933036 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Alpha" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g>
+ <circle id="background" fill-opacity="0.9" fill="#030004" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384044,2.842170
94e-14 256,2.84217094e-14 C114.60886,2.84217094e-14 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.437200, 255.011855) scale(-1, 1) translate(-140.437200, -255.011855) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+ <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/branding/alpha/content/jar.mn b/browser/branding/alpha/content/jar.mn
new file mode 100644
index 000000000000..512af80a55de
--- /dev/null
+++ b/browser/branding/alpha/content/jar.mn
@@ -0,0 +1,19 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+browser.jar:
+% content branding %content/branding/ contentaccessible=yes
+ content/branding/about.png
+ content/branding/about-logo.png
+ content/branding/about-logo(a)2x.png
+ content/branding/about-wordmark.svg
+ content/branding/icon16.png (../default16.png)
+ content/branding/icon32.png (../default32.png)
+ content/branding/icon48.png (../default48.png)
+ content/branding/icon64.png (../default64.png)
+ content/branding/icon128.png (../default128.png)
+ content/branding/icon256.png (../default256.png)
+ content/branding/icon512.png (../default512.png)
+ content/branding/identity-icons-brand.svg
+ content/branding/aboutDialog.css
diff --git a/browser/branding/alpha/content/moz.build b/browser/branding/alpha/content/moz.build
new file mode 100644
index 000000000000..eb4454d28f88
--- /dev/null
+++ b/browser/branding/alpha/content/moz.build
@@ -0,0 +1,7 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
\ No newline at end of file
diff --git a/browser/branding/alpha/default128.png b/browser/branding/alpha/default128.png
new file mode 100644
index 000000000000..fbc27b91d118
Binary files /dev/null and b/browser/branding/alpha/default128.png differ
diff --git a/browser/branding/alpha/default16.png b/browser/branding/alpha/default16.png
new file mode 100644
index 000000000000..3a4e1b679b27
Binary files /dev/null and b/browser/branding/alpha/default16.png differ
diff --git a/browser/branding/alpha/default256.png b/browser/branding/alpha/default256.png
new file mode 100644
index 000000000000..844f1a0323ee
Binary files /dev/null and b/browser/branding/alpha/default256.png differ
diff --git a/browser/branding/alpha/default32.png b/browser/branding/alpha/default32.png
new file mode 100644
index 000000000000..679f5f9db43f
Binary files /dev/null and b/browser/branding/alpha/default32.png differ
diff --git a/browser/branding/alpha/default48.png b/browser/branding/alpha/default48.png
new file mode 100644
index 000000000000..85f0253d88ca
Binary files /dev/null and b/browser/branding/alpha/default48.png differ
diff --git a/browser/branding/alpha/default512.png b/browser/branding/alpha/default512.png
new file mode 100644
index 000000000000..b12f58b88bb4
Binary files /dev/null and b/browser/branding/alpha/default512.png differ
diff --git a/browser/branding/alpha/default64.png b/browser/branding/alpha/default64.png
new file mode 100644
index 000000000000..c48f1c5bf4ee
Binary files /dev/null and b/browser/branding/alpha/default64.png differ
diff --git a/browser/branding/alpha/disk.icns b/browser/branding/alpha/disk.icns
new file mode 100644
index 000000000000..866d93a43bc8
Binary files /dev/null and b/browser/branding/alpha/disk.icns differ
diff --git a/browser/branding/alpha/document.icns b/browser/branding/alpha/document.icns
new file mode 100644
index 000000000000..7fbfffe2228e
Binary files /dev/null and b/browser/branding/alpha/document.icns differ
diff --git a/browser/branding/alpha/document.ico b/browser/branding/alpha/document.ico
new file mode 100644
index 000000000000..45aa08bb1658
Binary files /dev/null and b/browser/branding/alpha/document.ico differ
diff --git a/browser/branding/alpha/dsstore b/browser/branding/alpha/dsstore
new file mode 100644
index 000000000000..6b82c923a662
Binary files /dev/null and b/browser/branding/alpha/dsstore differ
diff --git a/browser/branding/alpha/firefox.VisualElementsManifest.xml b/browser/branding/alpha/firefox.VisualElementsManifest.xml
new file mode 100644
index 000000000000..15e2690fdd04
--- /dev/null
+++ b/browser/branding/alpha/firefox.VisualElementsManifest.xml
@@ -0,0 +1,8 @@
+<Application xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
+ <VisualElements
+ ShowNameOnSquare150x150Logo='on'
+ Square150x150Logo='browser\VisualElements\VisualElements_150.png'
+ Square70x70Logo='browser\VisualElements\VisualElements_70.png'
+ ForegroundText='light'
+ BackgroundColor='#1c191d'/>
+</Application>
diff --git a/browser/branding/alpha/firefox.icns b/browser/branding/alpha/firefox.icns
new file mode 100644
index 000000000000..174fb21dd662
Binary files /dev/null and b/browser/branding/alpha/firefox.icns differ
diff --git a/browser/branding/alpha/firefox.ico b/browser/branding/alpha/firefox.ico
new file mode 100644
index 000000000000..e25514996d37
Binary files /dev/null and b/browser/branding/alpha/firefox.ico differ
diff --git a/browser/branding/alpha/firefox.svg b/browser/branding/alpha/firefox.svg
new file mode 100644
index 000000000000..250c7adea0d6
--- /dev/null
+++ b/browser/branding/alpha/firefox.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="50%" y1="3.27248873%" x2="50%" y2="97.1599968%" id="linearGradient-1">
+ <stop stop-color="#00FEFF" offset="0%"></stop>
+ <stop stop-color="#0BE67D" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,25 C152.50841,25 255.874399,127.979815 255.874399,255.011855 C255.874399,382.043895 152.50841,485.02371 25,485.02371 L25,25 Z" id="path-2"></path>
+ <filter x="-20.8%" y="-8.7%" width="134.7%" height="117.4%" filterUnits="objectBoundingBox" id="filter-3">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="12" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.0872579578 0 0 0 0 0.00490370801 0 0 0 0 0.234933036 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Alpha" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g>
+ <circle id="background" fill-opacity="0.9" fill="#030004" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384044,2.842170
94e-14 256,2.84217094e-14 C114.60886,2.84217094e-14 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.437200, 255.011855) scale(-1, 1) translate(-140.437200, -255.011855) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+ <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/branding/alpha/firefox64.ico b/browser/branding/alpha/firefox64.ico
new file mode 100644
index 000000000000..e25514996d37
Binary files /dev/null and b/browser/branding/alpha/firefox64.ico differ
diff --git a/browser/branding/alpha/locales/browserconfig.properties b/browser/branding/alpha/locales/browserconfig.properties
new file mode 100644
index 000000000000..06cefece3b1e
--- /dev/null
+++ b/browser/branding/alpha/locales/browserconfig.properties
@@ -0,0 +1,6 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Do NOT localize or otherwise change these values
+browser.startup.homepage=about:home
diff --git a/browser/branding/alpha/locales/en-US/brand.dtd b/browser/branding/alpha/locales/en-US/brand.dtd
new file mode 100644
index 000000000000..aac10c9a47ac
--- /dev/null
+++ b/browser/branding/alpha/locales/en-US/brand.dtd
@@ -0,0 +1,9 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY brandShorterName "Tor Browser">
+<!ENTITY brandShortName "Tor Browser">
+<!ENTITY brandFullName "Tor Browser">
+<!ENTITY vendorShortName "Tor Project">
+<!ENTITY trademarkInfo.part1 "Firefox and the Firefox logos are trademarks of the Mozilla Foundation.">
diff --git a/browser/branding/alpha/locales/en-US/brand.ftl b/browser/branding/alpha/locales/en-US/brand.ftl
new file mode 100644
index 000000000000..a695ba5a0006
--- /dev/null
+++ b/browser/branding/alpha/locales/en-US/brand.ftl
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+## Firefox Brand
+##
+## Firefox must be treated as a brand, and kept in English.
+## It cannot be:
+## - Declined to adapt to grammatical case.
+## - Transliterated.
+## - Translated.
+##
+## Reference: https://www.mozilla.org/styleguide/communications/translation/
+
+-brand-short-name = Alpha
diff --git a/browser/branding/alpha/locales/en-US/brand.properties b/browser/branding/alpha/locales/en-US/brand.properties
new file mode 100644
index 000000000000..1ac8467474dc
--- /dev/null
+++ b/browser/branding/alpha/locales/en-US/brand.properties
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+brandShorterName=Tor Browser
+brandShortName=Tor Browser
+brandFullName=Tor Browser
+vendorShortName=Tor Project
+
+syncBrandShortName=Sync
diff --git a/browser/branding/alpha/locales/en-US/tor-browser-brand.ftl b/browser/branding/alpha/locales/en-US/tor-browser-brand.ftl
new file mode 100644
index 000000000000..7fecf9eccb5f
--- /dev/null
+++ b/browser/branding/alpha/locales/en-US/tor-browser-brand.ftl
@@ -0,0 +1,5 @@
+# For Tor Browser, we use a new file (different than the brand.ftl file
+# that is used by Firefox) to avoid picking up the -brand-short-name values
+# that Mozilla includes in the Firefox language packs.
+
+-brand-short-name = Tor Browser Alpha
diff --git a/browser/branding/alpha/locales/jar.mn b/browser/branding/alpha/locales/jar.mn
new file mode 100644
index 000000000000..c78c82947acd
--- /dev/null
+++ b/browser/branding/alpha/locales/jar.mn
@@ -0,0 +1,13 @@
+#filter substitution
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+[localization] @AB_CD@.jar:
+ branding (%*.ftl)
+
+@AB_CD@.jar:
+% locale branding @AB_CD@ %locale/branding/
+ locale/branding/brand.dtd (%brand.dtd)
+ locale/branding/brand.properties (%brand.properties)
+ locale/branding/browserconfig.properties
diff --git a/browser/branding/alpha/locales/moz.build b/browser/branding/alpha/locales/moz.build
new file mode 100644
index 000000000000..eb4454d28f88
--- /dev/null
+++ b/browser/branding/alpha/locales/moz.build
@@ -0,0 +1,7 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
\ No newline at end of file
diff --git a/browser/branding/alpha/moz.build b/browser/branding/alpha/moz.build
new file mode 100644
index 000000000000..9045cee11bb8
--- /dev/null
+++ b/browser/branding/alpha/moz.build
@@ -0,0 +1,13 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+DIRS += ['content', 'locales']
+
+DIST_SUBDIR = 'browser'
+export('DIST_SUBDIR')
+
+include('../branding-common.mozbuild')
+FirefoxBranding()
diff --git a/browser/branding/alpha/newtab.ico b/browser/branding/alpha/newtab.ico
new file mode 100644
index 000000000000..a9b37c08c6e1
Binary files /dev/null and b/browser/branding/alpha/newtab.ico differ
diff --git a/browser/branding/alpha/newwindow.ico b/browser/branding/alpha/newwindow.ico
new file mode 100644
index 000000000000..55372077102c
Binary files /dev/null and b/browser/branding/alpha/newwindow.ico differ
diff --git a/browser/branding/alpha/pbmode.ico b/browser/branding/alpha/pbmode.ico
new file mode 100644
index 000000000000..47677c13fba6
Binary files /dev/null and b/browser/branding/alpha/pbmode.ico differ
diff --git a/browser/branding/alpha/pref/firefox-branding.js b/browser/branding/alpha/pref/firefox-branding.js
new file mode 100644
index 000000000000..682da69ffce8
--- /dev/null
+++ b/browser/branding/alpha/pref/firefox-branding.js
@@ -0,0 +1,37 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+pref("startup.homepage_override_url", "");
+pref("startup.homepage_welcome_url", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/firstrun/");
+pref("startup.homepage_welcome_url.additional", "");
+// Interval: Time between checks for a new version (in seconds)
+pref("app.update.interval", 43200); // 12 hours
+// The time interval between the downloading of mar file chunks in the
+// background (in seconds)
+// 0 means "download everything at once"
+pref("app.update.download.backgroundInterval", 0);
+// Give the user x seconds to react before showing the big UI. default=1 hour
+pref("app.update.promptWaitTime", 3600);
+// app.update.url.manual: URL user can browse to manually if for some reason
+// all update installation attempts fail.
+// app.update.url.details: a default value for the "More information about this
+// update" link supplied in the "An update is available" page of the update
+// wizard.
+pref("app.update.url.manual", "https://www.torproject.org/download/download-easy.html");
+pref("app.update.url.details", "https://www.torproject.org/projects/torbrowser.html");
+
+//pref("app.releaseNotesURL", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/releasenotes/?utm_source…");
+
+// The number of days a binary is permitted to be old
+// without checking for an update. This assumes that
+// app.update.checkInstallTime is true.
+pref("app.update.checkInstallTime.days", 63);
+
+// Give the user x seconds to reboot before showing a badge on the hamburger
+// button. default=immediately
+pref("app.update.badgeWaitTime", 0);
+
+// Number of usages of the web console or scratchpad.
+// If this is less than 5, then pasting code into the web console or scratchpad is disabled
+pref("devtools.selfxss.count", 0);
diff --git a/browser/branding/alpha/wizHeader.bmp b/browser/branding/alpha/wizHeader.bmp
new file mode 100644
index 000000000000..a754d2db1e11
Binary files /dev/null and b/browser/branding/alpha/wizHeader.bmp differ
diff --git a/browser/branding/alpha/wizHeaderRTL.bmp b/browser/branding/alpha/wizHeaderRTL.bmp
new file mode 100644
index 000000000000..c944205be23f
Binary files /dev/null and b/browser/branding/alpha/wizHeaderRTL.bmp differ
diff --git a/browser/branding/alpha/wizWatermark.bmp b/browser/branding/alpha/wizWatermark.bmp
new file mode 100644
index 000000000000..9e523b5fa196
Binary files /dev/null and b/browser/branding/alpha/wizWatermark.bmp differ
diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/branding-common.mozbuild
index c810138754d7..5d56361a0446 100644
--- a/browser/branding/branding-common.mozbuild
+++ b/browser/branding/branding-common.mozbuild
@@ -22,7 +22,9 @@ def FirefoxBranding():
FINAL_TARGET_FILES.chrome.icons.default += [
'default128.png',
'default16.png',
+ 'default256.png',
'default32.png',
'default48.png',
+ 'default512.png',
'default64.png',
]
diff --git a/browser/branding/nightly/VisualElements_150.png b/browser/branding/nightly/VisualElements_150.png
index d92384ef8274..a29d863d1766 100644
Binary files a/browser/branding/nightly/VisualElements_150.png and b/browser/branding/nightly/VisualElements_150.png differ
diff --git a/browser/branding/nightly/VisualElements_70.png b/browser/branding/nightly/VisualElements_70.png
index ff20e5d105ff..ccd90b8cf748 100644
Binary files a/browser/branding/nightly/VisualElements_70.png and b/browser/branding/nightly/VisualElements_70.png differ
diff --git a/browser/branding/nightly/configure.sh b/browser/branding/nightly/configure.sh
index 7c7f2cf8c820..243091484f75 100644
--- a/browser/branding/nightly/configure.sh
+++ b/browser/branding/nightly/configure.sh
@@ -2,5 +2,4 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-MOZ_APP_DISPLAYNAME="Firefox Nightly"
-MOZ_MACBUNDLE_ID=nightly
+MOZ_APP_DISPLAYNAME="Tor Browser"
diff --git a/browser/branding/nightly/content/identity-icons-brand.svg b/browser/branding/nightly/content/identity-icons-brand.svg
index a7d2c6723945..fc1d9c997aeb 100644
--- a/browser/branding/nightly/content/identity-icons-brand.svg
+++ b/browser/branding/nightly/content/identity-icons-brand.svg
@@ -1,10 +1,29 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
- <defs>
- <linearGradient id="gradient" x1="32" x2="0" y2="32" gradientUnits="userSpaceOnUse">
- <stop offset="0" stop-color="#00c8d7"/>
- <stop offset=".85" stop-color="#a238ff"/>
- <stop offset="1" stop-color="#ff1ad9"/>
- </linearGradient>
- </defs>
- <path d="M31.4 14.627c-.044-.289-.088-.46-.088-.46s-.113.131-.3.379a10.807 10.807 0 0 0-.375-2.04 13.885 13.885 0 0 0-.94-2.418 10.077 10.077 0 0 0-.859-1.473q-.177-.264-.36-.512c-.571-.934-1.227-1.5-1.986-2.583a7.827 7.827 0 0 1-.992-2.692 10.88 10.88 0 0 0-.477 1.761c-.779-.786-1.458-1.345-1.866-1.726C21.133.978 21.367 0 21.367 0s-3.773 4.209-2.137 8.6a8.43 8.43 0 0 0 2.81 3.744c1.581 1.3 3.283 2.33 4.18 4.952a8.4 8.4 0 0 0-3.154-3.327 7.593 7.593 0 0 1 .6 3.006 7.145 7.145 0 0 1-8.736 6.96 6.576 6.576 0 0 1-1.77-.6 7.2 7.2 0 0 1-2.121-1.96l-.01-.017.126.046a6.516 6.516 0 0 0 .9.242 5.644 5.644 0 0 0 3.594-.424c1.129-.627 1.813-1.091 2.367-.908h.01c.542.172.969-.353.581-.9a2.949 2.949 0 0 0-2.846-1.114c-1.131.165-2.167.968-3.648.19a3.151 3.151 0 0 1-.278-.163c-.1-.058.318.088.221.022a7.342 7.342 0 0 1-.931-.555c-.022-.018.224.07.2.052a3.592 3.592 0 0 1-.971-.982 1.746 1.746 0 0 1-.066-1.559 1.376 1.376 0 0 1 .6-.566.7.7 0 0 1 .175-.079.254.254 0 0 1 .038-.009l.073.026c.146.067.3
65.177.542.275a4.5 4.5 0 0 1 .477.43 2.14 2.14 0 0 0 .294-1.122 5.173 5.173 0 0 0-.061-.751.118.118 0 0 1 .094.048.977.977 0 0 0-.079-.239v-.008s.053-.069.078-.095a1.437 1.437 0 0 1 .216-.176 10 10 0 0 1 1.469-.749c.416-.181.759-.32.83-.36a2.287 2.287 0 0 0 .294-.226 1.973 1.973 0 0 0 .661-1.143 1.6 1.6 0 0 0 .017-.178v-.105c-.06-.226-.449-.395-2.483-.586a1.778 1.778 0 0 1-1.454-1.364v.009-.016a5.153 5.153 0 0 1 1.992-2.474c.052-.042-.208.011-.156-.032a5.18 5.18 0 0 1 .532-.225c.072-.03-.21-.146-.539-.175a3.5 3.5 0 0 0-1.87.221 4.75 4.75 0 0 0-1.821 1.218 6.3 6.3 0 0 0-3.5-.291l-.01-.009h.012a2.951 2.951 0 0 1-.627-.7l-.008-.012-.014-.021a5.48 5.48 0 0 1-.237-.388 5.527 5.527 0 0 1-.176-.339c0-.008-.009-.011-.013-.012-.024 0-.041.111-.061.082v-.006a4.321 4.321 0 0 1-.304-1.698s-.685.271-1.5 2.1a8.109 8.109 0 0 0-.6 2.793c-.008.112-.011.2-.01.257v.107a6.637 6.637 0 0 0-.817 1.1 15.65 15.65 0 0 0-1.736 4.24 10.378 10.378 0 0 1 .928-1.626 15.04 15.04 0 0 0-1.049 5.514 14.257 14.257 0 0
1 .451-1.634 13.847 13.847 0 0 0 1.25 6.489 15.08 15.08 0 0 0 5.968 6.768 13.058 13.058 0 0 0 3.478 1.667c.163.059.327.117.5.173-.053-.021-.1-.044-.153-.067a15.752 15.752 0 0 0 4.506.659c5.41 0 7.2-2.06 7.36-2.266a2.738 2.738 0 0 0 .639-.858q.156-.064.316-.137l.067-.03.122-.057a11.347 11.347 0 0 0 2.284-1.43 5.511 5.511 0 0 0 2.129-3.11 1.944 1.944 0 0 0 .029-1.433q.083-.132.171-.28a12.743 12.743 0 0 0 1.913-6.2v-.184a7.762 7.762 0 0 0-.115-1.388z" fill="url(#gradient)"/>
-</svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="-17 -17 546 546" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="25.1281738%" y1="5.44281006%" x2="54.3792725%" y2="100%" id="linearGradient-1">
+ <stop stop-color="#00E1E8" offset="0%"></stop>
+ <stop stop-color="#3500FF" offset="100%"></stop>
+ </linearGradient>
+ <linearGradient x1="25.1281738%" y1="5.44281006%" x2="54.3792725%" y2="100%" id="linearGradient-2">
+ <stop stop-color="#00E1E8" offset="0%"></stop>
+ <stop stop-color="#3500FF" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,25 C152.50841,25 255.874399,127.979815 255.874399,255.011855 C255.874399,382.043895 152.50841,485.02371 25,485.02371 L25,25 Z" id="path-3"></path>
+ <filter x="-20.8%" y="-8.7%" width="134.7%" height="117.4%" filterUnits="objectBoundingBox" id="filter-4">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="12" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.0872579578 0 0 0 0 0.00490370801 0 0 0 0 0.234933036 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Nightly" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g>
+ <circle id="background" fill-opacity="0.9" fill="#030004" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384044,2.842170
94e-14 256,2.84217094e-14 C114.60886,2.84217094e-14 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.437200, 255.011855) scale(-1, 1) translate(-140.437200, -255.011855) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
+ <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-3"></use>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/branding/nightly/content/jar.mn b/browser/branding/nightly/content/jar.mn
index 40e013ec50b8..512af80a55de 100644
--- a/browser/branding/nightly/content/jar.mn
+++ b/browser/branding/nightly/content/jar.mn
@@ -13,5 +13,7 @@ browser.jar:
content/branding/icon48.png (../default48.png)
content/branding/icon64.png (../default64.png)
content/branding/icon128.png (../default128.png)
+ content/branding/icon256.png (../default256.png)
+ content/branding/icon512.png (../default512.png)
content/branding/identity-icons-brand.svg
content/branding/aboutDialog.css
diff --git a/browser/branding/nightly/default128.png b/browser/branding/nightly/default128.png
index b0f7bcb52cd2..12998ed018a7 100644
Binary files a/browser/branding/nightly/default128.png and b/browser/branding/nightly/default128.png differ
diff --git a/browser/branding/nightly/default16.png b/browser/branding/nightly/default16.png
index 7dcbad9c0e63..737ade977a6b 100644
Binary files a/browser/branding/nightly/default16.png and b/browser/branding/nightly/default16.png differ
diff --git a/browser/branding/nightly/default256.png b/browser/branding/nightly/default256.png
new file mode 100644
index 000000000000..f619aecbc6e3
Binary files /dev/null and b/browser/branding/nightly/default256.png differ
diff --git a/browser/branding/nightly/default32.png b/browser/branding/nightly/default32.png
index fd31fa0b97f5..499bc8ff7fc9 100644
Binary files a/browser/branding/nightly/default32.png and b/browser/branding/nightly/default32.png differ
diff --git a/browser/branding/nightly/default48.png b/browser/branding/nightly/default48.png
index 08f1f757590e..fc99e3829d5f 100644
Binary files a/browser/branding/nightly/default48.png and b/browser/branding/nightly/default48.png differ
diff --git a/browser/branding/nightly/default512.png b/browser/branding/nightly/default512.png
new file mode 100644
index 000000000000..4ff5f7fa3495
Binary files /dev/null and b/browser/branding/nightly/default512.png differ
diff --git a/browser/branding/nightly/default64.png b/browser/branding/nightly/default64.png
index 91aadf680cd6..5a84a5384942 100644
Binary files a/browser/branding/nightly/default64.png and b/browser/branding/nightly/default64.png differ
diff --git a/browser/branding/nightly/document.icns b/browser/branding/nightly/document.icns
index 85af9dacdedc..4acf7a5d1a4b 100644
Binary files a/browser/branding/nightly/document.icns and b/browser/branding/nightly/document.icns differ
diff --git a/browser/branding/nightly/document.ico b/browser/branding/nightly/document.ico
index d61e21e1a11b..ecb8e3dc6c73 100644
Binary files a/browser/branding/nightly/document.ico and b/browser/branding/nightly/document.ico differ
diff --git a/browser/branding/nightly/firefox.VisualElementsManifest.xml b/browser/branding/nightly/firefox.VisualElementsManifest.xml
index 16e932c60e45..15e2690fdd04 100644
--- a/browser/branding/nightly/firefox.VisualElementsManifest.xml
+++ b/browser/branding/nightly/firefox.VisualElementsManifest.xml
@@ -4,5 +4,5 @@
Square150x150Logo='browser\VisualElements\VisualElements_150.png'
Square70x70Logo='browser\VisualElements\VisualElements_70.png'
ForegroundText='light'
- BackgroundColor='#000f40'/>
+ BackgroundColor='#1c191d'/>
</Application>
diff --git a/browser/branding/nightly/firefox.icns b/browser/branding/nightly/firefox.icns
index 371152101582..5223801d095a 100644
Binary files a/browser/branding/nightly/firefox.icns and b/browser/branding/nightly/firefox.icns differ
diff --git a/browser/branding/nightly/firefox.ico b/browser/branding/nightly/firefox.ico
index 0155b3e800ed..eb28c93ab25f 100644
Binary files a/browser/branding/nightly/firefox.ico and b/browser/branding/nightly/firefox.ico differ
diff --git a/browser/branding/nightly/firefox.svg b/browser/branding/nightly/firefox.svg
new file mode 100644
index 000000000000..c11b568b8553
--- /dev/null
+++ b/browser/branding/nightly/firefox.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="25.1281738%" y1="5.44281006%" x2="54.3792725%" y2="100%" id="linearGradient-1">
+ <stop stop-color="#00E1E8" offset="0%"></stop>
+ <stop stop-color="#3500FF" offset="100%"></stop>
+ </linearGradient>
+ <linearGradient x1="25.1281738%" y1="5.44281006%" x2="54.3792725%" y2="100%" id="linearGradient-2">
+ <stop stop-color="#00E1E8" offset="0%"></stop>
+ <stop stop-color="#3500FF" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,25 C152.50841,25 255.874399,127.979815 255.874399,255.011855 C255.874399,382.043895 152.50841,485.02371 25,485.02371 L25,25 Z" id="path-3"></path>
+ <filter x="-20.8%" y="-8.7%" width="134.7%" height="117.4%" filterUnits="objectBoundingBox" id="filter-4">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="12" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.0872579578 0 0 0 0 0.00490370801 0 0 0 0 0.234933036 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Nightly" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g>
+ <circle id="background" fill-opacity="0.9" fill="#030004" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384044,2.842170
94e-14 256,2.84217094e-14 C114.60886,2.84217094e-14 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.437200, 255.011855) scale(-1, 1) translate(-140.437200, -255.011855) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use>
+ <use fill="url(#linearGradient-2)" fill-rule="evenodd" xlink:href="#path-3"></use>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/branding/nightly/firefox64.ico b/browser/branding/nightly/firefox64.ico
index 1dfd0c2ab58e..eb28c93ab25f 100644
Binary files a/browser/branding/nightly/firefox64.ico and b/browser/branding/nightly/firefox64.ico differ
diff --git a/browser/branding/nightly/locales/en-US/brand.dtd b/browser/branding/nightly/locales/en-US/brand.dtd
index 30e706782882..aac10c9a47ac 100644
--- a/browser/branding/nightly/locales/en-US/brand.dtd
+++ b/browser/branding/nightly/locales/en-US/brand.dtd
@@ -2,8 +2,8 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<!ENTITY brandShorterName "Nightly">
-<!ENTITY brandShortName "Nightly">
-<!ENTITY brandFullName "Firefox Nightly">
-<!ENTITY vendorShortName "Mozilla">
-<!ENTITY trademarkInfo.part1 " ">
+<!ENTITY brandShorterName "Tor Browser">
+<!ENTITY brandShortName "Tor Browser">
+<!ENTITY brandFullName "Tor Browser">
+<!ENTITY vendorShortName "Tor Project">
+<!ENTITY trademarkInfo.part1 "Firefox and the Firefox logos are trademarks of the Mozilla Foundation.">
diff --git a/browser/branding/nightly/locales/en-US/brand.properties b/browser/branding/nightly/locales/en-US/brand.properties
index 3e05923ec937..1ac8467474dc 100644
--- a/browser/branding/nightly/locales/en-US/brand.properties
+++ b/browser/branding/nightly/locales/en-US/brand.properties
@@ -2,9 +2,9 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-brandShorterName=Nightly
-brandShortName=Nightly
-brandFullName=Firefox Nightly
-vendorShortName=Mozilla
+brandShorterName=Tor Browser
+brandShortName=Tor Browser
+brandFullName=Tor Browser
+vendorShortName=Tor Project
syncBrandShortName=Sync
diff --git a/browser/branding/nightly/locales/en-US/tor-browser-brand.ftl b/browser/branding/nightly/locales/en-US/tor-browser-brand.ftl
new file mode 100644
index 000000000000..91af3397a178
--- /dev/null
+++ b/browser/branding/nightly/locales/en-US/tor-browser-brand.ftl
@@ -0,0 +1,5 @@
+# For Tor Browser, we use a new file (different than the brand.ftl file
+# that is used by Firefox) to avoid picking up the -brand-short-name values
+# that Mozilla includes in the Firefox language packs.
+
+-brand-short-name = Tor Browser Nightly
diff --git a/browser/branding/nightly/locales/jar.mn b/browser/branding/nightly/locales/jar.mn
index b58100a6da47..c78c82947acd 100644
--- a/browser/branding/nightly/locales/jar.mn
+++ b/browser/branding/nightly/locales/jar.mn
@@ -4,11 +4,10 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
[localization] @AB_CD@.jar:
- branding (en-US/**/*.ftl)
+ branding (%*.ftl)
@AB_CD@.jar:
% locale branding @AB_CD@ %locale/branding/
-# Nightly branding only exists in en-US
- locale/branding/brand.dtd (en-US/brand.dtd)
- locale/branding/brand.properties (en-US/brand.properties)
+ locale/branding/brand.dtd (%brand.dtd)
+ locale/branding/brand.properties (%brand.properties)
locale/branding/browserconfig.properties
diff --git a/browser/branding/nightly/locales/moz.build b/browser/branding/nightly/locales/moz.build
index 8bad13124d5a..eb4454d28f88 100644
--- a/browser/branding/nightly/locales/moz.build
+++ b/browser/branding/nightly/locales/moz.build
@@ -4,6 +4,4 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-DEFINES['MOZ_DISTRIBUTION_ID_UNQUOTED'] = CONFIG['MOZ_DISTRIBUTION_ID']
-
JAR_MANIFESTS += ['jar.mn']
\ No newline at end of file
diff --git a/browser/branding/nightly/pref/firefox-branding.js b/browser/branding/nightly/pref/firefox-branding.js
index 183244f348fd..682da69ffce8 100644
--- a/browser/branding/nightly/pref/firefox-branding.js
+++ b/browser/branding/nightly/pref/firefox-branding.js
@@ -2,30 +2,31 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-pref("startup.homepage_override_url", "https://www.mozilla.org/projects/firefox/%VERSION%/whatsnew/?oldversion=%OL…");
-pref("startup.homepage_welcome_url", "https://www.mozilla.org/projects/firefox/%VERSION%/firstrun/");
+pref("startup.homepage_override_url", "");
+pref("startup.homepage_welcome_url", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/firstrun/");
pref("startup.homepage_welcome_url.additional", "");
-// The time interval between checks for a new version (in seconds)
-pref("app.update.interval", 7200); // 2 hours
+// Interval: Time between checks for a new version (in seconds)
+pref("app.update.interval", 43200); // 12 hours
// The time interval between the downloading of mar file chunks in the
// background (in seconds)
// 0 means "download everything at once"
pref("app.update.download.backgroundInterval", 0);
-// Give the user x seconds to react before showing the big UI. default=12 hours
-pref("app.update.promptWaitTime", 43200);
-// URL user can browse to manually if for some reason all update installation
-// attempts fail.
-pref("app.update.url.manual", "https://www.mozilla.org/%LOCALE%/firefox/nightly/");
-// A default value for the "More information about this update" link
-// supplied in the "An update is available" page of the update wizard.
-pref("app.update.url.details", "https://www.mozilla.org/%LOCALE%/firefox/nightly/notes/");
+// Give the user x seconds to react before showing the big UI. default=1 hour
+pref("app.update.promptWaitTime", 3600);
+// app.update.url.manual: URL user can browse to manually if for some reason
+// all update installation attempts fail.
+// app.update.url.details: a default value for the "More information about this
+// update" link supplied in the "An update is available" page of the update
+// wizard.
+pref("app.update.url.manual", "https://www.torproject.org/download/download-easy.html");
+pref("app.update.url.details", "https://www.torproject.org/projects/torbrowser.html");
-pref("app.releaseNotesURL", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/releasenotes/?utm_source…");
+//pref("app.releaseNotesURL", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/releasenotes/?utm_source…");
// The number of days a binary is permitted to be old
// without checking for an update. This assumes that
// app.update.checkInstallTime is true.
-pref("app.update.checkInstallTime.days", 2);
+pref("app.update.checkInstallTime.days", 63);
// Give the user x seconds to reboot before showing a badge on the hamburger
// button. default=immediately
@@ -33,4 +34,4 @@ pref("app.update.badgeWaitTime", 0);
// Number of usages of the web console or scratchpad.
// If this is less than 5, then pasting code into the web console or scratchpad is disabled
-pref("devtools.selfxss.count", 5);
+pref("devtools.selfxss.count", 0);
diff --git a/browser/branding/nightly/wizHeader.bmp b/browser/branding/nightly/wizHeader.bmp
index a771b4da41dd..a754d2db1e11 100644
Binary files a/browser/branding/nightly/wizHeader.bmp and b/browser/branding/nightly/wizHeader.bmp differ
diff --git a/browser/branding/nightly/wizHeaderRTL.bmp b/browser/branding/nightly/wizHeaderRTL.bmp
index 0b2264100ad1..c944205be23f 100644
Binary files a/browser/branding/nightly/wizHeaderRTL.bmp and b/browser/branding/nightly/wizHeaderRTL.bmp differ
diff --git a/browser/branding/nightly/wizWatermark.bmp b/browser/branding/nightly/wizWatermark.bmp
index 6dd11b809955..9e523b5fa196 100644
Binary files a/browser/branding/nightly/wizWatermark.bmp and b/browser/branding/nightly/wizWatermark.bmp differ
diff --git a/browser/branding/official/VisualElements_150.png b/browser/branding/official/VisualElements_150.png
index 401521d8da55..acc02c97d827 100644
Binary files a/browser/branding/official/VisualElements_150.png and b/browser/branding/official/VisualElements_150.png differ
diff --git a/browser/branding/official/VisualElements_70.png b/browser/branding/official/VisualElements_70.png
index 64170c27ec07..890a227e251a 100644
Binary files a/browser/branding/official/VisualElements_70.png and b/browser/branding/official/VisualElements_70.png differ
diff --git a/browser/branding/official/content/identity-icons-brand.svg b/browser/branding/official/content/identity-icons-brand.svg
index be779300d04b..62472ad1826e 100644
--- a/browser/branding/official/content/identity-icons-brand.svg
+++ b/browser/branding/official/content/identity-icons-brand.svg
@@ -1,17 +1,31 @@
-<svg data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 32 32">
- <defs>
- <linearGradient id="a" x1="31.36" y1="-.127" x2="4.307" y2="27.635" gradientUnits="userSpaceOnUse">
- <stop offset="0" stop-color="#ffea00"/>
- <stop offset=".108" stop-color="#ffde00"/>
- <stop offset=".3" stop-color="#ffbf00"/>
- <stop offset=".552" stop-color="#ff8e00"/>
- <stop offset=".816" stop-color="#ff272d"/>
- <stop offset=".848" stop-color="#fb2532"/>
- <stop offset=".887" stop-color="#ee1e40"/>
- <stop offset=".928" stop-color="#d81358"/>
- <stop offset=".971" stop-color="#ba0379"/>
- <stop offset=".978" stop-color="#b5007f"/>
- </linearGradient>
- </defs>
- <path d="M31.4 14.627c-.044-.289-.088-.46-.088-.46s-.113.131-.3.379a10.8 10.8 0 0 0-.375-2.04 13.883 13.883 0 0 0-.94-2.418 10.078 10.078 0 0 0-.858-1.473q-.177-.264-.36-.512c-.571-.934-1.227-1.5-1.986-2.583a7.826 7.826 0 0 1-.993-2.692 10.88 10.88 0 0 0-.477 1.761c-.779-.786-1.458-1.345-1.866-1.726C21.133.978 21.367 0 21.367 0s-3.773 4.209-2.137 8.6a8.43 8.43 0 0 0 2.81 3.744c1.581 1.3 3.283 2.33 4.18 4.952a8.4 8.4 0 0 0-3.154-3.327 7.593 7.593 0 0 1 .6 3.006 7.145 7.145 0 0 1-8.736 6.96 6.576 6.576 0 0 1-1.77-.6 7.2 7.2 0 0 1-2.121-1.96l-.01-.017.126.046a6.517 6.517 0 0 0 .9.242 5.644 5.644 0 0 0 3.594-.424c1.129-.626 1.813-1.091 2.367-.908h.01c.542.172.969-.353.581-.9a2.949 2.949 0 0 0-2.846-1.114c-1.131.165-2.167.968-3.648.19a3.13 3.13 0 0 1-.278-.163c-.1-.058.317.088.221.022a7.351 7.351 0 0 1-.931-.555c-.022-.018.224.07.2.052a3.591 3.591 0 0 1-.971-.982 1.746 1.746 0 0 1-.066-1.559 1.376 1.376 0 0 1 .6-.566c.192.095.31.166.31.166s-.087-.16-.135-.244c.017-.006.032 0 .049-.011.
168.073.539.261.734.376a1.018 1.018 0 0 1 .335.3s.067-.033.017-.173a.907.907 0 0 0-.347-.425h.016A2.952 2.952 0 0 1 12.3 15a2.085 2.085 0 0 0 .171-.906 1.181 1.181 0 0 0-.069-.5c-.054-.1.03-.14.123-.035a.977.977 0 0 0-.079-.239v-.008s.053-.069.078-.095a1.434 1.434 0 0 1 .216-.176 10 10 0 0 1 1.469-.749c.416-.181.759-.32.83-.36a2.287 2.287 0 0 0 .294-.226 1.973 1.973 0 0 0 .661-1.143 1.593 1.593 0 0 0 .017-.178v-.105c-.06-.226-.449-.395-2.483-.586a1.778 1.778 0 0 1-1.454-1.364v.009c-.029.075-.055.15-.081.225.026-.075.052-.151.081-.225v-.016a5.153 5.153 0 0 1 1.992-2.474c.052-.043-.208.011-.156-.032a5.18 5.18 0 0 1 .532-.225c.091-.039-.391-.222-.818-.178a2.2 2.2 0 0 0-.758.178c.1-.086.4-.2.33-.2a4.877 4.877 0 0 0-1.547.585.315.315 0 0 1 .03-.14 2.407 2.407 0 0 0-.966.746 1.286 1.286 0 0 0 .01-.174 2.883 2.883 0 0 0-.475.446l-.009.007a6.3 6.3 0 0 0-3.527-.3l-.01-.009h.012a2.953 2.953 0 0 1-.627-.7l-.008-.012-.014-.021a5.48 5.48 0 0 1-.237-.388 5.527 5.527 0 0 1-.176-.339c0-.008-.009-.0
11-.013-.012-.024 0-.041.111-.061.082v-.006a4.322 4.322 0 0 1-.309-1.697l-.016.008a1.89 1.89 0 0 0-.716.937c-.062.137-.1.213-.14.288v-.035c.009-.069.039-.212.032-.2s-.013.019-.02.029a1.741 1.741 0 0 0-.252.373 2.366 2.366 0 0 0-.15.383c-.006.021 0-.018 0-.064s.009-.128 0-.111l-.022.043a9.526 9.526 0 0 0-.806 3.044 3.038 3.038 0 0 0-.023.54v.016a6.641 6.641 0 0 0-.819 1.1 15.65 15.65 0 0 0-1.731 4.246 10.379 10.379 0 0 1 .928-1.626 15.041 15.041 0 0 0-1.049 5.514 14.264 14.264 0 0 1 .451-1.634 13.848 13.848 0 0 0 1.25 6.489 15.08 15.08 0 0 0 5.968 6.768 13.057 13.057 0 0 0 3.478 1.667c.163.059.327.117.5.173-.053-.021-.1-.044-.153-.067a15.752 15.752 0 0 0 4.506.659c5.41 0 7.2-2.06 7.36-2.266a2.739 2.739 0 0 0 .639-.858q.156-.064.316-.137l.067-.03.122-.057a11.349 11.349 0 0 0 2.284-1.43 5.511 5.511 0 0 0 2.129-3.11 1.944 1.944 0 0 0 .029-1.433q.083-.132.171-.28a12.743 12.743 0 0 0 1.913-6.2v-.184a7.76 7.76 0 0 0-.115-1.388z" fill="url(#a)"/>
-</svg>
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="-17 -17 546 546" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="50%" y1="100%" x2="50%" y2="0%" id="linearGradient-1">
+ <stop stop-color="#420C5D" offset="0%"></stop>
+ <stop stop-color="#951AD1" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,29 C152.577777,29 256,131.974508 256,259 C256,386.025492 152.577777,489 25,489 L25,29 Z" id="path-2"></path>
+ <filter x="-18.2%" y="-7.4%" width="129.4%" height="114.8%" filterUnits="objectBoundingBox" id="filter-3">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="10" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Assets" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="icon_512x512">
+ <g id="Group">
+ <g id="tb_icon/Stable">
+ <g id="Stable">
+ <circle id="background" fill="#F2E4FF" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384
044,0 256,0 C114.60886,0 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.500000, 259.000000) scale(-1, 1) translate(-140.500000, -259.000000) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+ <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/branding/official/content/jar.mn b/browser/branding/official/content/jar.mn
index 40e013ec50b8..512af80a55de 100644
--- a/browser/branding/official/content/jar.mn
+++ b/browser/branding/official/content/jar.mn
@@ -13,5 +13,7 @@ browser.jar:
content/branding/icon48.png (../default48.png)
content/branding/icon64.png (../default64.png)
content/branding/icon128.png (../default128.png)
+ content/branding/icon256.png (../default256.png)
+ content/branding/icon512.png (../default512.png)
content/branding/identity-icons-brand.svg
content/branding/aboutDialog.css
diff --git a/browser/branding/official/default128.png b/browser/branding/official/default128.png
index 7113b0ae15cf..18f3572d0d79 100644
Binary files a/browser/branding/official/default128.png and b/browser/branding/official/default128.png differ
diff --git a/browser/branding/official/default16.png b/browser/branding/official/default16.png
index 9a6f283b8f05..904b84e49871 100644
Binary files a/browser/branding/official/default16.png and b/browser/branding/official/default16.png differ
diff --git a/browser/branding/official/default22.png b/browser/branding/official/default22.png
deleted file mode 100644
index a9ef81c47df0..000000000000
Binary files a/browser/branding/official/default22.png and /dev/null differ
diff --git a/browser/branding/official/default24.png b/browser/branding/official/default24.png
deleted file mode 100644
index fdbbae3fdc0d..000000000000
Binary files a/browser/branding/official/default24.png and /dev/null differ
diff --git a/browser/branding/official/default256.png b/browser/branding/official/default256.png
index 1682f54b98fb..809dbad4ab16 100644
Binary files a/browser/branding/official/default256.png and b/browser/branding/official/default256.png differ
diff --git a/browser/branding/official/default32.png b/browser/branding/official/default32.png
index 494951ce50d6..e8e68eb4492c 100644
Binary files a/browser/branding/official/default32.png and b/browser/branding/official/default32.png differ
diff --git a/browser/branding/official/default48.png b/browser/branding/official/default48.png
index 1b78e3b41967..e839211d260b 100644
Binary files a/browser/branding/official/default48.png and b/browser/branding/official/default48.png differ
diff --git a/browser/branding/official/default512.png b/browser/branding/official/default512.png
new file mode 100644
index 000000000000..23942859673d
Binary files /dev/null and b/browser/branding/official/default512.png differ
diff --git a/browser/branding/official/default64.png b/browser/branding/official/default64.png
index 29cca7e1c881..147a229fab8b 100644
Binary files a/browser/branding/official/default64.png and b/browser/branding/official/default64.png differ
diff --git a/browser/branding/official/document.icns b/browser/branding/official/document.icns
index 476c7d6984b1..27a776a12557 100644
Binary files a/browser/branding/official/document.icns and b/browser/branding/official/document.icns differ
diff --git a/browser/branding/official/document.ico b/browser/branding/official/document.ico
index 311340e14fd1..3e5d99012f89 100644
Binary files a/browser/branding/official/document.ico and b/browser/branding/official/document.ico differ
diff --git a/browser/branding/official/firefox.VisualElementsManifest.xml b/browser/branding/official/firefox.VisualElementsManifest.xml
index 16e932c60e45..fc118941e3f3 100644
--- a/browser/branding/official/firefox.VisualElementsManifest.xml
+++ b/browser/branding/official/firefox.VisualElementsManifest.xml
@@ -4,5 +4,5 @@
Square150x150Logo='browser\VisualElements\VisualElements_150.png'
Square70x70Logo='browser\VisualElements\VisualElements_70.png'
ForegroundText='light'
- BackgroundColor='#000f40'/>
+ BackgroundColor='#420c5e'/>
</Application>
diff --git a/browser/branding/official/firefox.icns b/browser/branding/official/firefox.icns
index 481914fc8019..721e57925b69 100644
Binary files a/browser/branding/official/firefox.icns and b/browser/branding/official/firefox.icns differ
diff --git a/browser/branding/official/firefox.ico b/browser/branding/official/firefox.ico
index 01fb0efda56d..db0a9af865b6 100644
Binary files a/browser/branding/official/firefox.ico and b/browser/branding/official/firefox.ico differ
diff --git a/browser/branding/official/firefox.svg b/browser/branding/official/firefox.svg
new file mode 100644
index 000000000000..9240dc6e84ca
--- /dev/null
+++ b/browser/branding/official/firefox.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="512px" height="512px" viewBox="0 0 512 512" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient x1="50%" y1="100%" x2="50%" y2="0%" id="linearGradient-1">
+ <stop stop-color="#420C5D" offset="0%"></stop>
+ <stop stop-color="#951AD1" offset="100%"></stop>
+ </linearGradient>
+ <path d="M25,29 C152.577777,29 256,131.974508 256,259 C256,386.025492 152.577777,489 25,489 L25,29 Z" id="path-2"></path>
+ <filter x="-18.2%" y="-7.4%" width="129.4%" height="114.8%" filterUnits="objectBoundingBox" id="filter-3">
+ <feOffset dx="-8" dy="0" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
+ <feGaussianBlur stdDeviation="10" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
+ <feColorMatrix values="0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0 0.250980392 0 0 0 0.2 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
+ </filter>
+ </defs>
+ <g id="Assets" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <g id="icon_512x512">
+ <g id="Group">
+ <g id="tb_icon/Stable">
+ <g id="Stable">
+ <circle id="background" fill="#F2E4FF" fill-rule="nonzero" cx="256" cy="256" r="246"></circle>
+ <path d="M256.525143,465.439707 L256.525143,434.406609 C354.826191,434.122748 434.420802,354.364917 434.420802,255.992903 C434.420802,157.627987 354.826191,77.8701558 256.525143,77.5862948 L256.525143,46.5531962 C371.964296,46.8441537 465.446804,140.489882 465.446804,255.992903 C465.446804,371.503022 371.964296,465.155846 256.525143,465.439707 Z M256.525143,356.820314 C311.970283,356.529356 356.8487,311.516106 356.8487,255.992903 C356.8487,200.476798 311.970283,155.463547 256.525143,155.17259 L256.525143,124.146588 C329.115485,124.430449 387.881799,183.338693 387.881799,255.992903 C387.881799,328.654211 329.115485,387.562455 256.525143,387.846316 L256.525143,356.820314 Z M256.525143,201.718689 C286.266674,202.00255 310.3026,226.180407 310.3026,255.992903 C310.3026,285.812497 286.266674,309.990353 256.525143,310.274214 L256.525143,201.718689 Z M0,255.992903 C0,397.384044 114.60886,512 256,512 C397.384044,512 512,397.384044 512,255.992903 C512,114.60886 397.384
044,0 256,0 C114.60886,0 0,114.60886 0,255.992903 Z" id="center" fill="url(#linearGradient-1)"></path>
+ <g id="half" transform="translate(140.500000, 259.000000) scale(-1, 1) translate(-140.500000, -259.000000) ">
+ <use fill="black" fill-opacity="1" filter="url(#filter-3)" xlink:href="#path-2"></use>
+ <use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/branding/official/firefox64.ico b/browser/branding/official/firefox64.ico
index 01fb0efda56d..db0a9af865b6 100644
Binary files a/browser/branding/official/firefox64.ico and b/browser/branding/official/firefox64.ico differ
diff --git a/browser/branding/official/mozicon128.png b/browser/branding/official/mozicon128.png
deleted file mode 100644
index 8fc3530cffa7..000000000000
Binary files a/browser/branding/official/mozicon128.png and /dev/null differ
diff --git a/browser/extensions/onboarding/content/img/tor-watermark.png b/browser/extensions/onboarding/content/img/tor-watermark.png
index e366c242b22a..4c7885e0235b 100644
Binary files a/browser/extensions/onboarding/content/img/tor-watermark.png and b/browser/extensions/onboarding/content/img/tor-watermark.png differ
diff --git a/browser/extensions/onboarding/content/img/tor-watermark.svg b/browser/extensions/onboarding/content/img/tor-watermark.svg
new file mode 100644
index 000000000000..9e575b592bb4
--- /dev/null
+++ b/browser/extensions/onboarding/content/img/tor-watermark.svg
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="180px" height="180px" viewBox="0 0 180 180" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g id="Process" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+ <path d="M90.1846205,163.631147 L90.1846205,152.721073 C124.743583,152.621278 152.726063,124.581416 152.726063,89.9975051 C152.726063,55.4160892 124.743583,27.3762266 90.1846205,27.2764318 L90.1846205,16.366358 C130.768698,16.4686478 163.633642,49.3909741 163.633642,89.9975051 C163.633642,130.606531 130.768698,163.531352 90.1846205,163.631147 Z M90.1846205,125.444642 C109.677053,125.342352 125.454621,109.517381 125.454621,89.9975051 C125.454621,70.4801242 109.677053,54.6551533 90.1846205,54.5528636 L90.1846205,43.6452847 C115.704663,43.7450796 136.364695,64.4550091 136.364695,89.9975051 C136.364695,115.542496 115.704663,136.252426 90.1846205,136.35222 L90.1846205,125.444642 Z M90.1846205,70.9167267 C100.640628,71.0165216 109.090758,79.5165493 109.090758,89.9975051 C109.090758,100.480956 100.640628,108.980984 90.1846205,109.080778 L90.1846205,70.9167267 Z M0,89.9975051 C0,139.705328 40.2921772,180 90,180 C139.705328,180 180,139.705328 180,89.9975051 C180,40.2921772 139.705328
,0 90,0 C40.2921772,0 0,40.2921772 0,89.9975051 Z" id="Fill-1-Copy" fill="#DFDFE2"></path>
+ </g>
+</svg>
\ No newline at end of file
diff --git a/browser/themes/shared/identity-block/identity-block.inc.css b/browser/themes/shared/identity-block/identity-block.inc.css
index 36bab9f13715..858c6d09d62b 100644
--- a/browser/themes/shared/identity-block/identity-block.inc.css
+++ b/browser/themes/shared/identity-block/identity-block.inc.css
@@ -32,12 +32,20 @@
}
#urlbar[pageproxystate="valid"] > #identity-box.chromeUI > #identity-icon-labels {
%ifdef MOZ_OFFICIAL_BRANDING
- color: rgb(229,115,0);
+ color: #420C5D;
%else
color: inherit;
%endif
}
+toolbar[brighttext] #urlbar[pageproxystate="valid"] > #identity-box.chromeUI > #identity-icon-labels {
+%ifdef MOZ_OFFICIAL_BRANDING
+ color: #CC80FF;
+%else
+ color: inherit;
+%endif
+}
+
#identity-icon-labels:-moz-locale-dir(ltr) {
padding-left: 4px;
}
1
0

[tor-browser-build/maint-8.0] Bug 29097: https-everywhere make.sh explicitly depends on missing 3.6
by gk@torproject.org 21 Jan '19
by gk@torproject.org 21 Jan '19
21 Jan '19
commit 57a48c1c712a17bb2d58e3688d183bddd5e82423
Author: Richard Pospesel <richard(a)torproject.org>
Date: Tue Jan 15 15:13:19 2019 -0800
Bug 29097: https-everywhere make.sh explicitly depends on missing 3.6
Updated the https-everywhere deps section to install python3.6 and
python3.6-lxml. Previously python and python-lxml were listed, but these
packages now map to the 3.7 versions.
---
projects/https-everywhere/config | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/projects/https-everywhere/config b/projects/https-everywhere/config
index b0b3ce9..4197d41 100644
--- a/projects/https-everywhere/config
+++ b/projects/https-everywhere/config
@@ -21,8 +21,8 @@ var:
arch: amd64
deps:
- git
- - python3
- - python3-lxml
+ - python3.6
+ - python3.6-lxml
- libxslt1.1
- libxml2-utils
- sqlite3
1
0
commit 885c86d28b3552e5a06bdf2ef4947d2e3d5694be
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Jan 21 07:02:48 2019 +0000
Fix typo in comment
---
projects/https-everywhere/config | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/https-everywhere/config b/projects/https-everywhere/config
index 4197d41..bcd47f2 100644
--- a/projects/https-everywhere/config
+++ b/projects/https-everywhere/config
@@ -10,7 +10,7 @@ var:
# HTTPS Everywhere is expected to be the same on all platforms. To avoid
# building the same thing 4 times, using 4 different container images
# (each one with a different suite or architecture), we set the container
- # to wheezy/amd64 for all platforms. This allows us to create only one
+ # to buster/amd64 for all platforms. This allows us to create only one
# container image, and also build the extension only one time as the
# filename does not contain the platform, and var/build_id should be
# the same since there is now nothing platform specific in the build
1
0
commit f22e370285ab9842c2955e286a4063700c06285c
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Jan 21 07:02:48 2019 +0000
Fix typo in comment
---
projects/https-everywhere/config | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/projects/https-everywhere/config b/projects/https-everywhere/config
index 4197d41..bcd47f2 100644
--- a/projects/https-everywhere/config
+++ b/projects/https-everywhere/config
@@ -10,7 +10,7 @@ var:
# HTTPS Everywhere is expected to be the same on all platforms. To avoid
# building the same thing 4 times, using 4 different container images
# (each one with a different suite or architecture), we set the container
- # to wheezy/amd64 for all platforms. This allows us to create only one
+ # to buster/amd64 for all platforms. This allows us to create only one
# container image, and also build the extension only one time as the
# filename does not contain the platform, and var/build_id should be
# the same since there is now nothing platform specific in the build
1
0

[tor-browser-build/master] Bug 29097: https-everywhere make.sh explicitly depends on missing 3.6
by gk@torproject.org 21 Jan '19
by gk@torproject.org 21 Jan '19
21 Jan '19
commit a1ac92687ed03f64c12992d7b83b40892beacb37
Author: Richard Pospesel <richard(a)torproject.org>
Date: Tue Jan 15 15:13:19 2019 -0800
Bug 29097: https-everywhere make.sh explicitly depends on missing 3.6
Updated the https-everywhere deps section to install python3.6 and
python3.6-lxml. Previously python and python-lxml were listed, but these
packages now map to the 3.7 versions.
---
projects/https-everywhere/config | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/projects/https-everywhere/config b/projects/https-everywhere/config
index b0b3ce9..4197d41 100644
--- a/projects/https-everywhere/config
+++ b/projects/https-everywhere/config
@@ -21,8 +21,8 @@ var:
arch: amd64
deps:
- git
- - python3
- - python3-lxml
+ - python3.6
+ - python3.6-lxml
- libxslt1.1
- libxml2-utils
- sqlite3
1
0

[obfs4/master] transports/meeklite: uTLS for ClientHello camouflage
by yawning@torproject.org 21 Jan '19
by yawning@torproject.org 21 Jan '19
21 Jan '19
commit 4d453dab2120082b00bf6e63ab4aaeeda6b8d8a3
Author: Yawning Angel <yawning(a)schwanenlied.me>
Date: Mon Jan 21 04:31:07 2019 +0000
transports/meeklite: uTLS for ClientHello camouflage
There's still some interesting oddities depending on remote server and
what fingerprint is chosen, but I can watch videos online with the
chosen settings and the TBB Azure bridge.
Note: Despite what people are claiming in the Tor Browser bug tracker
it isn't all that hard to use the built in http client with utls. And
yes, the `transport.go` code does negotiate correctly in a standalone
test case (apart from compatibility related oddities).
---
ChangeLog | 2 +
LICENSE-GPL3.txt | 674 +++++++++++++++++++++++++++++++++++++++
go.mod | 11 +-
go.sum | 22 +-
transports/meeklite/meek.go | 10 +-
transports/meeklite/transport.go | 168 ++++++++++
6 files changed, 870 insertions(+), 17 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index fdcffc4..fe8f58d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,6 @@
Changes in version 0.0.9 - UNRELEASED:
+ - Various meek_lite code cleanups and bug fixes.
+ - Bug 29077: uTLS for ClientHello camouflage (meek_lite).
Changes in version 0.0.8 - 2019-01-20:
- Bug 24793: Send the correct authorization HTTP header for basic auth.
diff --git a/LICENSE-GPL3.txt b/LICENSE-GPL3.txt
new file mode 100644
index 0000000..f288702
--- /dev/null
+++ b/LICENSE-GPL3.txt
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. You must make sure that they, too, receive
+or can get the source code. And you must show them these terms so they
+know their rights.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<https://www.gnu.org/licenses/>.
+
+ The GNU General Public License does not permit incorporating your program
+into proprietary programs. If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library. If this is what you want to do, use the GNU Lesser General
+Public License instead of this License. But first, please read
+<https://www.gnu.org/licenses/why-not-lgpl.html>.
diff --git a/go.mod b/go.mod
index f676f90..50bb7eb 100644
--- a/go.mod
+++ b/go.mod
@@ -1,9 +1,12 @@
module gitlab.com/yawning/obfs4.git
require (
- git.torproject.org/pluggable-transports/goptlib.git v0.0.0-20180321061416-7d56ec4f381e
+ git.torproject.org/pluggable-transports/goptlib.git v0.0.0-20190117054722-15f83653abbc
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412
- github.com/dchest/siphash v1.2.0
- golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e
- golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1
+ github.com/dchest/siphash v1.2.1
+ github.com/refraction-networking/utls v0.0.0-20190105024908-a89e7e6da482
+ golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc
+ golang.org/x/net v0.0.0-20190119204137-ed066c81e75e
+ golang.org/x/sys v0.0.0-20190116161447-11f53e031339 // indirect
+ golang.org/x/text v0.3.0 // indirect
)
diff --git a/go.sum b/go.sum
index 94991ce..9545483 100644
--- a/go.sum
+++ b/go.sum
@@ -1,10 +1,16 @@
-git.torproject.org/pluggable-transports/goptlib.git v0.0.0-20180321061416-7d56ec4f381e h1:PYcONLFUhr00kGrq7Mf14JRtoXHG7BOSKIfIha0Hu5Q=
-git.torproject.org/pluggable-transports/goptlib.git v0.0.0-20180321061416-7d56ec4f381e/go.mod h1:YT4XMSkuEXbtqlydr9+OxqFAyspUv0Gr9qhM3B++o/Q=
+git.torproject.org/pluggable-transports/goptlib.git v0.0.0-20190117054722-15f83653abbc h1:k14lBVrBVgZx22Eg5eqQshT12PAsXBfAJK3vm65D/YE=
+git.torproject.org/pluggable-transports/goptlib.git v0.0.0-20190117054722-15f83653abbc/go.mod h1:YT4XMSkuEXbtqlydr9+OxqFAyspUv0Gr9qhM3B++o/Q=
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412 h1:w1UutsfOrms1J05zt7ISrnJIXKzwaspym5BTKGx93EI=
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0=
-github.com/dchest/siphash v1.2.0 h1:YWOShuhvg0GqbQpMa60QlCGtEyf7O7HC1Jf0VjdQ60M=
-github.com/dchest/siphash v1.2.0/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4=
-golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e h1:IzypfodbhbnViNUO/MEh0FzCUooG97cIGfdggUrUSyU=
-golang.org/x/crypto v0.0.0-20181015023909-0c41d7ab0a0e/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
-golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1 h1:Y/KGZSOdz/2r0WJ9Mkmz6NJBusp0kiNx1Cn82lzJQ6w=
-golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+github.com/dchest/siphash v1.2.1 h1:4cLinnzVJDKxTCl9B01807Yiy+W7ZzVHj/KIroQRvT4=
+github.com/dchest/siphash v1.2.1/go.mod h1:q+IRvb2gOSrUnYoPqHiyHXS0FOBBOdl6tONBlVnOnt4=
+github.com/refraction-networking/utls v0.0.0-20190105024908-a89e7e6da482 h1:mP4Zgxxydw8ljKIA3zHWmzrTKizyULi7vQrRtxqQNmo=
+github.com/refraction-networking/utls v0.0.0-20190105024908-a89e7e6da482/go.mod h1:tz9gX959MEFfFN5whTIocCLUG57WiILqtdVxI8c6Wj0=
+golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc h1:F5tKCVGp+MUAHhKp5MZtGqAlGX3+oCsiL1Q629FL90M=
+golang.org/x/crypto v0.0.0-20190103213133-ff983b9c42bc/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
+golang.org/x/net v0.0.0-20190119204137-ed066c81e75e h1:MDa3fSUp6MdYHouVmCCNz/zaH2a6CRcxY3VhT/K3C5Q=
+golang.org/x/net v0.0.0-20190119204137-ed066c81e75e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/sys v0.0.0-20190116161447-11f53e031339 h1:g/Jesu8+QLnA0CPzF3E1pURg0Byr7i6jLoX5sqjcAh0=
+golang.org/x/sys v0.0.0-20190116161447-11f53e031339/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
diff --git a/transports/meeklite/meek.go b/transports/meeklite/meek.go
index 39a6d4b..fb6aa0d 100644
--- a/transports/meeklite/meek.go
+++ b/transports/meeklite/meek.go
@@ -108,9 +108,9 @@ func newClientArgs(args *pt.Args) (ca *meekClientArgs, err error) {
}
type meekConn struct {
- args *meekClientArgs
- sessionID string
- transport *http.Transport
+ args *meekClientArgs
+ sessionID string
+ roundTripper http.RoundTripper
closeOnce sync.Once
workerWrChan chan []byte
@@ -242,7 +242,7 @@ func (c *meekConn) roundTrip(sndBuf []byte) (recvBuf []byte, err error) {
req.Header.Set("X-Session-Id", c.sessionID)
req.Header.Set("User-Agent", "")
- resp, err = c.transport.RoundTrip(req)
+ resp, err = c.roundTripper.RoundTrip(req)
if err != nil {
return nil, err
}
@@ -346,7 +346,7 @@ func newMeekConn(network, addr string, dialFn base.DialFunc, ca *meekClientArgs)
conn := &meekConn{
args: ca,
sessionID: id,
- transport: &http.Transport{Dial: dialFn},
+ roundTripper: newRoundTripper(dialFn),
workerWrChan: make(chan []byte, maxChanBacklog),
workerRdChan: make(chan []byte, maxChanBacklog),
workerCloseChan: make(chan struct{}),
diff --git a/transports/meeklite/transport.go b/transports/meeklite/transport.go
new file mode 100644
index 0000000..6ccef31
--- /dev/null
+++ b/transports/meeklite/transport.go
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 2019 Yawning Angel <yawning at schwanenlied dot me>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package meeklite
+
+import (
+ "crypto/tls"
+ "errors"
+ "fmt"
+ "net"
+ "net/http"
+ "net/url"
+ "strings"
+ "sync"
+
+ utls "github.com/refraction-networking/utls"
+ "golang.org/x/net/http2"
+
+ "gitlab.com/yawning/obfs4.git/transports/base"
+)
+
+var errProtocolNegotiated = errors.New("meek_lite: protocol negotiated")
+
+type roundTripper struct {
+ sync.Mutex
+
+ transport http.RoundTripper
+ dialFn base.DialFunc
+
+ initConn net.Conn
+}
+
+func (rt *roundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
+ // Note: This isn't protected with a lock, since the meeklite ioWorker
+ // serializes RoundTripper requests.
+ //
+ // This also assumes that req.URL.Host will remain constant for the
+ // lifetime of the roundTripper, which is a valid assumption for meeklite.
+ if rt.transport == nil {
+ if err := rt.getTransport(req); err != nil {
+ return nil, err
+ }
+ }
+ return rt.transport.RoundTrip(req)
+}
+
+func (rt *roundTripper) getTransport(req *http.Request) error {
+ switch strings.ToLower(req.URL.Scheme) {
+ case "http":
+ rt.transport = &http.Transport{Dial: rt.dialFn}
+ return nil
+ case "https":
+ default:
+ return fmt.Errorf("meek_lite: invalid URL scheme: '%v'", req.URL.Scheme)
+ }
+
+ _, err := rt.dialTLS("tcp", getDialTLSAddr(req.URL))
+ switch err {
+ case errProtocolNegotiated:
+ case nil:
+ // Should never happen.
+ panic("meek_lite: dialTLS returned no error when determining transport")
+ default:
+ return err
+ }
+
+ return nil
+}
+
+func (rt *roundTripper) dialTLS(network, addr string) (net.Conn, error) {
+ // Unlike rt.transport, this is protected by a critical section
+ // since past the initial manual call from getTransport, the HTTP
+ // client will be the caller.
+ rt.Lock()
+ defer rt.Unlock()
+
+ // If we have the connection from when we determined the HTTPS
+ // transport to use, return that.
+ if conn := rt.initConn; conn != nil {
+ rt.initConn = nil
+ return conn, nil
+ }
+
+ rawConn, err := rt.dialFn(network, addr)
+ if err != nil {
+ return nil, err
+ }
+
+ var host string
+ if host, _, err = net.SplitHostPort(addr); err != nil {
+ host = addr
+ }
+
+ // TODO: Make this configurable. What "works" is host dependent.
+ // * HelloChrome_Auto - Failures in a stand alone testcase against google.com
+ // * HelloFirefox_Auto - Fails with the azure bridge, incompatible group.
+ // * HelloIOS_Auto - Seems to work.
+ //
+ // Since HelloChrome_Auto works with azure, that's what'll be used for
+ // now, since that's what the overwelming vast majority of people will
+ // use.
+ conn := utls.UClient(rawConn, &utls.Config{ServerName: host}, utls.HelloChrome_Auto)
+ if err = conn.Handshake(); err != nil {
+ conn.Close()
+ return nil, err
+ }
+
+ if rt.transport != nil {
+ return conn, nil
+ }
+
+ // No http.Transport constructed yet, create one based on the results
+ // of ALPN.
+ switch conn.ConnectionState().NegotiatedProtocol {
+ case http2.NextProtoTLS:
+ // The remote peer is speaking HTTP 2 + TLS.
+ rt.transport = &http2.Transport{DialTLS: rt.dialTLSHTTP2}
+ default:
+ // Assume the remote peer is speaking HTTP 1.x + TLS.
+ rt.transport = &http.Transport{DialTLS: rt.dialTLS}
+ }
+
+ // Stash the connection just established for use servicing the
+ // actual request (should be near-immediate).
+ rt.initConn = conn
+
+ return nil, errProtocolNegotiated
+}
+
+func (rt *roundTripper) dialTLSHTTP2(network, addr string, cfg *tls.Config) (net.Conn, error) {
+ return rt.dialTLS(network, addr)
+}
+
+func getDialTLSAddr(u *url.URL) string {
+ host, port, err := net.SplitHostPort(u.Host)
+ if err == nil {
+ return net.JoinHostPort(host, port)
+ }
+
+ return net.JoinHostPort(u.Host, u.Scheme)
+}
+
+func newRoundTripper(dialFn base.DialFunc) http.RoundTripper {
+ return &roundTripper{
+ dialFn: dialFn,
+ }
+}
+
+func init() {
+ // Attempt to increase compatibility, there's an encrypted link
+ // underneath, and this doesn't (shouldn't) affect the external
+ // fingerprint.
+ utls.EnableWeakCiphers()
+}
1
0

[obfs4/master] transports/meeklite: Cleanups, bugfixes and improvements
by yawning@torproject.org 21 Jan '19
by yawning@torproject.org 21 Jan '19
21 Jan '19
commit 816cff15f425d0cb87a1b996366989aa01833f99
Author: Yawning Angel <yawning(a)schwanenlied.me>
Date: Sun Jan 20 16:14:28 2019 +0000
transports/meeklite: Cleanups, bugfixes and improvements
* Properly close the response body on HTTP error.
* Cleanup close signaling.
* Write() should return faster on closed connections.
---
transports/meeklite/meek.go | 70 +++++++++++++++++++++------------------------
1 file changed, 32 insertions(+), 38 deletions(-)
diff --git a/transports/meeklite/meek.go b/transports/meeklite/meek.go
index a99556b..39a6d4b 100644
--- a/transports/meeklite/meek.go
+++ b/transports/meeklite/meek.go
@@ -39,6 +39,7 @@ import (
"net"
"net/http"
gourl "net/url"
+ "os"
"runtime"
"sync"
"time"
@@ -107,16 +108,14 @@ func newClientArgs(args *pt.Args) (ca *meekClientArgs, err error) {
}
type meekConn struct {
- sync.Mutex
-
args *meekClientArgs
sessionID string
transport *http.Transport
- workerRunning bool
+ closeOnce sync.Once
workerWrChan chan []byte
workerRdChan chan []byte
- workerCloseChan chan bool
+ workerCloseChan chan struct{}
rdBuf *bytes.Buffer
}
@@ -154,11 +153,10 @@ func (c *meekConn) Read(p []byte) (n int, err error) {
func (c *meekConn) Write(b []byte) (n int, err error) {
// Check to see if the connection is actually open.
- c.Lock()
- closed := !c.workerRunning
- c.Unlock()
- if closed {
+ select {
+ case <-c.workerCloseChan:
return 0, io.ErrClosedPipe
+ default:
}
if len(b) == 0 {
@@ -168,9 +166,7 @@ func (c *meekConn) Write(b []byte) (n int, err error) {
// Copy the data to be written to a new slice, since
// we return immediately after queuing and the peer can
// happily reuse `b` before data has been sent.
- toWrite := len(b)
- b2 := make([]byte, toWrite)
- copy(b2, b)
+ b2 := append([]byte{}, b...)
if ok := c.enqueueWrite(b2); !ok {
// Technically we did enqueue data, but the worker's
// got closed out from under us.
@@ -181,18 +177,15 @@ func (c *meekConn) Write(b []byte) (n int, err error) {
}
func (c *meekConn) Close() error {
- // Ensure that we do this once and only once.
- c.Lock()
- defer c.Unlock()
- if !c.workerRunning {
- return nil
- }
+ err := os.ErrClosed
- // Tear down the worker.
- c.workerRunning = false
- c.workerCloseChan <- true
+ c.closeOnce.Do(func() {
+ // Tear down the worker, if it is still running.
+ close(c.workerCloseChan)
+ err = nil
+ })
- return nil
+ return err
}
func (c *meekConn) LocalAddr() net.Addr {
@@ -216,7 +209,11 @@ func (c *meekConn) SetWriteDeadline(t time.Time) error {
}
func (c *meekConn) enqueueWrite(b []byte) (ok bool) {
- defer func() { _ = recover() }()
+ defer func() {
+ if err := recover(); err != nil {
+ ok = false
+ }
+ }()
c.workerWrChan <- b
return true
}
@@ -249,14 +246,16 @@ func (c *meekConn) roundTrip(sndBuf []byte) (recvBuf []byte, err error) {
if err != nil {
return nil, err
}
- if resp.StatusCode != http.StatusOK {
- err = fmt.Errorf("status code was %d, not %d", resp.StatusCode, http.StatusOK)
- time.Sleep(retryDelay)
- } else {
- defer resp.Body.Close()
+
+ if resp.StatusCode == http.StatusOK {
recvBuf, err = ioutil.ReadAll(io.LimitReader(resp.Body, maxPayloadLength))
+ resp.Body.Close()
return
}
+
+ resp.Body.Close()
+ err = fmt.Errorf("status code was %d, not %d", resp.StatusCode, http.StatusOK)
+ time.Sleep(retryDelay)
}
return
}
@@ -264,8 +263,8 @@ func (c *meekConn) roundTrip(sndBuf []byte) (recvBuf []byte, err error) {
func (c *meekConn) ioWorker() {
interval := initPollInterval
var sndBuf, leftBuf []byte
-loop:
+loop:
for {
sndBuf = nil
select {
@@ -316,7 +315,7 @@ loop:
// Sent data, poll immediately.
interval = 0
} else if interval == 0 {
- // Neither sent nor received data, initialize the delay.
+ // Neither sent nor received data after a poll, re-initialize the delay.
interval = initPollInterval
} else {
// Apply a multiplicative backoff.
@@ -334,11 +333,8 @@ loop:
close(c.workerRdChan)
close(c.workerWrChan)
- // In case the close was done on an error condition, update the state
- // variable so that further calls to Write() will fail.
- c.Lock()
- defer c.Unlock()
- c.workerRunning = false
+ // Close the connection (extra calls to Close() are harmless).
+ _ = c.Close()
}
func newMeekConn(network, addr string, dialFn base.DialFunc, ca *meekClientArgs) (net.Conn, error) {
@@ -347,15 +343,13 @@ func newMeekConn(network, addr string, dialFn base.DialFunc, ca *meekClientArgs)
return nil, err
}
- tr := &http.Transport{Dial: dialFn}
conn := &meekConn{
args: ca,
sessionID: id,
- transport: tr,
- workerRunning: true,
+ transport: &http.Transport{Dial: dialFn},
workerWrChan: make(chan []byte, maxChanBacklog),
workerRdChan: make(chan []byte, maxChanBacklog),
- workerCloseChan: make(chan bool),
+ workerCloseChan: make(chan struct{}),
}
// Start the I/O worker.
1
0
commit 9cac9085504230e036ff65754d88a349ad88d549
Merge: 8c61fc85 bf49f7dd
Author: Damian Johnson <atagar(a)torproject.org>
Date: Sun Jan 20 17:46:53 2019 -0800
Bandwidth file support
Support for bandwidth authority metrics...
https://trac.torproject.org/projects/tor/ticket/29056
https://gitweb.torproject.org/torspec.git/tree/bandwidth-file-spec.txt
docs/api.rst | 1 +
docs/api/descriptor/bandwidth_file.rst | 5 +
docs/change_log.rst | 1 +
docs/contents.rst | 1 +
stem/descriptor/__init__.py | 13 +-
stem/descriptor/bandwidth_file.py | 258 ++++++++++++++++++++++++++
test/settings.cfg | 8 +-
test/unit/descriptor/__init__.py | 1 +
test/unit/descriptor/bandwidth_file.py | 187 +++++++++++++++++++
test/unit/descriptor/data/bandwidth_file_v1.0 | 95 ++++++++++
test/unit/descriptor/data/bandwidth_file_v1.2 | 95 ++++++++++
11 files changed, 659 insertions(+), 6 deletions(-)
1
0