Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9db3cb3b authored by Salvador Martinez's avatar Salvador Martinez
Browse files

Fix null pointer exception when surveys are turned off

In some conditions the survey provider could be null on
download completion which could lead to a NPE. This
has been addressed by not requiring an instance for
the removal of the receiver.

Test: RunSettingsRoboTests (master)
Bug: 33707203
Change-Id: Id1ab1a24c697fed8e4dd259682a088b50c35f38a
Merged-In: Icfb545697f24172db734dd7dad421796edf68186
parent bd16255e
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -77,9 +77,7 @@ public abstract class InstrumentedFragment extends PreferenceFragment {
    public void onPause() {
        Activity activity = getActivity();
        if (mReceiver != null && activity != null) {
            SurveyFeatureProvider provider =
                    FeatureFactory.getFactory(activity).getSurveyFeatureProvider(activity);
            provider.unregisterReceiver(activity, mReceiver);
            SurveyFeatureProvider.unregisterReceiver(activity, mReceiver);
            mReceiver = null;
        }

+1 −3
Original line number Diff line number Diff line
@@ -66,9 +66,7 @@ public abstract class InstrumentedPreferenceFragment extends PreferenceFragment
    public void onPause() {
        Activity activity = getActivity();
        if (mReceiver != null && activity != null) {
            SurveyFeatureProvider provider =
                    FeatureFactory.getFactory(activity).getSurveyFeatureProvider(activity);
            provider.unregisterReceiver(activity, mReceiver);
            SurveyFeatureProvider.unregisterReceiver(activity, mReceiver);
            mReceiver = null;
        }

+8 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.IntentFilter;
import android.support.annotation.Nullable;
import android.support.v4.content.LocalBroadcastManager;

/**
 * An interface for classes wishing to provide the ability to serve surveys to implement.
@@ -81,5 +82,11 @@ public interface SurveyFeatureProvider {
     * after a call to {@link #createAndRegisterReceiver(Activity)}.
     * @param activity The activity that was used to register the BroadcastReceiver.
     */
    void unregisterReceiver(Activity activity, BroadcastReceiver receiver);
    static void unregisterReceiver(Activity activity, BroadcastReceiver receiver) {
        if (activity == null) {
            throw new IllegalStateException("Cannot unregister receiver if activity is null");
        }

        LocalBroadcastManager.getInstance(activity).unregisterReceiver(receiver);
    }
}