Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3063)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderBase.java

Issue 2337963003: Plumb through notification action types and placeholders on Android (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderBase.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderBase.java b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderBase.java
index c5b0fc072f4f25b359cd9df80dd291e1933047ca..9f884d868eb3011bde1a75ee45baab71c41cca42 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderBase.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/notifications/NotificationBuilderBase.java
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.notifications;
import android.annotation.TargetApi;
import android.app.Notification;
import android.app.PendingIntent;
+import android.app.RemoteInput;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -33,17 +34,21 @@ public abstract class NotificationBuilderBase {
public Bitmap iconBitmap;
public CharSequence title;
public PendingIntent intent;
+ public RemoteInput remoteInput;
Peter Beverloo 2016/09/14 16:27:12 Both the NotificationBuilderBase and the Action su
awdf 2016/09/22 14:17:11 Done.
- Action(int iconId, CharSequence title, PendingIntent intent) {
+ Action(int iconId, CharSequence title, PendingIntent intent, RemoteInput remoteInput) {
this.iconId = iconId;
this.title = title;
this.intent = intent;
+ this.remoteInput = remoteInput;
}
- Action(Bitmap iconBitmap, CharSequence title, PendingIntent intent) {
+ Action(Bitmap iconBitmap, CharSequence title, PendingIntent intent,
+ RemoteInput remoteInput) {
this.iconBitmap = iconBitmap;
this.title = title;
this.intent = intent;
+ this.remoteInput = remoteInput;
}
}
@@ -186,7 +191,25 @@ public abstract class NotificationBuilderBase {
if (iconBitmap != null) {
applyWhiteOverlayToBitmap(iconBitmap);
}
- mActions.add(new Action(iconBitmap, limitLength(title), intent));
+ mActions.add(new Action(iconBitmap, limitLength(title), intent, null));
+ return this;
+ }
+
+ /**
+ * Adds an action to the notification. Actions are typically displayed as a button adjacent to
+ * the notification content.
+ */
+ public NotificationBuilderBase addAction(@Nullable Bitmap iconBitmap,
+ @Nullable CharSequence title, @Nullable PendingIntent intent,
+ @Nullable RemoteInput remoteInput) {
Peter Beverloo 2016/09/14 16:27:12 This gives me the feeling that we can't decide on
awdf 2016/09/22 14:17:11 Acknowledged.
+ if (mActions.size() == MAX_AUTHOR_PROVIDED_ACTION_BUTTONS) {
+ throw new IllegalStateException(
+ "Cannot add more than " + MAX_AUTHOR_PROVIDED_ACTION_BUTTONS + " actions.");
+ }
+ if (iconBitmap != null) {
+ applyWhiteOverlayToBitmap(iconBitmap);
+ }
+ mActions.add(new Action(iconBitmap, limitLength(title), intent, remoteInput));
return this;
}
@@ -195,7 +218,7 @@ public abstract class NotificationBuilderBase {
*/
public NotificationBuilderBase addSettingsAction(
int iconId, @Nullable CharSequence title, @Nullable PendingIntent intent) {
- mSettingsAction = new Action(iconId, limitLength(title), intent);
+ mSettingsAction = new Action(iconId, limitLength(title), intent, null);
return this;
}
@@ -272,10 +295,19 @@ public abstract class NotificationBuilderBase {
protected static void addActionToBuilder(Notification.Builder builder, Action action) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && action.iconBitmap != null) {
Icon icon = Icon.createWithBitmap(action.iconBitmap);
- builder.addAction(
- new Notification.Action.Builder(icon, action.title, action.intent).build());
+ Notification.Action.Builder actionBuilder =
+ new Notification.Action.Builder(icon, action.title, action.intent);
+ if (action.remoteInput != null) {
+ actionBuilder.addRemoteInput(action.remoteInput);
+ }
+ builder.addAction(actionBuilder.build());
} else {
- builder.addAction(action.iconId, action.title, action.intent);
+ Notification.Action.Builder actionBuilder =
+ new Notification.Action.Builder(action.iconId, action.title, action.intent);
+ if (action.remoteInput != null) {
+ actionBuilder.addRemoteInput(action.remoteInput);
+ }
+ builder.addAction(actionBuilder.build());
Peter Beverloo 2016/09/14 16:27:12 The four lines of duplication are unfortunate. Cou
awdf 2016/09/22 14:17:11 Done.
}
}

Powered by Google App Engine
This is Rietveld 408576698