Add validity check for developer options

Enable the developer options module if not already enabled when
necessary. Add log statements to help debug the root cause.

This change is to ensure no one stays blocked on not having access to
developer options while adding some additional logs to understand how
this inconsistent state is acheived.

Bug: 137797266
Test: manual, robolectric
Change-Id: Idbc1a421c22625fb3424239052eb669c7a0f8ff4
diff --git a/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceController.java b/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceController.java
index 92c32b1..c8a1146 100644
--- a/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceController.java
+++ b/src/com/android/car/settings/system/DeveloperOptionsEntryPreferenceController.java
@@ -23,12 +23,14 @@
 import androidx.preference.Preference;
 
 import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
 import com.android.car.settings.common.PreferenceController;
 import com.android.car.settings.development.DevelopmentSettingsUtil;
 
 /** Controls the visibility of the developer options setting. */
 public class DeveloperOptionsEntryPreferenceController extends PreferenceController<Preference> {
 
+    private static final Logger LOG = new Logger(DeveloperOptionsEntryPreferenceController.class);
     private UserManager mUserManager;
 
     public DeveloperOptionsEntryPreferenceController(Context context, String preferenceKey,
@@ -47,4 +49,18 @@
         return DevelopmentSettingsUtil.isDevelopmentSettingsEnabled(getContext(), mUserManager)
                 ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
     }
+
+    @Override
+    protected boolean handlePreferenceClicked(Preference preference) {
+        // TODO(b/137797266): This should be removed when the root cause of the inconsistency is
+        //  discovered and fixed.
+        if (!DevelopmentSettingsUtil.isDeveloperOptionsModuleEnabled(getContext())) {
+            LOG.e("Inconsistent state: developer options enabled, but developer options module "
+                    + "disabled. Retry enabling...");
+            DevelopmentSettingsUtil.setDevelopmentSettingsEnabled(getContext(), /* enable= */ true);
+        }
+
+        getContext().startActivity(preference.getIntent());
+        return true;
+    }
 }