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

Commit bba75d88 authored by /e/ robot's avatar /e/ robot
Browse files

Merge remote-tracking branch 'origin/lineage-16.0' into v1-pie

parents 0959e105 f5ddbd0c
Loading
Loading
Loading
Loading
+26 −1
Original line number Diff line number Diff line
@@ -16,9 +16,14 @@
package com.android.settings.connecteddevice;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.os.IBinder;
import android.os.RemoteException;
import android.provider.SearchIndexableResource;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
import android.util.Log;

import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
@@ -36,6 +41,9 @@ import java.util.List;
public class ConnectedDeviceDashboardFragment extends DashboardFragment {

    private static final String TAG = "ConnectedDeviceFrag";
    private static final String SETTINGS_PACKAGE_NAME = "com.android.settings";
    private static final String SYSTEMUI_PACKAGE_NAME = "com.android.systemui";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);

    @VisibleForTesting
    static final String KEY_CONNECTED_DEVICES = "connected_device_list";
@@ -84,10 +92,27 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);

        String callingAppPackageName = getCallingAppPackageName(getActivity().getActivityToken());
        if (DEBUG) {
            Log.d(TAG, "onAttach() calling package name is : " + callingAppPackageName);
        }
        use(AvailableMediaDeviceGroupController.class).init(this);
        use(ConnectedDeviceGroupController.class).init(this);
        use(PreviouslyConnectedDevicePreferenceController.class).init(this);
        use(DiscoverableFooterPreferenceController.class).init(this);
        use(DiscoverableFooterPreferenceController.class).init(this,
                TextUtils.equals(SETTINGS_PACKAGE_NAME, callingAppPackageName)
                        || TextUtils.equals(SYSTEMUI_PACKAGE_NAME, callingAppPackageName));
    }

    private String getCallingAppPackageName(IBinder activityToken) {
        String pkg = null;
        try {
            pkg = ActivityManager.getService().getLaunchedFromPackage(activityToken);
        } catch (RemoteException e) {
            Log.v(TAG, "Could not talk to activity manager.", e);
        }
        return pkg;
    }

    @VisibleForTesting
+14 −3
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
    private LocalBluetoothManager mLocalManager;
    private LocalBluetoothAdapter mLocalAdapter;
    private AlwaysDiscoverable mAlwaysDiscoverable;
    private boolean mIsAlwaysDiscoverable;

    public DiscoverableFooterPreferenceController(Context context) {
        super(context, KEY);
@@ -79,8 +80,9 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
        };
    }

    public void init(DashboardFragment fragment) {
    public void init(DashboardFragment fragment, boolean isAlwaysDiscoverable) {
        mFooterPreferenceMixin = new FooterPreferenceMixin(fragment, fragment.getLifecycle());
        mIsAlwaysDiscoverable = isAlwaysDiscoverable;
    }

    @VisibleForTesting
@@ -91,6 +93,11 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
        mAlwaysDiscoverable = alwaysDiscoverable;
    }

    @VisibleForTesting
    void setAlwaysDiscoverable(boolean isAlwaysDiscoverable) {
        mIsAlwaysDiscoverable = isAlwaysDiscoverable;
    }

    @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
@@ -114,15 +121,19 @@ public class DiscoverableFooterPreferenceController extends BasePreferenceContro
    public void onResume() {
        mContext.registerReceiver(mBluetoothChangedReceiver,
                new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED));
        if (mIsAlwaysDiscoverable) {
            mAlwaysDiscoverable.start();
        }
        updateFooterPreferenceTitle(mLocalAdapter.getState());
    }

    @Override
    public void onPause() {
        mContext.unregisterReceiver(mBluetoothChangedReceiver);
        if (mIsAlwaysDiscoverable) {
            mAlwaysDiscoverable.stop();
        }
    }

    private void updateFooterPreferenceTitle (int bluetoothState) {
        if (bluetoothState == BluetoothAdapter.STATE_ON) {
+25 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ package com.android.settings.connecteddevice;

import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -117,14 +118,17 @@ public class DiscoverableFooterPreferenceControllerTest {
    }

    @Test
    public void onResume() {
    public void onResume_setAlwaysDiscoverableAsTrue_shouldRegisterBluetoothChanged() {
        mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(true);
        mDiscoverableFooterPreferenceController.onResume();

        assertThat(getRegisteredBroadcastReceivers()).contains(mBluetoothChangedReceiver);
        verify(mAlwaysDiscoverable).start();
    }

    @Test
    public void onPause() {
    public void onPause_setAlwaysDiscoverableAsTrue_shouldUnregisterBluetoothChanged() {
        mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(true);
        mDiscoverableFooterPreferenceController.onResume();
        mDiscoverableFooterPreferenceController.onPause();

@@ -132,6 +136,25 @@ public class DiscoverableFooterPreferenceControllerTest {
        verify(mAlwaysDiscoverable).stop();
    }

    @Test
    public void onResume_setAlwaysDiscoverableAsFalse_shouldNotRegisterBluetoothChanged() {
        mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(false);
        mDiscoverableFooterPreferenceController.onResume();

        assertThat(getRegisteredBroadcastReceivers()).contains(mBluetoothChangedReceiver);
        verify(mAlwaysDiscoverable, never()).start();
    }

    @Test
    public void onPause_setAlwaysDiscoverableAsFalse_shouldNotUnregisterBluetoothChanged() {
        mDiscoverableFooterPreferenceController.setAlwaysDiscoverable(false);
        mDiscoverableFooterPreferenceController.onResume();
        mDiscoverableFooterPreferenceController.onPause();

        assertThat(getRegisteredBroadcastReceivers()).doesNotContain(mBluetoothChangedReceiver);
        verify(mAlwaysDiscoverable, never()).stop();
    }

    @Test
    public void onBluetoothStateChanged_bluetoothOn_updateTitle() {
        ShadowLocalBluetoothAdapter.setName(DEVICE_NAME);