| Index: chrome/android/java/src/org/chromium/chrome/browser/infobar/SimpleConfirmInfoBarBuilder.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/infobar/SimpleConfirmInfoBarBuilder.java b/chrome/android/java/src/org/chromium/chrome/browser/infobar/SimpleConfirmInfoBarBuilder.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..25884033d8750384d3f17e7e351081b65eaba62b
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/infobar/SimpleConfirmInfoBarBuilder.java
|
| @@ -0,0 +1,92 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.browser.infobar;
|
| +
|
| +import android.app.Activity;
|
| +import android.graphics.Bitmap;
|
| +import android.graphics.BitmapFactory;
|
| +
|
| +import org.chromium.base.annotations.CalledByNative;
|
| +import org.chromium.chrome.browser.tab.Tab;
|
| +
|
| +/**
|
| + * Builds and shows a basic ConfirmInfoBar for code that works almost entirely in Java.
|
| + *
|
| + * Rather than use this class, it is highly recommended that developers create and customize their
|
| + * own customized native InfoBarDelegate to avoid unnecessary JNI hops.
|
| + */
|
| +public class SimpleConfirmInfoBarBuilder {
|
| +
|
| + /**
|
| + * Listens for when users interact with an infobar.
|
| + */
|
| + public static interface Listener {
|
| +
|
| + /**
|
| + * Called when the infobar was dismissed.
|
| + */
|
| + void onInfoBarDismissed();
|
| +
|
| + /**
|
| + * Called when either the primary or secondary button of a ConfirmInfoBar is clicked.
|
| + *
|
| + * @param isPrimary True if the primary button was clicked, false if the secondary button
|
| + * was clicked.
|
| + */
|
| + void onInfoBarButtonClicked(boolean isPrimary);
|
| + }
|
| +
|
| + /**
|
| + * Creates a simple infobar to display a message to the user.
|
| + *
|
| + * Consider using snackbars instead of this function for ephemeral messages.
|
| + *
|
| + * @param tab Tab to attach the infobar to.
|
| + * @param infobarTypeIdentifier Unique ID defined in the C++ InfoBarDelegate::InfoBarIdentifier.
|
| + * @param message Message displayed to the user.
|
| + * @param autoExpire Whether the infobar disappears on navigation.
|
| + */
|
| + public static void create(
|
| + Tab tab, int infobarTypeIdentifier, String message, boolean autoExpire) {
|
| + create(tab, null, infobarTypeIdentifier, 0, message, null, null, autoExpire);
|
| + }
|
| +
|
| + /**
|
| + * Creates a simple infobar to prompt the user.
|
| + *
|
| + * @param tab Tab to attach the infobar to.
|
| + * @param listener Alerted when the user interacts with the infobar.
|
| + * @param infobarTypeIdentifier Unique ID defined in the C++ InfoBarDelegate::InfoBarIdentifier.
|
| + * @param drawableId Resource ID of the icon representing the infobar.
|
| + * @param message Message displayed to the user.
|
| + * @param primaryText String shown on the primary ConfirmInfoBar button.
|
| + * @param secondaryText String shown on the secondary ConfirmInfoBar button.
|
| + * @param autoExpire Whether the infobar disappears on navigation.
|
| + */
|
| + public static void create(Tab tab, Listener listener, int infobarTypeIdentifier,
|
| + int drawableId, String message, String primaryText, String secondaryText,
|
| + boolean autoExpire) {
|
| + Activity activity = tab.getWindowAndroid().getActivity().get();
|
| + Bitmap drawable = activity == null || drawableId == 0 ? null
|
| + : BitmapFactory.decodeResource(activity.getResources(), drawableId);
|
| + nativeCreate(tab, infobarTypeIdentifier, drawable, message, primaryText, secondaryText,
|
| + autoExpire, listener);
|
| + }
|
| +
|
| + @CalledByNative
|
| + private static void onInfoBarDismissed(Listener listener) {
|
| + if (listener != null) listener.onInfoBarDismissed();
|
| + }
|
| +
|
| + @CalledByNative
|
| + private static void onInfoBarButtonClicked(Listener listener, boolean isPrimary) {
|
| + if (listener != null) listener.onInfoBarButtonClicked(isPrimary);
|
| + }
|
| +
|
| + private static native void nativeCreate(
|
| + Tab tab, int infobarTypeIdentifier, Bitmap drawable, String message, String primaryText,
|
| + String secondaryText, boolean autoExpire, Object listener);
|
| +}
|
| +
|
|
|