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

Commit dd457679 authored by Tony Huang's avatar Tony Huang
Browse files

Add test for check valid path in ThemeOverlayManager

We need to check ovalay package path to set components
enable or disable manually. Add tests to ensure this
checking implementation.

Fix: 135261828
Test: atest DocumentsUIGoogleTests
Change-Id: If81efa85c99a062b4b193d2d19aed03cdfd4ff43
parent e618daed
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, "",