Merge "Notification history should always be accessed as uid 1000" into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-04-23 21:23:45 +00:00
committed by Android (Google) Code Review
2 changed files with 16 additions and 10 deletions

View File

@@ -108,7 +108,9 @@ public class NotificationHistoryDatabase {
public void init() { public void init() {
synchronized (mLock) { synchronized (mLock) {
try { try {
mHistoryDir.mkdir(); if (!mHistoryDir.mkdir()) {
throw new IllegalStateException("could not create history directory");
}
mVersionFile.createNewFile(); mVersionFile.createNewFile();
} catch (Exception e) { } catch (Exception e) {
Slog.e(TAG, "could not create needed files", e); Slog.e(TAG, "could not create needed files", e);

View File

@@ -26,6 +26,7 @@ import android.content.Context;
import android.content.pm.UserInfo; import android.content.pm.UserInfo;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.net.Uri; import android.net.Uri;
import android.os.Binder;
import android.os.Environment; import android.os.Environment;
import android.os.Handler; import android.os.Handler;
import android.os.UserHandle; import android.os.UserHandle;
@@ -37,6 +38,7 @@ import android.util.SparseBooleanArray;
import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.FunctionalUtils;
import com.android.server.IoThread; import com.android.server.IoThread;
import java.io.File; import java.io.File;
@@ -198,16 +200,18 @@ public class NotificationHistoryManager {
} }
public void addNotification(@NonNull final HistoricalNotification notification) { public void addNotification(@NonNull final HistoricalNotification notification) {
synchronized (mLock) { Binder.withCleanCallingIdentity(() -> {
final NotificationHistoryDatabase userHistory = synchronized (mLock) {
getUserHistoryAndInitializeIfNeededLocked(notification.getUserId()); final NotificationHistoryDatabase userHistory =
if (userHistory == null) { getUserHistoryAndInitializeIfNeededLocked(notification.getUserId());
Slog.w(TAG, "Attempted to add notif for locked/gone/disabled user " if (userHistory == null) {
+ notification.getUserId()); Slog.w(TAG, "Attempted to add notif for locked/gone/disabled user "
return; + notification.getUserId());
return;
}
userHistory.addNotification(notification);
} }
userHistory.addNotification(notification); });
}
} }
public @NonNull NotificationHistory readNotificationHistory(@UserIdInt int[] userIds) { public @NonNull NotificationHistory readNotificationHistory(@UserIdInt int[] userIds) {