mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-09 09:18:42 +09:00
Revert following changes for fixing Primetime issue:
- Issue #26 Part 2a: make more EME code conditional. (99118e38e) - Issue #26 - Part 2b: Stub out GMPDecryptorProxy functions. (d44c61bf6) - Issue #26 - Part 2c: Remove dependence on gmp/widevine-adapter/* (4c9689f68) - Issue #1392 - Change --enable-eme to MOZ_ARG_ENABLE_BOOL and remove MOZ_EME_MODULES (832d84d2c) - [Basilisk] Issue MoonchildProductions/UXP#1392 - Remove usage of MOZ_EME_MODULES (3a165cd) - Issue #65 - Remove AppConstants from toolkit/mozapps/extensions (758618b60)
This commit is contained in:
parent
d27e162ef9
commit
03b286c4d8
29 changed files with 64 additions and 199 deletions
|
|
@ -45,6 +45,9 @@ if CONFIG['OS_ARCH'] == 'WINNT':
|
|||
RCINCLUDE = 'splash.rc'
|
||||
DEFINES['MOZ_PHOENIX'] = True
|
||||
|
||||
for cdm in CONFIG['MOZ_EME_MODULES']:
|
||||
DEFINES['MOZ_%s_EME' % cdm.upper()] = True
|
||||
|
||||
# Control the default heap size.
|
||||
# This is the heap returned by GetProcessHeap().
|
||||
# As we use the CRT heap, the default size is too large and wastes VM.
|
||||
|
|
|
|||
|
|
@ -170,7 +170,7 @@ pref("lightweightThemes.update.enabled", true);
|
|||
pref("lightweightThemes.getMoreURL", "http://@AM_DOMAIN@/personas/");
|
||||
pref("lightweightThemes.recommendedThemes", "[{\"id\":\"recommended-1\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/a-web-browser-renaissance/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/1.header.jpg\",\"footerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/1.footer.jpg\",\"textcolor\":\"#000000\",\"accentcolor\":\"#f2d9b1\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/1.icon.jpg\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/1.preview.jpg\",\"author\":\"Sean.Martell\",\"version\":\"0\"},{\"id\":\"recommended-2\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/space-fantasy/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/2.header.jpg\",\"footerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/2.footer.jpg\",\"textcolor\":\"#ffffff\",\"accentcolor\":\"#d9d9d9\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/2.icon.jpg\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/2.preview.jpg\",\"author\":\"fx5800p\",\"version\":\"1.0\"},{\"id\":\"recommended-3\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/linen-light/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/3.header.png\",\"footerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/3.footer.png\",\"accentcolor\":\"#ada8a8\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/3.icon.png\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/3.preview.png\",\"author\":\"DVemer\",\"version\":\"1.0\"},{\"id\":\"recommended-4\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/pastel-gradient/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/4.header.png\",\"footerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/4.footer.png\",\"textcolor\":\"#000000\",\"accentcolor\":\"#000000\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/4.icon.png\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/4.preview.png\",\"author\":\"darrinhenein\",\"version\":\"1.0\"},{\"id\":\"recommended-5\",\"homepageURL\":\"https://addons.mozilla.org/firefox/addon/carbon-light/\",\"headerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/5.header.png\",\"footerURL\":\"resource:///chrome/browser/content/browser/defaultthemes/5.footer.png\",\"textcolor\":\"#3b3b3b\",\"accentcolor\":\"#2e2e2e\",\"iconURL\":\"resource:///chrome/browser/content/browser/defaultthemes/5.icon.jpg\",\"previewURL\":\"resource:///chrome/browser/content/browser/defaultthemes/5.preview.jpg\",\"author\":\"Jaxivo\",\"version\":\"1.0\"}]");
|
||||
|
||||
#ifdef MOZ_EME
|
||||
#if defined(MOZ_WIDEVINE_EME) || defined(MOZ_ADOBE_EME)
|
||||
pref("browser.eme.ui.enabled", true);
|
||||
#else
|
||||
pref("browser.eme.ui.enabled", false);
|
||||
|
|
@ -1178,7 +1178,6 @@ pref("media.gmp.decoder.h264", 2);
|
|||
// decode H.264.
|
||||
pref("media.gmp.trial-create.enabled", true);
|
||||
|
||||
#ifdef MOZ_EME
|
||||
// Note: when media.gmp-*.visible is true, provided we're running on a
|
||||
// supported platform/OS version, the corresponding CDM appears in the
|
||||
// plugins list, Firefox will download the GMP/CDM if enabled, and our
|
||||
|
|
@ -1187,13 +1186,16 @@ pref("media.gmp.trial-create.enabled", true);
|
|||
// to enable the CDM if its disabled; it's as if the keysystem is completely
|
||||
// unsupported.
|
||||
|
||||
#ifdef MOZ_ADOBE_EME
|
||||
pref("media.gmp-eme-adobe.visible", true);
|
||||
// When Adobe EME is enabled in the build system, we don't actually enable
|
||||
// the plugin by default, so that it doesn't download and install by default.
|
||||
// When Adobe EME is first used, Firefox will prompt the user to enable it,
|
||||
// and then download the CDM.
|
||||
pref("media.gmp-eme-adobe.enabled", false);
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_WIDEVINE_EME
|
||||
pref("media.gmp-widevinecdm.visible", true);
|
||||
pref("media.gmp-widevinecdm.enabled", true);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1871,20 +1871,6 @@ nsresult HTMLMediaElement::LoadResource()
|
|||
// Set the media element's CORS mode only when loading a resource
|
||||
mCORSMode = AttrValueToCORSMode(GetParsedAttr(nsGkAtoms::crossorigin));
|
||||
|
||||
#ifdef MOZ_EME
|
||||
bool isBlob = false;
|
||||
if (mMediaKeys &&
|
||||
Preferences::GetBool("media.eme.mse-only", true) &&
|
||||
// We only want mediaSource URLs, but they are BlobURL, so we have to
|
||||
// check the schema and abort if they are not MediaStream or real Blob.
|
||||
(NS_FAILED(mLoadingSrc->SchemeIs(BLOBURI_SCHEME, &isBlob)) ||
|
||||
!isBlob ||
|
||||
IsMediaStreamURI(mLoadingSrc) ||
|
||||
IsBlobURI(mLoadingSrc))) {
|
||||
return NS_ERROR_DOM_NOT_SUPPORTED_ERR;
|
||||
}
|
||||
#endif
|
||||
|
||||
HTMLMediaElement* other = LookupMediaElementURITable(mLoadingSrc);
|
||||
if (other && other->mDecoder) {
|
||||
// Clone it.
|
||||
|
|
@ -4014,6 +4000,7 @@ nsresult HTMLMediaElement::FinishDecoderSetup(MediaDecoder* aDecoder,
|
|||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
MediaEventSource<void>* waitingForKeyProducer = mDecoder->WaitingForKeyEvent();
|
||||
// Not every decoder will produce waitingForKey events, only add ones that can
|
||||
|
|
@ -4021,7 +4008,6 @@ nsresult HTMLMediaElement::FinishDecoderSetup(MediaDecoder* aDecoder,
|
|||
mWaitingForKeyListener = waitingForKeyProducer->Connect(
|
||||
AbstractThread::MainThread(), this, &HTMLMediaElement::CannotDecryptWaitingForKey);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (mChannelLoader) {
|
||||
mChannelLoader->Done();
|
||||
|
|
@ -6490,6 +6476,7 @@ HTMLMediaElement::GetTopLevelPrincipal()
|
|||
principal = doc->NodePrincipal();
|
||||
return principal.forget();
|
||||
}
|
||||
#endif //MOZ_EME
|
||||
|
||||
void
|
||||
HTMLMediaElement::CannotDecryptWaitingForKey()
|
||||
|
|
@ -6508,7 +6495,6 @@ HTMLMediaElement::CannotDecryptWaitingForKey()
|
|||
UpdateReadyStateInternal();
|
||||
}
|
||||
}
|
||||
#endif //MOZ_EME
|
||||
|
||||
NS_IMETHODIMP HTMLMediaElement::WindowAudioCaptureChanged(bool aCapture)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -31,9 +31,7 @@ class MediaResource;
|
|||
class ReentrantMonitor;
|
||||
class VideoFrameContainer;
|
||||
class MediaDecoderOwner;
|
||||
#ifdef MOZ_EME
|
||||
class CDMProxy;
|
||||
#endif
|
||||
|
||||
typedef nsDataHashtable<nsCStringHashKey, nsCString> MetadataTags;
|
||||
|
||||
|
|
|
|||
|
|
@ -387,9 +387,7 @@ MediaDecoder::MediaDecoder(MediaDecoderOwner* aOwner)
|
|||
, mLogicalPosition(0.0)
|
||||
, mDuration(std::numeric_limits<double>::quiet_NaN())
|
||||
, mResourceCallback(new ResourceCallback())
|
||||
#ifdef MOZ_EME
|
||||
, mCDMProxyPromise(mCDMProxyPromiseHolder.Ensure(__func__))
|
||||
#endif
|
||||
, mIgnoreProgressData(false)
|
||||
, mInfiniteStream(false)
|
||||
, mOwner(aOwner)
|
||||
|
|
@ -474,9 +472,7 @@ MediaDecoder::Shutdown()
|
|||
|
||||
mResourceCallback->Disconnect();
|
||||
|
||||
#ifdef MOZ_EME
|
||||
mCDMProxyPromiseHolder.RejectIfExists(true, __func__);
|
||||
#endif
|
||||
|
||||
DiscardOngoingSeekIfExists();
|
||||
|
||||
|
|
@ -1541,7 +1537,6 @@ MediaDecoder::CanPlayThrough()
|
|||
return GetStatistics().CanPlayThrough();
|
||||
}
|
||||
|
||||
#ifdef MOZ_EME
|
||||
RefPtr<MediaDecoder::CDMProxyPromise>
|
||||
MediaDecoder::RequestCDMProxy() const
|
||||
{
|
||||
|
|
@ -1556,7 +1551,6 @@ MediaDecoder::SetCDMProxy(CDMProxy* aProxy)
|
|||
|
||||
mCDMProxyPromiseHolder.ResolveIfExists(aProxy, __func__);
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
MediaDecoder::IsOpusEnabled()
|
||||
|
|
|
|||
|
|
@ -8,11 +8,7 @@
|
|||
#define MediaDecoder_h_
|
||||
|
||||
#include "mozilla/Atomics.h"
|
||||
|
||||
#ifdef MOZ_EME
|
||||
#include "mozilla/CDMProxy.h"
|
||||
#endif
|
||||
|
||||
#include "mozilla/MozPromise.h"
|
||||
#include "mozilla/ReentrantMonitor.h"
|
||||
#include "mozilla/StateMirroring.h"
|
||||
|
|
@ -436,7 +432,6 @@ private:
|
|||
|
||||
MediaDecoderOwner* GetOwner() const override;
|
||||
|
||||
#ifdef MOZ_EME
|
||||
typedef MozPromise<RefPtr<CDMProxy>, bool /* aIgnored */, /* IsExclusive = */ true> CDMProxyPromise;
|
||||
|
||||
// Resolved when a CDMProxy is available and the capabilities are known or
|
||||
|
|
@ -444,7 +439,6 @@ private:
|
|||
RefPtr<CDMProxyPromise> RequestCDMProxy() const;
|
||||
|
||||
void SetCDMProxy(CDMProxy* aProxy);
|
||||
#endif
|
||||
|
||||
static bool IsOggEnabled();
|
||||
static bool IsOpusEnabled();
|
||||
|
|
@ -595,10 +589,8 @@ private:
|
|||
|
||||
RefPtr<ResourceCallback> mResourceCallback;
|
||||
|
||||
#ifdef MOZ_EME
|
||||
MozPromiseHolder<CDMProxyPromise> mCDMProxyPromiseHolder;
|
||||
RefPtr<CDMProxyPromise> mCDMProxyPromise;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
// The promise resolving/rejection is queued as a "micro-task" which will be
|
||||
|
|
|
|||
|
|
@ -24,9 +24,7 @@
|
|||
|
||||
namespace mozilla {
|
||||
|
||||
#ifdef MOZ_EME
|
||||
class CDMProxy;
|
||||
#endif
|
||||
class MediaDecoderReader;
|
||||
|
||||
struct WaitForDataRejectValue
|
||||
|
|
@ -188,9 +186,7 @@ public:
|
|||
// when to call SetIdle().
|
||||
virtual void SetIdle() {}
|
||||
|
||||
#ifdef MOZ_EME
|
||||
virtual void SetCDMProxy(CDMProxy* aProxy) {}
|
||||
#endif
|
||||
|
||||
// Tell the reader that the data decoded are not for direct playback, so it
|
||||
// can accept more files, in particular those which have more channels than
|
||||
|
|
|
|||
|
|
@ -113,9 +113,7 @@ public:
|
|||
return mReader->CanonicalBuffered();
|
||||
}
|
||||
|
||||
#ifdef MOZ_EME
|
||||
void SetCDMProxy(CDMProxy* aProxy) { mReader->SetCDMProxy(aProxy); }
|
||||
#endif
|
||||
|
||||
void SetVideoBlankDecode(bool aIsBlankDecode);
|
||||
|
||||
|
|
|
|||
|
|
@ -1238,12 +1238,7 @@ DecodeMetadataState::OnMetadataRead(MetadataHolder* aMetadata)
|
|||
// feeding in the CDM, which we need to decode the first frame (and
|
||||
// thus get the metadata). We could fix this if we could compute the start
|
||||
// time by demuxing without necessaring decoding.
|
||||
bool waitingForCDM =
|
||||
#ifdef MOZ_EME
|
||||
mMaster->Info().IsEncrypted() && !mMaster->mCDMProxy;
|
||||
#else
|
||||
false;
|
||||
#endif
|
||||
bool waitingForCDM = Info().IsEncrypted() && !mMaster->mCDMProxy;
|
||||
|
||||
mMaster->mNotifyMetadataBeforeFirstFrame =
|
||||
mMaster->mDuration.Ref().isSome() || waitingForCDM;
|
||||
|
|
@ -1267,9 +1262,7 @@ DormantState::HandlePlayStateChanged(MediaDecoder::PlayState aPlayState)
|
|||
{
|
||||
if (aPlayState == MediaDecoder::PLAY_STATE_PLAYING) {
|
||||
// Exit dormant when the user wants to play.
|
||||
#ifdef MOZ_EME
|
||||
MOZ_ASSERT(!Info().IsEncrypted() || mMaster->mCDMProxy);
|
||||
#endif
|
||||
MOZ_ASSERT(mMaster->mSentFirstFrameLoadedEvent);
|
||||
SetState<SeekingState>(Move(mPendingSeek), EventVisibility::Suppressed);
|
||||
}
|
||||
|
|
@ -1582,9 +1575,7 @@ ShutdownState::Enter()
|
|||
// dispose of the timer.
|
||||
master->mVideoDecodeSuspendTimer.Reset();
|
||||
|
||||
#ifdef MOZ_EME
|
||||
master->mCDMProxyPromise.DisconnectIfExists();
|
||||
#endif
|
||||
|
||||
if (master->IsPlaying()) {
|
||||
master->StopPlayback();
|
||||
|
|
@ -2138,12 +2129,10 @@ nsresult MediaDecoderStateMachine::Init(MediaDecoder* aDecoder)
|
|||
|
||||
mMediaSink = CreateMediaSink(mAudioCaptured);
|
||||
|
||||
#ifdef MOZ_EME
|
||||
mCDMProxyPromise.Begin(aDecoder->RequestCDMProxy()->Then(
|
||||
OwnerThread(), __func__, this,
|
||||
&MediaDecoderStateMachine::OnCDMProxyReady,
|
||||
&MediaDecoderStateMachine::OnCDMProxyNotReady));
|
||||
#endif
|
||||
|
||||
nsresult rv = mReader->Init();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
|
@ -3119,7 +3108,6 @@ void MediaDecoderStateMachine::OnMediaSinkAudioError(nsresult aResult)
|
|||
DecodeError(MediaResult(NS_ERROR_DOM_MEDIA_MEDIASINK_ERR, __func__));
|
||||
}
|
||||
|
||||
#ifdef MOZ_EME
|
||||
void
|
||||
MediaDecoderStateMachine::OnCDMProxyReady(RefPtr<CDMProxy> aProxy)
|
||||
{
|
||||
|
|
@ -3136,7 +3124,6 @@ MediaDecoderStateMachine::OnCDMProxyNotReady()
|
|||
MOZ_ASSERT(OnTaskQueue());
|
||||
mCDMProxyPromise.Complete();
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
MediaDecoderStateMachine::SetAudioCaptured(bool aCaptured)
|
||||
|
|
|
|||
|
|
@ -768,12 +768,10 @@ private:
|
|||
// Playback will not start when audio is offloading.
|
||||
bool mAudioOffloading;
|
||||
|
||||
#ifdef MOZ_EME
|
||||
void OnCDMProxyReady(RefPtr<CDMProxy> aProxy);
|
||||
void OnCDMProxyNotReady();
|
||||
RefPtr<CDMProxy> mCDMProxy;
|
||||
MozPromiseRequestHolder<MediaDecoder::CDMProxyPromise> mCDMProxyPromise;
|
||||
#endif
|
||||
|
||||
private:
|
||||
// The buffered range. Mirrored from the decoder thread.
|
||||
|
|
|
|||
|
|
@ -4,10 +4,7 @@
|
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#ifdef MOZ_EME
|
||||
#include "mozilla/CDMProxy.h"
|
||||
#endif
|
||||
|
||||
#include "mozilla/ClearOnShutdown.h"
|
||||
#include "mozilla/dom/HTMLMediaElement.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
|
|
@ -614,6 +611,7 @@ private:
|
|||
nsTArray<uint8_t> mInitData;
|
||||
nsString mInitDataType;
|
||||
};
|
||||
#endif
|
||||
|
||||
void
|
||||
MediaFormatReader::SetCDMProxy(CDMProxy* aProxy)
|
||||
|
|
@ -626,7 +624,6 @@ MediaFormatReader::SetCDMProxy(CDMProxy* aProxy)
|
|||
});
|
||||
OwnerThread()->Dispatch(r.forget());
|
||||
}
|
||||
#endif // MOZ_EME
|
||||
|
||||
bool
|
||||
MediaFormatReader::IsWaitingOnCDMResource() {
|
||||
|
|
|
|||
|
|
@ -20,9 +20,7 @@
|
|||
|
||||
namespace mozilla {
|
||||
|
||||
#ifdef MOZ_EME
|
||||
class CDMProxy;
|
||||
#endif
|
||||
|
||||
class MediaFormatReader final : public MediaDecoderReader
|
||||
{
|
||||
|
|
@ -93,9 +91,7 @@ public:
|
|||
return mTrackDemuxersMayBlock;
|
||||
}
|
||||
|
||||
#ifdef MOZ_EME
|
||||
void SetCDMProxy(CDMProxy* aProxy) override;
|
||||
#endif
|
||||
|
||||
// Returns a string describing the state of the decoder data.
|
||||
// Used for debugging purposes.
|
||||
|
|
@ -588,9 +584,7 @@ private:
|
|||
RefPtr<VideoFrameContainer> mVideoFrameContainer;
|
||||
layers::ImageContainer* GetImageContainer();
|
||||
|
||||
#ifdef MOZ_EME
|
||||
RefPtr<CDMProxy> mCDMProxy;
|
||||
#endif
|
||||
|
||||
RefPtr<GMPCrashHelper> mCrashHelper;
|
||||
|
||||
|
|
|
|||
|
|
@ -10,9 +10,7 @@
|
|||
#include "MP4Demuxer.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "nsCharSeparatedTokenizer.h"
|
||||
#ifdef MOZ_EME
|
||||
#include "mozilla/CDMProxy.h"
|
||||
#endif
|
||||
#include "mozilla/Logging.h"
|
||||
#include "mozilla/SharedThreadPool.h"
|
||||
#include "nsMimeTypes.h"
|
||||
|
|
|
|||
|
|
@ -22,9 +22,7 @@
|
|||
#include "GMPUtils.h"
|
||||
#include "prio.h"
|
||||
#include "base/task.h"
|
||||
#ifdef MOZ_EME
|
||||
#include "widevine-adapter/WidevineAdapter.h"
|
||||
#endif
|
||||
|
||||
using namespace mozilla::ipc;
|
||||
|
||||
|
|
@ -256,13 +254,9 @@ GMPChild::AnswerStartPlugin(const nsString& aAdapter)
|
|||
return false;
|
||||
}
|
||||
|
||||
#ifdef MOZ_EME
|
||||
bool isWidevine = aAdapter.EqualsLiteral("widevine");
|
||||
|
||||
GMPAdapter* adapter = (isWidevine) ? new WidevineAdapter() : nullptr;
|
||||
#else
|
||||
GMPAdapter* adapter = nullptr;
|
||||
#endif
|
||||
if (!mGMPLoader->Load(libPath.get(),
|
||||
libPath.Length(),
|
||||
mNodeId.BeginWriting(),
|
||||
|
|
|
|||
|
|
@ -43,13 +43,11 @@ GMPDecryptorParent::~GMPDecryptorParent()
|
|||
bool
|
||||
GMPDecryptorParent::RecvSetDecryptorId(const uint32_t& aId)
|
||||
{
|
||||
#ifdef MOZ_EME
|
||||
if (!mIsOpen) {
|
||||
NS_WARNING("Trying to use a dead GMP decrypter!");
|
||||
return false;
|
||||
}
|
||||
mCallback->SetDecryptorId(aId);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -204,7 +202,6 @@ bool
|
|||
GMPDecryptorParent::RecvSetSessionId(const uint32_t& aCreateSessionId,
|
||||
const nsCString& aSessionId)
|
||||
{
|
||||
#ifdef MOZ_EME
|
||||
LOGD(("GMPDecryptorParent[%p]::RecvSetSessionId(token=%u, sessionId='%s')",
|
||||
this, aCreateSessionId, aSessionId.get()));
|
||||
|
||||
|
|
@ -213,7 +210,6 @@ GMPDecryptorParent::RecvSetSessionId(const uint32_t& aCreateSessionId,
|
|||
return false;
|
||||
}
|
||||
mCallback->SetSessionId(aCreateSessionId, aSessionId);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -221,7 +217,6 @@ bool
|
|||
GMPDecryptorParent::RecvResolveLoadSessionPromise(const uint32_t& aPromiseId,
|
||||
const bool& aSuccess)
|
||||
{
|
||||
#ifdef MOZ_EME
|
||||
LOGD(("GMPDecryptorParent[%p]::RecvResolveLoadSessionPromise(promiseId=%u)",
|
||||
this, aPromiseId));
|
||||
|
||||
|
|
@ -230,14 +225,12 @@ GMPDecryptorParent::RecvResolveLoadSessionPromise(const uint32_t& aPromiseId,
|
|||
return false;
|
||||
}
|
||||
mCallback->ResolveLoadSessionPromise(aPromiseId, aSuccess);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
GMPDecryptorParent::RecvResolvePromise(const uint32_t& aPromiseId)
|
||||
{
|
||||
#ifdef MOZ_EME
|
||||
LOGD(("GMPDecryptorParent[%p]::RecvResolvePromise(promiseId=%u)",
|
||||
this, aPromiseId));
|
||||
|
||||
|
|
@ -246,7 +239,6 @@ GMPDecryptorParent::RecvResolvePromise(const uint32_t& aPromiseId)
|
|||
return false;
|
||||
}
|
||||
mCallback->ResolvePromise(aPromiseId);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -274,7 +266,6 @@ GMPDecryptorParent::RecvRejectPromise(const uint32_t& aPromiseId,
|
|||
const GMPDOMException& aException,
|
||||
const nsCString& aMessage)
|
||||
{
|
||||
#ifdef MOZ_EME
|
||||
LOGD(("GMPDecryptorParent[%p]::RecvRejectPromise(promiseId=%u, exception=%d, msg='%s')",
|
||||
this, aPromiseId, aException, aMessage.get()));
|
||||
|
||||
|
|
@ -283,11 +274,10 @@ GMPDecryptorParent::RecvRejectPromise(const uint32_t& aPromiseId,
|
|||
return false;
|
||||
}
|
||||
mCallback->RejectPromise(aPromiseId, GMPExToNsresult(aException), aMessage);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef MOZ_EME
|
||||
|
||||
static dom::MediaKeyMessageType
|
||||
ToMediaKeyMessageType(GMPSessionMessageType aMessageType) {
|
||||
switch (aMessageType) {
|
||||
|
|
@ -298,14 +288,12 @@ ToMediaKeyMessageType(GMPSessionMessageType aMessageType) {
|
|||
default: return dom::MediaKeyMessageType::License_request;
|
||||
};
|
||||
};
|
||||
#endif
|
||||
|
||||
bool
|
||||
GMPDecryptorParent::RecvSessionMessage(const nsCString& aSessionId,
|
||||
const GMPSessionMessageType& aMessageType,
|
||||
nsTArray<uint8_t>&& aMessage)
|
||||
{
|
||||
#ifdef MOZ_EME
|
||||
LOGD(("GMPDecryptorParent[%p]::RecvSessionMessage(sessionId='%s', type=%d, msg='%s')",
|
||||
this, aSessionId.get(), aMessageType, ToBase64(aMessage).get()));
|
||||
|
||||
|
|
@ -314,7 +302,6 @@ GMPDecryptorParent::RecvSessionMessage(const nsCString& aSessionId,
|
|||
return false;
|
||||
}
|
||||
mCallback->SessionMessage(aSessionId, ToMediaKeyMessageType(aMessageType), aMessage);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -322,7 +309,6 @@ bool
|
|||
GMPDecryptorParent::RecvExpirationChange(const nsCString& aSessionId,
|
||||
const double& aExpiryTime)
|
||||
{
|
||||
#ifdef MOZ_EME
|
||||
LOGD(("GMPDecryptorParent[%p]::RecvExpirationChange(sessionId='%s', expiry=%lf)",
|
||||
this, aSessionId.get(), aExpiryTime));
|
||||
|
||||
|
|
@ -331,14 +317,12 @@ GMPDecryptorParent::RecvExpirationChange(const nsCString& aSessionId,
|
|||
return false;
|
||||
}
|
||||
mCallback->ExpirationChange(aSessionId, aExpiryTime);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
GMPDecryptorParent::RecvSessionClosed(const nsCString& aSessionId)
|
||||
{
|
||||
#ifdef MOZ_EME
|
||||
LOGD(("GMPDecryptorParent[%p]::RecvSessionClosed(sessionId='%s')",
|
||||
this, aSessionId.get()));
|
||||
|
||||
|
|
@ -347,7 +331,6 @@ GMPDecryptorParent::RecvSessionClosed(const nsCString& aSessionId)
|
|||
return false;
|
||||
}
|
||||
mCallback->SessionClosed(aSessionId);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -357,7 +340,6 @@ GMPDecryptorParent::RecvSessionError(const nsCString& aSessionId,
|
|||
const uint32_t& aSystemCode,
|
||||
const nsCString& aMessage)
|
||||
{
|
||||
#ifdef MOZ_EME
|
||||
LOGD(("GMPDecryptorParent[%p]::RecvSessionError(sessionId='%s', exception=%d, sysCode=%d, msg='%s')",
|
||||
this, aSessionId.get(),
|
||||
aException, aSystemCode, aMessage.get()));
|
||||
|
|
@ -370,11 +352,9 @@ GMPDecryptorParent::RecvSessionError(const nsCString& aSessionId,
|
|||
GMPExToNsresult(aException),
|
||||
aSystemCode,
|
||||
aMessage);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef MOZ_EME
|
||||
static dom::MediaKeyStatus
|
||||
ToMediaKeyStatus(GMPMediaKeyStatus aStatus) {
|
||||
switch (aStatus) {
|
||||
|
|
@ -388,13 +368,11 @@ ToMediaKeyStatus(GMPMediaKeyStatus aStatus) {
|
|||
default: return dom::MediaKeyStatus::Internal_error;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
GMPDecryptorParent::RecvBatchedKeyStatusChanged(const nsCString& aSessionId,
|
||||
InfallibleTArray<GMPKeyInformation>&& aKeyInfos)
|
||||
{
|
||||
#ifdef MOZ_EME
|
||||
LOGD(("GMPDecryptorParent[%p]::RecvBatchedKeyStatusChanged(sessionId='%s', KeyInfos len='%d')",
|
||||
this, aSessionId.get(), aKeyInfos.Length()));
|
||||
|
||||
|
|
@ -414,11 +392,9 @@ GMPDecryptorParent::RecvBatchedKeyStatusChanged(const nsCString& aSessionId,
|
|||
}
|
||||
mCallback->BatchedKeyStatusChanged(aSessionId, cdmKeyInfos);
|
||||
}
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef MOZ_EME
|
||||
DecryptStatus
|
||||
ToDecryptStatus(GMPErr aError)
|
||||
{
|
||||
|
|
@ -429,14 +405,12 @@ ToDecryptStatus(GMPErr aError)
|
|||
default: return GenericErr;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
bool
|
||||
GMPDecryptorParent::RecvDecrypted(const uint32_t& aId,
|
||||
const GMPErr& aErr,
|
||||
InfallibleTArray<uint8_t>&& aBuffer)
|
||||
{
|
||||
#ifdef MOZ_EME
|
||||
LOGV(("GMPDecryptorParent[%p]::RecvDecrypted(id=%d, err=%d)",
|
||||
this, aId, aErr));
|
||||
|
||||
|
|
@ -445,7 +419,6 @@ GMPDecryptorParent::RecvDecrypted(const uint32_t& aId,
|
|||
return false;
|
||||
}
|
||||
mCallback->Decrypted(aId, ToDecryptStatus(aErr), aBuffer);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,9 +6,7 @@
|
|||
#ifndef GMPDecryptorProxy_h_
|
||||
#define GMPDecryptorProxy_h_
|
||||
|
||||
#ifdef MOZ_EME
|
||||
#include "mozilla/DecryptorProxyCallback.h"
|
||||
#endif
|
||||
#include "GMPCallbackBase.h"
|
||||
#include "gmp-decryption.h"
|
||||
#include "nsString.h"
|
||||
|
|
@ -17,13 +15,8 @@ namespace mozilla {
|
|||
class CryptoSample;
|
||||
} // namespace mozilla
|
||||
|
||||
#ifdef MOZ_EME
|
||||
class GMPDecryptorProxyCallback : public DecryptorProxyCallback,
|
||||
public GMPCallbackBase {
|
||||
#else
|
||||
class GMPDecryptorProxyCallback : public GMPCallbackBase {
|
||||
#endif
|
||||
|
||||
public:
|
||||
virtual ~GMPDecryptorProxyCallback() {}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -30,10 +30,8 @@ using mozilla::ipc::GeckoChildProcessHost;
|
|||
#include "WMFDecoderModule.h"
|
||||
#endif
|
||||
|
||||
#ifdef MOZ_EME
|
||||
#include "mozilla/dom/WidevineCDMManifestBinding.h"
|
||||
#include "widevine-adapter/WidevineAdapter.h"
|
||||
#endif
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
|
|
@ -656,7 +654,6 @@ GMPParent::ReadGMPMetaData()
|
|||
return ReadGMPInfoFile(infoFile);
|
||||
}
|
||||
|
||||
#ifdef MOZ_EME
|
||||
// Maybe this is the Widevine adapted plugin?
|
||||
nsCOMPtr<nsIFile> manifestFile;
|
||||
rv = mDirectory->Clone(getter_AddRefs(manifestFile));
|
||||
|
|
@ -665,9 +662,6 @@ GMPParent::ReadGMPMetaData()
|
|||
}
|
||||
manifestFile->AppendRelativePath(NS_LITERAL_STRING("manifest.json"));
|
||||
return ReadChromiumManifestFile(manifestFile);
|
||||
#else
|
||||
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
|
||||
#endif
|
||||
}
|
||||
|
||||
RefPtr<GenericPromise>
|
||||
|
|
@ -770,7 +764,6 @@ GMPParent::ReadChromiumManifestFile(nsIFile* aFile)
|
|||
RefPtr<GenericPromise>
|
||||
GMPParent::ParseChromiumManifest(nsString aJSON)
|
||||
{
|
||||
#ifdef MOZ_EME
|
||||
LOGD("%s: for '%s'", __FUNCTION__, NS_LossyConvertUTF16toASCII(aJSON).get());
|
||||
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
|
@ -808,10 +801,6 @@ GMPParent::ParseChromiumManifest(nsString aJSON)
|
|||
#endif
|
||||
|
||||
return GenericPromise::CreateAndResolve(true, __func__);
|
||||
#else // !MOZ_EME
|
||||
MOZ_ASSERT_UNREACHABLE("don't call me if EME isn't enabled");
|
||||
return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__);
|
||||
#endif // !MOZ_EME
|
||||
}
|
||||
|
||||
bool
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@ EXPORTS += [
|
|||
'GMPAudioDecoderProxy.h',
|
||||
'GMPAudioHost.h',
|
||||
'GMPCallbackBase.h',
|
||||
'GMPCDMCallbackProxy.h',
|
||||
'GMPCDMProxy.h',
|
||||
'GMPChild.h',
|
||||
'GMPContentChild.h',
|
||||
'GMPContentParent.h',
|
||||
|
|
@ -71,12 +73,6 @@ EXPORTS += [
|
|||
'GMPVideoPlaneImpl.h',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_EME']:
|
||||
EXPORTS += [
|
||||
'GMPCDMCallbackProxy.h',
|
||||
'GMPCDMProxy.h',
|
||||
]
|
||||
|
||||
# We link GMPLoader into xul on B2G/Fennec as its code does not need to be
|
||||
# covered by a DRM vendor's voucher.
|
||||
if CONFIG['OS_TARGET'] == 'Android':
|
||||
|
|
@ -91,6 +87,8 @@ UNIFIED_SOURCES += [
|
|||
'GMPAudioDecoderChild.cpp',
|
||||
'GMPAudioDecoderParent.cpp',
|
||||
'GMPAudioHost.cpp',
|
||||
'GMPCDMCallbackProxy.cpp',
|
||||
'GMPCDMProxy.cpp',
|
||||
'GMPChild.cpp',
|
||||
'GMPContentChild.cpp',
|
||||
'GMPContentParent.cpp',
|
||||
|
|
@ -122,16 +120,10 @@ UNIFIED_SOURCES += [
|
|||
'GMPVideoPlaneImpl.cpp',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_EME']:
|
||||
UNIFIED_SOURCES += [
|
||||
'GMPCDMCallbackProxy.cpp',
|
||||
'GMPCDMProxy.cpp',
|
||||
]
|
||||
|
||||
DIRS += ['rlz']
|
||||
|
||||
if CONFIG['MOZ_EME']:
|
||||
DIRS += ['widevine-adapter']
|
||||
DIRS += [
|
||||
'rlz',
|
||||
'widevine-adapter',
|
||||
]
|
||||
|
||||
IPDL_SOURCES += [
|
||||
'GMPTypes.ipdlh',
|
||||
|
|
|
|||
|
|
@ -34,10 +34,8 @@ public:
|
|||
void DownloadProgressed() override {}
|
||||
void UpdateReadyState() override {}
|
||||
void FirstFrameLoaded() override {}
|
||||
#ifdef MOZ_EME
|
||||
void DispatchEncrypted(const nsTArray<uint8_t>& aInitData,
|
||||
const nsAString& aInitDataType) override {}
|
||||
#endif
|
||||
bool IsActive() const override { return true; }
|
||||
bool IsHidden() const override { return false; }
|
||||
void DownloadSuspended() override {}
|
||||
|
|
|
|||
|
|
@ -28,11 +28,6 @@ UNIFIED_SOURCES += [
|
|||
'TestWebMBuffered.cpp',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_EME']:
|
||||
UNIFIED_SOURCES += [
|
||||
'TestEME.cpp',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_WEBM_ENCODER']:
|
||||
UNIFIED_SOURCES += [
|
||||
'TestVideoTrackEncoder.cpp',
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ private:
|
|||
nsTArray<uint8_t> mInitData;
|
||||
nsString mInitDataType;
|
||||
};
|
||||
#endif // MOZ_EME
|
||||
#endif
|
||||
|
||||
TrackBuffersManager::TrackBuffersManager(MediaSourceDecoder* aParentDecoder,
|
||||
const nsACString& aType)
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ with Files('GetUserMedia*'):
|
|||
BUG_COMPONENT = component_av
|
||||
|
||||
DIRS += [
|
||||
'eme',
|
||||
'encoder',
|
||||
'flac',
|
||||
'gmp',
|
||||
|
|
@ -48,9 +49,6 @@ if CONFIG['MOZ_FMP4']:
|
|||
if CONFIG['MOZ_WEBRTC']:
|
||||
DIRS += ['bridge']
|
||||
|
||||
if CONFIG['MOZ_EME']:
|
||||
DIRS += ['eme']
|
||||
|
||||
TEST_DIRS += [
|
||||
'gtest',
|
||||
]
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
#endif
|
||||
#include "GMPDecoderModule.h"
|
||||
|
||||
#include "mozilla/CDMProxy.h"
|
||||
#include "mozilla/ClearOnShutdown.h"
|
||||
#include "mozilla/SharedThreadPool.h"
|
||||
#include "mozilla/StaticPtr.h"
|
||||
|
|
@ -36,11 +37,7 @@
|
|||
#include "H264Converter.h"
|
||||
|
||||
#include "AgnosticDecoderModule.h"
|
||||
|
||||
#ifdef MOZ_EME
|
||||
#include "mozilla/CDMProxy.h"
|
||||
#include "EMEDecoderModule.h"
|
||||
#endif
|
||||
|
||||
#include "DecoderDoctorDiagnostics.h"
|
||||
|
||||
|
|
@ -466,13 +463,11 @@ PDMFactory::GetDecoder(const TrackInfo& aTrackInfo,
|
|||
return pdm.forget();
|
||||
}
|
||||
|
||||
#ifdef MOZ_EME
|
||||
void
|
||||
PDMFactory::SetCDMProxy(CDMProxy* aProxy)
|
||||
{
|
||||
RefPtr<PDMFactory> m = new PDMFactory();
|
||||
mEMEPDM = new EMEDecoderModule(aProxy, m);
|
||||
}
|
||||
#endif
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
|||
|
|
@ -11,9 +11,7 @@
|
|||
#include "mozilla/Function.h"
|
||||
#include "mozilla/StaticMutex.h"
|
||||
|
||||
#ifdef MOZ_EME
|
||||
class CDMProxy;
|
||||
#endif
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
|
|
@ -40,14 +38,12 @@ public:
|
|||
bool Supports(const TrackInfo& aTrackInfo,
|
||||
DecoderDoctorDiagnostics* aDiagnostics) const;
|
||||
|
||||
#ifdef MOZ_EME
|
||||
// Creates a PlatformDecoderModule that uses a CDMProxy to decrypt or
|
||||
// decrypt-and-decode EME encrypted content. If the CDM only decrypts and
|
||||
// does not decode, we create a PDM and use that to create MediaDataDecoders
|
||||
// that we use on on aTaskQueue to decode the decrypted stream.
|
||||
// This is called on the decode task queue.
|
||||
void SetCDMProxy(CDMProxy* aProxy);
|
||||
#endif
|
||||
|
||||
static constexpr int kYUV400 = 0;
|
||||
static constexpr int kYUV420 = 1;
|
||||
|
|
|
|||
|
|
@ -30,13 +30,11 @@ UNIFIED_SOURCES += [
|
|||
]
|
||||
|
||||
DIRS += [
|
||||
'agnostic/eme',
|
||||
'agnostic/gmp',
|
||||
'omx'
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_EME']:
|
||||
DIRS += ['agnostic/eme']
|
||||
|
||||
if CONFIG['MOZ_WMF']:
|
||||
DIRS += [ 'wmf' ];
|
||||
|
||||
|
|
|
|||
|
|
@ -282,7 +282,15 @@ WEBIDL_FILES = [
|
|||
'MediaDeviceInfo.webidl',
|
||||
'MediaDevices.webidl',
|
||||
'MediaElementAudioSourceNode.webidl',
|
||||
'MediaEncryptedEvent.webidl',
|
||||
'MediaError.webidl',
|
||||
'MediaKeyError.webidl',
|
||||
'MediaKeyMessageEvent.webidl',
|
||||
'MediaKeys.webidl',
|
||||
'MediaKeySession.webidl',
|
||||
'MediaKeysRequestStatus.webidl',
|
||||
'MediaKeyStatusMap.webidl',
|
||||
'MediaKeySystemAccess.webidl',
|
||||
'MediaList.webidl',
|
||||
'MediaQueryList.webidl',
|
||||
'MediaRecorder.webidl',
|
||||
|
|
@ -546,6 +554,7 @@ WEBIDL_FILES = [
|
|||
'WebKitCSSMatrix.webidl',
|
||||
'WebSocket.webidl',
|
||||
'WheelEvent.webidl',
|
||||
'WidevineCDMManifest.webidl',
|
||||
'WifiOptions.webidl',
|
||||
'WindowOrWorkerGlobalScope.webidl',
|
||||
'WindowRoot.webidl',
|
||||
|
|
@ -572,19 +581,6 @@ WEBIDL_FILES = [
|
|||
'XULElement.webidl',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_EME']:
|
||||
WEBIDL_FILES += [
|
||||
'MediaEncryptedEvent.webidl',
|
||||
'MediaKeyError.webidl',
|
||||
'MediaKeyMessageEvent.webidl',
|
||||
'MediaKeys.webidl',
|
||||
'MediaKeySession.webidl',
|
||||
'MediaKeysRequestStatus.webidl',
|
||||
'MediaKeyStatusMap.webidl',
|
||||
'MediaKeySystemAccess.webidl',
|
||||
'WidevineCDMManifest.webidl',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_WEBEXTENSIONS']:
|
||||
WEBIDL_FILES += ['AddonManager.webidl']
|
||||
|
||||
|
|
|
|||
|
|
@ -2901,12 +2901,25 @@ dnl ========================================================
|
|||
dnl = EME support
|
||||
dnl ========================================================
|
||||
|
||||
MOZ_ARG_ENABLE_BOOL(eme,
|
||||
[ --enable-eme Enable support for Encrypted Media Extensions ],
|
||||
MOZ_EME=1,
|
||||
MOZ_EME=)
|
||||
MOZ_ARG_ENABLE_STRING(eme,
|
||||
[ --enable-eme[=widevine] Enable support for Encrypted Media Extensions ],
|
||||
MOZ_EME_ARGS=$enableval)
|
||||
|
||||
if test "$MOZ_EME_ARGS"; then
|
||||
if test "$MOZ_EME_ARGS" = "no"; then
|
||||
dnl EME explicitly disabled with --disable-eme
|
||||
MOZ_EME=
|
||||
elif test "$MOZ_EME_ARGS" = "yes"; then
|
||||
dnl EME explicitly enabled with --enable-eme
|
||||
MOZ_EME=1
|
||||
else
|
||||
dnl EME explicitly enabled with --enable-eme=<args>
|
||||
MOZ_EME=1
|
||||
MOZ_EME_MODULES=`echo $MOZ_EME_ARGS | sed -e 's/,/ /g'`
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST_SET(MOZ_EME_MODULES)
|
||||
if test -n "$MOZ_EME"; then
|
||||
if test -z "$MOZ_FMP4"; then
|
||||
AC_MSG_ERROR([Encrypted Media Extension support requires Fragmented MP4 support])
|
||||
|
|
@ -2914,8 +2927,6 @@ if test -n "$MOZ_EME"; then
|
|||
AC_DEFINE(MOZ_EME)
|
||||
fi
|
||||
|
||||
AC_SUBST(MOZ_EME)
|
||||
|
||||
MOZ_LIBVPX_CFLAGS=
|
||||
MOZ_LIBVPX_LIBS=
|
||||
|
||||
|
|
@ -5287,6 +5298,7 @@ AC_SUBST(MOZ_VORBIS)
|
|||
AC_SUBST(MOZ_TREMOR)
|
||||
AC_SUBST(MOZ_FFVPX)
|
||||
AC_SUBST_LIST(FFVPX_ASFLAGS)
|
||||
AC_SUBST(MOZ_EME)
|
||||
AC_SUBST(MOZ_VPX_ERROR_CONCEALMENT)
|
||||
AC_SUBST(VPX_USE_YASM)
|
||||
AC_SUBST_LIST(VPX_ASFLAGS)
|
||||
|
|
|
|||
|
|
@ -7,15 +7,16 @@
|
|||
const {classes: Cc, interfaces: Ci, results: Cr, utils: Cu, manager: Cm} =
|
||||
Components;
|
||||
|
||||
this.EXPORTED_SYMBOLS = [ "EME_ADOBE_ID",
|
||||
"GMP_PLUGIN_IDS",
|
||||
this.EXPORTED_SYMBOLS = [ "GMP_PLUGIN_IDS",
|
||||
"GMPPrefs",
|
||||
"GMPUtils",
|
||||
"EME_ADOBE_ID",
|
||||
"OPEN_H264_ID",
|
||||
"WIDEVINE_ID" ];
|
||||
|
||||
Cu.import("resource://gre/modules/Preferences.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/AppConstants.jsm");
|
||||
|
||||
// GMP IDs
|
||||
const OPEN_H264_ID = "gmp-gmpopenh264";
|
||||
|
|
@ -72,32 +73,24 @@ this.GMPUtils = {
|
|||
return true;
|
||||
}
|
||||
if (aPlugin.id == EME_ADOBE_ID) {
|
||||
#if defined(XP_WIN)
|
||||
// Windows Vista and later only supported by Adobe EME.
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
// Windows XP and later only supported by Adobe EME.
|
||||
return AppConstants.isPlatformAndVersionAtLeast("win", "5");
|
||||
} else if (aPlugin.id == WIDEVINE_ID) {
|
||||
|
||||
#if defined(XP_WIN) || defined(XP_LINUX) || defined(XP_MACOSX)
|
||||
// The Widevine plugin is available for Windows versions Vista and later,
|
||||
// Mac OSX, and Linux.
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
return AppConstants.isPlatformAndVersionAtLeast("win", "6") ||
|
||||
AppConstants.platform == "macosx" ||
|
||||
AppConstants.platform == "linux";
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
_is32bitModeMacOS: function() {
|
||||
#ifdef XP_MACOSX
|
||||
if (AppConstants.platform != "macosx") {
|
||||
return false;
|
||||
}
|
||||
return Services.appinfo.XPCOMABI.split("-")[0] == "x86";
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -29,13 +29,13 @@ EXTRA_PP_COMPONENTS += [
|
|||
EXTRA_JS_MODULES += [
|
||||
'ChromeManifestParser.jsm',
|
||||
'DeferredSave.jsm',
|
||||
'GMPUtils.jsm',
|
||||
'LightweightThemeManager.jsm',
|
||||
]
|
||||
|
||||
EXTRA_PP_JS_MODULES += [
|
||||
'AddonManager.jsm',
|
||||
'GMPInstallManager.jsm',
|
||||
'GMPUtils.jsm',
|
||||
]
|
||||
|
||||
# Additional debugging info is exposed in debug builds
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue