lists.torproject.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

tbb-commits

Thread Start a new thread
Download
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
tbb-commits@lists.torproject.org

March 2018

  • 1 participants
  • 87 discussions
[tor-browser/tor-browser-52.7.2esr-8.0-1] Bug 23439: Exempt .onion domains from mixed content warnings
by gk@torproject.org 21 Mar '18

21 Mar '18
commit 1316acb053d6191176e9ae4e4f502415b068525e Author: Georg Koppen <gk(a)torproject.org> Date: Wed Mar 21 08:21:01 2018 +0000 Bug 23439: Exempt .onion domains from mixed content warnings Tests --- browser/base/content/test/general/browser.ini | 4 +++ .../test/general/browser_no_mcb_for_onions.js | 39 ++++++++++++++++++++++ .../test/general/test_no_mcb_for_onions.html | 28 ++++++++++++++++ 3 files changed, 71 insertions(+) diff --git a/browser/base/content/test/general/browser.ini b/browser/base/content/test/general/browser.ini index 96e591ffea7b..321e444c2cde 100644 --- a/browser/base/content/test/general/browser.ini +++ b/browser/base/content/test/general/browser.ini @@ -492,3 +492,7 @@ tags = mcb [browser_newwindow_focus.js] skip-if = (os == "linux" && !e10s) # Bug 1263254 - Perma fails on Linux without e10s for some reason. [browser_bug1299667.js] +[browser_no_mcb_for_onions.js] +tags = mcb +support-files = + test_no_mcb_for_onions.html diff --git a/browser/base/content/test/general/browser_no_mcb_for_onions.js b/browser/base/content/test/general/browser_no_mcb_for_onions.js new file mode 100644 index 000000000000..8023b78276f3 --- /dev/null +++ b/browser/base/content/test/general/browser_no_mcb_for_onions.js @@ -0,0 +1,39 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +// The test loads a HTTPS web page with active content from HTTP .onion URLs +// and makes sure that the mixed content flags on the docshell are not set. +// +// Note that the URLs referenced within the test page intentionally use the +// unassigned port 8 because we don't want to actually load anything, we just +// want to check that the URLs are not blocked. + +const TEST_URL = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "https://example.com") + "test_no_mcb_for_onions.html"; + +const PREF_BLOCK_DISPLAY = "security.mixed_content.block_display_content"; +const PREF_BLOCK_ACTIVE = "security.mixed_content.block_active_content"; +const PREF_ONION_WHITELIST = "dom.securecontext.whitelist_onions"; + +add_task(async function allowOnionMixedContent() { + registerCleanupFunction(function() { + gBrowser.removeCurrentTab(); + }); + + await SpecialPowers.pushPrefEnv({set: [[PREF_BLOCK_DISPLAY, true]]}); + await SpecialPowers.pushPrefEnv({set: [[PREF_BLOCK_ACTIVE, true]]}); + await SpecialPowers.pushPrefEnv({set: [[PREF_ONION_WHITELIST, true]]}); + + const tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, TEST_URL); + const browser = gBrowser.getBrowserForTab(tab); + + await ContentTask.spawn(browser, null, function() { + is(docShell.hasMixedDisplayContentBlocked, false, "hasMixedDisplayContentBlocked not set"); + is(docShell.hasMixedActiveContentBlocked, false, "hasMixedActiveContentBlocked not set"); + }); + + await assertMixedContentBlockingState(browser, { + activeBlocked: false, + activeLoaded: false, + passiveLoaded: false, + }); +}); diff --git a/browser/base/content/test/general/test_no_mcb_for_onions.html b/browser/base/content/test/general/test_no_mcb_for_onions.html new file mode 100644 index 000000000000..9715d526bf87 --- /dev/null +++ b/browser/base/content/test/general/test_no_mcb_for_onions.html @@ -0,0 +1,28 @@ +<!-- See browser_no_mcb_for_onions.js --> +<!DOCTYPE HTML> +<html> + <head> + <meta charset="utf8"> + <title>Bug 1382359</title> + </head> + + <style> + @font-face { + src: url("http://123456789abcdef.onion:8/test.ttf"); + } + </style> + + <body> + <img src="http://123456789abcdef.onion:8/test.png"> + + <iframe src="http://123456789abcdef.onion:8/test.html"></iframe> + </body> + + <script src="http://123456789abcdef.onion:8/test.js"></script> + + <link href="http://123456789abcdef.onion:8/test.css" rel="stylesheet"></link> + + <script> + fetch("http://123456789abcdef.onion:8"); + </script> +</html>
1 0
0 0
[tor-browser/tor-browser-52.7.2esr-8.0-1] Orfox: Fix #1 - Improve build instructions
by gk@torproject.org 20 Mar '18

20 Mar '18
commit 03f65d64913229abf74b964da309535db3919679 Author: Amogh Pradeep <amoghbl1(a)gmail.com> Date: Tue Jul 14 00:52:24 2015 -0400 Orfox: Fix #1 - Improve build instructions Signed-off-by: Amogh Pradeep <amoghbl1(a)gmail.com> --- README.md | 20 ++++++++++++++++++++ README.txt | 27 --------------------------- 2 files changed, 20 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md new file mode 100644 index 000000000000..8cf5ca26625a --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +## ORFOX BUILD STEPS: + +1) Move .mozconfig-android to .mozconfig OR run: +``` +export MOZCONFIG="tor-browser/.mozconfig-android" +``` +2) Checks if the all requirements for the build are fine with: +``` +./mach configure +``` +3) Builds the repo with: +``` +./mach build +``` +4) Creates the apk in tor-browser/MOZ_OBJDIR/dist/fennec-38.0.en-US.android-arm.apk +``` +./mach package +``` +### Note: this does not ship the addons, that is managed in a different repo: https://github.com/amoghbl1/orfox-addons. +### Steps to include these addons can be figured out looking at the jenkins script at https://github.com/amoghbl1/Orfox/blob/master/jenkins-build diff --git a/README.txt b/README.txt deleted file mode 100644 index 658c0dce3174..000000000000 --- a/README.txt +++ /dev/null @@ -1,27 +0,0 @@ -An explanation of the Mozilla Source Code Directory Structure and links to -project pages with documentation can be found at: - - https://developer.mozilla.org/en/Mozilla_Source_Code_Directory_Structure - -For information on how to build Mozilla from the source code, see: - - http://developer.mozilla.org/en/docs/Build_Documentation - -To have your bug fix / feature added to Mozilla, you should create a patch and -submit it to Bugzilla (https://bugzilla.mozilla.org) Instructions are at: - - http://developer.mozilla.org/en/docs/Creating_a_patch - http://developer.mozilla.org/en/docs/Getting_your_patch_in_the_tree - -If you have a question about developing Mozilla, and can't find the solution -on http://developer.mozilla.org, you can try asking your question in a -mozilla.* Usenet group, or on IRC at irc.mozilla.org. [The Mozilla news groups -are accessible on Google Groups, or news.mozilla.org with a NNTP reader.] - -You can download nightly development builds from the Mozilla FTP server. -Keep in mind that nightly builds, which are used by Mozilla developers for -testing, may be buggy. Firefox nightlies, for example, can be found at: - - https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/ - - or - - http://nightly.mozilla.org/
1 0
0 0
[tor-browser/tor-browser-52.7.2esr-8.0-1] Orfox: receive Tor status in thread so they arrive when event sync blocks
by gk@torproject.org 20 Mar '18

20 Mar '18
commit 444e865687a56e630fc511173a67d7e06acf746c Author: Hans-Christoph Steiner <hans(a)eds.org> Date: Thu Sep 10 12:52:52 2015 +0200 Orfox: receive Tor status in thread so they arrive when event sync blocks Run in thread so Tor status updates will be received while the Gecko event sync is blocking the main thread. This might not be the best approach since it probably means that the main UI will be frozen waiting for Tor to reach ON status. Signed-off-by: Amogh Pradeep <amoghbl1(a)gmail.com> --- mobile/android/base/java/org/mozilla/gecko/BrowserApp.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java index b57fe27705fb..34f93ee56cdb 100644 --- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java @@ -139,6 +139,9 @@ import android.nfc.NfcAdapter; import android.nfc.NfcEvent; import android.os.Build; import android.os.Bundle; +import android.os.Handler; +import android.os.HandlerThread; +import android.os.Looper; import android.os.StrictMode; import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; @@ -1119,6 +1122,14 @@ public class BrowserApp extends GeckoApp if (mIsAbortingAppLaunch) { return; } + /* run in thread so Tor status updates will be received while the + * Gecko event sync is blocking the main thread */ + HandlerThread handlerThread = new HandlerThread("torStatusReceiver"); + handlerThread.start(); + Looper looper = handlerThread.getLooper(); + Handler handler = new Handler(looper); + registerReceiver(torStatusReceiver, new IntentFilter(OrbotHelper.ACTION_STATUS), + null, handler); checkStartOrbot();
1 0
0 0
[tor-browser/tor-browser-52.7.2esr-8.0-1] Orfox: add BroadcastReceiver to receive Tor status from Orbot
by gk@torproject.org 20 Mar '18

20 Mar '18
commit a9dbc810f24b511ca2eb079ba19830106658c9a9 Author: Hans-Christoph Steiner <hans(a)eds.org> Date: Tue Sep 1 20:49:27 2015 +0200 Orfox: add BroadcastReceiver to receive Tor status from Orbot Signed-off-by: Amogh Pradeep <amoghbl1(a)gmail.com> --- .../base/java/org/mozilla/gecko/BrowserApp.java | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java index a532b454a263..984f04eaf52c 100644 --- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java @@ -120,10 +120,12 @@ import android.app.AlertDialog; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; +import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; +import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; @@ -1070,6 +1072,30 @@ public class BrowserApp extends GeckoApp } } + private BroadcastReceiver torStatusReceiver = new BroadcastReceiver() { + + @Override + public void onReceive(Context context, Intent intent) { + if (TextUtils.equals(intent.getAction(), OrbotHelper.ACTION_STATUS)) { + Log.i(LOGTAG, getPackageName() + " received intent : " + intent.getAction() + " " + intent.getPackage()); + String status = intent.getStringExtra(OrbotHelper.EXTRA_STATUS) + " (" + intent.getStringExtra(OrbotHelper.EXTRA_PACKAGE_NAME) + ")"; + Log.i(LOGTAG, status); + + boolean enabled = (intent.getStringExtra(OrbotHelper.EXTRA_STATUS).equals(OrbotHelper.STATUS_ON)); + // TODO + /* + if(enabled) { + if (intent.hasExtra(OrbotHelper.EXTRA_PROXY_PORT_HTTP)) + Log.i(LOGTAG, "HTTP PROXY: " + intent.getIntExtra(OrbotHelper.EXTRA_PROXY_PORT_HTTP, -1)); + + if (intent.hasExtra(OrbotHelper.EXTRA_PROXY_PORT_SOCKS)) + Log.i(LOGTAG, "SOCKS PROXY: " + intent.getIntExtra(OrbotHelper.EXTRA_PROXY_PORT_SOCKS, -1)); + } + */ + } + } + }; + public void checkStartOrbot() { if (!OrbotHelper.isOrbotInstalled(this)) { final Intent intent = OrbotHelper.getOrbotInstallIntent(this); @@ -1090,6 +1116,7 @@ public class BrowserApp extends GeckoApp }); builder.show(); } else { + registerReceiver(torStatusReceiver, new IntentFilter(OrbotHelper.ACTION_STATUS)); OrbotHelper.requestStartTor(this); } } @@ -1136,6 +1163,10 @@ public class BrowserApp extends GeckoApp if (mIsAbortingAppLaunch) { return; } + // Register for Prompt:ShowTop so we can foreground this activity even if it's hidden. + EventDispatcher.getInstance().registerGeckoThreadListener((GeckoEventListener) this, + "Prompt:ShowTop"); + unregisterReceiver(torStatusReceiver); for (final BrowserAppDelegate delegate : delegates) { delegate.onRestart(this);
1 0
0 0
[tor-browser/tor-browser-52.7.2esr-8.0-1] Orfox: Centralized proxy applied to CrashReporter, SuggestClient, Distribution, AbstractCommunicator and BaseResources.
by gk@torproject.org 20 Mar '18

20 Mar '18
commit 8236f9c6273a9ff4a094fbe9203a14f3a9e0dd75 Author: Amogh Pradeep <amoghbl1(a)gmail.com> Date: Fri Jun 12 02:07:45 2015 -0400 Orfox: Centralized proxy applied to CrashReporter, SuggestClient, Distribution, AbstractCommunicator and BaseResources. Signed-off-by: Amogh Pradeep <amoghbl1(a)gmail.com> --- .../base/java/org/mozilla/gecko/CrashReporter.java | 5 ++++- .../base/java/org/mozilla/gecko/SuggestClient.java | 5 ++++- .../mozilla/gecko/distribution/Distribution.java | 5 ++++- mobile/android/base/moz.build | 4 +++- .../java/org/mozilla/gecko/util/ProxySettings.java | 21 +++++++++++++++++++++ .../org/mozilla/gecko/sync/net/BaseResource.java | 4 ++++ .../service/utils/AbstractCommunicator.java | 5 ++++- 7 files changed, 44 insertions(+), 5 deletions(-) diff --git a/mobile/android/base/java/org/mozilla/gecko/CrashReporter.java b/mobile/android/base/java/org/mozilla/gecko/CrashReporter.java index ce2384a4d4d4..577079954fae 100644 --- a/mobile/android/base/java/org/mozilla/gecko/CrashReporter.java +++ b/mobile/android/base/java/org/mozilla/gecko/CrashReporter.java @@ -17,11 +17,14 @@ import java.io.IOException; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; +import java.net.Proxy; +import java.net.InetSocketAddress; import java.nio.channels.Channels; import java.nio.channels.FileChannel; import java.util.zip.GZIPOutputStream; import org.mozilla.gecko.AppConstants.Versions; +import org.mozilla.gecko.util.ProxySettings; import android.annotation.SuppressLint; import android.app.AlertDialog; @@ -366,7 +369,7 @@ public class CrashReporter extends AppCompatActivity Log.i(LOGTAG, "server url: " + spec); try { URL url = new URL(spec); - HttpURLConnection conn = (HttpURLConnection)url.openConnection(); + HttpURLConnection conn = (HttpURLConnection)url.openConnection(ProxySettings.getProxy()); conn.setRequestMethod("POST"); String boundary = generateBoundary(); conn.setDoOutput(true); diff --git a/mobile/android/base/java/org/mozilla/gecko/SuggestClient.java b/mobile/android/base/java/org/mozilla/gecko/SuggestClient.java index e43bbef1f48c..673feb54abdc 100644 --- a/mobile/android/base/java/org/mozilla/gecko/SuggestClient.java +++ b/mobile/android/base/java/org/mozilla/gecko/SuggestClient.java @@ -7,6 +7,8 @@ package org.mozilla.gecko; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; +import java.net.Proxy; +import java.net.InetSocketAddress; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLEncoder; @@ -15,6 +17,7 @@ import java.util.ArrayList; import org.json.JSONArray; import org.mozilla.gecko.annotation.RobocopTarget; import org.mozilla.gecko.util.HardwareUtils; +import org.mozilla.gecko.util.ProxySettings; import android.content.Context; import android.text.TextUtils; @@ -87,7 +90,7 @@ public class SuggestClient { HttpURLConnection urlConnection = null; InputStream in = null; try { - urlConnection = (HttpURLConnection) url.openConnection(); + urlConnection = (HttpURLConnection) url.openConnection(ProxySettings.getProxy()); urlConnection.setConnectTimeout(mTimeout); urlConnection.setRequestProperty("User-Agent", USER_AGENT); in = new BufferedInputStream(urlConnection.getInputStream()); diff --git a/mobile/android/base/java/org/mozilla/gecko/distribution/Distribution.java b/mobile/android/base/java/org/mozilla/gecko/distribution/Distribution.java index a7b0fe32d360..4b272109a0fc 100644 --- a/mobile/android/base/java/org/mozilla/gecko/distribution/Distribution.java +++ b/mobile/android/base/java/org/mozilla/gecko/distribution/Distribution.java @@ -18,6 +18,8 @@ import java.net.SocketException; import java.net.URI; import java.net.URISyntaxException; import java.net.UnknownHostException; +import java.net.Proxy; +import java.net.InetSocketAddress; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; @@ -44,6 +46,7 @@ import org.mozilla.gecko.Telemetry; import org.mozilla.gecko.annotation.JNITarget; import org.mozilla.gecko.util.FileUtils; import org.mozilla.gecko.util.HardwareUtils; +import org.mozilla.gecko.util.ProxySettings; import org.mozilla.gecko.util.ThreadUtils; import android.app.Activity; @@ -522,7 +525,7 @@ public class Distribution { Log.v(LOGTAG, "Downloading referred distribution: " + uri); try { - final HttpURLConnection connection = (HttpURLConnection) uri.toURL().openConnection(); + final HttpURLConnection connection = (HttpURLConnection) uri.toURL().openConnection(ProxySettings.getProxy()); // If the Search Activity starts, and we handle the referrer intent, this'll return // null. Recover gracefully in this case. diff --git a/mobile/android/base/moz.build b/mobile/android/base/moz.build index 4dbb1c25fdab..9d93e47b222d 100644 --- a/mobile/android/base/moz.build +++ b/mobile/android/base/moz.build @@ -149,8 +149,9 @@ gujar.sources += [geckoview_source_dir + 'java/org/mozilla/gecko/' + x for x in 'util/NonEvictingLruCache.java', 'util/PrefUtils.java', 'util/ProxySelector.java', + 'util/ProxySettings.java', 'util/publicsuffix/PublicSuffix.java', - 'util/publicsuffix/PublicSuffixPatterns.java', + 'util/publicsuffix/PublicSuffixPatterns.java', 'util/RawResource.java', 'util/StringUtils.java', 'util/ThreadUtils.java', @@ -165,6 +166,7 @@ gujar.extra_jars = [ CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'], 'constants.jar', 'gecko-mozglue.jar', + 'sync-thirdparty.jar', ] gujar.javac_flags += ['-Xlint:all,-deprecation'] diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/ProxySettings.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/ProxySettings.java new file mode 100644 index 000000000000..0f5d363d543f --- /dev/null +++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/util/ProxySettings.java @@ -0,0 +1,21 @@ +package org.mozilla.gecko.util; + +import java.net.InetSocketAddress; +import java.net.Proxy; + +import ch.boye.httpclientandroidlib.HttpHost; + +public class ProxySettings { + private static final String TOR_PROXY_ADDRESS = "127.0.0.1"; + private static final int TOR_PROXY_PORT = 8118; + + public static Proxy getProxy() { + // TODO make configurable + return new Proxy(Proxy.Type.HTTP, new InetSocketAddress(TOR_PROXY_ADDRESS, TOR_PROXY_PORT)); + } + + public static HttpHost getProxyHost() { + // TODO make configurable + return new HttpHost(TOR_PROXY_ADDRESS, TOR_PROXY_PORT); + } +} diff --git a/mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/BaseResource.java b/mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/BaseResource.java index 60bbc86bbca7..b52c38d1ab07 100644 --- a/mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/BaseResource.java +++ b/mobile/android/services/src/main/java/org/mozilla/gecko/sync/net/BaseResource.java @@ -54,6 +54,9 @@ import ch.boye.httpclientandroidlib.params.HttpProtocolParams; import ch.boye.httpclientandroidlib.protocol.BasicHttpContext; import ch.boye.httpclientandroidlib.protocol.HttpContext; import ch.boye.httpclientandroidlib.util.EntityUtils; +import ch.boye.httpclientandroidlib.HttpHost; +import ch.boye.httpclientandroidlib.conn.params.ConnRoutePNames; +import org.mozilla.gecko.util.ProxySettings; /** * Provide simple HTTP access to a Sync server or similar. @@ -215,6 +218,7 @@ public class BaseResource implements Resource { // We could reuse these client instances, except that we mess around // with their parameters… so we'd need a pool of some kind. client = new DefaultHttpClient(getConnectionManager()); + client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, ProxySettings.getProxyHost()); // TODO: Eventually we should use Apache HttpAsyncClient. It's not out of alpha yet. // Until then, we synchronously make the request, then invoke our delegate's callback. diff --git a/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/utils/AbstractCommunicator.java b/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/utils/AbstractCommunicator.java index 70816371a39c..f67b8bd45711 100644 --- a/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/utils/AbstractCommunicator.java +++ b/mobile/android/stumbler/java/org/mozilla/mozstumbler/service/utils/AbstractCommunicator.java @@ -17,6 +17,8 @@ import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; +import java.net.Proxy; +import java.net.InetSocketAddress; public abstract class AbstractCommunicator { @@ -73,7 +75,8 @@ public abstract class AbstractCommunicator { sMozApiKey = prefs.getMozApiKey(); } URL url = new URL(getUrlString() + "?key=" + sMozApiKey); - mHttpURLConnection = (HttpURLConnection) url.openConnection(); + Proxy torProxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8118)); + mHttpURLConnection = (HttpURLConnection) url.openConnection(torProxy); mHttpURLConnection.setRequestMethod("POST"); } catch (MalformedURLException e) { throw new IllegalArgumentException(e);
1 0
0 0
[tor-browser/tor-browser-52.7.2esr-8.0-1] Orfox: queue URL Intents and Tab:Load events when Orbot is not yet started
by gk@torproject.org 20 Mar '18

20 Mar '18
commit 7b8e8ea0d5ead3c243bd8f73b07ed815eaa3369d Author: Hans-Christoph Steiner <hans(a)eds.org> Date: Wed Sep 2 16:43:33 2015 +0200 Orfox: queue URL Intents and Tab:Load events when Orbot is not yet started Instead of failing when opening a URL and Tor is not ready, queue those Intents, then send them once we get STATUS_ON from Orbot. Tab:Load events seem to be the main way that URLs are sent to the browser engine. Trying to migrate these changes to 45, this might end up breaking it, not sure. Squash with 64604feef6326ed44101bde31edb666ffbf21352 Signed-off-by: Amogh Pradeep <amoghbl1(a)gmail.com> --- .../base/java/org/mozilla/gecko/BrowserApp.java | 21 +++++---------- .../main/java/org/mozilla/gecko/GeckoAppShell.java | 31 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java index 984f04eaf52c..b57fe27705fb 100644 --- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java @@ -1077,21 +1077,12 @@ public class BrowserApp extends GeckoApp @Override public void onReceive(Context context, Intent intent) { if (TextUtils.equals(intent.getAction(), OrbotHelper.ACTION_STATUS)) { - Log.i(LOGTAG, getPackageName() + " received intent : " + intent.getAction() + " " + intent.getPackage()); - String status = intent.getStringExtra(OrbotHelper.EXTRA_STATUS) + " (" + intent.getStringExtra(OrbotHelper.EXTRA_PACKAGE_NAME) + ")"; - Log.i(LOGTAG, status); - - boolean enabled = (intent.getStringExtra(OrbotHelper.EXTRA_STATUS).equals(OrbotHelper.STATUS_ON)); - // TODO - /* - if(enabled) { - if (intent.hasExtra(OrbotHelper.EXTRA_PROXY_PORT_HTTP)) - Log.i(LOGTAG, "HTTP PROXY: " + intent.getIntExtra(OrbotHelper.EXTRA_PROXY_PORT_HTTP, -1)); - - if (intent.hasExtra(OrbotHelper.EXTRA_PROXY_PORT_SOCKS)) - Log.i(LOGTAG, "SOCKS PROXY: " + intent.getIntExtra(OrbotHelper.EXTRA_PROXY_PORT_SOCKS, -1)); - } - */ + String status = intent.getStringExtra(OrbotHelper.EXTRA_STATUS); + Tabs.getInstance().setTorStatus(status); + + if (status.equals(OrbotHelper.STATUS_ON)) { + GeckoAppShell.sendPendingUrlIntents(BrowserApp.this); + } } } }; diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java index a802126395b4..9f28742c02d7 100644 --- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java +++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java @@ -21,9 +21,12 @@ import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Queue; import java.util.StringTokenizer; import java.util.TreeMap; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentLinkedQueue; import android.annotation.SuppressLint; import org.mozilla.gecko.annotation.JNITarget; @@ -44,6 +47,8 @@ import org.mozilla.gecko.util.NativeJSObject; import org.mozilla.gecko.util.ProxySelector; import org.mozilla.gecko.util.ThreadUtils; +import info.guardianproject.netcipher.proxy.OrbotHelper; + import android.Manifest; import android.app.Activity; import android.app.ActivityManager; @@ -110,6 +115,8 @@ public class GeckoAppShell // We have static members only. private GeckoAppShell() { } + private static String torStatus; + private static final CrashHandler CRASH_HANDLER = new CrashHandler() { @Override protected String getAppPackageName() { @@ -187,6 +194,8 @@ public class GeckoAppShell static private int sDensityDpi; static private int sScreenDepth; + static final Queue<Intent> PENDING_URL_INTENTS = new ConcurrentLinkedQueue<Intent>(); + /* Is the value in sVibrationEndTime valid? */ private static boolean sVibrationMaybePlaying; @@ -254,6 +263,17 @@ public class GeckoAppShell return sLayerView; } + static void sendPendingUrlIntents() { + try { + Context context = getContext(); + while (!PENDING_URL_INTENTS.isEmpty()) { + final Intent intent = PENDING_URL_INTENTS.poll(); + context.startActivity(intent); + } + } catch (NoSuchElementException e) {} + } + + /** * Sends an asynchronous request to Gecko. * @@ -2236,4 +2256,15 @@ public class GeckoAppShell } return sScreenSize; } + + public static void setTorStatus(Intent intent) { + torStatus = intent.getStringExtra(OrbotHelper.EXTRA_STATUS); + if (OrbotHelper.STATUS_ON.equals(torStatus)) { + sendPendingUrlIntents(); + } + } + + public static String getTorStatus() { + return torStatus; + } }
1 0
0 0
[tor-browser/tor-browser-52.7.2esr-8.0-1] Orfox: Removed sync option from preferences
by gk@torproject.org 20 Mar '18

20 Mar '18
commit 8f90bf1ab835668f38679bcf5129db85bc304b7a Author: Amogh Pradeep <amoghbl1(a)gmail.com> Date: Fri Jul 17 13:27:07 2015 -0400 Orfox: Removed sync option from preferences Signed-off-by: Amogh Pradeep <amoghbl1(a)gmail.com> --- mobile/android/base/resources/xml/preferences.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/mobile/android/base/resources/xml/preferences.xml b/mobile/android/base/resources/xml/preferences.xml index 06716cd9af91..08ee14ea443a 100644 --- a/mobile/android/base/resources/xml/preferences.xml +++ b/mobile/android/base/resources/xml/preferences.xml @@ -9,12 +9,6 @@ xmlns:gecko="http://schemas.android.com/apk/res-auto" android:enabled="false"> - <org.mozilla.gecko.preferences.SyncPreference android:key="android.not_a_preference.sync" - android:title="@string/pref_sync" - android:icon="@drawable/sync_avatar_default" - android:summary="@string/pref_sync_summary" - android:persistent="false" /> - <PreferenceScreen android:title="@string/pref_category_general" android:summary="@string/pref_category_general_summary" android:key="android.not_a_preference.general_screen"
1 0
0 0
[tor-browser/tor-browser-52.7.2esr-8.0-1] Orfox: quit button added, functionality changed to bring it up to date with current GeckoApp.java class, earlier version seemed to have problems with quitting
by gk@torproject.org 20 Mar '18

20 Mar '18
commit 25f95adb4015299cee5c6c8a14c3f3c849e7ad22 Author: Amogh Pradeep <amoghbl1(a)gmail.com> Date: Fri Jul 17 17:01:09 2015 -0400 Orfox: quit button added, functionality changed to bring it up to date with current GeckoApp.java class, earlier version seemed to have problems with quitting Signed-off-by: Amogh Pradeep <amoghbl1(a)gmail.com> --- mobile/android/base/java/org/mozilla/gecko/BrowserApp.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java index 5eddca3cf726..9023618669ef 100644 --- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java @@ -3428,7 +3428,7 @@ public class BrowserApp extends GeckoApp !PrefUtils.getStringSet(GeckoSharedPrefs.forProfile(this), ClearOnShutdownPref.PREF, new HashSet<String>()).isEmpty(); - aMenu.findItem(R.id.quit).setVisible(visible); + aMenu.findItem(R.id.quit).setVisible(true); // If tab data is unavailable we disable most of the context menu and related items and // return early.
1 0
0 0
[tor-browser/tor-browser-52.7.2esr-8.0-1] Orfox: NetCipher enabled, checks if orbot is installed
by gk@torproject.org 20 Mar '18

20 Mar '18
commit 67aca67cc7b0802f19024ad39f3d70733a47ce49 Author: Amogh Pradeep <amoghbl1(a)gmail.com> Date: Mon Jul 20 21:46:25 2015 -0400 Orfox: NetCipher enabled, checks if orbot is installed Signed-off-by: Amogh Pradeep <amoghbl1(a)gmail.com> --- .../base/java/org/mozilla/gecko/BrowserApp.java | 32 ++- mobile/android/base/moz.build | 6 + mobile/android/base/strings.xml.in | 5 + .../netcipher/proxy/OrbotHelper.java | 186 ++++++++++++++++ .../netcipher/proxy/TorServiceUtils.java | 233 +++++++++++++++++++++ mobile/android/orfox/strings.xml.in | 5 + 6 files changed, 462 insertions(+), 5 deletions(-) diff --git a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java index 9023618669ef..a532b454a263 100644 --- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java @@ -174,6 +174,8 @@ import android.animation.ObjectAnimator; import org.json.JSONException; import org.json.JSONObject; +import info.guardianproject.netcipher.proxy.OrbotHelper; + import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; @@ -1068,6 +1070,30 @@ public class BrowserApp extends GeckoApp } } + public void checkStartOrbot() { + if (!OrbotHelper.isOrbotInstalled(this)) { + final Intent intent = OrbotHelper.getOrbotInstallIntent(this); + + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.install_orbot); + builder.setMessage(R.string.you_must_have_orbot); + builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + startActivity(intent); + } + }); + builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + } + }); + builder.show(); + } else { + OrbotHelper.requestStartTor(this); + } + } + @Override public void onResume() { super.onResume(); @@ -1076,11 +1102,7 @@ public class BrowserApp extends GeckoApp return; } - if (!mHasResumed) { - EventDispatcher.getInstance().unregisterGeckoThreadListener((GeckoEventListener) this, - "Prompt:ShowTop"); - mHasResumed = true; - } + checkStartOrbot(); processTabQueue(); diff --git a/mobile/android/base/moz.build b/mobile/android/base/moz.build index 6c88464ab521..4dbb1c25fdab 100644 --- a/mobile/android/base/moz.build +++ b/mobile/android/base/moz.build @@ -12,6 +12,7 @@ include('android-services.mozbuild') geckoview_source_dir = TOPSRCDIR + '/mobile/android/geckoview/src/main/' geckoview_thirdparty_source_dir = TOPSRCDIR + '/mobile/android/geckoview/src/thirdparty/' +geckoview_netcipher_source_dir = TOPSRCDIR + '/mobile/android/geckoview/src/thirdparty/java/info/guardianproject/netcipher/proxy/' thirdparty_source_dir = TOPSRCDIR + '/mobile/android/thirdparty/' constants_jar = add_java_jar('constants') @@ -289,6 +290,11 @@ gvjar.sources += [geckoview_thirdparty_source_dir + f for f in [ 'java/com/googlecode/eyesfree/braille/selfbraille/WriteData.java', ]] +gvjar.sources += [geckoview_netcipher_source_dir + f for f in [ + 'OrbotHelper.java', + 'TorServiceUtils.java', +]] + gvjar.extra_jars += [ CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'], CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'], diff --git a/mobile/android/base/strings.xml.in b/mobile/android/base/strings.xml.in index 3511a4eca644..ec39107f8f60 100644 --- a/mobile/android/base/strings.xml.in +++ b/mobile/android/base/strings.xml.in @@ -28,6 +28,11 @@ #include ../search/strings/search_strings.xml.in #include ../services/strings.xml.in +#include ../orfox/strings.xml.in + + <string name="no_space_to_start_error">&no_space_to_start_error;</string> + <string name="error_loading_file">&error_loading_file;</string> + <string name="firstrun_panel_title_welcome">&firstrun_panel_title_welcome;</string> diff --git a/mobile/android/geckoview/src/thirdparty/java/info/guardianproject/netcipher/proxy/OrbotHelper.java b/mobile/android/geckoview/src/thirdparty/java/info/guardianproject/netcipher/proxy/OrbotHelper.java new file mode 100644 index 000000000000..d6a632fda37d --- /dev/null +++ b/mobile/android/geckoview/src/thirdparty/java/info/guardianproject/netcipher/proxy/OrbotHelper.java @@ -0,0 +1,186 @@ + +package info.guardianproject.netcipher.proxy; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; +import android.net.Uri; +import android.text.TextUtils; +import android.util.Log; + + +import java.util.List; + +public class OrbotHelper { + + private final static int REQUEST_CODE_STATUS = 100; + + public final static String ORBOT_PACKAGE_NAME = "org.torproject.android"; + public final static String ORBOT_MARKET_URI = "market://details?id=" + ORBOT_PACKAGE_NAME; + public final static String ORBOT_FDROID_URI = "https://f-droid.org/repository/browse/?fdid=" + + ORBOT_PACKAGE_NAME; + public final static String ORBOT_PLAY_URI = "https://play.google.com/store/apps/details?id=" + + ORBOT_PACKAGE_NAME; + + /** + * A request to Orbot to transparently start Tor services + */ + public final static String ACTION_START = "org.torproject.android.intent.action.START"; + /** + * {@link Intent} send by Orbot with {@code ON/OFF/STARTING/STOPPING} status + */ + public final static String ACTION_STATUS = "org.torproject.android.intent.action.STATUS"; + /** + * {@code String} that contains a status constant: {@link #STATUS_ON}, + * {@link #STATUS_OFF}, {@link #STATUS_STARTING}, or + * {@link #STATUS_STOPPING} + */ + public final static String EXTRA_STATUS = "org.torproject.android.intent.extra.STATUS"; + /** + * A {@link String} {@code packageName} for Orbot to direct its status reply + * to, used in {@link #ACTION_START} {@link Intent}s sent to Orbot + */ + public final static String EXTRA_PACKAGE_NAME = "org.torproject.android.intent.extra.PACKAGE_NAME"; + + /** + * All tor-related services and daemons are stopped + */ + public final static String STATUS_OFF = "OFF"; + /** + * All tor-related services and daemons have completed starting + */ + public final static String STATUS_ON = "ON"; + public final static String STATUS_STARTING = "STARTING"; + public final static String STATUS_STOPPING = "STOPPING"; + /** + * The user has disabled the ability for background starts triggered by + * apps. Fallback to the old Intent that brings up Orbot. + */ + public final static String STATUS_STARTS_DISABLED = "STARTS_DISABLED"; + + public final static String ACTION_START_TOR = "org.torproject.android.START_TOR"; + public final static String ACTION_REQUEST_HS = "org.torproject.android.REQUEST_HS_PORT"; + public final static int START_TOR_RESULT = 0x048079234; + public final static int HS_REQUEST_CODE = 9999; + + private final static String FDROID_PACKAGE_NAME = "org.fdroid.fdroid"; + private final static String PLAY_PACKAGE_NAME = "com.android.vending"; + + private OrbotHelper() { + // only static utility methods, do not instantiate + } + + public static boolean isOrbotRunning(Context context) { + int procId = TorServiceUtils.findProcessId(context); + + return (procId != -1); + } + + public static boolean isOrbotInstalled(Context context) { + return isAppInstalled(context, ORBOT_PACKAGE_NAME); + } + + private static boolean isAppInstalled(Context context, String uri) { + try { + PackageManager pm = context.getPackageManager(); + pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES); + return true; + } catch (PackageManager.NameNotFoundException e) { + return false; + } + } + + public static void requestHiddenServiceOnPort(Activity activity, int port) { + Intent intent = new Intent(ACTION_REQUEST_HS); + intent.setPackage(ORBOT_PACKAGE_NAME); + intent.putExtra("hs_port", port); + + activity.startActivityForResult(intent, HS_REQUEST_CODE); + } + + /** + * First, checks whether Orbot is installed. If Orbot is installed, then a + * broadcast {@link Intent} is sent to request Orbot to start transparently + * in the background. When Orbot receives this {@code Intent}, it will + * immediately reply to this all with its status via an + * {@link #ACTION_STATUS} {@code Intent} that is broadcast to the + * {@code packageName} of the provided {@link Context} (i.e. + * {@link Context#getPackageName()}. + * + * @param context the app {@link Context} will receive the reply + * @return whether the start request was sent to Orbot + */ + public static boolean requestStartTor(Context context) { + if (OrbotHelper.isOrbotInstalled(context)) { + Log.i("OrbotHelper", "requestStartTor " + context.getPackageName()); + Intent intent = getOrbotStartIntent(); + intent.putExtra(EXTRA_PACKAGE_NAME, context.getPackageName()); + context.sendBroadcast(intent); + return true; + } + return false; + } + + public static Intent getOrbotStartIntent() { + Intent intent = new Intent(ACTION_START); + intent.setPackage(ORBOT_PACKAGE_NAME); + return intent; + } + + /** + * First, checks whether Orbot is installed, then checks whether Orbot is + * running. If Orbot is installed and not running, then an {@link Intent} is + * sent to request Orbot to start, which will show the main Orbot screen. + * The result will be returned in + * {@link Activity#onActivityResult(int requestCode, int resultCode, Intent data)} + * with a {@code requestCode} of {@link START_TOR_RESULT} + * + * @param activity the {@link Activity} that gets the + * {@code START_TOR_RESULT} result + * @return whether the start request was sent to Orbot + */ + public static boolean requestShowOrbotStart(Activity activity) { + if (OrbotHelper.isOrbotInstalled(activity)) { + if (!OrbotHelper.isOrbotRunning(activity)) { + Intent intent = getShowOrbotStartIntent(); + activity.startActivityForResult(intent, START_TOR_RESULT); + return true; + } + } + return false; + } + + public static Intent getShowOrbotStartIntent() { + Intent intent = new Intent(ACTION_START_TOR); + intent.setPackage(ORBOT_PACKAGE_NAME); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + return intent; + } + + public static Intent getOrbotInstallIntent(Context context) { + final Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(ORBOT_MARKET_URI)); + + PackageManager pm = context.getPackageManager(); + List<ResolveInfo> resInfos = pm.queryIntentActivities(intent, 0); + + String foundPackageName = null; + for (ResolveInfo r : resInfos) { + Log.i("OrbotHelper", "market: " + r.activityInfo.packageName); + if (TextUtils.equals(r.activityInfo.packageName, FDROID_PACKAGE_NAME) + || TextUtils.equals(r.activityInfo.packageName, PLAY_PACKAGE_NAME)) { + foundPackageName = r.activityInfo.packageName; + break; + } + } + + if (foundPackageName == null) { + intent.setData(Uri.parse(ORBOT_FDROID_URI)); + } else { + intent.setPackage(foundPackageName); + } + return intent; + } +} diff --git a/mobile/android/geckoview/src/thirdparty/java/info/guardianproject/netcipher/proxy/TorServiceUtils.java b/mobile/android/geckoview/src/thirdparty/java/info/guardianproject/netcipher/proxy/TorServiceUtils.java new file mode 100644 index 000000000000..e553ecac3543 --- /dev/null +++ b/mobile/android/geckoview/src/thirdparty/java/info/guardianproject/netcipher/proxy/TorServiceUtils.java @@ -0,0 +1,233 @@ +/* Copyright (c) 2009, Nathan Freitas, Orbot / The Guardian Project - http://openideals.com/guardian */ +/* See LICENSE for licensing information */ + +package info.guardianproject.netcipher.proxy; + +import android.content.Context; +import android.util.Log; + + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.net.URLEncoder; +import java.util.StringTokenizer; + +public class TorServiceUtils { + + private final static String TAG = "TorUtils"; + // various console cmds + public final static String SHELL_CMD_CHMOD = "chmod"; + public final static String SHELL_CMD_KILL = "kill -9"; + public final static String SHELL_CMD_RM = "rm"; + public final static String SHELL_CMD_PS = "ps"; + public final static String SHELL_CMD_PIDOF = "pidof"; + + public final static String CHMOD_EXE_VALUE = "700"; + + public static boolean isRootPossible() + { + + StringBuilder log = new StringBuilder(); + + try { + + // Check if Superuser.apk exists + File fileSU = new File("/system/app/Superuser.apk"); + if (fileSU.exists()) + return true; + + fileSU = new File("/system/app/superuser.apk"); + if (fileSU.exists()) + return true; + + fileSU = new File("/system/bin/su"); + if (fileSU.exists()) + { + String[] cmd = { + "su" + }; + int exitCode = TorServiceUtils.doShellCommand(cmd, log, false, true); + if (exitCode != 0) + return false; + else + return true; + } + + // Check for 'su' binary + String[] cmd = { + "which su" + }; + int exitCode = TorServiceUtils.doShellCommand(cmd, log, false, true); + + if (exitCode == 0) { + Log.d(TAG, "root exists, but not sure about permissions"); + return true; + + } + + } catch (IOException e) { + // this means that there is no root to be had (normally) so we won't + // log anything + Log.e(TAG, "Error checking for root access", e); + + } catch (Exception e) { + Log.e(TAG, "Error checking for root access", e); + // this means that there is no root to be had (normally) + } + + Log.e(TAG, "Could not acquire root permissions"); + + return false; + } + + public static int findProcessId(Context context) { + String dataPath = context.getFilesDir().getParentFile().getParentFile().getAbsolutePath(); + String command = dataPath + "/" + OrbotHelper.ORBOT_PACKAGE_NAME + "/app_bin/tor"; + int procId = -1; + + try { + procId = findProcessIdWithPidOf(command); + + if (procId == -1) + procId = findProcessIdWithPS(command); + } catch (Exception e) { + try { + procId = findProcessIdWithPS(command); + } catch (Exception e2) { + Log.e(TAG, "Unable to get proc id for command: " + URLEncoder.encode(command), e2); + } + } + + return procId; + } + + // use 'pidof' command + public static int findProcessIdWithPidOf(String command) throws Exception + { + + int procId = -1; + + Runtime r = Runtime.getRuntime(); + + Process procPs = null; + + String baseName = new File(command).getName(); + // fix contributed my mikos on 2010.12.10 + procPs = r.exec(new String[] { + SHELL_CMD_PIDOF, baseName + }); + // procPs = r.exec(SHELL_CMD_PIDOF); + + BufferedReader reader = new BufferedReader(new InputStreamReader(procPs.getInputStream())); + String line = null; + + while ((line = reader.readLine()) != null) + { + + try + { + // this line should just be the process id + procId = Integer.parseInt(line.trim()); + break; + } catch (NumberFormatException e) + { + Log.e("TorServiceUtils", "unable to parse process pid: " + line, e); + } + } + + return procId; + + } + + // use 'ps' command + public static int findProcessIdWithPS(String command) throws Exception + { + + int procId = -1; + + Runtime r = Runtime.getRuntime(); + + Process procPs = null; + + procPs = r.exec(SHELL_CMD_PS); + + BufferedReader reader = new BufferedReader(new InputStreamReader(procPs.getInputStream())); + String line = null; + + while ((line = reader.readLine()) != null) + { + if (line.indexOf(' ' + command) != -1) + { + + StringTokenizer st = new StringTokenizer(line, " "); + st.nextToken(); // proc owner + + procId = Integer.parseInt(st.nextToken().trim()); + + break; + } + } + + return procId; + + } + + public static int doShellCommand(String[] cmds, StringBuilder log, boolean runAsRoot, + boolean waitFor) throws Exception + { + + Process proc = null; + int exitCode = -1; + + if (runAsRoot) + proc = Runtime.getRuntime().exec("su"); + else + proc = Runtime.getRuntime().exec("sh"); + + OutputStreamWriter out = new OutputStreamWriter(proc.getOutputStream()); + + for (int i = 0; i < cmds.length; i++) + { + // TorService.logMessage("executing shell cmd: " + cmds[i] + + // "; runAsRoot=" + runAsRoot + ";waitFor=" + waitFor); + + out.write(cmds[i]); + out.write("\n"); + } + + out.flush(); + out.write("exit\n"); + out.flush(); + + if (waitFor) + { + + final char buf[] = new char[10]; + + // Consume the "stdout" + InputStreamReader reader = new InputStreamReader(proc.getInputStream()); + int read = 0; + while ((read = reader.read(buf)) != -1) { + if (log != null) + log.append(buf, 0, read); + } + + // Consume the "stderr" + reader = new InputStreamReader(proc.getErrorStream()); + read = 0; + while ((read = reader.read(buf)) != -1) { + if (log != null) + log.append(buf, 0, read); + } + + exitCode = proc.waitFor(); + + } + + return exitCode; + + } +} diff --git a/mobile/android/orfox/strings.xml.in b/mobile/android/orfox/strings.xml.in new file mode 100644 index 000000000000..e3a22974ed78 --- /dev/null +++ b/mobile/android/orfox/strings.xml.in @@ -0,0 +1,5 @@ +<!-- NetCipher Integration Strings, used for dialog --> + <string name="install_orbot">Install Orbot?</string> + <string name="you_must_have_orbot">You must have Orbot installed and activated to proxy traffic through it. Would you like to download it?</string> + <string name="yes">Yes</string> + <string name="no">No</string>
1 0
0 0
[tor-browser/tor-browser-52.7.2esr-8.0-1] Orfox: Update orfox branding and icon
by gk@torproject.org 20 Mar '18

20 Mar '18
commit 379d5b66211fc2d28ceceed512aaa7a5c58081cf Author: n8fr8 <nathan(a)freitas.net> Date: Wed Jun 29 13:49:35 2016 -0400 Orfox: Update orfox branding and icon Signed-off-by: Amogh Pradeep <amoghbl1(a)gmail.com> --- mobile/android/branding/orfox/LICENSE.txt | 2 + mobile/android/branding/orfox/content/favicon.png | Bin 0 -> 820 bytes .../android/branding/orfox/content/favicon32.png | Bin 2418 -> 1797 bytes .../android/branding/orfox/content/favicon64.png | Bin 7165 -> 3993 bytes mobile/android/branding/orfox/ic_launcher.zip | Bin 96525 -> 0 bytes mobile/android/branding/orfox/icon.png | Bin 36456 -> 0 bytes mobile/android/branding/orfox/orfox.png | Bin 36456 -> 55962 bytes mobile/android/branding/orfox/orfox.xcf | Bin 267775 -> 0 bytes mobile/android/branding/orfox/orfox_icon_v2.svg | 100 +++++++++++++++++++++ .../branding/orfox/res/drawable-hdpi/icon.png | Bin 8545 -> 3549 bytes .../orfox/res/drawable-hdpi/large_icon.png | Bin 27 -> 9558 bytes .../branding/orfox/res/drawable-mdpi/icon.png | Bin 4332 -> 2577 bytes .../orfox/res/drawable-mdpi/large_icon.png | Bin 26 -> 5878 bytes .../branding/orfox/res/drawable-xhdpi/icon.png | Bin 13454 -> 5878 bytes .../orfox/res/drawable-xhdpi/large_icon.png | Bin 28 -> 13553 bytes .../branding/orfox/res/drawable-xxhdpi/icon.png | Bin 26491 -> 9558 bytes .../orfox/res/drawable-xxhdpi/large_icon.png | Bin 28 -> 13553 bytes .../branding/orfox/res/drawable-xxxhdpi/icon.png | Bin 42959 -> 13553 bytes 18 files changed, 102 insertions(+) diff --git a/mobile/android/branding/orfox/LICENSE.txt b/mobile/android/branding/orfox/LICENSE.txt new file mode 100644 index 000000000000..5edd0bec67a3 --- /dev/null +++ b/mobile/android/branding/orfox/LICENSE.txt @@ -0,0 +1,2 @@ +Fox by Sebastian Blei from the Noun Project +https://thenounproject.com/search/?q=fox&i=4144 diff --git a/mobile/android/branding/orfox/content/favicon.png b/mobile/android/branding/orfox/content/favicon.png new file mode 100644 index 000000000000..6c711b2544e1 Binary files /dev/null and b/mobile/android/branding/orfox/content/favicon.png differ diff --git a/mobile/android/branding/orfox/content/favicon32.png b/mobile/android/branding/orfox/content/favicon32.png index 90d37f997854..0c414d6ca46b 100644 Binary files a/mobile/android/branding/orfox/content/favicon32.png and b/mobile/android/branding/orfox/content/favicon32.png differ diff --git a/mobile/android/branding/orfox/content/favicon64.png b/mobile/android/branding/orfox/content/favicon64.png index a3db8126f5a1..bfc9e05538c6 100644 Binary files a/mobile/android/branding/orfox/content/favicon64.png and b/mobile/android/branding/orfox/content/favicon64.png differ diff --git a/mobile/android/branding/orfox/ic_launcher.zip b/mobile/android/branding/orfox/ic_launcher.zip deleted file mode 100644 index 69601344519e..000000000000 Binary files a/mobile/android/branding/orfox/ic_launcher.zip and /dev/null differ diff --git a/mobile/android/branding/orfox/icon.png b/mobile/android/branding/orfox/icon.png deleted file mode 100644 index 6e0051b95a32..000000000000 Binary files a/mobile/android/branding/orfox/icon.png and /dev/null differ diff --git a/mobile/android/branding/orfox/orfox.png b/mobile/android/branding/orfox/orfox.png index 350edb58d994..6c6d906aa044 100644 Binary files a/mobile/android/branding/orfox/orfox.png and b/mobile/android/branding/orfox/orfox.png differ diff --git a/mobile/android/branding/orfox/orfox.xcf b/mobile/android/branding/orfox/orfox.xcf deleted file mode 100644 index 2a8f829c3c34..000000000000 Binary files a/mobile/android/branding/orfox/orfox.xcf and /dev/null differ diff --git a/mobile/android/branding/orfox/orfox_icon_v2.svg b/mobile/android/branding/orfox/orfox_icon_v2.svg new file mode 100644 index 000000000000..b9f575b6d077 --- /dev/null +++ b/mobile/android/branding/orfox/orfox_icon_v2.svg @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generator: flash2svg, http://dissentgraphics.com/tools/flash2svg --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + id="Tor" + image-rendering="optimizeSpeed" + version="1.1" + style="background-color:#ffffff" + x="0px" + y="0px" + width="1024px" + height="1024px" + viewBox="0 0 1024 1024" + enable-background="new 0 0 1024 1024" + inkscape:version="0.48.4 r9939" + sodipodi:docname="orfox_icon_v2.svg"> + <metadata + id="metadata3977"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1147" + inkscape:window-height="818" + id="namedview3975" + showgrid="false" + inkscape:zoom="0.23046875" + inkscape:cx="175.88107" + inkscape:cy="513.58454" + inkscape:window-x="363" + inkscape:window-y="132" + inkscape:window-maximized="0" + inkscape:current-layer="Tor" /> + <defs + transform="matrix(1 0 0 1 0 0) " + id="defs3953" /> + <g + id="shadow"> + <g + id="shape"> + <path + id="path" + fill="#000000" + fill-opacity="0.09803921568627451" + d="M969.65,351.3 Q961.05,330.45 950.25,310.45 C946.2,302.9 941.9,295.4 937.35,288.05 917.8,256.35 893.95,226.4 865.8,198.25 773.65,106.1 662.35,60 532,60 401.65,60 290.4,106.1 198.25,198.25 106.1,290.4 60,401.65 60,532 60,662.35 106.1,773.65 198.25,865.8 290.4,957.95 401.65,1004 532,1004 662.35,1004 773.65,957.95 865.8,865.8 916.55,815 953.35,758.4 976.15,696.05 994.7,645.2 1004,590.55 1004,532 1004,487.1 998.55,444.45 987.6,404.05 986.35,399.5 985.05,394.95 983.7,390.45 979.6,377.15 974.9,364.1 969.65,351.3z" /> + </g> + </g> + <g + id="bg"> + <g + id="shape2"> + <path + id="path1" + d="M969.75,394 C968.65,389.65 967.4,385 966.1,380.4 963.6,371.65 960.75,362.8 957.65,354.05 951.2,335.8 943.5,318 934.5,300.4 930.7,293 926.55,285.45 922.2,278 901.9,243.5 876.4,210.8 845.85,180.25 806.9,141.3 764.5,110.55 718.35,87.9 679.05,68.6 636.9,55.35 592.2,48.2 575.95,45.6 559.4,43.8 542.15,42.85 532.45,42.3 522.3,42 512.05,42 502.7,42 493.45,42.25 484.15,42.75 477.45,43.1 470.8,43.55 464.1,44.2 407.25,49.4 354.3,64 305.15,88.2 259.55,110.6 217.25,141.3 178.3,180.25 89.05,269.5 43,376.75 40.2,501.75 Q40.05,507.85 40.05,514 C40.05,644.35 86.15,755.65 178.3,847.8 263.55,933.05 365.15,978.85 483,985.2 483.35,985.25 483.75,985.25 484.15,985.3 484.3,985.3 484.4,985.3 484.55,985.3 493.05,985.75 501.15,986 509.05,986 510.25,986 511.15,986 512.05,986 522.35,986 532.55,985.7 542.15,985.2 544.65,985.05 546.9,984.9 549.1,984.75 569.3,983.3 589,980.7 607.8,977.05 615.75,975.5 623.6,973.75 631.2,971.9 712,951.6 783.35,910.3 845.85,847.8 851.95,841.7 857.85,835.55 863.35,829.5 90 3.2,785.65 933.1,737.9 953.2,686 962.3,662.55 969.35,638.25 974.5,612.95 979.7,587.15 982.8,560.3 983.75,532.5 983.95,526.45 984.05,520.25 984.05,514 984.05,513.35 984.05,512.65 984.05,512 984.05,511.65 984.05,511.35 984.05,511 984.05,507.9 984,504.8 983.95,501.65 983.1,464.45 978.4,428.65 969.75,394z" + fill-opacity="1" + fill="#4F3663" /> + </g> + </g> + <path + inkscape:connector-curvature="0" + d="m 686.21069,582.70555 c -1.93177,-1.97288 -4.58283,-3.08262 -7.34348,-3.08262 -78.07933,0 -82.75807,0 -110.78935,53.47317 -1.58926,3.02781 -1.56871,6.65845 0.0685,9.66572 1.62352,3.00727 4.65133,5.00754 8.06276,5.32951 0.17811,0.0206 4.58283,0.42471 11.24814,0.42471 16.98866,0 48.19846,-2.70585 66.26261,-20.8111 7.14483,-7.16538 11.54955,-15.88577 13.13196,-25.99676 0.66448,-0.0548 1.2947,-0.11645 1.87697,-0.15755 12.16608,-1.03439 20.2083,-1.71942 20.4138,-11.4331 0.0685,-2.76065 -1.00014,-5.43226 -2.93191,-7.41198 z" + id="path4-8" + style="fill:#4f3663;fill-opacity:1" /> + <path + inkscape:connector-curvature="0" + d="m 464.25524,633.0961 c -28.03128,-53.47317 -32.70316,-53.47317 -110.78933,-53.47317 -2.76066,0 -5.41171,1.10974 -7.34349,3.08262 -1.93177,1.97972 -2.99356,4.65133 -2.93191,7.41198 0.20551,9.70683 8.24772,10.39871 20.41379,11.4331 0.57542,0.048 1.21935,0.1096 1.87697,0.15755 1.58926,10.12469 5.99398,18.83138 13.13196,25.99676 18.06415,18.1121 49.26711,20.8111 66.26261,20.8111 0,0 0,0 0,0 6.65846,0 11.05633,-0.41101 11.24129,-0.42471 3.41143,-0.32197 6.42555,-2.32224 8.06276,-5.32951 1.63721,-3.00727 1.66462,-6.63791 0.0754,-9.66572 z" + id="path6-8" + style="fill:#4f3663;fill-opacity:1" /> + <path + inkscape:connector-curvature="0" + d="m 797.15129,217.4905 c -13.59093,-13.58407 -39.06021,-13.17991 -73.6746,1.1577 -62.37168,25.8392 -146.02711,96.09552 -164.02961,170.83877 -14.88562,-1.34265 -30.57958,-2.13728 -47.28053,-2.13728 -16.70779,0 -32.40175,0.79463 -47.28738,2.13728 -18.00249,-74.7501 -101.65793,-145.00642 -164.03644,-170.84562 -34.60754,-14.33076 -60.07683,-14.74177 -73.65405,-1.15085 -23.70192,23.70192 -27.39421,88.48488 -23.35941,136.76556 4.89794,58.54236 20.78371,109.24118 43.34163,139.93721 -2.6305,30.36723 -10.88507,146.02025 12.20717,183.3953 24.93497,40.34806 122.90061,82.19633 149.8838,93.1362 -0.26031,19.11909 0.63023,62.87173 13.22101,80.33991 17.49558,24.27049 67.85188,34.77194 89.68367,34.77194 21.83865,0 72.2018,-10.50145 89.68367,-34.77194 12.60449,-17.47503 13.42652,-61.54963 13.13881,-80.79888 27.0654,-10.86452 125.03105,-52.33602 149.97286,-92.67038 23.09909,-37.37505 14.83767,-153.06232 12.20717,-183.40215 51.76061,-70.63993 59.69321,-236.99177 19.98223,-276.70277 z m -45.0405,2 89.08805 c 1.57556,1.57556 3.56899,2.34964 5.60352,2.69216 3.32923,47.56824 5.55557,131.94295 -10.248,157.50814 -18.14635,29.36709 -92.19772,64.598 -132.54578,81.3332 v -45.42411 c 0,-5.67202 -4.60338,-10.2754 -10.2754,-10.2754 -5.67202,0 -10.2754,4.60338 -10.2754,10.2754 v 58.71362 6.85026 5.61722 c 0,0.30141 0.0685,0.58912 0.0891,0.88369 0.007,24.18828 -2.55515,54.95967 -9.27526,64.28973 -8.48748,11.78246 -34.51164,21.01662 -55.95297,24.60615 10.82342,-10.00138 21.914,-25.61999 21.914,-38.9369 0,-21.53038 -17.44763,-28.80537 -38.97116,-28.80537 -21.52353,0 -38.97801,7.27499 -38.97801,28.80537 0,13.31006 11.12483,28.94237 21.94825,38.9369 -21.44133,-3.57583 -47.48603,-12.81684 -55.98036,-24.60615 -6.68586,-9.27526 -9.29581,-39.62878 -9.35061,-63.59101 0.0685,-0.51377 0.1507,-1.04124 0.1507,-1.58241 v -9.30951 c 0,-0.1233 0,-0.25346 0,-0.37676 0,-0.0274 0,-0.0548 0,-0.0822 V 702.6811 c 0,-5.67202 -4.59653,-10.2754 -10.2754,-10.2754 -5.67887,0 -10.27539,4.60338 -10.27539,10.2754 v 45 .88992 C 369.09881,731.69197 295.02004,696.15965 276.85314,666.77886 261.06328,641.22737 263.28961,556.83896 266.61199,509.26387 c 2.04138,-0.34252 4.03481,-1.1166 5.61037,-2.69216 4.01426,-4.0074 4.01426,-10.52201 0,-14.52941 -24.76371,-24.77056 -42.67715,-76.92163 -47.91075,-139.50565 -4.61023,-55.13094 2.7127,-105.81605 17.40652,-120.51672 5.0966,-5.0966 21.56463,-6.69271 51.26053,5.61036 64.94052,26.901 154.90505,104.52821 154.90505,180.33324 0,5.67887 4.59652,10.2754 10.27539,10.2754 5.67887,0 10.2754,-4.59653 10.2754,-10.2754 0,-2.7127 -0.10275,-5.41856 -0.30141,-8.12441 13.87179,-1.23305 28.5108,-1.93862 44.02665,-1.93862 15.51585,0 30.14802,0.71242 44.02665,1.93862 -0.1918,2.70585 -0.30141,5.41856 -0.30141,8.12441 0,5.67887 4.60338,10.2754 10.2754,10.2754 5.67202,0 10.2754,-4.59653 10.2754,-10.2754 0,-75.79133 89.95768,-153.42539 154.8982,-180.32639 29.67535,-12.29622 46.17764,-10.70696 51.27423,-5.61036 30.9221,30.9221 24.70891,204.80238 -30.50423,260.02237 -4.0074,4.01426 -4.0074,10.51516 0.007,14.52941 z" + id="path8-0" + style="fill:#78af52;fill-opacity:1" /> + <path + style="fill:#eaeace;fill-opacity:1" + d="m 462.6355,852.50032 c -25.77069,-12.9955 -28.86564,-22.7931 -28.93825,-91.6151 0,-31.9291 -1.44541,-60.2368 -3.13674,-62.9059 -1.69202,-2.6691 -6.97357,-4.3018 -11.73656,-3.6283 -8.03262,1.1357 -8.73888,3.0145 -9.73765,25.9062 -1.02891,23.5723 -1.4365,24.5702 -9.07112,22.2012 -27.12363,-8.4164 -99.5049,-51.247 -113.61918,-67.2326 -12.99496,-14.71792 -16.50298,-31.9536 -18.58135,-91.29648 -1.7475,-49.90494 -1.17756,-59.05477 4.46158,-71.56006 l 6.46597,-14.33871 -9.80753,-12.85876 c -24.61506,-32.27133 -38.06076,-80.73449 -40.8858,-147.36496 -2.1503,-50.72751 1.47691,-79.77202 12.07564,-96.67821 17.61272,-28.09519 109.25145,19.60307 166.48816,86.65757 19.39173,22.71836 33.8499,52.43495 38.58275,79.30285 2.3099,13.11449 5.88574,22.11094 9.31019,23.4251 6.36047,2.44068 15.52476,-3.90335 15.52476,-10.7469 0,-7.17572 8.91356,-9.01468 43.69373,-9.01468 24.50819,0 33.33407,1.3321 36.89347,5.56838 12.93604,15.39672 14.24033,16.19402 20.77274,12.69785 4.29238,-2.29703 7.33321,-9.622 56 8.90124,-21.43927 7.43801,-56.07209 69.85078,-126.27005 143.75623,-161.68824 34.77263,-16.66451 55.40769,-17.63067 62.97243,-2.9485 14.5486,28.23645 16.3646,99.39338 4.05125,158.73893 -6.42144,30.94998 -25.57135,76.57336 -35.59535,84.80272 -6.44267,5.28964 -8.24635,20.45647 -2.82984,23.80365 5.43226,3.35745 8.25799,70.79207 4.4513,106.23665 -4.69586,43.72537 -10.81725,55.80167 -38.1135,75.18717 -19.27459,13.6884 -91.89973,52.8459 -98.01291,52.8459 -1.1988,0 -2.20442,-9.3883 -2.23524,-20.8628 -0.0685,-24.7592 -3.22305,-30.9905 -14.86782,-29.344 l -8.66079,1.2246 -1.99548,63.4955 c -1.40567,44.7465 -3.54844,66.619 -7.25648,74.0734 -5.01508,10.0828 -20.47819,20.209 -39.37944,25.7878 l -8.7197,2.5737 7.81273,-12.6413 c 10.08907,-16.3245 9.89246,-28.9182 -0.64393,-41.1665 -11.79615,-13.7141 -42.15105,-16.2806 -60.01585,-5.0744 -11.72012,7.3519 -12.1606,8.4262 -10.50694,25.6369 0.97068,10.0998 4.58625,21.1241 8.26005,25.1834 9.04988,10.0004 0.80901,9.6139 -20.12745,-0.9438 l 0,0 z m -0 .54117,-212.0739 c 1.73038,-12.16224 -22.68122,-47.8041 -36.61124,-53.45392 -13.7889,-5.59235 -75.42484,-10.02722 -82.0922,-5.90671 -8.09633,5.00398 -3.22305,20.04175 6.90438,21.30412 6.46939,0.80641 10.94604,5.1627 15.60901,15.18984 9.89658,21.28049 36.02555,33.23756 69.65624,31.87593 23.0299,-0.93239 25.50422,-1.77264 26.53381,-9.00926 z m 160.69078,5.61187 c 18.85467,-6.39534 32.59082,-17.42337 38.08747,-30.5789 3.66627,-8.77341 7.62229,-12.21744 15.0103,-13.06681 7.09277,-0.81545 10.3624,-3.47302 11.15909,-9.07153 1.84409,-12.95378 -8.67998,-15.58668 -49.62469,-12.41501 -33.35737,2.58385 -38.01144,3.8395 -47.33328,12.77061 -13.73684,13.16073 -29.96306,43.45931 -27.17089,50.73573 2.72983,7.11359 40.65632,8.14353 59.872,1.62591 l 0,0 z" + id="path3787" + inkscape:connector-curvature="0" /> +</svg> diff --git a/mobile/android/branding/orfox/res/drawable-hdpi/icon.png b/mobile/android/branding/orfox/res/drawable-hdpi/icon.png index 30731f03daf6..2a1dc9aea83d 100644 Binary files a/mobile/android/branding/orfox/res/drawable-hdpi/icon.png and b/mobile/android/branding/orfox/res/drawable-hdpi/icon.png differ diff --git a/mobile/android/branding/orfox/res/drawable-hdpi/large_icon.png b/mobile/android/branding/orfox/res/drawable-hdpi/large_icon.png deleted file mode 120000 index fd11ee776429..000000000000 --- a/mobile/android/branding/orfox/res/drawable-hdpi/large_icon.png +++ /dev/null @@ -1 +0,0 @@ -../drawable-xxhdpi/icon.png \ No newline at end of file diff --git a/mobile/android/branding/orfox/res/drawable-hdpi/large_icon.png b/mobile/android/branding/orfox/res/drawable-hdpi/large_icon.png new file mode 100644 index 000000000000..946e03e42d0b Binary files /dev/null and b/mobile/android/branding/orfox/res/drawable-hdpi/large_icon.png differ diff --git a/mobile/android/branding/orfox/res/drawable-mdpi/icon.png b/mobile/android/branding/orfox/res/drawable-mdpi/icon.png index a7d98aa9c771..78ace1c9b6d3 100644 Binary files a/mobile/android/branding/orfox/res/drawable-mdpi/icon.png and b/mobile/android/branding/orfox/res/drawable-mdpi/icon.png differ diff --git a/mobile/android/branding/orfox/res/drawable-mdpi/large_icon.png b/mobile/android/branding/orfox/res/drawable-mdpi/large_icon.png deleted file mode 120000 index 79362e743cd1..000000000000 --- a/mobile/android/branding/orfox/res/drawable-mdpi/large_icon.png +++ /dev/null @@ -1 +0,0 @@ -../drawable-xhdpi/icon.png \ No newline at end of file diff --git a/mobile/android/branding/orfox/res/drawable-mdpi/large_icon.png b/mobile/android/branding/orfox/res/drawable-mdpi/large_icon.png new file mode 100644 index 000000000000..8e45a100870b Binary files /dev/null and b/mobile/android/branding/orfox/res/drawable-mdpi/large_icon.png differ diff --git a/mobile/android/branding/orfox/res/drawable-xhdpi/icon.png b/mobile/android/branding/orfox/res/drawable-xhdpi/icon.png index 155611f2da7d..8e45a100870b 100644 Binary files a/mobile/android/branding/orfox/res/drawable-xhdpi/icon.png and b/mobile/android/branding/orfox/res/drawable-xhdpi/icon.png differ diff --git a/mobile/android/branding/orfox/res/drawable-xhdpi/large_icon.png b/mobile/android/branding/orfox/res/drawable-xhdpi/large_icon.png deleted file mode 120000 index 17528430e69f..000000000000 --- a/mobile/android/branding/orfox/res/drawable-xhdpi/large_icon.png +++ /dev/null @@ -1 +0,0 @@ -../drawable-xxxhdpi/icon.png \ No newline at end of file diff --git a/mobile/android/branding/orfox/res/drawable-xhdpi/large_icon.png b/mobile/android/branding/orfox/res/drawable-xhdpi/large_icon.png new file mode 100644 index 000000000000..d3a4929e7503 Binary files /dev/null and b/mobile/android/branding/orfox/res/drawable-xhdpi/large_icon.png differ diff --git a/mobile/android/branding/orfox/res/drawable-xxhdpi/icon.png b/mobile/android/branding/orfox/res/drawable-xxhdpi/icon.png index 8e6e60311f8f..946e03e42d0b 100644 Binary files a/mobile/android/branding/orfox/res/drawable-xxhdpi/icon.png and b/mobile/android/branding/orfox/res/drawable-xxhdpi/icon.png differ diff --git a/mobile/android/branding/orfox/res/drawable-xxhdpi/large_icon.png b/mobile/android/branding/orfox/res/drawable-xxhdpi/large_icon.png deleted file mode 120000 index 17528430e69f..000000000000 --- a/mobile/android/branding/orfox/res/drawable-xxhdpi/large_icon.png +++ /dev/null @@ -1 +0,0 @@ -../drawable-xxxhdpi/icon.png \ No newline at end of file diff --git a/mobile/android/branding/orfox/res/drawable-xxhdpi/large_icon.png b/mobile/android/branding/orfox/res/drawable-xxhdpi/large_icon.png new file mode 100644 index 000000000000..d3a4929e7503 Binary files /dev/null and b/mobile/android/branding/orfox/res/drawable-xxhdpi/large_icon.png differ diff --git a/mobile/android/branding/orfox/res/drawable-xxxhdpi/icon.png b/mobile/android/branding/orfox/res/drawable-xxxhdpi/icon.png index 9c4820ce6729..d3a4929e7503 100644 Binary files a/mobile/android/branding/orfox/res/drawable-xxxhdpi/icon.png and b/mobile/android/branding/orfox/res/drawable-xxxhdpi/icon.png differ
1 0
0 0
  • ← Newer
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.