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 0000000..19ee732
--- /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 0000000..7cd2d50
--- /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 0000000..2a968e0
--- /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 110d204..72bac99 100644
--- a/src/com/android/settings/overlay/FeatureFactory.java
+++ b/src/com/android/settings/overlay/FeatureFactory.java
@@ -86,6 +86,8 @@
 
     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 f663b8f..89e1eb8 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.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 @@
     private ApplicationFeatureProvider mApplicationFeatureProvider;
     private MetricsFeatureProvider mMetricsFeatureProvider;
     private DashboardFeatureProviderImpl mDashboardFeatureProvider;
+    private DockUpdaterFeatureProvider mDockUpdaterFeatureProvider;
     private LocaleFeatureProvider mLocaleFeatureProvider;
     private EnterprisePrivacyFeatureProvider mEnterprisePrivacyFeatureProvider;
     private SearchFeatureProvider mSearchFeatureProvider;
@@ -106,6 +108,14 @@
     }
 
     @Override
+    public DockUpdaterFeatureProvider getDockUpdaterFeatureProvider() {
+        if (mDockUpdaterFeatureProvider == null) {
+            mDockUpdaterFeatureProvider = new DockUpdaterFeatureProviderImpl();
+        }
+        return mDockUpdaterFeatureProvider;
+    }
+
+    @Override
     public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
         if (mApplicationFeatureProvider == null) {
             mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(context,
diff --git a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
index 8945af9..6e607fe 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.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 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 @@
         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);
@@ -132,6 +135,11 @@
     }
 
     @Override
+    public DockUpdaterFeatureProvider getDockUpdaterFeatureProvider() {
+        return dockUpdaterFeatureProvider;
+    }
+
+    @Override
     public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
         return applicationFeatureProvider;
     }
