Bug 1314858 - Make content process cache of GMP capabilities thread safe. r=gerald

MozReview-Commit-ID: 5zTFlfReBne

--HG--
extra : rebase_source : 90e6018b6574c0d2f5a51ad56ab87ef5b535f124
This commit is contained in:
Chris Pearce 2016-11-02 09:47:00 +13:00
parent 50e79d67a0
commit d6045d04f6

View File

@ -14,6 +14,7 @@
#include "GMPContentParent.h"
#include "nsXPCOMPrivate.h"
#include "mozilla/SyncRunnable.h"
#include "mozilla/StaticMutex.h"
#include "runnable_utils.h"
#include "base/task.h"
#include "nsIObserverService.h"
@ -179,6 +180,7 @@ struct GMPCapabilityAndVersion
nsTArray<GMPCapability> mCapabilities;
};
StaticMutex sGMPCapabilitiesMutex;
StaticAutoPtr<nsTArray<GMPCapabilityAndVersion>> sGMPCapabilities;
static nsCString
@ -198,6 +200,7 @@ GMPCapabilitiesToString()
void
GeckoMediaPluginServiceChild::UpdateGMPCapabilities(nsTArray<GMPCapabilityData>&& aCapabilities)
{
StaticMutexAutoLock lock(sGMPCapabilitiesMutex);
if (!sGMPCapabilities) {
sGMPCapabilities = new nsTArray<GMPCapabilityAndVersion>();
ClearOnShutdown(&sGMPCapabilities);
@ -223,7 +226,7 @@ GeckoMediaPluginServiceChild::HasPluginForAPI(const nsACString& aAPI,
nsTArray<nsCString>* aTags,
bool* aHasPlugin)
{
MOZ_ASSERT(NS_IsMainThread());
StaticMutexAutoLock lock(sGMPCapabilitiesMutex);
if (!sGMPCapabilities) {
*aHasPlugin = false;
return NS_OK;