From 2d3382a8b41b6649e4062d2cc41f9c94d8487eca Mon Sep 17 00:00:00 2001 From: Garfield Tan Date: Wed, 4 Aug 2021 14:17:31 -0700 Subject: [PATCH 1/2] Render window decoration in WM shell There are still several things missing in this CL: 1. Still need to wire up freeform resizing. This is done in a separate CL. 2. Check if a11y works as intended. 3. Wire up fullscreen and window decorations for freeform displays. 4. Immersive mode work. Bug: 165794880 Bug: 165794636 Test: Caption shows up. Change-Id: I7c0e1d55d6c9d03332a58d31ade88aef06a84048 --- .../res/color/decor_button_dark_color.xml | 21 ++ .../res/color/decor_button_light_color.xml | 21 ++ .../res/color/decor_caption_title_color.xml | 23 ++ .../res/drawable/decor_caption_title.xml | 22 ++ .../res/drawable/decor_close_button_dark.xml | 32 +++ .../drawable/decor_maximize_button_dark.xml | 36 +++ .../res/layout/caption_window_decoration.xml | 45 +++ libs/WindowManager/Shell/res/values/attrs.xml | 4 + .../Shell/res/values/strings.xml | 8 + .../com/android/wm/shell/ShellInitImpl.java | 4 +- .../wm/shell/dagger/WMShellBaseModule.java | 8 +- .../wm/shell/dagger/WMShellModule.java | 25 +- .../shell/freeform/FreeformTaskListener.java | 53 ++-- .../CaptionWindowDecorViewModel.java | 136 +++++++++ .../windowdecor/CaptionWindowDecoration.java | 143 ++++++++++ .../windowdecor/TaskFocusStateConsumer.java | 21 ++ .../windowdecor/WindowDecorLinearLayout.java | 72 +++++ .../windowdecor/WindowDecorViewModel.java | 49 ++++ .../shell/windowdecor/WindowDecoration.java | 265 ++++++++++++++++++ .../core/java/com/android/server/wm/Task.java | 42 --- 20 files changed, 954 insertions(+), 76 deletions(-) create mode 100644 libs/WindowManager/Shell/res/color/decor_button_dark_color.xml create mode 100644 libs/WindowManager/Shell/res/color/decor_button_light_color.xml create mode 100644 libs/WindowManager/Shell/res/color/decor_caption_title_color.xml create mode 100644 libs/WindowManager/Shell/res/drawable/decor_caption_title.xml create mode 100644 libs/WindowManager/Shell/res/drawable/decor_close_button_dark.xml create mode 100644 libs/WindowManager/Shell/res/drawable/decor_maximize_button_dark.xml create mode 100644 libs/WindowManager/Shell/res/layout/caption_window_decoration.xml create mode 100644 libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecorViewModel.java create mode 100644 libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java create mode 100644 libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/TaskFocusStateConsumer.java create mode 100644 libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecorLinearLayout.java create mode 100644 libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecorViewModel.java create mode 100644 libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/WindowDecoration.java diff --git a/libs/WindowManager/Shell/res/color/decor_button_dark_color.xml b/libs/WindowManager/Shell/res/color/decor_button_dark_color.xml new file mode 100644 index 0000000000000..bf325bd84c001 --- /dev/null +++ b/libs/WindowManager/Shell/res/color/decor_button_dark_color.xml @@ -0,0 +1,21 @@ + + + + + + diff --git a/libs/WindowManager/Shell/res/color/decor_button_light_color.xml b/libs/WindowManager/Shell/res/color/decor_button_light_color.xml new file mode 100644 index 0000000000000..2e48bca7786a9 --- /dev/null +++ b/libs/WindowManager/Shell/res/color/decor_button_light_color.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file diff --git a/libs/WindowManager/Shell/res/color/decor_caption_title_color.xml b/libs/WindowManager/Shell/res/color/decor_caption_title_color.xml new file mode 100644 index 0000000000000..1ecc13e4da389 --- /dev/null +++ b/libs/WindowManager/Shell/res/color/decor_caption_title_color.xml @@ -0,0 +1,23 @@ + + + + + + + + diff --git a/libs/WindowManager/Shell/res/drawable/decor_caption_title.xml b/libs/WindowManager/Shell/res/drawable/decor_caption_title.xml new file mode 100644 index 0000000000000..8207365a737d9 --- /dev/null +++ b/libs/WindowManager/Shell/res/drawable/decor_caption_title.xml @@ -0,0 +1,22 @@ + + + + + diff --git a/libs/WindowManager/Shell/res/drawable/decor_close_button_dark.xml b/libs/WindowManager/Shell/res/drawable/decor_close_button_dark.xml new file mode 100644 index 0000000000000..f2f1a1d55dee6 --- /dev/null +++ b/libs/WindowManager/Shell/res/drawable/decor_close_button_dark.xml @@ -0,0 +1,32 @@ + + + + + + + diff --git a/libs/WindowManager/Shell/res/drawable/decor_maximize_button_dark.xml b/libs/WindowManager/Shell/res/drawable/decor_maximize_button_dark.xml new file mode 100644 index 0000000000000..ab4e29ac97e58 --- /dev/null +++ b/libs/WindowManager/Shell/res/drawable/decor_maximize_button_dark.xml @@ -0,0 +1,36 @@ + + + + + + + + + + diff --git a/libs/WindowManager/Shell/res/layout/caption_window_decoration.xml b/libs/WindowManager/Shell/res/layout/caption_window_decoration.xml new file mode 100644 index 0000000000000..a112f1933dd11 --- /dev/null +++ b/libs/WindowManager/Shell/res/layout/caption_window_decoration.xml @@ -0,0 +1,45 @@ + + + +