Don't allow tapjacking permisisoncontroller Use the filterTouchesWhenObscured attribute throughout the permission controller. Bug: 155287782 Test: Manual using PoC app from b/154015447#comment1 Change-Id: I205395fdcabe68055df15ce9414468a833a0807c
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index a056164..2a00002 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml
@@ -56,7 +56,8 @@ android:supportsRtl="true" android:defaultToDeviceProtectedStorage="true" android:forceQueryable="true" - android:directBootAware="true"> + android:directBootAware="true" + android:theme="@style/FilterTouches"> <provider android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer" @@ -98,7 +99,7 @@ <activity android:name="com.android.permissioncontroller.permission.ui.GrantPermissionsActivity" android:configChanges="keyboardHidden|screenSize" android:excludeFromRecents="true" - android:theme="@style/GrantPermissions" + android:theme="@style/GrantPermissions.FilterTouches" android:visibleToInstantApps="true" android:inheritShowWhenLocked="true"> <intent-filter android:priority="1"> @@ -110,7 +111,7 @@ <activity android:name="com.android.permissioncontroller.permission.ui.ManagePermissionsActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:label="@string/app_permissions" - android:theme="@style/Settings" + android:theme="@style/Settings.FilterTouches" android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS"> <intent-filter android:priority="1"> <action android:name="android.intent.action.MANAGE_APP_PERMISSIONS" /> @@ -133,13 +134,13 @@ <activity android:name="com.android.permissioncontroller.permission.ui.legacy.AppPermissionActivity" android:configChanges="orientation|keyboardHidden|screenSize" - android:theme="@style/Settings" + android:theme="@style/Settings.FilterTouches" android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS"> </activity> <activity android:name="com.android.permissioncontroller.permission.ui.ReviewPermissionsActivity" android:excludeFromRecents="true" - android:theme="@style/ReviewPermissions" + android:theme="@style/ReviewPermissions.FilterTouches" android:permission="android.permission.GRANT_RUNTIME_PERMISSIONS"> <intent-filter android:priority="1"> <action android:name="android.intent.action.REVIEW_PERMISSIONS" /> @@ -153,11 +154,11 @@ <activity android:name="com.android.permissioncontroller.permission.ui.LocationProviderInterceptDialog" android:excludeFromRecents="true" - android:theme="@style/PermissionDialog" /> + android:theme="@style/PermissionDialog.FilterTouches" /> <activity android:name="com.android.permissioncontroller.permission.ui.ReviewAccessibilityServicesActivity" android:excludeFromRecents="true" - android:theme="@style/PermissionDialog" + android:theme="@style/PermissionDialog.FilterTouches" android:permission="android.permission.REVIEW_ACCESSIBILITY_SERVICES" > <intent-filter android:priority="1"> <action android:name="android.intent.action.REVIEW_ACCESSIBILITY_SERVICES" /> @@ -167,7 +168,7 @@ <activity android:name="com.android.permissioncontroller.role.ui.RequestRoleActivity" android:excludeFromRecents="true" - android:theme="@style/RequestRole"> + android:theme="@style/RequestRole.FilterTouches"> <intent-filter android:priority="1"> <action android:name="android.app.role.action.REQUEST_ROLE" /> <category android:name="android.intent.category.DEFAULT" /> @@ -184,7 +185,7 @@ <activity android:name="com.android.permissioncontroller.role.ui.DefaultAppListActivity" android:label="@string/default_apps" - android:theme="@style/Settings"> + android:theme="@style/Settings.FilterTouches"> <intent-filter android:priority="2"> <action android:name="android.settings.MANAGE_DEFAULT_APPS_SETTINGS" /> <category android:name="android.intent.category.DEFAULT" /> @@ -193,7 +194,7 @@ <activity android:name="com.android.permissioncontroller.role.ui.DefaultAppActivity" android:permission="android.permission.MANAGE_ROLE_HOLDERS" - android:theme="@style/Settings"> + android:theme="@style/Settings.FilterTouches"> <intent-filter android:priority="1"> <action android:name="android.intent.action.MANAGE_DEFAULT_APP" /> <category android:name="android.intent.category.DEFAULT" /> @@ -213,7 +214,7 @@ <activity android:name="com.android.permissioncontroller.role.ui.SpecialAppAccessListActivity" android:label="@string/special_app_access" android:permission="android.permission.MANAGE_ROLE_HOLDERS" - android:theme="@style/Settings"> + android:theme="@style/Settings.FilterTouches"> <intent-filter android:priority="1"> <action android:name="android.intent.action.MANAGE_SPECIAL_APP_ACCESSES" /> <category android:name="android.intent.category.DEFAULT" /> @@ -222,7 +223,7 @@ <!-- TODO: Override other Settings intents when we've done migrating them. --> <activity android:name="com.android.permissioncontroller.role.ui.SpecialAppAccessActivity" - android:theme="@style/Settings" /> + android:theme="@style/Settings.FilterTouches" /> <activity android:name="com.android.permissioncontroller.role.ui.RoleSearchTrampolineActivity" android:excludeFromRecents="true"
diff --git a/res/values/themes.xml b/res/values/themes.xml index 39d0db7..32cdc1a 100644 --- a/res/values/themes.xml +++ b/res/values/themes.xml
@@ -81,4 +81,33 @@ <item name="carDividerColor">@*android:color/car_list_divider</item> </style> + + + +<!-- Do not allow OEMs to overlay these themes. + Must Guarantee that filterTouches is set for these activities --> + <style name="FilterTouches"> + <item name="android:filterTouchesWhenObscured">true</item> + </style> + + <style name="Settings.FilterTouches"> + <item name="android:filterTouchesWhenObscured">true</item> + </style> + + <style name="ReviewPermissions.FilterTouches"> + <item name="android:filterTouchesWhenObscured">true</item> + </style> + + <style name="GrantPermissions.FilterTouches"> + <item name="android:filterTouchesWhenObscured">true</item> + </style> + + <style name="RequestRole.FilterTouches"> + <item name="android:filterTouchesWhenObscured">true</item> + </style> + + <style name="PermissionDialog.FilterTouches"> + <item name="android:filterTouchesWhenObscured">true</item> + </style> + </resources>