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

Commit 74d563dc authored by Tony Huang's avatar Tony Huang Committed by Android (Google) Code Review
Browse files

Merge "Add test for check valid path in ThemeOverlayManager"

parents 081cf628 dd457679
Loading
Loading
Loading
Loading
+64 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.documentsui.theme;

import static com.google.common.truth.Truth.assertThat;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -28,6 +29,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.om.OverlayInfo;
import android.content.om.OverlayManager;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.UserHandle;

import androidx.core.util.Consumer;
@@ -58,6 +61,9 @@ public class ThemeOverlayManagerTest {
    @Mock
    OverlayManager mOverlayManager;

    @Mock
    PackageManager mPackageManager;

    Consumer<Boolean> mCallback;
    Context mContext;
    CountDownLatch mLatch;
@@ -183,6 +189,64 @@ public class ThemeOverlayManagerTest {
        }
    }

    @Test
    public void testGetValidOverlay_system_valid() throws Exception {
        mThemeOverlayManager = new ThemeOverlayManager(mOverlayManager,
                getEnabledTargetPackageId());

        ApplicationInfo ai = mock(ApplicationInfo.class);
        String path = "/system/overlay/DocumentUIOverlay/DocumentUIOverlay.apk";
        ai.sourceDir = path;
        when(mPackageManager.getApplicationInfo(getOverlayPackageId(), 0)).thenReturn(ai);

        assertThat(mThemeOverlayManager.getValidOverlay(mPackageManager)).isEqualTo(
                mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),
                        mUserHandle).iterator().next());
    }

    @Test
    public void testGetValidOverlay_vendor_valid() throws Exception {
        mThemeOverlayManager = new ThemeOverlayManager(mOverlayManager,
                getEnabledTargetPackageId());

        ApplicationInfo ai = mock(ApplicationInfo.class);
        String path = "/vendor/overlay/DocumentUIOverlay/DocumentUIOverlay.apk";
        ai.sourceDir = path;
        when(mPackageManager.getApplicationInfo(getOverlayPackageId(), 0)).thenReturn(ai);

        assertThat(mThemeOverlayManager.getValidOverlay(mPackageManager)).isEqualTo(
                mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),
                        mUserHandle).iterator().next());
    }

    @Test
    public void testGetValidOverlay_product_valid() throws Exception {
        mThemeOverlayManager = new ThemeOverlayManager(mOverlayManager,
                getEnabledTargetPackageId());

        ApplicationInfo ai = mock(ApplicationInfo.class);
        String path = "/product/overlay/DocumentUIOverlay/DocumentUIOverlay.apk";
        ai.sourceDir = path;
        when(mPackageManager.getApplicationInfo(getOverlayPackageId(), 0)).thenReturn(ai);

        assertThat(mThemeOverlayManager.getValidOverlay(mPackageManager)).isEqualTo(
                mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),
                        mUserHandle).iterator().next());
    }

    @Test
    public void testGetValidOverlay_data_invalid() throws Exception {
        mThemeOverlayManager = new ThemeOverlayManager(mOverlayManager,
                getEnabledTargetPackageId());

        ApplicationInfo ai = mock(ApplicationInfo.class);
        String path = "/data/app/DocumentUIOverlay/DocumentUIOverlay.apk";
        ai.sourceDir = path;
        when(mPackageManager.getApplicationInfo(getOverlayPackageId(), 0)).thenReturn(ai);

        assertThat(mThemeOverlayManager.getValidOverlay(mPackageManager)).isEqualTo(null);
    }

    private static OverlayInfo createOverlayInfo(String packageName, String targetPackageName,
            boolean enabled) {
        return new OverlayInfo(packageName, targetPackageName, null, null, "",