Merge "[PhysicalKeyboard] Update Setting Feature Provider for follow up usage" into main
diff --git a/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProvider.java b/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProvider.java
index 7255107..4233ce2 100644
--- a/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProvider.java
+++ b/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProvider.java
@@ -35,20 +35,21 @@
     boolean supportsFirmwareUpdate();
 
     /**
-     * Add firmware update preference category .
+     * Register firmware information preferences update on preference screen.
      *
-     * @param context The context to initialize the application with.
-     * @param screen  The {@link PreferenceScreen} to add the firmware update preference category.
-     *
-     * @return true if the category is added successfully.
+     * @param screen The {@link PreferenceScreen} to add the firmware information preferences.
      */
-    boolean addFirmwareUpdateCategory(Context context, PreferenceScreen screen);
+    void registerKeyboardInformationCategory(@Nullable PreferenceScreen screen);
+
+    /**
+     * Unregister firmware information preferences update on preference screen.
+     */
+    void unregisterKeyboardInformationCategory();
 
     /**
      * Get custom action key icon.
      *
      * @param context Context for accessing resources.
-     *
      * @return Returns the image of the icon, or null if there is no any custom icon.
      */
     @Nullable
diff --git a/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImpl.java b/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImpl.java
index 26b10e5..b6cc774 100644
--- a/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImpl.java
+++ b/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImpl.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 
+import androidx.annotation.Nullable;
 import androidx.preference.PreferenceScreen;
 
 /**
@@ -32,12 +33,13 @@
     }
 
     @Override
-    public boolean addFirmwareUpdateCategory(Context context, PreferenceScreen screen) {
-        return false;
-    }
+    public void registerKeyboardInformationCategory(@Nullable PreferenceScreen screen) {}
+
+    @Override
+    public void unregisterKeyboardInformationCategory() {}
 
     @Override
     public Drawable getActionKeyIcon(Context context) {
         return null;
-    };
+    }
 }
diff --git a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
index edc9989..910a1d6 100644
--- a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
+++ b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
@@ -164,7 +164,7 @@
         mFeatureProvider = featureFactory.getKeyboardSettingsFeatureProvider();
         mSupportsFirmwareUpdate = mFeatureProvider.supportsFirmwareUpdate();
         if (mSupportsFirmwareUpdate) {
-            mFeatureProvider.addFirmwareUpdateCategory(getContext(), getPreferenceScreen());
+            mFeatureProvider.registerKeyboardInformationCategory(getPreferenceScreen());
         }
         boolean isModifierKeySettingsEnabled = FeatureFlagUtils
                 .isEnabled(getContext(), FeatureFlagUtils.SETTINGS_NEW_KEYBOARD_MODIFIER_KEY);
@@ -344,7 +344,7 @@
         mKeyboardAssistanceCategory.setOrder(1);
         preferenceScreen.addPreference(mKeyboardAssistanceCategory);
         if (mSupportsFirmwareUpdate) {
-            mFeatureProvider.addFirmwareUpdateCategory(getPrefContext(), preferenceScreen);
+            mFeatureProvider.registerKeyboardInformationCategory(preferenceScreen);
         }
 
         if (InputSettings.isAccessibilityBounceKeysFeatureEnabled()
@@ -423,6 +423,9 @@
 
     private void unregisterSettingsObserver() {
         getActivity().getContentResolver().unregisterContentObserver(mContentObserver);
+        if (mSupportsFirmwareUpdate) {
+            mFeatureProvider.unregisterKeyboardInformationCategory();
+        }
     }
 
     private void updateAccessibilityBounceKeysSwitch(@NonNull Context context) {
diff --git a/tests/unit/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImplTest.java b/tests/unit/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImplTest.java
index 6675d5a..3faa52e 100644
--- a/tests/unit/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImplTest.java
+++ b/tests/unit/src/com/android/settings/inputmethod/KeyboardSettingsFeatureProviderImplTest.java
@@ -19,10 +19,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.content.Context;
-import android.os.Looper;
 
-import androidx.preference.PreferenceManager;
-import androidx.preference.PreferenceScreen;
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
@@ -48,17 +45,6 @@
     }
 
     @Test
-    public void addFirmwareUpdateCategory_defaultValue_returnsFalse() {
-        if (Looper.myLooper() == null) {
-            Looper.prepare();
-        }
-        PreferenceManager preferenceManager = new PreferenceManager(mContext);
-        PreferenceScreen screen = preferenceManager.createPreferenceScreen(mContext);
-
-        assertThat(mFeatureProvider.addFirmwareUpdateCategory(mContext, screen)).isFalse();
-    }
-
-    @Test
     public void getActionKeyIcon_defaultValue_returnsNull() {
         assertThat(mFeatureProvider.getActionKeyIcon(mContext)).isNull();
     }