Fix a crash in PhysicalKeyboardFragment

The crash is caused by using getContext() in a background thread. This CL changes it to use the context passed in as a parameter.

Bug: 373789342
Change-Id: Ia0197640b3d01cf305bfd9ebc8465b0c8e0dc016
Test: manual and presubmit
Flag: EXEMPT bugfix
diff --git a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
index 48100a3..edc9989 100644
--- a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
+++ b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
@@ -289,11 +289,12 @@
                 getActivity().finish();
                 return;
             }
-            ThreadUtils.postOnMainThread(() -> updateHardKeyboards(newHardKeyboards));
+            ThreadUtils.postOnMainThread(() -> updateHardKeyboards(context, newHardKeyboards));
         });
     }
 
-    private void updateHardKeyboards(@NonNull List<HardKeyboardDeviceInfo> newHardKeyboards) {
+    private void updateHardKeyboards(@NonNull Context context,
+                                     @NonNull List<HardKeyboardDeviceInfo> newHardKeyboards) {
         if (Objects.equals(mLastHardKeyboards, newHardKeyboards)) {
             // Nothing has changed.  Ignore.
             return;
@@ -316,7 +317,7 @@
             final Preference pref = new Preference(getPrefContext());
             pref.setTitle(hardKeyboardDeviceInfo.mDeviceName);
             String currentLayout =
-                    NewKeyboardSettingsUtils.getSelectedKeyboardLayoutLabelForUser(getContext(),
+                    NewKeyboardSettingsUtils.getSelectedKeyboardLayoutLabelForUser(context,
                             UserHandle.myUserId(), hardKeyboardDeviceInfo.mDeviceIdentifier);
             if (currentLayout != null) {
                 pref.setSummary(currentLayout);
@@ -336,7 +337,7 @@
             vendorAndProductId.append("-");
             vendorAndProductId.append(productId);
             mMetricsFeatureProvider.action(
-                    getContext(),
+                    context,
                     SettingsEnums.ACTION_USE_SPECIFIC_KEYBOARD,
                     vendorAndProductId.toString());
         }
@@ -352,10 +353,10 @@
                 || InputSettings.isAccessibilityMouseKeysFeatureFlagEnabled()) {
             Objects.requireNonNull(mKeyboardA11yCategory).setOrder(2);
             preferenceScreen.addPreference(mKeyboardA11yCategory);
-            updateAccessibilityBounceKeysSwitch();
-            updateAccessibilitySlowKeysSwitch();
-            updateAccessibilityStickyKeysSwitch();
-            updateAccessibilityMouseKeysSwitch();
+            updateAccessibilityBounceKeysSwitch(context);
+            updateAccessibilitySlowKeysSwitch(context);
+            updateAccessibilityStickyKeysSwitch(context);
+            updateAccessibilityMouseKeysSwitch(context);
         }
     }
 
@@ -413,46 +414,47 @@
                     mContentObserver,
                     UserHandle.myUserId());
         }
-        updateAccessibilityBounceKeysSwitch();
-        updateAccessibilitySlowKeysSwitch();
-        updateAccessibilityStickyKeysSwitch();
-        updateAccessibilityMouseKeysSwitch();
+        final Context context = getContext();
+        updateAccessibilityBounceKeysSwitch(context);
+        updateAccessibilitySlowKeysSwitch(context);
+        updateAccessibilityStickyKeysSwitch(context);
+        updateAccessibilityMouseKeysSwitch(context);
     }
 
     private void unregisterSettingsObserver() {
         getActivity().getContentResolver().unregisterContentObserver(mContentObserver);
     }
 
-    private void updateAccessibilityBounceKeysSwitch() {
+    private void updateAccessibilityBounceKeysSwitch(@NonNull Context context) {
         if (!InputSettings.isAccessibilityBounceKeysFeatureEnabled()) {
             return;
         }
         Objects.requireNonNull(mAccessibilityBounceKeys).setChecked(
-                InputSettings.isAccessibilityBounceKeysEnabled(getContext()));
+                InputSettings.isAccessibilityBounceKeysEnabled(context));
     }
 
-    private void updateAccessibilitySlowKeysSwitch() {
+    private void updateAccessibilitySlowKeysSwitch(@NonNull Context context) {
         if (!InputSettings.isAccessibilitySlowKeysFeatureFlagEnabled()) {
             return;
         }
         Objects.requireNonNull(mAccessibilitySlowKeys).setChecked(
-                InputSettings.isAccessibilitySlowKeysEnabled(getContext()));
+                InputSettings.isAccessibilitySlowKeysEnabled(context));
     }
 
-    private void updateAccessibilityStickyKeysSwitch() {
+    private void updateAccessibilityStickyKeysSwitch(@NonNull Context context) {
         if (!InputSettings.isAccessibilityStickyKeysFeatureEnabled()) {
             return;
         }
         Objects.requireNonNull(mAccessibilityStickyKeys).setChecked(
-                InputSettings.isAccessibilityStickyKeysEnabled(getContext()));
+                InputSettings.isAccessibilityStickyKeysEnabled(context));
     }
 
-    private void updateAccessibilityMouseKeysSwitch() {
+    private void updateAccessibilityMouseKeysSwitch(@NonNull Context context) {
         if (!InputSettings.isAccessibilityMouseKeysFeatureFlagEnabled()) {
             return;
         }
         Objects.requireNonNull(mAccessibilityMouseKeys).setChecked(
-                InputSettings.isAccessibilityMouseKeysEnabled(getContext()));
+                InputSettings.isAccessibilityMouseKeysEnabled(context));
     }
 
     private void toggleKeyboardShortcutsMenu() {
@@ -489,13 +491,13 @@
         @Override
         public void onChange(boolean selfChange, Uri uri) {
             if (sAccessibilityBounceKeysUri.equals(uri)) {
-                updateAccessibilityBounceKeysSwitch();
+                updateAccessibilityBounceKeysSwitch(getContext());
             } else if (sAccessibilitySlowKeysUri.equals(uri)) {
-                updateAccessibilitySlowKeysSwitch();
+                updateAccessibilitySlowKeysSwitch(getContext());
             } else if (sAccessibilityStickyKeysUri.equals(uri)) {
-                updateAccessibilityStickyKeysSwitch();
+                updateAccessibilityStickyKeysSwitch(getContext());
             } else if (sAccessibilityMouseKeysUri.equals(uri)) {
-                updateAccessibilityMouseKeysSwitch();
+                updateAccessibilityMouseKeysSwitch(getContext());
             }
         }
     };