| Index: chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomButtonParams.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomButtonParams.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomButtonParams.java
|
| index aa28292dca9e3f77557dda742043b40e68bd6bc6..c842698ba78b94ed11e524ef0648751693f0b2bf 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomButtonParams.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomButtonParams.java
|
| @@ -5,7 +5,6 @@
|
| package org.chromium.chrome.browser.customtabs;
|
|
|
| import android.app.PendingIntent;
|
| -import android.app.PendingIntent.CanceledException;
|
| import android.content.Context;
|
| import android.content.Intent;
|
| import android.content.res.Resources;
|
| @@ -16,8 +15,11 @@ import android.os.Bundle;
|
| import android.support.annotation.NonNull;
|
| import android.support.customtabs.CustomTabsIntent;
|
| import android.text.TextUtils;
|
| +import android.view.Gravity;
|
| import android.view.LayoutInflater;
|
| import android.view.View;
|
| +import android.view.View.OnClickListener;
|
| +import android.view.View.OnLongClickListener;
|
| import android.view.ViewGroup;
|
| import android.widget.ImageButton;
|
|
|
| @@ -25,6 +27,7 @@ import org.chromium.base.Log;
|
| import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.util.IntentUtils;
|
| import org.chromium.chrome.browser.widget.TintedDrawable;
|
| +import org.chromium.ui.widget.Toast;
|
|
|
| import java.util.ArrayList;
|
| import java.util.HashSet;
|
| @@ -108,9 +111,10 @@ class CustomButtonParams {
|
| * Builds an {@link ImageButton} from the data in this params. Generated buttons should be
|
| * placed on the bottom bar. The button's tag will be its id.
|
| * @param parent The parent that the inflated {@link ImageButton}.
|
| + * @param listener {@link OnClickListener} that should be used with the button.
|
| * @return Parsed list of {@link CustomButtonParams}, which is empty if the input is invalid.
|
| */
|
| - ImageButton buildBottomBarButton(Context context, ViewGroup parent) {
|
| + ImageButton buildBottomBarButton(Context context, ViewGroup parent, OnClickListener listener) {
|
| if (mIsOnToolbar) return null;
|
|
|
| ImageButton button = (ImageButton) LayoutInflater.from(context)
|
| @@ -121,18 +125,26 @@ class CustomButtonParams {
|
| if (mPendingIntent == null) {
|
| button.setEnabled(false);
|
| } else {
|
| - // TODO(ianwen): add UMA for button clicking.
|
| - button.setOnClickListener(new View.OnClickListener() {
|
| - @Override
|
| - public void onClick(View v) {
|
| - try {
|
| - mPendingIntent.send();
|
| - } catch (CanceledException e) {
|
| - Log.e(TAG, "CanceledException while sending pending intent in custom tab");
|
| - }
|
| - }
|
| - });
|
| + button.setOnClickListener(listener);
|
| }
|
| + button.setOnLongClickListener(new OnLongClickListener() {
|
| + @Override
|
| + public boolean onLongClick(View view) {
|
| + final int screenWidth = view.getResources().getDisplayMetrics().widthPixels;
|
| + final int[] screenPos = new int[2];
|
| + view.getLocationOnScreen(screenPos);
|
| + final int width = view.getWidth();
|
| +
|
| + Toast toast = Toast.makeText(
|
| + view.getContext(), view.getContentDescription(), Toast.LENGTH_SHORT);
|
| + toast.setGravity(Gravity.BOTTOM | Gravity.END,
|
| + screenWidth - screenPos[0] - width / 2,
|
| + view.getResources().getDimensionPixelSize(
|
| + R.dimen.toolbar_height_no_shadow));
|
| + toast.show();
|
| + return true;
|
| + }
|
| + });
|
| return button;
|
| }
|
|
|
| @@ -148,13 +160,11 @@ class CustomButtonParams {
|
| Bundle singleBundle = IntentUtils.safeGetBundleExtra(intent,
|
| CustomTabsIntent.EXTRA_ACTION_BUTTON_BUNDLE);
|
| ArrayList<Bundle> bundleList = IntentUtils.getParcelableArrayListExtra(intent,
|
| - CustomTabsIntent.EXTRA_ACTION_BUTTON_BUNDLE);
|
| + CustomTabsIntent.EXTRA_ACTION_BAR_ITEMS);
|
| boolean tinted = IntentUtils.safeGetBooleanExtra(intent,
|
| CustomTabsIntent.EXTRA_TINT_ACTION_BUTTON, false);
|
| - if (singleBundle != null) {
|
| - CustomButtonParams params = fromBundle(context, singleBundle, tinted, false);
|
| - paramsList.add(params);
|
| - } else if (bundleList != null) {
|
| + if (singleBundle != null) paramsList.add(fromBundle(context, singleBundle, tinted, false));
|
| + if (bundleList != null) {
|
| Set<Integer> ids = new HashSet<>();
|
| for (Bundle bundle : bundleList) {
|
| CustomButtonParams params = fromBundle(context, bundle, tinted, true);
|
|
|