Commit Graph

32 Commits

Author SHA1 Message Date
Chris Pearce
5734680cc7 Bug 1375708 - Use base::Time() instead of time(0) in WidevineDecryptor::GetCurrentWallTime(). r=gerald
On Linux some implementations of time(0) appear to be suffering from integer
overflow and giving us the wrong dates. This causes the time we expose to the
CDM to be wrong, and so licenses passed to the CDM are failing to authenticate,
and Netflix is thus broken on some Linux systems.

This is only happening in Firefox 54 and earlier, as in those versions we use
the WidevineDecryptor to talk to the CDM. In 55 (in beta) and later we use the
PChromiumCDM protocol to talk to the CDM. This doesn't use time(0) to get a
time for the CDM, so it's immune to the problem here.

So this patch makes the GetCurrentWallTime() implementation in
WidevineDecryptor match the code currently being used on Nightly and Beta in
the ChromiumCDMChild::GetCurrentWallTime() function.

Since we use the PChromiumCDM protocol to talk to the CDM on Nightly and Beta
by default, the WidevineDecryptor isn't actually being used on Nightly and
Beta. So this patch will only cause a behaviour change in Release, which still
uses the old backend. However it will make Release run the same code that we're
running in Nightly and Beta, so it should be safe to uplift to Release.

MozReview-Commit-ID: J58iDyinyQG

--HG--
extra : rebase_source : dcdf4a846f7b007526aa626db24598942f13f01d
2017-06-23 16:02:14 +12:00
Chris Pearce
af3f34b472 Bug 1345341 - Ensure Widevine expiration time of 0 means 'never expire'. r=jwwang
MozReview-Commit-ID: DtJnwDo7KZq

--HG--
extra : rebase_source : de55240a54c28046eda20530f610248ba2a02161
2017-03-08 17:00:07 +13:00
Chris Pearce
6425456721 Bug 1342822 - Backed out changeset 70bc7d4e8512 (bug 1338924). r=gerald
MozReview-Commit-ID: DXGgfMMghOD

--HG--
extra : rebase_source : e5d329122754dfab6750ff2aedadc1f65a52f0f8
2017-02-27 13:58:27 +13:00
Chris Pearce
892e18f12e Bug 1342822 - Backed out changeset a379d64f8496 (Bug 1338924 patch 3). r=gerald
MozReview-Commit-ID: 4aFx52mwpQ6

--HG--
extra : rebase_source : 45cfb3aba27e93d49c5ebf64510d0143f1c57654
2017-02-27 13:57:39 +13:00
Chris Pearce
83077824b8 Bug 1341497 - Move WidevineBuffer and WidevineDecryptedBlock into WidevineUtils. r=gerald
This makes it easier to reuse in the ChromiumCDM code.

Also add an ExtractBuffer() method, which allows us to Move() the contained nsTArray
out without needing to copy the data.

MozReview-Commit-ID: 9suJSfXTVYy

--HG--
extra : rebase_source : 6eec99eb5329f3b8c3bb14d22459fee3bd95caf5
2017-02-22 15:55:38 +13:00
Iris Hsiao
97fb7c952a Backed out changeset 5ec123aec8aa (bug 1341497) for bustage 2017-02-22 11:49:25 +08:00
Chris Pearce
994e1136fd Bug 1341497 - Move WidevineBuffer and WidevineDecryptedBlock into WidevineUtils. r=gerald
This makes it easier to reuse in the ChromiumCDM code.

Also add an ExtractBuffer() method, which allows us to Move() the contained nsTArray
out without needing to copy the data.

MozReview-Commit-ID: 9suJSfXTVYy

--HG--
extra : rebase_source : 89540b254249833cf8bb09792bb33cc402977d5a
2017-02-22 15:55:38 +13:00
Chris Pearce
7e95ac21ed Bug 1341135 - Rename CDM log macro from Log to CDM_LOG. r=gerald
This prevents the Log macro from colliding with the Log function on
IPC ParamTraits definitions.

MozReview-Commit-ID: Hd2v6ilbmGc

--HG--
extra : rebase_source : d26d495878706fe5a2009dd33d226cc71193be13
2017-02-21 13:07:10 +13:00
Tom Tromey
5f8f360823 Bug 1060419 - make log_print use Printf.h, r=froydnj
MozReview-Commit-ID: BIZ1GQEZ1vs

--HG--
extra : rebase_source : 2f1f0aa12493c44f352d9a7e8683e7bb72d2d75b
2016-12-15 20:16:31 -07:00
Chris Pearce
c5863900ee Bug 1338924 - Throttle decrypts to 2s of content per 1s of wall time. r=gerald
This ensures we don't trigger any of the CDMs in-built throuput
limiting protections.

MozReview-Commit-ID: EgNn8WpUZZg
2017-02-10 22:20:43 +13:00
Chris Pearce
4c05a6c492 Bug 1338924 - Pass duration of sample being decrypted to CDM. r=gerald
MozReview-Commit-ID: 3UujuYPpfJi
2017-02-14 11:29:32 +13:00
Jay Harris
1bcf5b83cb Bug 1318965 - Fixes some bugs in the Widevine logging code and improves existing logging r=cpearce
MozReview-Commit-ID: 6ov80Xwi8OR

--HG--
extra : rebase_source : 1975ebdf7a1020c7e178e181559bdc1d9f9456d5
extra : histedit_source : 09f5788602ac73e778f56874c732703a44325666
2017-01-17 14:03:25 +13:00
Jay Harris
c723828bd0 Bug 1318965 - Fixes a bug in the WidevineAdapter wherein session load failures were not adapted correctly r=cpearce
MozReview-Commit-ID: 2ze4d8EuHr9

--HG--
extra : rebase_source : 366f8da20f5b511eafcdcd20113d04d268f6321b
extra : histedit_source : 50f128f838b277a4287358e42c91fa95c67bb2fd
2016-12-20 14:35:55 +13:00
Wes Kocher
07fd8cebf7 Backed out 3 changesets (bug 1318965) for frequent media test failures a=backout
Backed out changeset 3f756d8ee4cf (bug 1318965)
Backed out changeset 4bdf65d60c9e (bug 1318965)
Backed out changeset c1e2b6c14a7f (bug 1318965)

MozReview-Commit-ID: 6CPk5oS5AOw

--HG--
extra : source : babe3f8a0258fb592e17a590450de6ceb09460c3
2017-01-13 13:23:31 -08:00
Jay Harris
a5aa2bceb7 Bug 1318965 - Fixes a bug in the WideVineAdapter wherein session load failures were not adapted correctly r=cpearce
MozReview-Commit-ID: 2ze4d8EuHr9

--HG--
extra : rebase_source : 185272b47b0c70b83d6b88819e222a71e0e15dcc
extra : amend_source : b6d0b7e6f4705700d73cacfb024ea3a5c6f17a56
2016-12-20 14:35:55 +13:00
Sylvestre Ledru
caf1487b6c Bug 1317430 - Avoid a unnecessary copy by passing a const & in dom/media/ r=jya,pehrsons
MozReview-Commit-ID: 9MDVY9mgui0

--HG--
extra : rebase_source : d077c3f4d39e9914c591a0ef671a7db99679c608
2016-11-14 23:15:53 +01:00
Andi-Bogdan Postelnicu
65ae72060c Bug 1317241 - Use C++11's override and remove virtual where applicable in dom/ r=baku
MozReview-Commit-ID: 8jUAehd1odv

--HG--
extra : rebase_source : 13375a14447ce344214fa30babf540de0a394c6a
2016-11-15 13:09:07 +02:00
Andi-Bogdan Postelnicu
aaf2063029 Bug 1317241 - Replace default bodies of special member functions with = default in dom/. r=baku
MozReview-Commit-ID: 12AHOhrpaNO

--HG--
extra : rebase_source : 7881277a13fe7389b95635ee9b94f1686f56d142
2016-11-14 11:40:37 +02:00
Chris Pearce
d60faf6fad Bug 1306314 - Use decryptor ID in WidevineAdapter to link decryptors with decoders. r=gerald
Store a mapping of decryptor ID to the CDM instance that the corresponding
WidevineDecryptor is using. This allows us to link GMPDecryptor instances
with the corresponding GMPVideoDecoder.

The CDM is stored inside the CDMWrapper, so that we destroy the CDM instance
when the last reference to the CDM is dropped.

MozReview-Commit-ID: FQYzh77yjoC

--HG--
extra : rebase_source : 772d4bead18a9b88e7f9ee30b0f169a192322e24
2016-11-11 15:39:10 +13:00
Iris Hsiao
85b8be1656 Backed out changeset d37e28309560 (bug 1306314) 2016-11-14 11:07:19 +08:00
Chris Pearce
14a0cc34ed Bug 1306314 - Use decryptor ID in WidevineAdapter to link decryptors with decoders. r=gerald
Store a mapping of decryptor ID to the CDM instance that the corresponding
WidevineDecryptor is using. This allows us to link GMPDecryptor instances
with the corresponding GMPVideoDecoder.

The CDM is stored inside the CDMWrapper, so that we destroy the CDM instance
when the last reference to the CDM is dropped.

MozReview-Commit-ID: FQYzh77yjoC

--HG--
extra : rebase_source : 7e8c264200e904a4f5a1311f11cd317d98df9791
2016-11-11 15:39:10 +13:00
Chris Pearce
f98c7aa8b5 Bug 1313202 - Convert InvalidAccessErrors coming out of the Widevine CDM to TypeErrors like Chrome does. r=gerald
MozReview-Commit-ID: FEY08LZheTf

--HG--
extra : rebase_source : e6ddc8a5f7740a5e09822ea1b16ca58b05dee919
2016-10-27 14:04:10 +13:00
Kilik Kuo
4d162fcd4a Bug 1303922 - Part 1: Make EME keystatuschanged information notified in batch. r=cpearce
MozReview-Commit-ID: IeExaQ62qTF

--HG--
extra : transplant_source : t%D4%AFxu%D6%40%F8hU%D2%94%D4q8q%EDy%08-
2016-10-04 17:18:46 +08:00
Bryce Van Dyk
e06afda01b Bug 1279077 - Update GMP/EME path to support webm. r=cpearce
Update handling of VP8, VP9 to enable decryption and decoding via widevine.
Update handling with further validation to make sure that invalid video types
are rejected when trying to create widevine decryptor session or init widevine
decoders.

MozReview-Commit-ID: 8FOvUJfxr6L

--HG--
extra : rebase_source : 0f6aed8256d7f106a598b09e6f11efe80f0e4bb2
2016-07-29 15:53:22 +12:00
Chris Pearce
f49856bc79 Bug 1278198 - Pipe through distinctive identifier and persistent state allowed. r=gerald
MozReview-Commit-ID: A92e0XGp5s4

--HG--
extra : rebase_source : 09f7ba18c9b81263aa345cc7f34f0ef2a2548482
2016-07-07 17:26:15 +12:00
Chris Pearce
191e25eeb7 Bug 1276132 - Make more Widevine class constructors explicit to keep gcc happy. r=jwwang
Fixes compile errors on Linux when Widevine is compiled.

MozReview-Commit-ID: 19qQw02CqdQ

--HG--
extra : rebase_source : 335124655869da1f899986f7dcd0d7ec1e441f6a
2016-05-31 12:05:24 +12:00
Phil Ringnalda
7270ed519a Back out 4 changesets (bug 1276132) for browser_gmpProvider.js failures
CLOSED TREE

Backed out changeset 511a2389ca48 (bug 1276132)
Backed out changeset 91b3cdd0640a (bug 1276132)
Backed out changeset 09b9972e36f9 (bug 1276132)
Backed out changeset 69052d4e3dbb (bug 1276132)
2016-06-08 20:36:22 -07:00
Chris Pearce
57fa470692 Bug 1276132 - Make more Widevine class constructors explicit to keep gcc happy. r=jwwang
Fixes compile errors on Linux when Widevine is compiled.

MozReview-Commit-ID: 19qQw02CqdQ

--HG--
extra : rebase_source : ebb98b25738e0438d873834f07c72be1f4eb71db
2016-05-31 12:05:24 +12:00
Chris Pearce
b4b5bfb254 Bug 1270689 - Clear WidevineDecryptor::mCallback in WidevineDecryptor::DecryptingComplete(). r=gerald
The OnSessionClosed() callback is happening on a timer, after
WidevineDecryptor::DecryptingComplete() has been called. So mCallback could
actually be non-null because DecryptingComplete() has been called, but the
object pointed to by mCallback has been deallocated, and mCallback is a
dangling pointer.

MozReview-Commit-ID: 4xdHYRn7EAS

--HG--
extra : source : 55d79997aa3e3e2133d9155c37f4435317b44061
2016-05-16 14:34:20 +12:00
Chris Pearce
46a1552995 Bug 1271242 - Remove GMPDecryptorCallback::SetCapabilities(). r=jwwang
Now that GMPParent detects whether gmp-clearkey can decode using AAC/H.264
using WMF before reporting gmp-clearkey's GMPParent can decode AAC/H.264, we
don't need the GMPDecryptorCallback::SetCapabilities() callback from the GMP to
signal to the PDMFactory that the GMP can decode. We can now trust what the
GMPService tells us.

So we can remove the "waiting for CDM caps" step in the state machine's startup
sequence. And all the plumbing. :)

If we need more caps, like for an decode-and-render path, we can declare those
as API strings in the info file.


MozReview-Commit-ID: E0QhU4cYhjo

--HG--
extra : rebase_source : 7d15ab6a45bac88c15c053f416d941b5fe0807b0
2016-05-10 10:28:38 +12:00
Chris Pearce
817b6c705e Bug 1270689 - Null-check WidevineDecryptor::mCallback before use. r=gerald
We've observed some crashes derefing the callback pointer, which may be
occuring due to shutdown happening before init has setup the callback pointer.

MozReview-Commit-ID: JsOqfjejMVI

--HG--
extra : rebase_source : e175dd8556ad50316bc16232782e593eea3e2ec8
2016-05-09 14:21:26 +12:00
Chris Pearce
1a971257c4 Bug 1245789 - Add Widevine CDM -> GMP adapter. r=gerald
Add a GMPAdapter implementation that adapts the Widevine Chrome CDM to
the GeckoMediaPlugin API. We're still allocating memory for video frames
in non shmem buffers, and copying them over to a shmem before returning
them to Gecko, we can fix that at a later date. I hook this adapter up
in a later patch in the series.


MozReview-Commit-ID: 7iSFODVWPu3
2016-04-12 16:12:20 +12:00