Disallow turning off developer options in page-agnostic mode

When device is in page-agnostic mode, it would be OEM unlocked and
filesystem will be different than production. Don't allow to turn
off developer options in that state.

Bug: 329657279
Bug: 295035851
Test: m Settings && adb install -r $ANDROID_PRODUCT_OUT/system_ext/priv-app/Settings/Settings.apk
Change-Id: I9b8a9dbaf8192bb3758c53501450eb45e2fe8d9c
diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
index 35b011a..4038f4d 100644
--- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
+++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
@@ -577,6 +577,15 @@
         if (Utils.isMonkeyRunning()) {
             return;
         }
+
+        // Disabling developer options in page-agnostic mode isn't supported as device isn't in
+        // production state
+        if (Enable16kUtils.isPageAgnosticModeOn(getContext())) {
+            Enable16kUtils.showPageAgnosticWarning(getContext());
+            onDisableDevelopmentOptionsRejected();
+            return;
+        }
+
         DevelopmentSettingsEnabler.setDevelopmentSettingsEnabled(getContext(), false);
         final SystemPropPoker poker = SystemPropPoker.getInstance();
         poker.blockPokes();
diff --git a/src/com/android/settings/development/Enable16kUtils.java b/src/com/android/settings/development/Enable16kUtils.java
index 7b6ab68..00b7ee9 100644
--- a/src/com/android/settings/development/Enable16kUtils.java
+++ b/src/com/android/settings/development/Enable16kUtils.java
@@ -17,6 +17,7 @@
 package com.android.settings.development;
 
 import android.content.Context;
+import android.content.Intent;
 import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.UserManager;
@@ -116,4 +117,13 @@
     public static boolean isUsing16kbPages() {
         return PAGE_SIZE == PAGE_SIZE_16KB;
     }
+
+    /**
+     * show page-agnostic mode warning dialog to user
+     * @param context to start activity
+     */
+    public static void showPageAgnosticWarning(@NonNull Context context) {
+        Intent intent = new Intent(context, PageAgnosticWarningActivity.class);
+        context.startActivityAsUser(intent, UserHandle.SYSTEM);
+    }
 }