Loading cmds/dumpstate/dumpstate.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -2735,8 +2735,8 @@ void Dumpstate::CheckUserConsent(int32_t calling_uid, const android::String16& c if (ics != nullptr) { MYLOGD("Checking user consent via incidentcompanion service\n"); android::interface_cast<android::os::IIncidentCompanion>(ics)->authorizeReport( calling_uid, calling_package, 0x1 /* FLAG_CONFIRMATION_DIALOG */, consent_callback_.get()); calling_uid, calling_package, String16(), String16(), 0x1 /* FLAG_CONFIRMATION_DIALOG */, consent_callback_.get()); } else { MYLOGD("Unable to check user consent; incidentcompanion service unavailable\n"); } Loading libs/incidentcompanion/Android.bp +5 −1 Original line number Diff line number Diff line Loading @@ -35,8 +35,12 @@ cc_library_static { }, srcs: [ ":incidentcompanion_aidl", "src/IncidentManager.cpp", ], export_include_dirs: [ "binder", "include", ], export_include_dirs: ["binder"], cflags: [ "-Wall", "-Werror", Loading libs/incidentcompanion/binder/android/os/IIncidentCompanion.aidl +33 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.os; import android.os.IIncidentAuthListener; import android.os.IncidentManager; /** * Helper service for incidentd and dumpstated to provide user feedback Loading @@ -35,6 +36,10 @@ interface IIncidentCompanion { * returns via the callback whether the application should be trusted. It is up * to the caller to actually implement the restriction to take or not take * the incident or bug report. * @param receiverClass The class that will be the eventual broacast receiver for the * INCIDENT_REPORT_READY message. Used as part of the id in incidentd. * @param reportId The incident report ID. Incidentd should call with this parameter, but * everyone else should pass null or empty string. * @param flags FLAG_CONFIRMATION_DIALOG (0x1) - to show this as a dialog. Otherwise * a dialog will be shown as a notification. * @param callback Interface to receive results. The results may not come back for Loading @@ -44,6 +49,7 @@ interface IIncidentCompanion { * to send their report. */ oneway void authorizeReport(int callingUid, String callingPackage, String receiverClass, String reportId, int flags, IIncidentAuthListener callback); /** Loading @@ -51,6 +57,11 @@ interface IIncidentCompanion { */ oneway void cancelAuthorization(IIncidentAuthListener callback); /** * Send the report ready broadcast on behalf of incidentd. */ oneway void sendReportReadyBroadcast(String pkg, String cls); /** * Return the list of pending approvals. */ Loading @@ -69,4 +80,26 @@ interface IIncidentCompanion { * @param uri the report. */ void denyReport(String uri); /** * List the incident reports for the given ComponentName. The receiver * must be for a package inside the caller. */ List<String> getIncidentReportList(String pkg, String cls); /** * Get the IncidentReport object. */ IncidentManager.IncidentReport getIncidentReport(String pkg, String cls, String id); /** * Signal that the client is done with this incident report and it can be deleted. */ void deleteIncidentReports(String pkg, String cls, String id); /** * Signal that the client is done with all incident reports from this package. * Especially useful for testing. */ void deleteAllIncidentReports(String pkg); } libs/incidentcompanion/binder/android/os/IncidentManager.aidl 0 → 100644 +20 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 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. */ package android.os; parcelable IncidentManager.IncidentReport cpp_header "android/os/IncidentManager.h"; libs/incidentcompanion/include/android/os/IncidentManager.h 0 → 100644 +71 −0 Original line number Diff line number Diff line /** * Copyright (c) 2019, 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. */ #pragma once #include <binder/Parcel.h> #include <binder/Parcelable.h> #include <utils/String16.h> #include <set> #include <vector> namespace android { namespace os { class IncidentManager : public virtual RefBase { public: class IncidentReport : public Parcelable { public: IncidentReport(); virtual ~IncidentReport(); virtual status_t writeToParcel(Parcel* out) const; virtual status_t readFromParcel(const Parcel* in); void setTimestampNs(int64_t val) { mTimestampNs = val; } int64_t getTimestampNs() const { return mTimestampNs; } int64_t getTimestampMs() const { return mTimestampNs / 1000000; } void setPrivacyPolicy(int32_t val) { mPrivacyPolicy = val; } // This was accidentally published as a long in the java api. int64_t getPrivacyPolicy() const { return mPrivacyPolicy; } // Dups the fd, so you retain ownership of the original one. If there is a // previously set fd, closes that, since this object owns its own fd. status_t setFileDescriptor(int fd); // Does not dup the fd, so ownership is passed to this object. If there is a // previously set fd, closes that, since this object owns its own fd. void takeFileDescriptor(int fd); // Returns the fd, which you don't own. Call dup if you need a copy. int getFileDescriptor() const { return mFileDescriptor; } private: int64_t mTimestampNs; int32_t mPrivacyPolicy; int mFileDescriptor; }; private: // Not implemented for now. IncidentManager(); virtual ~IncidentManager(); }; } } Loading
cmds/dumpstate/dumpstate.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -2735,8 +2735,8 @@ void Dumpstate::CheckUserConsent(int32_t calling_uid, const android::String16& c if (ics != nullptr) { MYLOGD("Checking user consent via incidentcompanion service\n"); android::interface_cast<android::os::IIncidentCompanion>(ics)->authorizeReport( calling_uid, calling_package, 0x1 /* FLAG_CONFIRMATION_DIALOG */, consent_callback_.get()); calling_uid, calling_package, String16(), String16(), 0x1 /* FLAG_CONFIRMATION_DIALOG */, consent_callback_.get()); } else { MYLOGD("Unable to check user consent; incidentcompanion service unavailable\n"); } Loading
libs/incidentcompanion/Android.bp +5 −1 Original line number Diff line number Diff line Loading @@ -35,8 +35,12 @@ cc_library_static { }, srcs: [ ":incidentcompanion_aidl", "src/IncidentManager.cpp", ], export_include_dirs: [ "binder", "include", ], export_include_dirs: ["binder"], cflags: [ "-Wall", "-Werror", Loading
libs/incidentcompanion/binder/android/os/IIncidentCompanion.aidl +33 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.os; import android.os.IIncidentAuthListener; import android.os.IncidentManager; /** * Helper service for incidentd and dumpstated to provide user feedback Loading @@ -35,6 +36,10 @@ interface IIncidentCompanion { * returns via the callback whether the application should be trusted. It is up * to the caller to actually implement the restriction to take or not take * the incident or bug report. * @param receiverClass The class that will be the eventual broacast receiver for the * INCIDENT_REPORT_READY message. Used as part of the id in incidentd. * @param reportId The incident report ID. Incidentd should call with this parameter, but * everyone else should pass null or empty string. * @param flags FLAG_CONFIRMATION_DIALOG (0x1) - to show this as a dialog. Otherwise * a dialog will be shown as a notification. * @param callback Interface to receive results. The results may not come back for Loading @@ -44,6 +49,7 @@ interface IIncidentCompanion { * to send their report. */ oneway void authorizeReport(int callingUid, String callingPackage, String receiverClass, String reportId, int flags, IIncidentAuthListener callback); /** Loading @@ -51,6 +57,11 @@ interface IIncidentCompanion { */ oneway void cancelAuthorization(IIncidentAuthListener callback); /** * Send the report ready broadcast on behalf of incidentd. */ oneway void sendReportReadyBroadcast(String pkg, String cls); /** * Return the list of pending approvals. */ Loading @@ -69,4 +80,26 @@ interface IIncidentCompanion { * @param uri the report. */ void denyReport(String uri); /** * List the incident reports for the given ComponentName. The receiver * must be for a package inside the caller. */ List<String> getIncidentReportList(String pkg, String cls); /** * Get the IncidentReport object. */ IncidentManager.IncidentReport getIncidentReport(String pkg, String cls, String id); /** * Signal that the client is done with this incident report and it can be deleted. */ void deleteIncidentReports(String pkg, String cls, String id); /** * Signal that the client is done with all incident reports from this package. * Especially useful for testing. */ void deleteAllIncidentReports(String pkg); }
libs/incidentcompanion/binder/android/os/IncidentManager.aidl 0 → 100644 +20 −0 Original line number Diff line number Diff line /* * Copyright (C) 2014 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. */ package android.os; parcelable IncidentManager.IncidentReport cpp_header "android/os/IncidentManager.h";
libs/incidentcompanion/include/android/os/IncidentManager.h 0 → 100644 +71 −0 Original line number Diff line number Diff line /** * Copyright (c) 2019, 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. */ #pragma once #include <binder/Parcel.h> #include <binder/Parcelable.h> #include <utils/String16.h> #include <set> #include <vector> namespace android { namespace os { class IncidentManager : public virtual RefBase { public: class IncidentReport : public Parcelable { public: IncidentReport(); virtual ~IncidentReport(); virtual status_t writeToParcel(Parcel* out) const; virtual status_t readFromParcel(const Parcel* in); void setTimestampNs(int64_t val) { mTimestampNs = val; } int64_t getTimestampNs() const { return mTimestampNs; } int64_t getTimestampMs() const { return mTimestampNs / 1000000; } void setPrivacyPolicy(int32_t val) { mPrivacyPolicy = val; } // This was accidentally published as a long in the java api. int64_t getPrivacyPolicy() const { return mPrivacyPolicy; } // Dups the fd, so you retain ownership of the original one. If there is a // previously set fd, closes that, since this object owns its own fd. status_t setFileDescriptor(int fd); // Does not dup the fd, so ownership is passed to this object. If there is a // previously set fd, closes that, since this object owns its own fd. void takeFileDescriptor(int fd); // Returns the fd, which you don't own. Call dup if you need a copy. int getFileDescriptor() const { return mFileDescriptor; } private: int64_t mTimestampNs; int32_t mPrivacyPolicy; int mFileDescriptor; }; private: // Not implemented for now. IncidentManager(); virtual ~IncidentManager(); }; } }