Plumb lights out mode through from the window manager to the status bar running in the system ui process.
Lights out mode itself isn't implemented.
Change-Id: Ieeef0eb9ae5be23000f770e74e8ee66472f4c673
diff --git a/services/java/com/android/server/StatusBarManagerService.java b/services/java/com/android/server/StatusBarManagerService.java
index 717c309..dc86eeb 100644
--- a/services/java/com/android/server/StatusBarManagerService.java
+++ b/services/java/com/android/server/StatusBarManagerService.java
@@ -68,6 +68,10 @@
ArrayList<DisableRecord> mDisableRecords = new ArrayList<DisableRecord>();
int mDisabled = 0;
+ Object mLock = new Object();
+ // We usually call it lights out mode, but double negatives are annoying
+ boolean mLightsOn = true;
+
private class DisableRecord implements IBinder.DeathRecipient {
String pkg;
int what;
@@ -242,6 +246,30 @@
}
}
+ public void setActiveWindowIsFullscreen(boolean fullscreen) {
+ // We could get away with a separate permission here, but STATUS_BAR is
+ // signatureOrSystem which is probably good enough. There is no public API
+ // for this, so the question is a security issue, not an API compatibility issue.
+ enforceStatusBar();
+
+ final boolean lightsOn = !fullscreen;
+ synchronized (mLock) {
+ if (mLightsOn != lightsOn) {
+ mLightsOn = lightsOn;
+ mHandler.post(new Runnable() {
+ public void run() {
+ if (mBar != null) {
+ try {
+ mBar.setLightsOn(lightsOn);
+ } catch (RemoteException ex) {
+ }
+ }
+ }
+ });
+ }
+ }
+ }
+
private void enforceStatusBar() {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.STATUS_BAR,
"StatusBarManagerService");
@@ -262,7 +290,8 @@
// Callbacks from the status bar service.
// ================================================================================
public void registerStatusBar(IStatusBar bar, StatusBarIconList iconList,
- List<IBinder> notificationKeys, List<StatusBarNotification> notifications) {
+ List<IBinder> notificationKeys, List<StatusBarNotification> notifications,
+ boolean lightsOn[]) {
enforceStatusBarService();
Slog.i(TAG, "registerStatusBar bar=" + bar);
@@ -276,6 +305,9 @@
notifications.add(e.getValue());
}
}
+ synchronized (mLock) {
+ lightsOn[0] = mLightsOn;
+ }
}
/**