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

Commit f665016d authored by Samiul Islam's avatar Samiul Islam Committed by Automerger Merge Worker
Browse files

Create sdk directory for an app only if app consumes sdk am: a0340b3c am: 5397cb62

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2028265

Change-Id: Ie6633a42399d7e75dc7d0c67f3a12bf6d9455579
parents 1c3b787e 5397cb62
Loading
Loading
Loading
Loading
+1 −3
Original line number Original line Diff line number Diff line
@@ -722,9 +722,7 @@ binder::Status InstalldNativeService::createAppDataLocked(
        }
        }
    }
    }


    // TODO(b/220095381): Due to boot time regression, we have omitted call to
    if (flags & FLAG_STORAGE_SDK) {
    // createSdkSandboxDataDirectory from here temporarily (unless it's for testing)
    if (uuid_ != nullptr && strcmp(uuid_, "TEST") == 0) {
        auto status = createSdkSandboxDataDirectory(uuid, packageName, userId, appId, previousAppId,
        auto status = createSdkSandboxDataDirectory(uuid, packageName, userId, appId, previousAppId,
                                                    seInfo, flags);
                                                    seInfo, flags);
        if (!status.isOk()) {
        if (!status.isOk()) {
+1 −0
Original line number Original line Diff line number Diff line
@@ -131,6 +131,7 @@ interface IInstalld {
    const int FLAG_STORAGE_DE = 0x1;
    const int FLAG_STORAGE_DE = 0x1;
    const int FLAG_STORAGE_CE = 0x2;
    const int FLAG_STORAGE_CE = 0x2;
    const int FLAG_STORAGE_EXTERNAL = 0x4;
    const int FLAG_STORAGE_EXTERNAL = 0x4;
    const int FLAG_STORAGE_SDK = 0x8;


    const int FLAG_CLEAR_CACHE_ONLY = 0x10;
    const int FLAG_CLEAR_CACHE_ONLY = 0x10;
    const int FLAG_CLEAR_CODE_CACHE_ONLY = 0x20;
    const int FLAG_CLEAR_CODE_CACHE_ONLY = 0x20;
+21 −7
Original line number Original line Diff line number Diff line
@@ -79,6 +79,7 @@ static constexpr const char* kTestPath = "/data/local/tmp/user/0";
static constexpr const uid_t kSystemUid = 1000;
static constexpr const uid_t kSystemUid = 1000;
static constexpr const int32_t kTestUserId = 0;
static constexpr const int32_t kTestUserId = 0;
static constexpr const uid_t kTestAppId = 19999;
static constexpr const uid_t kTestAppId = 19999;
static constexpr const int FLAG_STORAGE_SDK = InstalldNativeService::FLAG_STORAGE_SDK;


const gid_t kTestAppUid = multiuser_get_uid(kTestUserId, kTestAppId);
const gid_t kTestAppUid = multiuser_get_uid(kTestUserId, kTestAppId);
const uid_t kTestSdkSandboxUid = multiuser_get_sdk_sandbox_uid(kTestUserId, kTestAppId);
const uid_t kTestSdkSandboxUid = multiuser_get_sdk_sandbox_uid(kTestUserId, kTestAppId);
@@ -971,7 +972,7 @@ public:
        args.userId = kTestUserId;
        args.userId = kTestUserId;
        args.appId = kTestAppId;
        args.appId = kTestAppId;
        args.seInfo = "default";
        args.seInfo = "default";
        args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE;
        args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;
        return args;
        return args;
    }
    }


@@ -1006,11 +1007,11 @@ private:
    }
    }
};
};


TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSupplementalAppData) {
TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSdkAppLevelData) {
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs();
    android::os::CreateAppDataArgs args = createAppDataArgs();
    args.packageName = "com.foo";
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE;
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;


    // Create the app user data.
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
@@ -1030,11 +1031,24 @@ TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSupplementalAppData) {
                    S_IFDIR | S_ISGID | 0771);
                    S_IFDIR | S_ISGID | 0771);
}
}


TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSupplementalAppData_WithoutDeFlag) {
TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSdkAppLeveleData_WithoutSdkFlag) {
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs();
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE;

    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));

    ASSERT_FALSE(exists("/data/local/tmp/misc_ce/0/sdksandbox/com.foo"));
    ASSERT_FALSE(exists("/data/local/tmp/misc_de/0/sdksandbox/com.foo"));
}

TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSdkAppLeveleData_WithoutDeFlag) {
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs();
    android::os::CreateAppDataArgs args = createAppDataArgs();
    args.packageName = "com.foo";
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_CE;
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_SDK;


    // Create the app user data.
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
@@ -1046,11 +1060,11 @@ TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSupplementalAppData_WithoutDeFla
    ASSERT_FALSE(exists("/data/local/tmp/misc_de/0/sdksandbox/com.foo"));
    ASSERT_FALSE(exists("/data/local/tmp/misc_de/0/sdksandbox/com.foo"));
}
}


TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSupplementalAppData_WithoutCeFlag) {
TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSdkAppLeveleData_WithoutCeFlag) {
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs();
    android::os::CreateAppDataArgs args = createAppDataArgs();
    args.packageName = "com.foo";
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_DE;
    args.flags = FLAG_STORAGE_DE | FLAG_STORAGE_SDK;


    // Create the app user data.
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));