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

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

Merge "RESTRICT AUTOMERGE Make bluetooth not discoverable via...

Merge "RESTRICT AUTOMERGE Make bluetooth not discoverable via SliceDeepLinkTrampoline" into sc-v2-dev
parents 12a30b95 8bae2224
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
    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);
    private static final String SLICE_ACTION = "com.android.settings.SEARCH_RESULT_TRAMPOLINE";

    @VisibleForTesting
    static final String KEY_CONNECTED_DEVICES = "connected_device_list";
@@ -72,8 +73,10 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
                SettingsUIDeviceConfig.BT_NEAR_BY_SUGGESTION_ENABLED, true);
        String callingAppPackageName = PasswordUtils.getCallingAppPackageName(
                getActivity().getActivityToken());
        String action = getIntent() != null ? getIntent().getAction() : "";
        if (DEBUG) {
            Log.d(TAG, "onAttach() calling package name is : " + callingAppPackageName);
            Log.d(TAG, "onAttach() calling package name is : " + callingAppPackageName
                    + ", action : " + action);
        }
        use(AvailableMediaDeviceGroupController.class).init(this);
        use(ConnectedDeviceGroupController.class).init(this);
@@ -81,9 +84,15 @@ public class ConnectedDeviceDashboardFragment extends DashboardFragment {
        use(SlicePreferenceController.class).setSliceUri(nearbyEnabled
                ? Uri.parse(getString(R.string.config_nearby_devices_slice_uri))
                : null);
        use(DiscoverableFooterPreferenceController.class).setAlwaysDiscoverable(
                TextUtils.equals(SETTINGS_PACKAGE_NAME, callingAppPackageName)
                        || TextUtils.equals(SYSTEMUI_PACKAGE_NAME, callingAppPackageName));
        use(DiscoverableFooterPreferenceController.class)
                .setAlwaysDiscoverable(isAlwaysDiscoverable(callingAppPackageName, action));
    }

    @VisibleForTesting
    boolean isAlwaysDiscoverable(String callingAppPackageName, String action) {
        return TextUtils.equals(SLICE_ACTION, action) ? false
                : TextUtils.equals(SETTINGS_PACKAGE_NAME, callingAppPackageName)
                || TextUtils.equals(SYSTEMUI_PACKAGE_NAME, callingAppPackageName);
    }

    /**
+28 −0
Original line number Diff line number Diff line
@@ -54,16 +54,24 @@ public class ConnectedDeviceDashboardFragmentTest {
    private static final String KEY_DISCOVERABLE_FOOTER = "discoverable_footer";
    private static final String KEY_SEE_ALL = "previously_connected_devices_see_all";
    private static final String KEY_ADD_BT_DEVICES = "add_bt_devices";
    private static final String SETTINGS_PACKAGE_NAME = "com.android.settings";
    private static final String SYSTEMUI_PACKAGE_NAME = "com.android.systemui";
    private static final String SLICE_ACTION = "com.android.settings.SEARCH_RESULT_TRAMPOLINE";
    private static final String TEST_APP_NAME = "com.testapp.settings";
    private static final String TEST_ACTION = "com.testapp.settings.ACTION_START";


    @Mock
    private PackageManager mPackageManager;
    private Context mContext;
    private ConnectedDeviceDashboardFragment mFragment;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);

        mContext = spy(RuntimeEnvironment.application);
        mFragment = new ConnectedDeviceDashboardFragment();
        doReturn(mPackageManager).when(mContext).getPackageManager();
        doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);
    }
@@ -87,6 +95,26 @@ public class ConnectedDeviceDashboardFragmentTest {
                KEY_NEARBY_DEVICES, KEY_DISCOVERABLE_FOOTER, KEY_SEE_ALL);
    }

    @Test
    public void isAlwaysDiscoverable_callingAppIsNotFromSystemApp_returnsFalse() {
        assertThat(mFragment.isAlwaysDiscoverable(TEST_APP_NAME, TEST_ACTION)).isFalse();
    }

    @Test
    public void isAlwaysDiscoverable_callingAppIsFromSettings_returnsTrue() {
        assertThat(mFragment.isAlwaysDiscoverable(SETTINGS_PACKAGE_NAME, TEST_ACTION)).isTrue();
    }

    @Test
    public void isAlwaysDiscoverable_callingAppIsFromSystemUI_returnsTrue() {
        assertThat(mFragment.isAlwaysDiscoverable(SYSTEMUI_PACKAGE_NAME, TEST_ACTION)).isTrue();
    }

    @Test
    public void isAlwaysDiscoverable_actionIsFromSlice_returnsFalse() {
        assertThat(mFragment.isAlwaysDiscoverable(SYSTEMUI_PACKAGE_NAME, SLICE_ACTION)).isFalse();
    }

    @Test
    public void getPreferenceControllers_containSlicePrefController() {
        final List<BasePreferenceController> controllers =