From 39f9ab375b2bfd9e46df9695b78870cf1e9cf3c6 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Thu, 14 Oct 2021 23:35:18 +0000 Subject: Issue #1053 - Remove /dom/system/android and dependent modules, as well as robocop. --- dom/gamepad/android/AndroidGamepad.cpp | 84 ---- dom/gamepad/moz.build | 4 - dom/geolocation/moz.build | 6 +- dom/ipc/moz.build | 2 +- .../eme/mediadrm/MediaDrmCDMCallbackProxy.cpp | 139 ------ dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.h | 68 --- dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp | 466 --------------------- dom/media/eme/mediadrm/MediaDrmCDMProxy.h | 183 -------- dom/media/eme/mediadrm/MediaDrmProxySupport.cpp | 283 ------------- dom/media/eme/mediadrm/MediaDrmProxySupport.h | 66 --- dom/media/eme/mediadrm/moz.build | 18 - dom/media/eme/moz.build | 3 - dom/media/gmp/moz.build | 10 - dom/media/systemservices/OpenSLESProvider.cpp | 189 --------- dom/media/systemservices/OpenSLESProvider.h | 68 --- dom/media/systemservices/moz.build | 9 - dom/moz.build | 2 +- dom/system/android/AndroidLocationProvider.cpp | 54 --- dom/system/android/AndroidLocationProvider.h | 22 - dom/system/android/moz.build | 16 - dom/system/android/nsHapticFeedback.cpp | 19 - dom/system/android/nsHapticFeedback.h | 16 - dom/system/moz.build | 2 - dom/xbl/builtin/android/jar.mn | 6 - dom/xbl/builtin/android/moz.build | 6 - dom/xbl/builtin/android/platformHTMLBindings.xml | 162 ------- dom/xbl/builtin/moz.build | 2 - 27 files changed, 3 insertions(+), 1902 deletions(-) delete mode 100644 dom/gamepad/android/AndroidGamepad.cpp delete mode 100644 dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.cpp delete mode 100644 dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.h delete mode 100644 dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp delete mode 100644 dom/media/eme/mediadrm/MediaDrmCDMProxy.h delete mode 100644 dom/media/eme/mediadrm/MediaDrmProxySupport.cpp delete mode 100644 dom/media/eme/mediadrm/MediaDrmProxySupport.h delete mode 100644 dom/media/eme/mediadrm/moz.build delete mode 100644 dom/media/systemservices/OpenSLESProvider.cpp delete mode 100644 dom/media/systemservices/OpenSLESProvider.h delete mode 100644 dom/system/android/AndroidLocationProvider.cpp delete mode 100644 dom/system/android/AndroidLocationProvider.h delete mode 100644 dom/system/android/moz.build delete mode 100644 dom/system/android/nsHapticFeedback.cpp delete mode 100644 dom/system/android/nsHapticFeedback.h delete mode 100644 dom/xbl/builtin/android/jar.mn delete mode 100644 dom/xbl/builtin/android/moz.build delete mode 100644 dom/xbl/builtin/android/platformHTMLBindings.xml (limited to 'dom') diff --git a/dom/gamepad/android/AndroidGamepad.cpp b/dom/gamepad/android/AndroidGamepad.cpp deleted file mode 100644 index 889250f989..0000000000 --- a/dom/gamepad/android/AndroidGamepad.cpp +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#include "GeneratedJNIWrappers.h" -#include "GeneratedJNINatives.h" -#include "nsThreadUtils.h" -#include "mozilla/dom/Gamepad.h" - -namespace mozilla { -namespace dom { - -class AndroidGamepadManager final - : public java::AndroidGamepadManager::Natives -{ - AndroidGamepadManager() = delete; - -public: - static void - OnGamepadChange(int32_t aID, bool aAdded) - { - RefPtr service = - GamepadPlatformService::GetParentService(); - if (!service) { - return; - } - - if (aAdded) { - const int svc_id = service->AddGamepad( - "android", GamepadMappingType::Standard, - kStandardGamepadButtons, kStandardGamepadAxes); - java::AndroidGamepadManager::OnGamepadAdded(aID, svc_id); - - } else { - service->RemoveGamepad(aID); - } - } - - static void - OnButtonChange(int32_t aID, int32_t aButton, bool aPressed, float aValue) - { - RefPtr service = - GamepadPlatformService::GetParentService(); - if (!service) { - return; - } - - service->NewButtonEvent(aID, aButton, aPressed, aValue); - } - - static void - OnAxisChange(int32_t aID, jni::BooleanArray::Param aValid, - jni::FloatArray::Param aValues) - { - RefPtr service = - GamepadPlatformService::GetParentService(); - if (!service) { - return; - } - - const auto& valid = aValid->GetElements(); - const auto& values = aValues->GetElements(); - MOZ_ASSERT(valid.Length() == values.Length()); - - for (size_t i = 0; i < values.Length(); i++) { - service->NewAxisMoveEvent(aID, i, values[i]); - } - } -}; - -void StartGamepadMonitoring() -{ - AndroidGamepadManager::Init(); - java::AndroidGamepadManager::Start(); -} - -void StopGamepadMonitoring() -{ - java::AndroidGamepadManager::Stop(); -} - -} // namespace dom -} // namespace mozilla diff --git a/dom/gamepad/moz.build b/dom/gamepad/moz.build index 15205e4c83..cee84f4290 100644 --- a/dom/gamepad/moz.build +++ b/dom/gamepad/moz.build @@ -56,10 +56,6 @@ if CONFIG['MOZ_GAMEPAD']: SOURCES += [ 'linux/LinuxGamepad.cpp' ] - elif CONFIG['MOZ_GAMEPAD_BACKEND'] == 'android': - SOURCES += [ - 'android/AndroidGamepad.cpp' - ] LOCAL_INCLUDES += [ 'ipc', diff --git a/dom/geolocation/moz.build b/dom/geolocation/moz.build index d8ecf1ac17..4a7d8b17be 100644 --- a/dom/geolocation/moz.build +++ b/dom/geolocation/moz.build @@ -25,11 +25,7 @@ LOCAL_INCLUDES += [ '/dom/ipc', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android': - LOCAL_INCLUDES += [ - '/dom/system/android', - ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': +if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': LOCAL_INCLUDES += [ '/dom/system/windows', ] diff --git a/dom/ipc/moz.build b/dom/ipc/moz.build index e00e247446..7ebd02e156 100644 --- a/dom/ipc/moz.build +++ b/dom/ipc/moz.build @@ -133,7 +133,7 @@ if CONFIG['OS_ARCH'] != 'WINNT': DEFINES['BIN_SUFFIX'] = '"%s"' % CONFIG['BIN_SUFFIX'] -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk2'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk2': DEFINES['MOZ_ENABLE_FREETYPE'] = True if CONFIG['MOZ_TOOLKIT_SEARCH']: diff --git a/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.cpp b/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.cpp deleted file mode 100644 index 300093b844..0000000000 --- a/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#include "MediaDrmCDMCallbackProxy.h" -#include "mozilla/CDMProxy.h" -#include "nsString.h" -#include "mozilla/dom/MediaKeys.h" -#include "mozilla/dom/MediaKeySession.h" -#include "mozIGeckoMediaPluginService.h" -#include "nsContentCID.h" -#include "nsServiceManagerUtils.h" -#include "MainThreadUtils.h" -#include "mozilla/EMEUtils.h" - -namespace mozilla { - -MediaDrmCDMCallbackProxy::MediaDrmCDMCallbackProxy(CDMProxy* aProxy) - : mProxy(aProxy) -{ - -} - -void -MediaDrmCDMCallbackProxy::SetSessionId(uint32_t aToken, - const nsCString& aSessionId) -{ - MOZ_ASSERT(NS_IsMainThread()); - mProxy->OnSetSessionId(aToken, NS_ConvertUTF8toUTF16(aSessionId)); -} - -void -MediaDrmCDMCallbackProxy::ResolveLoadSessionPromise(uint32_t aPromiseId, - bool aSuccess) -{ - MOZ_ASSERT(NS_IsMainThread()); - mProxy->OnResolveLoadSessionPromise(aPromiseId, aSuccess); -} - -void -MediaDrmCDMCallbackProxy::ResolvePromise(uint32_t aPromiseId) -{ - // Note: CDMProxy proxies this from non-main threads to main thread. - mProxy->ResolvePromise(aPromiseId); -} - -void -MediaDrmCDMCallbackProxy::RejectPromise(uint32_t aPromiseId, - nsresult aException, - const nsCString& aMessage) -{ - MOZ_ASSERT(NS_IsMainThread()); - mProxy->OnRejectPromise(aPromiseId, aException, aMessage); -} - -void -MediaDrmCDMCallbackProxy::SessionMessage(const nsCString& aSessionId, - dom::MediaKeyMessageType aMessageType, - const nsTArray& aMessage) -{ - MOZ_ASSERT(NS_IsMainThread()); - // For removing constness - nsTArray message(aMessage); - mProxy->OnSessionMessage(NS_ConvertUTF8toUTF16(aSessionId), aMessageType, message); -} - -void -MediaDrmCDMCallbackProxy::ExpirationChange(const nsCString& aSessionId, - UnixTime aExpiryTime) -{ - MOZ_ASSERT(NS_IsMainThread()); - mProxy->OnExpirationChange(NS_ConvertUTF8toUTF16(aSessionId), aExpiryTime); -} - -void -MediaDrmCDMCallbackProxy::SessionClosed(const nsCString& aSessionId) -{ - MOZ_ASSERT(NS_IsMainThread()); - bool keyStatusesChange = false; - { - CDMCaps::AutoLock caps(mProxy->Capabilites()); - keyStatusesChange = caps.RemoveKeysForSession(NS_ConvertUTF8toUTF16(aSessionId)); - } - if (keyStatusesChange) { - mProxy->OnKeyStatusesChange(NS_ConvertUTF8toUTF16(aSessionId)); - } - mProxy->OnSessionClosed(NS_ConvertUTF8toUTF16(aSessionId)); -} - -void -MediaDrmCDMCallbackProxy::SessionError(const nsCString& aSessionId, - nsresult aException, - uint32_t aSystemCode, - const nsCString& aMessage) -{ - MOZ_ASSERT(NS_IsMainThread()); - mProxy->OnSessionError(NS_ConvertUTF8toUTF16(aSessionId), - aException, - aSystemCode, - NS_ConvertUTF8toUTF16(aMessage)); -} - -void -MediaDrmCDMCallbackProxy::BatchedKeyStatusChanged(const nsCString& aSessionId, - const nsTArray& aKeyInfos) -{ - MOZ_ASSERT(NS_IsMainThread()); - BatchedKeyStatusChangedInternal(aSessionId, aKeyInfos); -} - -void -MediaDrmCDMCallbackProxy::BatchedKeyStatusChangedInternal(const nsCString& aSessionId, - const nsTArray& aKeyInfos) -{ - bool keyStatusesChange = false; - { - CDMCaps::AutoLock caps(mProxy->Capabilites()); - for (size_t i = 0; i < aKeyInfos.Length(); i++) { - keyStatusesChange |= - caps.SetKeyStatus(aKeyInfos[i].mKeyId, - NS_ConvertUTF8toUTF16(aSessionId), - aKeyInfos[i].mStatus); - } - } - if (keyStatusesChange) { - mProxy->OnKeyStatusesChange(NS_ConvertUTF8toUTF16(aSessionId)); - } -} - -void -MediaDrmCDMCallbackProxy::Decrypted(uint32_t aId, - DecryptStatus aResult, - const nsTArray& aDecryptedData) -{ - MOZ_ASSERT_UNREACHABLE("Fennec could not handle decrypted event"); -} - -} // namespace mozilla \ No newline at end of file diff --git a/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.h b/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.h deleted file mode 100644 index c7a0810ee5..0000000000 --- a/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#ifndef MediaDrmCDMCallbackProxy_h_ -#define MediaDrmCDMCallbackProxy_h_ - -#include "mozilla/CDMProxy.h" -#include "mozilla/DecryptorProxyCallback.h" - -namespace mozilla { -class CDMProxy; -// Proxies call backs from the MediaDrmProxy -> MediaDrmProxySupport back to the MediaKeys -// object on the main thread. -// We used annotation calledFrom = "gecko" to ensure running on main thread. -class MediaDrmCDMCallbackProxy : public DecryptorProxyCallback { -public: - - void SetDecryptorId(uint32_t aId) override {} - - void SetSessionId(uint32_t aCreateSessionToken, - const nsCString& aSessionId) override; - - void ResolveLoadSessionPromise(uint32_t aPromiseId, - bool aSuccess) override; - - void ResolvePromise(uint32_t aPromiseId) override; - - void RejectPromise(uint32_t aPromiseId, - nsresult aException, - const nsCString& aSessionId) override; - - void SessionMessage(const nsCString& aSessionId, - dom::MediaKeyMessageType aMessageType, - const nsTArray& aMessage) override; - - void ExpirationChange(const nsCString& aSessionId, - UnixTime aExpiryTime) override; - - void SessionClosed(const nsCString& aSessionId) override; - - void SessionError(const nsCString& aSessionId, - nsresult aException, - uint32_t aSystemCode, - const nsCString& aMessage) override; - - void Decrypted(uint32_t aId, - DecryptStatus aResult, - const nsTArray& aDecryptedData) override; - - void BatchedKeyStatusChanged(const nsCString& aSessionId, - const nsTArray& aKeyInfos) override; - - ~MediaDrmCDMCallbackProxy() {} - -private: - friend class MediaDrmCDMProxy; - explicit MediaDrmCDMCallbackProxy(CDMProxy* aProxy); - - void BatchedKeyStatusChangedInternal(const nsCString& aSessionId, - const nsTArray& aKeyInfos); - // Warning: Weak ref. - CDMProxy* mProxy; -}; - -} // namespace mozilla -#endif \ No newline at end of file diff --git a/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp b/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp deleted file mode 100644 index f64d0afdb3..0000000000 --- a/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp +++ /dev/null @@ -1,466 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#include "mozilla/dom/MediaKeySession.h" -#include "mozilla/MediaDrmCDMProxy.h" -#include "MediaDrmCDMCallbackProxy.h" - -using namespace mozilla::java::sdk; - -namespace mozilla { - -MediaDrmSessionType -ToMediaDrmSessionType(dom::MediaKeySessionType aSessionType) -{ - switch (aSessionType) { - case dom::MediaKeySessionType::Temporary: return kKeyStreaming; - case dom::MediaKeySessionType::Persistent_license: return kKeyOffline; - default: return kKeyStreaming; - }; -} - -MediaDrmCDMProxy::MediaDrmCDMProxy(dom::MediaKeys* aKeys, - const nsAString& aKeySystem, - bool aDistinctiveIdentifierRequired, - bool aPersistentStateRequired) - : CDMProxy(aKeys, - aKeySystem, - aDistinctiveIdentifierRequired, - aPersistentStateRequired) - , mCDM(nullptr) - , mShutdownCalled(false) -{ - MOZ_ASSERT(NS_IsMainThread()); - MOZ_COUNT_CTOR(MediaDrmCDMProxy); -} - -MediaDrmCDMProxy::~MediaDrmCDMProxy() -{ - MOZ_COUNT_DTOR(MediaDrmCDMProxy); -} - -void -MediaDrmCDMProxy::Init(PromiseId aPromiseId, - const nsAString& aOrigin, - const nsAString& aTopLevelOrigin, - const nsAString& aName, - bool aInPrivateBrowsing) -{ - MOZ_ASSERT(NS_IsMainThread()); - NS_ENSURE_TRUE_VOID(!mKeys.IsNull()); - - EME_LOG("MediaDrmCDMProxy::Init (%s, %s) %s", - NS_ConvertUTF16toUTF8(aOrigin).get(), - NS_ConvertUTF16toUTF8(aTopLevelOrigin).get(), - (aInPrivateBrowsing ? "PrivateBrowsing" : "NonPrivateBrowsing")); - - // Create a thread to work with cdm. - if (!mOwnerThread) { - nsresult rv = NS_NewNamedThread("MDCDMThread", getter_AddRefs(mOwnerThread)); - if (NS_FAILED(rv)) { - RejectPromise(aPromiseId, NS_ERROR_DOM_INVALID_STATE_ERR, - NS_LITERAL_CSTRING("Couldn't create CDM thread MediaDrmCDMProxy::Init")); - return; - } - } - - mCDM = mozilla::MakeUnique(mKeySystem); - nsCOMPtr task(NewRunnableMethod(this, - &MediaDrmCDMProxy::md_Init, - aPromiseId)); - mOwnerThread->Dispatch(task, NS_DISPATCH_NORMAL); -} - -void -MediaDrmCDMProxy::CreateSession(uint32_t aCreateSessionToken, - MediaKeySessionType aSessionType, - PromiseId aPromiseId, - const nsAString& aInitDataType, - nsTArray& aInitData) -{ - MOZ_ASSERT(NS_IsMainThread()); - MOZ_ASSERT(mOwnerThread); - - nsAutoPtr data(new CreateSessionData()); - data->mSessionType = aSessionType; - data->mCreateSessionToken = aCreateSessionToken; - data->mPromiseId = aPromiseId; - data->mInitDataType = NS_ConvertUTF16toUTF8(aInitDataType); - data->mInitData = Move(aInitData); - - nsCOMPtr task( - NewRunnableMethod>(this, - &MediaDrmCDMProxy::md_CreateSession, - data)); - mOwnerThread->Dispatch(task, NS_DISPATCH_NORMAL); -} - -void -MediaDrmCDMProxy::LoadSession(PromiseId aPromiseId, - const nsAString& aSessionId) -{ - // TODO: Implement LoadSession. - RejectPromise(aPromiseId, NS_ERROR_DOM_INVALID_STATE_ERR, - NS_LITERAL_CSTRING("Currently Fennec did not support LoadSession")); -} - -void -MediaDrmCDMProxy::SetServerCertificate(PromiseId aPromiseId, - nsTArray& aCert) -{ - // TODO: Implement SetServerCertificate. - RejectPromise(aPromiseId, NS_ERROR_DOM_INVALID_STATE_ERR, - NS_LITERAL_CSTRING("Currently Fennec did not support SetServerCertificate")); -} - -void -MediaDrmCDMProxy::UpdateSession(const nsAString& aSessionId, - PromiseId aPromiseId, - nsTArray& aResponse) -{ - MOZ_ASSERT(NS_IsMainThread()); - MOZ_ASSERT(mOwnerThread); - NS_ENSURE_TRUE_VOID(!mKeys.IsNull()); - - nsAutoPtr data(new UpdateSessionData()); - data->mPromiseId = aPromiseId; - data->mSessionId = NS_ConvertUTF16toUTF8(aSessionId); - data->mResponse = Move(aResponse); - - nsCOMPtr task( - NewRunnableMethod>(this, - &MediaDrmCDMProxy::md_UpdateSession, - data)); - mOwnerThread->Dispatch(task, NS_DISPATCH_NORMAL); -} - -void -MediaDrmCDMProxy::CloseSession(const nsAString& aSessionId, - PromiseId aPromiseId) -{ - MOZ_ASSERT(NS_IsMainThread()); - MOZ_ASSERT(mOwnerThread); - NS_ENSURE_TRUE_VOID(!mKeys.IsNull()); - - nsAutoPtr data(new SessionOpData()); - data->mPromiseId = aPromiseId; - data->mSessionId = NS_ConvertUTF16toUTF8(aSessionId); - - nsCOMPtr task( - NewRunnableMethod>(this, - &MediaDrmCDMProxy::md_CloseSession, - data)); - mOwnerThread->Dispatch(task, NS_DISPATCH_NORMAL); -} - -void -MediaDrmCDMProxy::RemoveSession(const nsAString& aSessionId, - PromiseId aPromiseId) -{ - // TODO: Implement RemoveSession. - RejectPromise(aPromiseId, NS_ERROR_DOM_INVALID_STATE_ERR, - NS_LITERAL_CSTRING("Currently Fennec did not support RemoveSession")); -} - -void -MediaDrmCDMProxy::Shutdown() -{ - MOZ_ASSERT(NS_IsMainThread()); - MOZ_ASSERT(mOwnerThread); - nsCOMPtr task( - NewRunnableMethod(this, &MediaDrmCDMProxy::md_Shutdown)); - - mOwnerThread->Dispatch(task, NS_DISPATCH_NORMAL); - mOwnerThread->Shutdown(); - mOwnerThread = nullptr; -} - -void -MediaDrmCDMProxy::Terminated() -{ - // TODO: Implement Terminated. - // Should find a way to handle the case when remote side MediaDrm crashed. -} - -const nsCString& -MediaDrmCDMProxy::GetNodeId() const -{ - return mNodeId; -} - -void -MediaDrmCDMProxy::OnSetSessionId(uint32_t aCreateSessionToken, - const nsAString& aSessionId) -{ - MOZ_ASSERT(NS_IsMainThread()); - if (mKeys.IsNull()) { - return; - } - - RefPtr session(mKeys->GetPendingSession(aCreateSessionToken)); - if (session) { - session->SetSessionId(aSessionId); - } -} - -void -MediaDrmCDMProxy::OnResolveLoadSessionPromise(uint32_t aPromiseId, bool aSuccess) -{ - MOZ_ASSERT(NS_IsMainThread()); - if (mKeys.IsNull()) { - return; - } - mKeys->OnSessionLoaded(aPromiseId, aSuccess); -} - -void -MediaDrmCDMProxy::OnSessionMessage(const nsAString& aSessionId, - dom::MediaKeyMessageType aMessageType, - nsTArray& aMessage) -{ - MOZ_ASSERT(NS_IsMainThread()); - if (mKeys.IsNull()) { - return; - } - RefPtr session(mKeys->GetSession(aSessionId)); - if (session) { - session->DispatchKeyMessage(aMessageType, aMessage); - } -} - -void -MediaDrmCDMProxy::OnExpirationChange(const nsAString& aSessionId, - UnixTime aExpiryTime) -{ - MOZ_ASSERT(NS_IsMainThread()); - if (mKeys.IsNull()) { - return; - } - RefPtr session(mKeys->GetSession(aSessionId)); - if (session) { - session->SetExpiration(static_cast(aExpiryTime)); - } -} - -void -MediaDrmCDMProxy::OnSessionClosed(const nsAString& aSessionId) -{ - MOZ_ASSERT(NS_IsMainThread()); - if (mKeys.IsNull()) { - return; - } - RefPtr session(mKeys->GetSession(aSessionId)); - if (session) { - session->OnClosed(); - } -} - -void -MediaDrmCDMProxy::OnSessionError(const nsAString& aSessionId, - nsresult aException, - uint32_t aSystemCode, - const nsAString& aMsg) -{ - MOZ_ASSERT(NS_IsMainThread()); - if (mKeys.IsNull()) { - return; - } - RefPtr session(mKeys->GetSession(aSessionId)); - if (session) { - session->DispatchKeyError(aSystemCode); - } -} - -void -MediaDrmCDMProxy::OnRejectPromise(uint32_t aPromiseId, - nsresult aDOMException, - const nsCString& aMsg) -{ - MOZ_ASSERT(NS_IsMainThread()); - RejectPromise(aPromiseId, aDOMException, aMsg); -} - -RefPtr -MediaDrmCDMProxy::Decrypt(MediaRawData* aSample) -{ - MOZ_ASSERT_UNREACHABLE("Fennec could not handle decrypting individually"); - return nullptr; -} - -void -MediaDrmCDMProxy::OnDecrypted(uint32_t aId, - DecryptStatus aResult, - const nsTArray& aDecryptedData) -{ - MOZ_ASSERT_UNREACHABLE("Fennec could not handle decrypted event"); -} - -void -MediaDrmCDMProxy::RejectPromise(PromiseId aId, nsresult aCode, - const nsCString& aReason) -{ - if (NS_IsMainThread()) { - if (!mKeys.IsNull()) { - mKeys->RejectPromise(aId, aCode, aReason); - } - } else { - nsCOMPtr task(new RejectPromiseTask(this, aId, aCode, - aReason)); - NS_DispatchToMainThread(task); - } -} - -void -MediaDrmCDMProxy::ResolvePromise(PromiseId aId) -{ - if (NS_IsMainThread()) { - if (!mKeys.IsNull()) { - mKeys->ResolvePromise(aId); - } else { - NS_WARNING("MediaDrmCDMProxy unable to resolve promise!"); - } - } else { - nsCOMPtr task; - task = NewRunnableMethod(this, - &MediaDrmCDMProxy::ResolvePromise, - aId); - NS_DispatchToMainThread(task); - } -} - -const nsString& -MediaDrmCDMProxy::KeySystem() const -{ - return mKeySystem; -} - -CDMCaps& -MediaDrmCDMProxy::Capabilites() -{ - return mCapabilites; -} - -void -MediaDrmCDMProxy::OnKeyStatusesChange(const nsAString& aSessionId) -{ - MOZ_ASSERT(NS_IsMainThread()); - if (mKeys.IsNull()) { - return; - } - RefPtr session(mKeys->GetSession(aSessionId)); - if (session) { - session->DispatchKeyStatusesChange(); - } -} - -void -MediaDrmCDMProxy::GetSessionIdsForKeyId(const nsTArray& aKeyId, - nsTArray& aSessionIds) -{ - CDMCaps::AutoLock caps(Capabilites()); - caps.GetSessionIdsForKeyId(aKeyId, aSessionIds); -} - -#ifdef DEBUG -bool -MediaDrmCDMProxy::IsOnOwnerThread() -{ - return NS_GetCurrentThread() == mOwnerThread; -} -#endif - -void -MediaDrmCDMProxy::OnCDMCreated(uint32_t aPromiseId) -{ - MOZ_ASSERT(NS_IsMainThread()); - if (mKeys.IsNull()) { - return; - } - - if (mCDM) { - mKeys->OnCDMCreated(aPromiseId, GetNodeId(), 0); - return; - } - - // No CDM? Just reject the promise. - mKeys->RejectPromise(aPromiseId, NS_ERROR_DOM_INVALID_STATE_ERR, - NS_LITERAL_CSTRING("Null CDM in OnCDMCreated()")); -} - -void -MediaDrmCDMProxy::md_Init(uint32_t aPromiseId) -{ - MOZ_ASSERT(IsOnOwnerThread()); - MOZ_ASSERT(mCDM); - - mCallback = new MediaDrmCDMCallbackProxy(this); - mCDM->Init(mCallback); - nsCOMPtr task( - NewRunnableMethod(this, - &MediaDrmCDMProxy::OnCDMCreated, - aPromiseId)); - NS_DispatchToMainThread(task); -} - -void -MediaDrmCDMProxy::md_CreateSession(nsAutoPtr aData) -{ - MOZ_ASSERT(IsOnOwnerThread()); - - if (!mCDM) { - RejectPromise(aData->mPromiseId, NS_ERROR_DOM_INVALID_STATE_ERR, - NS_LITERAL_CSTRING("Null CDM in md_CreateSession")); - return; - } - - mCDM->CreateSession(aData->mCreateSessionToken, - aData->mPromiseId, - aData->mInitDataType, - aData->mInitData, - ToMediaDrmSessionType(aData->mSessionType)); -} - -void -MediaDrmCDMProxy::md_UpdateSession(nsAutoPtr aData) -{ - MOZ_ASSERT(IsOnOwnerThread()); - - if (!mCDM) { - RejectPromise(aData->mPromiseId, NS_ERROR_DOM_INVALID_STATE_ERR, - NS_LITERAL_CSTRING("Null CDM in md_UpdateSession")); - return; - } - mCDM->UpdateSession(aData->mPromiseId, - aData->mSessionId, - aData->mResponse); -} - -void -MediaDrmCDMProxy::md_CloseSession(nsAutoPtr aData) -{ - MOZ_ASSERT(IsOnOwnerThread()); - - if (!mCDM) { - RejectPromise(aData->mPromiseId, NS_ERROR_DOM_INVALID_STATE_ERR, - NS_LITERAL_CSTRING("Null CDM in md_CloseSession")); - return; - } - mCDM->CloseSession(aData->mPromiseId, aData->mSessionId); -} - -void -MediaDrmCDMProxy::md_Shutdown() -{ - MOZ_ASSERT(IsOnOwnerThread()); - MOZ_ASSERT(mCDM); - if (mShutdownCalled) { - return; - } - mShutdownCalled = true; - mCDM->Shutdown(); - mCDM = nullptr; -} - -} // namespace mozilla \ No newline at end of file diff --git a/dom/media/eme/mediadrm/MediaDrmCDMProxy.h b/dom/media/eme/mediadrm/MediaDrmCDMProxy.h deleted file mode 100644 index a25af5dbf9..0000000000 --- a/dom/media/eme/mediadrm/MediaDrmCDMProxy.h +++ /dev/null @@ -1,183 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#ifndef MediaDrmCDMProxy_h_ -#define MediaDrmCDMProxy_h_ - -#include -#include "mozilla/jni/Types.h" -#include "GeneratedJNINatives.h" - -#include "mozilla/CDMProxy.h" -#include "mozilla/CDMCaps.h" -#include "mozilla/dom/MediaKeys.h" -#include "mozilla/MediaDrmProxySupport.h" -#include "mozilla/UniquePtr.h" - -#include "MediaCodec.h" -#include "nsString.h" -#include "nsAutoPtr.h" - -using namespace mozilla::java; - -namespace mozilla { -class MediaDrmCDMCallbackProxy; -class MediaDrmCDMProxy : public CDMProxy { -public: - - NS_INLINE_DECL_THREADSAFE_REFCOUNTING(MediaDrmCDMProxy) - - MediaDrmCDMProxy(dom::MediaKeys* aKeys, - const nsAString& aKeySystem, - bool aDistinctiveIdentifierRequired, - bool aPersistentStateRequired); - - void Init(PromiseId aPromiseId, - const nsAString& aOrigin, - const nsAString& aTopLevelOrigin, - const nsAString& aGMPName, - bool aInPrivateBrowsing) override; - - void CreateSession(uint32_t aCreateSessionToken, - MediaKeySessionType aSessionType, - PromiseId aPromiseId, - const nsAString& aInitDataType, - nsTArray& aInitData) override; - - void LoadSession(PromiseId aPromiseId, - const nsAString& aSessionId) override; - - void SetServerCertificate(PromiseId aPromiseId, - nsTArray& aCert) override; - - void UpdateSession(const nsAString& aSessionId, - PromiseId aPromiseId, - nsTArray& aResponse) override; - - void CloseSession(const nsAString& aSessionId, - PromiseId aPromiseId) override; - - void RemoveSession(const nsAString& aSessionId, - PromiseId aPromiseId) override; - - void Shutdown() override; - - void Terminated() override; - - const nsCString& GetNodeId() const override; - - void OnSetSessionId(uint32_t aCreateSessionToken, - const nsAString& aSessionId) override; - - void OnResolveLoadSessionPromise(uint32_t aPromiseId, bool aSuccess) override; - - void OnSessionMessage(const nsAString& aSessionId, - dom::MediaKeyMessageType aMessageType, - nsTArray& aMessage) override; - - void OnExpirationChange(const nsAString& aSessionId, - UnixTime aExpiryTime) override; - - void OnSessionClosed(const nsAString& aSessionId) override; - - void OnSessionError(const nsAString& aSessionId, - nsresult aException, - uint32_t aSystemCode, - const nsAString& aMsg) override; - - void OnRejectPromise(uint32_t aPromiseId, - nsresult aCode, - const nsCString& aMsg) override; - - RefPtr Decrypt(MediaRawData* aSample) override; - void OnDecrypted(uint32_t aId, - DecryptStatus aResult, - const nsTArray& aDecryptedData) override; - - void RejectPromise(PromiseId aId, nsresult aCode, - const nsCString& aReason) override; - - // Resolves promise with "undefined". - // Can be called from any thread. - void ResolvePromise(PromiseId aId) override; - - // Threadsafe. - const nsString& KeySystem() const override; - - CDMCaps& Capabilites() override; - - void OnKeyStatusesChange(const nsAString& aSessionId) override; - - void GetSessionIdsForKeyId(const nsTArray& aKeyId, - nsTArray& aSessionIds) override; - -#ifdef DEBUG - bool IsOnOwnerThread() override; -#endif - -private: - virtual ~MediaDrmCDMProxy(); - - void OnCDMCreated(uint32_t aPromiseId); - - struct CreateSessionData { - MediaKeySessionType mSessionType; - uint32_t mCreateSessionToken; - PromiseId mPromiseId; - nsCString mInitDataType; - nsTArray mInitData; - }; - - struct UpdateSessionData { - PromiseId mPromiseId; - nsCString mSessionId; - nsTArray mResponse; - }; - - struct SessionOpData { - PromiseId mPromiseId; - nsCString mSessionId; - }; - - class RejectPromiseTask : public Runnable { - public: - RejectPromiseTask(MediaDrmCDMProxy* aProxy, - PromiseId aId, - nsresult aCode, - const nsCString& aReason) - : mProxy(aProxy) - , mId(aId) - , mCode(aCode) - , mReason(aReason) - { - } - NS_METHOD Run() { - mProxy->RejectPromise(mId, mCode, mReason); - return NS_OK; - } - private: - RefPtr mProxy; - PromiseId mId; - nsresult mCode; - nsCString mReason; - }; - - nsCString mNodeId; - mozilla::UniquePtr mCDM; - nsAutoPtr mCallback; - bool mShutdownCalled; - -// ===================================================================== -// For MediaDrmProxySupport - void md_Init(uint32_t aPromiseId); - void md_CreateSession(nsAutoPtr aData); - void md_UpdateSession(nsAutoPtr aData); - void md_CloseSession(nsAutoPtr aData); - void md_Shutdown(); -// ===================================================================== -}; - -} // namespace mozilla -#endif // MediaDrmCDMProxy_h_ \ No newline at end of file diff --git a/dom/media/eme/mediadrm/MediaDrmProxySupport.cpp b/dom/media/eme/mediadrm/MediaDrmProxySupport.cpp deleted file mode 100644 index 83f0529d26..0000000000 --- a/dom/media/eme/mediadrm/MediaDrmProxySupport.cpp +++ /dev/null @@ -1,283 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#include "MediaDrmProxySupport.h" -#include "mozilla/EMEUtils.h" -#include "FennecJNINatives.h" -#include "MediaCodec.h" // For MediaDrm::KeyStatus -#include "MediaPrefs.h" - -using namespace mozilla::java; - -namespace mozilla { - -LogModule* GetMDRMNLog() { - static LazyLogModule log("MediaDrmProxySupport"); - return log; -} - -class MediaDrmJavaCallbacksSupport - : public MediaDrmProxy::NativeMediaDrmProxyCallbacks::Natives -{ -public: - typedef MediaDrmProxy::NativeMediaDrmProxyCallbacks::Natives MediaDrmProxyNativeCallbacks; - using MediaDrmProxyNativeCallbacks::DisposeNative; - using MediaDrmProxyNativeCallbacks::AttachNative; - - MediaDrmJavaCallbacksSupport(DecryptorProxyCallback* aDecryptorProxyCallback) - : mDecryptorProxyCallback(aDecryptorProxyCallback) - { - MOZ_ASSERT(aDecryptorProxyCallback); - } - /* - * Native implementation, called by Java. - */ - void OnSessionCreated(int aCreateSessionToken, - int aPromiseId, - jni::ByteArray::Param aSessionId, - jni::ByteArray::Param aRequest); - - void OnSessionUpdated(int aPromiseId, jni::ByteArray::Param aSessionId); - - void OnSessionClosed(int aPromiseId, jni::ByteArray::Param aSessionId); - - void OnSessionMessage(jni::ByteArray::Param aSessionId, - int /*mozilla::dom::MediaKeyMessageType*/ aSessionMessageType, - jni::ByteArray::Param aRequest); - - void OnSessionError(jni::ByteArray::Param aSessionId, - jni::String::Param aMessage); - - void OnSessionBatchedKeyChanged(jni::ByteArray::Param, - jni::ObjectArray::Param); - - void OnRejectPromise(int aPromiseId, jni::String::Param aMessage); - -private: - DecryptorProxyCallback* mDecryptorProxyCallback; -}; // MediaDrmJavaCallbacksSupport - -void -MediaDrmJavaCallbacksSupport::OnSessionCreated(int aCreateSessionToken, - int aPromiseId, - jni::ByteArray::Param aSessionId, - jni::ByteArray::Param aRequest) -{ - MOZ_ASSERT(NS_IsMainThread()); - auto reqDataArray = aRequest->GetElements(); - nsCString sessionId(reinterpret_cast(aSessionId->GetElements().Elements()), - aSessionId->Length()); - MDRMN_LOG("SessionId(%s) closed", sessionId.get()); - - mDecryptorProxyCallback->SetSessionId(aCreateSessionToken, sessionId); - mDecryptorProxyCallback->ResolvePromise(aPromiseId); -} - -void -MediaDrmJavaCallbacksSupport::OnSessionUpdated(int aPromiseId, - jni::ByteArray::Param aSessionId) -{ - MOZ_ASSERT(NS_IsMainThread()); - MDRMN_LOG("SessionId(%s) closed", - nsCString(reinterpret_cast(aSessionId->GetElements().Elements()), - aSessionId->Length()).get()); - mDecryptorProxyCallback->ResolvePromise(aPromiseId); -} - -void -MediaDrmJavaCallbacksSupport::OnSessionClosed(int aPromiseId, - jni::ByteArray::Param aSessionId) -{ - MOZ_ASSERT(NS_IsMainThread()); - nsCString sessionId(reinterpret_cast(aSessionId->GetElements().Elements()), - aSessionId->Length()); - MDRMN_LOG("SessionId(%s) closed", sessionId.get()); - mDecryptorProxyCallback->ResolvePromise(aPromiseId); - mDecryptorProxyCallback->SessionClosed(sessionId); -} - -void -MediaDrmJavaCallbacksSupport::OnSessionMessage(jni::ByteArray::Param aSessionId, - int /*mozilla::dom::MediaKeyMessageType*/ aMessageType, - jni::ByteArray::Param aRequest) -{ - MOZ_ASSERT(NS_IsMainThread()); - nsCString sessionId(reinterpret_cast(aSessionId->GetElements().Elements()), - aSessionId->Length()); - auto reqDataArray = aRequest->GetElements(); - - nsTArray retRequest; - retRequest.AppendElements(reinterpret_cast(reqDataArray.Elements()), - reqDataArray.Length()); - - mDecryptorProxyCallback->SessionMessage(sessionId, - static_cast(aMessageType), - retRequest); -} - -void -MediaDrmJavaCallbacksSupport::OnSessionError(jni::ByteArray::Param aSessionId, - jni::String::Param aMessage) -{ - MOZ_ASSERT(NS_IsMainThread()); - nsCString sessionId(reinterpret_cast(aSessionId->GetElements().Elements()), - aSessionId->Length()); - nsCString errorMessage = aMessage->ToCString(); - MDRMN_LOG("SessionId(%s)", sessionId.get()); - // TODO: We cannot get system error code from media drm API. - // Currently use -1 as an error code. - mDecryptorProxyCallback->SessionError(sessionId, - NS_ERROR_DOM_INVALID_STATE_ERR, - -1, - errorMessage); -} - -// TODO: MediaDrm.KeyStatus defined the status code not included -// dom::MediaKeyStatus::Released and dom::MediaKeyStatus::Output_downscaled. -// Should keep tracking for this if it will be changed in the future. -static dom::MediaKeyStatus -MediaDrmKeyStatusToMediaKeyStatus(int aStatusCode) -{ - using mozilla::java::sdk::KeyStatus; - switch (aStatusCode) { - case KeyStatus::STATUS_USABLE: return dom::MediaKeyStatus::Usable; - case KeyStatus::STATUS_EXPIRED: return dom::MediaKeyStatus::Expired; - case KeyStatus::STATUS_OUTPUT_NOT_ALLOWED: return dom::MediaKeyStatus::Output_restricted; - case KeyStatus::STATUS_INTERNAL_ERROR: return dom::MediaKeyStatus::Internal_error; - case KeyStatus::STATUS_PENDING: return dom::MediaKeyStatus::Status_pending; - default: return dom::MediaKeyStatus::Internal_error; - } -} - -void -MediaDrmJavaCallbacksSupport::OnSessionBatchedKeyChanged(jni::ByteArray::Param aSessionId, - jni::ObjectArray::Param aKeyInfos) -{ - MOZ_ASSERT(NS_IsMainThread()); - nsCString sessionId(reinterpret_cast(aSessionId->GetElements().Elements()), - aSessionId->Length()); - nsTArray keyInfosObjectArray(aKeyInfos->GetElements()); - - nsTArray keyInfosArray; - - for (auto&& keyInfoObject : keyInfosObjectArray) { - java::SessionKeyInfo::LocalRef keyInfo(mozilla::Move(keyInfoObject)); - mozilla::jni::ByteArray::LocalRef keyIdByteArray = keyInfo->KeyId(); - nsTArray keyIdInt8Array = keyIdByteArray->GetElements(); - // Cast nsTArray to nsTArray - nsTArray* keyId = reinterpret_cast*>(&keyIdInt8Array); - auto keyStatus = keyInfo->Status(); // int32_t - keyInfosArray.AppendElement(CDMKeyInfo(*keyId, - dom::Optional( - MediaDrmKeyStatusToMediaKeyStatus(keyStatus) - ) - ) - ); - } - - mDecryptorProxyCallback->BatchedKeyStatusChanged(sessionId, - keyInfosArray); -} - -void -MediaDrmJavaCallbacksSupport::OnRejectPromise(int aPromiseId, jni::String::Param aMessage) -{ - MOZ_ASSERT(NS_IsMainThread()); - nsCString reason = aMessage->ToCString(); - MDRMN_LOG("OnRejectPromise aMessage(%s) ", reason.get()); - // Current implementation assume all the reject from MediaDrm is due to invalid state. - // Other cases should be handled before calling into MediaDrmProxy API. - mDecryptorProxyCallback->RejectPromise(aPromiseId, - NS_ERROR_DOM_INVALID_STATE_ERR, - reason); -} - -MediaDrmProxySupport::MediaDrmProxySupport(const nsAString& aKeySystem) - : mKeySystem(aKeySystem), mDestroyed(false) -{ - mJavaCallbacks = MediaDrmProxy::NativeMediaDrmProxyCallbacks::New(); - - mBridgeProxy = - MediaDrmProxy::Create(mKeySystem, - mJavaCallbacks, - MediaPrefs::PDMAndroidRemoteCodecEnabled()); -} - -MediaDrmProxySupport::~MediaDrmProxySupport() -{ - MOZ_ASSERT(mDestroyed, "Shutdown() should be called before !!"); - MediaDrmJavaCallbacksSupport::DisposeNative(mJavaCallbacks); -} - -nsresult -MediaDrmProxySupport::Init(DecryptorProxyCallback* aCallback) -{ - MOZ_ASSERT(mJavaCallbacks); - - mCallback = aCallback; - MediaDrmJavaCallbacksSupport::AttachNative(mJavaCallbacks, - mozilla::MakeUnique(mCallback)); - return mBridgeProxy != nullptr ? NS_OK : NS_ERROR_FAILURE; -} - -void -MediaDrmProxySupport::CreateSession(uint32_t aCreateSessionToken, - uint32_t aPromiseId, - const nsCString& aInitDataType, - const nsTArray& aInitData, - MediaDrmSessionType aSessionType) -{ - MOZ_ASSERT(mBridgeProxy); - - auto initDataBytes = - mozilla::jni::ByteArray::New(reinterpret_cast(&aInitData[0]), - aInitData.Length()); - // TODO: aSessionType is not used here. - // Refer to - // http://androidxref.com/5.1.1_r6/xref/external/chromium_org/media/base/android/java/src/org/chromium/media/MediaDrmBridge.java#420 - // it is hard code to streaming type. - mBridgeProxy->CreateSession(aCreateSessionToken, - aPromiseId, - NS_ConvertUTF8toUTF16(aInitDataType), - initDataBytes); -} - -void -MediaDrmProxySupport::UpdateSession(uint32_t aPromiseId, - const nsCString& aSessionId, - const nsTArray& aResponse) -{ - MOZ_ASSERT(mBridgeProxy); - - auto response = - mozilla::jni::ByteArray::New(reinterpret_cast(aResponse.Elements()), - aResponse.Length()); - mBridgeProxy->UpdateSession(aPromiseId, - NS_ConvertUTF8toUTF16(aSessionId), - response); -} - -void -MediaDrmProxySupport::CloseSession(uint32_t aPromiseId, - const nsCString& aSessionId) -{ - MOZ_ASSERT(mBridgeProxy); - - mBridgeProxy->CloseSession(aPromiseId, NS_ConvertUTF8toUTF16(aSessionId)); -} - -void -MediaDrmProxySupport::Shutdown() -{ - MOZ_ASSERT(mBridgeProxy); - - if (mDestroyed) { - return; - } - mBridgeProxy->Destroy(); - mDestroyed = true; -} - -} // namespace mozilla \ No newline at end of file diff --git a/dom/media/eme/mediadrm/MediaDrmProxySupport.h b/dom/media/eme/mediadrm/MediaDrmProxySupport.h deleted file mode 100644 index b119633f52..0000000000 --- a/dom/media/eme/mediadrm/MediaDrmProxySupport.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#ifndef MediaDrmProxySupport_H -#define MediaDrmProxySupport_H - -#include "mozilla/DecryptorProxyCallback.h" -#include "mozilla/Logging.h" -#include "FennecJNIWrappers.h" -#include "nsString.h" - - -namespace mozilla { - -enum MediaDrmSessionType { - kKeyStreaming = 1, - kKeyOffline = 2, - kKeyRelease = 3, -}; - -#ifndef MDRMN_LOG - LogModule* GetMDRMNLog(); - #define MDRMN_LOG(x, ...) MOZ_LOG(GetMDRMNLog(), mozilla::LogLevel::Debug,\ - ("[MediaDrmProxySupport][%s]" x, __FUNCTION__, ##__VA_ARGS__)) -#endif - -class MediaDrmProxySupport final -{ -public: - - MediaDrmProxySupport(const nsAString& aKeySystem); - ~MediaDrmProxySupport(); - - /* - * APIs to act as GMPDecryptorAPI, discarding unnecessary calls. - */ - nsresult Init(DecryptorProxyCallback* aCallback); - - void CreateSession(uint32_t aCreateSessionToken, - uint32_t aPromiseId, - const nsCString& aInitDataType, - const nsTArray& aInitData, - MediaDrmSessionType aSessionType); - - void UpdateSession(uint32_t aPromiseId, - const nsCString& aSessionId, - const nsTArray& aResponse); - - void CloseSession(uint32_t aPromiseId, - const nsCString& aSessionId); - - void Shutdown(); - -private: - const nsString mKeySystem; - java::MediaDrmProxy::GlobalRef mBridgeProxy; - java::MediaDrmProxy::NativeMediaDrmProxyCallbacks::GlobalRef mJavaCallbacks; - DecryptorProxyCallback* mCallback; - bool mDestroyed; - -}; - -} // namespace mozilla -#endif // MediaDrmProxySupport_H \ No newline at end of file diff --git a/dom/media/eme/mediadrm/moz.build b/dom/media/eme/mediadrm/moz.build deleted file mode 100644 index e425ff5bbb..0000000000 --- a/dom/media/eme/mediadrm/moz.build +++ /dev/null @@ -1,18 +0,0 @@ -# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# 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/. - -EXPORTS.mozilla += [ - 'MediaDrmCDMCallbackProxy.h', - 'MediaDrmCDMProxy.h', - 'MediaDrmProxySupport.h', -] - -SOURCES += [ - 'MediaDrmCDMCallbackProxy.cpp', - 'MediaDrmCDMProxy.cpp', - 'MediaDrmProxySupport.cpp', -] - -FINAL_LIBRARY = 'xul' \ No newline at end of file diff --git a/dom/media/eme/moz.build b/dom/media/eme/moz.build index 495665dd70..7b1ad9d843 100644 --- a/dom/media/eme/moz.build +++ b/dom/media/eme/moz.build @@ -36,9 +36,6 @@ SOURCES += [ 'MediaKeySystemAccessManager.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android': - DIRS += ['mediadrm'] - include('/ipc/chromium/chromium-config.mozbuild') FINAL_LIBRARY = 'xul' diff --git a/dom/media/gmp/moz.build b/dom/media/gmp/moz.build index 6e9e92e8a5..fb8e6532fc 100644 --- a/dom/media/gmp/moz.build +++ b/dom/media/gmp/moz.build @@ -76,16 +76,6 @@ if CONFIG['MOZ_EME']: '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': - SOURCES += [ - 'GMPLoader.cpp', - ] - USE_LIBS += [ - 'rlz', - ] - SOURCES += [ 'GMPAudioDecoderChild.cpp', 'GMPAudioDecoderParent.cpp', diff --git a/dom/media/systemservices/OpenSLESProvider.cpp b/dom/media/systemservices/OpenSLESProvider.cpp deleted file mode 100644 index c7348afa0b..0000000000 --- a/dom/media/systemservices/OpenSLESProvider.cpp +++ /dev/null @@ -1,189 +0,0 @@ -/* -*- Mode: C++; tab-width: 50; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#include "OpenSLESProvider.h" -#include "mozilla/Logging.h" -#include "nsDebug.h" - -#include -#include -#include - -// MOZ_LOG=OpenSLESProvider:5 -#undef LOG -#undef LOG_ENABLED -mozilla::LazyLogModule gOpenSLESProviderLog("OpenSLESProvider"); -#define LOG(args) MOZ_LOG(gOpenSLESProviderLog, mozilla::LogLevel::Debug, args) -#define LOG_ENABLED() MOZ_LOG_TEST(gOpenSLESProviderLog, mozilla::LogLevel::Debug) - -namespace mozilla { - -OpenSLESProvider::OpenSLESProvider() - : mLock("OpenSLESProvider.mLock"), - mSLEngine(nullptr), - mSLEngineUsers(0), - mIsRealized(false), - mOpenSLESLib(nullptr) -{ - LOG(("OpenSLESProvider being initialized")); -} - -OpenSLESProvider::~OpenSLESProvider() -{ - if (mOpenSLESLib) { - LOG(("OpenSLES Engine was not properly Destroyed")); - (void)dlclose(mOpenSLESLib); - } -} - -/* static */ -OpenSLESProvider& OpenSLESProvider::getInstance() -{ - // This doesn't need a Mutex in C++11 or GCC 4.3+, see N2660 and - // https://gcc.gnu.org/projects/cxx0x.html - static OpenSLESProvider instance; - return instance; -} - -/* static */ -SLresult OpenSLESProvider::Get(SLObjectItf * aObjectm, - SLuint32 aOptionCount, - const SLEngineOption *aOptions) -{ - OpenSLESProvider& provider = OpenSLESProvider::getInstance(); - return provider.GetEngine(aObjectm, aOptionCount, aOptions); -} - -SLresult OpenSLESProvider::GetEngine(SLObjectItf * aObjectm, - SLuint32 aOptionCount, - const SLEngineOption *aOptions) -{ - MutexAutoLock lock(mLock); - LOG(("Getting OpenSLES engine")); - // Bug 1042051: Validate options are the same - if (mSLEngine != nullptr) { - *aObjectm = mSLEngine; - mSLEngineUsers++; - LOG(("Returning existing engine, %d users", mSLEngineUsers)); - return SL_RESULT_SUCCESS; - } else { - int res = ConstructEngine(aObjectm, aOptionCount, aOptions); - if (res == SL_RESULT_SUCCESS) { - // Bug 1042051: Store engine options - mSLEngine = *aObjectm; - mSLEngineUsers++; - LOG(("Returning new engine")); - } else { - LOG(("Error getting engine: %d", res)); - } - return res; - } -} - -SLresult OpenSLESProvider::ConstructEngine(SLObjectItf * aObjectm, - SLuint32 aOptionCount, - const SLEngineOption *aOptions) -{ - mLock.AssertCurrentThreadOwns(); - - if (!mOpenSLESLib) { - mOpenSLESLib = dlopen("libOpenSLES.so", RTLD_LAZY); - if (!mOpenSLESLib) { - LOG(("Failed to dlopen OpenSLES library")); - return SL_RESULT_MEMORY_FAILURE; - } - } - - typedef SLresult (*slCreateEngine_t)(SLObjectItf *, - SLuint32, - const SLEngineOption *, - SLuint32, - const SLInterfaceID *, - const SLboolean *); - - slCreateEngine_t f_slCreateEngine = - (slCreateEngine_t)dlsym(mOpenSLESLib, "slCreateEngine"); - int result = f_slCreateEngine(aObjectm, aOptionCount, aOptions, 0, NULL, NULL); - return result; -} - -/* static */ -void OpenSLESProvider::Destroy(SLObjectItf * aObjectm) -{ - OpenSLESProvider& provider = OpenSLESProvider::getInstance(); - provider.DestroyEngine(aObjectm); -} - -void OpenSLESProvider::DestroyEngine(SLObjectItf * aObjectm) -{ - MutexAutoLock lock(mLock); - NS_ASSERTION(mOpenSLESLib, "OpenSLES destroy called but library is not open"); - - mSLEngineUsers--; - LOG(("Freeing engine, %d users left", mSLEngineUsers)); - if (mSLEngineUsers) { - return; - } - - (*(*aObjectm))->Destroy(*aObjectm); - // This assumes SLObjectItf is a pointer, but given the previous line, - // that's a given. - *aObjectm = nullptr; - - (void)dlclose(mOpenSLESLib); - mOpenSLESLib = nullptr; - mIsRealized = false; -} - -/* static */ -SLresult OpenSLESProvider::Realize(SLObjectItf aObjectm) -{ - OpenSLESProvider& provider = OpenSLESProvider::getInstance(); - return provider.RealizeEngine(aObjectm); -} - -SLresult OpenSLESProvider::RealizeEngine(SLObjectItf aObjectm) -{ - MutexAutoLock lock(mLock); - NS_ASSERTION(mOpenSLESLib, "OpenSLES realize called but library is not open"); - NS_ASSERTION(aObjectm != nullptr, "OpenSLES realize engine with empty ObjectItf"); - - if (mIsRealized) { - LOG(("Not realizing already realized engine")); - return SL_RESULT_SUCCESS; - } else { - SLresult res = (*aObjectm)->Realize(aObjectm, SL_BOOLEAN_FALSE); - if (res != SL_RESULT_SUCCESS) { - LOG(("Error realizing OpenSLES engine: %d", res)); - } else { - LOG(("Realized OpenSLES engine")); - mIsRealized = true; - } - return res; - } -} - -} // namespace mozilla - -extern "C" { -SLresult mozilla_get_sles_engine(SLObjectItf * aObjectm, - SLuint32 aOptionCount, - const SLEngineOption *aOptions) -{ - return mozilla::OpenSLESProvider::Get(aObjectm, aOptionCount, aOptions); -} - -void mozilla_destroy_sles_engine(SLObjectItf * aObjectm) -{ - mozilla::OpenSLESProvider::Destroy(aObjectm); -} - -SLresult mozilla_realize_sles_engine(SLObjectItf aObjectm) -{ - return mozilla::OpenSLESProvider::Realize(aObjectm); -} - -} - diff --git a/dom/media/systemservices/OpenSLESProvider.h b/dom/media/systemservices/OpenSLESProvider.h deleted file mode 100644 index 6253e9519e..0000000000 --- a/dom/media/systemservices/OpenSLESProvider.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -*- Mode: C++; tab-width: 50; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#ifndef _OPENSLESPROVIDER_H_ -#define _OPENSLESPROVIDER_H_ - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif -extern MOZ_EXPORT -SLresult mozilla_get_sles_engine(SLObjectItf * aObjectm, - SLuint32 aOptionCount, - const SLEngineOption *aOptions); -extern MOZ_EXPORT -void mozilla_destroy_sles_engine(SLObjectItf * aObjectm); -/* Realize is always in synchronous mode. */ -extern MOZ_EXPORT -SLresult mozilla_realize_sles_engine(SLObjectItf aObjectm); -#ifdef __cplusplus -} -#endif - -#ifdef __cplusplus -#include "mozilla/Mutex.h" - -extern mozilla::LazyLogModule gOpenSLESProviderLog; - -namespace mozilla { - -class OpenSLESProvider { -public: - static SLresult Get(SLObjectItf * aObjectm, - SLuint32 aOptionCount, - const SLEngineOption *aOptions); - static void Destroy(SLObjectItf * aObjectm); - static SLresult Realize(SLObjectItf aObjectm); -private: - OpenSLESProvider(); - ~OpenSLESProvider(); - OpenSLESProvider(OpenSLESProvider const&); // NO IMPLEMENTATION - void operator=(OpenSLESProvider const&); // NO IMPLEMENTATION - static OpenSLESProvider& getInstance(); - SLresult GetEngine(SLObjectItf * aObjectm, - SLuint32 aOptionCount, - const SLEngineOption *aOptions); - SLresult ConstructEngine(SLObjectItf * aObjectm, - SLuint32 aOptionCount, - const SLEngineOption *aOptions); - SLresult RealizeEngine(SLObjectItf aObjectm); - void DestroyEngine(SLObjectItf * aObjectm); - - // Protect all our internal variables - mozilla::Mutex mLock; - SLObjectItf mSLEngine; - int mSLEngineUsers; - bool mIsRealized; - void *mOpenSLESLib; -}; - -} //namespace -#endif // cplusplus - -#endif /* _OPENSLESPROVIDER_H_ */ diff --git a/dom/media/systemservices/moz.build b/dom/media/systemservices/moz.build index 7d566c42ce..8fb5e54a19 100644 --- a/dom/media/systemservices/moz.build +++ b/dom/media/systemservices/moz.build @@ -29,15 +29,6 @@ if CONFIG['OS_TARGET'] == 'WINNT': else: DEFINES['WEBRTC_POSIX'] = True - -if CONFIG['OS_TARGET'] == 'Android': - EXPORTS += [ - 'OpenSLESProvider.h' - ] - SOURCES += [ - 'OpenSLESProvider.cpp', - ] - if CONFIG['_MSC_VER']: DEFINES['__PRETTY_FUNCTION__'] = '__FUNCSIG__' diff --git a/dom/moz.build b/dom/moz.build index b324de2cb0..e01516b937 100644 --- a/dom/moz.build +++ b/dom/moz.build @@ -112,6 +112,6 @@ TEST_DIRS += [ 'imptests', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'windows', 'android'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'windows'): TEST_DIRS += ['plugins/test'] diff --git a/dom/system/android/AndroidLocationProvider.cpp b/dom/system/android/AndroidLocationProvider.cpp deleted file mode 100644 index 48694012a7..0000000000 --- a/dom/system/android/AndroidLocationProvider.cpp +++ /dev/null @@ -1,54 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#include "nsGeolocation.h" -#include "nsGeoPosition.h" -#include "AndroidLocationProvider.h" -#include "GeneratedJNIWrappers.h" - -using namespace mozilla; - -extern nsIGeolocationUpdate *gLocationCallback; - -NS_IMPL_ISUPPORTS(AndroidLocationProvider, nsIGeolocationProvider) - -AndroidLocationProvider::AndroidLocationProvider() -{ -} - -AndroidLocationProvider::~AndroidLocationProvider() -{ - NS_IF_RELEASE(gLocationCallback); -} - -NS_IMETHODIMP -AndroidLocationProvider::Startup() -{ - java::GeckoAppShell::EnableLocation(true); - return NS_OK; -} - -NS_IMETHODIMP -AndroidLocationProvider::Watch(nsIGeolocationUpdate* aCallback) -{ - NS_IF_RELEASE(gLocationCallback); - gLocationCallback = aCallback; - NS_IF_ADDREF(gLocationCallback); - return NS_OK; -} - -NS_IMETHODIMP -AndroidLocationProvider::Shutdown() -{ - java::GeckoAppShell::EnableLocation(false); - return NS_OK; -} - -NS_IMETHODIMP -AndroidLocationProvider::SetHighAccuracy(bool enable) -{ - java::GeckoAppShell::EnableLocationHighAccuracy(enable); - return NS_OK; -} diff --git a/dom/system/android/AndroidLocationProvider.h b/dom/system/android/AndroidLocationProvider.h deleted file mode 100644 index f6dc905b73..0000000000 --- a/dom/system/android/AndroidLocationProvider.h +++ /dev/null @@ -1,22 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#ifndef AndroidLocationProvider_h -#define AndroidLocationProvider_h - -#include "nsIGeolocationProvider.h" - -class AndroidLocationProvider final : public nsIGeolocationProvider -{ -public: - NS_DECL_ISUPPORTS - NS_DECL_NSIGEOLOCATIONPROVIDER - - AndroidLocationProvider(); -private: - ~AndroidLocationProvider(); -}; - -#endif /* AndroidLocationProvider_h */ diff --git a/dom/system/android/moz.build b/dom/system/android/moz.build deleted file mode 100644 index ad4a7c2341..0000000000 --- a/dom/system/android/moz.build +++ /dev/null @@ -1,16 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# 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/. - -SOURCES += [ - 'AndroidLocationProvider.cpp', - 'nsHapticFeedback.cpp', -] - -include('/ipc/chromium/chromium-config.mozbuild') - -FINAL_LIBRARY = 'xul' -LOCAL_INCLUDES += [ - '/dom/geolocation', -] diff --git a/dom/system/android/nsHapticFeedback.cpp b/dom/system/android/nsHapticFeedback.cpp deleted file mode 100644 index 37b51767aa..0000000000 --- a/dom/system/android/nsHapticFeedback.cpp +++ /dev/null @@ -1,19 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#include "mozilla/dom/ContentChild.h" -#include "nsHapticFeedback.h" -#include "GeneratedJNIWrappers.h" - -using namespace mozilla; - -NS_IMPL_ISUPPORTS(nsHapticFeedback, nsIHapticFeedback) - -NS_IMETHODIMP -nsHapticFeedback::PerformSimpleAction(int32_t aType) -{ - java::GeckoAppShell::PerformHapticFeedback(aType == LongPress); - return NS_OK; -} diff --git a/dom/system/android/nsHapticFeedback.h b/dom/system/android/nsHapticFeedback.h deleted file mode 100644 index 3b5c01c445..0000000000 --- a/dom/system/android/nsHapticFeedback.h +++ /dev/null @@ -1,16 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * 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/. */ - -#include "nsIHapticFeedback.h" - -class nsHapticFeedback final : public nsIHapticFeedback -{ -private: - ~nsHapticFeedback() {} - -public: - NS_DECL_ISUPPORTS - NS_DECL_NSIHAPTICFEEDBACK -}; diff --git a/dom/system/moz.build b/dom/system/moz.build index fb41fd4f2d..31097d2481 100644 --- a/dom/system/moz.build +++ b/dom/system/moz.build @@ -7,8 +7,6 @@ toolkit = CONFIG['MOZ_WIDGET_TOOLKIT'] if toolkit == 'windows': DIRS += ['windows'] -elif toolkit == 'android': - DIRS += ['android'] elif toolkit in ('gtk2', 'gtk3'): DIRS += ['linux'] diff --git a/dom/xbl/builtin/android/jar.mn b/dom/xbl/builtin/android/jar.mn deleted file mode 100644 index 9f05c2dd6c..0000000000 --- a/dom/xbl/builtin/android/jar.mn +++ /dev/null @@ -1,6 +0,0 @@ -# This Source Code Form is subject to the terms of the Mozilla Public -# 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/. - -toolkit.jar: -* content/global/platformHTMLBindings.xml (platformHTMLBindings.xml) diff --git a/dom/xbl/builtin/android/moz.build b/dom/xbl/builtin/android/moz.build deleted file mode 100644 index 635fa39c99..0000000000 --- a/dom/xbl/builtin/android/moz.build +++ /dev/null @@ -1,6 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# 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/. - -JAR_MANIFESTS += ['jar.mn'] \ No newline at end of file diff --git a/dom/xbl/builtin/android/platformHTMLBindings.xml b/dom/xbl/builtin/android/platformHTMLBindings.xml deleted file mode 100644 index 03363c1b5e..0000000000 --- a/dom/xbl/builtin/android/platformHTMLBindings.xml +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - -#include ../input-fields-base.inc - - - - - - - - - - - - - - - - - - - - - - - -#include ../textareas-base.inc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#include ../browser-base.inc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -#include ../editor-base.inc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dom/xbl/builtin/moz.build b/dom/xbl/builtin/moz.build index c51001b4c9..b6c41678c4 100644 --- a/dom/xbl/builtin/moz.build +++ b/dom/xbl/builtin/moz.build @@ -5,8 +5,6 @@ if CONFIG['OS_ARCH'] == 'WINNT': DIRS += ['win'] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android': - DIRS += ['android'] elif CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): DIRS += ['unix'] else: -- cgit v1.2.3