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

Commit cd55b615 authored by Fabian Kozynski's avatar Fabian Kozynski Committed by android-build-merger
Browse files

Merge "Clear AppOpsController when it stops listening" into qt-dev

am: a8723416

Change-Id: Ib51e373412e8b7ada888a40ee8682d0feb217b3d
parents e7b2ba62 a8723416
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -100,6 +100,13 @@ public class AppOpsControllerImpl implements AppOpsController,
        } else {
        } else {
            mAppOps.stopWatchingActive(this);
            mAppOps.stopWatchingActive(this);
            mAppOps.stopWatchingNoted(this);
            mAppOps.stopWatchingNoted(this);
            mBGHandler.removeCallbacksAndMessages(null); // null removes all
            synchronized (mActiveItems) {
                mActiveItems.clear();
            }
            synchronized (mNotedItems) {
                mNotedItems.clear();
            }
        }
        }
    }
    }


+20 −0
Original line number Original line Diff line number Diff line
@@ -16,7 +16,10 @@


package com.android.systemui.appops;
package com.android.systemui.appops;


import static junit.framework.TestCase.assertFalse;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -189,4 +192,21 @@ public class AppOpsControllerTest extends SysuiTestCase {
                AppOpsManager.MODE_ALLOWED);
                AppOpsManager.MODE_ALLOWED);
        verify(mMockHandler).scheduleRemoval(any(AppOpItem.class), anyLong());
        verify(mMockHandler).scheduleRemoval(any(AppOpItem.class), anyLong());
    }
    }

    @Test
    public void noItemsAfterStopListening() {
        mController.setBGHandler(mMockHandler);

        mController.setListening(true);
        mController.onOpActiveChanged(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                true);
        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                AppOpsManager.MODE_ALLOWED);
        assertFalse(mController.getActiveAppOps().isEmpty());

        mController.setListening(false);

        verify(mMockHandler).removeCallbacksAndMessages(null);
        assertTrue(mController.getActiveAppOps().isEmpty());
    }
}
}