Граф коммитов

56 Коммитов

Автор SHA1 Сообщение Дата
Bill McCloskey f115503a0b Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-26 14:19:58 -07:00
Carsten "Tomcat" Book 8a1350b5a6 Backed out changeset 4f6302a98ae4 (bug 1372405)
--HG--
extra : rebase_source : 41632f3158e88e692809731394a683d065a73dfb
2017-06-21 13:59:26 +02:00
Bill McCloskey 6b3e84ed5f Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-20 21:44:11 -07:00
Carsten "Tomcat" Book ea1b86680c Backed out changeset 9846de3bd954 (bug 1372405)
--HG--
extra : rebase_source : 5d4a48e8ec394c329994689d938d2a6e9b2752b0
2017-06-20 08:27:02 +02:00
Bill McCloskey 4592152411 Bug 1372405 - Provide names for all runnables in the tree (r=froydnj)
MozReview-Commit-ID: DKR6ROiHRS7
2017-06-19 22:25:47 -07:00
Chris Pearce f1b6111764 Bug 1352924 - Keep list of GMPServiceParents in GeckoMediaPluginServiceParent. r=gerald
This will allow us to broadcast a notification to the GMPServices running in
the content processes when they need to shutdown.

MozReview-Commit-ID: FviFDgNMnUV

--HG--
extra : rebase_source : f4ad3c6df0e14c88db1199fbe6281d67f98590ae
2017-03-31 11:43:27 +13:00
Chris Pearce ae66452fa5 Bug 1315850 - Add GMPService::GetContentChild() with unresolved NodeId. r=gerald
We currently do two sync IPCs to launch a GMP; one from content to main process
to get the nodeId and a second to get a GMPContentParent for that nodeId.

We use the nodeIds to ensure that the GMPVideoDecoder and GMPDecryptor actors
correspond to the same CDM instance/process. However once we switch to having
one protocol that encompasses both decryption and decoding, we don't need to
worry about making sure our decoder and decryptor actors match up, as we only
have one underlying connection to the CDM instance.

So we can merge the get nodeId and get GMPContentParent operations into a
single operation that does both. To do this, we just need to pass the
parameters used to calculate the nodeId in the LaunchGMP message.

Once we've switched EME over to using the CDM via a single actor, we can remove
the nodeId nsCString from our media code and from GMPVideoDecoder and
GMPVideoEncoder.


MozReview-Commit-ID: 7GXlJ37fOTZ

--HG--
extra : rebase_source : cf20a165048f777f34dab01fce984018ad641b85
2016-11-25 10:30:38 +13:00
JW Wang 017020976f Bug 1346678 - Label runnables in dom/media/gmp/GMPParent.cpp and its friends. r=cpearce
MozReview-Commit-ID: DWYx30T7gCJ

--HG--
extra : rebase_source : 68caf369926ea08cd7a56846c1de1cf75a6c54e6
extra : intermediate-source : b57189c8fa07cc066cf430358401c471b0927063
extra : source : b014f243626f5361a496edacb639a663abea2964
2017-03-09 15:31:11 +08:00
Andrew McCreight 556961ac46 Bug 1321871, part 2 - Remove PContent opens of PGMPService. r=peterv
--HG--
extra : rebase_source : 8db0331e7f1296f96f171cbd573ff40848967c49
2017-01-05 12:55:57 -08:00
Andrew McCreight 1951ea01ff Bug 1321871, part 1 - Replace use of opens and bridges in GMP protocols with endpoints. r=peterv
This removes the open of PGMPContent from PGMP, the bridge of
PGMPService and PGMP from PGMPContent, and the spawn of PGMP from
PGMPService. I did these changes all at once because the way the
bridges works it was hard to split it up.

--HG--
extra : rebase_source : d9311e3047b9855ad422838f5a8b6bfdc382d225
2017-01-05 12:55:27 -08:00
Chris Pearce abf5ab3771 Bug 1331829 - Remove async shutdown GMP API. r=gerald
Now that we're not supporting Adobe EME anymore, we don't need to
provide a mechanism for GMPs to block browser shutdown.

MozReview-Commit-ID: KUC94IBQiod

--HG--
extra : rebase_source : ed521f28e272de11b2d0c4546b98baf6bd7c6e72
2017-01-18 15:01:56 +13:00
Andrea Marchesini f7f5990527 Bug 1317927 - Media caching needs to use origin attributes, r=cpearce, r=jesup 2016-12-07 07:07:09 -10:00
Chris Pearce 27f8f13960 Bug 1316215 - Merge SelectGMP and LaunchGMP into one synchronous IPC operation. r=gerald
We were seeing almost permaorange failures in the WebRTC H.264/GMP tests
due to the GMP being shutdown in the parent process in between the
content process performing an OOP select operation and then performing
an OOP launch operation.

That is, in GeckoMediaPluginServiceChild::GetContentParent() in between
the SendSelectGMP completing and the SendLaunchGMP completing, the GMP
would shutdown and so when the launch operation ran in the main process
it would fail.

The select and launch are seperate operations so that the crash handler
can be reported to the content process and an association can be made
in the content process between the plugin ID and the crash helper before
we try to launch the GMP. This is so that if the GMP crashes on startup,
we're ready to handle the crash.

However it turns out that if the GMP crashes on startup, the crash report
message comes in after another round of the event/IPC message loop. So we
actually do have time in the content process to connect the crash helper
after the launch fails.

So in order to fix the problem of the GMP shutting down in between select
and launch, we can partially revert the changes I made in Bug 1267918 to
merge selecting and launching GMPs back into a single operation.


MozReview-Commit-ID: 5n4T1Gqlvr3

--HG--
extra : rebase_source : 6e6892a5e32a485b5bfc2f93bddb2d2fe5a422bd
2016-11-22 14:17:59 +13:00
Chris Pearce c93e08bf59 Bug 1316215 - Promisify GMPService GetGMPContentParent and GetServiceChild. r=gerald
MozReview-Commit-ID: 5ydGmZWGzWG

--HG--
extra : rebase_source : bc61628e97243db55b68d1efc93e7b55f32628e5
extra : intermediate-source : 7ca4bd360797b8207d26e46192400307cf046593
extra : source : eda96f88317dbf0c696aeaab8993bf2f030517c0
2016-11-09 15:52:22 +13:00
Kan-Ru Chen f8100451db Bug 1314254 - Add mozilla::ipc::IPCResult type and convert IPDL handlers to use new return type. r=billm
We will use the new type for the generated IPDL message handler
prototype to make sure correct error handling method is called.

MozReview-Commit-ID: AzVbApxFGZ0
2016-11-15 04:26:00 +01:00
Chris Pearce c28985ad89 Bug 1314445 - Remove GMPService::GetPluginVersionForAPI. r=gerald
MozReview-Commit-ID: ybq6ZZlA9P

--HG--
extra : rebase_source : 1a8356740cbb9d73f7d851cb82f8b71c0ca364c4
2016-11-02 11:57:14 +13:00
Chris Pearce 70807a8f54 Bug 1312540 - Remove GetGMPPluginVersionForAPI IPC. r=mconley
MozReview-Commit-ID: EKtFKd1dgjJ

--HG--
extra : rebase_source : 5ebac34f9346fc76e56e070e32d948e46169c085
2016-11-01 18:48:18 +13:00
Chris Pearce 0a480d38f2 Bug 1312540 - Maintain a cache of GMPs capabilities in content processes. r=billm,gerald
In order to avoid doing a synchronous call from content process to chrome
process in order to determine what GMPs are usable, maintain a cache of GMP
capabilities in the content processes.

We must seed the cache when content processes are created, as the GMP service
is started up and GMPs are added to it before the first (or any subsequent)
content process is created.


MozReview-Commit-ID: Eb4Pu81XHmn

--HG--
extra : rebase_source : ef5de4dd17ee337ca378569691e55d4cfb7939ef
2016-11-01 16:25:19 +13:00
Cervantes Yu a703779628 Bug 1279612 - Block xpcom-will-shutdown before GMPServiceParent instances are shut down. r=gerald
MozReview-Commit-ID: HdF1RDxVXv1

--HG--
extra : rebase_source : f532fd60bd07ab91c6e089822258a0e3d7102a7b
2016-09-08 11:08:27 +08:00
Phil Ringnalda fa1e0afddb Backed out changeset b82fa1825412 (bug 1279612) for static analysis bustage
CLOSED TREE
2016-09-21 20:46:01 -07:00
Cervantes Yu 4cbbce3d03 Bug 1279612 - Block xpcom-will-shutdown before GMPServiceParent instances are shut down. r=gerald
MozReview-Commit-ID: HdF1RDxVXv1

--HG--
extra : rebase_source : caf2279eb5aa57a74a035c45d81fcb4ee29ef42f
2016-09-08 11:08:27 +08:00
Tim Huang 52370e14ba Bug 1278037 - Part 4: Modify the mozIGeckoMediaPluginChromeService.forgetThisSite() to take the originAttributes pattern as an argument. r=cpearce
--HG--
extra : rebase_source : c480a89fabd99a6ead348c172e68f524dbb2b458
extra : histedit_source : 145d639edff67799e33dd2c4592b4f5902b872e5
2016-07-28 11:46:06 +08:00
Chris Pearce e0a9078a6f Bug 1267918 - Add GMPCrashHelper to GMPService::GetGMP* functions. r=gerald
This enables callers to specify a way to determine the correct window to
dispatch the PluginCrashed event to should the GMP actor crash.

We need a way to determine the correct window at crash time, as the GMP's
window can change at runtime. For example, if the GMP is being used for
unencrypted decoding, the <video> element can be moved to a new browser window
at runtime.

Note: I don't handle disconnecting the GMPCrashHandlers in this patch; we do
delete the GMPCrashHandlers in this patch when their associated GMP crashes, and
in the next patch we handle disconnecting GMPCrashHandlers in the case where
we don't crash.

MozReview-Commit-ID: DrwcZAB6Ys0

--HG--
extra : rebase_source : 8da188b68456914773e6adae8cbccd6bf6a6e7a7
2016-06-29 11:41:56 +12:00
Chris Pearce fed9c17730 Bug 1267918 - Split LoadGMP message into select and load messages. r=gerald
This will allow us to attach a crash handler to a GMP process after deciding
which GMP to load but before actually loading it.


MozReview-Commit-ID: HwBZU2Q4TX6

--HG--
extra : rebase_source : a68b9cbc31c0b886ba491f8f15f02e4d0e32cae7
2016-06-29 11:41:52 +12:00
Jean-Yves Avenard d31cb0499b Bug 1206637: P2. Replace all cached preferences with MediaPrefs ones. r=cpearce
Additionally, clean up stray and unused Preferences.h header.

MozReview-Commit-ID: IcPrD2inkDE

--HG--
extra : rebase_source : c3c6e37767627db3601090c2855a3dfa98cb4368
2016-05-10 11:02:28 +10:00
Gerald Squelart a147091776 Bug 1268434 - Mutex-protect and check GMP abstract thread before uses - c?cpearce r=cpearce
GeckoMediaPluginService::mAbstractThread was not reset as expected from
ShutdownGMPThread, meaning it would retain a reference to the GMP thread, and
it would allow dispatch attempts to the GMP thread after shutdown.

Also mAbstractThread was not protected by a mutex (as mGMPThread was), which is
definitely needed now that it can be reset at shutdown time.

As its prefix implies, GetAbstractThread could return a nullptr, so it should
be checked before every use.
Note that this GetAbstractThread call (and its check) has been moved closer to
the start of functions using it, to avoid unnecessary and potentially invariant-
breaking partial work to take place when we can know in advance that it won't
fully succeed because the GMP thread is not available.

MozReview-Commit-ID: B1drOeM65hr

--HG--
extra : rebase_source : 1d389c663e26a25035bf2aa22b2cca478ef954fe
2016-05-06 21:36:22 +10:00
Chris Pearce ad956f902f Bug 1268984 - Store GMPStorage on GMPServiceParent so that it persists inside the same PB session. r=gerald
Prior to this change, we'd store the GMPStorage records for private browsing
sessions in the GMPStorageParent. The problem with this is that they only have
a lifespan matching their corresponding GMPParent. This means that if a GMP
stores something in a PB session, and the GMP is shutdown and then re-created,
we are likely to loose the stored data. This could mean that the PB session
gets results it doesn't expect, and thus expose a way for PB mode to be
detected.


MozReview-Commit-ID: 1OMD0LvidYs

--HG--
extra : rebase_source : 75661a7b1717e39a29c3e12ad203d9273e8485ab
2016-05-05 11:41:33 +12:00
Chris Pearce cc6122ebd1 Bug 1268984 - Ensure GMPs are re-inserted in GMPServiceParent::mPlugins in the same order in ReAddOnGMPThread. r=gerald,jesup
The GMP which GeckoMediaPluginServiceParent::FindPluginForAPIFrom() returns
depends on the order in which GMPs lie in GMPServiceParent::mPlugins. However
when we shutdown a GMPParent we remove and then re-append the GMPParent to
mPlugins. This means the order in which GMPs lie in the list changes.

So when WebRTC requests an H.264 decoder, the first time it will get OpenH264,
since that's first in the list. But once we dispose of that decoder, its
GMPParent will be cloned and the clone will be appended to the end of the
list. This means the next time WebRTC requests a decoder, it'll get whatever
was next in the list.

This could be the Adobe GMP, which seems to be able to handle whatever WebRTC
is putting into it. However, if you do this enough times, you'll get the
Widevine CDM, which can't handle whatever WebRTC is putting into it.

So a quick hack to fix this is in ReAddOnGMPThread is to re-insert the clone
of the GMP into the slot in mPlugins that the original occupied. Then WebRTC
will always get OpenH264 whenever it requests for an H.264 decoder, as the
order of the GMPParents in mPlugins won't change.




MozReview-Commit-ID: Ii4AMqDqAo9

--HG--
extra : rebase_source : 62c10bc5b77ef259917aa6c88309be2423c93914
2016-05-04 13:57:20 +12:00
Jim Mathies 86d8f2f66f Bug 1263951 - Avoid trying to initialize new GMP instances once the browser enters shutdown. r=cpearce
MozReview-Commit-ID: G6ND2LyT0tp
2016-04-26 12:11:26 -05:00
Kyle Huey c73656947b Bug 1265927: Move nsRunnable to mozilla::Runnable, CancelableRunnable to mozilla::CancelableRunnable. r=froydnj 2016-04-25 17:23:21 -07:00
Chris Pearce 753e89fc45 Bug 1245789 - Expose AsyncAddPluginDirectory on GMPServiceParent. r=gerald
Now that adding GMPs to the GMP service is async under the hood, for safety
the GeckoMediaPluginServiceParent needs to expose when adding a GMP
has finished so that things that depend on GMPs being present can be reliable.
For example, the call to GMPDecoderModule::UpdateUsableCodecs() that happens
at the end of AddPluginDirectory depends on the GMPs being up to date, so it
needs to happen after the add has finished.

MozReview-Commit-ID: Fn8b0GNILNg
2016-04-12 16:12:22 +12:00
Chris Pearce 1286c752d4 Bug 1245789 - Ensure GMP service has added all plugins before running GMP remove tests. r=gerald
MozReview-Commit-ID: 488sYVQbS4x
2016-04-12 16:12:22 +12:00
Chris Pearce 4038e1e9d9 Bug 1245789 - Ensure GMPs have finished loading from MOZ_GMP_PATH before GMPServiceParent::GetContentParentFrom returns. r=gerald
This means we wait for the GMP service to have finished detecting all available
GMPs from the environment before we start creating GMP actors. Without this, we
get gtest failures due to gtests trying to create GMP actors before the async
GMPServiceParent::LoadFromEnvironment() has completed, i.e. we fail to create
actors because we've not had a chance to setup the GMPParent capabilities yet.


MozReview-Commit-ID: Hl4o1c4QthJ
2016-04-12 16:12:22 +12:00
Jean-Yves Avenard a9394d5946 Bug 1240411: P5. Clean up GMP headers. r=cpearce
Remove redundant virtual keywords
2016-01-19 19:47:32 +11:00
Chris Pearce f212540c95 Bug 1232527 - Remove GMPVideoDecoderTrialCreator and friends. r=jwwang
Remove GMPVideoDecoderTrialCreator, and the tests and IPC/IDL supporting it.

--HG--
extra : commitid : HlbJPl2gPAl
extra : rebase_source : fe1773014e5d09da264f85d464e408aca46a60c4
2015-12-15 15:17:22 +13:00
Mike Hommey 58b657359f Bug 1225682 - Don't use nsAuto{,C}String as class member variables in dom/media/. r=cpearce 2015-12-02 11:04:37 +09:00
Chris Pearce 537e205dfc Bug 1228215 - Store each GMP's storage and nodeId salt in separate directories. r=jwwang 2015-11-27 10:53:32 +13:00
Chris Pearce 6818d3ec67 Bug 1228215 - Add a 'gmpName' parameter to GMPService::GetNodeId(), so each GMP can see a different nodeId for the same origin. r=jwwang 2015-11-27 10:53:31 +13:00
Nathan Froyd 01583602a9 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi

--HG--
rename : mfbt/nsRefPtr.h => mfbt/RefPtr.h
2015-10-18 01:24:48 -04:00
Chris Pearce 2c28e66665 Bug 1209385 - Backout 417dab86a413 and 6078e8b4878b. r=backout 2015-10-14 19:42:25 +13:00
Chris Pearce a76b46867d Bug 1209385 - Crash GMPs that don't respond to GMPVideoDecoder::Reset(). r=jwwang 2015-09-30 06:56:07 +13:00
Edwin Flores 5a3685e229 Bug 1172396 - Update GMP trial creation pref from chrome process - r=cpearce 2015-09-01 17:31:48 +12:00
Gerald Squelart 459295e9c7 Bug 1185392 - Use a separate mutex to protect mAsyncShutdownPluginStatesMutex, as mMutex could already be held when trying to update the states. r=cpearce 2015-07-19 17:42:00 +02:00
Gerald Squelart 35f6d9fd0f Bug 1184432 - Use nsClassHashtable::ConstIter in GeckoMediaPluginServiceParent::AsyncShutdownPluginStates. r=cpearce 2015-07-16 17:00:00 -04:00
Gerald Squelart 7c33619cb0 Bug 1183433 - Implement centralized crash report annotations, so that all async-shutdown hangs use only one key, and keeping track of all states each plugin has been through. r=cpearce 2015-07-15 21:32:00 -04:00
Gerald Squelart 36c7e0dff4 Bug 1183433 - Remove G-M-PServiceParent::AbortAsyncShutdown declaration, as it's not defined nor used anywhere. r=cpearce 2015-07-15 14:39:00 -04:00
Gerald Squelart b383286615 Bug 1173634 - Report pending async shutdowns in shutdown hangs. r=cpearce
--HG--
extra : rebase_source : 1b3f4d52abf0bacd066848834728783e9069a545
2015-06-17 17:35:00 +02:00
Mike Conley 97a46ed1e0 Bug 1146955 - Make the GMP pluginID a uint32_t, and dispatch it in the PluginCrashed event. r=jesup r=mrbkap
--HG--
extra : rebase_source : ef8893d470e437d93a44b393f595518acb411852
extra : source : ad87e781794d5bb5337feb6e2608730075a7f71e
extra : histedit_source : 91cbbdedc9273982d0eb6b3c58269c73e0f46f63
2015-05-04 15:40:29 -04:00
Edwin Flores 93909b8ff4 Bug 1156560 - Prefer old CDMs on update if they are in use - r=cpearce 2015-04-22 10:22:23 +12:00
Edwin Flores 22ff3a6f11 Bug 1148071 - Fix CDM update behaviour - r=cpearce 2015-04-04 17:03:16 +13:00