Display "see all" option when bluetooth is off

- This CL before, Bluetooth settings will hide the "see all"
  option when bluetooth is off. For the UX improvement, this
  CL will show the "see all" button when bluetooth is off. And
  turn on the BT when user press "see all" button to let user to
  quick pair their disconnected devices.
- Update and add test case

Bug: 147150367
Test: make -j42 RunSettingsRoboTests
Change-Id: I7a1451a36a31253b6be2203341bea4e59fed7c2b
Merged-In: I7a1451a36a31253b6be2203341bea4e59fed7c2b
(cherry picked from commit bde100849e)
This commit is contained in:
Hugh Chen
2020-08-05 16:58:41 +08:00
parent 2237c26d0a
commit 30a97a9cc5
5 changed files with 153 additions and 9 deletions

View File

@@ -0,0 +1,57 @@
/*
* Copyright 2020 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settings.connecteddevice;
import static com.google.common.truth.Truth.assertThat;
import android.bluetooth.BluetoothAdapter;
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = ShadowBluetoothAdapter.class)
public class PreviouslyConnectedDeviceDashboardFragmentTest {
private ShadowBluetoothAdapter mShadowBluetoothAdapter;
private PreviouslyConnectedDeviceDashboardFragment mFragment;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
mFragment = new PreviouslyConnectedDeviceDashboardFragment();
mFragment.mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
}
@Test
public void onStart_bluetoothIsDisable_enableBluetooth() {
mShadowBluetoothAdapter.setEnabled(false);
assertThat(mFragment.mBluetoothAdapter.isEnabled()).isFalse();
mFragment.enableBluetoothIfNecessary();
assertThat(mFragment.mBluetoothAdapter.isEnabled()).isTrue();
}
}

View File

@@ -24,6 +24,7 @@ import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -32,9 +33,11 @@ import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceManager;
import com.android.settings.R;
import com.android.settings.bluetooth.BluetoothDeviceUpdater;
import com.android.settings.connecteddevice.dock.DockUpdater;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.testutils.shadow.ShadowBluetoothAdapter;
import org.junit.Before;
import org.junit.Test;
@@ -43,8 +46,11 @@ import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = ShadowBluetoothAdapter.class)
public class PreviouslyConnectedDevicePreferenceControllerTest {
private final String KEY = "test_key";
@@ -59,10 +65,13 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
private PackageManager mPackageManager;
@Mock
private PreferenceManager mPreferenceManager;
@Mock
private Preference mSeeAllPreference;
private Context mContext;
private PreviouslyConnectedDevicePreferenceController mPreConnectedDeviceController;
private PreferenceGroup mPreferenceGroup;
private ShadowBluetoothAdapter mShadowBluetoothAdapter;
@Before
public void setUp() {
@@ -74,11 +83,13 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
new PreviouslyConnectedDevicePreferenceController(mContext, KEY);
mPreConnectedDeviceController.setBluetoothDeviceUpdater(mBluetoothDeviceUpdater);
mPreConnectedDeviceController.setSavedDockUpdater(mDockUpdater);
mShadowBluetoothAdapter = Shadow.extract(BluetoothAdapter.getDefaultAdapter());
mPreferenceGroup = spy(new PreferenceCategory(mContext));
doReturn(mPreferenceManager).when(mPreferenceGroup).getPreferenceManager();
mPreferenceGroup.setVisible(false);
mPreConnectedDeviceController.setPreferenceGroup(mPreferenceGroup);
mPreConnectedDeviceController.mSeeAllPreference = mSeeAllPreference;
}
@Test
@@ -87,11 +98,14 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
mPreConnectedDeviceController.onStart();
verify(mBluetoothDeviceUpdater).registerCallback();
verify(mDockUpdater).registerCallback();
verify(mContext).registerReceiver(mPreConnectedDeviceController.mReceiver,
mPreConnectedDeviceController.mIntentFilter);
// unregister the callback in onStop()
mPreConnectedDeviceController.onStop();
verify(mBluetoothDeviceUpdater).unregisterCallback();
verify(mDockUpdater).unregisterCallback();
verify(mContext).unregisterReceiver(mPreConnectedDeviceController.mReceiver);
}
@Test
@@ -124,7 +138,6 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
public void onDeviceAdded_addDevicePreference_displayIt() {
mPreConnectedDeviceController.onDeviceAdded(new Preference(mContext));
assertThat(mPreferenceGroup.isVisible()).isTrue();
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
}
@@ -135,7 +148,6 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
mPreConnectedDeviceController.onDeviceAdded(new Preference(mContext));
mPreConnectedDeviceController.onDeviceAdded(new Preference(mContext));
assertThat(mPreferenceGroup.isVisible()).isTrue();
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
}
@@ -143,11 +155,26 @@ public class PreviouslyConnectedDevicePreferenceControllerTest {
public void onDeviceRemoved_removeLastDevice_setInvisible() {
final Preference preference = new Preference(mContext);
mPreferenceGroup.addPreference(preference);
mPreferenceGroup.setVisible(true);
mPreConnectedDeviceController.onDeviceRemoved(preference);
assertThat(mPreferenceGroup.isVisible()).isFalse();
assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
}
@Test
public void updatePreferenceVisibility_bluetoothIsEnable_shouldShowCorrectText() {
mShadowBluetoothAdapter.setEnabled(true);
mPreConnectedDeviceController.updatePreferenceVisibility();
verify(mSeeAllPreference).setSummary("");
}
@Test
public void updatePreferenceVisibility_bluetoothIsDisable_shouldShowCorrectText() {
mShadowBluetoothAdapter.setEnabled(false);
mPreConnectedDeviceController.updatePreferenceVisibility();
verify(mSeeAllPreference).setSummary(
mContext.getString(R.string.connected_device_see_all_summary));
}
}