summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorJoe Onorato <joeo@google.com>2011-01-23 17:53:23 -0800
committerJoe Onorato <joeo@google.com>2011-01-23 19:22:52 -0800
commit664644d9e012aa2a28ac96f305b1ce6499ec8806 (patch)
treed8db43b09de516fefd82adf4fc4ec22417dda648 /services
parentfac86056b285bf59c1c3e774f1cb9f6de0be59ba (diff)
downloadframeworks_base-664644d9e012aa2a28ac96f305b1ce6499ec8806.zip
frameworks_base-664644d9e012aa2a28ac96f305b1ce6499ec8806.tar.gz
frameworks_base-664644d9e012aa2a28ac96f305b1ce6499ec8806.tar.bz2
visibility ("lights out") API.
1. Views may setSystemUiVisibility() to recommend that the system chrome (status bar or other UI) show or hide itself. (This functionality was previously available only via the FLAG_FULLSCREEN window flag for some SystemUI implementations.) 2. Views may register a OnSystemUiVisibilityChangedListener on a view, and find out when the system UI actually appears or disappears, allowing apps to coordinate the appearance of their own UI if desired. Bug: 3241144 Change-Id: Ia1758d94099182d49a1e3688ea2738ae4995b829
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/StatusBarManagerService.java4
-rw-r--r--services/java/com/android/server/WindowManagerService.java19
2 files changed, 22 insertions, 1 deletions
diff --git a/services/java/com/android/server/StatusBarManagerService.java b/services/java/com/android/server/StatusBarManagerService.java
index cbfa4ee..50ea3fa 100644
--- a/services/java/com/android/server/StatusBarManagerService.java
+++ b/services/java/com/android/server/StatusBarManagerService.java
@@ -32,6 +32,7 @@ import android.os.Binder;
import android.os.Handler;
import android.os.SystemClock;
import android.util.Slog;
+import android.view.View;
import com.android.internal.statusbar.IStatusBar;
import com.android.internal.statusbar.IStatusBarService;
@@ -308,10 +309,11 @@ public class StatusBarManagerService extends IStatusBarService.Stub
* app keeps trying to turn it on. For now they can just fight it out. Having
* these two separte inputs will allow us to keep that change local to here. --joeo
*/
- public void setLightsOn(boolean lightsOn) {
+ public void setSystemUiVisibility(int vis) {
enforceStatusBarService();
synchronized (mLock) {
+ final boolean lightsOn = (vis & View.STATUS_BAR_HIDDEN) == 0;
updateLightsOnLocked(lightsOn);
}
}
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java
index ac3b96b..8a353ce 100644
--- a/services/java/com/android/server/WindowManagerService.java
+++ b/services/java/com/android/server/WindowManagerService.java
@@ -8891,6 +8891,8 @@ public class WindowManagerService extends IWindowManager.Stub
// Ignore if process has died.
}
}
+
+ mPolicy.focusChanged(lastFocus, newFocus);
}
} break;
@@ -11434,6 +11436,23 @@ public class WindowManagerService extends IWindowManager.Stub
}
@Override
+ public void statusBarVisibilityChanged(int visibility) {
+ synchronized (mWindowMap) {
+ final int N = mWindows.size();
+ for (int i = 0; i < N; i++) {
+ WindowState ws = mWindows.get(i);
+ try {
+ if (ws.getAttrs().hasSystemUiListeners) {
+ ws.mClient.dispatchSystemUiVisibilityChanged(visibility);
+ }
+ } catch (RemoteException e) {
+ // so sorry
+ }
+ }
+ }
+ }
+
+ @Override
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
if (mContext.checkCallingOrSelfPermission("android.permission.DUMP")
!= PackageManager.PERMISSION_GRANTED) {