Running the W3C test clearkey-mp4-playback-destroy-persistent-license.html (modified to use "org.chromium.externalclearkey" instead of "org.w3.clearkey"), the test fails when calling update() after a successful remove().
Currently AesDecryptor only supports update() with the message defined as "{keys:[{kty:oct,kid:rRP56ivmmLh19QSo48zqZA,k:...}]}". However, after a "license-release" message is received, the W3C tests respond with update("{kids:[rRP56ivmmLh19QSo48zqZA]}").
Not sure how the protocol is defined. However, the EME spec lists 3 choices for handling the response in an update() message:
- If sanitized response contains a license or key(s) ...
- If sanitized response contains a record of license destruction acknowledgement and sessionType is "persistent-license" ...
- Otherwise, process sanitized response, not storing any session data.
It appears that the current handling only supports the first case.
Given that the W3C tests use "{kids:[...]}" to handle the second case, Chromium should probably do the same.
There should also be a browser_test that checks remove (as noted here: https://cs.chromium.org/chromium/src/media/test/data/eme_player_js/player_utils.js?l=114).