Niedzielski has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/289877

Change subject: Abort relaunch when a crash loop is detected
......................................................................

Abort relaunch when a crash loop is detected

Don't attempt to launch the crash report Activity when the current boot
sequence never made it to any UI. In these cases, fallback to default
Android behavior (terminate the current Activity and show the previous
Activity in the stack, if any).

Bug: T135854
Change-Id: I6276dd32ccd3b22c54f0063949ca7480eed3db33
---
M app/src/main/java/org/wikipedia/activity/ThemedActionBarActivity.java
M app/src/main/java/org/wikipedia/crash/hockeyapp/HockeyAppCrashReporter.java
M app/src/main/java/org/wikipedia/settings/Prefs.java
M app/src/main/res/values/preference_keys.xml
M app/src/main/res/xml/developer_preferences.xml
5 files changed, 25 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/77/289877/1

diff --git 
a/app/src/main/java/org/wikipedia/activity/ThemedActionBarActivity.java 
b/app/src/main/java/org/wikipedia/activity/ThemedActionBarActivity.java
index 520fdfc..1346342 100644
--- a/app/src/main/java/org/wikipedia/activity/ThemedActionBarActivity.java
+++ b/app/src/main/java/org/wikipedia/activity/ThemedActionBarActivity.java
@@ -12,6 +12,7 @@
 import org.wikipedia.R;
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.auth.AccountUtil;
+import org.wikipedia.settings.Prefs;
 import org.wikipedia.util.ApiUtil;
 
 import java.lang.reflect.Field;
@@ -22,6 +23,9 @@
     @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+
+        Prefs.crashedBeforeActivityCreated(false);
+
         ActivityUtil.requestFullUserOrientation(this);
 
         setTheme();
diff --git 
a/app/src/main/java/org/wikipedia/crash/hockeyapp/HockeyAppCrashReporter.java 
b/app/src/main/java/org/wikipedia/crash/hockeyapp/HockeyAppCrashReporter.java
index 4a22545..1963b4f 100644
--- 
a/app/src/main/java/org/wikipedia/crash/hockeyapp/HockeyAppCrashReporter.java
+++ 
b/app/src/main/java/org/wikipedia/crash/hockeyapp/HockeyAppCrashReporter.java
@@ -11,6 +11,7 @@
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.crash.BaseCrashReporter;
 import org.wikipedia.crash.CrashReportActivity;
+import org.wikipedia.settings.Prefs;
 import org.wikipedia.util.log.L;
 
 import static android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK;
@@ -83,7 +84,12 @@
 
         @Override
         public void onCrash() {
-            launchCrashReportActivity();
+            if (!Prefs.crashedBeforeActivityCreated()) {
+                Prefs.crashedBeforeActivityCreated(true);
+                launchCrashReportActivity();
+            } else {
+                L.i("Crashed before showing UI. Skipping reboot.");
+            }
             terminateApp();
         }
 
@@ -98,4 +104,4 @@
             Runtime.getRuntime().exit(0);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/org/wikipedia/settings/Prefs.java 
b/app/src/main/java/org/wikipedia/settings/Prefs.java
index 794c9b1..3babcc5 100644
--- a/app/src/main/java/org/wikipedia/settings/Prefs.java
+++ b/app/src/main/java/org/wikipedia/settings/Prefs.java
@@ -104,6 +104,14 @@
         remove(getCookiesForDomainKey(domain));
     }
 
+    public static boolean crashedBeforeActivityCreated() {
+        return 
getBoolean(R.string.preference_key_crashed_before_activity_created, true);
+    }
+
+    public static void crashedBeforeActivityCreated(boolean crashed) {
+        setBoolean(R.string.preference_key_crashed_before_activity_created, 
crashed);
+    }
+
     public static boolean isCrashReportAutoUploadEnabled() {
         return getBoolean(R.string.preference_key_auto_upload_crash_reports, 
true);
     }
diff --git a/app/src/main/res/values/preference_keys.xml 
b/app/src/main/res/values/preference_keys.xml
index 503fbd7..c37bfbb 100644
--- a/app/src/main/res/values/preference_keys.xml
+++ b/app/src/main/res/values/preference_keys.xml
@@ -39,6 +39,7 @@
     <string name="preference_key_session_data">session_data</string>
     <string name="preference_key_session_timeout">session_timeout</string>
     <string name="preference_key_remote_log">remoteLog</string>
+    <string 
name="preference_key_crashed_before_activity_created">crashedBeforeActivityCreated</string>
     <!-- Note: this value _must_ match 
net.hockeyapp.android.CrashManager.ALWAYS_SEND_KEY. -->
     <string 
name="preference_key_auto_upload_crash_reports">always_send_crash_reports</string>
 </resources>
diff --git a/app/src/main/res/xml/developer_preferences.xml 
b/app/src/main/res/xml/developer_preferences.xml
index c63a6e5..fd2d653 100644
--- a/app/src/main/res/xml/developer_preferences.xml
+++ b/app/src/main/res/xml/developer_preferences.xml
@@ -152,6 +152,10 @@
             android:key="@string/preference_key_show_developer_settings"
             android:title="@string/preference_key_show_developer_settings" />
 
+        <SwitchPreferenceCompat
+            
android:key="@string/preference_key_crashed_before_activity_created"
+            
android:title="@string/preference_key_crashed_before_activity_created" />
+
         <Preference android:key="@string/preferences_developer_crash_key"
             android:title="@string/preferences_developer_crash_title"
             android:summary="@string/preferences_developer_crash_summary" />

-- 
To view, visit https://gerrit.wikimedia.org/r/289877
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6276dd32ccd3b22c54f0063949ca7480eed3db33
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to