Improved favicon selection

pull/207/head
M66B 3 years ago
parent 5cda73e58c
commit 025aefea7d

@ -479,6 +479,15 @@ public class ContactInfo {
} }
})); }));
int dot = host.indexOf('.');
host = host.substring(dot + 1);
}
host = domain;
while (host.indexOf('.') > 0) {
final URL base = new URL("https://" + host);
final URL www = new URL("https://www." + host);
futures.add(executorFavicon.submit(new Callable<Favicon>() { futures.add(executorFavicon.submit(new Callable<Favicon>() {
@Override @Override
public Favicon call() throws Exception { public Favicon call() throws Exception {
@ -502,25 +511,28 @@ public class ContactInfo {
for (Future<Favicon> future : futures) for (Future<Favicon> future : futures)
try { try {
Favicon favicon = future.get(); Favicon favicon = future.get();
if (favicon != null) { Log.i("Using favicon source=" + (favicon == null ? null : favicon.source));
float lum = 0; // ImageHelper.getLuminance(favicon.bitmap);
if (lum < MIN_FAVICON_LUMINANCE) { if (favicon == null)
Bitmap bitmap = Bitmap.createBitmap( continue;
favicon.bitmap.getWidth(),
favicon.bitmap.getHeight(), float lum = 0; // ImageHelper.getLuminance(favicon.bitmap);
favicon.bitmap.getConfig()); if (lum < MIN_FAVICON_LUMINANCE) {
bitmap.eraseColor(Color.WHITE); Bitmap bitmap = Bitmap.createBitmap(
Canvas canvas = new Canvas(bitmap); favicon.bitmap.getWidth(),
canvas.drawBitmap(favicon.bitmap, 0, 0, null); favicon.bitmap.getHeight(),
favicon.bitmap.recycle(); favicon.bitmap.getConfig());
favicon.bitmap = bitmap; bitmap.eraseColor(Color.WHITE);
} Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(favicon.bitmap, 0, 0, null);
info.bitmap = favicon.bitmap; favicon.bitmap.recycle();
info.type = favicon.type; favicon.bitmap = bitmap;
info.verified = favicon.verified;
break;
} }
info.bitmap = favicon.bitmap;
info.type = favicon.type;
info.verified = favicon.verified;
break;
} catch (ExecutionException exex) { } catch (ExecutionException exex) {
ex = exex.getCause(); ex = exex.getCause();
} catch (Throwable exex) { } catch (Throwable exex) {
@ -865,7 +877,7 @@ public class ContactInfo {
Bitmap bitmap = ImageHelper.getScaledBitmap(connection.getInputStream(), url.toString(), mimeType, scaleToPixels); Bitmap bitmap = ImageHelper.getScaledBitmap(connection.getInputStream(), url.toString(), mimeType, scaleToPixels);
if (bitmap == null) if (bitmap == null)
throw new FileNotFoundException("decodeStream"); throw new FileNotFoundException("decodeStream");
return new Favicon(bitmap); return new Favicon(bitmap, url.toString());
} finally { } finally {
connection.disconnect(); connection.disconnect();
} }
@ -1053,15 +1065,18 @@ public class ContactInfo {
private Bitmap bitmap; private Bitmap bitmap;
private String type; private String type;
private boolean verified; private boolean verified;
private String source;
private Favicon(@NonNull Bitmap bitmap) { private Favicon(@NonNull Bitmap bitmap, String source) {
this(bitmap, "favicon", false); this(bitmap, "favicon", false);
this.source = source;
} }
private Favicon(@NonNull Bitmap bitmap, String type, boolean verified) { private Favicon(@NonNull Bitmap bitmap, String type, boolean verified) {
this.bitmap = bitmap; this.bitmap = bitmap;
this.type = type; this.type = type;
this.verified = verified; this.verified = verified;
this.source = type;
} }
} }
} }

Loading…
Cancel
Save