


** <audio> element test **

** Check category before anything has loaded.
EXPECTED (internals.audioSessionCategory() == 'None') OK

** Check category when a muted, paused, element has loaded.
EVENT(canplaythrough)
EXPECTED (internals.audioSessionCategory() == 'None') OK

** Check category when a muted element is playing.
RUN(video.play())
EVENT(playing)
EXPECTED (internals.audioSessionCategory() == 'None') OK
EXPECTED (internals.routeSharingPolicy() == 'Default') OK

** Check category when an unmuted element is playing.
RUN(video.muted = false)
EVENT(volumechange)
EXPECTED (internals.audioSessionCategory() == 'MediaPlayback') OK
EXPECTED (internals.routeSharingPolicy() == 'LongFormAudio') OK

** Mute the element, check again after 500ms.
RUN(video.pause())
RUN(video.muted = true)
EXPECTED (internals.audioSessionCategory() == 'MediaPlayback') OK
EXPECTED (internals.routeSharingPolicy() == 'LongFormAudio') OK

** And check again after 3 seconds.
EXPECTED (internals.audioSessionCategory() == 'None') OK
EXPECTED (internals.routeSharingPolicy() == 'Default') OK


** AudioContext test **

** Check category before creating AudioContext.
EXPECTED (internals.audioSessionCategory() == 'None') OK

** Check category after AudioContext has been created but not started.
EXPECTED (internals.audioSessionCategory() == 'None') OK

** Check category after starting oscillator.
EXPECTED (internals.audioSessionCategory() == 'AmbientSound') OK
EXPECTED (internals.routeSharingPolicy() == 'Default') OK

** Close the context, check again after 500ms.
EXPECTED (internals.audioSessionCategory() == 'AmbientSound') OK
EXPECTED (internals.routeSharingPolicy() == 'Default') OK

** And check again after 3 seconds.
EXPECTED (internals.audioSessionCategory() == 'None') OK
EXPECTED (internals.routeSharingPolicy() == 'Default') OK


** MediaStream test **

** Check category before capture begins.
EXPECTED (internals.audioSessionCategory() == 'None') OK

** Check category when capturing.
EXPECTED (internals.audioSessionCategory() == 'PlayAndRecord') OK
EXPECTED (internals.routeSharingPolicy() == 'Default') OK

** Check after MediaStream is attached to audio element.
RUN(video.play())
EVENT(playing)
EXPECTED (internals.audioSessionCategory() == 'PlayAndRecord') OK
EXPECTED (internals.routeSharingPolicy() == 'Default') OK

** Check after MediaStream muting audio track.
EXPECTED (internals.audioSessionCategory() == 'PlayAndRecord') OK

** Check 500ms after MediaStream stopping capture.
EXPECTED (internals.audioSessionCategory() == 'PlayAndRecord') OK

** And check again after 3 seconds.
EXPECTED (internals.audioSessionCategory() == 'None') OK
END OF TEST

