summaryrefslogtreecommitdiff
path: root/dom/media/gmp/GMPLoader.h
diff options
context:
space:
mode:
Diffstat (limited to 'dom/media/gmp/GMPLoader.h')
-rw-r--r--dom/media/gmp/GMPLoader.h96
1 files changed, 0 insertions, 96 deletions
diff --git a/dom/media/gmp/GMPLoader.h b/dom/media/gmp/GMPLoader.h
deleted file mode 100644
index 8e6b3cfac..000000000
--- a/dom/media/gmp/GMPLoader.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * vim: sw=4 ts=4 et :
- * 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 GMP_LOADER_H__
-#define GMP_LOADER_H__
-
-#include <stdint.h>
-#include "prlink.h"
-#include "gmp-entrypoints.h"
-#include "mozilla/UniquePtr.h"
-
-namespace mozilla {
-namespace gmp {
-
-class SandboxStarter {
-public:
- virtual ~SandboxStarter() {}
- virtual bool Start(const char* aLibPath) = 0;
-};
-
-// Interface that adapts a plugin to the GMP API.
-class GMPAdapter {
-public:
- virtual ~GMPAdapter() {}
- // Sets the adapted to plugin library module.
- // Note: the GMPAdapter is responsible for calling PR_UnloadLibrary on aLib
- // when it's finished with it.
- virtual void SetAdaptee(PRLibrary* aLib) = 0;
-
- // These are called in place of the corresponding GMP API functions.
- virtual GMPErr GMPInit(const GMPPlatformAPI* aPlatformAPI) = 0;
- virtual GMPErr GMPGetAPI(const char* aAPIName,
- void* aHostAPI,
- void** aPluginAPI,
- uint32_t aDecryptorId) = 0;
- virtual void GMPShutdown() = 0;
- virtual void GMPSetNodeId(const char* aNodeId, uint32_t aLength) = 0;
-};
-
-// Encapsulates generating the device-bound node id, activating the sandbox,
-// loading the GMP, and passing the node id to the GMP (in that order).
-//
-// In Desktop Gecko, the implementation of this lives in plugin-container,
-// and is passed into XUL code from on startup. The GMP IPC child protocol actor
-// uses this interface to load and retrieve interfaces from the GMPs.
-//
-// In Desktop Gecko the implementation lives in the plugin-container so that
-// it can be covered by DRM vendor's voucher.
-//
-// On Android the GMPLoader implementation lives in libxul (because for the time
-// being GMPLoader relies upon NSPR, which we can't use in plugin-container
-// on Android).
-//
-// There is exactly one GMPLoader per GMP child process, and only one GMP
-// per child process (so the GMPLoader only loads one GMP).
-//
-// Load() takes an optional GMPAdapter which can be used to adapt non-GMPs
-// to adhere to the GMP API.
-class GMPLoader {
-public:
- virtual ~GMPLoader() {}
-
- // Calculates the device-bound node id, then activates the sandbox,
- // then loads the GMP library and (if applicable) passes the bound node id
- // to the GMP. If aAdapter is non-null, the lib path is assumed to be
- // a non-GMP, and the adapter is initialized with the lib and the adapter
- // is used to interact with the plugin.
- virtual bool Load(const char* aUTF8LibPath,
- uint32_t aLibPathLen,
- char* aOriginSalt,
- uint32_t aOriginSaltLen,
- const GMPPlatformAPI* aPlatformAPI,
- GMPAdapter* aAdapter = nullptr) = 0;
-
- // Retrieves an interface pointer from the GMP.
- virtual GMPErr GetAPI(const char* aAPIName,
- void* aHostAPI,
- void** aPluginAPI,
- uint32_t aDecryptorId) = 0;
-
- // Calls the GMPShutdown function exported by the GMP lib, and unloads the
- // plugin library.
- virtual void Shutdown() = 0;
-};
-
-// On Desktop, this function resides in plugin-container.
-// On Mobile, this function resides in XUL.
-UniquePtr<GMPLoader> CreateGMPLoader(SandboxStarter* aStarter);
-
-} // namespace gmp
-} // namespace mozilla
-
-#endif // GMP_LOADER_H__