Commit f1b65357 authored by Matthew Jones's avatar Matthew Jones Committed by Commit Bot

Use touchless 'add to homescreen' dialog for explore

Bug: 963516
Change-Id: If52da6c0d3c9b1a68e48a1e6ac39d6e785b44126
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1618032Reviewed-by: default avatarJustin DeWitt <dewittj@chromium.org>
Commit-Queue: Matthew Jones <mdjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#661374}
parent 5e5f2a91
......@@ -4,24 +4,28 @@
package org.chromium.chrome.browser.touchless;
import android.content.Context;
import android.app.Activity;
import android.graphics.Bitmap;
import org.chromium.chrome.browser.ShortcutHelper;
import org.chromium.chrome.browser.webapps.AddToHomescreenDialog;
import org.chromium.chrome.browser.webapps.TouchlessAddToHomescreenDialog;
import org.chromium.ui.modaldialog.ModalDialogManager;
/**
* Add to homescreen manager specifically for touchless devices.
*/
class TouchlessAddToHomescreenManager implements AddToHomescreenDialog.Delegate {
private final Context mContext;
private final Activity mActivity;
private final ModalDialogManager mDialogManager;
private final String mUrl;
private final String mTitle;
private final Bitmap mIconBitmap;
public TouchlessAddToHomescreenManager(
Context context, String url, String title, Bitmap iconBitmap) {
mContext = context;
public TouchlessAddToHomescreenManager(Activity activity, ModalDialogManager dialogManager,
String url, String title, Bitmap iconBitmap) {
mActivity = activity;
mDialogManager = dialogManager;
mUrl = url;
mTitle = title;
mIconBitmap = iconBitmap;
......@@ -29,7 +33,8 @@ class TouchlessAddToHomescreenManager implements AddToHomescreenDialog.Delegate
// Starts the process of showing the dialog and adding the shortcut.
public void start() {
AddToHomescreenDialog dialog = new AddToHomescreenDialog(mContext, this);
AddToHomescreenDialog dialog =
new TouchlessAddToHomescreenDialog(mActivity, mDialogManager, this);
dialog.show();
dialog.onUserTitleAvailable(mTitle, mUrl, false);
dialog.onIconAvailable(mIconBitmap);
......
......@@ -4,7 +4,7 @@
package org.chromium.chrome.browser.touchless;
import android.content.Context;
import android.app.Activity;
import android.graphics.Bitmap;
import android.support.annotation.DrawableRes;
import android.support.annotation.StringRes;
......@@ -43,16 +43,18 @@ public class TouchlessContextMenuManager extends ContextMenuManager {
Bitmap getIconBitmap();
}
private final Context mContext;
private final Activity mActivity;
private final ModalDialogManager mDialogManager;
private PropertyModel mTouchlessMenuModel;
private ModalDialogManager mModalDialogManager;
public TouchlessContextMenuManager(Context context,
public TouchlessContextMenuManager(Activity activity, ModalDialogManager dialogManager,
NativePageNavigationDelegate navigationDelegate,
TouchEnabledDelegate touchEnabledDelegate, Runnable closeContextMenuCallback,
String userActionPrefix) {
super(navigationDelegate, touchEnabledDelegate, closeContextMenuCallback, userActionPrefix);
mContext = context;
mActivity = activity;
mDialogManager = dialogManager;
}
/**
......@@ -100,8 +102,9 @@ public class TouchlessContextMenuManager extends ContextMenuManager {
if (itemId == ContextMenuItemId.ADD_TO_MY_APPS) {
Delegate touchlessDelegate = (Delegate) delegate;
TouchlessAddToHomescreenManager touchlessAddToHomescreenManager =
new TouchlessAddToHomescreenManager(mContext, touchlessDelegate.getUrl(),
touchlessDelegate.getTitle(), touchlessDelegate.getIconBitmap());
new TouchlessAddToHomescreenManager(mActivity, mDialogManager,
touchlessDelegate.getUrl(), touchlessDelegate.getTitle(),
touchlessDelegate.getIconBitmap());
touchlessAddToHomescreenManager.start();
return false;
}
......@@ -143,9 +146,9 @@ public class TouchlessContextMenuManager extends ContextMenuManager {
*/
private PropertyModel buildMenuItem(@ContextMenuItemId int itemId, OnClickListener listener) {
return new PropertyModel.Builder(DialogListItemProperties.ALL_KEYS)
.with(DialogListItemProperties.TEXT, mContext.getResources(),
.with(DialogListItemProperties.TEXT, mActivity.getResources(),
getResourceIdForMenuItem(itemId))
.with(DialogListItemProperties.ICON, mContext, getIconIdForMenuItem(itemId))
.with(DialogListItemProperties.ICON, mActivity, getIconIdForMenuItem(itemId))
.with(DialogListItemProperties.CLICK_LISTENER, listener)
.build();
}
......
......@@ -4,7 +4,6 @@
package org.chromium.chrome.browser.touchless;
import android.content.Context;
import android.view.View;
import org.chromium.chrome.browser.ChromeActivity;
......@@ -20,7 +19,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
*/
public class TouchlessExploreSitesPage extends ExploreSitesPage {
private final ModalDialogManager mModalDialogManager;
private Context mContext;
private ChromeActivity mActivity;
private TouchlessContextMenuManager mTouchlessContextMenuManager;
/**
......@@ -33,14 +32,15 @@ public class TouchlessExploreSitesPage extends ExploreSitesPage {
@Override
protected void initialize(ChromeActivity activity, final NativePageHost host) {
mContext = activity;
mActivity = activity;
super.initialize(activity, host);
}
@Override
protected ContextMenuManager createContextMenuManager(NativePageNavigationDelegate navDelegate,
Runnable closeContextMenuCallback, String contextMenuUserActionPrefix) {
mTouchlessContextMenuManager = new TouchlessContextMenuManager(mContext, navDelegate,
mTouchlessContextMenuManager = new TouchlessContextMenuManager(mActivity,
mActivity.getModalDialogManager(), navDelegate,
(enabled) -> {}, closeContextMenuCallback, contextMenuUserActionPrefix);
return mTouchlessContextMenuManager;
}
......
......@@ -125,8 +125,9 @@ public class TouchlessNewTabPage extends BasicNativePage {
// is reparented.
Runnable closeContextMenuCallback = () -> mTab.getActivity().closeContextMenu();
mContextMenuManager = new TouchlessContextMenuManager(activity,
suggestionsUiDelegate.getNavigationDelegate(), mRecyclerView::setTouchEnabled,
closeContextMenuCallback, NewTabPage.CONTEXT_MENU_USER_ACTION_PREFIX);
activity.getModalDialogManager(), suggestionsUiDelegate.getNavigationDelegate(),
mRecyclerView::setTouchEnabled, closeContextMenuCallback,
NewTabPage.CONTEXT_MENU_USER_ACTION_PREFIX);
mTab.getWindowAndroid().addContextMenuCloseListener(mContextMenuManager);
UiConfig uiConfig = new UiConfig(mRecyclerView);
......
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