diff options
author | Hyundo Moon <hdmoon@google.com> | 2020-06-09 16:34:20 +0900 |
---|---|---|
committer | Hyundo Moon <hdmoon@google.com> | 2020-06-09 19:12:30 +0900 |
commit | 9b5e3923d1c3e2763b04d801ac36003ce1f86416 (patch) | |
tree | a6acd8a13c5bd873d49e3f532f81cfb423556211 /media/tests | |
parent | ebb7ae667942ffa0d685edd91dc0700cf2079695 (diff) |
Prevent abuse of MediaRoute2ProviderService#notifyRequestFailed()
The method can be called with a random requestId, or called multiple
times with the valid requestId. It can result unnecessary calls
to MediaRouter2Manager#onRequestFailed().
This CL resolves this problem.
Bug: 157873556
Test: Passes CTS and mediaroutertest
Change-Id: Ia7dd4ddafd532b9f23bf19491a0820d5a74f6a70
Diffstat (limited to 'media/tests')
-rw-r--r-- | media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java index 1e49f49b37bc..8606be88d20e 100644 --- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java +++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java @@ -487,11 +487,16 @@ public class MediaRouter2ManagerTest { final int failureReason = REASON_REJECTED; final CountDownLatch onRequestFailedLatch = new CountDownLatch(1); + final CountDownLatch onRequestFailedSecondCallLatch = new CountDownLatch(1); addManagerCallback(new MediaRouter2Manager.Callback() { @Override public void onRequestFailed(int reason) { if (reason == failureReason) { - onRequestFailedLatch.countDown(); + if (onRequestFailedLatch.getCount() > 0) { + onRequestFailedLatch.countDown(); + } else { + onRequestFailedSecondCallLatch.countDown(); + } } } }); @@ -503,6 +508,11 @@ public class MediaRouter2ManagerTest { final long validRequestId = requestIds.get(0); instance.notifyRequestFailed(validRequestId, failureReason); assertTrue(onRequestFailedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); + + // Test calling notifyRequestFailed() multiple times with the same valid requestId. + // onRequestFailed() shouldn't be called since the requestId has been already handled. + instance.notifyRequestFailed(validRequestId, failureReason); + assertFalse(onRequestFailedSecondCallLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)); } @Test |