diff options
| author | 2016-07-07 20:31:35 +0000 | |
|---|---|---|
| committer | 2016-07-07 20:31:38 +0000 | |
| commit | 99f70388ff49f650cfecb778b3ab8da5a4ecbcdd (patch) | |
| tree | 93f0e66558130f7e540a5f4886675526d988ec96 | |
| parent | a96d445aef1456398410e41e9c29d9181287edc5 (diff) | |
| parent | 24d949138fe85e0efe55f181f270e6791b06f603 (diff) | |
Merge "Suppress PRE_BOOT notifications for some profiles." into nyc-mr1-dev
3 files changed, 11 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/am/PreBootBroadcaster.java b/services/core/java/com/android/server/am/PreBootBroadcaster.java index 3ed3d9a29c69..a7d09d0882bf 100644 --- a/services/core/java/com/android/server/am/PreBootBroadcaster.java +++ b/services/core/java/com/android/server/am/PreBootBroadcaster.java @@ -57,7 +57,7 @@ public abstract class PreBootBroadcaster extends IIntentReceiver.Stub { private int mIndex = 0; public PreBootBroadcaster(ActivityManagerService service, int userId, - ProgressReporter progress) { + ProgressReporter progress, boolean quiet) { mService = service; mUserId = userId; mProgress = progress; @@ -68,7 +68,9 @@ public abstract class PreBootBroadcaster extends IIntentReceiver.Stub { mTargets = mService.mContext.getPackageManager().queryBroadcastReceiversAsUser(mIntent, MATCH_SYSTEM_ONLY, UserHandle.of(userId)); - mHandler.obtainMessage(MSG_SHOW).sendToTarget(); + if (!quiet) { + mHandler.obtainMessage(MSG_SHOW).sendToTarget(); + } } public void sendNext() { diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java index d25f2cb76d74..4de09bd5318e 100644 --- a/services/core/java/com/android/server/am/UserController.java +++ b/services/core/java/com/android/server/am/UserController.java @@ -351,7 +351,11 @@ final class UserController { // PRE_BOOT receivers are finished to avoid ANR'ing apps final UserInfo info = getUserInfo(userId); if (!Objects.equals(info.lastLoggedInFingerprint, Build.FINGERPRINT)) { - new PreBootBroadcaster(mService, userId, null) { + // Suppress double notifications for managed profiles that + // were unlocked automatically (no challenge token required) + // as part of their parent user being unlocked. + final boolean quiet = info.isManagedProfile() && !uss.tokenProvided; + new PreBootBroadcaster(mService, userId, null, quiet) { @Override public void onFinished() { finishUserUnlockedCompleted(uss); @@ -972,6 +976,7 @@ final class UserController { return false; } else { uss.mUnlockProgress.addListener(listener); + uss.tokenProvided = (token != null); } finishUserUnlocking(uss); diff --git a/services/core/java/com/android/server/am/UserState.java b/services/core/java/com/android/server/am/UserState.java index 952283eb7290..ff8014cbb985 100644 --- a/services/core/java/com/android/server/am/UserState.java +++ b/services/core/java/com/android/server/am/UserState.java @@ -54,6 +54,7 @@ public final class UserState { public int state = STATE_BOOTING; public int lastState = STATE_BOOTING; public boolean switching; + public boolean tokenProvided; /** * The last time that a provider was reported to usage stats as being brought to important |