Commit 260b07f1 authored by Ted Choc's avatar Ted Choc Committed by Commit Bot

[Browser Actions] Show custom icons on the left of the dialog.

This also removes the icon on the left of the new context menu UI,
which is part of the updated UX spec for context menus.

BUG=813926

Change-Id: I171ebfe19e4d412e73ff7d659db838eab3be4ca4
Reviewed-on: https://chromium-review.googlesource.com/1006277
Commit-Queue: Ted Choc <tedchoc@chromium.org>
Reviewed-by: default avatarBernhard Bauer <bauerb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#549962}
parent f20fb4a0
......@@ -13,14 +13,6 @@
android:minHeight="40dp"
chrome:maxHeight="40dp"
tools:ignore="UseCompoundDrawables">
<ImageView
android:id="@+id/context_menu_icon"
android:layout_width="20dp"
android:layout_height="match_parent"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:scaleType="centerInside"
android:contentDescription="@null" />
<TextView
android:id="@+id/context_menu_text"
android:layout_width="0dp"
......@@ -30,7 +22,7 @@
android:textSize="15sp"
android:textColor="#dd000000" />
<ImageView
android:id="@+id/context_menu_share_icon"
android:id="@+id/context_menu_icon"
android:layout_width="51dp"
android:layout_height="match_parent"
android:paddingTop="8dp"
......
......@@ -6,84 +6,66 @@ package org.chromium.chrome.browser.contextmenu;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.support.annotation.DrawableRes;
import android.support.annotation.IdRes;
import android.support.annotation.StringRes;
import android.support.v7.content.res.AppCompatResources;
import org.chromium.base.Callback;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.DefaultBrowserInfo;
import org.chromium.chrome.browser.search_engines.TemplateUrlService;
import org.chromium.chrome.browser.widget.TintedDrawable;
/**
* List of all predefined Context Menu Items available in Chrome.
*/
public enum ChromeContextMenuItem implements ContextMenuItem {
// Custom Tab Group
OPEN_IN_NEW_CHROME_TAB(R.drawable.context_menu_new_tab,
OPEN_IN_NEW_CHROME_TAB(
R.string.contextmenu_open_in_new_chrome_tab, R.id.contextmenu_open_in_new_chrome_tab),
OPEN_IN_CHROME_INCOGNITO_TAB(R.drawable.incognito_statusbar,
R.string.contextmenu_open_in_chrome_incognito_tab,
OPEN_IN_CHROME_INCOGNITO_TAB(R.string.contextmenu_open_in_chrome_incognito_tab,
R.id.contextmenu_open_in_chrome_incognito_tab),
OPEN_IN_BROWSER_ID(R.drawable.context_menu_new_tab, 0, R.id.contextmenu_open_in_browser_id),
OPEN_IN_BROWSER_ID(0, R.id.contextmenu_open_in_browser_id),
// Link Group
OPEN_IN_OTHER_WINDOW(R.drawable.context_menu_new_tab, R.string.contextmenu_open_in_other_window,
R.id.contextmenu_open_in_other_window),
OPEN_IN_NEW_TAB(R.drawable.context_menu_new_tab, R.string.contextmenu_open_in_new_tab,
R.id.contextmenu_open_in_new_tab),
OPEN_IN_INCOGNITO_TAB(R.drawable.incognito_statusbar,
OPEN_IN_OTHER_WINDOW(
R.string.contextmenu_open_in_other_window, R.id.contextmenu_open_in_other_window),
OPEN_IN_NEW_TAB(R.string.contextmenu_open_in_new_tab, R.id.contextmenu_open_in_new_tab),
OPEN_IN_INCOGNITO_TAB(
R.string.contextmenu_open_in_incognito_tab, R.id.contextmenu_open_in_incognito_tab),
COPY_LINK_ADDRESS(R.drawable.ic_content_copy_black, R.string.contextmenu_copy_link_address,
R.id.contextmenu_copy_link_address),
COPY_LINK_TEXT(R.drawable.ic_content_copy_black, R.string.contextmenu_copy_link_text,
R.id.contextmenu_copy_link_text),
SAVE_LINK_AS(R.drawable.ic_file_download_white_24dp, R.string.contextmenu_save_link,
R.id.contextmenu_save_link_as),
COPY_LINK_ADDRESS(R.string.contextmenu_copy_link_address, R.id.contextmenu_copy_link_address),
COPY_LINK_TEXT(R.string.contextmenu_copy_link_text, R.id.contextmenu_copy_link_text),
SAVE_LINK_AS(R.string.contextmenu_save_link, R.id.contextmenu_save_link_as),
// Image Group
LOAD_ORIGINAL_IMAGE(R.drawable.context_menu_load_image,
LOAD_ORIGINAL_IMAGE(
R.string.contextmenu_load_original_image, R.id.contextmenu_load_original_image),
SAVE_IMAGE(R.drawable.ic_file_download_white_24dp, R.string.contextmenu_save_image,
R.id.contextmenu_save_image),
OPEN_IMAGE(R.drawable.context_menu_new_tab, R.string.contextmenu_open_image,
R.id.contextmenu_open_image),
OPEN_IMAGE_IN_NEW_TAB(R.drawable.context_menu_new_tab,
SAVE_IMAGE(R.string.contextmenu_save_image, R.id.contextmenu_save_image),
OPEN_IMAGE(R.string.contextmenu_open_image, R.id.contextmenu_open_image),
OPEN_IMAGE_IN_NEW_TAB(
R.string.contextmenu_open_image_in_new_tab, R.id.contextmenu_open_image_in_new_tab),
SEARCH_BY_IMAGE(R.drawable.context_menu_search, R.string.contextmenu_search_web_for_image,
R.id.contextmenu_search_by_image),
SEARCH_BY_IMAGE(R.string.contextmenu_search_web_for_image, R.id.contextmenu_search_by_image),
// Message Group
CALL(R.drawable.ic_phone_googblue_36dp, R.string.contextmenu_call, R.id.contextmenu_call),
SEND_MESSAGE(R.drawable.ic_email_googblue_36dp, R.string.contextmenu_send_message,
R.id.contextmenu_send_message),
ADD_TO_CONTACTS(R.drawable.context_menu_add_to_contacts, R.string.contextmenu_add_to_contacts,
R.id.contextmenu_add_to_contacts),
COPY(R.drawable.ic_content_copy_black, R.string.contextmenu_copy, R.id.contextmenu_copy),
CALL(R.string.contextmenu_call, R.id.contextmenu_call),
SEND_MESSAGE(R.string.contextmenu_send_message, R.id.contextmenu_send_message),
ADD_TO_CONTACTS(R.string.contextmenu_add_to_contacts, R.id.contextmenu_add_to_contacts),
COPY(R.string.contextmenu_copy, R.id.contextmenu_copy),
// Video Group
SAVE_VIDEO(R.drawable.ic_file_download_white_24dp, R.string.contextmenu_save_video,
R.id.contextmenu_save_video),
SAVE_VIDEO(R.string.contextmenu_save_video, R.id.contextmenu_save_video),
// Other
OPEN_IN_CHROME(R.drawable.context_menu_new_tab, R.string.menu_open_in_chrome,
R.id.contextmenu_open_in_chrome),
OPEN_IN_CHROME(R.string.menu_open_in_chrome, R.id.contextmenu_open_in_chrome),
// Browser Action Items
BROWSER_ACTIONS_OPEN_IN_BACKGROUND(R.drawable.context_menu_new_tab,
BROWSER_ACTIONS_OPEN_IN_BACKGROUND(
R.string.browser_actions_open_in_background, R.id.browser_actions_open_in_background),
BROWSER_ACTIONS_OPEN_IN_INCOGNITO_TAB(R.drawable.incognito_statusbar,
R.string.browser_actions_open_in_incognito_tab,
BROWSER_ACTIONS_OPEN_IN_INCOGNITO_TAB(R.string.browser_actions_open_in_incognito_tab,
R.id.browser_actions_open_in_incognito_tab),
BROWSER_ACTION_SAVE_LINK_AS(R.drawable.ic_file_download_white_24dp,
BROWSER_ACTION_SAVE_LINK_AS(
R.string.browser_actions_save_link_as, R.id.browser_actions_save_link_as),
BROWSER_ACTIONS_COPY_ADDRESS(R.drawable.ic_content_copy_black,
BROWSER_ACTIONS_COPY_ADDRESS(
R.string.browser_actions_copy_address, R.id.browser_actions_copy_address);
@DrawableRes
private final int mIconId;
@StringRes
private final int mStringId;
@IdRes
......@@ -92,12 +74,10 @@ public enum ChromeContextMenuItem implements ContextMenuItem {
/**
* A representation of a Context Menu Item. Each item should have a string and an id associated
* with it.
* @param iconId The icon that appears in {@link TabularContextMenuUi} to represent each item.
* @param stringId The string that describes the action of the item.
* @param menuId The id found in ids.xml.
*/
ChromeContextMenuItem(@DrawableRes int iconId, @StringRes int stringId, @IdRes int menuId) {
mIconId = iconId;
ChromeContextMenuItem(@StringRes int stringId, @IdRes int menuId) {
mStringId = stringId;
mMenuId = menuId;
}
......@@ -126,17 +106,7 @@ public enum ChromeContextMenuItem implements ContextMenuItem {
@Override
public void getDrawableAsync(Context context, Callback<Drawable> callback) {
Drawable drawable = null;
if (mIconId == R.drawable.context_menu_new_tab
|| mIconId == R.drawable.context_menu_add_to_contacts
|| mIconId == R.drawable.context_menu_load_image
|| mIconId == R.drawable.ic_content_copy_black) {
drawable = AppCompatResources.getDrawable(context, mIconId);
} else if (mIconId != 0) {
drawable = TintedDrawable.constructTintedDrawable(
context.getResources(), mIconId, R.color.light_normal_color);
}
callback.onResult(drawable);
callback.onResult(null);
}
@Override
......
......@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.contextmenu;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.StrictMode;
import android.text.TextUtils;
import android.util.Pair;
import android.view.LayoutInflater;
import android.view.View;
......@@ -73,8 +74,6 @@ class TabularContextMenuListAdapter extends BaseAdapter {
if (viewHolder.mText == null) {
throw new IllegalStateException("Context text not found in new view inflation");
}
viewHolder.mShareIcon =
(ImageView) convertView.findViewById(R.id.context_menu_share_icon);
viewHolder.mRightPadding =
(Space) convertView.findViewById(R.id.context_menu_right_padding);
......@@ -88,7 +87,6 @@ class TabularContextMenuListAdapter extends BaseAdapter {
final String titleText = menuItem.getTitle(mActivity);
viewHolder.mText.setText(titleText);
viewHolder.mIcon.setVisibility(View.GONE);
if (menuItem instanceof ShareContextMenuItem) {
StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads();
......@@ -96,11 +94,11 @@ class TabularContextMenuListAdapter extends BaseAdapter {
final Pair<Drawable, CharSequence> shareInfo =
((ShareContextMenuItem) menuItem).getShareInfo();
if (shareInfo.first != null) {
viewHolder.mShareIcon.setImageDrawable(shareInfo.first);
viewHolder.mShareIcon.setVisibility(View.VISIBLE);
viewHolder.mShareIcon.setContentDescription(mActivity.getString(
viewHolder.mIcon.setImageDrawable(shareInfo.first);
viewHolder.mIcon.setVisibility(View.VISIBLE);
viewHolder.mIcon.setContentDescription(mActivity.getString(
R.string.accessibility_menu_share_via, shareInfo.second));
viewHolder.mShareIcon.setOnClickListener(new View.OnClickListener() {
viewHolder.mIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mOnDirectShare.onResult(
......@@ -113,8 +111,24 @@ class TabularContextMenuListAdapter extends BaseAdapter {
StrictMode.setThreadPolicy(oldPolicy);
}
} else {
viewHolder.mShareIcon.setVisibility(View.GONE);
viewHolder.mIcon.setVisibility(View.GONE);
viewHolder.mIcon.setImageDrawable(null);
viewHolder.mIcon.setContentDescription(null);
viewHolder.mIcon.setOnClickListener(null);
viewHolder.mRightPadding.setVisibility(View.VISIBLE);
Callback<Drawable> callback = drawable -> {
// If the current title does not match the title when triggering the callback,
// assume the View now represents a different view and do not update the icon.
if (!TextUtils.equals(titleText, viewHolder.mText.getText())) return;
if (drawable != null) {
viewHolder.mIcon.setVisibility(View.VISIBLE);
viewHolder.mIcon.setImageDrawable(drawable);
viewHolder.mRightPadding.setVisibility(View.GONE);
}
};
menuItem.getDrawableAsync(mActivity, callback);
}
return convertView;
......@@ -123,7 +137,6 @@ class TabularContextMenuListAdapter extends BaseAdapter {
private static class ViewHolderItem {
ImageView mIcon;
TextView mText;
ImageView mShareIcon;
Space mRightPadding;
}
}
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