mirror of
https://github.com/samsonjs/media.git
synced 2026-03-27 09:45:47 +00:00
Propagate duplicated keys error in SDP better.
The current code does not catch the IAE thrown when building a MediaDescription or SessionDescription. This CL catches the IAE and propagates it as a ParserException. Issue: #9014. #minor-release PiperOrigin-RevId: 377544439
This commit is contained in:
parent
4e85184955
commit
efdd55fad5
2 changed files with 32 additions and 2 deletions
|
|
@ -189,7 +189,7 @@ import java.util.regex.Pattern;
|
|||
|
||||
try {
|
||||
return sessionDescriptionBuilder.build();
|
||||
} catch (IllegalStateException e) {
|
||||
} catch (IllegalArgumentException | IllegalStateException e) {
|
||||
throw ParserException.createForMalformedManifest(/* message= */ null, e);
|
||||
}
|
||||
}
|
||||
|
|
@ -200,7 +200,7 @@ import java.util.regex.Pattern;
|
|||
throws ParserException {
|
||||
try {
|
||||
sessionDescriptionBuilder.addMediaDescription(mediaDescriptionBuilder.build());
|
||||
} catch (IllegalStateException e) {
|
||||
} catch (IllegalArgumentException | IllegalStateException e) {
|
||||
throw ParserException.createForMalformedManifest(/* message= */ null, e);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import static org.junit.Assert.assertThrows;
|
|||
|
||||
import android.net.Uri;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import com.google.android.exoplayer2.ParserException;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.robolectric.annotation.internal.DoNotInstrument;
|
||||
|
|
@ -151,6 +152,35 @@ public class SessionDescriptionTest {
|
|||
assertThat(sessionDescription).isEqualTo(expectedSession);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parse_sdpStringWithDuplicatedMediaAttribute_throwsParserException() {
|
||||
String testMediaSdpInfo =
|
||||
"v=0\r\n"
|
||||
+ "o=MNobody 2890844526 2890842807 IN IP4 192.0.2.46\r\n"
|
||||
+ "s=SDP Seminar\r\n"
|
||||
+ "i=A Seminar on the session description protocol\r\n"
|
||||
+ "m=audio 3456 RTP/AVP 0\r\n"
|
||||
+ "a=control:audio\r\n"
|
||||
+ "a=control:audio\r\n";
|
||||
|
||||
assertThrows(ParserException.class, () -> SessionDescriptionParser.parse(testMediaSdpInfo));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parse_sdpStringWithDuplicatedSessionAttribute_throwsParserException() {
|
||||
String testMediaSdpInfo =
|
||||
"v=0\r\n"
|
||||
+ "o=MNobody 2890844526 2890842807 IN IP4 192.0.2.46\r\n"
|
||||
+ "s=SDP Seminar\r\n"
|
||||
+ "a=control:*\r\n"
|
||||
+ "a=control:*\r\n"
|
||||
+ "i=A Seminar on the session description protocol\r\n"
|
||||
+ "m=audio 3456 RTP/AVP 0\r\n"
|
||||
+ "a=control:audio\r\n";
|
||||
|
||||
assertThrows(ParserException.class, () -> SessionDescriptionParser.parse(testMediaSdpInfo));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void buildMediaDescription_withInvalidRtpmapAttribute_throwsIllegalStateException() {
|
||||
assertThrows(
|
||||
|
|
|
|||
Loading…
Reference in a new issue