summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/am
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2009-07-28 17:49:55 -0700
committerDianne Hackborn <hackbod@google.com>2009-07-28 17:55:13 -0700
commita6ddc8af22af6bce879c5bf906aad16c0b3d6b01 (patch)
tree8a8d91e64c127d07657cb3d32c2ab130673120e6 /services/java/com/android/server/am
parentac38dfc5435b57281c97165e4de5b5a12af98a20 (diff)
downloadframeworks_base-a6ddc8af22af6bce879c5bf906aad16c0b3d6b01.zip
frameworks_base-a6ddc8af22af6bce879c5bf906aad16c0b3d6b01.tar.gz
frameworks_base-a6ddc8af22af6bce879c5bf906aad16c0b3d6b01.tar.bz2
Fix issue #1999179: search -> click result -> press home = search dialog is shown then hidden
Re-arrange various things to ensure that the search dialog is told about system windows being closed before it is told about the navigation back to home.
Diffstat (limited to 'services/java/com/android/server/am')
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java28
1 files changed, 28 insertions, 0 deletions
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 5ea59ca..51ee41a 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -4760,6 +4760,34 @@ public final class ActivityManagerService extends ActivityManagerNative implemen
}
}
+ public void closeSystemDialogs(String reason) {
+ Intent intent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
+ if (reason != null) {
+ intent.putExtra("reason", reason);
+ }
+
+ final int uid = Binder.getCallingUid();
+ final long origId = Binder.clearCallingIdentity();
+ synchronized (this) {
+ int i = mWatchers.beginBroadcast();
+ while (i > 0) {
+ i--;
+ IActivityWatcher w = mWatchers.getBroadcastItem(i);
+ if (w != null) {
+ try {
+ w.closingSystemDialogs(reason);
+ } catch (RemoteException e) {
+ }
+ }
+ }
+ mWatchers.finishBroadcast();
+
+ broadcastIntentLocked(null, null, intent, null,
+ null, 0, null, null, null, false, false, -1, uid);
+ }
+ Binder.restoreCallingIdentity(origId);
+ }
+
private void restartPackageLocked(final String packageName, int uid) {
uninstallPackageLocked(packageName, uid, false);
Intent intent = new Intent(Intent.ACTION_PACKAGE_RESTARTED,