diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java index 4a092140ed785..fe7afed8de138 100644 --- a/core/java/android/app/StatusBarManager.java +++ b/core/java/android/app/StatusBarManager.java @@ -14,15 +14,14 @@ * limitations under the License. */ - package android.app; import android.annotation.IntDef; import android.annotation.SystemService; import android.content.Context; import android.os.Binder; -import android.os.RemoteException; import android.os.IBinder; +import android.os.RemoteException; import android.os.ServiceManager; import android.util.Slog; import android.view.View; diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java index 38dc33fa4dbc7..f10bf1a3ffb5b 100644 --- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java +++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java @@ -97,12 +97,58 @@ public class StatusBarManagerService extends IStatusBarService.Stub { int what2; IBinder token; + public DisableRecord(int userId, IBinder token) { + this.userId = userId; + this.token = token; + try { + token.linkToDeath(this, 0); + } catch (RemoteException re) { + // Give up + } + } + + @Override public void binderDied() { Slog.i(TAG, "binder died for pkg=" + pkg); disableForUser(0, token, pkg, userId); disable2ForUser(0, token, pkg, userId); token.unlinkToDeath(this, 0); } + + public void setFlags(int what, int which, String pkg) { + switch (which) { + case 1: + what1 = what; + return; + case 2: + what2 = what; + return; + default: + Slog.w(TAG, "Can't set unsupported disable flag " + which + + ": 0x" + Integer.toHexString(what)); + } + this.pkg = pkg; + } + + public int getFlags(int which) { + switch (which) { + case 1: return what1; + case 2: return what2; + default: + Slog.w(TAG, "Can't get unsupported disable flag " + which); + return 0; + } + } + + public boolean isEmpty() { + return what1 == 0 && what2 == 0; + } + + @Override + public String toString() { + return String.format("userId=%d what1=0x%08X what2=0x%08X pkg=%s token=%s", + userId, what1, what2, pkg, token); + } } /** @@ -970,42 +1016,42 @@ public class StatusBarManagerService extends IStatusBarService.Stub { Slog.d(TAG, "manageDisableList userId=" + userId + " what=0x" + Integer.toHexString(what) + " pkg=" + pkg); } - // update the list + + // Find matching record, if any final int N = mDisableRecords.size(); - DisableRecord tok = null; + DisableRecord record = null; int i; - for (i=0; i