[tor-commits] [tor-browser/tor-browser-60.6.1esr-8.5-1] fixup! Bug 28329 - Part 4. Add new Tor Bootstrapping and configuration screens

gk at torproject.org gk at torproject.org
Thu Apr 11 08:15:51 UTC 2019


commit fd7cccb3f4a908ff38edfefc36b194666c886f69
Author: Matthew Finkel <Matthew.Finkel at gmail.com>
Date:   Tue Apr 2 20:59:30 2019 +0000

    fixup! Bug 28329 - Part 4. Add new Tor Bootstrapping and configuration screens
    
    Bug 29982 - Adding additional safe guards
---
 .../mozilla/gecko/torbootstrap/TorPreferences.java | 42 +++++++++++++++++-----
 1 file changed, 34 insertions(+), 8 deletions(-)

diff --git a/mobile/android/base/java/org/mozilla/gecko/torbootstrap/TorPreferences.java b/mobile/android/base/java/org/mozilla/gecko/torbootstrap/TorPreferences.java
index 32a3bed3e685..9a8468292e7d 100644
--- a/mobile/android/base/java/org/mozilla/gecko/torbootstrap/TorPreferences.java
+++ b/mobile/android/base/java/org/mozilla/gecko/torbootstrap/TorPreferences.java
@@ -15,6 +15,7 @@ import android.preference.Preference;
 import android.preference.PreferenceFragment;
 import android.preference.PreferenceScreen;
 import android.preference.SwitchPreference;
+import android.support.v7.app.ActionBar;
 import android.text.style.ClickableSpan;
 import android.text.SpannableString;
 import android.text.Spanned;
@@ -138,7 +139,9 @@ public class TorPreferences extends AppCompatPreferenceActivity {
     // Save the current preference when the app is minimized or swiped away.
     @Override
     public void onStop() {
-        mFrag.onSaveState();
+        if (mFrag != null) {
+            mFrag.onSaveState();
+        }
         super.onStop();
     }
 
@@ -163,7 +166,9 @@ public class TorPreferences extends AppCompatPreferenceActivity {
     // the back button
     @Override
     public void onBackPressed() {
-        mFrag.onSaveState();
+        if (mFrag != null) {
+            mFrag.onSaveState();
+        }
         super.onBackPressed();
     }
 
@@ -200,7 +205,7 @@ public class TorPreferences extends AppCompatPreferenceActivity {
     // https://android.googlesource.com/platform/frameworks/base/+/6af15ebcfec64d0cc6879a0af9cfffd3e084ee73
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
+        if (item != null && item.getItemId() == android.R.id.home) {
             Log.i(LOGTAG, "onOptionsItemSelected(): Home");
             onNavigateUp();
             return true;
@@ -214,8 +219,8 @@ public class TorPreferences extends AppCompatPreferenceActivity {
         protected TorPreferences mTorPrefAct;
 
         @Override
-        public void onCreate(Bundle savedInstanceState) {
-            super.onCreate(savedInstanceState);
+        public void onActivityCreated(Bundle savedInstanceState) {
+            super.onActivityCreated(savedInstanceState);
 
             // This is only ever a TorPreferences
             mTorPrefAct = (TorPreferences) getActivity();
@@ -317,6 +322,11 @@ public class TorPreferences extends AppCompatPreferenceActivity {
 
         // Disable the bridges.enabled Preference
         protected void disableBridges(PreferenceFragment frag) {
+            if (frag == null) {
+                Log.w(LOGTAG, "disableBridges: frag is null");
+                return;
+            }
+
             SwitchPreference bridgesEnabled = (SwitchPreference) frag.findPreference(PREFS_BRIDGES_ENABLED);
             Preference bridgesType = frag.findPreference(PREFS_BRIDGES_TYPE);
             Preference bridgesProvide = frag.findPreference(PREFS_BRIDGES_PROVIDE);
@@ -349,7 +359,14 @@ public class TorPreferences extends AppCompatPreferenceActivity {
 
         // Set the current title
         protected void setTitle(int resId) {
-            mTorPrefAct.getSupportActionBar().setTitle(resId);
+            ActionBar actionBar = mTorPrefAct.getSupportActionBar();
+
+            if (actionBar == null) {
+                Log.w(LOGTAG, "setTitle: actionBar is null");
+                return;
+            }
+
+            actionBar.setTitle(resId);
         }
     }
 
@@ -446,6 +463,8 @@ public class TorPreferences extends AppCompatPreferenceActivity {
                 public void onChildViewAdded(View parent, View child) {
                     Log.i(LOGTAG, "onChildViewAdded: Adding ListView child view");
 
+                    setTitle(R.string.pref_tor_network_title);
+
                     // Make sure the Switch widget is synchronized with the preference
                     final Switch bridgesEnabledSwitch =
                         (Switch) parent.findViewById(android.R.id.switch_widget);
@@ -541,6 +560,11 @@ public class TorPreferences extends AppCompatPreferenceActivity {
         //   If PREFS_BRIDGES_PROVIDE is not null, then true
         //   Else false
         private boolean isBridgeProvided(SwitchPreference bridgesEnabled) {
+            if (bridgesEnabled == null) {
+                Log.i(LOGTAG, "isBridgeProvided: bridgesEnabled is null");
+                return false;
+            }
+
             if (!bridgesEnabled.isChecked()) {
                 Log.i(LOGTAG, "isBridgeProvided: bridgesEnabled is not checked");
                 return false;
@@ -572,7 +596,6 @@ public class TorPreferences extends AppCompatPreferenceActivity {
         @Override
         public void onViewCreated(View view, Bundle savedInstanceState) {
             super.onViewCreated(view, savedInstanceState);
-            setTitle(R.string.pref_tor_select_a_bridge_title);
 
             ListView lv = getListView(view);
             if (lv == null) {
@@ -585,6 +608,8 @@ public class TorPreferences extends AppCompatPreferenceActivity {
 
                 @Override
                 public void onChildViewAdded(View parent, View child) {
+                    setTitle(R.string.pref_tor_select_a_bridge_title);
+
                     // Set the previously chosen RadioButton as checked
                     final RadioGroup group = getBridgeTypeRadioGroup();
                     if (group == null) {
@@ -828,7 +853,6 @@ public class TorPreferences extends AppCompatPreferenceActivity {
         @Override
         public void onViewCreated(View view, Bundle savedInstanceState) {
             super.onViewCreated(view, savedInstanceState);
-            setTitle(R.string.pref_tor_provide_a_bridge_title);
             ListView lv = getListView(view);
             if (lv == null) {
                 Log.i(LOGTAG, "onViewCreated: ListView not found");
@@ -847,6 +871,8 @@ public class TorPreferences extends AppCompatPreferenceActivity {
             lv.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() {
                 @Override
                 public void onChildViewAdded(View parent, View child) {
+                    setTitle(R.string.pref_tor_provide_a_bridge_title);
+
                     // If we have a bridge line saved for this pref,
                     // then show the user
                     setBridgeProvideText(parent);





More information about the tor-commits mailing list