Merge "Stop loading other package's font by default." into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
824d75e0e1
@@ -2137,6 +2137,14 @@ class ContextImpl extends Context {
|
||||
return (mFlags & Context.CONTEXT_CREDENTIAL_PROTECTED_STORAGE) != 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canLoadUnsafeResources() {
|
||||
if (getPackageName().equals(getOpPackageName())) {
|
||||
return true;
|
||||
}
|
||||
return (mFlags & Context.CONTEXT_IGNORE_SECURITY) != 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Display getDisplay() {
|
||||
if (mDisplay == null) {
|
||||
|
||||
@@ -4657,6 +4657,12 @@ public abstract class Context {
|
||||
@SystemApi
|
||||
public abstract boolean isCredentialProtectedStorage();
|
||||
|
||||
/**
|
||||
* Returns true if the context can load unsafe resources, e.g. fonts.
|
||||
* @hide
|
||||
*/
|
||||
public abstract boolean canLoadUnsafeResources();
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
|
||||
@@ -920,6 +920,12 @@ public class ContextWrapper extends Context {
|
||||
return mBase.isCredentialProtectedStorage();
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
@Override
|
||||
public boolean canLoadUnsafeResources() {
|
||||
return mBase.canLoadUnsafeResources();
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
|
||||
@@ -913,7 +913,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
||||
break;
|
||||
|
||||
case com.android.internal.R.styleable.TextAppearance_fontFamily:
|
||||
if (!context.isRestricted()) {
|
||||
if (!context.isRestricted() && context.canLoadUnsafeResources()) {
|
||||
try {
|
||||
fontTypeface = appearance.getFont(attr);
|
||||
} catch (UnsupportedOperationException
|
||||
@@ -1233,7 +1233,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
||||
break;
|
||||
|
||||
case com.android.internal.R.styleable.TextView_fontFamily:
|
||||
if (!context.isRestricted()) {
|
||||
if (!context.isRestricted() && context.canLoadUnsafeResources()) {
|
||||
try {
|
||||
fontTypeface = a.getFont(attr);
|
||||
} catch (UnsupportedOperationException | Resources.NotFoundException e) {
|
||||
@@ -3417,7 +3417,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
||||
|
||||
Typeface fontTypeface = null;
|
||||
String fontFamily = null;
|
||||
if (!context.isRestricted()) {
|
||||
if (!context.isRestricted() && context.canLoadUnsafeResources()) {
|
||||
try {
|
||||
fontTypeface = ta.getFont(R.styleable.TextAppearance_fontFamily);
|
||||
} catch (UnsupportedOperationException | Resources.NotFoundException e) {
|
||||
|
||||
@@ -808,6 +808,12 @@ public class MockContext extends Context {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
@Override
|
||||
public boolean canLoadUnsafeResources() {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
/** {@hide} */
|
||||
@Override
|
||||
public IBinder getActivityToken() {
|
||||
|
||||
@@ -2008,6 +2008,11 @@ public class BridgeContext extends Context {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canLoadUnsafeResources() {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* The cached value depends on
|
||||
* <ol>
|
||||
|
||||
Reference in New Issue
Block a user