diff --git a/src/com/android/settings/connecteddevice/dock/DockUpdater.java b/src/com/android/settings/connecteddevice/dock/DockUpdater.java new file mode 100644 index 00000000000..19ee7324179 --- /dev/null +++ b/src/com/android/settings/connecteddevice/dock/DockUpdater.java @@ -0,0 +1,43 @@ +/* + * 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.dock; + +import android.content.Context; + +/** + * Update the dock devices. It notifies the upper level whether to add/remove the preference + * through {@link DevicePreferenceCallback} + */ +public interface DockUpdater { + + /** + * Register the dock event callback and update the list + */ + default void registerCallback() { + } + + /** + * Unregister the dock event callback + */ + default void unregisterCallback() { + } + + /** + * Force to update the list of dock devices + */ + default void forceUpdate() { + } +} diff --git a/src/com/android/settings/connecteddevice/dock/DockUpdaterFeatureProviderImpl.java b/src/com/android/settings/connecteddevice/dock/DockUpdaterFeatureProviderImpl.java new file mode 100644 index 00000000000..7cd2d508519 --- /dev/null +++ b/src/com/android/settings/connecteddevice/dock/DockUpdaterFeatureProviderImpl.java @@ -0,0 +1,29 @@ +package com.android.settings.connecteddevice.dock; + +import android.content.Context; + +import com.android.settings.connecteddevice.DevicePreferenceCallback; +import com.android.settings.connecteddevice.dock.DockUpdater; +import com.android.settings.overlay.DockUpdaterFeatureProvider; + +/** + * Impl for {@link DockUpdaterFeatureProvider} + */ +public class DockUpdaterFeatureProviderImpl implements DockUpdaterFeatureProvider { + + @Override + public DockUpdater getConnectedDockUpdater(Context context, + DevicePreferenceCallback devicePreferenceCallback) { + final DockUpdater updater = new DockUpdater() { + }; + return updater; + } + + @Override + public DockUpdater getSavedDockUpdater(Context context, + DevicePreferenceCallback devicePreferenceCallback) { + final DockUpdater updater = new DockUpdater() { + }; + return updater; + } +} diff --git a/src/com/android/settings/overlay/DockUpdaterFeatureProvider.java b/src/com/android/settings/overlay/DockUpdaterFeatureProvider.java new file mode 100644 index 00000000000..2a968e0e826 --- /dev/null +++ b/src/com/android/settings/overlay/DockUpdaterFeatureProvider.java @@ -0,0 +1,35 @@ +/* + * 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.overlay; + +import android.content.Context; + +import com.android.settings.connecteddevice.DevicePreferenceCallback; +import com.android.settings.connecteddevice.dock.DockUpdater; + +/** Feature provider for the dock updater. */ +public interface DockUpdaterFeatureProvider { + + /** Returns the DockUpdater of the connected dock device */ + DockUpdater getConnectedDockUpdater(Context context, + DevicePreferenceCallback devicePreferenceCallback); + + /** Returns the DockUpdater of the saved dock devices */ + DockUpdater getSavedDockUpdater(Context context, + DevicePreferenceCallback devicePreferenceCallback); + +} diff --git a/src/com/android/settings/overlay/FeatureFactory.java b/src/com/android/settings/overlay/FeatureFactory.java index 110d204ed93..72bac99cc95 100644 --- a/src/com/android/settings/overlay/FeatureFactory.java +++ b/src/com/android/settings/overlay/FeatureFactory.java @@ -86,6 +86,8 @@ public abstract class FeatureFactory { public abstract DashboardFeatureProvider getDashboardFeatureProvider(Context context); + public abstract DockUpdaterFeatureProvider getDockUpdaterFeatureProvider(); + public abstract ApplicationFeatureProvider getApplicationFeatureProvider(Context context); public abstract LocaleFeatureProvider getLocaleFeatureProvider(); diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.java b/src/com/android/settings/overlay/FeatureFactoryImpl.java index f663b8fda4b..89e1eb8eda4 100644 --- a/src/com/android/settings/overlay/FeatureFactoryImpl.java +++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java @@ -29,6 +29,7 @@ import com.android.settings.applications.ApplicationFeatureProvider; import com.android.settings.applications.ApplicationFeatureProviderImpl; import com.android.settings.bluetooth.BluetoothFeatureProvider; import com.android.settings.bluetooth.BluetoothFeatureProviderImpl; +import com.android.settings.connecteddevice.dock.DockUpdaterFeatureProviderImpl; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.dashboard.DashboardFeatureProviderImpl; import com.android.settings.dashboard.suggestions.SuggestionFeatureProvider; @@ -63,6 +64,7 @@ public class FeatureFactoryImpl extends FeatureFactory { private ApplicationFeatureProvider mApplicationFeatureProvider; private MetricsFeatureProvider mMetricsFeatureProvider; private DashboardFeatureProviderImpl mDashboardFeatureProvider; + private DockUpdaterFeatureProvider mDockUpdaterFeatureProvider; private LocaleFeatureProvider mLocaleFeatureProvider; private EnterprisePrivacyFeatureProvider mEnterprisePrivacyFeatureProvider; private SearchFeatureProvider mSearchFeatureProvider; @@ -105,6 +107,14 @@ public class FeatureFactoryImpl extends FeatureFactory { return mDashboardFeatureProvider; } + @Override + public DockUpdaterFeatureProvider getDockUpdaterFeatureProvider() { + if (mDockUpdaterFeatureProvider == null) { + mDockUpdaterFeatureProvider = new DockUpdaterFeatureProviderImpl(); + } + return mDockUpdaterFeatureProvider; + } + @Override public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) { if (mApplicationFeatureProvider == null) { diff --git a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java index 8945af924e7..6e607fe7521 100644 --- a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java +++ b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java @@ -30,6 +30,7 @@ import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider; import com.android.settings.fuelgauge.PowerUsageFeatureProvider; import com.android.settings.gestures.AssistGestureFeatureProvider; import com.android.settings.localepicker.LocaleFeatureProvider; +import com.android.settings.overlay.DockUpdaterFeatureProvider; import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.SupportFeatureProvider; import com.android.settings.overlay.SurveyFeatureProvider; @@ -52,6 +53,7 @@ public class FakeFeatureFactory extends FeatureFactory { public final MetricsFeatureProvider metricsFeatureProvider; public final PowerUsageFeatureProvider powerUsageFeatureProvider; public final DashboardFeatureProvider dashboardFeatureProvider; + public final DockUpdaterFeatureProvider dockUpdaterFeatureProvider; public final LocaleFeatureProvider localeFeatureProvider; public final ApplicationFeatureProvider applicationFeatureProvider; public final EnterprisePrivacyFeatureProvider enterprisePrivacyFeatureProvider; @@ -91,6 +93,7 @@ public class FakeFeatureFactory extends FeatureFactory { metricsFeatureProvider = mock(MetricsFeatureProvider.class); powerUsageFeatureProvider = mock(PowerUsageFeatureProvider.class); dashboardFeatureProvider = mock(DashboardFeatureProvider.class); + dockUpdaterFeatureProvider = mock(DockUpdaterFeatureProvider.class); localeFeatureProvider = mock(LocaleFeatureProvider.class); applicationFeatureProvider = mock(ApplicationFeatureProvider.class); enterprisePrivacyFeatureProvider = mock(EnterprisePrivacyFeatureProvider.class); @@ -131,6 +134,11 @@ public class FakeFeatureFactory extends FeatureFactory { return dashboardFeatureProvider; } + @Override + public DockUpdaterFeatureProvider getDockUpdaterFeatureProvider() { + return dockUpdaterFeatureProvider; + } + @Override public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) { return applicationFeatureProvider;