Loading core/java/android/app/Notification.java +3 −3 Original line number Diff line number Diff line Loading @@ -184,7 +184,7 @@ public class Notification implements Parcelable * <p> * Avoids spamming the system with overly large strings such as full e-mails. */ private static final int MAX_CHARSEQUENCE_LENGTH = 5 * 1024; private static final int MAX_CHARSEQUENCE_LENGTH = 1024; /** * Maximum entries of reply text that are accepted by Builder and friends. Loading Loading @@ -6278,7 +6278,7 @@ public class Notification implements Parcelable * consistent during re-posts of the notification. */ public Message(CharSequence text, long timestamp, CharSequence sender){ mText = text; mText = safeCharSequence(text); mTimestamp = timestamp; mSender = sender; } Loading Loading @@ -6367,7 +6367,7 @@ public class Notification implements Parcelable } bundle.putLong(KEY_TIMESTAMP, mTimestamp); if (mSender != null) { bundle.putCharSequence(KEY_SENDER, mSender); bundle.putCharSequence(KEY_SENDER, safeCharSequence(mSender)); } if (mDataMimeType != null) { bundle.putString(KEY_DATA_MIME_TYPE, mDataMimeType); Loading core/java/android/os/LocaleList.java +6 −5 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.icu.util.ULocale; import com.android.internal.annotations.GuardedBy; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; Loading Loading @@ -150,18 +151,18 @@ public final class LocaleList implements Parcelable { /** * Creates a new {@link LocaleList}. * * If two or more same locales are passed, the repeated locales will be dropped. * <p>For empty lists of {@link Locale} items it is better to use {@link #getEmptyLocaleList()}, * which returns a pre-constructed empty list.</p> * * @throws NullPointerException if any of the input locales is <code>null</code>. * @throws IllegalArgumentException if any of the input locales repeat. */ public LocaleList(@NonNull Locale... list) { if (list.length == 0) { mList = sEmptyList; mStringRepresentation = ""; } else { final Locale[] localeList = new Locale[list.length]; final ArrayList<Locale> localeList = new ArrayList<>(); final HashSet<Locale> seenLocales = new HashSet<Locale>(); final StringBuilder sb = new StringBuilder(); for (int i = 0; i < list.length; i++) { Loading @@ -169,10 +170,10 @@ public final class LocaleList implements Parcelable { if (l == null) { throw new NullPointerException("list[" + i + "] is null"); } else if (seenLocales.contains(l)) { throw new IllegalArgumentException("list[" + i + "] is a repetition"); // Dropping duplicated locale entries. } else { final Locale localeClone = (Locale) l.clone(); localeList[i] = localeClone; localeList.add(localeClone); sb.append(localeClone.toLanguageTag()); if (i < list.length - 1) { sb.append(','); Loading @@ -180,7 +181,7 @@ public final class LocaleList implements Parcelable { seenLocales.add(localeClone); } } mList = localeList; mList = localeList.toArray(new Locale[localeList.size()]); mStringRepresentation = sb.toString(); } } Loading services/core/java/com/android/server/pm/PackageManagerService.java +20 −9 Original line number Diff line number Diff line Loading @@ -3696,13 +3696,10 @@ public class PackageManagerService extends IPackageManager.Stub Iterator<ResolveInfo> iter = matches.iterator(); while (iter.hasNext()) { final ResolveInfo rInfo = iter.next(); final PackageSetting ps = mSettings.mPackages.get(rInfo.activityInfo.packageName); if (ps != null) { final PermissionsState permissionsState = ps.getPermissionsState(); if (permissionsState.hasPermission(Manifest.permission.INSTALL_PACKAGES, 0)) { if (checkPermission(Manifest.permission.INSTALL_PACKAGES, rInfo.activityInfo.packageName, 0) == PERMISSION_GRANTED) { continue; } } iter.remove(); } if (matches.size() == 0) { Loading Loading @@ -3949,9 +3946,24 @@ public class PackageManagerService extends IPackageManager.Stub final int[] gids = (flags & PackageManager.GET_GIDS) == 0 ? EMPTY_INT_ARRAY : permissionsState.computeGids(userId); // Compute granted permissions only if package has requested permissions final Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions) Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions) ? Collections.<String>emptySet() : permissionsState.getPermissions(userId); final PackageUserState state = ps.readUserState(userId); if (state.instantApp) { permissions = new ArraySet<>(permissions); permissions.removeIf(permissionName -> { BasePermission permission = mSettings.mPermissions.get(permissionName); if (permission == null) { return true; } if (!permission.isInstant()) { EventLog.writeEvent(0x534e4554, "140256621", UserHandle.getUid(userId, ps.appId), permissionName); return true; } return false; }); } if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0 && ps.isSystem()) { Loading Loading @@ -8762,10 +8774,9 @@ public class PackageManagerService extends IPackageManager.Stub private void addPackageHoldingPermissions(ArrayList<PackageInfo> list, PackageSetting ps, String[] permissions, boolean[] tmp, int flags, int userId) { int numMatch = 0; final PermissionsState permissionsState = ps.getPermissionsState(); for (int i=0; i<permissions.length; i++) { final String permission = permissions[i]; if (permissionsState.hasPermission(permission, userId)) { if (checkPermission(permission, ps.name, userId) == PERMISSION_GRANTED) { tmp[i] = true; numMatch++; } else { Loading
core/java/android/app/Notification.java +3 −3 Original line number Diff line number Diff line Loading @@ -184,7 +184,7 @@ public class Notification implements Parcelable * <p> * Avoids spamming the system with overly large strings such as full e-mails. */ private static final int MAX_CHARSEQUENCE_LENGTH = 5 * 1024; private static final int MAX_CHARSEQUENCE_LENGTH = 1024; /** * Maximum entries of reply text that are accepted by Builder and friends. Loading Loading @@ -6278,7 +6278,7 @@ public class Notification implements Parcelable * consistent during re-posts of the notification. */ public Message(CharSequence text, long timestamp, CharSequence sender){ mText = text; mText = safeCharSequence(text); mTimestamp = timestamp; mSender = sender; } Loading Loading @@ -6367,7 +6367,7 @@ public class Notification implements Parcelable } bundle.putLong(KEY_TIMESTAMP, mTimestamp); if (mSender != null) { bundle.putCharSequence(KEY_SENDER, mSender); bundle.putCharSequence(KEY_SENDER, safeCharSequence(mSender)); } if (mDataMimeType != null) { bundle.putString(KEY_DATA_MIME_TYPE, mDataMimeType); Loading
core/java/android/os/LocaleList.java +6 −5 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.icu.util.ULocale; import com.android.internal.annotations.GuardedBy; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; Loading Loading @@ -150,18 +151,18 @@ public final class LocaleList implements Parcelable { /** * Creates a new {@link LocaleList}. * * If two or more same locales are passed, the repeated locales will be dropped. * <p>For empty lists of {@link Locale} items it is better to use {@link #getEmptyLocaleList()}, * which returns a pre-constructed empty list.</p> * * @throws NullPointerException if any of the input locales is <code>null</code>. * @throws IllegalArgumentException if any of the input locales repeat. */ public LocaleList(@NonNull Locale... list) { if (list.length == 0) { mList = sEmptyList; mStringRepresentation = ""; } else { final Locale[] localeList = new Locale[list.length]; final ArrayList<Locale> localeList = new ArrayList<>(); final HashSet<Locale> seenLocales = new HashSet<Locale>(); final StringBuilder sb = new StringBuilder(); for (int i = 0; i < list.length; i++) { Loading @@ -169,10 +170,10 @@ public final class LocaleList implements Parcelable { if (l == null) { throw new NullPointerException("list[" + i + "] is null"); } else if (seenLocales.contains(l)) { throw new IllegalArgumentException("list[" + i + "] is a repetition"); // Dropping duplicated locale entries. } else { final Locale localeClone = (Locale) l.clone(); localeList[i] = localeClone; localeList.add(localeClone); sb.append(localeClone.toLanguageTag()); if (i < list.length - 1) { sb.append(','); Loading @@ -180,7 +181,7 @@ public final class LocaleList implements Parcelable { seenLocales.add(localeClone); } } mList = localeList; mList = localeList.toArray(new Locale[localeList.size()]); mStringRepresentation = sb.toString(); } } Loading
services/core/java/com/android/server/pm/PackageManagerService.java +20 −9 Original line number Diff line number Diff line Loading @@ -3696,13 +3696,10 @@ public class PackageManagerService extends IPackageManager.Stub Iterator<ResolveInfo> iter = matches.iterator(); while (iter.hasNext()) { final ResolveInfo rInfo = iter.next(); final PackageSetting ps = mSettings.mPackages.get(rInfo.activityInfo.packageName); if (ps != null) { final PermissionsState permissionsState = ps.getPermissionsState(); if (permissionsState.hasPermission(Manifest.permission.INSTALL_PACKAGES, 0)) { if (checkPermission(Manifest.permission.INSTALL_PACKAGES, rInfo.activityInfo.packageName, 0) == PERMISSION_GRANTED) { continue; } } iter.remove(); } if (matches.size() == 0) { Loading Loading @@ -3949,9 +3946,24 @@ public class PackageManagerService extends IPackageManager.Stub final int[] gids = (flags & PackageManager.GET_GIDS) == 0 ? EMPTY_INT_ARRAY : permissionsState.computeGids(userId); // Compute granted permissions only if package has requested permissions final Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions) Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions) ? Collections.<String>emptySet() : permissionsState.getPermissions(userId); final PackageUserState state = ps.readUserState(userId); if (state.instantApp) { permissions = new ArraySet<>(permissions); permissions.removeIf(permissionName -> { BasePermission permission = mSettings.mPermissions.get(permissionName); if (permission == null) { return true; } if (!permission.isInstant()) { EventLog.writeEvent(0x534e4554, "140256621", UserHandle.getUid(userId, ps.appId), permissionName); return true; } return false; }); } if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0 && ps.isSystem()) { Loading Loading @@ -8762,10 +8774,9 @@ public class PackageManagerService extends IPackageManager.Stub private void addPackageHoldingPermissions(ArrayList<PackageInfo> list, PackageSetting ps, String[] permissions, boolean[] tmp, int flags, int userId) { int numMatch = 0; final PermissionsState permissionsState = ps.getPermissionsState(); for (int i=0; i<permissions.length; i++) { final String permission = permissions[i]; if (permissionsState.hasPermission(permission, userId)) { if (checkPermission(permission, ps.name, userId) == PERMISSION_GRANTED) { tmp[i] = true; numMatch++; } else {