Merge "Prevent loading of Icon resources from the wrong package" into tm-dev am: e1e8b1b932 am: c4ebf2ba2a am: 3234afdaf3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19601344 Change-Id: Ic6f224287054df1fd6573ab620f7807cfeef43b0 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -25,6 +25,7 @@ import android.graphics.ImageDecoder;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.Icon;
|
||||
import android.net.Uri;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
import android.util.Size;
|
||||
|
||||
@@ -108,6 +109,12 @@ public class LocalImageResolver {
|
||||
}
|
||||
break;
|
||||
case Icon.TYPE_RESOURCE:
|
||||
if (!(TextUtils.isEmpty(icon.getResPackage())
|
||||
|| context.getPackageName().equals(icon.getResPackage()))) {
|
||||
// We can't properly resolve icons from other packages here, so fall back.
|
||||
return icon.loadDrawable(context);
|
||||
}
|
||||
|
||||
Drawable result = resolveImage(icon.getResId(), context, maxWidth, maxHeight);
|
||||
if (result != null) {
|
||||
return tintDrawable(icon, result);
|
||||
|
||||
@@ -270,4 +270,13 @@ public class LocalImageResolverTest {
|
||||
assertThat(bd.getBitmap().getHeight()).isEqualTo(originalHeight);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void resolveImage_iconWithOtherPackageResource_usesPackageContextDefinition()
|
||||
throws IOException {
|
||||
Icon icon = Icon.createWithResource("this_is_invalid", R.drawable.test32x24);
|
||||
Drawable d = LocalImageResolver.resolveImage(icon, mContext);
|
||||
// This drawable must not be loaded - if it was, the code ignored the package specification.
|
||||
assertThat(d).isNull();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user