incidentd can now handle multiple callers asking it for incident reports
Test: bit incident_test:* GtsIncidentManagerTestCases:*
Bug: 123543706
Change-Id: I9f671dd5d8b2ad139f952a23e575c2be16120459
diff --git a/cmds/statsd/Android.bp b/cmds/statsd/Android.bp
index ce07d6d..8cd409e 100644
--- a/cmds/statsd/Android.bp
+++ b/cmds/statsd/Android.bp
@@ -118,6 +118,7 @@
static_libs: [
"libhealthhalutils",
+ "libplatformprotos",
],
shared_libs: [
diff --git a/cmds/statsd/src/StatsLogProcessor.cpp b/cmds/statsd/src/StatsLogProcessor.cpp
index a6699e7..286e76e 100644
--- a/cmds/statsd/src/StatsLogProcessor.cpp
+++ b/cmds/statsd/src/StatsLogProcessor.cpp
@@ -407,12 +407,12 @@
outData->clear();
outData->resize(proto.size());
size_t pos = 0;
- auto iter = proto.data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- std::memcpy(&((*outData)[pos]), iter.readBuffer(), toRead);
+ sp<android::util::ProtoReader> reader = proto.data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&((*outData)[pos]), reader->readBuffer(), toRead);
pos += toRead;
- iter.rp()->move(toRead);
+ reader->move(toRead);
}
}
diff --git a/cmds/statsd/src/StatsService.cpp b/cmds/statsd/src/StatsService.cpp
index f78ae38..52ecdc8 100644
--- a/cmds/statsd/src/StatsService.cpp
+++ b/cmds/statsd/src/StatsService.cpp
@@ -50,6 +50,7 @@
using android::util::FIELD_COUNT_REPEATED;
using android::util::FIELD_TYPE_INT64;
using android::util::FIELD_TYPE_MESSAGE;
+using android::util::ProtoReader;
namespace android {
namespace os {
@@ -1220,12 +1221,12 @@
experimentIdsProtoBuffer.resize(proto.size());
size_t pos = 0;
- auto iter = proto.data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- std::memcpy(&(experimentIdsProtoBuffer[pos]), iter.readBuffer(), toRead);
+ sp<ProtoReader> reader = proto.data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&(experimentIdsProtoBuffer[pos]), reader->readBuffer(), toRead);
pos += toRead;
- iter.rp()->move(toRead);
+ reader->move(toRead);
}
}
diff --git a/cmds/statsd/src/external/GpuStatsPuller.cpp b/cmds/statsd/src/external/GpuStatsPuller.cpp
index 130bd85..3fa932f 100644
--- a/cmds/statsd/src/external/GpuStatsPuller.cpp
+++ b/cmds/statsd/src/external/GpuStatsPuller.cpp
@@ -29,6 +29,8 @@
namespace os {
namespace statsd {
+using android::util::ProtoReader;
+
GpuStatsPuller::GpuStatsPuller(const int tagId) : StatsPuller(tagId) {
}
@@ -116,11 +118,11 @@
if (!proto.size()) return "";
std::string byteString;
- auto iter = proto.data();
- while (iter.readBuffer() != nullptr) {
- const size_t toRead = iter.currentToRead();
- byteString.append((char*)iter.readBuffer(), toRead);
- iter.rp()->move(toRead);
+ sp<ProtoReader> reader = proto.data();
+ while (reader->readBuffer() != nullptr) {
+ const size_t toRead = reader->currentToRead();
+ byteString.append((char*)reader->readBuffer(), toRead);
+ reader->move(toRead);
}
if (byteString.size() != proto.size()) return "";
diff --git a/cmds/statsd/src/guardrail/StatsdStats.cpp b/cmds/statsd/src/guardrail/StatsdStats.cpp
index 9a00637..24408fc 100644
--- a/cmds/statsd/src/guardrail/StatsdStats.cpp
+++ b/cmds/statsd/src/guardrail/StatsdStats.cpp
@@ -904,12 +904,12 @@
output->resize(bufferSize);
size_t pos = 0;
- auto it = proto.data();
- while (it.readBuffer() != NULL) {
- size_t toRead = it.currentToRead();
- std::memcpy(&((*output)[pos]), it.readBuffer(), toRead);
+ sp<android::util::ProtoReader> reader = proto.data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&((*output)[pos]), reader->readBuffer(), toRead);
pos += toRead;
- it.rp()->move(toRead);
+ reader->move(toRead);
}
if (reset) {
diff --git a/cmds/statsd/src/metrics/EventMetricProducer.cpp b/cmds/statsd/src/metrics/EventMetricProducer.cpp
index 5435c84..69816cb 100644
--- a/cmds/statsd/src/metrics/EventMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/EventMetricProducer.cpp
@@ -90,12 +90,12 @@
std::unique_ptr<std::vector<uint8_t>> buffer(new std::vector<uint8_t>(bufferSize));
size_t pos = 0;
- auto it = protoOutput.data();
- while (it.readBuffer() != NULL) {
- size_t toRead = it.currentToRead();
- std::memcpy(&((*buffer)[pos]), it.readBuffer(), toRead);
+ sp<android::util::ProtoReader> reader = protoOutput.data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&((*buffer)[pos]), reader->readBuffer(), toRead);
pos += toRead;
- it.rp()->move(toRead);
+ reader->move(toRead);
}
return buffer;
diff --git a/cmds/statsd/src/stats_log_util.h b/cmds/statsd/src/stats_log_util.h
index 59d4865..cdef874 100644
--- a/cmds/statsd/src/stats_log_util.h
+++ b/cmds/statsd/src/stats_log_util.h
@@ -80,11 +80,11 @@
template<class T>
bool parseProtoOutputStream(util::ProtoOutputStream& protoOutput, T* message) {
std::string pbBytes;
- auto iter = protoOutput.data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- pbBytes.append(reinterpret_cast<const char*>(iter.readBuffer()), toRead);
- iter.rp()->move(toRead);
+ sp<android::util::ProtoReader> reader = protoOutput.data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ pbBytes.append(reinterpret_cast<const char*>(reader->readBuffer()), toRead);
+ reader->move(toRead);
}
return message->ParseFromArray(pbBytes.c_str(), pbBytes.size());
}
diff --git a/cmds/statsd/src/subscriber/IncidentdReporter.cpp b/cmds/statsd/src/subscriber/IncidentdReporter.cpp
index 7c2d242..ff1cb4f 100644
--- a/cmds/statsd/src/subscriber/IncidentdReporter.cpp
+++ b/cmds/statsd/src/subscriber/IncidentdReporter.cpp
@@ -120,12 +120,12 @@
protoData->resize(headerProto.size());
size_t pos = 0;
- auto iter = headerProto.data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- std::memcpy(&((*protoData)[pos]), iter.readBuffer(), toRead);
+ sp<android::util::ProtoReader> reader = headerProto.data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&((*protoData)[pos]), reader->readBuffer(), toRead);
pos += toRead;
- iter.rp()->move(toRead);
+ reader->move(toRead);
}
}
} // namespace
@@ -152,15 +152,15 @@
uint8_t dest;
switch (config.dest()) {
case IncidentdDetails_Destination_AUTOMATIC:
- dest = android::os::DEST_AUTOMATIC;
+ dest = android::os::PRIVACY_POLICY_AUTOMATIC;
break;
case IncidentdDetails_Destination_EXPLICIT:
- dest = android::os::DEST_EXPLICIT;
+ dest = android::os::PRIVACY_POLICY_EXPLICIT;
break;
default:
- dest = android::os::DEST_AUTOMATIC;
+ dest = android::os::PRIVACY_POLICY_AUTOMATIC;
}
- incidentReport.setDest(dest);
+ incidentReport.setPrivacyPolicy(dest);
incidentReport.setReceiverPkg(config.receiver_pkg());
diff --git a/cmds/statsd/tests/FieldValue_test.cpp b/cmds/statsd/tests/FieldValue_test.cpp
index a9305ac..f1cad92 100644
--- a/cmds/statsd/tests/FieldValue_test.cpp
+++ b/cmds/statsd/tests/FieldValue_test.cpp
@@ -24,6 +24,8 @@
#ifdef __ANDROID__
+using android::util::ProtoReader;
+
namespace android {
namespace os {
namespace statsd {
@@ -252,12 +254,12 @@
vector<uint8_t> outData;
outData.resize(protoOut.size());
size_t pos = 0;
- auto iter = protoOut.data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- std::memcpy(&(outData[pos]), iter.readBuffer(), toRead);
+ sp<ProtoReader> reader = protoOut.data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&(outData[pos]), reader->readBuffer(), toRead);
pos += toRead;
- iter.rp()->move(toRead);
+ reader->move(toRead);
}
DimensionsValue result;
@@ -343,12 +345,12 @@
vector<uint8_t> outData;
outData.resize(protoOut.size());
size_t pos = 0;
- auto iter = protoOut.data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- std::memcpy(&(outData[pos]), iter.readBuffer(), toRead);
+ sp<ProtoReader> reader = protoOut.data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&(outData[pos]), reader->readBuffer(), toRead);
pos += toRead;
- iter.rp()->move(toRead);
+ reader->move(toRead);
}
DimensionsValue result;
@@ -405,12 +407,12 @@
vector<uint8_t> outData;
outData.resize(protoOut.size());
size_t pos = 0;
- auto iter = protoOut.data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- std::memcpy(&(outData[pos]), iter.readBuffer(), toRead);
+ sp<ProtoReader> reader = protoOut.data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&(outData[pos]), reader->readBuffer(), toRead);
pos += toRead;
- iter.rp()->move(toRead);
+ reader->move(toRead);
}
DimensionsValueTuple result;
@@ -458,12 +460,12 @@
vector<uint8_t> outData;
outData.resize(protoOutput.size());
size_t pos = 0;
- auto iter = protoOutput.data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- std::memcpy(&(outData[pos]), iter.readBuffer(), toRead);
+ sp<ProtoReader> reader = protoOutput.data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&(outData[pos]), reader->readBuffer(), toRead);
pos += toRead;
- iter.rp()->move(toRead);
+ reader->move(toRead);
}
Atom result;
diff --git a/cmds/statsd/tests/LogEvent_test.cpp b/cmds/statsd/tests/LogEvent_test.cpp
index eec3c73..b03517e 100644
--- a/cmds/statsd/tests/LogEvent_test.cpp
+++ b/cmds/statsd/tests/LogEvent_test.cpp
@@ -26,6 +26,7 @@
using std::string;
using util::ProtoOutputStream;
+using util::ProtoReader;
TEST(LogEventTest, TestLogParsing) {
LogEvent event1(1, 2000);
@@ -590,12 +591,12 @@
std::vector<uint8_t> outData;
outData.resize(proto.size());
size_t pos = 0;
- auto iter = proto.data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- std::memcpy(&(outData[pos]), iter.readBuffer(), toRead);
+ sp<ProtoReader> reader = proto.data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&(outData[pos]), reader->readBuffer(), toRead);
pos += toRead;
- iter.rp()->move(toRead);
+ reader->move(toRead);
}
std::string result_str(outData.begin(), outData.end());
@@ -629,12 +630,12 @@
std::vector<uint8_t> outData;
outData.resize(proto.size());
size_t pos = 0;
- auto iter = proto.data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- std::memcpy(&(outData[pos]), iter.readBuffer(), toRead);
+ sp<ProtoReader> reader = proto.data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&(outData[pos]), reader->readBuffer(), toRead);
pos += toRead;
- iter.rp()->move(toRead);
+ reader->move(toRead);
}
std::string result_str(outData.begin(), outData.end());
diff --git a/cmds/statsd/tests/UidMap_test.cpp b/cmds/statsd/tests/UidMap_test.cpp
index c04a40c..d9fa4e9 100644
--- a/cmds/statsd/tests/UidMap_test.cpp
+++ b/cmds/statsd/tests/UidMap_test.cpp
@@ -33,6 +33,7 @@
namespace statsd {
using android::util::ProtoOutputStream;
+using android::util::ProtoReader;
#ifdef __ANDROID__
const string kApp1 = "app1.sharing.1";
@@ -179,12 +180,12 @@
vector<uint8_t> bytes;
bytes.resize(proto->size());
size_t pos = 0;
- auto iter = proto->data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- std::memcpy(&((bytes)[pos]), iter.readBuffer(), toRead);
+ sp<ProtoReader> reader = proto->data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&((bytes)[pos]), reader->readBuffer(), toRead);
pos += toRead;
- iter.rp()->move(toRead);
+ reader->move(toRead);
}
results->ParseFromArray(bytes.data(), bytes.size());
}
diff --git a/cmds/statsd/tests/external/IncidentReportArgs_test.cpp b/cmds/statsd/tests/external/IncidentReportArgs_test.cpp
index c170b12..38bc194 100644
--- a/cmds/statsd/tests/external/IncidentReportArgs_test.cpp
+++ b/cmds/statsd/tests/external/IncidentReportArgs_test.cpp
@@ -36,7 +36,7 @@
args.addHeader(header1);
args.addHeader(header2);
- args.setDest(1);
+ args.setPrivacyPolicy(1);
args.setReceiverPkg("com.android.os");
args.setReceiverCls("com.android.os.Receiver");
@@ -56,10 +56,10 @@
sections.insert(1000);
sections.insert(1001);
EXPECT_EQ(sections, args2.sections());
- EXPECT_EQ(1, args2.dest());
+ EXPECT_EQ(1, args2.getPrivacyPolicy());
- EXPECT_EQ(String16("com.android.os"), args2.receiverPkg());
- EXPECT_EQ(String16("com.android.os.Receiver"), args2.receiverCls());
+ EXPECT_EQ(string("com.android.os"), args2.receiverPkg());
+ EXPECT_EQ(string("com.android.os.Receiver"), args2.receiverCls());
vector<vector<uint8_t>> headers;
headers.push_back(header1);
@@ -69,4 +69,4 @@
} // namespace statsd
} // namespace os
-} // namespace android
\ No newline at end of file
+} // namespace android
diff --git a/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp b/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp
index 90b9e81..afa05a9 100644
--- a/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp
+++ b/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp
@@ -26,6 +26,7 @@
using namespace testing;
using android::sp;
+using android::util::ProtoReader;
using std::make_shared;
using std::set;
using std::shared_ptr;
@@ -2730,12 +2731,12 @@
vector<uint8_t> bytes;
bytes.resize(proto->size());
size_t pos = 0;
- auto iter = proto->data();
- while (iter.readBuffer() != NULL) {
- size_t toRead = iter.currentToRead();
- std::memcpy(&((bytes)[pos]), iter.readBuffer(), toRead);
+ sp<ProtoReader> reader = proto->data();
+ while (reader->readBuffer() != NULL) {
+ size_t toRead = reader->currentToRead();
+ std::memcpy(&((bytes)[pos]), reader->readBuffer(), toRead);
pos += toRead;
- iter.rp()->move(toRead);
+ reader->move(toRead);
}
StatsLogReport report;