Merge "Unregister transport when user disables corresponding package. Register transport when user puts package in default enable state."

This commit is contained in:
Piyush Mehrotra
2022-08-10 18:15:34 +00:00
committed by Android (Google) Code Review
2 changed files with 56 additions and 6 deletions

View File

@@ -16,7 +16,9 @@
package com.android.server.backup;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
import android.annotation.Nullable;
@@ -166,6 +168,17 @@ public class TransportManager {
onPackageEnabled(packageName);
return;
}
case COMPONENT_ENABLED_STATE_DEFAULT: {
// Package is set to its default enabled state (as specified in its manifest).
// Unless explicitly specified in manifest, the default enabled state
// is 'enabled'. Here, we assume that default state always means enabled.
if (MORE_DEBUG) {
Slog.d(TAG, "Package " + packageName
+ " was put in default enabled state.");
}
onPackageEnabled(packageName);
return;
}
case COMPONENT_ENABLED_STATE_DISABLED: {
if (MORE_DEBUG) {
Slog.d(TAG, "Package " + packageName + " was disabled.");
@@ -173,6 +186,13 @@ public class TransportManager {
onPackageDisabled(packageName);
return;
}
case COMPONENT_ENABLED_STATE_DISABLED_USER: {
if (MORE_DEBUG) {
Slog.d(TAG, "Package " + packageName + " was disabled by user.");
}
onPackageDisabled(packageName);
return;
}
default: {
Slog.w(TAG, "Package " + packageName + " enabled setting: " + enabled);
return;

View File

@@ -18,6 +18,7 @@ package com.android.server.backup;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER;
import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED;
import static com.android.server.backup.testing.TransportData.genericTransport;
@@ -326,7 +327,25 @@ public class TransportManagerTest {
.setApplicationEnabledSetting(
PACKAGE_A,
Integer.valueOf(COMPONENT_ENABLED_STATE_DISABLED),
0 /*flags*/);
/* flags */ 0);
transportManager.onPackageChanged(PACKAGE_A, PACKAGE_A);
assertRegisteredTransports(transportManager, singletonList(mTransportB1));
verify(mListener, never()).onTransportRegistered(any(), any());
}
@Test
public void testOnPackageChanged_whenPackageChanged_packageDisabledByUserUnregistersTransport()
throws Exception {
TransportManager transportManager =
createTransportManagerWithRegisteredTransports(mTransportA1, mTransportB1);
reset(mListener);
mContext.getPackageManager()
.setApplicationEnabledSetting(
PACKAGE_A,
Integer.valueOf(COMPONENT_ENABLED_STATE_DISABLED_USER),
/* flags */ 0);
transportManager.onPackageChanged(PACKAGE_A, PACKAGE_A);
assertRegisteredTransports(transportManager, singletonList(mTransportB1));
@@ -344,7 +363,7 @@ public class TransportManagerTest {
.setApplicationEnabledSetting(
PACKAGE_A,
Integer.valueOf(COMPONENT_ENABLED_STATE_DISABLED),
0 /*flags*/);
/* flags */ 0);
transportManager.onPackageChanged(PACKAGE_A, PACKAGE_A);
assertRegisteredTransports(transportManager, singletonList(mTransportB1));
@@ -354,7 +373,7 @@ public class TransportManagerTest {
.setApplicationEnabledSetting(
PACKAGE_A,
Integer.valueOf(COMPONENT_ENABLED_STATE_ENABLED),
0 /*flags*/);
/* flags */ 0);
transportManager.onPackageChanged(PACKAGE_A, PACKAGE_A);
assertRegisteredTransports(transportManager, asList(mTransportA1, mTransportB1));
@@ -363,21 +382,32 @@ public class TransportManagerTest {
}
@Test
public void testOnPackageChanged_whenPackageChanged_unknownComponentStateIsIgnored()
public void testOnPackageChanged_whenPackageChanged_packageDefaultEnabledRegistersTransport()
throws Exception {
TransportManager transportManager =
createTransportManagerWithRegisteredTransports(mTransportA1, mTransportB1);
reset(mListener);
mContext.getPackageManager()
.setApplicationEnabledSetting(
PACKAGE_A,
Integer.valueOf(COMPONENT_ENABLED_STATE_DISABLED_USER),
/* flags */ 0);
transportManager.onPackageChanged(PACKAGE_A, PACKAGE_A);
assertRegisteredTransports(transportManager, singletonList(mTransportB1));
verify(mListener, never()).onTransportRegistered(any(), any());
mContext.getPackageManager()
.setApplicationEnabledSetting(
PACKAGE_A,
Integer.valueOf(COMPONENT_ENABLED_STATE_DEFAULT),
0 /*flags*/);
/* flags */ 0);
transportManager.onPackageChanged(PACKAGE_A, PACKAGE_A);
assertRegisteredTransports(transportManager, asList(mTransportA1, mTransportB1));
verify(mListener, never()).onTransportRegistered(any(), any());
verify(mListener)
.onTransportRegistered(mTransportA1.transportName, mTransportA1.transportDirName);
}
@Test