From 02751bcc9109060a23f319da4d6886ba680436ec Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Fri, 15 Jan 2016 17:15:52 -0800 Subject: [PATCH] Consolidate proto parsing into DeviceFiles::RetrieveHashedFile [ Merge of http://go/wvgerrit/16251 ] Change-Id: I7aa849ccf0271c862d9b6a7c639da88cb0deff7d --- .../cdm/core/include/device_files.h | 3 +- libwvdrmengine/cdm/core/src/device_files.cpp | 91 ++++++------------- .../cdm/core/test/device_files_unittest.cpp | 8 +- 3 files changed, 36 insertions(+), 66 deletions(-) diff --git a/libwvdrmengine/cdm/core/include/device_files.h b/libwvdrmengine/cdm/core/include/device_files.h index a3e5f09d..88dabae0 100644 --- a/libwvdrmengine/cdm/core/include/device_files.h +++ b/libwvdrmengine/cdm/core/include/device_files.h @@ -8,6 +8,7 @@ #include #include +#include "device_files.pb.h" #include "scoped_ptr.h" #include "wv_cdm_types.h" @@ -107,7 +108,7 @@ class DeviceFiles { bool StoreFileRaw(const std::string& name, const std::string& serialized_file); bool RetrieveHashedFile(const std::string& name, - std::string* serialized_file); + video_widevine_client::sdk::File* file); bool FileExists(const std::string& name); bool RemoveFile(const std::string& name); ssize_t GetFileSize(const std::string& name); diff --git a/libwvdrmengine/cdm/core/src/device_files.cpp b/libwvdrmengine/cdm/core/src/device_files.cpp index a17b948e..b2bdb210 100644 --- a/libwvdrmengine/cdm/core/src/device_files.cpp +++ b/libwvdrmengine/cdm/core/src/device_files.cpp @@ -5,7 +5,6 @@ #include #include -#include "device_files.pb.h" #include "file_store.h" #include "log.h" #include "properties.h" @@ -125,14 +124,8 @@ bool DeviceFiles::RetrieveCertificate(const std::string& origin, SecurityLevelPathBackwardCompatibility(); } - std::string serialized_file; - if (!RetrieveHashedFile(GetCertificateFileName(origin), &serialized_file)) { - return false; - } - video_widevine_client::sdk::File file; - if (!file.ParseFromString(serialized_file)) { - LOGW("DeviceFiles::RetrieveCertificate: Unable to parse file"); + if (!RetrieveHashedFile(GetCertificateFileName(origin), &file)) { return false; } @@ -242,14 +235,8 @@ bool DeviceFiles::RetrieveLicense( return false; } - std::string serialized_file; - if (!RetrieveHashedFile(key_set_id + kLicenseFileNameExt, &serialized_file)) { - return false; - } - video_widevine_client::sdk::File file; - if (!file.ParseFromString(serialized_file)) { - LOGW("DeviceFiles::RetrieveLicense: Unable to parse file"); + if (!RetrieveHashedFile(key_set_id + kLicenseFileNameExt, &file)) { return false; } @@ -362,14 +349,13 @@ bool DeviceFiles::StoreUsageInfo(const std::string& provider_session_token, return false; } - std::string serialized_file; video_widevine_client::sdk::File file; std::string file_name = GetUsageInfoFileName(app_id); - if (!RetrieveHashedFile(file_name, &serialized_file)) { + if (!FileExists(file_name)) { file.set_type(video_widevine_client::sdk::File::USAGE_INFO); file.set_version(video_widevine_client::sdk::File::VERSION_1); } else { - if (!file.ParseFromString(serialized_file)) { + if (!RetrieveHashedFile(file_name, &file)) { LOGW("DeviceFiles::StoreUsageInfo: Unable to parse file"); return false; } @@ -384,6 +370,7 @@ bool DeviceFiles::StoreUsageInfo(const std::string& provider_session_token, provider_session->set_license(key_response.data(), key_response.size()); provider_session->set_key_set_id(key_set_id.data(), key_set_id.size()); + std::string serialized_file; file.SerializeToString(&serialized_file); return StoreFileWithHash(file_name, serialized_file); } @@ -394,15 +381,9 @@ bool DeviceFiles::DeleteUsageInfo(const std::string& app_id, LOGW("DeviceFiles::DeleteUsageInfo: not initialized"); return false; } - std::string serialized_file; - std::string file_name = GetUsageInfoFileName(app_id); - if (!RetrieveHashedFile(file_name, &serialized_file)) return false; - video_widevine_client::sdk::File file; - if (!file.ParseFromString(serialized_file)) { - LOGW("DeviceFiles::DeleteUsageInfo: Unable to parse file"); - return false; - } + std::string file_name = GetUsageInfoFileName(app_id); + if (!RetrieveHashedFile(file_name, &file)) return false; UsageInfo* usage_info = file.mutable_usage_info(); int index = 0; @@ -429,6 +410,7 @@ bool DeviceFiles::DeleteUsageInfo(const std::string& app_id, } sessions->RemoveLast(); + std::string serialized_file; file.SerializeToString(&serialized_file); return StoreFileWithHash(file_name, serialized_file); } @@ -448,16 +430,11 @@ bool DeviceFiles::DeleteAllUsageInfoForApp( std::string file_name = GetUsageInfoFileName(app_id); if (!FileExists(file_name)) return true; - std::string serialized_file; - if (RetrieveHashedFile(file_name, &serialized_file)) { - video_widevine_client::sdk::File file_proto; - if (!file_proto.ParseFromString(serialized_file)) { - LOGW("DeviceFiles::DeleteAllUsageInfoForApp: Unable to parse file"); - } else { - for (int i = 0; i < file_proto.usage_info().sessions_size(); ++i) { - provider_session_tokens->push_back( - file_proto.usage_info().sessions(i).token()); - } + + video_widevine_client::sdk::File file; + if (RetrieveHashedFile(file_name, &file)) { + for (int i = 0; i < file.usage_info().sessions_size(); ++i) { + provider_session_tokens->push_back(file.usage_info().sessions(i).token()); } } else { LOGW("DeviceFiles::DeleteAllUsageInfoForApp: Unable to retrieve file"); @@ -480,19 +457,14 @@ bool DeviceFiles::RetrieveUsageInfo( return false; } - std::string serialized_file; std::string file_name = GetUsageInfoFileName(app_id); - if (!RetrieveHashedFile(file_name, &serialized_file)) { - if (!FileExists(file_name) || GetFileSize(file_name) == 0) { - usage_info->resize(0); - return true; - } - - return false; + if (!FileExists(file_name) || GetFileSize(file_name) == 0) { + usage_info->resize(0); + return true; } video_widevine_client::sdk::File file; - if (!file.ParseFromString(serialized_file)) { + if (!RetrieveHashedFile(file_name, &file)) { LOGW("DeviceFiles::RetrieveUsageInfo: Unable to parse file"); return false; } @@ -515,13 +487,10 @@ bool DeviceFiles::RetrieveUsageInfo(const std::string& app_id, LOGW("DeviceFiles::RetrieveUsageInfo: not initialized"); return false; } - std::string serialized_file; - std::string file_name = GetUsageInfoFileName(app_id); - if (!RetrieveHashedFile(file_name, &serialized_file)) return false; + std::string file_name = GetUsageInfoFileName(app_id); video_widevine_client::sdk::File file; - if (!file.ParseFromString(serialized_file)) { - LOGW("DeviceFiles::RetrieveUsageInfo: Unable to parse file"); + if (!RetrieveHashedFile(file_name, &file)) { return false; } @@ -546,13 +515,10 @@ bool DeviceFiles::RetrieveUsageInfoByKeySetId( LOGW("DeviceFiles::RetrieveUsageInfoByKeySetId: not initialized"); return false; } - std::string serialized_file; - std::string file_name = GetUsageInfoFileName(app_id); - if (!RetrieveHashedFile(file_name, &serialized_file)) return false; + std::string file_name = GetUsageInfoFileName(app_id); video_widevine_client::sdk::File file; - if (!file.ParseFromString(serialized_file)) { - LOGW("DeviceFiles::RetrieveUsageInfoByKeySetId: Unable to parse file"); + if (!RetrieveHashedFile(file_name, &file)) { return false; } @@ -634,16 +600,16 @@ bool DeviceFiles::StoreFileRaw(const std::string& name, } bool DeviceFiles::RetrieveHashedFile(const std::string& name, - std::string* serialized_file) { + video_widevine_client::sdk::File* file) { + std::string serialized_file; + if (!file_.get()) { LOGW("DeviceFiles::RetrieveHashedFile: Invalid file handle"); return false; } - if (!serialized_file) { - LOGW( - "DeviceFiles::RetrieveHashedFile: Unspecified serialized_file " - "parameter"); + if (!file) { + LOGW("DeviceFiles::RetrieveHashedFile: Unspecified file parameter"); return false; } @@ -707,7 +673,10 @@ bool DeviceFiles::RetrieveHashedFile(const std::string& name, return false; } - *serialized_file = hash_file.file(); + if (!file->ParseFromString(hash_file.file())) { + LOGW("DeviceFiles::RetrieveHashedFile: Unable to parse file"); + return false; + } return true; } diff --git a/libwvdrmengine/cdm/core/test/device_files_unittest.cpp b/libwvdrmengine/cdm/core/test/device_files_unittest.cpp index 340ed059..d246e13f 100644 --- a/libwvdrmengine/cdm/core/test/device_files_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/device_files_unittest.cpp @@ -2167,8 +2167,9 @@ TEST_P(DeviceFilesUsageInfoTest, Read) { data = kUsageInfoTestData[index].file_data; } if (index >= 0) { - EXPECT_CALL(file, Exists(StrEq(path))).WillOnce(Return(true)); - EXPECT_CALL(file, FileSize(StrEq(path))).WillOnce(Return(data.size())); + EXPECT_CALL(file, Exists(StrEq(path))).WillRepeatedly(Return(true)); + EXPECT_CALL(file, FileSize(StrEq(path))) + .WillRepeatedly(Return(data.size())); EXPECT_CALL(file, Open(StrEq(path), IsBinaryFileFlagSet())) .WillOnce(Return(true)); EXPECT_CALL(file, Read(NotNull(), Eq(data.size()))) @@ -2177,7 +2178,6 @@ TEST_P(DeviceFilesUsageInfoTest, Read) { EXPECT_CALL(file, Close()).Times(1); } else { EXPECT_CALL(file, Exists(StrEq(path))) - .Times(2) .WillRepeatedly(Return(false)); EXPECT_CALL(file, FileSize(_)).Times(0); EXPECT_CALL(file, Open(_, _)).Times(0); @@ -2230,7 +2230,7 @@ TEST_P(DeviceFilesUsageInfoTest, Store) { .WillRepeatedly(Return(true)); EXPECT_CALL(file, CreateDirectory(_)).Times(0); - EXPECT_CALL(file, Exists(StrEq(path))).WillOnce(Return(index >= 0)); + EXPECT_CALL(file, Exists(StrEq(path))).WillRepeatedly(Return(index >= 0)); if (index >= 0) { EXPECT_CALL(file, FileSize(StrEq(path))).WillOnce(Return(data.size())); EXPECT_CALL(file, Open(StrEq(path), IsBinaryFileFlagSet()))