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

Commit 14815501 authored by Hiroki Sato's avatar Hiroki Sato
Browse files

Fix FrameworksServicesTests crash in A11yManagerService

Currently, A11yContentObserver keeps observing settings value changes
even after the test ends.
This fixes by unregistering it on tear down.

Bug: 418259247
Test: FrameworksServicesTests_accessibility
Flag: EXEMPT test fix
Change-Id: I8a07495479c4c798e93d9b881c8f2648373ac542
parent 56f93335
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -421,6 +421,8 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
    private final HearingDevicePhoneCallNotificationController mHearingDeviceNotificationController;
    private final UserManagerInternal mUmi;

    private AccessibilityContentObserver mAccessibilityContentObserver;

    @NonNull
    private AccessibilityUserState getCurrentUserStateLocked() {
        return getUserStateLocked(mCurrentUserId);
@@ -654,8 +656,9 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
    private void init() {
        mSecurityPolicy.setAccessibilityWindowManager(mA11yWindowManager);
        registerBroadcastReceivers();
        new AccessibilityContentObserver(mMainHandler).register(
                mContext.getContentResolver());
        mAccessibilityContentObserver = new AccessibilityContentObserver(mMainHandler);
        mAccessibilityContentObserver.register(mContext.getContentResolver());

        List<Integer> supportedGestures = new ArrayList<>();
        if (enableTalkbackAndMagnifierKeyGestures()) {
            supportedGestures.add(KeyGestureEvent.KEY_GESTURE_TYPE_TOGGLE_MAGNIFICATION);
@@ -677,6 +680,11 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
        disableAccessibilityMenuToMigrateIfNeeded();
    }

    @VisibleForTesting
    void unregisterObservers() {
        mAccessibilityContentObserver.unregister(mContext.getContentResolver());
    }

    /**
     * Returns if the current thread is holding {@link #mLock}. Used for testing
     * deadlock bug fixes.
@@ -5909,6 +5917,10 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
            }
        }

        public void unregister(ContentResolver contentResolver) {
            contentResolver.unregisterContentObserver(this);
        }

        @Override
        public void onChange(boolean selfChange, Uri uri) {
            synchronized (mLock) {
+3 −0
Original line number Diff line number Diff line
@@ -202,6 +202,9 @@ class AccessibilityInputFilterInputTest {
        if (this::inputManagerGlobalSession.isInitialized) {
            inputManagerGlobalSession.close()
        }
        if (this::ams.isInitialized) {
            ams.unregisterObservers()
        }
    }

    /**
+1 −0
Original line number Diff line number Diff line
@@ -203,6 +203,7 @@ public class AccessibilityInputFilterTest {
    public void tearDown() {
        mA11yInputFilter.onUninstalled();
        mInputManagerGlobalSession.close();
        mAms.unregisterObservers();
    }

    @Test