Merge "Stop fetching font data if the context is restricted." into oc-dev

This commit is contained in:
TreeHugger Robot
2017-04-20 18:56:39 +00:00
committed by Android (Google) Code Review
4 changed files with 21 additions and 0 deletions

View File

@@ -34515,6 +34515,7 @@ package android.provider {
method public android.provider.FontsContract.FontInfo[] getFonts();
method public int getStatusCode();
field public static final int STATUS_OK = 0; // 0x0
field public static final int STATUS_REJECTED = 3; // 0x3
field public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2; // 0x2
field public static final int STATUS_WRONG_CERTIFICATES = 1; // 0x1
}

View File

@@ -37504,6 +37504,7 @@ package android.provider {
method public android.provider.FontsContract.FontInfo[] getFonts();
method public int getStatusCode();
field public static final int STATUS_OK = 0; // 0x0
field public static final int STATUS_REJECTED = 3; // 0x3
field public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2; // 0x2
field public static final int STATUS_WRONG_CERTIFICATES = 1; // 0x1
}

View File

@@ -34650,6 +34650,7 @@ package android.provider {
method public android.provider.FontsContract.FontInfo[] getFonts();
method public int getStatusCode();
field public static final int STATUS_OK = 0; // 0x0
field public static final int STATUS_REJECTED = 3; // 0x3
field public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2; // 0x2
field public static final int STATUS_WRONG_CERTIFICATES = 1; // 0x1
}

View File

@@ -287,6 +287,12 @@ public class FontsContract {
*/
public static final int STATUS_UNEXPECTED_DATA_PROVIDED = 2;
/**
* Constant represents that the fetching font data was rejected by system. This happens if
* the passed context is restricted.
*/
public static final int STATUS_REJECTED = 3;
/** @hide */
@IntDef({STATUS_OK, STATUS_WRONG_CERTIFICATES, STATUS_UNEXPECTED_DATA_PROVIDED})
@Retention(RetentionPolicy.SOURCE)
@@ -559,6 +565,10 @@ public class FontsContract {
public static @NonNull FontFamilyResult fetchFonts(
@NonNull Context context, @Nullable CancellationSignal cancellationSignal,
@NonNull FontRequest request) throws NameNotFoundException {
if (context.isRestricted()) {
// TODO: Should we allow if the peer process is system or myself?
return new FontFamilyResult(FontFamilyResult.STATUS_REJECTED, null);
}
ProviderInfo providerInfo = getProvider(context.getPackageManager(), request);
if (providerInfo == null) {
return new FontFamilyResult(FontFamilyResult.STATUS_WRONG_CERTIFICATES, null);
@@ -594,6 +604,10 @@ public class FontsContract {
public static Typeface buildTypeface(@NonNull Context context,
@Nullable CancellationSignal cancellationSignal, @NonNull FontInfo[] fonts,
int weight, boolean italic, @Nullable String fallbackFontName) {
if (context.isRestricted()) {
// TODO: Should we allow if the peer process is system or myself?
return null;
}
final Map<Uri, ByteBuffer> uriBuffer =
prepareFontData(context, fonts, cancellationSignal);
return new Typeface.Builder(fonts, uriBuffer)
@@ -617,6 +631,10 @@ public class FontsContract {
*/
public static Typeface buildTypeface(@NonNull Context context,
@Nullable CancellationSignal cancellationSignal, @NonNull FontInfo[] fonts) {
if (context.isRestricted()) {
// TODO: Should we allow if the peer process is system or myself?
return null;
}
final Map<Uri, ByteBuffer> uriBuffer =
prepareFontData(context, fonts, cancellationSignal);
return new Typeface.Builder(fonts, uriBuffer).build();