Bug 914740 - Reland drawable and -moz-icon changes. r=mfinkle DONTBUILD

This commit is contained in:
Wes Johnston
2013-10-15 10:40:57 -07:00
parent 950bb350ab
commit b8baf9d994

View File

@@ -27,6 +27,7 @@ import org.mozilla.gecko.R;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.NoSuchFieldException;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
@@ -81,6 +82,19 @@ public final class BitmapUtils {
return; return;
} }
if(data.startsWith("-moz-icon://")) {
Uri imageUri = Uri.parse(data);
String resource = imageUri.getSchemeSpecificPart();
resource = resource.substring(resource.lastIndexOf('/') + 1);
try {
Drawable d = context.getPackageManager().getApplicationIcon(resource);
loader.onBitmapFound(d);
} catch(Exception ex) { }
return;
}
if(data.startsWith("drawable://")) { if(data.startsWith("drawable://")) {
Uri imageUri = Uri.parse(data); Uri imageUri = Uri.parse(data);
int id = getResource(imageUri, R.drawable.ic_status_logo); int id = getResource(imageUri, R.drawable.ic_status_logo);
@@ -282,11 +296,34 @@ public final class BitmapUtils {
if ("drawable".equals(scheme)) { if ("drawable".equals(scheme)) {
String resource = resourceUrl.getSchemeSpecificPart(); String resource = resourceUrl.getSchemeSpecificPart();
resource = resource.substring(resource.lastIndexOf('/') + 1); resource = resource.substring(resource.lastIndexOf('/') + 1);
try {
return Integer.parseInt(resource);
} catch(NumberFormatException ex) {
// This isn't a resource id, try looking for a string
}
try { try {
final Class<R.drawable> drawableClass = R.drawable.class; final Class<R.drawable> drawableClass = R.drawable.class;
final Field f = drawableClass.getField(resource); final Field f = drawableClass.getField(resource);
icon = f.getInt(null); icon = f.getInt(null);
} catch (final Exception e) {} // just means the resource doesn't exist } catch (final NoSuchFieldException e1) {
// just means the resource doesn't exist for fennec. Check in Android resources
try {
final Class<android.R.drawable> drawableClass = android.R.drawable.class;
final Field f = drawableClass.getField(resource);
icon = f.getInt(null);
} catch (final NoSuchFieldException e2) {
// This drawable doesn't seem to exist...
} catch(Exception e3) {
Log.i(LOGTAG, "Exception getting drawable", e3);
}
} catch (Exception e4) {
Log.i(LOGTAG, "Exception getting drawable", e4);
}
resourceUrl = null; resourceUrl = null;
} }
return icon; return icon;