summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2014-07-28 13:22:34 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-07-24 15:35:58 +0000
commit8a9068573c8f2f038d1eebbe9ccad18bc291f5ce (patch)
treee3c39ad35a9d2a63191d89618d7983d76ab2914c /services
parentddbce3263270c3b66c377be2d9f388fc11b23483 (diff)
parent0d266899da8f612194a8393ec69c4fd870f2f45c (diff)
downloadframeworks_base-8a9068573c8f2f038d1eebbe9ccad18bc291f5ce.zip
frameworks_base-8a9068573c8f2f038d1eebbe9ccad18bc291f5ce.tar.gz
frameworks_base-8a9068573c8f2f038d1eebbe9ccad18bc291f5ce.tar.bz2
Merge "Fix status icon reappearing for legacy activities" into lmp-dev
Diffstat (limited to 'services')
-rwxr-xr-xservices/core/java/com/android/server/am/ActivityStack.java12
-rw-r--r--services/core/java/com/android/server/am/BroadcastQueue.java16
-rw-r--r--services/core/java/com/android/server/trust/TrustManagerService.java2
3 files changed, 24 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index 1c0057b..d069dfe 100755
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -1052,6 +1052,14 @@ final class ActivityStack {
next.idle = false;
next.results = null;
next.newIntents = null;
+
+ if (next.isHomeActivity() && next.isNotResolverActivity()) {
+ ProcessRecord app = next.task.mActivities.get(0).app;
+ if (app != null && app != mService.mHomeProcess) {
+ mService.mHomeProcess = app;
+ }
+ }
+
if (next.nowVisible) {
// We won't get a call to reportActivityVisibleLocked() so dismiss lockscreen now.
mStackSupervisor.dismissKeyguard();
@@ -2067,6 +2075,8 @@ final class ActivityStack {
final int rootActivityNdx = task.findEffectiveRootIndex();
for (int i = numActivities - 1; i > rootActivityNdx; --i ) {
ActivityRecord target = activities.get(i);
+ if (target.frontOfTask)
+ break;
final int flags = target.info.flags;
final boolean finishOnTaskLaunch =
@@ -2223,6 +2233,8 @@ final class ActivityStack {
// Do not operate on or below the effective root Activity.
for (int i = numActivities - 1; i > rootActivityNdx; --i) {
ActivityRecord target = activities.get(i);
+ if (target.frontOfTask)
+ break;
final int flags = target.info.flags;
boolean finishOnTaskLaunch = (flags & ActivityInfo.FLAG_FINISH_ON_TASK_LAUNCH) != 0;
diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java
index cdcc74b..4e554eb 100644
--- a/services/core/java/com/android/server/am/BroadcastQueue.java
+++ b/services/core/java/com/android/server/am/BroadcastQueue.java
@@ -424,11 +424,16 @@ public final class BroadcastQueue {
Intent intent, int resultCode, String data, Bundle extras,
boolean ordered, boolean sticky, int sendingUser) throws RemoteException {
// Send the intent to the receiver asynchronously using one-way binder calls.
- if (app != null && app.thread != null) {
- // If we have an app thread, do the call through that so it is
- // correctly ordered with other one-way calls.
- app.thread.scheduleRegisteredReceiver(receiver, intent, resultCode,
- data, extras, ordered, sticky, sendingUser, app.repProcState);
+ if (app != null) {
+ if (app.thread != null) {
+ // If we have an app thread, do the call through that so it is
+ // correctly ordered with other one-way calls.
+ app.thread.scheduleRegisteredReceiver(receiver, intent, resultCode,
+ data, extras, ordered, sticky, sendingUser, app.repProcState);
+ } else {
+ // Application has died. Receiver doesn't exist.
+ throw new RemoteException("app.thread must not be null");
+ }
} else {
receiver.performReceive(intent, resultCode, data, extras, ordered,
sticky, sendingUser);
@@ -670,6 +675,7 @@ public final class BroadcastQueue {
// (local and remote) isn't kept in the mBroadcastHistory.
r.resultTo = null;
} catch (RemoteException e) {
+ r.resultTo = null;
Slog.w(TAG, "Failure ["
+ mQueueName + "] sending broadcast result of "
+ r.intent, e);
diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java
index 6f72b94..14436aa 100644
--- a/services/core/java/com/android/server/trust/TrustManagerService.java
+++ b/services/core/java/com/android/server/trust/TrustManagerService.java
@@ -372,7 +372,7 @@ public class TrustManagerService extends SystemService {
private void removeListener(ITrustListener listener) {
for (int i = 0; i < mTrustListeners.size(); i++) {
if (mTrustListeners.get(i).asBinder() == listener.asBinder()) {
- mTrustListeners.get(i);
+ mTrustListeners.remove(i);
return;
}
}