Snap for 7255997 from 1568caedd4 to rvc-qpr3-release
Change-Id: I29d11383e42fed8c4ec053fe54d9e76289d17716
This commit is contained in:
@@ -60,6 +60,7 @@
|
||||
android:layout_width="@dimen/keyguard_security_width"
|
||||
android:layout_height="@dimen/pin_entry_height"
|
||||
android:gravity="center"
|
||||
android:focusedByDefault="true"
|
||||
app:scaledTextSize="@integer/password_text_view_scale"
|
||||
android:contentDescription="@string/keyguard_accessibility_pin_area" />
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
android:layout_width="@dimen/keyguard_security_width"
|
||||
android:layout_height="@dimen/pin_entry_height"
|
||||
android:gravity="center"
|
||||
android:focusedByDefault="true"
|
||||
app:scaledTextSize="@integer/password_text_view_scale"
|
||||
android:contentDescription="@string/keyguard_accessibility_pin_area" />
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.systemui.media;
|
||||
|
||||
import static android.app.Notification.safeCharSequence;
|
||||
import static android.provider.Settings.ACTION_MEDIA_CONTROLS_SETTINGS;
|
||||
|
||||
import android.app.PendingIntent;
|
||||
@@ -261,7 +262,7 @@ public class MediaControlPanel {
|
||||
|
||||
// Song name
|
||||
TextView titleText = mViewHolder.getTitleText();
|
||||
titleText.setText(data.getSong());
|
||||
titleText.setText(safeCharSequence(data.getSong()));
|
||||
|
||||
// App title
|
||||
TextView appName = mViewHolder.getAppName();
|
||||
@@ -269,7 +270,7 @@ public class MediaControlPanel {
|
||||
|
||||
// Artist name
|
||||
TextView artistText = mViewHolder.getArtistText();
|
||||
artistText.setText(data.getArtist());
|
||||
artistText.setText(safeCharSequence(data.getArtist()));
|
||||
|
||||
// Transfer chip
|
||||
mViewHolder.getSeamless().setVisibility(View.VISIBLE);
|
||||
|
||||
@@ -33,6 +33,7 @@ import android.graphics.Color;
|
||||
import android.graphics.ColorMatrixColorFilter;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.Icon;
|
||||
import android.os.Parcelable;
|
||||
@@ -83,8 +84,15 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi
|
||||
public static final int STATE_DOT = 1;
|
||||
public static final int STATE_HIDDEN = 2;
|
||||
|
||||
/** Maximum allowed width or height for an icon drawable */
|
||||
private static final int MAX_IMAGE_SIZE = 500;
|
||||
/**
|
||||
* Maximum allowed byte count for an icon bitmap
|
||||
* @see android.graphics.RecordingCanvas.MAX_BITMAP_SIZE
|
||||
*/
|
||||
private static final int MAX_BITMAP_SIZE = 100 * 1024 * 1024; // 100 MB
|
||||
/**
|
||||
* Maximum allowed width or height for an icon drawable, if we can't get byte count
|
||||
*/
|
||||
private static final int MAX_IMAGE_SIZE = 5000;
|
||||
|
||||
private static final String TAG = "StatusBarIconView";
|
||||
private static final Property<StatusBarIconView, Float> ICON_APPEAR_AMOUNT
|
||||
@@ -382,9 +390,18 @@ public class StatusBarIconView extends AnimatedImageView implements StatusIconDi
|
||||
return false;
|
||||
}
|
||||
|
||||
if (drawable.getIntrinsicWidth() > MAX_IMAGE_SIZE
|
||||
if (drawable instanceof BitmapDrawable && ((BitmapDrawable) drawable).getBitmap() != null) {
|
||||
// If it's a bitmap we can check the size directly
|
||||
int byteCount = ((BitmapDrawable) drawable).getBitmap().getByteCount();
|
||||
if (byteCount > MAX_BITMAP_SIZE) {
|
||||
Log.w(TAG, "Drawable is too large (" + byteCount + " bytes) " + mIcon);
|
||||
return false;
|
||||
}
|
||||
} else if (drawable.getIntrinsicWidth() > MAX_IMAGE_SIZE
|
||||
|| drawable.getIntrinsicHeight() > MAX_IMAGE_SIZE) {
|
||||
Log.w(TAG, "Drawable is too large " + mIcon);
|
||||
// Otherwise, check dimensions
|
||||
Log.w(TAG, "Drawable is too large (" + drawable.getIntrinsicWidth() + "x"
|
||||
+ drawable.getIntrinsicHeight() + ") " + mIcon);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ public class StatusBarIconViewTest extends SysuiTestCase {
|
||||
|
||||
@Test
|
||||
public void testGiantImageNotAllowed() {
|
||||
Bitmap largeBitmap = Bitmap.createBitmap(1000, 1000, Bitmap.Config.ARGB_8888);
|
||||
Bitmap largeBitmap = Bitmap.createBitmap(6000, 6000, Bitmap.Config.ARGB_8888);
|
||||
Icon icon = Icon.createWithBitmap(largeBitmap);
|
||||
StatusBarIcon largeIcon = new StatusBarIcon(UserHandle.ALL, "mockPackage",
|
||||
icon, 0, 0, "");
|
||||
|
||||
@@ -3067,23 +3067,19 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
|
||||
// Verify they're not lying about package name
|
||||
mAppOps.checkPackage(callingUid, callingPackage);
|
||||
|
||||
final SubscriptionManager sm;
|
||||
final SubscriptionInfo si;
|
||||
final PersistableBundle config;
|
||||
final TelephonyManager tm;
|
||||
final long token = Binder.clearCallingIdentity();
|
||||
try {
|
||||
sm = mContext.getSystemService(SubscriptionManager.class);
|
||||
si = sm.getActiveSubscriptionInfo(subId);
|
||||
config = mCarrierConfigManager.getConfigForSubId(subId);
|
||||
tm = mContext.getSystemService(TelephonyManager.class);
|
||||
} finally {
|
||||
Binder.restoreCallingIdentity(token);
|
||||
}
|
||||
|
||||
// First check: is caller the CarrierService?
|
||||
if (si != null) {
|
||||
if (si.isEmbedded() && sm.canManageSubscription(si, callingPackage)) {
|
||||
return;
|
||||
}
|
||||
// First check: does caller have carrier privilege?
|
||||
if (tm != null && tm.hasCarrierPrivileges(subId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Second check: has the CarrierService delegated access?
|
||||
|
||||
@@ -148,13 +148,14 @@ public class SubscriptionInfo implements Parcelable {
|
||||
|
||||
/**
|
||||
* The access rules for this subscription, if it is embedded and defines any.
|
||||
* This does not include access rules for non-embedded subscriptions.
|
||||
*/
|
||||
@Nullable
|
||||
private UiccAccessRule[] mNativeAccessRules;
|
||||
|
||||
/**
|
||||
* The carrier certificates for this subscription that are saved in carrier configs.
|
||||
* The other carrier certificates are embedded on Uicc and stored as part of mNativeAccessRules.
|
||||
* This does not include access rules from the Uicc, whether embedded or non-embedded.
|
||||
*/
|
||||
@Nullable
|
||||
private UiccAccessRule[] mCarrierConfigAccessRules;
|
||||
@@ -661,7 +662,6 @@ public class SubscriptionInfo implements Parcelable {
|
||||
* is authorized to manage this subscription.
|
||||
* TODO and fix it properly in R / master: either deprecate this and have 3 APIs
|
||||
* native + carrier + all, or have this return all by default.
|
||||
* @throws UnsupportedOperationException if this subscription is not embedded.
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
|
||||
@@ -2631,6 +2631,10 @@ public class SubscriptionManager {
|
||||
* Checks whether the app with the given context is authorized to manage the given subscription
|
||||
* according to its metadata.
|
||||
*
|
||||
* Only supported for embedded subscriptions (if {@link SubscriptionInfo#isEmbedded} returns
|
||||
* true). To check for permissions for non-embedded subscription as well,
|
||||
* {@see android.telephony.TelephonyManager#hasCarrierPrivileges}.
|
||||
*
|
||||
* @param info The subscription to check.
|
||||
* @return whether the app is authorized to manage this subscription per its metadata.
|
||||
*/
|
||||
@@ -2643,6 +2647,10 @@ public class SubscriptionManager {
|
||||
* be authorized if it is included in the {@link android.telephony.UiccAccessRule} of the
|
||||
* {@link android.telephony.SubscriptionInfo} with the access status.
|
||||
*
|
||||
* Only supported for embedded subscriptions (if {@link SubscriptionInfo#isEmbedded} returns
|
||||
* true). To check for permissions for non-embedded subscription as well,
|
||||
* {@see android.telephony.TelephonyManager#hasCarrierPrivileges}.
|
||||
*
|
||||
* @param info The subscription to check.
|
||||
* @param packageName Package name of the app to check.
|
||||
* @return whether the app is authorized to manage this subscription per its access rules.
|
||||
|
||||
@@ -8534,6 +8534,9 @@ public class TelephonyManager {
|
||||
* call will return true. This access is granted by the owner of the UICC
|
||||
* card and does not depend on the registered carrier.
|
||||
*
|
||||
* Note that this API applies to both physical and embedded subscriptions and
|
||||
* is a superset of the checks done in SubscriptionManager#canManageSubscription.
|
||||
*
|
||||
* @return true if the app has carrier privileges.
|
||||
*/
|
||||
public boolean hasCarrierPrivileges() {
|
||||
@@ -8547,6 +8550,9 @@ public class TelephonyManager {
|
||||
* call will return true. This access is granted by the owner of the UICC
|
||||
* card and does not depend on the registered carrier.
|
||||
*
|
||||
* Note that this API applies to both physical and embedded subscriptions and
|
||||
* is a superset of the checks done in SubscriptionManager#canManageSubscription.
|
||||
*
|
||||
* @param subId The subscription to use.
|
||||
* @return true if the app has carrier privileges.
|
||||
* @hide
|
||||
|
||||
Reference in New Issue
Block a user