Fewer parameters for storing and retrieve license information.
[ Merge of http://go/wvgerrit/84990 ] Storing and retrieving licenses from device files had required 15 parameters to the DeviceFiles methods. Now, licenses information is bundled together in a single struct `CdmLicenseData`, similar to `CdmUsageData`. Bug: 137882164 Test: Linux and Android unittest Change-Id: I149b39573800e7c66681343b252b41341a8902f7
This commit is contained in:
@@ -211,16 +211,8 @@ bool DeviceFiles::RemoveCertificate() {
|
||||
return RemoveFile(GetCertificateFileName());
|
||||
}
|
||||
|
||||
bool DeviceFiles::StoreLicense(
|
||||
const std::string& key_set_id, const LicenseState state,
|
||||
const CdmInitData& pssh_data, const CdmKeyMessage& license_request,
|
||||
const CdmKeyResponse& license_message,
|
||||
const CdmKeyMessage& license_renewal_request,
|
||||
const CdmKeyResponse& license_renewal,
|
||||
const std::string& release_server_url, int64_t playback_start_time,
|
||||
int64_t last_playback_time, int64_t grace_period_end_time,
|
||||
const CdmAppParameterMap& app_parameters, const CdmUsageEntry& usage_entry,
|
||||
const uint32_t usage_entry_number, ResponseType* result) {
|
||||
bool DeviceFiles::StoreLicense(const CdmLicenseData& license_data,
|
||||
ResponseType* result) {
|
||||
RETURN_FALSE_IF_NULL(result);
|
||||
|
||||
*result = kNoError;
|
||||
@@ -233,7 +225,7 @@ bool DeviceFiles::StoreLicense(
|
||||
file.set_version(video_widevine_client::sdk::File::VERSION_1);
|
||||
|
||||
License* license = file.mutable_license();
|
||||
switch (state) {
|
||||
switch (license_data.state) {
|
||||
case kLicenseStateActive:
|
||||
license->set_state(License_LicenseState_ACTIVE);
|
||||
break;
|
||||
@@ -241,47 +233,42 @@ bool DeviceFiles::StoreLicense(
|
||||
license->set_state(License_LicenseState_RELEASING);
|
||||
break;
|
||||
default:
|
||||
LOGE("Unknown license state: %d", static_cast<int>(state));
|
||||
LOGE("Unknown license state: %d", static_cast<int>(license_data.state));
|
||||
*result = kUnknownLicenseState;
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
license->set_pssh_data(pssh_data);
|
||||
license->set_license_request(license_request);
|
||||
license->set_license(license_message);
|
||||
license->set_renewal_request(license_renewal_request);
|
||||
license->set_renewal(license_renewal);
|
||||
license->set_release_server_url(release_server_url);
|
||||
license->set_playback_start_time(playback_start_time);
|
||||
license->set_last_playback_time(last_playback_time);
|
||||
license->set_grace_period_end_time(grace_period_end_time);
|
||||
NameValue* app_params;
|
||||
for (CdmAppParameterMap::const_iterator iter = app_parameters.begin();
|
||||
iter != app_parameters.end(); ++iter) {
|
||||
app_params = license->add_app_parameters();
|
||||
license->set_pssh_data(license_data.pssh_data);
|
||||
license->set_license_request(license_data.license_request);
|
||||
license->set_license(license_data.license);
|
||||
license->set_renewal_request(license_data.license_renewal_request);
|
||||
license->set_renewal(license_data.license_renewal);
|
||||
license->set_release_server_url(license_data.release_server_url);
|
||||
license->set_playback_start_time(license_data.playback_start_time);
|
||||
license->set_last_playback_time(license_data.last_playback_time);
|
||||
license->set_grace_period_end_time(license_data.grace_period_end_time);
|
||||
for (CdmAppParameterMap::const_iterator iter =
|
||||
license_data.app_parameters.cbegin();
|
||||
iter != license_data.app_parameters.cend(); ++iter) {
|
||||
NameValue* app_params = license->add_app_parameters();
|
||||
app_params->set_name(iter->first);
|
||||
app_params->set_value(iter->second);
|
||||
}
|
||||
license->set_usage_entry(usage_entry);
|
||||
license->set_usage_entry_number(usage_entry_number);
|
||||
license->set_usage_entry(license_data.usage_entry);
|
||||
license->set_usage_entry_number(license_data.usage_entry_number);
|
||||
|
||||
std::string serialized_file;
|
||||
file.SerializeToString(&serialized_file);
|
||||
|
||||
reserved_license_ids_.erase(key_set_id);
|
||||
*result =
|
||||
StoreFileWithHash(key_set_id + kLicenseFileNameExt, serialized_file);
|
||||
reserved_license_ids_.erase(license_data.key_set_id);
|
||||
*result = StoreFileWithHash(license_data.key_set_id + kLicenseFileNameExt,
|
||||
serialized_file);
|
||||
return *result == kNoError;
|
||||
}
|
||||
|
||||
bool DeviceFiles::RetrieveLicense(
|
||||
const std::string& key_set_id, LicenseState* state, CdmInitData* pssh_data,
|
||||
CdmKeyMessage* license_request, CdmKeyResponse* license_message,
|
||||
CdmKeyMessage* license_renewal_request, CdmKeyResponse* license_renewal,
|
||||
std::string* release_server_url, int64_t* playback_start_time,
|
||||
int64_t* last_playback_time, int64_t* grace_period_end_time,
|
||||
CdmAppParameterMap* app_parameters, CdmUsageEntry* usage_entry,
|
||||
uint32_t* usage_entry_number, ResponseType* result) {
|
||||
bool DeviceFiles::RetrieveLicense(const std::string& key_set_id,
|
||||
CdmLicenseData* license_data,
|
||||
ResponseType* result) {
|
||||
// This check must be made first as the RETURN_FALSE_IF_NULL() macro
|
||||
// will assign kParameterNull to |result|.
|
||||
if (result == nullptr) {
|
||||
@@ -289,20 +276,7 @@ bool DeviceFiles::RetrieveLicense(
|
||||
return false;
|
||||
}
|
||||
RETURN_FALSE_WITH_RESULT_IF_UNINITIALIZED(result);
|
||||
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(state, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(pssh_data, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(license_request, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(license_message, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(license_renewal_request, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(license_renewal, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(release_server_url, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(playback_start_time, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(last_playback_time, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(grace_period_end_time, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(app_parameters, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(usage_entry, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(usage_entry_number, result);
|
||||
RETURN_FALSE_WITH_RESULT_IF_NULL(license_data, result);
|
||||
|
||||
video_widevine_client::sdk::File file;
|
||||
*result = RetrieveHashedFile(key_set_id + kLicenseFileNameExt, &file);
|
||||
@@ -334,35 +308,37 @@ bool DeviceFiles::RetrieveLicense(
|
||||
return false;
|
||||
}
|
||||
|
||||
license_data->key_set_id = key_set_id;
|
||||
|
||||
License license = file.license();
|
||||
|
||||
switch (license.state()) {
|
||||
case License_LicenseState_ACTIVE:
|
||||
*state = kLicenseStateActive;
|
||||
license_data->state = kLicenseStateActive;
|
||||
break;
|
||||
case License_LicenseState_RELEASING:
|
||||
*state = kLicenseStateReleasing;
|
||||
license_data->state = kLicenseStateReleasing;
|
||||
break;
|
||||
default:
|
||||
LOGW("Unrecognized license state: %d", static_cast<int>(license.state()));
|
||||
*state = kLicenseStateUnknown;
|
||||
license_data->state = kLicenseStateUnknown;
|
||||
break;
|
||||
}
|
||||
*pssh_data = license.pssh_data();
|
||||
*license_request = license.license_request();
|
||||
*license_message = license.license();
|
||||
*license_renewal_request = license.renewal_request();
|
||||
*license_renewal = license.renewal();
|
||||
*release_server_url = license.release_server_url();
|
||||
*playback_start_time = license.playback_start_time();
|
||||
*last_playback_time = license.last_playback_time();
|
||||
*grace_period_end_time = license.grace_period_end_time();
|
||||
license_data->pssh_data = license.pssh_data();
|
||||
license_data->license_request = license.license_request();
|
||||
license_data->license = license.license();
|
||||
license_data->license_renewal_request = license.renewal_request();
|
||||
license_data->license_renewal = license.renewal();
|
||||
license_data->release_server_url = license.release_server_url();
|
||||
license_data->playback_start_time = license.playback_start_time();
|
||||
license_data->last_playback_time = license.last_playback_time();
|
||||
license_data->grace_period_end_time = license.grace_period_end_time();
|
||||
for (int i = 0; i < license.app_parameters_size(); ++i) {
|
||||
(*app_parameters)[license.app_parameters(i).name()] =
|
||||
license_data->app_parameters[license.app_parameters(i).name()] =
|
||||
license.app_parameters(i).value();
|
||||
}
|
||||
*usage_entry = license.usage_entry();
|
||||
*usage_entry_number = license.usage_entry_number();
|
||||
license_data->usage_entry = license.usage_entry();
|
||||
license_data->usage_entry_number = license.usage_entry_number();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -628,7 +604,7 @@ bool DeviceFiles::RetrieveUsageInfo(
|
||||
bool DeviceFiles::RetrieveUsageInfo(const std::string& usage_info_file_name,
|
||||
const std::string& provider_session_token,
|
||||
CdmKeyMessage* license_request,
|
||||
CdmKeyResponse* license_response,
|
||||
CdmKeyResponse* license,
|
||||
std::string* usage_entry,
|
||||
uint32_t* usage_entry_number) {
|
||||
RETURN_FALSE_IF_UNINITIALIZED();
|
||||
@@ -643,7 +619,7 @@ bool DeviceFiles::RetrieveUsageInfo(const std::string& usage_info_file_name,
|
||||
for (; index < file.usage_info().sessions_size(); ++index) {
|
||||
if (file.usage_info().sessions(index).token() == provider_session_token) {
|
||||
*license_request = file.usage_info().sessions(index).license_request();
|
||||
*license_response = file.usage_info().sessions(index).license();
|
||||
*license = file.usage_info().sessions(index).license();
|
||||
*usage_entry = file.usage_info().sessions(index).usage_entry();
|
||||
*usage_entry_number =
|
||||
file.usage_info().sessions(index).usage_entry_number();
|
||||
@@ -657,7 +633,7 @@ bool DeviceFiles::RetrieveUsageInfo(const std::string& usage_info_file_name,
|
||||
bool DeviceFiles::RetrieveUsageInfoByKeySetId(
|
||||
const std::string& usage_info_file_name, const std::string& key_set_id,
|
||||
std::string* provider_session_token, CdmKeyMessage* license_request,
|
||||
CdmKeyResponse* license_response, std::string* usage_entry,
|
||||
CdmKeyResponse* license, std::string* usage_entry,
|
||||
uint32_t* usage_entry_number) {
|
||||
RETURN_FALSE_IF_UNINITIALIZED();
|
||||
|
||||
@@ -672,7 +648,7 @@ bool DeviceFiles::RetrieveUsageInfoByKeySetId(
|
||||
if (file.usage_info().sessions(index).key_set_id() == key_set_id) {
|
||||
*provider_session_token = file.usage_info().sessions(index).token();
|
||||
*license_request = file.usage_info().sessions(index).license_request();
|
||||
*license_response = file.usage_info().sessions(index).license();
|
||||
*license = file.usage_info().sessions(index).license();
|
||||
*usage_entry = file.usage_info().sessions(index).usage_entry();
|
||||
*usage_entry_number =
|
||||
file.usage_info().sessions(index).usage_entry_number();
|
||||
|
||||
Reference in New Issue
Block a user