summaryrefslogtreecommitdiff
path: root/cmds/incidentd/src/Reporter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cmds/incidentd/src/Reporter.cpp')
-rw-r--r--cmds/incidentd/src/Reporter.cpp32
1 files changed, 17 insertions, 15 deletions
diff --git a/cmds/incidentd/src/Reporter.cpp b/cmds/incidentd/src/Reporter.cpp
index 322b97293a26..00a31e0de43f 100644
--- a/cmds/incidentd/src/Reporter.cpp
+++ b/cmds/incidentd/src/Reporter.cpp
@@ -66,22 +66,18 @@ IncidentMetadata_Destination privacy_policy_to_dest(uint8_t privacyPolicy) {
}
}
-void poo_make_metadata(IncidentMetadata* result, const IncidentMetadata& full,
- int64_t reportId, int32_t privacyPolicy, const IncidentReportArgs& args) {
- result->set_report_id(reportId);
- result->set_dest(privacy_policy_to_dest(privacyPolicy));
- size_t sectionCount = full.sections_size();
- for (int sectionIndex = 0; sectionIndex < sectionCount; sectionIndex++) {
- const IncidentMetadata::SectionStats& sectionStats = full.sections(sectionIndex);
- if (args.containsSection(sectionStats.id())) {
- *result->add_sections() = sectionStats;
- }
- }
+static bool contains_section(const IncidentReportArgs& args, int sectionId) {
+ return args.containsSection(sectionId, section_requires_specific_mention(sectionId));
+}
+
+static bool contains_section(const sp<ReportRequest>& args, int sectionId) {
+ return args->containsSection(sectionId);
}
// ARGS must have a containsSection(int) method
-template <typename ARGS> void make_metadata(IncidentMetadata* result, const IncidentMetadata& full,
+template <typename ARGS>
+void make_metadata(IncidentMetadata* result, const IncidentMetadata& full,
int64_t reportId, int32_t privacyPolicy, ARGS args) {
result->set_report_id(reportId);
result->set_dest(privacy_policy_to_dest(privacyPolicy));
@@ -89,7 +85,7 @@ template <typename ARGS> void make_metadata(IncidentMetadata* result, const Inci
size_t sectionCount = full.sections_size();
for (int sectionIndex = 0; sectionIndex < sectionCount; sectionIndex++) {
const IncidentMetadata::SectionStats& sectionStats = full.sections(sectionIndex);
- if (args->containsSection(sectionStats.id())) {
+ if (contains_section(args, sectionStats.id())) {
*result->add_sections() = sectionStats;
}
}
@@ -160,6 +156,10 @@ bool ReportRequest::ok() {
return mFd >= 0 && mStatus == NO_ERROR;
}
+bool ReportRequest::containsSection(int sectionId) const {
+ return args.containsSection(sectionId, section_requires_specific_mention(sectionId));
+}
+
void ReportRequest::closeFd() {
if (mIsStreaming && mFd >= 0) {
close(mFd);
@@ -441,7 +441,9 @@ status_t ReportWriter::writeSection(const FdBuffer& buffer) {
// Add the fds for the streamed requests
mBatch->forEachStreamingRequest([&filter, this](const sp<ReportRequest>& request) {
- if (request->ok() && request->args.containsSection(mCurrentSectionId)) {
+ if (request->ok()
+ && request->args.containsSection(mCurrentSectionId,
+ section_requires_specific_mention(mCurrentSectionId))) {
filter.addFd(new StreamingFilterFd(request->args.getPrivacyPolicy(),
request->getFd(), request));
}
@@ -619,7 +621,7 @@ DONE:
mBatch->getCombinedPersistedArgs(&combinedArgs);
IncidentMetadata persistedMetadata;
make_metadata(&persistedMetadata, metadata, mPersistedFile->getTimestampNs(),
- persistedPrivacyPolicy, &combinedArgs);
+ persistedPrivacyPolicy, combinedArgs);
mPersistedFile->setMetadata(persistedMetadata);
mPersistedFile->markCompleted();