commit 078d1f89036764b9486cd4de841ad2bfcd748ac0 Author: Matthew Finkel Matthew.Finkel@gmail.com Date: Wed Nov 14 17:38:08 2018 +0000
Bug 28051 - Launch Orbot if it isn't running in the background --- .../base/java/org/mozilla/gecko/BrowserApp.java | 64 ++++++---------------- .../java/org/mozilla/gecko/GeckoApplication.java | 10 ++++ .../main/java/org/mozilla/gecko/GeckoAppShell.java | 11 ---- 3 files changed, 26 insertions(+), 59 deletions(-)
diff --git a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java index 5efd83398775..814b46f24295 100644 --- a/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java +++ b/mobile/android/base/java/org/mozilla/gecko/BrowserApp.java @@ -181,7 +181,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 org.torproject.android.OrbotMainActivity; +import org.torproject.android.service.TorServiceConstants;
import java.io.File; import java.io.FileNotFoundException; @@ -239,6 +240,7 @@ public class BrowserApp extends GeckoApp public static final int ACTIVITY_REQUEST_TRIPLE_READERVIEW = 4001; public static final int ACTIVITY_RESULT_TRIPLE_READERVIEW_ADD_BOOKMARK = 4002; public static final int ACTIVITY_RESULT_TRIPLE_READERVIEW_IGNORE = 4003; + public static final int ACTIVITY_RESULT_ORBOT_LAUNCH = 5001;
public static final String ACTION_VIEW_MULTIPLE = AppConstants.ANDROID_PACKAGE_NAME + ".action.VIEW_MULTIPLE";
@@ -267,6 +269,8 @@ public class BrowserApp extends GeckoApp private HomeScreen mHomeScreen; private TabsPanel mTabsPanel;
+ private boolean mOrbotNeedsStart = true; + private boolean showSplashScreen = false; private SplashScreen splashScreen; /** @@ -1278,45 +1282,11 @@ 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)) { - GeckoAppShell.setTorStatus(intent); - } - } - }; - 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 { - /* 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); - OrbotHelper.requestStartTor(this); + if (mOrbotNeedsStart) { + final String orbotStartAction = "android.intent.action.MAIN"; + final Intent launchOrbot = new Intent(orbotStartAction, null, this, OrbotMainActivity.class); + startActivityForResult(launchOrbot, ACTIVITY_RESULT_ORBOT_LAUNCH, null); } }
@@ -1358,15 +1328,6 @@ public class BrowserApp extends GeckoApp for (BrowserAppDelegate delegate : delegates) { delegate.onPause(this); } - - if (torStatusReceiver != null) - { - try { - unregisterReceiver(torStatusReceiver); - } catch (IllegalArgumentException e) { - Log.w(LOGTAG, "Tor status receiver couldn't be unregistered", e); - } - } }
@Override @@ -1801,6 +1762,8 @@ public class BrowserApp extends GeckoApp NotificationHelper.destroy(); GeckoNetworkManager.destroy();
+ mOrbotNeedsStart = true; + super.onDestroy(); }
@@ -3018,6 +2981,11 @@ public class BrowserApp extends GeckoApp TabQueueHelper.processTabQueuePromptResponse(resultCode, this); break;
+ case ACTIVITY_RESULT_ORBOT_LAUNCH: + Log.d(LOGTAG, "onActivityResult: ACTIVITY_RESULT_ORBOT_LAUNCH"); + mOrbotNeedsStart = false; + break; + default: for (final BrowserAppDelegate delegate : delegates) { delegate.onActivityResult(this, requestCode, resultCode, data); diff --git a/mobile/android/base/java/org/mozilla/gecko/GeckoApplication.java b/mobile/android/base/java/org/mozilla/gecko/GeckoApplication.java index e896134e0af9..b8e4985332a9 100644 --- a/mobile/android/base/java/org/mozilla/gecko/GeckoApplication.java +++ b/mobile/android/base/java/org/mozilla/gecko/GeckoApplication.java @@ -62,6 +62,9 @@ import java.lang.reflect.Method; import java.net.URL; import java.util.UUID;
+import org.torproject.android.service.util.Prefs; +import org.torproject.android.settings.Languages; + public class GeckoApplication extends Application implements HapticFeedbackDelegate { private static final String LOG_TAG = "GeckoApplication"; @@ -319,6 +322,13 @@ public class GeckoApplication extends Application "Profile:Create", null);
+ // Give Orbot the base Context + Prefs.setContext(context); + + // Initialize Orbot's Language settings + Languages.setup(BrowserApp.class, R.string.menu_settings); + Languages.setLanguage(this, Prefs.getDefaultLocale(), true); + super.onCreate(); }
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 f67603f853e2..34ba3315f295 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 @@ -1895,15 +1895,4 @@ public class GeckoAppShell public static String getDefaultLocale() { return Locale.getDefault().toString(); } - - public static void setTorStatus(Intent intent) { - sTorStatus = intent.getStringExtra(OrbotHelper.EXTRA_STATUS); - if (OrbotHelper.STATUS_ON.equals(sTorStatus)) { - sendPendingUrlIntents(); - } - } - - public static String getTorStatus() { - return sTorStatus; - } }