Merge "Add media item info to editing metrics" into main
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
index e3012cd..249fa7f 100644
--- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
+++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
@@ -1621,6 +1621,7 @@
}
public static class AppEntry extends SizeInfo {
+ @VisibleForTesting String mProfileType;
@Nullable public final File apkFile;
public final long id;
public String label;
@@ -1647,11 +1648,6 @@
*/
public boolean isHomeApp;
- /**
- * Whether or not it's a cloned app .
- */
- public boolean isCloned;
-
public String getNormalizedLabel() {
if (normalizedLabel != null) {
return normalizedLabel;
@@ -1692,11 +1688,21 @@
() -> this.ensureLabelDescriptionLocked(context));
}
UserManager um = UserManager.get(context);
- this.showInPersonalTab = shouldShowInPersonalTab(um, info.uid);
UserInfo userInfo = um.getUserInfo(UserHandle.getUserId(info.uid));
- if (userInfo != null) {
- this.isCloned = userInfo.isCloneProfile();
- }
+ mProfileType = userInfo.userType;
+ this.showInPersonalTab = shouldShowInPersonalTab(um, info.uid);
+ }
+
+ public boolean isClonedProfile() {
+ return UserManager.USER_TYPE_PROFILE_CLONE.equals(mProfileType);
+ }
+
+ public boolean isManagedProfile() {
+ return UserManager.USER_TYPE_PROFILE_MANAGED.equals(mProfileType);
+ }
+
+ public boolean isPrivateProfile() {
+ return UserManager.USER_TYPE_PROFILE_PRIVATE.equals(mProfileType);
}
/**
@@ -1890,16 +1896,24 @@
};
public static final AppFilter FILTER_WORK = new AppFilter() {
- private int mCurrentUser;
@Override
- public void init() {
- mCurrentUser = ActivityManager.getCurrentUser();
- }
+ public void init() {}
@Override
public boolean filterApp(AppEntry entry) {
- return !entry.showInPersonalTab;
+ return !entry.showInPersonalTab && entry.isManagedProfile();
+ }
+ };
+
+ public static final AppFilter FILTER_PRIVATE_PROFILE = new AppFilter() {
+
+ @Override
+ public void init() {}
+
+ @Override
+ public boolean filterApp(AppEntry entry) {
+ return !entry.showInPersonalTab && entry.isPrivateProfile();
}
};
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/applications/ApplicationsStateTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/applications/ApplicationsStateTest.java
index c5598bf..213a66e 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/applications/ApplicationsStateTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/applications/ApplicationsStateTest.java
@@ -22,6 +22,7 @@
import static org.mockito.Mockito.when;
import android.content.pm.ApplicationInfo;
+import android.os.UserManager;
import org.junit.Before;
import org.junit.Test;
@@ -297,11 +298,26 @@
@Test
public void testPersonalAndWorkFiltersDisplaysCorrectApps() {
mEntry.showInPersonalTab = true;
+ mEntry.mProfileType = UserManager.USER_TYPE_FULL_SYSTEM;
assertThat(ApplicationsState.FILTER_PERSONAL.filterApp(mEntry)).isTrue();
assertThat(ApplicationsState.FILTER_WORK.filterApp(mEntry)).isFalse();
mEntry.showInPersonalTab = false;
+ mEntry.mProfileType = UserManager.USER_TYPE_PROFILE_MANAGED;
assertThat(ApplicationsState.FILTER_PERSONAL.filterApp(mEntry)).isFalse();
assertThat(ApplicationsState.FILTER_WORK.filterApp(mEntry)).isTrue();
}
+
+ @Test
+ public void testPrivateProfileFilterDisplaysCorrectApps() {
+ mEntry.showInPersonalTab = true;
+ mEntry.mProfileType = UserManager.USER_TYPE_FULL_SYSTEM;
+ assertThat(ApplicationsState.FILTER_PERSONAL.filterApp(mEntry)).isTrue();
+ assertThat(ApplicationsState.FILTER_PRIVATE_PROFILE.filterApp(mEntry)).isFalse();
+
+ mEntry.showInPersonalTab = false;
+ mEntry.mProfileType = UserManager.USER_TYPE_PROFILE_PRIVATE;
+ assertThat(ApplicationsState.FILTER_PERSONAL.filterApp(mEntry)).isFalse();
+ assertThat(ApplicationsState.FILTER_PRIVATE_PROFILE.filterApp(mEntry)).isTrue();
+ }
}
diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
index cec7a79..5d415c2 100644
--- a/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
+++ b/services/core/java/com/android/server/media/MediaRoute2ProviderServiceProxy.java
@@ -200,7 +200,9 @@
Slog.d(TAG, this + ": Starting");
}
mRunning = true;
- updateBinding();
+ if (!Flags.enablePreventionOfKeepAliveRouteProviders()) {
+ updateBinding();
+ }
}
if (rebindIfDisconnected && mActiveConnection == null && shouldBind()) {
unbind();
diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderWatcher.java b/services/core/java/com/android/server/media/MediaRoute2ProviderWatcher.java
index 233a3ab..fcca94b 100644
--- a/services/core/java/com/android/server/media/MediaRoute2ProviderWatcher.java
+++ b/services/core/java/com/android/server/media/MediaRoute2ProviderWatcher.java
@@ -150,7 +150,9 @@
mCallback.onAddProviderService(proxy);
} else if (sourceIndex >= targetIndex) {
MediaRoute2ProviderServiceProxy proxy = mProxies.get(sourceIndex);
- proxy.start(/* rebindIfDisconnected= */ true); // restart the proxy if needed
+ proxy.start(
+ /* rebindIfDisconnected= */
+ !Flags.enablePreventionOfKeepAliveRouteProviders());
Collections.swap(mProxies, sourceIndex, targetIndex++);
}
}