Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit afe3ef1b authored by Casey Burkhardt's avatar Casey Burkhardt
Browse files

Revise Accessibility button chooser intent/permissions

1) Switch AccessibilityButtonChooserActivity to non-exported
2) Update AccessibilityButtonChooserActivity's intent action to
   be CTS-compliant
3) Switches to correct permission to validate a click of the
   accessibility button originated from the status bar service

Bug: 36866328
Bug: 36976440
Test: Manual / Created app to validate launch protection
Change-Id: Ifcd5e8dbbe683dc99bb900a5870a9ba374fbd5d4
parent 399dba4a
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -112,7 +112,7 @@ public final class AccessibilityManager {
     */
     */
    @SdkConstant(SdkConstant.SdkConstantType.ACTIVITY_INTENT_ACTION)
    @SdkConstant(SdkConstant.SdkConstantType.ACTIVITY_INTENT_ACTION)
    public static final String ACTION_CHOOSE_ACCESSIBILITY_BUTTON =
    public static final String ACTION_CHOOSE_ACCESSIBILITY_BUTTON =
            "android.intent.action.CHOOSE_ACCESSIBILITY_BUTTON";
            "com.android.internal.intent.action.CHOOSE_ACCESSIBILITY_BUTTON";


    static final Object sInstanceSync = new Object();
    static final Object sInstanceSync = new Object();


+2 −1
Original line number Original line Diff line number Diff line
@@ -3356,6 +3356,7 @@
            </intent-filter>
            </intent-filter>
        </activity>
        </activity>
        <activity android:name="com.android.internal.app.AccessibilityButtonChooserActivity"
        <activity android:name="com.android.internal.app.AccessibilityButtonChooserActivity"
                  android:exported="false"
                  android:theme="@style/Theme.DeviceDefault.Resolver"
                  android:theme="@style/Theme.DeviceDefault.Resolver"
                  android:finishOnCloseSystemDialogs="true"
                  android:finishOnCloseSystemDialogs="true"
                  android:excludeFromRecents="true"
                  android:excludeFromRecents="true"
@@ -3365,7 +3366,7 @@
                  android:process=":ui"
                  android:process=":ui"
                  android:visibleToInstantApps="true">
                  android:visibleToInstantApps="true">
            <intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.CHOOSE_ACCESSIBILITY_BUTTON" />
                <action android:name="com.android.internal.intent.action.CHOOSE_ACCESSIBILITY_BUTTON" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            </intent-filter>
        </activity>
        </activity>
+4 −4
Original line number Original line Diff line number Diff line
@@ -876,10 +876,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
     */
     */
    @Override
    @Override
    public void notifyAccessibilityButtonClicked() {
    public void notifyAccessibilityButtonClicked() {
        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.STATUS_BAR)
        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.STATUS_BAR_SERVICE)
                != PackageManager.PERMISSION_GRANTED) {
                != PackageManager.PERMISSION_GRANTED) {
            throw new SecurityException("Caller does not hold permission "
            throw new SecurityException("Caller does not hold permission "
                    + android.Manifest.permission.STATUS_BAR);
                    + android.Manifest.permission.STATUS_BAR_SERVICE);
        }
        }
        synchronized (mLock) {
        synchronized (mLock) {
            notifyAccessibilityButtonClickedLocked();
            notifyAccessibilityButtonClickedLocked();
@@ -895,10 +895,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub {
     */
     */
    @Override
    @Override
    public void notifyAccessibilityButtonAvailabilityChanged(boolean available) {
    public void notifyAccessibilityButtonAvailabilityChanged(boolean available) {
        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.STATUS_BAR)
        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.STATUS_BAR_SERVICE)
                != PackageManager.PERMISSION_GRANTED) {
                != PackageManager.PERMISSION_GRANTED) {
            throw new SecurityException("Caller does not hold permission "
            throw new SecurityException("Caller does not hold permission "
                    + android.Manifest.permission.STATUS_BAR);
                    + android.Manifest.permission.STATUS_BAR_SERVICE);
        }
        }
        synchronized (mLock) {
        synchronized (mLock) {
            notifyAccessibilityButtonAvailabilityChangedLocked(available);
            notifyAccessibilityButtonAvailabilityChangedLocked(available);