Merge "Stop loading other package's font by default." into oc-dev

This commit is contained in:
TreeHugger Robot
2017-06-23 04:10:42 +00:00
committed by Android (Google) Code Review
6 changed files with 34 additions and 3 deletions

View File

@@ -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) {

View File

@@ -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
*/

View File

@@ -920,6 +920,12 @@ public class ContextWrapper extends Context {
return mBase.isCredentialProtectedStorage();
}
/** {@hide} */
@Override
public boolean canLoadUnsafeResources() {
return mBase.canLoadUnsafeResources();
}
/**
* @hide
*/

View File

@@ -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) {

View File

@@ -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() {

View File

@@ -2008,6 +2008,11 @@ public class BridgeContext extends Context {
return false;
}
@Override
public boolean canLoadUnsafeResources() {
return false;
}
/**
* The cached value depends on
* <ol>