Merge "Merge "Fix NPE which could occur when showing notification guts" into oc-mr1-dev am: cf6a6d244e" into oc-mr1-dev-plus-aosp
This commit is contained in:
committed by
Android (Google) Code Review
commit
a464532b92
@@ -292,8 +292,8 @@ public class NotificationData {
|
||||
|
||||
if (mRankingMap != null) {
|
||||
// RankingMap as received from NoMan
|
||||
mRankingMap.getRanking(a.key, mRankingA);
|
||||
mRankingMap.getRanking(b.key, mRankingB);
|
||||
getRanking(a.key, mRankingA);
|
||||
getRanking(b.key, mRankingB);
|
||||
aImportance = mRankingA.getImportance();
|
||||
bImportance = mRankingB.getImportance();
|
||||
aRank = mRankingA.getRank();
|
||||
@@ -381,7 +381,7 @@ public class NotificationData {
|
||||
|
||||
public boolean isAmbient(String key) {
|
||||
if (mRankingMap != null) {
|
||||
mRankingMap.getRanking(key, mTmpRanking);
|
||||
getRanking(key, mTmpRanking);
|
||||
return mTmpRanking.isAmbient();
|
||||
}
|
||||
return false;
|
||||
@@ -389,7 +389,7 @@ public class NotificationData {
|
||||
|
||||
public int getVisibilityOverride(String key) {
|
||||
if (mRankingMap != null) {
|
||||
mRankingMap.getRanking(key, mTmpRanking);
|
||||
getRanking(key, mTmpRanking);
|
||||
return mTmpRanking.getVisibilityOverride();
|
||||
}
|
||||
return Ranking.VISIBILITY_NO_OVERRIDE;
|
||||
@@ -397,7 +397,7 @@ public class NotificationData {
|
||||
|
||||
public boolean shouldSuppressScreenOff(String key) {
|
||||
if (mRankingMap != null) {
|
||||
mRankingMap.getRanking(key, mTmpRanking);
|
||||
getRanking(key, mTmpRanking);
|
||||
return (mTmpRanking.getSuppressedVisualEffects()
|
||||
& NotificationListenerService.SUPPRESSED_EFFECT_SCREEN_OFF) != 0;
|
||||
}
|
||||
@@ -406,7 +406,7 @@ public class NotificationData {
|
||||
|
||||
public boolean shouldSuppressScreenOn(String key) {
|
||||
if (mRankingMap != null) {
|
||||
mRankingMap.getRanking(key, mTmpRanking);
|
||||
getRanking(key, mTmpRanking);
|
||||
return (mTmpRanking.getSuppressedVisualEffects()
|
||||
& NotificationListenerService.SUPPRESSED_EFFECT_SCREEN_ON) != 0;
|
||||
}
|
||||
@@ -415,7 +415,7 @@ public class NotificationData {
|
||||
|
||||
public int getImportance(String key) {
|
||||
if (mRankingMap != null) {
|
||||
mRankingMap.getRanking(key, mTmpRanking);
|
||||
getRanking(key, mTmpRanking);
|
||||
return mTmpRanking.getImportance();
|
||||
}
|
||||
return NotificationManager.IMPORTANCE_UNSPECIFIED;
|
||||
@@ -423,7 +423,7 @@ public class NotificationData {
|
||||
|
||||
public String getOverrideGroupKey(String key) {
|
||||
if (mRankingMap != null) {
|
||||
mRankingMap.getRanking(key, mTmpRanking);
|
||||
getRanking(key, mTmpRanking);
|
||||
return mTmpRanking.getOverrideGroupKey();
|
||||
}
|
||||
return null;
|
||||
@@ -431,7 +431,7 @@ public class NotificationData {
|
||||
|
||||
public List<SnoozeCriterion> getSnoozeCriteria(String key) {
|
||||
if (mRankingMap != null) {
|
||||
mRankingMap.getRanking(key, mTmpRanking);
|
||||
getRanking(key, mTmpRanking);
|
||||
return mTmpRanking.getSnoozeCriteria();
|
||||
}
|
||||
return null;
|
||||
@@ -439,7 +439,7 @@ public class NotificationData {
|
||||
|
||||
public NotificationChannel getChannel(String key) {
|
||||
if (mRankingMap != null) {
|
||||
mRankingMap.getRanking(key, mTmpRanking);
|
||||
getRanking(key, mTmpRanking);
|
||||
return mTmpRanking.getChannel();
|
||||
}
|
||||
return null;
|
||||
@@ -452,6 +452,9 @@ public class NotificationData {
|
||||
final int N = mEntries.size();
|
||||
for (int i = 0; i < N; i++) {
|
||||
Entry entry = mEntries.valueAt(i);
|
||||
if (!getRanking(entry.key, mTmpRanking)) {
|
||||
continue;
|
||||
}
|
||||
final StatusBarNotification oldSbn = entry.notification.cloneLight();
|
||||
final String overrideGroupKey = getOverrideGroupKey(entry.key);
|
||||
if (!Objects.equals(oldSbn.getOverrideGroupKey(), overrideGroupKey)) {
|
||||
@@ -466,6 +469,19 @@ public class NotificationData {
|
||||
filterAndSort();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the ranking from the current ranking map.
|
||||
*
|
||||
* @param key the key to look up
|
||||
* @param outRanking the ranking to populate
|
||||
*
|
||||
* @return {@code true} if the ranking was properly obtained.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
protected boolean getRanking(String key, Ranking outRanking) {
|
||||
return mRankingMap.getRanking(key, outRanking);
|
||||
}
|
||||
|
||||
// TODO: This should not be public. Instead the Environment should notify this class when
|
||||
// anything changed, and this class should call back the UI so it updates itself.
|
||||
public void filterAndSort() {
|
||||
@@ -573,7 +589,7 @@ public class NotificationData {
|
||||
}
|
||||
|
||||
private void dumpEntry(PrintWriter pw, String indent, int i, Entry e) {
|
||||
mRankingMap.getRanking(e.key, mTmpRanking);
|
||||
getRanking(e.key, mTmpRanking);
|
||||
pw.print(indent);
|
||||
pw.println(" [" + i + "] key=" + e.key + " icon=" + e.icon);
|
||||
StatusBarNotification n = e.notification;
|
||||
|
||||
@@ -135,5 +135,11 @@ public class NotificationDataTest extends SysuiTestCase {
|
||||
public NotificationChannel getChannel(String key) {
|
||||
return new NotificationChannel(null, null, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean getRanking(String key, NotificationListenerService.Ranking outRanking) {
|
||||
super.getRanking(key, outRanking);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user