From 968c6531e8833c43c52d2ed5e17af28da74d9c7c Mon Sep 17 00:00:00 2001 From: Edgar Wang Date: Wed, 9 Jan 2019 19:56:42 +0800 Subject: [PATCH] Add feature provider for aware info. The feature provider contains API that query aware info. By default it's false. Test: make -j RunSettingsRoboTests Bug: 122574999 Change-Id: I7148258768a4dad1967fd0e0b23b79654e5a3d41 --- .../settings/aware/AwareFeatureProvider.java | 24 ++++++++++ .../aware/AwareFeatureProviderImpl.java | 26 +++++++++++ .../settings/overlay/FeatureFactory.java | 3 ++ .../settings/overlay/FeatureFactoryImpl.java | 11 +++++ .../aware/AwareFeatureProviderImplTest.java | 46 +++++++++++++++++++ .../testutils/FakeFeatureFactory.java | 8 ++++ 6 files changed, 118 insertions(+) create mode 100644 src/com/android/settings/aware/AwareFeatureProvider.java create mode 100644 src/com/android/settings/aware/AwareFeatureProviderImpl.java create mode 100644 tests/robotests/src/com/android/settings/aware/AwareFeatureProviderImplTest.java diff --git a/src/com/android/settings/aware/AwareFeatureProvider.java b/src/com/android/settings/aware/AwareFeatureProvider.java new file mode 100644 index 00000000000..a4db95752e0 --- /dev/null +++ b/src/com/android/settings/aware/AwareFeatureProvider.java @@ -0,0 +1,24 @@ +/* + * Copyright (C) 2019 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.aware; + +import android.content.Context; + +public interface AwareFeatureProvider { + /** Returns true if the aware sensor is supported. */ + boolean isSupported(Context context); +} diff --git a/src/com/android/settings/aware/AwareFeatureProviderImpl.java b/src/com/android/settings/aware/AwareFeatureProviderImpl.java new file mode 100644 index 00000000000..af40634bd17 --- /dev/null +++ b/src/com/android/settings/aware/AwareFeatureProviderImpl.java @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2019 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.aware; + +import android.content.Context; + +public class AwareFeatureProviderImpl implements AwareFeatureProvider { + @Override + public boolean isSupported(Context context) { + return false; + } +} diff --git a/src/com/android/settings/overlay/FeatureFactory.java b/src/com/android/settings/overlay/FeatureFactory.java index 1d12c959180..23136a423cd 100644 --- a/src/com/android/settings/overlay/FeatureFactory.java +++ b/src/com/android/settings/overlay/FeatureFactory.java @@ -23,6 +23,7 @@ import android.util.Log; import com.android.settings.R; import com.android.settings.accounts.AccountFeatureProvider; import com.android.settings.applications.ApplicationFeatureProvider; +import com.android.settings.aware.AwareFeatureProvider; import com.android.settings.bluetooth.BluetoothFeatureProvider; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; @@ -114,6 +115,8 @@ public abstract class FeatureFactory { public abstract BluetoothFeatureProvider getBluetoothFeatureProvider(Context context); + public abstract AwareFeatureProvider getAwareFeatureProvider(); + public static final class FactoryNotFoundException extends RuntimeException { public FactoryNotFoundException(Throwable throwable) { super("Unable to create factory. Did you misconfigure Proguard?", throwable); diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.java b/src/com/android/settings/overlay/FeatureFactoryImpl.java index ff40158814b..2f9626d8d34 100644 --- a/src/com/android/settings/overlay/FeatureFactoryImpl.java +++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java @@ -28,6 +28,8 @@ import com.android.settings.accounts.AccountFeatureProvider; import com.android.settings.accounts.AccountFeatureProviderImpl; import com.android.settings.applications.ApplicationFeatureProvider; import com.android.settings.applications.ApplicationFeatureProviderImpl; +import com.android.settings.aware.AwareFeatureProvider; +import com.android.settings.aware.AwareFeatureProviderImpl; import com.android.settings.bluetooth.BluetoothFeatureProvider; import com.android.settings.bluetooth.BluetoothFeatureProviderImpl; import com.android.settings.connecteddevice.dock.DockUpdaterFeatureProviderImpl; @@ -81,6 +83,7 @@ public class FeatureFactoryImpl extends FeatureFactory { private PanelFeatureProvider mPanelFeatureProvider; private ContextualCardFeatureProvider mContextualCardFeatureProvider; private BluetoothFeatureProvider mBluetoothFeatureProvider; + private AwareFeatureProvider mAwareFeatureProvider; @Override public SupportFeatureProvider getSupportFeatureProvider(Context context) { @@ -244,4 +247,12 @@ public class FeatureFactoryImpl extends FeatureFactory { } return mBluetoothFeatureProvider; } + + @Override + public AwareFeatureProvider getAwareFeatureProvider() { + if (mAwareFeatureProvider == null) { + mAwareFeatureProvider = new AwareFeatureProviderImpl(); + } + return mAwareFeatureProvider; + } } diff --git a/tests/robotests/src/com/android/settings/aware/AwareFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/aware/AwareFeatureProviderImplTest.java new file mode 100644 index 00000000000..570f326e5b8 --- /dev/null +++ b/tests/robotests/src/com/android/settings/aware/AwareFeatureProviderImplTest.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2019 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.aware; + +import static com.google.common.truth.Truth.assertThat; + +import android.content.Context; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.MockitoAnnotations; +import org.robolectric.RobolectricTestRunner; +import org.robolectric.RuntimeEnvironment; + +@RunWith(RobolectricTestRunner.class) +public class AwareFeatureProviderImplTest { + private Context mContext; + private AwareFeatureProviderImpl mImpl; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + mContext = RuntimeEnvironment.application; + mImpl = new AwareFeatureProviderImpl(); + } + + @Test + public void isSupported_shouldReturnFalse() { + assertThat(mImpl.isSupported(mContext)).isFalse(); + } +} diff --git a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java index 41935fe434f..2a12680d979 100644 --- a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java +++ b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java @@ -23,6 +23,7 @@ import android.content.Context; import com.android.settings.accounts.AccountFeatureProvider; import com.android.settings.applications.ApplicationFeatureProvider; +import com.android.settings.aware.AwareFeatureProvider; import com.android.settings.bluetooth.BluetoothFeatureProvider; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; @@ -66,6 +67,7 @@ public class FakeFeatureFactory extends FeatureFactory { public final AccountFeatureProvider mAccountFeatureProvider; public final ContextualCardFeatureProvider mContextualCardFeatureProvider; public final BluetoothFeatureProvider mBluetoothFeatureProvider; + public final AwareFeatureProvider mAwareFeatureProvider; public PanelFeatureProvider panelFeatureProvider; public SlicesFeatureProvider slicesFeatureProvider; @@ -111,6 +113,7 @@ public class FakeFeatureFactory extends FeatureFactory { mContextualCardFeatureProvider = mock(ContextualCardFeatureProvider.class); panelFeatureProvider = mock(PanelFeatureProvider.class); mBluetoothFeatureProvider = mock(BluetoothFeatureProvider.class); + mAwareFeatureProvider = mock(AwareFeatureProvider.class); } @Override @@ -207,4 +210,9 @@ public class FakeFeatureFactory extends FeatureFactory { public BluetoothFeatureProvider getBluetoothFeatureProvider(Context context) { return mBluetoothFeatureProvider; } + + @Override + public AwareFeatureProvider getAwareFeatureProvider() { + return mAwareFeatureProvider; + } }