Merge "Consolidate proto parsing into DeviceFiles::RetrieveHashedFile"

This commit is contained in:
Rahul Frias
2016-01-19 22:58:06 +00:00
committed by Android (Google) Code Review
3 changed files with 36 additions and 66 deletions

View File

@@ -8,6 +8,7 @@
#include <set> #include <set>
#include <string> #include <string>
#include "device_files.pb.h"
#include "scoped_ptr.h" #include "scoped_ptr.h"
#include "wv_cdm_types.h" #include "wv_cdm_types.h"
@@ -107,7 +108,7 @@ class DeviceFiles {
bool StoreFileRaw(const std::string& name, bool StoreFileRaw(const std::string& name,
const std::string& serialized_file); const std::string& serialized_file);
bool RetrieveHashedFile(const std::string& name, bool RetrieveHashedFile(const std::string& name,
std::string* serialized_file); video_widevine_client::sdk::File* file);
bool FileExists(const std::string& name); bool FileExists(const std::string& name);
bool RemoveFile(const std::string& name); bool RemoveFile(const std::string& name);
ssize_t GetFileSize(const std::string& name); ssize_t GetFileSize(const std::string& name);

View File

@@ -5,7 +5,6 @@
#include <string.h> #include <string.h>
#include <string> #include <string>
#include "device_files.pb.h"
#include "file_store.h" #include "file_store.h"
#include "log.h" #include "log.h"
#include "properties.h" #include "properties.h"
@@ -125,14 +124,8 @@ bool DeviceFiles::RetrieveCertificate(const std::string& origin,
SecurityLevelPathBackwardCompatibility(); SecurityLevelPathBackwardCompatibility();
} }
std::string serialized_file;
if (!RetrieveHashedFile(GetCertificateFileName(origin), &serialized_file)) {
return false;
}
video_widevine_client::sdk::File file; video_widevine_client::sdk::File file;
if (!file.ParseFromString(serialized_file)) { if (!RetrieveHashedFile(GetCertificateFileName(origin), &file)) {
LOGW("DeviceFiles::RetrieveCertificate: Unable to parse file");
return false; return false;
} }
@@ -242,14 +235,8 @@ bool DeviceFiles::RetrieveLicense(
return false; return false;
} }
std::string serialized_file;
if (!RetrieveHashedFile(key_set_id + kLicenseFileNameExt, &serialized_file)) {
return false;
}
video_widevine_client::sdk::File file; video_widevine_client::sdk::File file;
if (!file.ParseFromString(serialized_file)) { if (!RetrieveHashedFile(key_set_id + kLicenseFileNameExt, &file)) {
LOGW("DeviceFiles::RetrieveLicense: Unable to parse file");
return false; return false;
} }
@@ -362,14 +349,13 @@ bool DeviceFiles::StoreUsageInfo(const std::string& provider_session_token,
return false; return false;
} }
std::string serialized_file;
video_widevine_client::sdk::File file; video_widevine_client::sdk::File file;
std::string file_name = GetUsageInfoFileName(app_id); 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_type(video_widevine_client::sdk::File::USAGE_INFO);
file.set_version(video_widevine_client::sdk::File::VERSION_1); file.set_version(video_widevine_client::sdk::File::VERSION_1);
} else { } else {
if (!file.ParseFromString(serialized_file)) { if (!RetrieveHashedFile(file_name, &file)) {
LOGW("DeviceFiles::StoreUsageInfo: Unable to parse file"); LOGW("DeviceFiles::StoreUsageInfo: Unable to parse file");
return false; 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_license(key_response.data(), key_response.size());
provider_session->set_key_set_id(key_set_id.data(), key_set_id.size()); provider_session->set_key_set_id(key_set_id.data(), key_set_id.size());
std::string serialized_file;
file.SerializeToString(&serialized_file); file.SerializeToString(&serialized_file);
return StoreFileWithHash(file_name, 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"); LOGW("DeviceFiles::DeleteUsageInfo: not initialized");
return false; 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; video_widevine_client::sdk::File file;
if (!file.ParseFromString(serialized_file)) { std::string file_name = GetUsageInfoFileName(app_id);
LOGW("DeviceFiles::DeleteUsageInfo: Unable to parse file"); if (!RetrieveHashedFile(file_name, &file)) return false;
return false;
}
UsageInfo* usage_info = file.mutable_usage_info(); UsageInfo* usage_info = file.mutable_usage_info();
int index = 0; int index = 0;
@@ -429,6 +410,7 @@ bool DeviceFiles::DeleteUsageInfo(const std::string& app_id,
} }
sessions->RemoveLast(); sessions->RemoveLast();
std::string serialized_file;
file.SerializeToString(&serialized_file); file.SerializeToString(&serialized_file);
return StoreFileWithHash(file_name, serialized_file); return StoreFileWithHash(file_name, serialized_file);
} }
@@ -448,16 +430,11 @@ bool DeviceFiles::DeleteAllUsageInfoForApp(
std::string file_name = GetUsageInfoFileName(app_id); std::string file_name = GetUsageInfoFileName(app_id);
if (!FileExists(file_name)) return true; if (!FileExists(file_name)) return true;
std::string serialized_file;
if (RetrieveHashedFile(file_name, &serialized_file)) { video_widevine_client::sdk::File file;
video_widevine_client::sdk::File file_proto; if (RetrieveHashedFile(file_name, &file)) {
if (!file_proto.ParseFromString(serialized_file)) { for (int i = 0; i < file.usage_info().sessions_size(); ++i) {
LOGW("DeviceFiles::DeleteAllUsageInfoForApp: Unable to parse file"); provider_session_tokens->push_back(file.usage_info().sessions(i).token());
} 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());
}
} }
} else { } else {
LOGW("DeviceFiles::DeleteAllUsageInfoForApp: Unable to retrieve file"); LOGW("DeviceFiles::DeleteAllUsageInfoForApp: Unable to retrieve file");
@@ -480,19 +457,14 @@ bool DeviceFiles::RetrieveUsageInfo(
return false; return false;
} }
std::string serialized_file;
std::string file_name = GetUsageInfoFileName(app_id); std::string file_name = GetUsageInfoFileName(app_id);
if (!RetrieveHashedFile(file_name, &serialized_file)) { if (!FileExists(file_name) || GetFileSize(file_name) == 0) {
if (!FileExists(file_name) || GetFileSize(file_name) == 0) { usage_info->resize(0);
usage_info->resize(0); return true;
return true;
}
return false;
} }
video_widevine_client::sdk::File file; video_widevine_client::sdk::File file;
if (!file.ParseFromString(serialized_file)) { if (!RetrieveHashedFile(file_name, &file)) {
LOGW("DeviceFiles::RetrieveUsageInfo: Unable to parse file"); LOGW("DeviceFiles::RetrieveUsageInfo: Unable to parse file");
return false; return false;
} }
@@ -515,13 +487,10 @@ bool DeviceFiles::RetrieveUsageInfo(const std::string& app_id,
LOGW("DeviceFiles::RetrieveUsageInfo: not initialized"); LOGW("DeviceFiles::RetrieveUsageInfo: not initialized");
return false; 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; 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; return false;
} }
@@ -546,13 +515,10 @@ bool DeviceFiles::RetrieveUsageInfoByKeySetId(
LOGW("DeviceFiles::RetrieveUsageInfoByKeySetId: not initialized"); LOGW("DeviceFiles::RetrieveUsageInfoByKeySetId: not initialized");
return false; 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; video_widevine_client::sdk::File file;
if (!file.ParseFromString(serialized_file)) { if (!RetrieveHashedFile(file_name, &file)) {
LOGW("DeviceFiles::RetrieveUsageInfoByKeySetId: Unable to parse file");
return false; return false;
} }
@@ -634,16 +600,16 @@ bool DeviceFiles::StoreFileRaw(const std::string& name,
} }
bool DeviceFiles::RetrieveHashedFile(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()) { if (!file_.get()) {
LOGW("DeviceFiles::RetrieveHashedFile: Invalid file handle"); LOGW("DeviceFiles::RetrieveHashedFile: Invalid file handle");
return false; return false;
} }
if (!serialized_file) { if (!file) {
LOGW( LOGW("DeviceFiles::RetrieveHashedFile: Unspecified file parameter");
"DeviceFiles::RetrieveHashedFile: Unspecified serialized_file "
"parameter");
return false; return false;
} }
@@ -707,7 +673,10 @@ bool DeviceFiles::RetrieveHashedFile(const std::string& name,
return false; return false;
} }
*serialized_file = hash_file.file(); if (!file->ParseFromString(hash_file.file())) {
LOGW("DeviceFiles::RetrieveHashedFile: Unable to parse file");
return false;
}
return true; return true;
} }

View File

@@ -2167,8 +2167,9 @@ TEST_P(DeviceFilesUsageInfoTest, Read) {
data = kUsageInfoTestData[index].file_data; data = kUsageInfoTestData[index].file_data;
} }
if (index >= 0) { if (index >= 0) {
EXPECT_CALL(file, Exists(StrEq(path))).WillOnce(Return(true)); EXPECT_CALL(file, Exists(StrEq(path))).WillRepeatedly(Return(true));
EXPECT_CALL(file, FileSize(StrEq(path))).WillOnce(Return(data.size())); EXPECT_CALL(file, FileSize(StrEq(path)))
.WillRepeatedly(Return(data.size()));
EXPECT_CALL(file, Open(StrEq(path), IsBinaryFileFlagSet())) EXPECT_CALL(file, Open(StrEq(path), IsBinaryFileFlagSet()))
.WillOnce(Return(true)); .WillOnce(Return(true));
EXPECT_CALL(file, Read(NotNull(), Eq(data.size()))) EXPECT_CALL(file, Read(NotNull(), Eq(data.size())))
@@ -2177,7 +2178,6 @@ TEST_P(DeviceFilesUsageInfoTest, Read) {
EXPECT_CALL(file, Close()).Times(1); EXPECT_CALL(file, Close()).Times(1);
} else { } else {
EXPECT_CALL(file, Exists(StrEq(path))) EXPECT_CALL(file, Exists(StrEq(path)))
.Times(2)
.WillRepeatedly(Return(false)); .WillRepeatedly(Return(false));
EXPECT_CALL(file, FileSize(_)).Times(0); EXPECT_CALL(file, FileSize(_)).Times(0);
EXPECT_CALL(file, Open(_, _)).Times(0); EXPECT_CALL(file, Open(_, _)).Times(0);
@@ -2230,7 +2230,7 @@ TEST_P(DeviceFilesUsageInfoTest, Store) {
.WillRepeatedly(Return(true)); .WillRepeatedly(Return(true));
EXPECT_CALL(file, CreateDirectory(_)).Times(0); 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) { if (index >= 0) {
EXPECT_CALL(file, FileSize(StrEq(path))).WillOnce(Return(data.size())); EXPECT_CALL(file, FileSize(StrEq(path))).WillOnce(Return(data.size()));
EXPECT_CALL(file, Open(StrEq(path), IsBinaryFileFlagSet())) EXPECT_CALL(file, Open(StrEq(path), IsBinaryFileFlagSet()))