Implement "Key Presence" step in "Encrypted Block Encounted" algorithm in EME.

See related spec here: http://dvcs.w3.org/hg/html-media/raw-file/tip/encrypted-media/encrypted-media.html#algorithms-enrypted-block

If the AesDecryptor cannot find the decryption for the encrypted buffer, it returns a kNoKey.

In ProxyDecryptor, if the input cannot be decrypted due to kNoKey, the ProxyDecryptor will cache the encrypted buffers and callbacks and fire a needkey event. When some key is added (AddKey called) later, it will try to decrypt these buffers again. The callbacks will be fired on the same thread where Decrypt() was called originally.

BUG=125401, 125753
TEST=media_unittest, media layout_tests

Review URL: https://chromiumcodereview.appspot.com/10822026

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149952 0039d316-1c4b-4281-b951-d872f2087c98
15 files changed