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
Threads by month
  • ----- 2026 -----
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2015 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2014 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
tbb-commits@lists.torproject.org

  • 1 participants
  • 20430 discussions
[tor-browser/tor-browser-60.1.0esr-8.0-1] Orfox: NetCipher enabled, checks if orbot is installed
by gk@torproject.org 27 Jul '18

27 Jul '18
commit 5307039febcc2e0fcd0b2451d821197202fda8b8 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 | 38 +++- mobile/android/base/strings.xml.in | 1 + .../netcipher/proxy/OrbotHelper.java | 186 ++++++++++++++++ .../netcipher/proxy/TorServiceUtils.java | 233 +++++++++++++++++++++ mobile/android/torbrowser/strings.xml.in | 5 + 5 files changed, 458 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 88c707cfa533..8d5bbddabc88 100644 --- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java @@ -176,6 +176,8 @@ import org.mozilla.gecko.widget.GeckoActionProvider; import org.mozilla.gecko.widget.SplashScreen; import org.mozilla.geckoview.GeckoSession; +import info.guardianproject.netcipher.proxy.OrbotHelper; + import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -1271,6 +1273,30 @@ public class BrowserApp extends GeckoApp } } + public void checkStartOrbot() { + if (!OrbotHelper.isOrbotInstalled(this)) { + final Intent installOrbotIntent = 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(installOrbotIntent); + } + }); + 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(); @@ -1279,16 +1305,18 @@ public class BrowserApp extends GeckoApp return; } - if (!mHasResumed) { - getAppEventDispatcher().unregisterUiThreadListener(this, "Prompt:ShowTop"); - mHasResumed = true; - } - processTabQueue(); for (BrowserAppDelegate delegate : delegates) { delegate.onResume(this); } + + // isInAutomation is overloaded with isTorBrowser(), but here we actually + // need to know if we are in automation. + final SafeIntent intent = new SafeIntent(getIntent()); + if (!IntentUtils.getIsInAutomationFromEnvironment(intent)) { + checkStartOrbot(); + } } @Override diff --git a/mobile/android/base/strings.xml.in b/mobile/android/base/strings.xml.in index b510012948b9..cf43a3b4c78b 100644 --- a/mobile/android/base/strings.xml.in +++ b/mobile/android/base/strings.xml.in @@ -25,6 +25,7 @@ <string name="android_package_name_for_ui">@ANDROID_PACKAGE_NAME@</string> #include ../services/strings.xml.in +#include ../torbrowser/strings.xml.in <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/torbrowser/strings.xml.in b/mobile/android/torbrowser/strings.xml.in new file mode 100644 index 000000000000..e3a22974ed78 --- /dev/null +++ b/mobile/android/torbrowser/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-60.1.0esr-8.0-1] Bug 25741 - TBA: Always Quit, do not restore the last session
by gk@torproject.org 27 Jul '18

27 Jul '18
commit 9965f1db64ffba901f55a59d18fe53b2f66a7354 Author: Matthew Finkel <Matthew.Finkel(a)gmail.com> Date: Wed Apr 11 20:42:04 2018 +0000 Bug 25741 - TBA: Always Quit, do not restore the last session --- mobile/android/app/src/main/res/xml/preferences_advanced.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/android/app/src/main/res/xml/preferences_advanced.xml b/mobile/android/app/src/main/res/xml/preferences_advanced.xml index b8c740eabfe3..8c9cee3bdd80 100644 --- a/mobile/android/app/src/main/res/xml/preferences_advanced.xml +++ b/mobile/android/app/src/main/res/xml/preferences_advanced.xml @@ -27,7 +27,7 @@ <ListPreference android:key="android.not_a_preference.restoreSession3" android:title="@string/pref_restore" - android:defaultValue="always" + android:defaultValue="quit" android:entries="@array/pref_restore_entries" android:entryValues="@array/pref_restore_values" android:persistent="true" />
1 0
0 0
[tor-browser/tor-browser-60.1.0esr-8.0-1] Bug 25741 - TBA: Neuter Firefox Accounts
by gk@torproject.org 27 Jul '18

27 Jul '18
commit 2bfa4ee4fd1c0c282fbc7c4960ffbd6320b61bd6 Author: Matthew Finkel <Matthew.Finkel(a)gmail.com> Date: Thu Apr 19 20:39:55 2018 +0000 Bug 25741 - TBA: Neuter Firefox Accounts We're not confident it is proxy-safe, so we disable it. We can revert this when Bug 1314778 lands. --- .../base/java/org/mozilla/gecko/BrowserApp.java | 8 --- .../org/mozilla/gecko/fxa/FirefoxAccounts.java | 73 +++++++++++++--------- .../gecko/fxa/authenticator/AndroidFxAccount.java | 13 +++- 3 files changed, 56 insertions(+), 38 deletions(-) diff --git a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java index ce2f1c5908b8..88c707cfa533 100644 --- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java @@ -398,8 +398,6 @@ public class BrowserApp extends GeckoApp private ReadingListHelper mReadingListHelper; - private AccountsHelper mAccountsHelper; - private ExtensionPermissionsHelper mExtensionPermissionsHelper; // The tab to be selected on editing mode exit. @@ -920,7 +918,6 @@ public class BrowserApp extends GeckoApp mSharedPreferencesHelper = new SharedPreferencesHelper(appContext); mReadingListHelper = new ReadingListHelper(appContext, profile); - mAccountsHelper = new AccountsHelper(appContext, profile); mExtensionPermissionsHelper = new ExtensionPermissionsHelper(this); if (AppConstants.MOZ_ANDROID_BEAM) { @@ -1677,11 +1674,6 @@ public class BrowserApp extends GeckoApp mReadingListHelper = null; } - if (mAccountsHelper != null) { - mAccountsHelper.uninit(); - mAccountsHelper = null; - } - if (mExtensionPermissionsHelper != null) { mExtensionPermissionsHelper.uninit(); mExtensionPermissionsHelper = null; diff --git a/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/FirefoxAccounts.java b/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/FirefoxAccounts.java index 74b10c477237..a207f9b237ad 100644 --- a/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/FirefoxAccounts.java +++ b/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/FirefoxAccounts.java @@ -7,6 +7,7 @@ package org.mozilla.gecko.fxa; import java.io.File; import java.util.concurrent.CountDownLatch; +import org.mozilla.gecko.AppConstants; import org.mozilla.gecko.background.common.log.Logger; import org.mozilla.gecko.fxa.authenticator.AccountPickler; import org.mozilla.gecko.fxa.authenticator.AndroidFxAccount; @@ -49,15 +50,22 @@ public class FirefoxAccounts { * @return Firefox account objects. */ public static Account[] getFirefoxAccounts(final Context context) { - final Account[] accounts = - AccountManager.get(context).getAccountsByType(FxAccountConstants.ACCOUNT_TYPE); - if (accounts.length > 0) { - FirefoxAccountsUtils.optionallySeparateAccountsDuringFirstRun(context, accounts); - return accounts; - } + if (AppConstants.isTorBrowser()) { + return new Account[0]; + } else { + // TBA: Conditionally disable this at run-time. + // XXX This will throw a java.lang.SecurityException because we don't declare + // the android.permission.GET_ACCOUNTS permission. + final Account[] accounts = + AccountManager.get(context).getAccountsByType(FxAccountConstants.ACCOUNT_TYPE); + if (accounts.length > 0) { + FirefoxAccountsUtils.optionallySeparateAccountsDuringFirstRun(context, accounts); + return accounts; + } - final Account pickledAccount = getPickledAccount(context); - return (pickledAccount != null) ? new Account[] {pickledAccount} : new Account[0]; + final Account pickledAccount = getPickledAccount(context); + return (pickledAccount != null) ? new Account[] {pickledAccount} : new Account[0]; + } } private static Account getPickledAccount(final Context context) { @@ -111,9 +119,14 @@ public class FirefoxAccounts { } public static void logSyncOptions(Bundle syncOptions) { - final boolean scheduleNow = syncOptions.getBoolean(ContentResolver.SYNC_EXTRAS_IGNORE_BACKOFF, false); + if (AppConstants.isTorBrowser()) { + // Don't log an erroneous message, this'll only confuse someone looking at the logs. + return; + } else { + final boolean scheduleNow = syncOptions.getBoolean(ContentResolver.SYNC_EXTRAS_IGNORE_BACKOFF, false); - Logger.info(LOG_TAG, "Sync options -- scheduling now: " + scheduleNow); + Logger.info(LOG_TAG, "Sync options -- scheduling now: " + scheduleNow); + } } public static void requestImmediateSync(final Account account, String[] stagesToSync, String[] stagesToSkip, boolean ignoreSettings) { @@ -145,28 +158,32 @@ public class FirefoxAccounts { * @param stagesToSkip stage names to skip. */ protected static void requestSync(final Account account, final Bundle syncOptions, String[] stagesToSync, String[] stagesToSkip) { - if (account == null) { - throw new IllegalArgumentException("account must not be null"); - } - if (syncOptions == null) { - throw new IllegalArgumentException("syncOptions must not be null"); - } + if (AppConstants.isTorBrowser()) { + return; + } else { + if (account == null) { + throw new IllegalArgumentException("account must not be null"); + } + if (syncOptions == null) { + throw new IllegalArgumentException("syncOptions must not be null"); + } - Utils.putStageNamesToSync(syncOptions, stagesToSync, stagesToSkip); + Utils.putStageNamesToSync(syncOptions, stagesToSync, stagesToSkip); - Logger.info(LOG_TAG, "Requesting sync."); - logSyncOptions(syncOptions); + Logger.info(LOG_TAG, "Requesting sync."); + logSyncOptions(syncOptions); - // We get strict mode warnings on some devices, so make the request on a - // background thread. - ThreadPool.run(new Runnable() { - @Override - public void run() { - for (String authority : AndroidFxAccount.DEFAULT_AUTHORITIES_TO_SYNC_AUTOMATICALLY_MAP.keySet()) { - ContentResolver.requestSync(account, authority, syncOptions); + // We get strict mode warnings on some devices, so make the request on a + // background thread. + ThreadPool.run(new Runnable() { + @Override + public void run() { + for (String authority : AndroidFxAccount.DEFAULT_AUTHORITIES_TO_SYNC_AUTOMATICALLY_MAP.keySet()) { + ContentResolver.requestSync(account, authority, syncOptions); + } } - } - }); + }); + } } /** diff --git a/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/authenticator/AndroidFxAccount.java b/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/authenticator/AndroidFxAccount.java index 21af0694ceed..58422355b326 100644 --- a/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/authenticator/AndroidFxAccount.java +++ b/mobile/android/services/src/main/java/org/mozilla/gecko/fxa/authenticator/AndroidFxAccount.java @@ -29,6 +29,7 @@ import android.support.v4.content.LocalBroadcastManager; import android.text.TextUtils; import android.util.Log; +import org.mozilla.gecko.AppConstants; import org.mozilla.gecko.background.common.GlobalConstants; import org.mozilla.gecko.background.common.log.Logger; import org.mozilla.gecko.background.fxa.FxAccountUtils; @@ -711,7 +712,11 @@ public class AndroidFxAccount { * @param ignoreSettings whether we should check if syncing is allowed via in-app or system settings. */ public void requestImmediateSync(String[] stagesToSync, String[] stagesToSkip, boolean ignoreSettings) { - FirefoxAccounts.requestImmediateSync(getAndroidAccount(), stagesToSync, stagesToSkip, ignoreSettings); + if (AppConstants.isTorBrowser()) { + return; + } else { + FirefoxAccounts.requestImmediateSync(getAndroidAccount(), stagesToSync, stagesToSkip, ignoreSettings); + } } /** @@ -722,7 +727,11 @@ public class AndroidFxAccount { * @param stagesToSkip stage names to skip; can be null to skip <b>no</b> known stages. */ public void requestEventualSync(String[] stagesToSync, String[] stagesToSkip) { - FirefoxAccounts.requestEventualSync(getAndroidAccount(), stagesToSync, stagesToSkip); + if (AppConstants.isTorBrowser()) { + return; + } else { + FirefoxAccounts.requestEventualSync(getAndroidAccount(), stagesToSync, stagesToSkip); + } } public synchronized void setState(State state) {
1 0
0 0
[tor-browser/tor-browser-60.1.0esr-8.0-1] Bug 25741 - TBA: Only include GCM permissions if we want them
by gk@torproject.org 27 Jul '18

27 Jul '18
commit 8ea67231b7d81646420da6d9c069746fa5e2ccf9 Author: Matthew Finkel <Matthew.Finkel(a)gmail.com> Date: Mon Apr 16 04:24:01 2018 +0000 Bug 25741 - TBA: Only include GCM permissions if we want them --- mobile/android/base/FennecManifest_permissions.xml.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mobile/android/base/FennecManifest_permissions.xml.in b/mobile/android/base/FennecManifest_permissions.xml.in index eb4e111f6800..1b7b2d5475ec 100644 --- a/mobile/android/base/FennecManifest_permissions.xml.in +++ b/mobile/android/base/FennecManifest_permissions.xml.in @@ -8,7 +8,10 @@ them during the same release, which should be Fennec 48. Therefore we decouple the push permission from MOZ_ANDROID_GCM to let it ride ahead (potentially) of the push feature. --> + +#ifdef MOZ_ANDROID_GCM #include GcmAndroidManifest_permissions.xml.in +#endif #ifdef MOZ_ANDROID_NETWORK_STATE <!-- Android WIFI state -->
1 0
0 0
[tor-browser/tor-browser-60.1.0esr-8.0-1] Bug 25741 - TBA: Do not import bookmarks and history from native browser by default
by gk@torproject.org 27 Jul '18

27 Jul '18
commit 4c70fba1083e03e0ce5a24b40fd985a142560fa5 Author: Matthew Finkel <Matthew.Finkel(a)gmail.com> Date: Wed Apr 11 18:51:09 2018 +0000 Bug 25741 - TBA: Do not import bookmarks and history from native browser by default --- mobile/android/app/src/main/res/values/arrays.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mobile/android/app/src/main/res/values/arrays.xml b/mobile/android/app/src/main/res/values/arrays.xml index 555797ce7db2..f1d166262546 100644 --- a/mobile/android/app/src/main/res/values/arrays.xml +++ b/mobile/android/app/src/main/res/values/arrays.xml @@ -46,8 +46,8 @@ <item>@string/history_title</item> </string-array> <string-array name="pref_import_android_defaults"> - <item>true</item> - <item>true</item> + <item>false</item> + <item>false</item> </string-array> <string-array name="pref_import_android_values"> <item>android_import.data.bookmarks</item>
1 0
0 0
[tor-browser/tor-browser-60.1.0esr-8.0-1] Bug 25741 - TBA: Only include Firefox Account permissions if we want them
by gk@torproject.org 27 Jul '18

27 Jul '18
commit 481f6b374dbf9a22348c24429fcd05eb12082449 Author: Matthew Finkel <Matthew.Finkel(a)gmail.com> Date: Mon Apr 16 04:22:51 2018 +0000 Bug 25741 - TBA: Only include Firefox Account permissions if we want them --- mobile/android/base/AndroidManifest.xml.in | 4 ++++ mobile/android/base/FennecManifest_permissions.xml.in | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/mobile/android/base/AndroidManifest.xml.in b/mobile/android/base/AndroidManifest.xml.in index 548c662939f6..4f626dcc2098 100644 --- a/mobile/android/base/AndroidManifest.xml.in +++ b/mobile/android/base/AndroidManifest.xml.in @@ -269,7 +269,9 @@ </intent-filter> </receiver> +#ifdef MOZ_ACCOUNT #include ../services/manifests/FxAccountAndroidManifest_activities.xml.in +#endif #ifdef MOZ_CRASHREPORTER <activity android:name="org.mozilla.gecko.CrashReporter" @@ -415,7 +417,9 @@ </intent-filter> </service> +#ifdef MOZ_ACCOUNT #include ../services/manifests/FxAccountAndroidManifest_services.xml.in +#endif <service android:name="org.mozilla.gecko.tabqueue.TabReceivedService" diff --git a/mobile/android/base/FennecManifest_permissions.xml.in b/mobile/android/base/FennecManifest_permissions.xml.in index 7ca8239cca5a..eb4e111f6800 100644 --- a/mobile/android/base/FennecManifest_permissions.xml.in +++ b/mobile/android/base/FennecManifest_permissions.xml.in @@ -1,5 +1,7 @@ +#ifdef MOZ_ACCOUNT #include ../services/manifests/FxAccountAndroidManifest_permissions.xml.in +#endif <!-- Bug 1261302: we have two new permissions to request, RECEIVE_BOOT_COMPLETED and the permission for push. We want to ask for @@ -25,7 +27,9 @@ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT"/> +#ifdef MOZ_ANDROID_LOCATION <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/> +#endif <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.VIBRATE"/>
1 0
0 0
[tor-browser/tor-browser-60.1.0esr-8.0-1] Bug 25741 - TBA: Clear state when the app exits, by default
by gk@torproject.org 27 Jul '18

27 Jul '18
commit b1780714bb2b5a23d14989edcbc68c3bb8c6d556 Author: Matthew Finkel <Matthew.Finkel(a)gmail.com> Date: Wed Apr 11 18:55:25 2018 +0000 Bug 25741 - TBA: Clear state when the app exits, by default Do not delete downloaded files on exit. These correspond with (in order): private.data.openTabs private.data.history private.data.searchHistory private.data.downloadFiles private.data.formdata private.data.cookies_sessions private.data.cache private.data.offlineApps private.data.siteSettings private.data.syncedTabs private.data.passwords --- mobile/android/app/src/main/res/values/arrays.xml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/mobile/android/app/src/main/res/values/arrays.xml b/mobile/android/app/src/main/res/values/arrays.xml index f1d166262546..87b5e72b993e 100644 --- a/mobile/android/app/src/main/res/values/arrays.xml +++ b/mobile/android/app/src/main/res/values/arrays.xml @@ -70,6 +70,7 @@ <item>true</item> <item>true</item> <item>true</item> + <item>false</item> <item>true</item> <item>true</item> <item>true</item> @@ -77,7 +78,6 @@ <item>true</item> <item>true</item> <item>true</item> - <item>false</item> </string-array> <string-array name="pref_private_data_values"> <item>private.data.openTabs</item> @@ -106,17 +106,17 @@ <item>private.data.passwords</item> </string-array> <string-array name="pref_clear_on_exit_defaults"> + <item>true</item> + <item>true</item> + <item>true</item> <item>false</item> - <item>false</item> - <item>false</item> - <item>false</item> - <item>false</item> - <item>false</item> - <item>false</item> - <item>false</item> - <item>false</item> - <item>false</item> - <item>false</item> + <item>true</item> + <item>true</item> + <item>true</item> + <item>true</item> + <item>true</item> + <item>true</item> + <item>true</item> </string-array> <string-array name="pref_restore_entries"> <item>@string/pref_restore_always</item>
1 0
0 0
[tor-browser/tor-browser-60.1.0esr-8.0-1] Bug 25741 - TBA: Disable all data reporting by default
by gk@torproject.org 27 Jul '18

27 Jul '18
commit 42b4d485e898be9acbb6cae5c7e736fda7b00eea Author: Matthew Finkel <Matthew.Finkel(a)gmail.com> Date: Wed Apr 11 20:37:43 2018 +0000 Bug 25741 - TBA: Disable all data reporting by default This includes: Telemetry Geo-Location (Wi-Fi, Cellular location data, etc) Health Report --- mobile/android/app/src/main/res/xml/preferences_privacy.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mobile/android/app/src/main/res/xml/preferences_privacy.xml b/mobile/android/app/src/main/res/xml/preferences_privacy.xml index 68a2066976c8..23be2f12121b 100644 --- a/mobile/android/app/src/main/res/xml/preferences_privacy.xml +++ b/mobile/android/app/src/main/res/xml/preferences_privacy.xml @@ -84,7 +84,8 @@ <CheckBoxPreference android:key="android.not_a_preference.app.geo.reportdata" android:title="@string/datareporting_wifi_title" - android:summary="@string/datareporting_wifi_geolocation_summary" /> + android:summary="@string/datareporting_wifi_geolocation_summary" + android:defaultValue="false" /> <org.mozilla.gecko.preferences.AlignRightLinkPreference android:key="android.not_a_preference.geo.learn_more" android:title="@string/pref_learn_more" @@ -94,7 +95,7 @@ <CheckBoxPreference android:key="android.not_a_preference.healthreport.uploadEnabled" android:title="@string/datareporting_fhr_title" android:summary="@string/datareporting_fhr_summary2" - android:defaultValue="true" /> + android:defaultValue="false" /> </PreferenceCategory>
1 0
0 0
[tor-browser/tor-browser-60.1.0esr-8.0-1] Bug 25741 - TBA: Do not save browsing history by default
by gk@torproject.org 27 Jul '18

27 Jul '18
commit 694a7f174bc0214fec5a46893d11342fb1156936 Author: Matthew Finkel <Matthew.Finkel(a)gmail.com> Date: Wed Apr 11 18:46:02 2018 +0000 Bug 25741 - TBA: Do not save browsing history by default --- mobile/android/app/src/main/res/xml-v11/preferences_search.xml | 2 +- mobile/android/app/src/main/res/xml/preferences_search.xml | 2 +- .../app/src/photon/java/org/mozilla/gecko/home/SearchEngineRow.java | 2 +- mobile/android/base/java/org/mozilla/gecko/home/BrowserSearch.java | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mobile/android/app/src/main/res/xml-v11/preferences_search.xml b/mobile/android/app/src/main/res/xml-v11/preferences_search.xml index 937b05b617c6..a58bb7cece44 100644 --- a/mobile/android/app/src/main/res/xml-v11/preferences_search.xml +++ b/mobile/android/app/src/main/res/xml-v11/preferences_search.xml @@ -27,7 +27,7 @@ <CheckBoxPreference android:key="android.not_a_preference.search.search_history.enabled" android:title="@string/pref_history_search_suggestions" - android:defaultValue="true" + android:defaultValue="false" android:persistent="true" /> </PreferenceScreen> diff --git a/mobile/android/app/src/main/res/xml/preferences_search.xml b/mobile/android/app/src/main/res/xml/preferences_search.xml index 440167fe5e2a..fc8c258821e1 100644 --- a/mobile/android/app/src/main/res/xml/preferences_search.xml +++ b/mobile/android/app/src/main/res/xml/preferences_search.xml @@ -34,7 +34,7 @@ <CheckBoxPreference android:key="android.not_a_preference.search.search_history.enabled" android:title="@string/pref_history_search_suggestions" - android:defaultValue="true" + android:defaultValue="false" android:persistent="true" /> </PreferenceScreen> diff --git a/mobile/android/app/src/photon/java/org/mozilla/gecko/home/SearchEngineRow.java b/mobile/android/app/src/photon/java/org/mozilla/gecko/home/SearchEngineRow.java index 8d7eec1d839a..1d90f7bacf41 100644 --- a/mobile/android/app/src/photon/java/org/mozilla/gecko/home/SearchEngineRow.java +++ b/mobile/android/app/src/photon/java/org/mozilla/gecko/home/SearchEngineRow.java @@ -378,7 +378,7 @@ class SearchEngineRow extends ThemedRelativeLayout { final int recycledSuggestionCount = mSuggestionView.getChildCount(); final SharedPreferences prefs = GeckoSharedPrefs.forApp(getContext()); - final boolean savedSearchesEnabled = prefs.getBoolean(GeckoPreferences.PREFS_HISTORY_SAVED_SEARCH, true); + final boolean savedSearchesEnabled = prefs.getBoolean(GeckoPreferences.PREFS_HISTORY_SAVED_SEARCH, false); // Remove duplicates of search engine suggestions from saved searches. List<String> searchHistorySuggestions = (rawSearchHistorySuggestions != null) ? rawSearchHistorySuggestions : new ArrayList<String>(); diff --git a/mobile/android/base/java/org/mozilla/gecko/home/BrowserSearch.java b/mobile/android/base/java/org/mozilla/gecko/home/BrowserSearch.java index e25d1067a995..02cd3888ed15 100644 --- a/mobile/android/base/java/org/mozilla/gecko/home/BrowserSearch.java +++ b/mobile/android/base/java/org/mozilla/gecko/home/BrowserSearch.java @@ -276,7 +276,7 @@ public class BrowserSearch extends HomeFragment super.onResume(); final SharedPreferences prefs = GeckoSharedPrefs.forApp(getContext()); - mSavedSearchesEnabled = prefs.getBoolean(GeckoPreferences.PREFS_HISTORY_SAVED_SEARCH, true); + mSavedSearchesEnabled = prefs.getBoolean(GeckoPreferences.PREFS_HISTORY_SAVED_SEARCH, false); // Fetch engines if we need to. if (mSearchEngines.isEmpty() || !Locale.getDefault().equals(mLastLocale)) { @@ -1385,4 +1385,4 @@ public class BrowserSearch extends HomeFragment setSelector(isPrivate ? R.drawable.search_list_selector_private : R.drawable.search_list_selector); } } -} \ No newline at end of file +}
1 0
0 0
[tor-browser/tor-browser-60.1.0esr-8.0-1] Bug 25741 - TBA: Conditionally require *_LOCATION permissions
by gk@torproject.org 27 Jul '18

27 Jul '18
commit a549bf2a62b4a84eaf1326436a6e899d9d156572 Author: Matthew Finkel <Matthew.Finkel(a)gmail.com> Date: Wed Apr 11 18:07:25 2018 +0000 Bug 25741 - TBA: Conditionally require *_LOCATION permissions Only require the {FINE,COURSE}_LOCATION permissions if MOZ_ANDROID_LOCATION is defined in the preprocessor. Also include location features (with gps). --- mobile/android/base/FennecManifest_permissions.xml.in | 5 +++++ mobile/android/geckoview/src/main/AndroidManifest.xml | 2 ++ mobile/android/moz.configure | 4 ++++ mobile/android/torbrowser.configure | 1 + 4 files changed, 12 insertions(+) diff --git a/mobile/android/base/FennecManifest_permissions.xml.in b/mobile/android/base/FennecManifest_permissions.xml.in index 747f1e988147..25c4b4f215d5 100644 --- a/mobile/android/base/FennecManifest_permissions.xml.in +++ b/mobile/android/base/FennecManifest_permissions.xml.in @@ -13,8 +13,11 @@ <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> #endif + +#ifdef MOZ_ANDROID_LOCATION <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> +#endif <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> @@ -30,8 +33,10 @@ <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> #endif +#ifdef MOZ_ANDROID_LOCATION <uses-feature android:name="android.hardware.location" android:required="false"/> <uses-feature android:name="android.hardware.location.gps" android:required="false"/> +#endif <uses-feature android:name="android.hardware.touchscreen"/> <!-- Tab Queue --> diff --git a/mobile/android/geckoview/src/main/AndroidManifest.xml b/mobile/android/geckoview/src/main/AndroidManifest.xml index 2a84ae4611ad..da1508336d90 100644 --- a/mobile/android/geckoview/src/main/AndroidManifest.xml +++ b/mobile/android/geckoview/src/main/AndroidManifest.xml @@ -18,8 +18,10 @@ <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.VIBRATE"/> +#ifdef MOZ_ANDROID_LOCATION <uses-feature android:name="android.hardware.location" android:required="false"/> <uses-feature android:name="android.hardware.location.gps" android:required="false"/> +#endif <uses-feature android:name="android.hardware.touchscreen"/> <uses-permission android:name="android.permission.CAMERA" /> diff --git a/mobile/android/moz.configure b/mobile/android/moz.configure index 468ec4723632..7033d4283211 100644 --- a/mobile/android/moz.configure +++ b/mobile/android/moz.configure @@ -189,3 +189,7 @@ def check_android_gcm(android_gcm, project_flag('MOZ_ANDROID_NETWORK_STATE', help='Include permission for accessing WiFi/network state on Android', default=False) + +project_flag('MOZ_ANDROID_LOCATION', + help='Include permission for accessing fine and course-grain Location on Android', + default=False) diff --git a/mobile/android/torbrowser.configure b/mobile/android/torbrowser.configure index 3e84355774d5..ac30fde888a6 100644 --- a/mobile/android/torbrowser.configure +++ b/mobile/android/torbrowser.configure @@ -43,3 +43,4 @@ imply_option('MOZ_SERVICES_HEALTHREPORT', False) #imply_option('MOZ_DATA_REPORTING', False) imply_option('MOZ_ANDROID_NETWORK_STATE', False); +imply_option('MOZ_ANDROID_LOCATION', False);
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 1654
  • 1655
  • 1656
  • 1657
  • 1658
  • 1659
  • 1660
  • ...
  • 2043
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.