Commit 44eb4b37 authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Commit Bot

Android: Monogram favicon for gesture navigation

Shows a monogram icon for the gesture navigation sheet items whose
favicon is not available.

Bug: 1001303
Change-Id: I62a4d47878e1ba15b012471e8c7056888b3c3b10
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1795539Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#696976}
parent 814331a8
...@@ -17,6 +17,8 @@ import org.chromium.chrome.R; ...@@ -17,6 +17,8 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.favicon.FaviconHelper; import org.chromium.chrome.browser.favicon.FaviconHelper;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.util.UrlConstants; import org.chromium.chrome.browser.util.UrlConstants;
import org.chromium.chrome.browser.util.ViewUtils;
import org.chromium.chrome.browser.widget.RoundedIconGenerator;
import org.chromium.chrome.browser.widget.TintedDrawable; import org.chromium.chrome.browser.widget.TintedDrawable;
import org.chromium.content_public.browser.NavigationEntry; import org.chromium.content_public.browser.NavigationEntry;
import org.chromium.content_public.browser.NavigationHistory; import org.chromium.content_public.browser.NavigationHistory;
...@@ -34,15 +36,14 @@ import java.util.Set; ...@@ -34,15 +36,14 @@ import java.util.Set;
* Mediattor class for navigation sheet. * Mediattor class for navigation sheet.
*/ */
class NavigationSheetMediator { class NavigationSheetMediator {
private final Context mContext;
private final ClickListener mClickListener; private final ClickListener mClickListener;
private final FaviconHelper mFaviconHelper; private final FaviconHelper mFaviconHelper;
private final RoundedIconGenerator mIconGenerator;
private final int mFaviconSize; private final int mFaviconSize;
private final ModelList mModelList; private final ModelList mModelList;
private final Drawable mHistoryIcon; private final Drawable mHistoryIcon;
private NavigationHistory mHistory; private NavigationHistory mHistory;
private FaviconHelper.DefaultFaviconHelper mDefaultFaviconHelper;
/** /**
* Performs an action when a navigation item is clicked. * Performs an action when a navigation item is clicked.
...@@ -72,10 +73,10 @@ class NavigationSheetMediator { ...@@ -72,10 +73,10 @@ class NavigationSheetMediator {
} }
NavigationSheetMediator(Context context, ModelList modelList, ClickListener listener) { NavigationSheetMediator(Context context, ModelList modelList, ClickListener listener) {
mContext = context;
mModelList = modelList; mModelList = modelList;
mClickListener = listener; mClickListener = listener;
mFaviconHelper = new FaviconHelper(); mFaviconHelper = new FaviconHelper();
mIconGenerator = ViewUtils.createDefaultRoundedIconGenerator(context.getResources(), true);
mFaviconSize = context.getResources().getDimensionPixelSize(R.dimen.default_favicon_size); mFaviconSize = context.getResources().getDimensionPixelSize(R.dimen.default_favicon_size);
mHistoryIcon = TintedDrawable.constructTintedDrawable( mHistoryIcon = TintedDrawable.constructTintedDrawable(
context, R.drawable.ic_history_googblue_24dp, R.color.default_icon_color); context, R.drawable.ic_history_googblue_24dp, R.color.default_icon_color);
...@@ -117,7 +118,6 @@ class NavigationSheetMediator { ...@@ -117,7 +118,6 @@ class NavigationSheetMediator {
*/ */
void clear() { void clear() {
mModelList.clear(); mModelList.clear();
if (mDefaultFaviconHelper != null) mDefaultFaviconHelper.clearCache();
} }
/** /**
...@@ -129,14 +129,9 @@ class NavigationSheetMediator { ...@@ -129,14 +129,9 @@ class NavigationSheetMediator {
// This callback can come after the sheet is hidden (which clears modelList). // This callback can come after the sheet is hidden (which clears modelList).
// Do nothing if that happens. // Do nothing if that happens.
if (mModelList.size() == 0) return; if (mModelList.size() == 0) return;
if (favicon == null) {
if (mDefaultFaviconHelper == null) {
mDefaultFaviconHelper = new FaviconHelper.DefaultFaviconHelper();
}
favicon = mDefaultFaviconHelper.getDefaultFaviconBitmap(mContext, pageUrl, true);
}
for (int i = 0; i < mHistory.getEntryCount(); i++) { for (int i = 0; i < mHistory.getEntryCount(); i++) {
if (TextUtils.equals(pageUrl, mHistory.getEntryAtIndex(i).getUrl())) { if (TextUtils.equals(pageUrl, mHistory.getEntryAtIndex(i).getUrl())) {
if (favicon == null) favicon = mIconGenerator.generateIconForUrl(pageUrl);
mModelList.get(i).model.set(ItemProperties.ICON, new BitmapDrawable(favicon)); mModelList.get(i).model.set(ItemProperties.ICON, new BitmapDrawable(favicon));
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment