Files
android/libwvdrmengine/cdm/include/cdm_identifier.h
Fred Gylys-Colwell 1a25cbdad6 Update Copyright
Merge from Widevine repo of http://go/wvgerrit/47860

This CL updates the copyright notice to indicate that files
shared with partners are shared under the Widevine Master
License Agreement.

bug: 77926774
test: comment change only
Change-Id: I0423668111578b80fb39a932d763df2827e2dfc3
2018-04-16 16:38:05 -07:00

77 lines
2.4 KiB
C++

// Copyright 2018 Google LLC. All Rights Reserved. This file and proprietary
// source code may only be used and distributed under the Widevine Master
// License Agreement.
//
// CdmIdentifier - Struct that holds all the information necessary to
// uniquely identify a CdmEngine instance in the
// WvContentDecryptionModule multiplexing layer.
#ifndef CDM_BASE_CDM_IDENTIFIER_H_
#define CDM_BASE_CDM_IDENTIFIER_H_
#include <string>
#include "wv_cdm_constants.h"
namespace wvcdm {
// CdmIdentifier contains all the information necessary to uniquely identify a
// distinct CdmEngine instance on Android. There should be a unique CdmEngine
// (and thus distinct storage space) for every combination of SPOID and origin.
struct CdmIdentifier {
// The Stable Per-Origin Identifier, or SPOID. May be blank on old, SPOID-less
// systems, in which case multiple apps with the same origin will share a
// CdmEngine and storage.
std::string spoid;
// The origin. May be blank if the app does not set an origin, which is
// the likely behavior of most non-web-browser apps.
std::string origin;
// The application package name provided by the application. This is used to
// provide a friendly name of the application package for the purposes of
// logging and metrics.
std::string 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;
}
inline bool operator!=(const CdmIdentifier& lhs, const CdmIdentifier& rhs) {
return !(lhs == rhs);
}
inline bool operator<(const CdmIdentifier& lhs, const CdmIdentifier& rhs) {
return (lhs.spoid < rhs.spoid)
|| ((lhs.spoid == rhs.spoid)
&& (lhs.origin < rhs.origin
|| (lhs.origin == rhs.origin
&& lhs.app_package_name < rhs.app_package_name)));
}
inline bool operator>(const CdmIdentifier& lhs, const CdmIdentifier& rhs) {
return rhs < lhs;
}
inline bool operator<=(const CdmIdentifier& lhs, const CdmIdentifier& rhs) {
return !(lhs > rhs);
}
inline bool operator>=(const CdmIdentifier& lhs, const CdmIdentifier& rhs) {
return !(lhs < rhs);
}
// Provide default
static const CdmIdentifier kDefaultCdmIdentifier = {
EMPTY_SPOID,
EMPTY_ORIGIN,
EMPTY_APP_PACKAGE_NAME
};
} // namespace wvcdm
#endif // CDM_BASE_CDM_IDENTIFIER_H_