Merge "Fix LetterboxConfigurationPersisterTest when file is deleted" into udc-qpr-dev am: 985b432d58
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24014859 Change-Id: I36b8621760c7a073fdbe10b66deec2e0533337a4 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -294,8 +294,7 @@ final class LetterboxConfiguration {
|
|||||||
@NonNull private final SynchedDeviceConfig mDeviceConfig;
|
@NonNull private final SynchedDeviceConfig mDeviceConfig;
|
||||||
|
|
||||||
LetterboxConfiguration(@NonNull final Context systemUiContext) {
|
LetterboxConfiguration(@NonNull final Context systemUiContext) {
|
||||||
this(systemUiContext,
|
this(systemUiContext, new LetterboxConfigurationPersister(
|
||||||
new LetterboxConfigurationPersister(systemUiContext,
|
|
||||||
() -> readLetterboxHorizontalReachabilityPositionFromConfig(
|
() -> readLetterboxHorizontalReachabilityPositionFromConfig(
|
||||||
systemUiContext, /* forBookMode */ false),
|
systemUiContext, /* forBookMode */ false),
|
||||||
() -> readLetterboxVerticalReachabilityPositionFromConfig(
|
() -> readLetterboxVerticalReachabilityPositionFromConfig(
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
|
|||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.content.Context;
|
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.StrictMode;
|
import android.os.StrictMode;
|
||||||
import android.os.StrictMode.ThreadPolicy;
|
import android.os.StrictMode.ThreadPolicy;
|
||||||
@@ -53,10 +52,8 @@ class LetterboxConfigurationPersister {
|
|||||||
private static final String TAG =
|
private static final String TAG =
|
||||||
TAG_WITH_CLASS_NAME ? "LetterboxConfigurationPersister" : TAG_WM;
|
TAG_WITH_CLASS_NAME ? "LetterboxConfigurationPersister" : TAG_WM;
|
||||||
|
|
||||||
@VisibleForTesting
|
private static final String LETTERBOX_CONFIGURATION_FILENAME = "letterbox_config";
|
||||||
static final String LETTERBOX_CONFIGURATION_FILENAME = "letterbox_config";
|
|
||||||
|
|
||||||
private final Context mContext;
|
|
||||||
private final Supplier<Integer> mDefaultHorizontalReachabilitySupplier;
|
private final Supplier<Integer> mDefaultHorizontalReachabilitySupplier;
|
||||||
private final Supplier<Integer> mDefaultVerticalReachabilitySupplier;
|
private final Supplier<Integer> mDefaultVerticalReachabilitySupplier;
|
||||||
private final Supplier<Integer> mDefaultBookModeReachabilitySupplier;
|
private final Supplier<Integer> mDefaultBookModeReachabilitySupplier;
|
||||||
@@ -97,36 +94,32 @@ class LetterboxConfigurationPersister {
|
|||||||
@NonNull
|
@NonNull
|
||||||
private final PersisterQueue mPersisterQueue;
|
private final PersisterQueue mPersisterQueue;
|
||||||
|
|
||||||
LetterboxConfigurationPersister(Context systemUiContext,
|
LetterboxConfigurationPersister(
|
||||||
Supplier<Integer> defaultHorizontalReachabilitySupplier,
|
@NonNull Supplier<Integer> defaultHorizontalReachabilitySupplier,
|
||||||
Supplier<Integer> defaultVerticalReachabilitySupplier,
|
@NonNull Supplier<Integer> defaultVerticalReachabilitySupplier,
|
||||||
Supplier<Integer> defaultBookModeReachabilitySupplier,
|
@NonNull Supplier<Integer> defaultBookModeReachabilitySupplier,
|
||||||
Supplier<Integer> defaultTabletopModeReachabilitySupplier) {
|
@NonNull Supplier<Integer> defaultTabletopModeReachabilitySupplier) {
|
||||||
this(systemUiContext, defaultHorizontalReachabilitySupplier,
|
this(defaultHorizontalReachabilitySupplier, defaultVerticalReachabilitySupplier,
|
||||||
defaultVerticalReachabilitySupplier,
|
defaultBookModeReachabilitySupplier, defaultTabletopModeReachabilitySupplier,
|
||||||
defaultBookModeReachabilitySupplier,
|
|
||||||
defaultTabletopModeReachabilitySupplier,
|
|
||||||
Environment.getDataSystemDirectory(), new PersisterQueue(),
|
Environment.getDataSystemDirectory(), new PersisterQueue(),
|
||||||
/* completionCallback */ null);
|
/* completionCallback */ null, LETTERBOX_CONFIGURATION_FILENAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
LetterboxConfigurationPersister(Context systemUiContext,
|
LetterboxConfigurationPersister(
|
||||||
Supplier<Integer> defaultHorizontalReachabilitySupplier,
|
@NonNull Supplier<Integer> defaultHorizontalReachabilitySupplier,
|
||||||
Supplier<Integer> defaultVerticalReachabilitySupplier,
|
@NonNull Supplier<Integer> defaultVerticalReachabilitySupplier,
|
||||||
Supplier<Integer> defaultBookModeReachabilitySupplier,
|
@NonNull Supplier<Integer> defaultBookModeReachabilitySupplier,
|
||||||
Supplier<Integer> defaultTabletopModeReachabilitySupplier,
|
@NonNull Supplier<Integer> defaultTabletopModeReachabilitySupplier,
|
||||||
File configFolder,
|
@NonNull File configFolder, @NonNull PersisterQueue persisterQueue,
|
||||||
PersisterQueue persisterQueue, @Nullable Consumer<String> completionCallback) {
|
@Nullable Consumer<String> completionCallback,
|
||||||
mContext = systemUiContext.createDeviceProtectedStorageContext();
|
@NonNull String letterboxConfigurationFileName) {
|
||||||
mDefaultHorizontalReachabilitySupplier = defaultHorizontalReachabilitySupplier;
|
mDefaultHorizontalReachabilitySupplier = defaultHorizontalReachabilitySupplier;
|
||||||
mDefaultVerticalReachabilitySupplier = defaultVerticalReachabilitySupplier;
|
mDefaultVerticalReachabilitySupplier = defaultVerticalReachabilitySupplier;
|
||||||
mDefaultBookModeReachabilitySupplier =
|
mDefaultBookModeReachabilitySupplier = defaultBookModeReachabilitySupplier;
|
||||||
defaultBookModeReachabilitySupplier;
|
mDefaultTabletopModeReachabilitySupplier = defaultTabletopModeReachabilitySupplier;
|
||||||
mDefaultTabletopModeReachabilitySupplier =
|
|
||||||
defaultTabletopModeReachabilitySupplier;
|
|
||||||
mCompletionCallback = completionCallback;
|
mCompletionCallback = completionCallback;
|
||||||
final File prefFiles = new File(configFolder, LETTERBOX_CONFIGURATION_FILENAME);
|
final File prefFiles = new File(configFolder, letterboxConfigurationFileName);
|
||||||
mConfigurationFile = new AtomicFile(prefFiles);
|
mConfigurationFile = new AtomicFile(prefFiles);
|
||||||
mPersisterQueue = persisterQueue;
|
mPersisterQueue = persisterQueue;
|
||||||
runWithDiskReadsThreadPolicy(this::readCurrentConfiguration);
|
runWithDiskReadsThreadPolicy(this::readCurrentConfiguration);
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentat
|
|||||||
|
|
||||||
import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT;
|
import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT;
|
||||||
import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP;
|
import static com.android.server.wm.LetterboxConfiguration.LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP;
|
||||||
import static com.android.server.wm.LetterboxConfigurationPersister.LETTERBOX_CONFIGURATION_FILENAME;
|
|
||||||
|
|
||||||
import android.annotation.NonNull;
|
import android.annotation.NonNull;
|
||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
@@ -42,13 +41,26 @@ import org.junit.Test;
|
|||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests for the {@link LetterboxConfigurationPersister} class.
|
||||||
|
*
|
||||||
|
* Build/Install/Run:
|
||||||
|
* atest WmTests:LetterboxConfigurationPersisterTest
|
||||||
|
*/
|
||||||
@SmallTest
|
@SmallTest
|
||||||
@Presubmit
|
@Presubmit
|
||||||
public class LetterboxConfigurationPersisterTest {
|
public class LetterboxConfigurationPersisterTest {
|
||||||
|
|
||||||
private static final long TIMEOUT = 2000L; // 2 secs
|
private static final long TIMEOUT = 2000L; // 2 secs
|
||||||
|
|
||||||
|
private static final int DEFAULT_REACHABILITY_TEST = -1;
|
||||||
|
private static final Supplier<Integer> DEFAULT_REACHABILITY_SUPPLIER_TEST =
|
||||||
|
() -> DEFAULT_REACHABILITY_TEST;
|
||||||
|
|
||||||
|
private static final String LETTERBOX_CONFIGURATION_TEST_FILENAME = "letterbox_config_test";
|
||||||
|
|
||||||
private LetterboxConfigurationPersister mLetterboxConfigurationPersister;
|
private LetterboxConfigurationPersister mLetterboxConfigurationPersister;
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private PersisterQueue mPersisterQueue;
|
private PersisterQueue mPersisterQueue;
|
||||||
@@ -62,7 +74,7 @@ public class LetterboxConfigurationPersisterTest {
|
|||||||
mConfigFolder = mContext.getFilesDir();
|
mConfigFolder = mContext.getFilesDir();
|
||||||
mPersisterQueue = new PersisterQueue();
|
mPersisterQueue = new PersisterQueue();
|
||||||
mQueueState = new QueueState();
|
mQueueState = new QueueState();
|
||||||
mLetterboxConfigurationPersister = new LetterboxConfigurationPersister(mContext,
|
mLetterboxConfigurationPersister = new LetterboxConfigurationPersister(
|
||||||
() -> mContext.getResources().getInteger(
|
() -> mContext.getResources().getInteger(
|
||||||
R.integer.config_letterboxDefaultPositionForHorizontalReachability),
|
R.integer.config_letterboxDefaultPositionForHorizontalReachability),
|
||||||
() -> mContext.getResources().getInteger(
|
() -> mContext.getResources().getInteger(
|
||||||
@@ -72,7 +84,8 @@ public class LetterboxConfigurationPersisterTest {
|
|||||||
() -> mContext.getResources().getInteger(
|
() -> mContext.getResources().getInteger(
|
||||||
R.integer.config_letterboxDefaultPositionForTabletopModeReachability
|
R.integer.config_letterboxDefaultPositionForTabletopModeReachability
|
||||||
),
|
),
|
||||||
mConfigFolder, mPersisterQueue, mQueueState);
|
mConfigFolder, mPersisterQueue, mQueueState,
|
||||||
|
LETTERBOX_CONFIGURATION_TEST_FILENAME);
|
||||||
mQueueListener = queueEmpty -> mQueueState.onItemAdded();
|
mQueueListener = queueEmpty -> mQueueState.onItemAdded();
|
||||||
mPersisterQueue.addListener(mQueueListener);
|
mPersisterQueue.addListener(mQueueListener);
|
||||||
mLetterboxConfigurationPersister.start();
|
mLetterboxConfigurationPersister.start();
|
||||||
@@ -127,8 +140,10 @@ public class LetterboxConfigurationPersisterTest {
|
|||||||
public void test_whenUpdatedWithNewValues_valuesAreReadAfterRestart() {
|
public void test_whenUpdatedWithNewValues_valuesAreReadAfterRestart() {
|
||||||
final PersisterQueue firstPersisterQueue = new PersisterQueue();
|
final PersisterQueue firstPersisterQueue = new PersisterQueue();
|
||||||
final LetterboxConfigurationPersister firstPersister = new LetterboxConfigurationPersister(
|
final LetterboxConfigurationPersister firstPersister = new LetterboxConfigurationPersister(
|
||||||
mContext, () -> -1, () -> -1, () -> -1, () -> -1, mContext.getFilesDir(),
|
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
|
||||||
firstPersisterQueue, mQueueState);
|
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
|
||||||
|
mContext.getFilesDir(), firstPersisterQueue, mQueueState,
|
||||||
|
LETTERBOX_CONFIGURATION_TEST_FILENAME);
|
||||||
firstPersister.start();
|
firstPersister.start();
|
||||||
firstPersister.setLetterboxPositionForHorizontalReachability(false,
|
firstPersister.setLetterboxPositionForHorizontalReachability(false,
|
||||||
LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT);
|
LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT);
|
||||||
@@ -138,8 +153,10 @@ public class LetterboxConfigurationPersisterTest {
|
|||||||
stopPersisterSafe(firstPersisterQueue);
|
stopPersisterSafe(firstPersisterQueue);
|
||||||
final PersisterQueue secondPersisterQueue = new PersisterQueue();
|
final PersisterQueue secondPersisterQueue = new PersisterQueue();
|
||||||
final LetterboxConfigurationPersister secondPersister = new LetterboxConfigurationPersister(
|
final LetterboxConfigurationPersister secondPersister = new LetterboxConfigurationPersister(
|
||||||
mContext, () -> -1, () -> -1, () -> -1, () -> -1, mContext.getFilesDir(),
|
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
|
||||||
secondPersisterQueue, mQueueState);
|
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
|
||||||
|
mContext.getFilesDir(), secondPersisterQueue, mQueueState,
|
||||||
|
LETTERBOX_CONFIGURATION_TEST_FILENAME);
|
||||||
secondPersister.start();
|
secondPersister.start();
|
||||||
final int newPositionForHorizontalReachability =
|
final int newPositionForHorizontalReachability =
|
||||||
secondPersister.getLetterboxPositionForHorizontalReachability(false);
|
secondPersister.getLetterboxPositionForHorizontalReachability(false);
|
||||||
@@ -156,37 +173,46 @@ public class LetterboxConfigurationPersisterTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test_whenUpdatedWithNewValuesAndDeleted_valuesAreDefaults() {
|
public void test_whenUpdatedWithNewValuesAndDeleted_valuesAreDefaults() {
|
||||||
mLetterboxConfigurationPersister.setLetterboxPositionForHorizontalReachability(false,
|
final PersisterQueue firstPersisterQueue = new PersisterQueue();
|
||||||
|
final LetterboxConfigurationPersister firstPersister = new LetterboxConfigurationPersister(
|
||||||
|
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
|
||||||
|
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
|
||||||
|
mContext.getFilesDir(), firstPersisterQueue, mQueueState,
|
||||||
|
LETTERBOX_CONFIGURATION_TEST_FILENAME);
|
||||||
|
firstPersister.start();
|
||||||
|
firstPersister.setLetterboxPositionForHorizontalReachability(false,
|
||||||
LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT);
|
LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT);
|
||||||
mLetterboxConfigurationPersister.setLetterboxPositionForVerticalReachability(false,
|
firstPersister.setLetterboxPositionForVerticalReachability(false,
|
||||||
LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP);
|
LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP);
|
||||||
waitForCompletion(mPersisterQueue);
|
waitForCompletion(mPersisterQueue);
|
||||||
final int newPositionForHorizontalReachability =
|
final int newPositionForHorizontalReachability =
|
||||||
mLetterboxConfigurationPersister.getLetterboxPositionForHorizontalReachability(
|
firstPersister.getLetterboxPositionForHorizontalReachability(false);
|
||||||
false);
|
|
||||||
final int newPositionForVerticalReachability =
|
final int newPositionForVerticalReachability =
|
||||||
mLetterboxConfigurationPersister.getLetterboxPositionForVerticalReachability(false);
|
firstPersister.getLetterboxPositionForVerticalReachability(false);
|
||||||
Assert.assertEquals(LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT,
|
Assert.assertEquals(LETTERBOX_HORIZONTAL_REACHABILITY_POSITION_LEFT,
|
||||||
newPositionForHorizontalReachability);
|
newPositionForHorizontalReachability);
|
||||||
Assert.assertEquals(LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP,
|
Assert.assertEquals(LETTERBOX_VERTICAL_REACHABILITY_POSITION_TOP,
|
||||||
newPositionForVerticalReachability);
|
newPositionForVerticalReachability);
|
||||||
deleteConfiguration(mLetterboxConfigurationPersister, mPersisterQueue);
|
deleteConfiguration(firstPersister, firstPersisterQueue);
|
||||||
waitForCompletion(mPersisterQueue);
|
waitForCompletion(firstPersisterQueue);
|
||||||
|
stopPersisterSafe(firstPersisterQueue);
|
||||||
|
|
||||||
|
final PersisterQueue secondPersisterQueue = new PersisterQueue();
|
||||||
|
final LetterboxConfigurationPersister secondPersister = new LetterboxConfigurationPersister(
|
||||||
|
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
|
||||||
|
DEFAULT_REACHABILITY_SUPPLIER_TEST, DEFAULT_REACHABILITY_SUPPLIER_TEST,
|
||||||
|
mContext.getFilesDir(), secondPersisterQueue, mQueueState,
|
||||||
|
LETTERBOX_CONFIGURATION_TEST_FILENAME);
|
||||||
|
secondPersister.start();
|
||||||
final int positionForHorizontalReachability =
|
final int positionForHorizontalReachability =
|
||||||
mLetterboxConfigurationPersister.getLetterboxPositionForHorizontalReachability(
|
secondPersister.getLetterboxPositionForHorizontalReachability(false);
|
||||||
false);
|
|
||||||
final int defaultPositionForHorizontalReachability =
|
|
||||||
mContext.getResources().getInteger(
|
|
||||||
R.integer.config_letterboxDefaultPositionForHorizontalReachability);
|
|
||||||
Assert.assertEquals(defaultPositionForHorizontalReachability,
|
|
||||||
positionForHorizontalReachability);
|
|
||||||
final int positionForVerticalReachability =
|
final int positionForVerticalReachability =
|
||||||
mLetterboxConfigurationPersister.getLetterboxPositionForVerticalReachability(false);
|
secondPersister.getLetterboxPositionForVerticalReachability(false);
|
||||||
final int defaultPositionForVerticalReachability =
|
Assert.assertEquals(DEFAULT_REACHABILITY_TEST, positionForHorizontalReachability);
|
||||||
mContext.getResources().getInteger(
|
Assert.assertEquals(DEFAULT_REACHABILITY_TEST, positionForVerticalReachability);
|
||||||
R.integer.config_letterboxDefaultPositionForVerticalReachability);
|
deleteConfiguration(secondPersister, secondPersisterQueue);
|
||||||
Assert.assertEquals(defaultPositionForVerticalReachability,
|
waitForCompletion(secondPersisterQueue);
|
||||||
positionForVerticalReachability);
|
stopPersisterSafe(secondPersisterQueue);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void stopPersisterSafe(PersisterQueue persisterQueue) {
|
private void stopPersisterSafe(PersisterQueue persisterQueue) {
|
||||||
@@ -222,7 +248,7 @@ public class LetterboxConfigurationPersisterTest {
|
|||||||
private void deleteConfiguration(LetterboxConfigurationPersister persister,
|
private void deleteConfiguration(LetterboxConfigurationPersister persister,
|
||||||
PersisterQueue persisterQueue) {
|
PersisterQueue persisterQueue) {
|
||||||
final AtomicFile fileToDelete = new AtomicFile(
|
final AtomicFile fileToDelete = new AtomicFile(
|
||||||
new File(mConfigFolder, LETTERBOX_CONFIGURATION_FILENAME));
|
new File(mConfigFolder, LETTERBOX_CONFIGURATION_TEST_FILENAME));
|
||||||
persisterQueue.addItem(
|
persisterQueue.addItem(
|
||||||
new DeleteFileCommand(fileToDelete, mQueueState.andThen(
|
new DeleteFileCommand(fileToDelete, mQueueState.andThen(
|
||||||
s -> persister.useDefaultValue())), true);
|
s -> persister.useDefaultValue())), true);
|
||||||
|
|||||||
Reference in New Issue
Block a user