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

Commit a7d0d00f authored by Yiyi Shen's avatar Yiyi Shen
Browse files

Fix crash when showing the device not found dialog.

If users click to pair a not foundable device and then close the Settings page,
Settings will crash becasue dialog holder is closed.
This CL is part of the fix. It set the context to null when the activity
stops.

Bug: 306548036
Test: atest
Change-Id: If68e3e9cd62216ad83b2e5058f504fce35e36a06
parent 8e38bd0b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ public class FastPairDeviceGroupController extends BasePreferenceController
    @Override
    public void onStart(@NonNull LifecycleOwner owner) {
        if (mFastPairDeviceUpdater != null) {
            mFastPairDeviceUpdater.setPreferenceContext(mContext);
            mFastPairDeviceUpdater.registerCallback();
        } else {
            if (DEBUG) {
@@ -94,6 +95,7 @@ public class FastPairDeviceGroupController extends BasePreferenceController
    @Override
    public void onStop(@NonNull LifecycleOwner owner) {
        if (mFastPairDeviceUpdater != null) {
            mFastPairDeviceUpdater.setPreferenceContext(null);
            mFastPairDeviceUpdater.unregisterCallback();
        } else {
            if (DEBUG) {
+2 −1
Original line number Diff line number Diff line
@@ -91,6 +91,7 @@ public class FastPairDevicePreferenceController extends BasePreferenceController
    @Override
    public void onStart(@NonNull LifecycleOwner owner) {
        if (mFastPairDeviceUpdater != null) {
            mFastPairDeviceUpdater.setPreferenceContext(mContext);
            mFastPairDeviceUpdater.registerCallback();
        } else {
            if (DEBUG) {
@@ -103,6 +104,7 @@ public class FastPairDevicePreferenceController extends BasePreferenceController
    @Override
    public void onStop(@NonNull LifecycleOwner owner) {
        if (mFastPairDeviceUpdater != null) {
            mFastPairDeviceUpdater.setPreferenceContext(null);
            mFastPairDeviceUpdater.unregisterCallback();
        } else {
            if (DEBUG) {
@@ -118,7 +120,6 @@ public class FastPairDevicePreferenceController extends BasePreferenceController
        mPreferenceGroup = screen.findPreference(getPreferenceKey());
        mSeeAllPreference = mPreferenceGroup.findPreference(KEY_SEE_ALL);
        updatePreferenceVisibility();

        if (isAvailable()) {
            final Context context = screen.getContext();
            mFastPairDeviceUpdater.setPreferenceContext(context);
+11 −24
Original line number Diff line number Diff line
@@ -16,37 +16,24 @@

package com.android.settings.connecteddevice.fastpair;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;

/**
 * Updates the Fast Pair devices. It notifies the upper level whether to add/remove the
 * preference through {@link DevicePreferenceCallback}
 * Updates the Fast Pair devices. It notifies the upper level whether to add/remove the preference
 * through {@link DevicePreferenceCallback}
 */
public interface FastPairDeviceUpdater {

    /**
     * Registers the Fast Pair event callback and update the list
     */
    default void registerCallback() {
    }
    /** Registers the Fast Pair event callback and update the list */
    default void registerCallback() {}

    /**
     * Unregisters the Fast Pair event callback
     */
    default void unregisterCallback() {
    }
    /** Unregisters the Fast Pair event callback */
    default void unregisterCallback() {}

    /**
     * Forces to update the list of Fast Pair devices
     */
    default void forceUpdate() {
    }
    /** Forces to update the list of Fast Pair devices */
    default void forceUpdate() {}

    /**
     * Sets the context to generate the {@link Preference}, so it could get the correct theme.
     */
    default void setPreferenceContext(@NonNull Context preferenceContext) {
    }
    /** Sets the context to generate the {@link Preference}, so it could get the correct theme. */
    default void setPreferenceContext(@Nullable Context preferenceContext) {}
}