Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bfb8423a authored by Joe Onorato's avatar Joe Onorato Committed by Android (Google) Code Review
Browse files

Merge "Add IncidentReport data structure to aidl for IncidentCompanionService...

Merge "Add IncidentReport data structure to aidl for IncidentCompanionService and some extra parameters for incidentd."
parents 3c2ffd97 1c36d756
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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");
    }
+5 −1
Original line number Diff line number Diff line
@@ -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",
+33 −0
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -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);

    /**
@@ -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.
     */
@@ -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);
}
+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";
+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