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

Commit e8734d61 authored by Samiul Islam's avatar Samiul Islam Committed by Android (Google) Code Review
Browse files

Merge "Destroy SdkSandbox User Data" into tm-dev

parents 23b14a95 8d78437e
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -1833,6 +1833,11 @@ binder::Status InstalldNativeService::destroyUserData(const std::optional<std::s
        if (delete_dir_contents_and_dir(path, true) != 0) {
            res = error("Failed to delete " + path);
        }
        auto sdk_sandbox_de_path =
                create_data_misc_sdk_sandbox_path(uuid_, /*isCeData=*/false, userId);
        if (delete_dir_contents_and_dir(sdk_sandbox_de_path, true) != 0) {
            res = error("Failed to delete " + sdk_sandbox_de_path);
        }
        if (uuid_ == nullptr) {
            path = create_data_misc_legacy_path(userId);
            if (delete_dir_contents_and_dir(path, true) != 0) {
@@ -1849,6 +1854,11 @@ binder::Status InstalldNativeService::destroyUserData(const std::optional<std::s
        if (delete_dir_contents_and_dir(path, true) != 0) {
            res = error("Failed to delete " + path);
        }
        auto sdk_sandbox_ce_path =
                create_data_misc_sdk_sandbox_path(uuid_, /*isCeData=*/true, userId);
        if (delete_dir_contents_and_dir(sdk_sandbox_ce_path, true) != 0) {
            res = error("Failed to delete " + sdk_sandbox_ce_path);
        }
        path = findDataMediaPath(uuid, userId);
        if (delete_dir_contents_and_dir(path, true) != 0) {
            res = error("Failed to delete " + path);
+27 −12
Original line number Diff line number Diff line
@@ -987,7 +987,7 @@ public:
        args.userId = kTestUserId;
        args.appId = kTestAppId;
        args.seInfo = "default";
        args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE;
        args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;
        return args;
    }

@@ -1045,7 +1045,6 @@ private:
TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSdkPackageData) {
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;

    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
@@ -1082,7 +1081,6 @@ TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSdkAppLevelData_WithoutSdkFlag)
TEST_F(SdkSandboxDataTest, CreateAppData_CreatesSdkAppLevelData_WithoutSdkFlagDeletesExisting) {
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    ASSERT_TRUE(exists("/data/local/tmp/misc_ce/0/sdksandbox/com.foo"));
@@ -1232,7 +1230,6 @@ TEST_F(DestroyAppDataTest, DestroySdkSandboxDataDirectories_WithCeAndDeFlag) {
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    // Destroy the app user data.
@@ -1246,7 +1243,6 @@ TEST_F(DestroyAppDataTest, DestroySdkSandboxDataDirectories_WithoutDeFlag) {
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    // Destroy the app user data.
@@ -1260,7 +1256,6 @@ TEST_F(DestroyAppDataTest, DestroySdkSandboxDataDirectories_WithoutCeFlag) {
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    // Destroy the app user data.
@@ -1297,7 +1292,6 @@ TEST_F(ClearAppDataTest, ClearSdkSandboxDataDirectories_WithCeAndClearCacheFlag)
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    createTestSdkData("com.foo", {"sdk1", "sdk2"});
@@ -1316,7 +1310,6 @@ TEST_F(ClearAppDataTest, ClearSdkSandboxDataDirectories_WithCeAndClearCodeCacheF
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    createTestSdkData("com.foo", {"sdk1", "sdk2"});
@@ -1338,7 +1331,6 @@ TEST_F(ClearAppDataTest, ClearSdkSandboxDataDirectories_WithDeAndClearCacheFlag)
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    createTestSdkData("com.foo", {"sdk1", "sdk2"});
@@ -1357,7 +1349,6 @@ TEST_F(ClearAppDataTest, ClearSdkSandboxDataDirectories_WithDeAndClearCodeCacheF
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    createTestSdkData("com.foo", {"sdk1", "sdk2"});
@@ -1379,7 +1370,6 @@ TEST_F(ClearAppDataTest, ClearSdkSandboxDataDirectories_WithCeAndWithoutAnyCache
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    createTestSdkData("com.foo", {"sdk1", "sdk2"});
@@ -1395,7 +1385,6 @@ TEST_F(ClearAppDataTest, ClearSdkSandboxDataDirectories_WithDeAndWithoutAnyCache
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.packageName = "com.foo";
    args.flags = FLAG_STORAGE_CE | FLAG_STORAGE_DE | FLAG_STORAGE_SDK;
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    createTestSdkData("com.foo", {"sdk1", "sdk2"});
@@ -1407,5 +1396,31 @@ TEST_F(ClearAppDataTest, ClearSdkSandboxDataDirectories_WithDeAndWithoutAnyCache
    ASSERT_TRUE(fs::is_empty(fs::path("/data/local/tmp/misc_de/0/sdksandbox/com.foo/sdk2")));
}

class DestroyUserDataTest : public SdkSandboxDataTest {};

TEST_F(DestroyUserDataTest, DestroySdkData_WithCeFlag) {
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.packageName = "com.foo";
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    // Destroy user data
    ASSERT_BINDER_SUCCESS(service->destroyUserData(args.uuid, args.userId, FLAG_STORAGE_CE));
    ASSERT_FALSE(exists("/data/local/tmp/misc_ce/0/sdksandbox"));
    ASSERT_TRUE(exists("/data/local/tmp/misc_de/0/sdksandbox"));
}

TEST_F(DestroyUserDataTest, DestroySdkData_WithDeFlag) {
    android::os::CreateAppDataResult result;
    android::os::CreateAppDataArgs args = createAppDataArgs("com.foo");
    args.packageName = "com.foo";
    // Create the app user data.
    ASSERT_BINDER_SUCCESS(service->createAppData(args, &result));
    // Destroy user data
    ASSERT_BINDER_SUCCESS(service->destroyUserData(args.uuid, args.userId, FLAG_STORAGE_DE));
    ASSERT_TRUE(exists("/data/local/tmp/misc_ce/0/sdksandbox"));
    ASSERT_FALSE(exists("/data/local/tmp/misc_de/0/sdksandbox"));
}

}  // namespace installd
}  // namespace android