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); |
+} |
+ |