// Copyright 2016 Google Inc. All Rights Reserved. // // 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 #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; }; // Provide comparison operators inline bool operator==(const CdmIdentifier& lhs, const CdmIdentifier& rhs) { return lhs.spoid == rhs.spoid && lhs.origin == rhs.origin; } 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); } 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 }; } // namespace wvcdm #endif // CDM_BASE_CDM_IDENTIFIER_H_