From b8709ca0e2dd0aacd52240237831b37841f0ddd1 Mon Sep 17 00:00:00 2001 From: Mariano Giardina Date: Tue, 6 Mar 2018 11:02:31 +0000 Subject: [PATCH] Revert "Disable bluetooth controller if unsupported" This reverts commit 726f115660fdd19a546b51b4a6e52d51d105ea43. Reason for revert: broke git_master https://android-build.googleplex.com/builds/submitted/4635329/sailfish-userdebug_fastbuild3_linux/latest/view/logs/build_error.log Change-Id: Icefa78f0a79f7ff0af373f3f0cd35d200cd4fec8 --- .../BluetoothFilesPreferenceController.java | 12 +- .../bluetooth/BluetoothPairingDetail.java | 11 +- .../ConnectedDeviceGroupController.java | 29 ++--- .../SavedDeviceGroupController.java | 26 ++-- ...luetoothFilesPreferenceControllerTest.java | 12 +- .../ConnectedDeviceGroupControllerTest.java | 17 +-- .../SavedDeviceGroupControllerTest.java | 116 ------------------ 7 files changed, 30 insertions(+), 193 deletions(-) delete mode 100644 tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java diff --git a/src/com/android/settings/bluetooth/BluetoothFilesPreferenceController.java b/src/com/android/settings/bluetooth/BluetoothFilesPreferenceController.java index 6fbb84a45ce..1ecfed42515 100644 --- a/src/com/android/settings/bluetooth/BluetoothFilesPreferenceController.java +++ b/src/com/android/settings/bluetooth/BluetoothFilesPreferenceController.java @@ -16,14 +16,12 @@ package com.android.settings.bluetooth; -import android.content.pm.PackageManager; import android.content.Context; import android.content.Intent; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import com.android.internal.logging.nano.MetricsProto; -import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.overlay.FeatureFactory; import com.android.settingslib.core.AbstractPreferenceController; @@ -32,7 +30,7 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider; /** * Controller that shows received files */ -public class BluetoothFilesPreferenceController extends BasePreferenceController +public class BluetoothFilesPreferenceController extends AbstractPreferenceController implements PreferenceControllerMixin { private static final String TAG = "BluetoothFilesPrefCtrl"; @@ -49,15 +47,13 @@ public class BluetoothFilesPreferenceController extends BasePreferenceController private MetricsFeatureProvider mMetricsFeatureProvider; public BluetoothFilesPreferenceController(Context context) { - super(context, KEY_RECEIVED_FILES); + super(context); mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider(); } @Override - public int getAvailabilityStatus() { - return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH) - ? AVAILABLE - : DISABLED_UNSUPPORTED; + public boolean isAvailable() { + return true; } @Override diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDetail.java b/src/com/android/settings/bluetooth/BluetoothPairingDetail.java index 1a64f262684..0e556c43d7a 100644 --- a/src/com/android/settings/bluetooth/BluetoothPairingDetail.java +++ b/src/com/android/settings/bluetooth/BluetoothPairingDetail.java @@ -23,7 +23,6 @@ import android.bluetooth.BluetoothDevice; import android.content.Context; import android.os.Bundle; import android.support.annotation.VisibleForTesting; -import android.util.Log; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; @@ -72,10 +71,7 @@ public class BluetoothPairingDetail extends DeviceListPreferenceFragment impleme @Override public void onStart() { super.onStart(); - if (mLocalManager == null){ - Log.e(TAG, "Bluetooth is not supported on this device"); - return; - } + updateBluetooth(); mAvailableDevicesCategory.setProgress(mLocalAdapter.isDiscovering()); } @@ -93,10 +89,7 @@ public class BluetoothPairingDetail extends DeviceListPreferenceFragment impleme @Override public void onStop() { super.onStop(); - if (mLocalManager == null){ - Log.e(TAG, "Bluetooth is not supported on this device"); - return; - } + // Make the device only visible to connected devices. mAlwaysDiscoverable.stop(); disableScanning(); diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java b/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java index c77a7358d60..3d5d0e58e8f 100644 --- a/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java +++ b/src/com/android/settings/connecteddevice/ConnectedDeviceGroupController.java @@ -15,18 +15,15 @@ */ package com.android.settings.connecteddevice; -import android.content.pm.PackageManager; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceScreen; import com.android.settings.connecteddevice.usb.ConnectedUsbDeviceUpdater; -import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.bluetooth.BluetoothDeviceUpdater; import com.android.settings.bluetooth.ConnectedBluetoothDeviceUpdater; -import com.android.settings.search.ResultPayload; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; @@ -38,7 +35,7 @@ import com.android.settingslib.core.lifecycle.events.OnStop; * Controller to maintain the {@link android.support.v7.preference.PreferenceGroup} for all * connected devices. It uses {@link DevicePreferenceCallback} to add/remove {@link Preference} */ -public class ConnectedDeviceGroupController extends BasePreferenceController +public class ConnectedDeviceGroupController extends AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver, OnStart, OnStop, DevicePreferenceCallback { @@ -50,7 +47,7 @@ public class ConnectedDeviceGroupController extends BasePreferenceController private ConnectedUsbDeviceUpdater mConnectedUsbDeviceUpdater; public ConnectedDeviceGroupController(DashboardFragment fragment, Lifecycle lifecycle) { - super(fragment.getContext(), KEY); + super(fragment.getContext()); init(lifecycle, new ConnectedBluetoothDeviceUpdater(fragment, this), new ConnectedUsbDeviceUpdater(fragment, this)); } @@ -59,7 +56,7 @@ public class ConnectedDeviceGroupController extends BasePreferenceController ConnectedDeviceGroupController(DashboardFragment fragment, Lifecycle lifecycle, BluetoothDeviceUpdater bluetoothDeviceUpdater, ConnectedUsbDeviceUpdater connectedUsbDeviceUpdater) { - super(fragment.getContext(), KEY); + super(fragment.getContext()); init(lifecycle, bluetoothDeviceUpdater, connectedUsbDeviceUpdater); } @@ -78,21 +75,17 @@ public class ConnectedDeviceGroupController extends BasePreferenceController @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); - if (isAvailable()) { - mPreferenceGroup = (PreferenceGroup) screen.findPreference(KEY); - mPreferenceGroup.setVisible(false); + mPreferenceGroup = (PreferenceGroup) screen.findPreference(KEY); + mPreferenceGroup.setVisible(false); - mBluetoothDeviceUpdater.setPrefContext(screen.getContext()); - mBluetoothDeviceUpdater.forceUpdate(); - mConnectedUsbDeviceUpdater.initUsbPreference(screen.getContext()); - } + mBluetoothDeviceUpdater.setPrefContext(screen.getContext()); + mBluetoothDeviceUpdater.forceUpdate(); + mConnectedUsbDeviceUpdater.initUsbPreference(screen.getContext()); } @Override - public int getAvailabilityStatus() { - return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH) - ? AVAILABLE - : DISABLED_UNSUPPORTED; + public boolean isAvailable() { + return true; } @Override @@ -118,7 +111,7 @@ public class ConnectedDeviceGroupController extends BasePreferenceController private void init(Lifecycle lifecycle, BluetoothDeviceUpdater bluetoothDeviceUpdater, ConnectedUsbDeviceUpdater connectedUsbDeviceUpdater) { - if (lifecycle != null && isAvailable()) { + if (lifecycle != null) { lifecycle.addObserver(this); } mBluetoothDeviceUpdater = bluetoothDeviceUpdater; diff --git a/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java b/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java index da38d9fddbc..74450477dd5 100644 --- a/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java +++ b/src/com/android/settings/connecteddevice/SavedDeviceGroupController.java @@ -15,7 +15,6 @@ */ package com.android.settings.connecteddevice; -import android.content.pm.PackageManager; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; @@ -23,7 +22,6 @@ import android.support.v7.preference.PreferenceScreen; import com.android.settings.bluetooth.BluetoothDeviceUpdater; import com.android.settings.bluetooth.SavedBluetoothDeviceUpdater; -import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.dashboard.DashboardFragment; import com.android.settingslib.core.AbstractPreferenceController; @@ -36,7 +34,7 @@ import com.android.settingslib.core.lifecycle.events.OnStop; * Controller to maintain the {@link PreferenceGroup} for all * saved devices. It uses {@link DevicePreferenceCallback} to add/remove {@link Preference} */ -public class SavedDeviceGroupController extends BasePreferenceController +public class SavedDeviceGroupController extends AbstractPreferenceController implements PreferenceControllerMixin, LifecycleObserver, OnStart, OnStop, DevicePreferenceCallback { @@ -47,14 +45,14 @@ public class SavedDeviceGroupController extends BasePreferenceController private BluetoothDeviceUpdater mBluetoothDeviceUpdater; public SavedDeviceGroupController(DashboardFragment fragment, Lifecycle lifecycle) { - super(fragment.getContext(), KEY); + super(fragment.getContext()); init(lifecycle, new SavedBluetoothDeviceUpdater(fragment, SavedDeviceGroupController.this)); } @VisibleForTesting SavedDeviceGroupController(DashboardFragment fragment, Lifecycle lifecycle, BluetoothDeviceUpdater bluetoothDeviceUpdater) { - super(fragment.getContext(), KEY); + super(fragment.getContext()); init(lifecycle, bluetoothDeviceUpdater); } @@ -70,19 +68,15 @@ public class SavedDeviceGroupController extends BasePreferenceController @Override public void displayPreference(PreferenceScreen screen) { - if (isAvailable()) { - mPreferenceGroup = (PreferenceGroup) screen.findPreference(KEY); - mPreferenceGroup.setVisible(false); - mBluetoothDeviceUpdater.setPrefContext(screen.getContext()); - mBluetoothDeviceUpdater.forceUpdate(); - } + mPreferenceGroup = (PreferenceGroup) screen.findPreference(KEY); + mPreferenceGroup.setVisible(false); + mBluetoothDeviceUpdater.setPrefContext(screen.getContext()); + mBluetoothDeviceUpdater.forceUpdate(); } @Override - public int getAvailabilityStatus() { - return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH) - ? AVAILABLE - : DISABLED_UNSUPPORTED; + public boolean isAvailable() { + return true; } @Override @@ -107,7 +101,7 @@ public class SavedDeviceGroupController extends BasePreferenceController } private void init(Lifecycle lifecycle, BluetoothDeviceUpdater bluetoothDeviceUpdater) { - if (lifecycle != null && isAvailable()) { + if (lifecycle != null) { lifecycle.addObserver(this); } mBluetoothDeviceUpdater = bluetoothDeviceUpdater; diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothFilesPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothFilesPreferenceControllerTest.java index 11688ba4f2a..cdaf87637ce 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothFilesPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothFilesPreferenceControllerTest.java @@ -18,10 +18,6 @@ package com.android.settings.bluetooth; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; - -import android.content.pm.PackageManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; @@ -33,7 +29,6 @@ import com.android.settings.TestConfig; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @@ -45,18 +40,15 @@ public class BluetoothFilesPreferenceControllerTest { private Context mContext; private BluetoothFilesPreferenceController mController; private Preference mPreference; - @Mock - private PackageManager mPackageManager; @Before public void setUp() { MockitoAnnotations.initMocks(this); - mContext = spy(RuntimeEnvironment.application); + + mContext = RuntimeEnvironment.application; mController = new BluetoothFilesPreferenceController(mContext); mPreference = new Preference(mContext); mPreference.setKey(BluetoothFilesPreferenceController.KEY_RECEIVED_FILES); - doReturn(mPackageManager).when(mContext).getPackageManager(); - doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH); } @Test diff --git a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java index 1fd03da4c23..b478c4ed960 100644 --- a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java +++ b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceGroupControllerTest.java @@ -15,8 +15,6 @@ */ package com.android.settings.connecteddevice; -import static com.android.settings.core.BasePreferenceController.DISABLED_UNSUPPORTED; - import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.anyString; @@ -26,7 +24,6 @@ import static org.mockito.Mockito.verify; import android.arch.lifecycle.LifecycleOwner; import android.content.Context; -import android.content.pm.PackageManager; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceManager; @@ -63,8 +60,6 @@ public class ConnectedDeviceGroupControllerTest { private PreferenceScreen mPreferenceScreen; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private PreferenceManager mPreferenceManager; - @Mock - private PackageManager mPackageManager; private PreferenceGroup mPreferenceGroup; private Context mContext; @@ -77,7 +72,7 @@ public class ConnectedDeviceGroupControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); - mContext = spy(RuntimeEnvironment.application); + mContext = RuntimeEnvironment.application; mPreference = new Preference(mContext); mPreference.setKey(PREFERENCE_KEY_1); mLifecycleOwner = () -> mLifecycle; @@ -85,8 +80,6 @@ public class ConnectedDeviceGroupControllerTest { mPreferenceGroup = spy(new PreferenceScreen(mContext, null)); doReturn(mPreferenceManager).when(mPreferenceGroup).getPreferenceManager(); doReturn(mContext).when(mDashboardFragment).getContext(); - doReturn(mPackageManager).when(mContext).getPackageManager(); - doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH); mConnectedDeviceGroupController = new ConnectedDeviceGroupController(mDashboardFragment, mLifecycle, mConnectedBluetoothDeviceUpdater, mConnectedUsbDeviceUpdater); @@ -143,12 +136,4 @@ public class ConnectedDeviceGroupControllerTest { verify(mConnectedBluetoothDeviceUpdater).unregisterCallback(); verify(mConnectedUsbDeviceUpdater).unregisterCallback(); } - - @Test - public void testGetAvailabilityStatus_noBluetoothFeature_returnUnSupported() { - doReturn(false).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH); - - assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo( - DISABLED_UNSUPPORTED); - } } diff --git a/tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java deleted file mode 100644 index 723b304c565..00000000000 --- a/tests/robotests/src/com/android/settings/connecteddevice/SavedDeviceGroupControllerTest.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright (C) 2018 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 android.arch.lifecycle.Lifecycle.Event.ON_START; - -import static com.android.settings.core.BasePreferenceController.AVAILABLE; -import static com.android.settings.core.BasePreferenceController.DISABLED_UNSUPPORTED; - -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 android.arch.lifecycle.LifecycleOwner; -import android.content.Context; -import android.content.pm.PackageManager; -import android.support.v7.preference.Preference; -import android.support.v7.preference.PreferenceGroup; -import android.support.v7.preference.PreferenceManager; -import android.support.v7.preference.PreferenceScreen; - -import com.android.settings.TestConfig; -import com.android.settings.bluetooth.BluetoothDeviceUpdater; -import com.android.settings.dashboard.DashboardFragment; -import com.android.settings.testutils.SettingsRobolectricTestRunner; -import com.android.settingslib.core.lifecycle.Lifecycle; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Answers; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.Config; - -@RunWith(SettingsRobolectricTestRunner.class) -@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) -public class SavedDeviceGroupControllerTest { - private static final String PREFERENCE_KEY_1 = "pref_key_1"; - - @Mock - private DashboardFragment mDashboardFragment; - @Mock - private BluetoothDeviceUpdater mBluetoothDeviceUpdater; - @Mock - private PreferenceScreen mPreferenceScreen; - @Mock(answer = Answers.RETURNS_DEEP_STUBS) - private PreferenceManager mPreferenceManager; - @Mock - private PackageManager mPackageManager; - - private PreferenceGroup mPreferenceGroup; - private Context mContext; - private Preference mPreference; - private SavedDeviceGroupController mConnectedDeviceGroupController; - private LifecycleOwner mLifecycleOwner; - private Lifecycle mLifecycle; - - @Before - public void setUp() { - MockitoAnnotations.initMocks(this); - - mContext = spy(RuntimeEnvironment.application); - mLifecycleOwner = () -> mLifecycle; - mLifecycle = new Lifecycle(mLifecycleOwner); - - doReturn(mContext).when(mDashboardFragment).getContext(); - doReturn(mPackageManager).when(mContext).getPackageManager(); - } - - @Test - public void constructor_noBluetoothFeature_shouldNotRegisterCallback() { - doReturn(false).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH); - - mConnectedDeviceGroupController = new SavedDeviceGroupController(mDashboardFragment, - mLifecycle, mBluetoothDeviceUpdater); - - assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo( - DISABLED_UNSUPPORTED); - - mLifecycle.handleLifecycleEvent(ON_START); - verify(mBluetoothDeviceUpdater, never()).registerCallback(); - } - - - @Test - public void constructor_hasBluetoothFeature_shouldRegisterCallback() { - doReturn(true).when(mPackageManager).hasSystemFeature(PackageManager.FEATURE_BLUETOOTH); - - mConnectedDeviceGroupController = new SavedDeviceGroupController(mDashboardFragment, - mLifecycle, mBluetoothDeviceUpdater); - - assertThat(mConnectedDeviceGroupController.getAvailabilityStatus()).isEqualTo( - AVAILABLE); - - mLifecycle.handleLifecycleEvent(ON_START); - verify(mBluetoothDeviceUpdater).registerCallback(); - } -}