diff --git a/src/com/android/settings/datausage/DataPlanFeatureProvider.java b/src/com/android/settings/datausage/DataPlanFeatureProvider.java new file mode 100644 index 00000000000..eb5b48fc5a0 --- /dev/null +++ b/src/com/android/settings/datausage/DataPlanFeatureProvider.java @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2017 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.datausage; + +/** + * Feature provider for data plan feature. + */ +public interface DataPlanFeatureProvider { + /** + * @return whether data plan feature is enabled. + */ + boolean isEnabled(); +} diff --git a/src/com/android/settings/datausage/DataPlanFeatureProviderImpl.java b/src/com/android/settings/datausage/DataPlanFeatureProviderImpl.java new file mode 100644 index 00000000000..d5f435cce06 --- /dev/null +++ b/src/com/android/settings/datausage/DataPlanFeatureProviderImpl.java @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2017 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.datausage; + +import android.os.SystemProperties; + +/** + * Impl for data plan feature provider. + */ +public final class DataPlanFeatureProviderImpl implements DataPlanFeatureProvider { + private static final String ENABLE_SETTINGS_DATA_PLAN = "enable.settings.data.plan"; + + @Override + public boolean isEnabled() { + return SystemProperties.getBoolean(ENABLE_SETTINGS_DATA_PLAN, false /* default */); + } +} diff --git a/src/com/android/settings/overlay/FeatureFactory.java b/src/com/android/settings/overlay/FeatureFactory.java index 4c4621abb35..c426b582b74 100644 --- a/src/com/android/settings/overlay/FeatureFactory.java +++ b/src/com/android/settings/overlay/FeatureFactory.java @@ -26,6 +26,7 @@ import com.android.settings.bluetooth.BluetoothFeatureProvider; import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; +import com.android.settings.datausage.DataPlanFeatureProvider; import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider; import com.android.settings.fuelgauge.PowerUsageFeatureProvider; import com.android.settings.gestures.AssistGestureFeatureProvider; @@ -100,6 +101,8 @@ public abstract class FeatureFactory { public abstract BluetoothFeatureProvider getBluetoothFeatureProvider(Context context); + public abstract DataPlanFeatureProvider getDataPlanFeatureProvider(); + 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 d4ee912a5ee..38cd6353eeb 100644 --- a/src/com/android/settings/overlay/FeatureFactoryImpl.java +++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java @@ -34,6 +34,8 @@ import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.dashboard.DashboardFeatureProviderImpl; import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; import com.android.settings.dashboard.suggestions.SuggestionFeatureProviderImpl; +import com.android.settings.datausage.DataPlanFeatureProvider; +import com.android.settings.datausage.DataPlanFeatureProviderImpl; import com.android.settings.enterprise.DevicePolicyManagerWrapperImpl; import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider; import com.android.settings.enterprise.EnterprisePrivacyFeatureProviderImpl; @@ -69,6 +71,7 @@ public class FeatureFactoryImpl extends FeatureFactory { private AssistGestureFeatureProvider mAssistGestureFeatureProvider; private UserFeatureProvider mUserFeatureProvider; private BluetoothFeatureProvider mBluetoothFeatureProvider; + private DataPlanFeatureProvider mDataPlanFeatureProvider; @Override public SupportFeatureProvider getSupportFeatureProvider(Context context) { @@ -179,6 +182,14 @@ public class FeatureFactoryImpl extends FeatureFactory { return mBluetoothFeatureProvider; } + @Override + public DataPlanFeatureProvider getDataPlanFeatureProvider() { + if (mDataPlanFeatureProvider == null) { + mDataPlanFeatureProvider = new DataPlanFeatureProviderImpl(); + } + return mDataPlanFeatureProvider; + } + @Override public AssistGestureFeatureProvider getAssistGestureFeatureProvider() { if (mAssistGestureFeatureProvider == null) { diff --git a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java index 8be24965dbc..fe7ccbe8920 100644 --- a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java +++ b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java @@ -22,6 +22,7 @@ import com.android.settings.bluetooth.BluetoothFeatureProvider; import com.android.settings.core.instrumentation.MetricsFeatureProvider; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; +import com.android.settings.datausage.DataPlanFeatureProvider; import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider; import com.android.settings.fuelgauge.PowerUsageFeatureProvider; import com.android.settings.gestures.AssistGestureFeatureProvider; @@ -57,6 +58,7 @@ public class FakeFeatureFactory extends FeatureFactory { public final UserFeatureProvider userFeatureProvider; public final AssistGestureFeatureProvider assistGestureFeatureProvider; public final BluetoothFeatureProvider bluetoothFeatureProvider; + public final DataPlanFeatureProvider dataPlanFeatureProvider; /** * Call this in {@code @Before} method of the test class to use fake factory. @@ -94,6 +96,7 @@ public class FakeFeatureFactory extends FeatureFactory { userFeatureProvider = mock(UserFeatureProvider.class); assistGestureFeatureProvider = mock(AssistGestureFeatureProvider.class); bluetoothFeatureProvider = mock(BluetoothFeatureProvider.class); + dataPlanFeatureProvider = mock(DataPlanFeatureProvider.class); } @Override @@ -161,6 +164,11 @@ public class FakeFeatureFactory extends FeatureFactory { return bluetoothFeatureProvider; } + @Override + public DataPlanFeatureProvider getDataPlanFeatureProvider() { + return dataPlanFeatureProvider; + } + @Override public AssistGestureFeatureProvider getAssistGestureFeatureProvider() { return assistGestureFeatureProvider;