Revert "Create unique cdm engines per WVDrmPlugin instance"
This change introduced b/77618383, need to revert.
This reverts commit 58234a69f2.
Change-Id: Ie7d515bcd94f2dcee6fa9b885cd0441845c82c22
Bug: 77618383
This commit is contained in:
committed by
Patrick Egloff
parent
58234a69f2
commit
90441e24df
@@ -30,28 +30,12 @@ struct CdmIdentifier {
|
||||
// provide a friendly name of the application package for the purposes of
|
||||
// logging and metrics.
|
||||
std::string app_package_name;
|
||||
|
||||
// The unique identifier guarantees that no two identifiers share the same
|
||||
// CdmEngine instance. We're moving to a model where a plugin maps 1 to 1
|
||||
// with a CdmEngine instance. This is a simple way to implement that.
|
||||
uint32_t unique_id;
|
||||
|
||||
// This method is needed to check to see if the identifier is equivalent
|
||||
// to the default cdm. E.g. no spoid, origin or app package name. Use this
|
||||
// comparison in lieu of the == operator when checking to see if the
|
||||
// identifier would cause the default provisioned certificate to be used.
|
||||
bool IsEquivalentToDefault() {
|
||||
return spoid == EMPTY_SPOID
|
||||
&& origin == EMPTY_ORIGIN
|
||||
&& app_package_name == EMPTY_APP_PACKAGE_NAME;
|
||||
}
|
||||
};
|
||||
|
||||
// Provide comparison operators
|
||||
inline bool operator==(const CdmIdentifier& lhs, const CdmIdentifier& rhs) {
|
||||
return lhs.spoid == rhs.spoid && lhs.origin == rhs.origin
|
||||
&& lhs.app_package_name == rhs.app_package_name
|
||||
&& lhs.unique_id == rhs.unique_id;
|
||||
&& lhs.app_package_name == rhs.app_package_name;
|
||||
}
|
||||
|
||||
inline bool operator!=(const CdmIdentifier& lhs, const CdmIdentifier& rhs) {
|
||||
@@ -63,9 +47,7 @@ inline bool operator<(const CdmIdentifier& lhs, const CdmIdentifier& rhs) {
|
||||
|| ((lhs.spoid == rhs.spoid)
|
||||
&& (lhs.origin < rhs.origin
|
||||
|| (lhs.origin == rhs.origin
|
||||
&& (lhs.app_package_name < rhs.app_package_name
|
||||
|| (lhs.app_package_name == rhs.app_package_name
|
||||
&& lhs.unique_id < rhs.unique_id)))));
|
||||
&& lhs.app_package_name < rhs.app_package_name)));
|
||||
}
|
||||
|
||||
inline bool operator>(const CdmIdentifier& lhs, const CdmIdentifier& rhs) {
|
||||
@@ -84,8 +66,7 @@ inline bool operator>=(const CdmIdentifier& lhs, const CdmIdentifier& rhs) {
|
||||
static const CdmIdentifier kDefaultCdmIdentifier = {
|
||||
EMPTY_SPOID,
|
||||
EMPTY_ORIGIN,
|
||||
EMPTY_APP_PACKAGE_NAME,
|
||||
0
|
||||
EMPTY_APP_PACKAGE_NAME
|
||||
};
|
||||
|
||||
} // namespace wvcdm
|
||||
|
||||
@@ -127,14 +127,9 @@ class WvContentDecryptionModule : public android::RefBase, public TimerHandler {
|
||||
// Validate a passed-in service certificate
|
||||
virtual bool IsValidServiceCertificate(const std::string& certificate);
|
||||
|
||||
// Fill the metrics parameter with the metrics data for the CdmEngine
|
||||
// associated with the given CdmIdentifier. If the CdmEngine instance does
|
||||
// not exist, this will return an error.
|
||||
virtual CdmResponseType GetMetrics(const CdmIdentifier& identifier,
|
||||
drm_metrics::WvCdmMetrics* metrics);
|
||||
|
||||
// Closes the CdmEngine and sessions associated with the given CdmIdentifier.
|
||||
virtual CdmResponseType CloseCdm(const CdmIdentifier& identifier);
|
||||
// Retrieve the serialized metrics from CdmEngine and CdmSession instances
|
||||
// that have been closed.
|
||||
virtual void GetSerializedMetrics(std::string* serialized_metrics);
|
||||
|
||||
private:
|
||||
struct CdmInfo {
|
||||
@@ -150,10 +145,10 @@ class WvContentDecryptionModule : public android::RefBase, public TimerHandler {
|
||||
// Finds the CdmEngine instance for the given session id, returning NULL if
|
||||
// not found.
|
||||
CdmEngine* GetCdmForSessionId(const std::string& session_id);
|
||||
|
||||
// Close all of the open CdmEngine instances. This is used when ready to close
|
||||
// the WvContentDecryptionModule instance.
|
||||
void CloseAllCdms();
|
||||
// Closes CdmEngine instances that don't have any open sessions. Also stores
|
||||
// metrics data for closed CdmEngine instances.
|
||||
// Callers must acquire the cdms_lock_ before calling this method.
|
||||
void CloseCdmsWithoutSessions();
|
||||
|
||||
uint32_t GenerateSessionSharingId();
|
||||
|
||||
@@ -175,6 +170,9 @@ class WvContentDecryptionModule : public android::RefBase, public TimerHandler {
|
||||
// This contains weak pointers to the CDM instances contained in |cdms_|.
|
||||
std::map<std::string, CdmEngine*> cdm_by_session_id_;
|
||||
|
||||
// The metrics for cdm engines and sessions that have been closed.
|
||||
drm_metrics::WvCdmMetricsGroup metrics_group_;
|
||||
|
||||
CORE_DISALLOW_COPY_AND_ASSIGN(WvContentDecryptionModule);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user