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

Commit 5330317d authored by Anna Zhuravleva's avatar Anna Zhuravleva
Browse files

Set Private space enabled by default

Bug: 341240291
Test: presubmit
Change-Id: Id576b8bd82926e860a6a26e8671a1a57ed9c281b
parent b9401d01
Loading
Loading
Loading
Loading
+2 −45
Original line number Diff line number Diff line
@@ -16,22 +16,10 @@

package com.android.documentsui;

import android.os.Binder;
import android.provider.DeviceConfig;

import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;

import com.android.modules.utils.build.SdkLevel;

import com.google.common.base.Supplier;

public interface ConfigStore {
    // TODO(b/288066342): Remove and replace after new constant definition in
    //  {@link android.provider.DeviceConfig}.
    String NAMESPACE_DOCUMENTSUI = "documentsui";

    boolean DEFAULT_PICKER_PRIVATE_SPACE_ENABLED = false;
    boolean DEFAULT_PICKER_PRIVATE_SPACE_ENABLED = true;

    /**
     * @return if the Private-Space-in-DocsUI is enabled
@@ -45,41 +33,10 @@ public interface ConfigStore {
     * {@link android.provider.DeviceConfig}. Meant to be used by the "production" code.
     */
    class ConfigStoreImpl implements ConfigStore {
        @VisibleForTesting
        public static final String KEY_PRIVATE_SPACE_FEATURE_ENABLED =
                "private_space_feature_enabled";

        private static final boolean sCanReadDeviceConfig = SdkLevel.isAtLeastS();

        private Boolean mIsPrivateSpaceEnabled = null;

        @Override
        public boolean isPrivateSpaceInDocsUIEnabled() {
            if (mIsPrivateSpaceEnabled == null) {
                mIsPrivateSpaceEnabled = getBooleanDeviceConfig(
                        NAMESPACE_DOCUMENTSUI,
                        KEY_PRIVATE_SPACE_FEATURE_ENABLED,
                        DEFAULT_PICKER_PRIVATE_SPACE_ENABLED);
            }
            return sCanReadDeviceConfig && mIsPrivateSpaceEnabled;
        }

        private static boolean getBooleanDeviceConfig(@NonNull String namespace,
                @NonNull String key, boolean defaultValue) {
            if (!sCanReadDeviceConfig) {
                return defaultValue;
            }
            return withCleanCallingIdentity(
                    () -> DeviceConfig.getBoolean(namespace, key, defaultValue));
            return SdkLevel.isAtLeastS();
        }

        private static <T> T withCleanCallingIdentity(@NonNull Supplier<T> action) {
            final long callingIdentity = Binder.clearCallingIdentity();
            try {
                return action.get();
            } finally {
                Binder.restoreCallingIdentity(callingIdentity);
            }
        }
    }
}
+0 −34
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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;

import static org.junit.Assert.assertFalse;

import androidx.test.runner.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(AndroidJUnit4.class)
public class ConfigStoreTest {
    ConfigStore mConfigStore = new ConfigStore() {};

    @Test
    public void test_defaultValueConfigStore_allCorrect() {
        assertFalse(mConfigStore.isPrivateSpaceInDocsUIEnabled());
    }
}