Bug 1245789 - Change GMPParent::InitPromise to instead use GenericPromise as defined in MozPromise.h. r=gerald

This makes it easier to chain promises returned by GMPParent::Init() with calls
to GMPServiceParent::LoadFromEnvironment() in the next patch.

MozReview-Commit-ID: KdGVvzAedJW
This commit is contained in:
Chris Pearce 2016-04-12 16:12:22 +12:00
Родитель 4eaf999528
Коммит c96ec15fb4
2 изменённых файлов: 25 добавлений и 27 удалений

Просмотреть файл

@ -106,7 +106,7 @@ GMPParent::CloneFrom(const GMPParent* aOther)
return NS_OK;
}
RefPtr<GMPParent::InitPromise>
RefPtr<GenericPromise>
GMPParent::Init(GeckoMediaPluginServiceParent* aService, nsIFile* aPluginDir)
{
MOZ_ASSERT(aPluginDir);
@ -121,12 +121,12 @@ GMPParent::Init(GeckoMediaPluginServiceParent* aService, nsIFile* aPluginDir)
nsCOMPtr<nsIFile> parent;
nsresult rv = aPluginDir->GetParent(getter_AddRefs(parent));
if (NS_FAILED(rv)) {
return InitPromise::CreateAndReject(rv, __func__);
return GenericPromise::CreateAndReject(rv, __func__);
}
nsAutoString parentLeafName;
rv = parent->GetLeafName(parentLeafName);
if (NS_FAILED(rv)) {
return InitPromise::CreateAndReject(rv, __func__);
return GenericPromise::CreateAndReject(rv, __func__);
}
LOGD("%s: for %s", __FUNCTION__, NS_LossyConvertUTF16toASCII(parentLeafName).get());
@ -775,7 +775,7 @@ ReadInfoField(GMPInfoFileParser& aParser, const nsCString& aKey, nsACString& aOu
return true;
}
RefPtr<GMPParent::InitPromise>
RefPtr<GenericPromise>
GMPParent::ReadGMPMetaData()
{
MOZ_ASSERT(mDirectory, "Plugin directory cannot be NULL!");
@ -784,7 +784,7 @@ GMPParent::ReadGMPMetaData()
nsCOMPtr<nsIFile> infoFile;
nsresult rv = mDirectory->Clone(getter_AddRefs(infoFile));
if (NS_FAILED(rv)) {
return InitPromise::CreateAndReject(rv, __func__);
return GenericPromise::CreateAndReject(rv, __func__);
}
infoFile->AppendRelativePath(mName + NS_LITERAL_STRING(".info"));
@ -797,21 +797,21 @@ GMPParent::ReadGMPMetaData()
nsCOMPtr<nsIFile> manifestFile;
rv = mDirectory->Clone(getter_AddRefs(manifestFile));
if (NS_FAILED(rv)) {
return InitPromise::CreateAndReject(rv, __func__);
return GenericPromise::CreateAndReject(rv, __func__);
}
manifestFile->AppendRelativePath(NS_LITERAL_STRING("manifest.json"));
return ReadChromiumManifestFile(manifestFile);
#else
return InitPromise::CreateAndReject(rv, __func__);
return GenericPromise::CreateAndReject(rv, __func__);
#endif
}
RefPtr<GMPParent::InitPromise>
RefPtr<GenericPromise>
GMPParent::ReadGMPInfoFile(nsIFile* aFile)
{
GMPInfoFileParser parser;
if (!parser.Init(aFile)) {
return InitPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
}
nsAutoCString apis;
@ -819,7 +819,7 @@ GMPParent::ReadGMPInfoFile(nsIFile* aFile)
!ReadInfoField(parser, NS_LITERAL_CSTRING("description"), mDescription) ||
!ReadInfoField(parser, NS_LITERAL_CSTRING("version"), mVersion) ||
!ReadInfoField(parser, NS_LITERAL_CSTRING("apis"), apis)) {
return InitPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
}
#ifdef XP_WIN
@ -874,7 +874,7 @@ GMPParent::ReadGMPInfoFile(nsIFile* aFile)
printf_stderr("GMPParent::ReadGMPMetaData: Plugin \"%s\" is an EME CDM"
" but this system can't sandbox it; not loading.\n",
mDisplayName.get());
return InitPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
}
#endif
#ifdef XP_WIN
@ -883,7 +883,7 @@ GMPParent::ReadGMPInfoFile(nsIFile* aFile)
// SSE2 isn't supported.
if (cap.mAPITags.Contains(NS_LITERAL_CSTRING("com.adobe.primetime")) &&
!mozilla::supports_sse2()) {
return InitPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
}
#endif // XP_WIN
}
@ -911,19 +911,19 @@ GMPParent::ReadGMPInfoFile(nsIFile* aFile)
}
if (mCapabilities.IsEmpty()) {
return InitPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
}
return InitPromise::CreateAndResolve(NS_OK, __func__);
return GenericPromise::CreateAndResolve(true, __func__);
}
#ifdef MOZ_WIDEVINE_EME
RefPtr<GMPParent::InitPromise>
RefPtr<GenericPromise>
GMPParent::ReadChromiumManifestFile(nsIFile* aFile)
{
nsAutoCString json;
if (!ReadIntoString(aFile, json, 5 * 1024)) {
return InitPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
}
// DOM JSON parsing needs to run on the main thread.
@ -931,7 +931,7 @@ GMPParent::ReadChromiumManifestFile(nsIFile* aFile)
&GMPParent::ParseChromiumManifest, NS_ConvertUTF8toUTF16(json));
}
RefPtr<GMPParent::InitPromise>
RefPtr<GenericPromise>
GMPParent::ParseChromiumManifest(nsString aJSON)
{
LOGD("%s: for '%s'", __FUNCTION__, NS_LossyConvertUTF16toASCII(aJSON).get());
@ -939,14 +939,14 @@ GMPParent::ParseChromiumManifest(nsString aJSON)
MOZ_ASSERT(NS_IsMainThread());
mozilla::dom::WidevineCDMManifest m;
if (!m.Init(aJSON)) {
return InitPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
}
nsresult ignored; // Note: ToInteger returns 0 on failure.
if (!WidevineAdapter::Supports(m.mX_cdm_module_versions.ToInteger(&ignored),
m.mX_cdm_interface_versions.ToInteger(&ignored),
m.mX_cdm_host_versions.ToInteger(&ignored))) {
return InitPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
}
mDisplayName = NS_ConvertUTF16toUTF8(m.mName);
@ -968,7 +968,7 @@ GMPParent::ParseChromiumManifest(nsString aJSON)
mLibs = NS_LITERAL_CSTRING("dxva2.dll");
#endif
return InitPromise::CreateAndResolve(NS_OK, __func__);
return GenericPromise::CreateAndResolve(true, __func__);
}
#endif

Просмотреть файл

@ -86,9 +86,7 @@ public:
GMPParent();
using InitPromise = MozPromise<nsresult, nsresult, true>;
RefPtr<InitPromise> Init(GeckoMediaPluginServiceParent* aService, nsIFile* aPluginDir);
RefPtr<GenericPromise> Init(GeckoMediaPluginServiceParent* aService, nsIFile* aPluginDir);
nsresult CloneFrom(const GMPParent* aOther);
void Crash();
@ -167,11 +165,11 @@ private:
RefPtr<GeckoMediaPluginServiceParent> mService;
bool EnsureProcessLoaded();
RefPtr<InitPromise> ReadGMPMetaData();
RefPtr<InitPromise> ReadGMPInfoFile(nsIFile* aFile);
RefPtr<GenericPromise> ReadGMPMetaData();
RefPtr<GenericPromise> ReadGMPInfoFile(nsIFile* aFile);
#ifdef MOZ_WIDEVINE_EME
RefPtr<InitPromise> ParseChromiumManifest(nsString aJSON); // Main thread.
RefPtr<InitPromise> ReadChromiumManifestFile(nsIFile* aFile); // GMP thread.
RefPtr<GenericPromise> ParseChromiumManifest(nsString aJSON); // Main thread.
RefPtr<GenericPromise> ReadChromiumManifestFile(nsIFile* aFile); // GMP thread.
#endif
#ifdef MOZ_CRASHREPORTER
void WriteExtraDataForMinidump(CrashReporter::AnnotationTable& notes);