summaryrefslogtreecommitdiff
path: root/media/tests
diff options
context:
space:
mode:
authorHyundo Moon <hdmoon@google.com>2020-06-09 16:34:20 +0900
committerHyundo Moon <hdmoon@google.com>2020-06-09 19:12:30 +0900
commit9b5e3923d1c3e2763b04d801ac36003ce1f86416 (patch)
treea6acd8a13c5bd873d49e3f532f81cfb423556211 /media/tests
parentebb7ae667942ffa0d685edd91dc0700cf2079695 (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.java12
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