diff options
author | Joe Onorato <joeo@google.com> | 2020-03-20 16:25:14 -0700 |
---|---|---|
committer | Joe Onorato <joeo@google.com> | 2020-03-21 18:33:28 -0700 |
commit | 084aa3cb1705d9f860068d8d080d12f33bdbaff6 (patch) | |
tree | c839a2a63e4353bf3522cec7344cfac7ac34bcd0 | |
parent | 18122752c0f70cd5a0319f32dd9d88ded0c392e6 (diff) |
Native API Council asked that we remove the C++ class from the public header.
The API is simple enough, so just reimplement everything using the
C API directly.
Bug: 148940365
Test: treehugger
Change-Id: I0a75744e975e8d3c2a557e533eacd03200388ddc
-rw-r--r-- | cmds/statsd/src/subscriber/IncidentdReporter.cpp | 17 | ||||
-rw-r--r-- | libs/incident/Android.bp | 2 | ||||
-rw-r--r-- | libs/incident/AndroidTest.xml | 28 | ||||
-rw-r--r-- | libs/incident/TEST_MAPPING | 10 | ||||
-rw-r--r-- | libs/incident/include/incident/incident_report.h | 71 | ||||
-rw-r--r-- | libs/incident/tests/IncidentReportRequest_test.cpp | 67 | ||||
-rw-r--r-- | libs/incident/tests/c_api_compile_test.c | 11 |
7 files changed, 112 insertions, 94 deletions
diff --git a/cmds/statsd/src/subscriber/IncidentdReporter.cpp b/cmds/statsd/src/subscriber/IncidentdReporter.cpp index 30c90b1e1f71..1d77513d9d33 100644 --- a/cmds/statsd/src/subscriber/IncidentdReporter.cpp +++ b/cmds/statsd/src/subscriber/IncidentdReporter.cpp @@ -130,15 +130,15 @@ bool GenerateIncidentReport(const IncidentdDetails& config, int64_t rule_id, int return false; } - android::os::IncidentReportRequest incidentReport; + AIncidentReportArgs* args = AIncidentReportArgs_init(); vector<uint8_t> protoData; getProtoData(rule_id, metricId, dimensionKey, metricValue, configKey, config.alert_description(), &protoData); - incidentReport.addHeader(protoData); + AIncidentReportArgs_addHeader(args, protoData.data(), protoData.size()); for (int i = 0; i < config.section_size(); i++) { - incidentReport.addSection(config.section(i)); + AIncidentReportArgs_addSection(args, config.section(i)); } uint8_t dest; @@ -152,13 +152,16 @@ bool GenerateIncidentReport(const IncidentdDetails& config, int64_t rule_id, int default: dest = INCIDENT_REPORT_PRIVACY_POLICY_AUTOMATIC; } - incidentReport.setPrivacyPolicy(dest); + AIncidentReportArgs_setPrivacyPolicy(args, dest); - incidentReport.setReceiverPackage(config.receiver_pkg()); + AIncidentReportArgs_setReceiverPackage(args, config.receiver_pkg().c_str()); - incidentReport.setReceiverClass(config.receiver_cls()); + AIncidentReportArgs_setReceiverClass(args, config.receiver_cls().c_str()); - return incidentReport.takeReport() == NO_ERROR; + int err = AIncidentReportArgs_takeReport(args); + AIncidentReportArgs_delete(args); + + return err == NO_ERROR; } } // namespace statsd diff --git a/libs/incident/Android.bp b/libs/incident/Android.bp index 512b8c439dcf..af6411011411 100644 --- a/libs/incident/Android.bp +++ b/libs/incident/Android.bp @@ -93,6 +93,7 @@ cc_library_shared { cc_test { name: "libincident_test", + test_config: "AndroidTest.xml", defaults: ["libincidentpriv_defaults"], test_suites: ["device-tests"], @@ -104,7 +105,6 @@ cc_test { srcs: [ "tests/IncidentReportArgs_test.cpp", "tests/IncidentReportRequest_test.cpp", - "tests/c_api_compile_test.c", ], shared_libs: [ diff --git a/libs/incident/AndroidTest.xml b/libs/incident/AndroidTest.xml new file mode 100644 index 000000000000..7c0b04471d13 --- /dev/null +++ b/libs/incident/AndroidTest.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2020 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. +--> +<configuration description="Config for libincident_test"> + <option name="test-suite-tag" value="device-tests" /> + <option name="config-descriptor:metadata" key="component" value="misc" /> + <target_preparer class="com.android.tradefed.targetprep.PushFilePreparer"> + <option name="cleanup" value="true" /> + <option name="push" value="libincident_test->/data/local/tmp/libincident_test" /> + </target_preparer> + <test class="com.android.tradefed.testtype.GTest" > + <option name="native-test-device-path" value="/data/local/tmp" /> + <option name="module-name" value="libincident_test" /> + </test> +</configuration> + diff --git a/libs/incident/TEST_MAPPING b/libs/incident/TEST_MAPPING new file mode 100644 index 000000000000..59ebe7664b5f --- /dev/null +++ b/libs/incident/TEST_MAPPING @@ -0,0 +1,10 @@ +{ + "presubmit": [ + { + "name": "libincident_test" + }, + { + "name": "GtsLibIncidentTests" + } + ] +} diff --git a/libs/incident/include/incident/incident_report.h b/libs/incident/include/incident/incident_report.h index 49fe5b9b73b4..4fbac9681214 100644 --- a/libs/incident/include/incident/incident_report.h +++ b/libs/incident/include/incident/incident_report.h @@ -18,16 +18,12 @@ * @file incident_report.h */ -#ifndef ANDROID_INCIDENT_INCIDENT_REPORT_H -#define ANDROID_INCIDENT_INCIDENT_REPORT_H +#pragma once #include <stdbool.h> +#include <stdint.h> #if __cplusplus -#include <set> -#include <string> -#include <vector> - extern "C" { #endif // __cplusplus @@ -125,68 +121,5 @@ int AIncidentReportArgs_takeReport(AIncidentReportArgs* args); #if __cplusplus } // extern "C" - -namespace android { -namespace os { - -class IncidentReportRequest { -public: - inline IncidentReportRequest() { - mImpl = AIncidentReportArgs_init(); - } - - inline IncidentReportRequest(const IncidentReportRequest& that) { - mImpl = AIncidentReportArgs_clone(that.mImpl); - } - - inline ~IncidentReportRequest() { - AIncidentReportArgs_delete(mImpl); - } - - inline AIncidentReportArgs* getImpl() { - return mImpl; - } - - inline void setAll(bool all) { - AIncidentReportArgs_setAll(mImpl, all); - } - - inline void setPrivacyPolicy(int privacyPolicy) { - AIncidentReportArgs_setPrivacyPolicy(mImpl, privacyPolicy); - } - - inline void addSection(int section) { - AIncidentReportArgs_addSection(mImpl, section); - } - - inline void setReceiverPackage(const std::string& pkg) { - AIncidentReportArgs_setReceiverPackage(mImpl, pkg.c_str()); - }; - - inline void setReceiverClass(const std::string& cls) { - AIncidentReportArgs_setReceiverClass(mImpl, cls.c_str()); - }; - - inline void addHeader(const std::vector<uint8_t>& headerProto) { - AIncidentReportArgs_addHeader(mImpl, headerProto.data(), headerProto.size()); - }; - - inline void addHeader(const uint8_t* buf, size_t size) { - AIncidentReportArgs_addHeader(mImpl, buf, size); - }; - - // returns a status_t - inline int takeReport() { - return AIncidentReportArgs_takeReport(mImpl); - } - -private: - AIncidentReportArgs* mImpl; -}; - -} // namespace os -} // namespace android - #endif // __cplusplus -#endif // ANDROID_INCIDENT_INCIDENT_REPORT_H diff --git a/libs/incident/tests/IncidentReportRequest_test.cpp b/libs/incident/tests/IncidentReportRequest_test.cpp index 6d218b6682a3..5619bb6c2220 100644 --- a/libs/incident/tests/IncidentReportRequest_test.cpp +++ b/libs/incident/tests/IncidentReportRequest_test.cpp @@ -17,9 +17,67 @@ #include <gtest/gtest.h> -namespace android { -namespace os { -namespace statsd { +#include <vector> +#include <string> + +using namespace std; +using namespace android::os; + +class IncidentReportRequest { +public: + inline IncidentReportRequest() { + mImpl = AIncidentReportArgs_init(); + } + + inline IncidentReportRequest(const IncidentReportRequest& that) { + mImpl = AIncidentReportArgs_clone(that.mImpl); + } + + inline ~IncidentReportRequest() { + AIncidentReportArgs_delete(mImpl); + } + + inline AIncidentReportArgs* getImpl() { + return mImpl; + } + + inline void setAll(bool all) { + AIncidentReportArgs_setAll(mImpl, all); + } + + inline void setPrivacyPolicy(int privacyPolicy) { + AIncidentReportArgs_setPrivacyPolicy(mImpl, privacyPolicy); + } + + inline void addSection(int section) { + AIncidentReportArgs_addSection(mImpl, section); + } + + inline void setReceiverPackage(const string& pkg) { + AIncidentReportArgs_setReceiverPackage(mImpl, pkg.c_str()); + }; + + inline void setReceiverClass(const string& cls) { + AIncidentReportArgs_setReceiverClass(mImpl, cls.c_str()); + }; + + inline void addHeader(const vector<uint8_t>& headerProto) { + AIncidentReportArgs_addHeader(mImpl, headerProto.data(), headerProto.size()); + }; + + inline void addHeader(const uint8_t* buf, size_t size) { + AIncidentReportArgs_addHeader(mImpl, buf, size); + }; + + // returns a status_t + inline int takeReport() { + return AIncidentReportArgs_takeReport(mImpl); + } + +private: + AIncidentReportArgs* mImpl; +}; + TEST(IncidentReportRequestTest, testWrite) { IncidentReportRequest request; @@ -60,6 +118,3 @@ TEST(IncidentReportRequestTest, testWrite) { EXPECT_EQ(headers, args->headers()); } -} // namespace statsd -} // namespace os -} // namespace android diff --git a/libs/incident/tests/c_api_compile_test.c b/libs/incident/tests/c_api_compile_test.c deleted file mode 100644 index e1620dfe3280..000000000000 --- a/libs/incident/tests/c_api_compile_test.c +++ /dev/null @@ -1,11 +0,0 @@ -#include <stdio.h> -#include <incident/incident_report.h> - -/* - * This file ensures that incident/incident_report.h actually compiles with C, - * since there is no other place in the tree that actually uses it from C. - */ -int not_called() { - return 0; -} - |