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

Commit a40ecc72 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "NPE Guard lifecycle in preference controllers"

parents e0e27ae0 94f8d9f2
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -43,19 +43,21 @@ public abstract class AbstractConnectivityPreferenceController
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (ArrayUtils.contains(getConnectivityIntents(), action)) {
                mHandler.sendEmptyMessage(EVENT_UPDATE_CONNECTIVITY);
                getHandler().sendEmptyMessage(EVENT_UPDATE_CONNECTIVITY);
            }
        }
    };

    private static final int EVENT_UPDATE_CONNECTIVITY = 600;

    private final Handler mHandler = new ConnectivityEventHandler(this);
    private Handler mHandler;

    public AbstractConnectivityPreferenceController(Context context, Lifecycle lifecycle) {
        super(context);
        if (lifecycle != null) {
            lifecycle.addObserver(this);
        }
    }

    @Override
    public void onStop() {
@@ -78,6 +80,13 @@ public abstract class AbstractConnectivityPreferenceController

    protected abstract void updateConnectivity();

    private Handler getHandler() {
        if (mHandler == null) {
            mHandler = new ConnectivityEventHandler(this);
        }
        return mHandler;
    }

    private static class ConnectivityEventHandler extends Handler {
        private WeakReference<AbstractConnectivityPreferenceController> mPreferenceController;

+13 −4
Original line number Diff line number Diff line
@@ -44,21 +44,23 @@ public abstract class AbstractUptimePreferenceController extends AbstractPrefere
    private static final int EVENT_UPDATE_STATS = 500;

    private Preference mUptime;
    private final Handler mHandler = new MyHandler(this);
    private Handler mHandler;

    public AbstractUptimePreferenceController(Context context, Lifecycle lifecycle) {
        super(context);
        if (lifecycle != null) {
            lifecycle.addObserver(this);
        }
    }

    @Override
    public void onStart() {
        mHandler.sendEmptyMessage(EVENT_UPDATE_STATS);
        getHandler().sendEmptyMessage(EVENT_UPDATE_STATS);
    }

    @Override
    public void onStop() {
        mHandler.removeMessages(EVENT_UPDATE_STATS);
        getHandler().removeMessages(EVENT_UPDATE_STATS);
    }

    @Override
@@ -78,6 +80,13 @@ public abstract class AbstractUptimePreferenceController extends AbstractPrefere
        updateTimes();
    }

    private Handler getHandler() {
        if (mHandler == null) {
            mHandler = new MyHandler(this);
        }
        return mHandler;
    }

    private void updateTimes() {
        mUptime.setSummary(DateUtils.formatDuration(SystemClock.elapsedRealtime()));
    }
+2 −3
Original line number Diff line number Diff line
@@ -31,14 +31,13 @@ import com.android.settingslib.SettingsLibRobolectricTestRunner;
import com.android.settingslib.TestConfig;
import com.android.settingslib.core.lifecycle.Lifecycle;

import org.robolectric.shadows.ShadowLooper;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowLooper;

@RunWith(SettingsLibRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
@@ -73,7 +72,7 @@ public class UptimePreferenceControllerTest {
    @Test
    public void testUptimeTick() {
        final AbstractUptimePreferenceController uptimePreferenceController =
                new ConcreteUptimePreferenceController(mContext, mLifecycle);
                new ConcreteUptimePreferenceController(mContext, null /* lifecycle */);

        uptimePreferenceController.displayPreference(mScreen);