Merge "Revert "Runtime apply overlay by ThemeOverlayManager"" into qt-dev
diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java
index dcac5bf..9b783a8 100644
--- a/src/com/android/documentsui/BaseActivity.java
+++ b/src/com/android/documentsui/BaseActivity.java
@@ -21,7 +21,6 @@
 import static com.android.documentsui.base.State.MODE_GRID;
 
 import android.content.Intent;
-import android.content.om.OverlayManager;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ProviderInfo;
@@ -74,7 +73,6 @@
 import com.android.documentsui.sidebar.RootsFragment;
 import com.android.documentsui.sorting.SortController;
 import com.android.documentsui.sorting.SortModel;
-import com.android.documentsui.theme.ThemeOverlayManager;
 
 import com.google.android.material.appbar.AppBarLayout;
 
@@ -103,8 +101,6 @@
     protected NavigationViewManager mNavigator;
     protected SortController mSortController;
 
-    protected ThemeOverlayManager mThemeOverlayManager;
-
     private final List<EventListener> mEventListeners = new ArrayList<>();
     private final String mTag;
 
@@ -136,9 +132,6 @@
         // Record the time when onCreate is invoked for metric.
         mStartTime = new Date().getTime();
 
-        mThemeOverlayManager = new ThemeOverlayManager(getSystemService(OverlayManager.class),
-                getPackageName());
-        mThemeOverlayManager.applyOverlays(true);
         // ToDo Create tool to check resource version before applyStyle for the theme
         // If version code is not match, we should reset overlay package to default,
         // in case Activity continueusly encounter resource not found exception
diff --git a/src/com/android/documentsui/theme/ThemeOverlayManager.java b/src/com/android/documentsui/theme/ThemeOverlayManager.java
deleted file mode 100644
index cc6dfc2..0000000
--- a/src/com/android/documentsui/theme/ThemeOverlayManager.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.theme;
-
-import android.annotation.TargetApi;
-import android.content.om.OverlayInfo;
-import android.content.om.OverlayManager;
-import android.os.Build;
-import android.os.UserHandle;
-import android.util.Log;
-
-import java.util.List;
-
-/**
- * ThemeOverlayManager manage runtime resource overlay packages of DocumentsUI
- */
-public class ThemeOverlayManager {
-    private static final String TAG = ThemeOverlayManager.class.getSimpleName();
-
-    private static final boolean DEBUG = false;
-
-    private OverlayManager mOverlayManager;
-    private String mTargetPackageId;
-    private UserHandle mUserHandle;
-
-    @TargetApi(Build.VERSION_CODES.M)
-    public ThemeOverlayManager(OverlayManager overlayManager, String targetPackageId) {
-        mOverlayManager = overlayManager;
-        mTargetPackageId = targetPackageId;
-        mUserHandle = UserHandle.of(UserHandle.myUserId());
-    }
-
-    /**
-     * Apply runtime overlay package
-     *
-     * @param enabled whether or not enable overlay package
-     */
-    public void applyOverlays(boolean enabled) {
-        setOverlaysEnabled(getOverlayInfo(), enabled);
-    }
-
-    private List<OverlayInfo> getOverlayInfo() {
-        if (mOverlayManager != null) {
-            return mOverlayManager.getOverlayInfosForTarget(mTargetPackageId, mUserHandle);
-        }
-        return null;
-    }
-
-    private void setOverlaysEnabled(List<OverlayInfo> overlayInfos, boolean enabled) {
-        if (mOverlayManager != null && overlayInfos != null) {
-            for (OverlayInfo info : overlayInfos) {
-                if (info.isEnabled() != enabled) {
-                    setEnabled(info.getPackageName(), mUserHandle, enabled);
-                } else {
-                    Log.w(TAG, "Overlay package:" + info.getPackageName()
-                            + ", already enabled, UserHandle:");
-                }
-            }
-        }
-    }
-
-    private void setEnabled(String pkg, UserHandle userHandle, boolean enabled) {
-        if (DEBUG) {
-            Log.d(TAG, String.format("setEnabled: %s %s %b", pkg, userHandle, enabled));
-        }
-        mOverlayManager.setEnabled(pkg, enabled, userHandle);
-    }
-}
diff --git a/tests/unit/com/android/documentsui/theme/ThemeOverlayManagerTest.java b/tests/unit/com/android/documentsui/theme/ThemeOverlayManagerTest.java
deleted file mode 100644
index 91071c8..0000000
--- a/tests/unit/com/android/documentsui/theme/ThemeOverlayManagerTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui.theme;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.om.OverlayInfo;
-import android.content.om.OverlayManager;
-import android.os.UserHandle;
-
-import androidx.test.filters.SmallTest;
-import androidx.test.platform.app.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
-
-import com.google.common.collect.Lists;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-import java.util.List;
-
-@SmallTest
-@RunWith(AndroidJUnit4.class)
-public class ThemeOverlayManagerTest {
-    private static final String TEST_DISABLED_PREFIX = "com.example.";
-    private static final String TEST_ENABLED_PREFIX = "com.example.enabled.";
-    private static final String TEST_OVERLAY_PACKAGE = "test.overlay";
-    private static final String TEST_TARGET_PACKAGE = "test.target";
-
-    @Mock
-    OverlayManager mOverlayManager;
-
-    ThemeOverlayManager mThemeOverlayManager;
-
-    UserHandle mUserHandle;
-
-    @Before
-    public void setUp() throws Exception {
-        MockitoAnnotations.initMocks(this);
-        mUserHandle = UserHandle.of(UserHandle.myUserId());
-
-        when(mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),
-                mUserHandle)).thenReturn(Lists.newArrayList(
-                createOverlayInfo(getOverlayPackageId(), getEnabledTargetPackageId(), true)));
-
-        when(mOverlayManager.getOverlayInfosForTarget(getDisabledTargetPackageId(),
-                mUserHandle)).thenReturn(Lists.newArrayList(
-                createOverlayInfo(getOverlayPackageId(), getDisabledTargetPackageId(), false)));
-    }
-
-    @Test
-    public void testOverlayPackagesForDocumentsUI_shouldBeNonStatic() {
-        final String docsuiPkgId =
-                InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageName();
-        final OverlayManager manager =
-                InstrumentationRegistry.getInstrumentation().getTargetContext().getSystemService(
-                        OverlayManager.class);
-        final List<OverlayInfo> infos = manager.getOverlayInfosForTarget(docsuiPkgId, mUserHandle);
-        for (OverlayInfo info : infos) {
-            assertThat(info.isStatic).isFalse();
-        }
-    }
-
-    @Test
-    public void testApplyOverlays_shouldSetEnabled() {
-        final boolean enabled = true;
-
-        mThemeOverlayManager = new ThemeOverlayManager(mOverlayManager,
-                getDisabledTargetPackageId());
-        mThemeOverlayManager.applyOverlays(enabled);
-
-        verify(mOverlayManager, times(1)).setEnabled(getOverlayPackageId(), enabled,
-                mUserHandle);
-    }
-
-    @Test
-    public void testApplyOverlays_shouldGetOverlayInfo() {
-        final boolean enabled = true;
-
-        mThemeOverlayManager = new ThemeOverlayManager(mOverlayManager,
-                getEnabledTargetPackageId());
-        mThemeOverlayManager.applyOverlays(enabled);
-
-        verify(mOverlayManager, times(1)).getOverlayInfosForTarget(getEnabledTargetPackageId(),
-                mUserHandle);
-    }
-
-    @Test
-    public void testApplyOverlays_shouldCheckEnabled_beforeSetEnabled() {
-        final boolean enabled = true;
-
-        mThemeOverlayManager = new ThemeOverlayManager(mOverlayManager,
-                getEnabledTargetPackageId());
-        mThemeOverlayManager.applyOverlays(enabled);
-
-        verify(mOverlayManager, never()).setEnabled(getOverlayPackageId(), enabled,
-                mUserHandle);
-    }
-
-    @Test
-    public void testDefaultDisabled_applyOverlays_shouldEnabled() {
-        final boolean enabled = true;
-
-        assertThat(mOverlayManager.getOverlayInfosForTarget(getDisabledTargetPackageId(),
-                mUserHandle).get(0).isEnabled()).isEqualTo(!enabled);
-
-        mThemeOverlayManager = new ThemeOverlayManager(mOverlayManager,
-                getDisabledTargetPackageId());
-        mThemeOverlayManager.applyOverlays(enabled);
-
-        verify(mOverlayManager, times(1)).setEnabled(getOverlayPackageId(), enabled,
-                mUserHandle);
-    }
-
-    @Test
-    public void testDefaultEnabled_applyOverlays_shouldDisabled() {
-        final boolean enabled = false;
-
-        assertThat(mOverlayManager.getOverlayInfosForTarget(getEnabledTargetPackageId(),
-                mUserHandle).get(0).isEnabled()).isEqualTo(!enabled);
-
-        mThemeOverlayManager = new ThemeOverlayManager(mOverlayManager,
-                getEnabledTargetPackageId());
-        mThemeOverlayManager.applyOverlays(enabled);
-
-        verify(mOverlayManager, times(1)).setEnabled(getOverlayPackageId(), enabled,
-                mUserHandle);
-    }
-
-    private static OverlayInfo createOverlayInfo(String packageName, String targetPackageName,
-            boolean enabled) {
-        return new OverlayInfo(packageName, targetPackageName, null, null, "",
-                enabled ? OverlayInfo.STATE_ENABLED : OverlayInfo.STATE_DISABLED, 0, 0, false);
-    }
-
-    private static String getDisabledTargetPackageId() {
-        return TEST_DISABLED_PREFIX + TEST_TARGET_PACKAGE;
-    }
-
-    private static String getEnabledTargetPackageId() {
-        return TEST_ENABLED_PREFIX + TEST_TARGET_PACKAGE;
-    }
-
-    private static String getOverlayPackageId() {
-        return TEST_DISABLED_PREFIX + TEST_OVERLAY_PACKAGE;
-    }
-}