Loading cmds/statsd/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -219,6 +219,7 @@ cc_test { "tests/anomaly/AnomalyTracker_test.cpp", "tests/ConfigManager_test.cpp", "tests/external/puller_util_test.cpp", "tests/external/IncidentReportArgs_test.cpp", "tests/external/StatsPuller_test.cpp", "tests/indexed_priority_queue_test.cpp", "tests/LogEntryMatcher_test.cpp", Loading cmds/statsd/src/statsd_config.proto +6 −0 Original line number Diff line number Diff line Loading @@ -324,6 +324,12 @@ message IncidentdDetails { EXPLICIT = 1; } optional Destination dest = 2; // Package name of the incident report receiver. optional string receiver_pkg = 3; // Class name of the incident report receiver. optional string receiver_cls = 4; } message PerfettoDetails { Loading cmds/statsd/src/subscriber/IncidentdReporter.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -162,6 +162,10 @@ bool GenerateIncidentReport(const IncidentdDetails& config, int64_t rule_id, int } incidentReport.setDest(dest); incidentReport.setReceiverPkg(config.receiver_pkg()); incidentReport.setReceiverCls(config.receiver_cls()); sp<IIncidentManager> service = interface_cast<IIncidentManager>( defaultServiceManager()->getService(android::String16("incident"))); if (service == nullptr) { Loading cmds/statsd/tests/external/IncidentReportArgs_test.cpp 0 → 100644 +72 −0 Original line number Diff line number Diff line // Copyright (C) 2018 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include <android/os/IncidentReportArgs.h> #include <gtest/gtest.h> namespace android { namespace os { namespace statsd { TEST(IncidentReportArgsTest, testSerialization) { IncidentReportArgs args; args.setAll(0); args.addSection(1000); args.addSection(1001); vector<uint8_t> header1; header1.push_back(0x1); header1.push_back(0x2); vector<uint8_t> header2; header1.push_back(0x22); header1.push_back(0x33); args.addHeader(header1); args.addHeader(header2); args.setDest(1); args.setReceiverPkg("com.android.os"); args.setReceiverCls("com.android.os.Receiver"); Parcel out; status_t err = args.writeToParcel(&out); EXPECT_EQ(NO_ERROR, err); out.setDataPosition(0); IncidentReportArgs args2; err = args2.readFromParcel(&out); EXPECT_EQ(NO_ERROR, err); EXPECT_EQ(0, args2.all()); set<int> sections; sections.insert(1000); sections.insert(1001); EXPECT_EQ(sections, args2.sections()); EXPECT_EQ(1, args2.dest()); EXPECT_EQ(String16("com.android.os"), args2.receiverPkg()); EXPECT_EQ(String16("com.android.os.Receiver"), args2.receiverCls()); vector<vector<uint8_t>> headers; headers.push_back(header1); headers.push_back(header2); EXPECT_EQ(headers, args2.headers()); } } // namespace statsd } // namespace os } // namespace android No newline at end of file core/java/android/os/IncidentReportArgs.java +12 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,8 @@ public final class IncidentReportArgs implements Parcelable { private final ArrayList<byte[]> mHeaders = new ArrayList<byte[]>(); private boolean mAll; private int mPrivacyPolicy; private String mReceiverPkg; private String mReceiverCls; /** * Construct an incident report args with no fields. Loading Loading @@ -73,6 +75,10 @@ public final class IncidentReportArgs implements Parcelable { } out.writeInt(mPrivacyPolicy); out.writeString(mReceiverPkg); out.writeString(mReceiverCls); } public void readFromParcel(Parcel in) { Loading @@ -91,6 +97,10 @@ public final class IncidentReportArgs implements Parcelable { } mPrivacyPolicy = in.readInt(); mReceiverPkg = in.readString(); mReceiverCls = in.readString(); } public static final @android.annotation.NonNull Parcelable.Creator<IncidentReportArgs> CREATOR Loading Loading @@ -126,6 +136,8 @@ public final class IncidentReportArgs implements Parcelable { sb.append(mHeaders.size()); sb.append(" headers), "); sb.append("privacy: ").append(mPrivacyPolicy); sb.append("receiver pkg: ").append(mReceiverPkg); sb.append("receiver cls: ").append(mReceiverCls); return sb.toString(); } Loading Loading
cmds/statsd/Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -219,6 +219,7 @@ cc_test { "tests/anomaly/AnomalyTracker_test.cpp", "tests/ConfigManager_test.cpp", "tests/external/puller_util_test.cpp", "tests/external/IncidentReportArgs_test.cpp", "tests/external/StatsPuller_test.cpp", "tests/indexed_priority_queue_test.cpp", "tests/LogEntryMatcher_test.cpp", Loading
cmds/statsd/src/statsd_config.proto +6 −0 Original line number Diff line number Diff line Loading @@ -324,6 +324,12 @@ message IncidentdDetails { EXPLICIT = 1; } optional Destination dest = 2; // Package name of the incident report receiver. optional string receiver_pkg = 3; // Class name of the incident report receiver. optional string receiver_cls = 4; } message PerfettoDetails { Loading
cmds/statsd/src/subscriber/IncidentdReporter.cpp +4 −0 Original line number Diff line number Diff line Loading @@ -162,6 +162,10 @@ bool GenerateIncidentReport(const IncidentdDetails& config, int64_t rule_id, int } incidentReport.setDest(dest); incidentReport.setReceiverPkg(config.receiver_pkg()); incidentReport.setReceiverCls(config.receiver_cls()); sp<IIncidentManager> service = interface_cast<IIncidentManager>( defaultServiceManager()->getService(android::String16("incident"))); if (service == nullptr) { Loading
cmds/statsd/tests/external/IncidentReportArgs_test.cpp 0 → 100644 +72 −0 Original line number Diff line number Diff line // Copyright (C) 2018 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include <android/os/IncidentReportArgs.h> #include <gtest/gtest.h> namespace android { namespace os { namespace statsd { TEST(IncidentReportArgsTest, testSerialization) { IncidentReportArgs args; args.setAll(0); args.addSection(1000); args.addSection(1001); vector<uint8_t> header1; header1.push_back(0x1); header1.push_back(0x2); vector<uint8_t> header2; header1.push_back(0x22); header1.push_back(0x33); args.addHeader(header1); args.addHeader(header2); args.setDest(1); args.setReceiverPkg("com.android.os"); args.setReceiverCls("com.android.os.Receiver"); Parcel out; status_t err = args.writeToParcel(&out); EXPECT_EQ(NO_ERROR, err); out.setDataPosition(0); IncidentReportArgs args2; err = args2.readFromParcel(&out); EXPECT_EQ(NO_ERROR, err); EXPECT_EQ(0, args2.all()); set<int> sections; sections.insert(1000); sections.insert(1001); EXPECT_EQ(sections, args2.sections()); EXPECT_EQ(1, args2.dest()); EXPECT_EQ(String16("com.android.os"), args2.receiverPkg()); EXPECT_EQ(String16("com.android.os.Receiver"), args2.receiverCls()); vector<vector<uint8_t>> headers; headers.push_back(header1); headers.push_back(header2); EXPECT_EQ(headers, args2.headers()); } } // namespace statsd } // namespace os } // namespace android No newline at end of file
core/java/android/os/IncidentReportArgs.java +12 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,8 @@ public final class IncidentReportArgs implements Parcelable { private final ArrayList<byte[]> mHeaders = new ArrayList<byte[]>(); private boolean mAll; private int mPrivacyPolicy; private String mReceiverPkg; private String mReceiverCls; /** * Construct an incident report args with no fields. Loading Loading @@ -73,6 +75,10 @@ public final class IncidentReportArgs implements Parcelable { } out.writeInt(mPrivacyPolicy); out.writeString(mReceiverPkg); out.writeString(mReceiverCls); } public void readFromParcel(Parcel in) { Loading @@ -91,6 +97,10 @@ public final class IncidentReportArgs implements Parcelable { } mPrivacyPolicy = in.readInt(); mReceiverPkg = in.readString(); mReceiverCls = in.readString(); } public static final @android.annotation.NonNull Parcelable.Creator<IncidentReportArgs> CREATOR Loading Loading @@ -126,6 +136,8 @@ public final class IncidentReportArgs implements Parcelable { sb.append(mHeaders.size()); sb.append(" headers), "); sb.append("privacy: ").append(mPrivacyPolicy); sb.append("receiver pkg: ").append(mReceiverPkg); sb.append("receiver cls: ").append(mReceiverCls); return sb.toString(); } Loading