Loading packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java +40 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import static android.view.Display.DEFAULT_DISPLAY; import android.app.Presentation; import android.content.Context; import android.graphics.Color; import android.graphics.Point; import android.hardware.display.DisplayManager; import android.media.MediaRouter; Loading @@ -32,9 +33,11 @@ import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; import com.android.systemui.Dependency; import com.android.systemui.statusbar.NavigationBarController; import com.android.systemui.statusbar.phone.NavigationBarView; import com.android.systemui.util.InjectionInflationController; // TODO(multi-display): Support multiple external displays public class KeyguardDisplayManager { protected static final String TAG = "KeyguardDisplayManager"; private static boolean DEBUG = KeyguardConstants.DEBUG; Loading @@ -49,6 +52,9 @@ public class KeyguardDisplayManager { private final SparseArray<Presentation> mPresentations = new SparseArray<>(); private final NavigationBarController mNavBarController = Dependency.get(NavigationBarController.class); private final DisplayManager.DisplayListener mDisplayListener = new DisplayManager.DisplayListener() { Loading @@ -56,6 +62,7 @@ public class KeyguardDisplayManager { public void onDisplayAdded(int displayId) { final Display display = mDisplayService.getDisplay(displayId); if (mShowing) { updateNavigationBarVisibility(displayId, false /* navBarVisible */); showPresentation(display); } } Loading Loading @@ -192,11 +199,15 @@ public class KeyguardDisplayManager { if (showing) { final Display[] displays = mDisplayService.getDisplays(); for (Display display : displays) { int displayId = display.getDisplayId(); updateNavigationBarVisibility(displayId, false /* navBarVisible */); changed |= showPresentation(display); } } else { changed = mPresentations.size() > 0; for (int i = mPresentations.size() - 1; i >= 0; i--) { int displayId = mPresentations.keyAt(i); updateNavigationBarVisibility(displayId, true /* navBarVisible */); mPresentations.valueAt(i).dismiss(); } mPresentations.clear(); Loading @@ -204,6 +215,25 @@ public class KeyguardDisplayManager { return changed; } // TODO(b/127878649): this logic is from // {@link StatusBarKeyguardViewManager#updateNavigationBarVisibility}. Try to revisit a long // term solution in R. private void updateNavigationBarVisibility(int displayId, boolean navBarVisible) { // Leave this task to {@link StatusBarKeyguardViewManager} if (displayId == DEFAULT_DISPLAY) return; NavigationBarView navBarView = mNavBarController.getNavigationBarView(displayId); // We may not have nav bar on a display. if (navBarView == null) return; if (navBarVisible) { navBarView.getRootView().setVisibility(View.VISIBLE); } else { navBarView.getRootView().setVisibility(View.GONE); } } private final static class KeyguardPresentation extends Presentation { private static final int VIDEO_SAFE_REGION = 80; // Percentage of display width & height private static final int MOVE_CLOCK_TIMEOUT = 10000; // 10s Loading Loading @@ -251,6 +281,15 @@ public class KeyguardDisplayManager { LayoutInflater inflater = mInjectableInflater.injectable( LayoutInflater.from(getContext())); setContentView(inflater.inflate(R.layout.keyguard_presentation, null)); // Logic to make the lock screen fullscreen getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); getWindow().setNavigationBarContrastEnforced(false); getWindow().setNavigationBarColor(Color.TRANSPARENT); mClock = findViewById(R.id.clock); // Avoid screen burn in Loading packages/SystemUI/src/com/android/systemui/statusbar/NavigationBarController.java +13 −2 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ import android.view.IWindowManager; import android.view.View; import android.view.WindowManagerGlobal; import androidx.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.statusbar.RegisterStatusBarResult; import com.android.systemui.Dependency; Loading Loading @@ -213,8 +215,17 @@ public class NavigationBarController implements Callbacks { } /** @return {@link NavigationBarView} on the default display. */ public NavigationBarView getDefaultNavigationBarView() { NavigationBarFragment navBar = mNavigationBars.get(DEFAULT_DISPLAY); public @Nullable NavigationBarView getDefaultNavigationBarView() { return getNavigationBarView(DEFAULT_DISPLAY); } /** * @param displayId the ID of display which Navigation bar is on * @return {@link NavigationBarView} on the display with {@code displayId}. * {@code null} if no navigation bar on that display. */ public @Nullable NavigationBarView getNavigationBarView(int displayId) { NavigationBarFragment navBar = mNavigationBars.get(displayId); return (navBar == null) ? null : (NavigationBarView) navBar.getView(); } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +1 −1 Original line number Diff line number Diff line Loading @@ -3487,7 +3487,7 @@ public class StatusBar extends SystemUI implements DemoMode, // TODO: Figure out way to remove these. public NavigationBarView getNavigationBarView() { return mNavigationBarController.getDefaultNavigationBarView(); return mNavigationBarController.getNavigationBarView(mDisplayId); } /** Loading services/core/java/com/android/server/wm/DisplayPolicy.java +3 −1 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER; import static android.view.WindowManager.LayoutParams.TYPE_DREAM; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_CONSUMER; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL; import static android.view.WindowManager.LayoutParams.TYPE_SCREENSHOT; Loading Loading @@ -2007,7 +2008,8 @@ public class DisplayPolicy { pf.set(displayFrames.mOverscan); } else if ((sysUiFl & SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) != 0 && (type >= FIRST_APPLICATION_WINDOW && type <= LAST_SUB_WINDOW || type == TYPE_VOLUME_OVERLAY)) { || type == TYPE_VOLUME_OVERLAY || type == TYPE_KEYGUARD_DIALOG)) { // Asking for layout as if the nav bar is hidden, lets the application // extend into the unrestricted overscan screen area. We only do this for // application windows and certain system windows to ensure no window that Loading services/core/java/com/android/server/wm/WindowState.java +2 −1 Original line number Diff line number Diff line Loading @@ -1078,7 +1078,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP + mRequestedWidth + ", mRequestedheight=" + mRequestedHeight + ") to" + " (pw=" + pw + ", ph=" + ph + "): frame=" + mWindowFrames.mFrame.toShortString() + " " + mWindowFrames.getInsetsInfo()); + " " + mWindowFrames.getInsetsInfo() + " " + mAttrs.getTitle()); } // TODO: Look into whether this override is still necessary. Loading Loading
packages/SystemUI/src/com/android/keyguard/KeyguardDisplayManager.java +40 −1 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import static android.view.Display.DEFAULT_DISPLAY; import android.app.Presentation; import android.content.Context; import android.graphics.Color; import android.graphics.Point; import android.hardware.display.DisplayManager; import android.media.MediaRouter; Loading @@ -32,9 +33,11 @@ import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; import com.android.systemui.Dependency; import com.android.systemui.statusbar.NavigationBarController; import com.android.systemui.statusbar.phone.NavigationBarView; import com.android.systemui.util.InjectionInflationController; // TODO(multi-display): Support multiple external displays public class KeyguardDisplayManager { protected static final String TAG = "KeyguardDisplayManager"; private static boolean DEBUG = KeyguardConstants.DEBUG; Loading @@ -49,6 +52,9 @@ public class KeyguardDisplayManager { private final SparseArray<Presentation> mPresentations = new SparseArray<>(); private final NavigationBarController mNavBarController = Dependency.get(NavigationBarController.class); private final DisplayManager.DisplayListener mDisplayListener = new DisplayManager.DisplayListener() { Loading @@ -56,6 +62,7 @@ public class KeyguardDisplayManager { public void onDisplayAdded(int displayId) { final Display display = mDisplayService.getDisplay(displayId); if (mShowing) { updateNavigationBarVisibility(displayId, false /* navBarVisible */); showPresentation(display); } } Loading Loading @@ -192,11 +199,15 @@ public class KeyguardDisplayManager { if (showing) { final Display[] displays = mDisplayService.getDisplays(); for (Display display : displays) { int displayId = display.getDisplayId(); updateNavigationBarVisibility(displayId, false /* navBarVisible */); changed |= showPresentation(display); } } else { changed = mPresentations.size() > 0; for (int i = mPresentations.size() - 1; i >= 0; i--) { int displayId = mPresentations.keyAt(i); updateNavigationBarVisibility(displayId, true /* navBarVisible */); mPresentations.valueAt(i).dismiss(); } mPresentations.clear(); Loading @@ -204,6 +215,25 @@ public class KeyguardDisplayManager { return changed; } // TODO(b/127878649): this logic is from // {@link StatusBarKeyguardViewManager#updateNavigationBarVisibility}. Try to revisit a long // term solution in R. private void updateNavigationBarVisibility(int displayId, boolean navBarVisible) { // Leave this task to {@link StatusBarKeyguardViewManager} if (displayId == DEFAULT_DISPLAY) return; NavigationBarView navBarView = mNavBarController.getNavigationBarView(displayId); // We may not have nav bar on a display. if (navBarView == null) return; if (navBarVisible) { navBarView.getRootView().setVisibility(View.VISIBLE); } else { navBarView.getRootView().setVisibility(View.GONE); } } private final static class KeyguardPresentation extends Presentation { private static final int VIDEO_SAFE_REGION = 80; // Percentage of display width & height private static final int MOVE_CLOCK_TIMEOUT = 10000; // 10s Loading Loading @@ -251,6 +281,15 @@ public class KeyguardDisplayManager { LayoutInflater inflater = mInjectableInflater.injectable( LayoutInflater.from(getContext())); setContentView(inflater.inflate(R.layout.keyguard_presentation, null)); // Logic to make the lock screen fullscreen getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); getWindow().setNavigationBarContrastEnforced(false); getWindow().setNavigationBarColor(Color.TRANSPARENT); mClock = findViewById(R.id.clock); // Avoid screen burn in Loading
packages/SystemUI/src/com/android/systemui/statusbar/NavigationBarController.java +13 −2 Original line number Diff line number Diff line Loading @@ -32,6 +32,8 @@ import android.view.IWindowManager; import android.view.View; import android.view.WindowManagerGlobal; import androidx.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.statusbar.RegisterStatusBarResult; import com.android.systemui.Dependency; Loading Loading @@ -213,8 +215,17 @@ public class NavigationBarController implements Callbacks { } /** @return {@link NavigationBarView} on the default display. */ public NavigationBarView getDefaultNavigationBarView() { NavigationBarFragment navBar = mNavigationBars.get(DEFAULT_DISPLAY); public @Nullable NavigationBarView getDefaultNavigationBarView() { return getNavigationBarView(DEFAULT_DISPLAY); } /** * @param displayId the ID of display which Navigation bar is on * @return {@link NavigationBarView} on the display with {@code displayId}. * {@code null} if no navigation bar on that display. */ public @Nullable NavigationBarView getNavigationBarView(int displayId) { NavigationBarFragment navBar = mNavigationBars.get(displayId); return (navBar == null) ? null : (NavigationBarView) navBar.getView(); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +1 −1 Original line number Diff line number Diff line Loading @@ -3487,7 +3487,7 @@ public class StatusBar extends SystemUI implements DemoMode, // TODO: Figure out way to remove these. public NavigationBarView getNavigationBarView() { return mNavigationBarController.getDefaultNavigationBarView(); return mNavigationBarController.getNavigationBarView(mDisplayId); } /** Loading
services/core/java/com/android/server/wm/DisplayPolicy.java +3 −1 Original line number Diff line number Diff line Loading @@ -70,6 +70,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_DOCK_DIVIDER; import static android.view.WindowManager.LayoutParams.TYPE_DREAM; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_CONSUMER; import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD; import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR; import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL; import static android.view.WindowManager.LayoutParams.TYPE_SCREENSHOT; Loading Loading @@ -2007,7 +2008,8 @@ public class DisplayPolicy { pf.set(displayFrames.mOverscan); } else if ((sysUiFl & SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) != 0 && (type >= FIRST_APPLICATION_WINDOW && type <= LAST_SUB_WINDOW || type == TYPE_VOLUME_OVERLAY)) { || type == TYPE_VOLUME_OVERLAY || type == TYPE_KEYGUARD_DIALOG)) { // Asking for layout as if the nav bar is hidden, lets the application // extend into the unrestricted overscan screen area. We only do this for // application windows and certain system windows to ensure no window that Loading
services/core/java/com/android/server/wm/WindowState.java +2 −1 Original line number Diff line number Diff line Loading @@ -1078,7 +1078,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP + mRequestedWidth + ", mRequestedheight=" + mRequestedHeight + ") to" + " (pw=" + pw + ", ph=" + ph + "): frame=" + mWindowFrames.mFrame.toShortString() + " " + mWindowFrames.getInsetsInfo()); + " " + mWindowFrames.getInsetsInfo() + " " + mAttrs.getTitle()); } // TODO: Look into whether this override is still necessary. Loading