diff options
| author | 2024-05-01 23:27:24 +0000 | |
|---|---|---|
| committer | 2024-05-01 23:27:24 +0000 | |
| commit | bc49e43689b34e05dbb5110732f4c0686f6c5cc2 (patch) | |
| tree | b933a05b7bda64322e958317587156c8d71bdc55 | |
| parent | d395057b116e35194a9a2c173d50b3c196e49552 (diff) | |
| parent | 701506234a39df0d850592fc11249681361bb1b2 (diff) | |
Merge "Fix the string reference equality comparison in MusicFxHelper" into 24D1-dev
| -rw-r--r-- | services/core/java/com/android/server/audio/MusicFxHelper.java | 9 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/audio/MusicFxHelperTest.java | 80 | 
2 files changed, 68 insertions, 21 deletions
| diff --git a/services/core/java/com/android/server/audio/MusicFxHelper.java b/services/core/java/com/android/server/audio/MusicFxHelper.java index 85b3b49ecf78..ba453101046f 100644 --- a/services/core/java/com/android/server/audio/MusicFxHelper.java +++ b/services/core/java/com/android/server/audio/MusicFxHelper.java @@ -90,7 +90,6 @@ public class MusicFxHelper {       *    observer will also be removed, and observer token reset to null       */      private class MySparseArray extends SparseArray<PackageSessions> { -        private final String mMusicFxPackageName = "com.android.musicfx";          @RequiresPermission(anyOf = {                  android.Manifest.permission.INTERACT_ACROSS_USERS_FULL, @@ -229,6 +228,10 @@ public class MusicFxHelper {          if (ril != null && ril.size() != 0) {              ResolveInfo ri = ril.get(0);              final String senderPackageName = intent.getStringExtra(AudioEffect.EXTRA_PACKAGE_NAME); +            if (senderPackageName == null) { +                Log.w(TAG, "Intent package name must not be null"); +                return; +            }              try {                  if (ri != null && ri.activityInfo != null && ri.activityInfo.packageName != null) {                      final int senderUid = pm.getPackageUidAsUser(senderPackageName, @@ -265,7 +268,7 @@ public class MusicFxHelper {                          + senderUid + ", package: " + senderPackageName + ", abort");                  return false;              } -            if (pkgSessions.mPackageName != senderPackageName) { +            if (!pkgSessions.mPackageName.equals(senderPackageName)) {                  Log.w(TAG, "Inconsistency package names for UID open: " + senderUid + " prev: "                          + pkgSessions.mPackageName + ", now: " + senderPackageName);                  return false; @@ -297,7 +300,7 @@ public class MusicFxHelper {              Log.e(TAG, senderPackageName + " UID " + senderUid + " does not exist in map, abort");              return false;          } -        if (pkgSessions.mPackageName != senderPackageName) { +        if (!pkgSessions.mPackageName.equals(senderPackageName)) {              Log.w(TAG, "Inconsistency package names for UID " + senderUid + " close, prev: "                      + pkgSessions.mPackageName + ", now: " + senderPackageName);              return false; diff --git a/services/tests/servicestests/src/com/android/server/audio/MusicFxHelperTest.java b/services/tests/servicestests/src/com/android/server/audio/MusicFxHelperTest.java index 472a82c02937..d5638e9346f6 100644 --- a/services/tests/servicestests/src/com/android/server/audio/MusicFxHelperTest.java +++ b/services/tests/servicestests/src/com/android/server/audio/MusicFxHelperTest.java @@ -57,8 +57,9 @@ public class MusicFxHelperTest {      private ResolveInfo mResolveInfo1 = new ResolveInfo();      private ResolveInfo mResolveInfo2 = new ResolveInfo(); -    private final String mTestPkg1 = "testPkg1", mTestPkg2 = "testPkg2", mTestPkg3 = "testPkg3"; -    private final String mMusicFxPkgName = "com.android.musicfx"; +    private final String mTestPkg1 = new String("testPkg1"), mTestPkg2 = new String("testPkg2"), +            mTestPkg3 = new String("testPkg3"), mTestPkg1Equivalent = new String("testPkg1"); +    private final String mMusicFxPkgName = new String("com.android.musicfx");      private final int mTestUid1 = 1, mTestUid2 = 2, mTestUid3 = 3, mMusicFxUid = 78;      private final int mTestSession1 = 11, mTestSession2 = 22, mTestSession3 = 33; @@ -191,7 +192,8 @@ public class MusicFxHelperTest {      public void testCloseBroadcastIntent() {          Log.i(TAG, "running testCloseBroadcastIntent"); -        closeSessionWithResList(null, 0, 0, null, mTestSession1, mTestUid1); +        closeSessionWithResList(null, 0 /* unbind */, 0 /* broadcast */, null /* packageName */, +                mTestSession1, mTestUid1);      }      /** @@ -225,8 +227,10 @@ public class MusicFxHelperTest {      public void testBroadcastIntentWithNoPackageAndNoBroadcastReceiver() {          Log.i(TAG, "running testBroadcastIntentWithNoPackageAndNoBroadcastReceiver"); -        openSessionWithResList(mEmptyList, 0, 0, null, mTestSession1, mTestUid1); -        closeSessionWithResList(mEmptyList, 0, 0, null, mTestSession1, mTestUid1); +        openSessionWithResList(mEmptyList, 0 /* bind */, 0 /* broadcast */, null /* packageName */, +                mTestSession1, mTestUid1); +        closeSessionWithResList(mEmptyList, 0 /* unbind */, 0 /* broadcast */, +                null /* packageName */, mTestSession1, mTestUid1);      }      /** @@ -236,37 +240,63 @@ public class MusicFxHelperTest {      public void testBroadcastIntentWithNoPackageAndOneBroadcastReceiver() {          Log.i(TAG, "running testBroadcastIntentWithNoPackageAndOneBroadcastReceiver"); +        openSessionWithResList(mSingleList, 0 /* bind */, 0 /* broadcast */, +                null /* packageName */, mTestSession1, mTestUid1); +        closeSessionWithResList(mSingleList, 0 /* unbind */, 0 /* broadcast */, +                null /* packageName */, mTestSession1, mTestUid1); +    } + +    /** +     * OPEN/CLOSE AUDIO_EFFECT_CONTROL_SESSION with two broadcast receivers. +     */ +    @Test +    public void testBroadcastIntentWithNoPackageAndTwoBroadcastReceivers() { +        Log.i(TAG, "running testBroadcastIntentWithNoPackageAndTwoBroadcastReceivers"); + +        openSessionWithResList(mDoubleList, 0 /* bind */, 0 /* broadcast */, +                null /* packageName */, mTestSession1, mTestUid1); +        closeSessionWithResList(mDoubleList, 0 /* bind */, 0 /* broadcast */, +                null /* packageName */, mTestSession1, mTestUid1); +    } + +    @Test +    public void testBroadcastIntentWithPackageAndOneBroadcastReceiver() { +        Log.i(TAG, "running testBroadcastIntentWithPackageAndOneBroadcastReceiver"); +          int broadcasts = 1, bind = 1, unbind = 1; -        openSessionWithResList(mSingleList, bind, broadcasts, null, mTestSession1, mTestUid1); +        openSessionWithResList(mSingleList, bind, broadcasts, mTestPkg1, mTestSession1, mTestUid1); +          broadcasts = broadcasts + 1; -        closeSessionWithResList(mSingleList, unbind, broadcasts, null, mTestSession1, mTestUid1); +        closeSessionWithResList(mSingleList, unbind, broadcasts, mTestPkg1, mTestSession1, +                mTestUid1);          // repeat with different session ID          broadcasts = broadcasts + 1;          bind = bind + 1;          unbind = unbind + 1; -        openSessionWithResList(mSingleList, bind, broadcasts, null, mTestSession2, mTestUid1); +        openSessionWithResList(mSingleList, bind, broadcasts, mTestPkg2, mTestSession2, mTestUid1);          broadcasts = broadcasts + 1; -        closeSessionWithResList(mSingleList, unbind, broadcasts, null, mTestSession2, mTestUid1); +        closeSessionWithResList(mSingleList, unbind, broadcasts, mTestPkg2, mTestSession2, +                mTestUid1);          // repeat with different UID          broadcasts = broadcasts + 1;          bind = bind + 1;          unbind = unbind + 1; -        openSessionWithResList(mSingleList, bind, broadcasts, null, mTestSession1, mTestUid2); +        openSessionWithResList(mSingleList, bind, broadcasts, mTestPkg3, mTestSession1, mTestUid2);          broadcasts = broadcasts + 1; -        closeSessionWithResList(mSingleList, unbind, broadcasts, null, mTestSession1, mTestUid2); +        closeSessionWithResList(mSingleList, unbind, broadcasts, mTestPkg3, mTestSession1, +                mTestUid2);      } -    /** -     * OPEN/CLOSE AUDIO_EFFECT_CONTROL_SESSION with two broadcast receivers. -     */      @Test -    public void testBroadcastIntentWithNoPackageAndTwoBroadcastReceivers() { -        Log.i(TAG, "running testBroadcastIntentWithNoPackageAndTwoBroadcastReceivers"); +    public void testBroadcastIntentWithPackageAndTwoBroadcastReceivers() { +        Log.i(TAG, "running testBroadcastIntentWithPackageAndTwoBroadcastReceivers"); -        openSessionWithResList(mDoubleList, 1, 1, null, mTestSession1, mTestUid1); -        closeSessionWithResList(mDoubleList, 1, 2, null, mTestSession1, mTestUid1); +        openSessionWithResList(mDoubleList, 1 /* bind */, 1 /* broadcast */, +                mTestPkg1 /* packageName */, mTestSession1, mTestUid1); +        closeSessionWithResList(mDoubleList, 1 /* unbind */, 2 /* broadcast */, +                mTestPkg1 /* packageName */, mTestSession1, mTestUid1);      }      /** @@ -639,4 +669,18 @@ public class MusicFxHelperTest {          unbind = unbind + 1;          sendMessage(MusicFxHelper.MSG_EFFECT_CLIENT_GONE, mTestUid3, unbind, broadcasts);      } + +    /** +     * Test audio session open/close with same package name value but different String object. +     */ +    @Test +    public void testSessionOpenCloseWithSamePackageNameValueButDiffObject() { +        Log.i(TAG, "running testSessionOpenCloseWithSamePackageNameValueButDiffObject"); +        int broadcasts = 1; +        openSessionWithResList(mSingleList, 1 /* bind */, broadcasts, mTestPkg1, mTestSession1, +                mTestUid1); +        closeSessionWithResList(mSingleList, 1 /* unbind */, broadcasts + 1, mTestPkg1Equivalent, +                mTestSession1, mTestUid1); +    } +  } |