diff options
| -rw-r--r-- | cmds/dumpstate/Android.bp | 3 | ||||
| -rw-r--r-- | libs/incidentcompanion/Android.bp | 48 | ||||
| -rw-r--r-- | libs/incidentcompanion/binder/android/os/IIncidentAuthListener.aidl | 34 | ||||
| -rw-r--r-- | libs/incidentcompanion/binder/android/os/IIncidentCompanion.aidl | 72 |
4 files changed, 156 insertions, 1 deletions
diff --git a/cmds/dumpstate/Android.bp b/cmds/dumpstate/Android.bp index 9aa10750e1..e938b1063f 100644 --- a/cmds/dumpstate/Android.bp +++ b/cmds/dumpstate/Android.bp @@ -99,8 +99,9 @@ cc_defaults { "utils.cpp", ], static_libs: [ + "libincidentcompanion", "libdumpsys", - "libserviceutils" + "libserviceutils", ], } diff --git a/libs/incidentcompanion/Android.bp b/libs/incidentcompanion/Android.bp new file mode 100644 index 0000000000..45eab00fb6 --- /dev/null +++ b/libs/incidentcompanion/Android.bp @@ -0,0 +1,48 @@ +/** + * 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. + */ + +filegroup { + name: "incidentcompanion_aidl", + srcs: [ + "binder/android/os/IIncidentAuthListener.aidl", + "binder/android/os/IIncidentCompanion.aidl", + ], + path: "binder", +} + +cc_library_static { + name: "libincidentcompanion", + shared_libs: [ + "libbinder", + "libutils", + ], + aidl: { + local_include_dirs: ["binder"], + export_aidl_headers: true, + }, + srcs: [ + ":incidentcompanion_aidl", + ], + export_include_dirs: ["binder"], + cflags: [ + "-Wall", + "-Werror", + "-Wno-missing-field-initializers", + "-Wno-unused-variable", + "-Wunused-parameter", + ], +} + diff --git a/libs/incidentcompanion/binder/android/os/IIncidentAuthListener.aidl b/libs/incidentcompanion/binder/android/os/IIncidentAuthListener.aidl new file mode 100644 index 0000000000..5484be8f5f --- /dev/null +++ b/libs/incidentcompanion/binder/android/os/IIncidentAuthListener.aidl @@ -0,0 +1,34 @@ +/** + * 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. + */ + +package android.os; + +/** + * Callback for IIncidentCompanion. + * + * @hide + */ +oneway interface IIncidentAuthListener { + /** + * The user approved the incident or bug report to be sent. + */ + void onReportApproved(); + + /** + * The user did not approve the incident or bug report to be sent. + */ + void onReportDenied(); +} diff --git a/libs/incidentcompanion/binder/android/os/IIncidentCompanion.aidl b/libs/incidentcompanion/binder/android/os/IIncidentCompanion.aidl new file mode 100644 index 0000000000..6bf98d2e27 --- /dev/null +++ b/libs/incidentcompanion/binder/android/os/IIncidentCompanion.aidl @@ -0,0 +1,72 @@ +/** + * 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. + */ + +package android.os; + +import android.os.IIncidentAuthListener; + +/** + * Helper service for incidentd and dumpstated to provide user feedback + * and authorization for bug and inicdent reports to be taken. + * + * @hide + */ +interface IIncidentCompanion { + /** + * Request an authorization for an incident or bug report. + * // TODO(b/111441001): Add the permission + * <p> + * This function requires the ___ permission. + * + * @param callingUid The original application that requested the report. This function + * 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 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 + * a long (user's choice) time, or ever (if they never respond to the notification). + * Authorization requests are not persisted across reboot. It is up to the calling + * service to request another authorization after reboot if they still would like + * to send their report. + */ + oneway void authorizeReport(int callingUid, String callingPackage, + int flags, IIncidentAuthListener callback); + + /** + * Cancel an authorization. + */ + oneway void cancelAuthorization(IIncidentAuthListener callback); + + /** + * Return the list of pending approvals. + */ + List<String> getPendingReports(); + + /** + * The user has authorized the report to be shared. + * + * @param uri the report. + */ + void approveReport(String uri); + + /** + * The user has denied the report from being shared. + * + * @param uri the report. + */ + void denyReport(String uri); +} |