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