8e94bbf8621a

fix: Restore browser inline autofill chips (v2.15.9)

Root cause: the signed-browser security gate added after v2.14.7 queried Firefox through PackageManager, but Android 11+ filtered that package because Peach declared no browser visibility. Every legitimate web form was therefore rejected before dataset construction despite receiving six inline specs. Declare only HTTPS browser handlers visible so Peach can verify their signing certificates without broad package access. Verified with the focused regression test, lintDebug, signed assembleRelease, in-place arm64 installation, and device package-query inspection.

time
2026-09-06 14:36 UTC · 1 month ago
machine
koh2
parent
d79cd9e7a5f0
3 files VERSION+1 −1app/src/main/AndroidManifest.xml+11 −0app/src/test/java/com/peachpasswords/autofill/AutofillBrowserVisibilityTest.kt+17 −0
VERSION+1 −1
@@ -1 +1 @@1-2.15.81+2.15.9

view file

app/src/main/AndroidManifest.xml+11 −0
@@ -2,6 +2,17 @@22 <manifest xmlns:android="http://schemas.android.com/apk/res/android"33     xmlns:tools="http://schemas.android.com/tools">44 5+    <!-- Autofill verifies the signing certificate of whichever browser owns6+         the framework AssistStructure. Android 11+ filters PackageManager7+         lookups unless that browser role is declared visible. -->8+    <queries>9+        <intent>10+            <action android:name="android.intent.action.VIEW" />11+            <category android:name="android.intent.category.BROWSABLE" />12+            <data android:scheme="https" />13+        </intent>14+    </queries>15+516     <uses-permission android:name="android.permission.INTERNET" />617     <!-- mDNS/NSD peer discovery for the C7 LAN sync transport -->718     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

view file

app/src/test/java/com/peachpasswords/autofill/AutofillBrowserVisibilityTest.kt+17 −0
@@ -0,0 +1,17 @@1+package com.peachpasswords.autofill2+3+import java.io.File4+import org.junit.Assert.assertTrue5+import org.junit.Test6+7+class AutofillBrowserVisibilityTest {8+    @Test9+    fun manifestMakesHttpsBrowsersVisibleToTheSignatureGate() {10+        val manifest = File("src/main/AndroidManifest.xml").readText()11+12+        assertTrue(manifest.contains("<queries>"))13+        assertTrue(manifest.contains("android.intent.action.VIEW"))14+        assertTrue(manifest.contains("android.intent.category.BROWSABLE"))15+        assertTrue(manifest.contains("android:scheme=\"https\""))16+    }17+}

view file