Commit 95c4ceab authored by Gang Wu's avatar Gang Wu Committed by Commit Bot

rename turnOnHighlight in ViewHighlighter

This is follow up CL for
https://chromium-review.googlesource.com/c/chromium/src/+/2500274
Since ViewHighlighter provide 3 type of IPH now, we rename
turnOnHighlight to
  turnOnCircularHighlight(View)
  turnOnRectangularHighlight(View)
  turnOnRectangularHighlight(View, int)

Bug:1146243

Change-Id: Id36dab8992f848fa33569ebba23a377ffd0f0fec
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2521782Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Commit-Queue: Gang Wu <gangwu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#825023}
parent a8a460cb
......@@ -112,7 +112,7 @@ class AddToMenuItemViewBinder extends ArrayAdapter<MenuItem>
if (highlightedItemId != null
&& item.getSubMenu().getItem(i).getItemId() == highlightedItemId) {
mHighlightedItemId = highlightedItemId;
ViewHighlighter.turnOnHighlight(convertView, false);
ViewHighlighter.turnOnRectangularHighlight(convertView);
}
}
}
......@@ -164,7 +164,7 @@ class AddToMenuItemViewBinder extends ArrayAdapter<MenuItem>
AppCompatResources.getColorStateList(convertView.getContext(), theme));
if (mHighlightedItemId != null && item.getItemId() == mHighlightedItemId) {
ViewHighlighter.turnOnHighlight(convertView, false);
ViewHighlighter.turnOnRectangularHighlight(convertView);
} else {
ViewHighlighter.turnOffHighlight(convertView);
}
......
......@@ -1000,6 +1000,16 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
return R.id.offline_page_id;
}
/**
* @return The "Add to Home screen" menu items id in the app menu.
*/
public static int getAddToHomescreenId() {
if (getThreeButtonActionBarType() == ThreeButtonActionBarType.ADD_TO_OPTION) {
return R.id.add_to_homescreen_menu_id;
}
return R.id.add_to_homescreen_id;
}
@Override
public boolean recordAppMenuSimilarSelectionIfNeeded(
int previousMenuItemId, int currentMenuItemId) {
......
......@@ -112,7 +112,7 @@ class ChipViewMenuItemViewBinder implements CustomViewBinder {
}
if (highlightedItemId != null && mainMenuItem.getItemId() == highlightedItemId) {
ViewHighlighter.turnOnHighlight(holder.title, false);
ViewHighlighter.turnOnRectangularHighlight(holder.title);
} else {
ViewHighlighter.turnOffHighlight(holder.title);
}
......
......@@ -68,7 +68,7 @@ class IncognitoMenuItemViewBinder implements CustomViewBinder {
}
convertView.setOnClickListener(v -> appMenuClickHandler.onItemClick(item));
if (highlightedItemId != null && item.getItemId() == highlightedItemId) {
ViewHighlighter.turnOnHighlight(convertView, false);
ViewHighlighter.turnOnRectangularHighlight(convertView);
} else {
ViewHighlighter.turnOffHighlight(convertView);
}
......
......@@ -84,7 +84,7 @@ public class ToolbarUtils {
private static void toggleHighlightForDownloadSettingsTextBubble(
View anchorView, boolean shouldHighlight) {
if (shouldHighlight) {
ViewHighlighter.turnOnHighlight(anchorView, true);
ViewHighlighter.turnOnCircularHighlight(anchorView);
} else {
ViewHighlighter.turnOffHighlight(anchorView);
}
......
......@@ -929,7 +929,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
iphCommandBuilder.setAnchorView(anchorView).setCircleHighlight(showHighlight);
if (showHighlight) {
iphCommandBuilder.setOnShowCallback(
() -> ViewHighlighter.turnOnHighlight(anchorView, true /*circular*/));
() -> ViewHighlighter.turnOnCircularHighlight(anchorView));
iphCommandBuilder.setOnDismissCallback(() -> new Handler().postDelayed(() -> {
ViewHighlighter.turnOffHighlight(anchorView);
}, ViewHighlighter.IPH_MIN_DELAY_BETWEEN_TWO_HIGHLIGHTS));
......
......@@ -81,7 +81,7 @@ public class OfflineIndicatorInProductHelpController
private void turnOnHighlightForDownloadsMenuItem() {
if (mAppMenuHandler == null) return;
mAppMenuHandler.setMenuHighlight(R.id.downloads_menu_id, true);
mAppMenuHandler.setMenuHighlight(R.id.downloads_menu_id);
}
private void turnOffHighlightForDownloadsMenuItem() {
......
......@@ -19,6 +19,7 @@ import org.chromium.base.supplier.Supplier;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.ActivityTabProvider;
import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl;
import org.chromium.chrome.browser.banners.AppBannerInProductHelpController;
import org.chromium.chrome.browser.banners.AppBannerInProductHelpControllerFactory;
import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
......@@ -334,7 +335,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator {
mActivity, mAppMenuCoordinator.getAppMenuHandler(),
()
-> mActivity.getToolbarManager().getMenuButtonView(),
R.id.add_to_homescreen_id, TrackerFactory::getTrackerForProfile);
AppMenuPropertiesDelegateImpl.getAddToHomescreenId(), TrackerFactory::getTrackerForProfile);
AppBannerInProductHelpControllerFactory.attach(
mActivity.getWindowAndroid(), mAppBannerInProductHelpController);
}
......
......@@ -148,7 +148,7 @@ public class ToolbarButtonInProductHelpController
R.string.iph_download_infobar_download_continuing_text)
.setAnchorView(mActivity.getToolbarManager().getMenuButtonView())
.setOnShowCallback(
() -> turnOnHighlightForMenuItem(R.id.downloads_menu_id, true))
() -> turnOnHighlightForMenuItem(R.id.downloads_menu_id))
.setOnDismissCallback(this::turnOffHighlightForMenuItem)
.build());
}
......@@ -210,7 +210,7 @@ public class ToolbarButtonInProductHelpController
.setOnShowCallback(
()
-> turnOnHighlightForMenuItem(
getDataReductionMenuItemHighlight(), false))
getDataReductionMenuItemHighlight()))
.setOnDismissCallback(this::turnOffHighlightForMenuItem)
.build());
}
......@@ -235,7 +235,7 @@ public class ToolbarButtonInProductHelpController
.setOnShowCallback(
()
-> turnOnHighlightForMenuItem(
getDataReductionMenuItemHighlight(), false))
getDataReductionMenuItemHighlight()))
.setOnDismissCallback(dismissCallback)
.build());
}
......@@ -259,7 +259,7 @@ public class ToolbarButtonInProductHelpController
R.string.iph_download_home_accessibility_text)
.setAnchorView(mActivity.getToolbarManager().getMenuButtonView())
.setOnShowCallback(
() -> turnOnHighlightForMenuItem(R.id.downloads_menu_id, true))
() -> turnOnHighlightForMenuItem(R.id.downloads_menu_id))
.setOnDismissCallback(this::turnOffHighlightForMenuItem)
.build());
}
......@@ -282,8 +282,7 @@ public class ToolbarButtonInProductHelpController
.setOnShowCallback(
()
-> turnOnHighlightForMenuItem(
AppMenuPropertiesDelegateImpl.getOfflinePageId(),
true))
AppMenuPropertiesDelegateImpl.getOfflinePageId()))
.setOnDismissCallback(this::turnOffHighlightForMenuItem)
.setAnchorView(mActivity.getToolbarManager().getMenuButtonView())
.build());
......@@ -312,7 +311,7 @@ public class ToolbarButtonInProductHelpController
R.string.iph_translate_menu_button_text,
R.string.iph_translate_menu_button_accessibility_text)
.setOnShowCallback(
() -> turnOnHighlightForMenuItem(R.id.translate_id, false))
() -> turnOnHighlightForMenuItem(R.id.translate_id))
.setOnDismissCallback(this::turnOffHighlightForMenuItem)
.setAnchorView(mActivity.getToolbarManager().getMenuButtonView())
.build());
......@@ -334,15 +333,15 @@ public class ToolbarButtonInProductHelpController
R.string.video_tutorials_iph_tap_here_to_start,
R.string.video_tutorials_iph_tap_here_to_start)
.setAnchorView(mActivity.getToolbarManager().getMenuButtonView())
.setOnShowCallback(() -> turnOnHighlightForMenuItem(menuItemId, true))
.setOnShowCallback(() -> turnOnHighlightForMenuItem(menuItemId))
.setOnDismissCallback(this::turnOffHighlightForMenuItem)
.build());
tryNowTracker.tryNowUIShown(FeatureType.DOWNLOAD);
}
private void turnOnHighlightForMenuItem(Integer highlightMenuItemId, boolean circleHighlight) {
private void turnOnHighlightForMenuItem(Integer highlightMenuItemId) {
if (mAppMenuHandler != null) {
mAppMenuHandler.setMenuHighlight(highlightMenuItemId, circleHighlight);
mAppMenuHandler.setMenuHighlight(highlightMenuItemId);
}
}
......
......@@ -160,7 +160,7 @@ class StartSurfaceToolbarView extends RelativeLayout {
void setNewTabButtonHighlight(boolean highlight) {
if (mNewTabButton == null) return;
if (highlight) {
ViewHighlighter.turnOnHighlight(mNewTabButton, true);
ViewHighlighter.turnOnCircularHighlight(mNewTabButton);
} else {
ViewHighlighter.turnOffHighlight(mNewTabButton);
}
......
......@@ -263,7 +263,7 @@ public class TabSwitcherModeTTPhone extends OptimizedFrameLayout
void setNewTabButtonHighlight(boolean highlight) {
if (mNewTabImageButton == null) return;
if (highlight) {
ViewHighlighter.turnOnHighlight(mNewTabImageButton, true);
ViewHighlighter.turnOnCircularHighlight(mNewTabImageButton);
} else {
ViewHighlighter.turnOffHighlight(mNewTabImageButton);
}
......
......@@ -65,7 +65,7 @@ public class AppBannerInProductHelpController implements UnownedUserData {
}
private void turnOnHighlightForMenu() {
mAppMenuHandler.setMenuHighlight(mHiglightMenuItemId, true);
mAppMenuHandler.setMenuHighlight(mHiglightMenuItemId);
}
private void turnOffHighlightForMenu() {
......
......@@ -173,15 +173,13 @@ class AppMenu implements OnItemClickListener, OnKeyListener, AppMenuClickHandler
* by external apps.
* @param groupDividerResourceId The resource id of divider menu items. This will be used to
* determine the number of dividers that appear in the menu.
* @param circleHighlightItem Whether the highlighted item should use a circle highlight or
* not.
* @param customViewBinders See {@link AppMenuPropertiesDelegate#getCustomViewBinders()}.
*/
void show(Context context, final View anchorView, boolean isByPermanentButton,
int screenRotation, Rect visibleDisplayFrame, int screenHeight,
@IdRes int footerResourceId, @IdRes int headerResourceId,
@IdRes int groupDividerResourceId, Integer highlightedItemId,
boolean circleHighlightItem, @Nullable List<CustomViewBinder> customViewBinders) {
@Nullable List<CustomViewBinder> customViewBinders) {
mPopup = new PopupWindow(context);
mPopup.setFocusable(true);
mPopup.setInputMethodMode(PopupWindow.INPUT_METHOD_NOT_NEEDED);
......@@ -265,9 +263,11 @@ class AppMenu implements OnItemClickListener, OnKeyListener, AppMenuClickHandler
int footerHeight = inflateFooter(footerResourceId, contentView, menuWidth);
int headerHeight = inflateHeader(headerResourceId, contentView, menuWidth);
if (highlightedItemId != null) {
if (highlightedItemId != null
&& (highlightedItemId == footerResourceId
|| highlightedItemId == headerResourceId)) {
View viewToHighlight = contentView.findViewById(highlightedItemId);
ViewHighlighter.turnOnHighlight(viewToHighlight, circleHighlightItem);
ViewHighlighter.turnOnRectangularHighlight(viewToHighlight);
}
// Set the adapter after the header is added to avoid crashes on JellyBean.
......
......@@ -310,7 +310,11 @@ class AppMenuAdapter extends BaseAdapter {
if (getCustomItemViewType(item) == CustomViewBinder.NOT_HANDLED) {
// IPH for custom view is handled by themselves.
setupHighlight(convertView, item, false);
if (mHighlightedItemId != null && item.getItemId() == mHighlightedItemId) {
ViewHighlighter.turnOnRectangularHighlight(convertView);
} else {
ViewHighlighter.turnOffHighlight(convertView);
}
}
convertView.setTag(R.id.menu_item_view_type, itemViewType);
......@@ -359,7 +363,11 @@ class AppMenuAdapter extends BaseAdapter {
button.setOnLongClickListener(v -> mAppMenuClickHandler.onItemLongClick(item, v));
setupHighlight(button, item, true);
if (mHighlightedItemId != null && item.getItemId() == mHighlightedItemId) {
ViewHighlighter.turnOnCircularHighlight(button);
} else {
ViewHighlighter.turnOffHighlight(button);
}
// Menu items may be hidden by command line flags before they get to this point.
button.setVisibility(item.isVisible() ? View.VISIBLE : View.GONE);
......@@ -564,12 +572,4 @@ class AppMenuAdapter extends BaseAdapter {
Map<CustomViewBinder, Integer> getViewTypeOffsetMapForTests() {
return mViewTypeOffsetMap;
}
private void setupHighlight(View view, MenuItem item, boolean circle) {
if (mHighlightedItemId != null && item.getItemId() == mHighlightedItemId) {
ViewHighlighter.turnOnHighlight(view, circle);
} else {
ViewHighlighter.turnOffHighlight(view);
}
}
}
......@@ -60,11 +60,6 @@ class AppMenuHandlerImpl
*/
private Integer mHighlightMenuId;
/**
* Whether the highlighted item should use a circle highlight or not.
*/
private boolean mCircleHighlight;
/**
* Constructs an AppMenuHandlerImpl object.
* @param delegate Delegate used to check the desired AppMenu properties on show.
......@@ -114,15 +109,14 @@ class AppMenuHandlerImpl
@Override
public void clearMenuHighlight() {
setMenuHighlight(null, false);
setMenuHighlight(null);
}
@Override
public void setMenuHighlight(Integer highlightItemId, boolean circleHighlight) {
public void setMenuHighlight(Integer highlightItemId) {
if (mHighlightMenuId == null && highlightItemId == null) return;
if (mHighlightMenuId != null && mHighlightMenuId.equals(highlightItemId)) return;
mHighlightMenuId = highlightItemId;
mCircleHighlight = circleHighlight;
boolean highlighting = mHighlightMenuId != null;
for (AppMenuObserver observer : mObservers) observer.onMenuHighlightChanged(highlighting);
}
......@@ -222,7 +216,7 @@ class AppMenuHandlerImpl
}
mAppMenu.show(wrapper, anchorView, isByPermanentButton, rotation, appRect, pt.y,
footerResourceId, headerResourceId, mDelegate.getGroupDividerId(), mHighlightMenuId,
mCircleHighlight, mDelegate.getCustomViewBinders());
mDelegate.getCustomViewBinders());
mAppMenuDragHelper.onShow(startDragging);
clearMenuHighlight();
RecordUserAction.record("MobileMenuShow");
......
......@@ -294,7 +294,7 @@ public class AppMenuTest extends DummyUiActivityTestCase {
Assert.assertFalse(mMenuObserver.menuHighlighting);
TestThreadUtils.runOnUiThreadBlocking(
() -> mAppMenuHandler.setMenuHighlight(R.id.menu_item_one, false));
() -> mAppMenuHandler.setMenuHighlight(R.id.menu_item_one));
mMenuObserver.menuHighlightChangedCallback.waitForCallback(0);
Assert.assertTrue(mMenuObserver.menuHighlighting);
......@@ -317,7 +317,7 @@ public class AppMenuTest extends DummyUiActivityTestCase {
Assert.assertFalse(mMenuObserver.menuHighlighting);
TestThreadUtils.runOnUiThreadBlocking(
() -> mAppMenuHandler.setMenuHighlight(R.id.icon_one, false));
() -> mAppMenuHandler.setMenuHighlight(R.id.icon_one));
mMenuObserver.menuHighlightChangedCallback.waitForCallback(0);
Assert.assertTrue(mMenuObserver.menuHighlighting);
......
......@@ -36,9 +36,8 @@ public interface AppMenuHandler {
* highlighted for one menu usage. After that the highlight will be cleared.
* @param highlightItemId The id of a menu item to highlight or {@code null} to turn off the
* highlight.
* @param circleHighlight Whether the highlighted item should use a circle highlight or not.
*/
void setMenuHighlight(Integer highlightItemId, boolean circleHighlight);
void setMenuHighlight(Integer highlightItemIdt);
/**
* Clears the menu highlight.
......
......@@ -95,7 +95,11 @@ public class UserEducationHelper {
textBubble.setAutoDismissTimeout(iphCommand.autoDismissTimeout);
if (iphCommand.shouldHighlight) {
ViewHighlighter.turnOnHighlight(anchorView, iphCommand.circleHighlight);
if (iphCommand.circleHighlight) {
ViewHighlighter.turnOnCircularHighlight(anchorView);
} else {
ViewHighlighter.turnOnRectangularHighlight(anchorView);
}
}
rectProvider.setInsetPx(iphCommand.insetRect);
......
......@@ -63,21 +63,31 @@ public class ViewHighlighter {
}
/**
* Create a highlight layer over the view.
* Create a circular highlight layer over the view.
* @param view The view to be highlighted.
* @param circular Whether the highlight should be a circle or rectangle.
*/
public static void turnOnHighlight(View view, boolean circular) {
public static void turnOnCircularHighlight(View view) {
if (view == null) return;
PulseDrawable pulseDrawable = circular ? PulseDrawable.createCircle(view.getContext())
: PulseDrawable.createRectangle(view.getContext());
PulseDrawable pulseDrawable = PulseDrawable.createCircle(view.getContext());
attachViewAsHighlight(view, pulseDrawable);
}
/**
* Create a rectangle highlight layer over the view.
* Create a rectangular highlight layer over the view.
* @param view The view to be highlighted.
*/
public static void turnOnRectangularHighlight(View view) {
if (view == null) return;
PulseDrawable pulseDrawable = PulseDrawable.createRectangle(view.getContext());
attachViewAsHighlight(view, pulseDrawable);
}
/**
* Create a rectangular highlight layer over the view.
* @param view The view to be highlighted.
* @param cornerRadius The corner radius in pixels of the rectangle.
*/
......
......@@ -42,15 +42,15 @@ public class ViewHighlighterTest {
ViewHighlighter.turnOffHighlight(tintedImageButton);
checkHighlightOff(tintedImageButton);
ViewHighlighter.turnOnHighlight(tintedImageButton, true);
ViewHighlighter.turnOnHighlight(tintedImageButton, true);
ViewHighlighter.turnOnCircularHighlight(tintedImageButton);
ViewHighlighter.turnOnCircularHighlight(tintedImageButton);
checkHighlightOn(tintedImageButton);
ViewHighlighter.turnOffHighlight(tintedImageButton);
ViewHighlighter.turnOffHighlight(tintedImageButton);
checkHighlightOff(tintedImageButton);
ViewHighlighter.turnOnHighlight(tintedImageButton, false);
ViewHighlighter.turnOnRectangularHighlight(tintedImageButton);
checkHighlightOn(tintedImageButton);
}
......@@ -63,13 +63,13 @@ public class ViewHighlighterTest {
ViewHighlighter.turnOffHighlight(tintedImageButton);
checkHighlightOff(tintedImageButton);
ViewHighlighter.turnOnHighlight(tintedImageButton, true);
ViewHighlighter.turnOnCircularHighlight(tintedImageButton);
checkHighlightOn(tintedImageButton);
ViewHighlighter.turnOffHighlight(tintedImageButton);
checkHighlightOff(tintedImageButton);
ViewHighlighter.turnOnHighlight(tintedImageButton, false);
ViewHighlighter.turnOnRectangularHighlight(tintedImageButton);
checkHighlightOn(tintedImageButton);
}
......
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