summaryrefslogtreecommitdiffstats
path: root/core/java/android/app
diff options
context:
space:
mode:
authorDan Sandler <dsandler@android.com>2015-12-08 15:42:41 -0500
committerIan Pedowitz <ijpedowitz@google.com>2015-12-12 01:05:25 +0000
commitddb52fb1f5a83fefe2732733fd8a06621f3aebfc (patch)
tree1cd2df29f8ad6f105492c53f6bb8270a16f1e584 /core/java/android/app
parent180dd72a9b36ca6f74e5ad255347d815a0c8729a (diff)
downloadframeworks_base-ddb52fb1f5a83fefe2732733fd8a06621f3aebfc.zip
frameworks_base-ddb52fb1f5a83fefe2732733fd8a06621f3aebfc.tar.gz
frameworks_base-ddb52fb1f5a83fefe2732733fd8a06621f3aebfc.tar.bz2
DO NOT MERGE Remove more extras during notification lightening.
Basically anything Parcelable needs to go since it might be quite large. Note that this includes additional extras such as those contributed by WearableExtender. Cherry-picked from 5012853de26eac023deda82d138a35677fe6117b Bug: 26038546 Change-Id: I00eadd2b23dfc4fccf42332df658373bb05b8a45
Diffstat (limited to 'core/java/android/app')
-rw-r--r--core/java/android/app/Notification.java23
1 files changed, 18 insertions, 5 deletions
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 4acfa29..014c069 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -45,6 +45,7 @@ import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;
import android.util.MathUtils;
+import android.util.SparseArray;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
@@ -62,6 +63,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.Objects;
+import java.util.Set;
/**
* A class that represents how a persistent notification is to be presented to
@@ -1603,13 +1606,23 @@ public class Notification implements Parcelable
bigContentView = null;
headsUpContentView = null;
mLargeIcon = null;
- if (extras != null) {
- extras.remove(Notification.EXTRA_LARGE_ICON);
- extras.remove(Notification.EXTRA_LARGE_ICON_BIG);
- extras.remove(Notification.EXTRA_PICTURE);
- extras.remove(Notification.EXTRA_BIG_TEXT);
+ if (extras != null && !extras.isEmpty()) {
// Prevent light notifications from being rebuilt.
extras.remove(Builder.EXTRA_NEEDS_REBUILD);
+ final Set<String> keyset = extras.keySet();
+ final int N = keyset.size();
+ final String[] keys = keyset.toArray(new String[N]);
+ for (int i=0; i<N; i++) {
+ final String key = keys[i];
+ final Object obj = extras.get(key);
+ if (obj != null &&
+ ( obj instanceof Parcelable
+ || obj instanceof Parcelable[]
+ || obj instanceof SparseArray
+ || obj instanceof ArrayList)) {
+ extras.remove(key);
+ }
+ }
}
}