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

Commit 7d1604dc authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Add batched createAppData API to installd."

parents e65d87a9 6c157067
Loading
Loading
Loading
Loading
+27 −0
Original line number Diff line number Diff line
@@ -412,6 +412,33 @@ static bool prepare_app_profile_dir(const std::string& packageName, int32_t appI
    return true;
}

binder::Status InstalldNativeService::createAppDataBatched(
        const std::optional<std::vector<std::optional<std::string>>>& uuids,
        const std::optional<std::vector<std::optional<std::string>>>& packageNames,
        int32_t userId, int32_t flags, const std::vector<int32_t>& appIds,
        const std::vector<std::string>& seInfos, const std::vector<int32_t>& targetSdkVersions,
        int64_t* _aidl_return) {
    ENFORCE_UID(AID_SYSTEM);
    std::lock_guard<std::recursive_mutex> lock(mLock);

    ATRACE_BEGIN("createAppDataBatched");
    binder::Status ret;
    for (size_t i = 0; i < uuids->size(); i++) {
        std::optional<std::string> packageName = packageNames->at(i);
        if (!packageName) {
            continue;
        }
        ret = createAppData(uuids->at(i), *packageName, userId, flags, appIds[i],
                seInfos[i], targetSdkVersions[i], _aidl_return);
        if (!ret.isOk()) {
            ATRACE_END();
            return ret;
        }
    }
    ATRACE_END();
    return ok();
}

binder::Status InstalldNativeService::createAppData(const std::optional<std::string>& uuid,
        const std::string& packageName, int32_t userId, int32_t flags, int32_t appId,
        const std::string& seInfo, int32_t targetSdkVersion, int64_t* _aidl_return) {
+6 −1
Original line number Diff line number Diff line
@@ -44,7 +44,12 @@ public:
            int32_t userSerial, int32_t flags);
    binder::Status destroyUserData(const std::optional<std::string>& uuid, int32_t userId,
            int32_t flags);

    binder::Status createAppDataBatched(
            const std::optional<std::vector<std::optional<std::string>>>& uuids,
            const std::optional<std::vector<std::optional<std::string>>>& packageNames,
            int32_t userId, int32_t flags, const std::vector<int32_t>& appIds,
            const std::vector<std::string>& seInfos, const std::vector<int32_t>& targetSdkVersions,
            int64_t* _aidl_return);
    binder::Status createAppData(const std::optional<std::string>& uuid,
            const std::string& packageName, int32_t userId, int32_t flags, int32_t appId,
            const std::string& seInfo, int32_t targetSdkVersion, int64_t* _aidl_return);
+3 −0
Original line number Diff line number Diff line
@@ -23,6 +23,9 @@ interface IInstalld {

    long createAppData(@nullable @utf8InCpp String uuid, in @utf8InCpp String packageName,
            int userId, int flags, int appId, in @utf8InCpp String seInfo, int targetSdkVersion);
    long createAppDataBatched(in @nullable @utf8InCpp String[] uuids,
        in @nullable @utf8InCpp String[] packageNames, in int userId, int flags, in int[] appIds,
        in @utf8InCpp String[] seInfos, in int[] targetSdkVersions);
    void restoreconAppData(@nullable @utf8InCpp String uuid, @utf8InCpp String packageName,
            int userId, int flags, int appId, @utf8InCpp String seInfo);
    void migrateAppData(@nullable @utf8InCpp String uuid, @utf8InCpp String packageName,