Bug 1407835 - Don't keep BrowserApp unnecessarily alive through sScreenOrientationDelegate. r?nalexander draft
authorJan Henning <jh+bugzilla@buttercookie.de>
Thu, 12 Oct 2017 20:06:51 +0200
changeset 680224 0e2bee6bd98d8a00d1564a94b506883070d9d499
parent 679479 69de6e866b6159d6b92e7f6e81f41b1063f9536d
child 735795 2dd7f18b24d7a1c49e6fbebba818fff32bc0436e
push id84431
push usermozilla@buttercookie.de
push dateFri, 13 Oct 2017 18:15:03 +0000
reviewersnalexander
bugs1407835
milestone58.0a1
Bug 1407835 - Don't keep BrowserApp unnecessarily alive through sScreenOrientationDelegate. r?nalexander We need to clear the reference again if BrowserApp is possibly going to be destroyed. At the moment there aren't any other activities using setScreenOrientationDelegate, but in preparation for that happening we unset BrowserApp as delegate already in onPause (instead of onDestroy) so we don't mistakenly assume that BrowserApp will remain the active ScreenOrientationDelegate all the time, even when it has been paused by some other activity. MozReview-Commit-ID: 9q0MSzi78Vm
mobile/android/base/java/org/mozilla/gecko/GeckoApp.java
mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java
--- a/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java
+++ b/mobile/android/base/java/org/mozilla/gecko/GeckoApp.java
@@ -2131,16 +2131,18 @@ public abstract class GeckoApp extends G
 
                     editor.putBoolean(GeckoApp.PREFS_CLEANUP_TEMP_FILES, false);
                 }
 
                 editor.apply();
             }
         });
 
+        GeckoAppShell.setScreenOrientationDelegate(null);
+
         super.onPause();
     }
 
     @Override
     public void onRestart() {
         if (mIsAbortingAppLaunch) {
             super.onRestart();
             return;
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java
+++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/GeckoAppShell.java
@@ -79,16 +79,17 @@ import android.os.Bundle;
 import android.os.Environment;
 import android.os.Looper;
 import android.os.ParcelFileDescriptor;
 import android.os.PowerManager;
 import android.os.SystemClock;
 import android.os.Vibrator;
 import android.provider.Settings;
 import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
 import android.support.v4.util.SimpleArrayMap;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.DisplayMetrics;
 import android.util.Log;
 import android.view.ContextThemeWrapper;
 import android.view.Display;
 import android.view.HapticFeedbackConstants;
@@ -623,17 +624,17 @@ public class GeckoAppShell
     public static void setNotificationListener(final NotificationListener listener) {
         sNotificationListener = (listener != null) ? listener : DEFAULT_LISTENERS;
     }
 
     public static ScreenOrientationDelegate getScreenOrientationDelegate() {
         return sScreenOrientationDelegate;
     }
 
-    public static void setScreenOrientationDelegate(ScreenOrientationDelegate screenOrientationDelegate) {
+    public static void setScreenOrientationDelegate(@Nullable ScreenOrientationDelegate screenOrientationDelegate) {
         sScreenOrientationDelegate = (screenOrientationDelegate != null) ? screenOrientationDelegate : DEFAULT_LISTENERS;
     }
 
     public static WakeLockDelegate getWakeLockDelegate() {
         return sWakeLockDelegate;
     }
 
     public void setWakeLockDelegate(final WakeLockDelegate delegate) {