diff options
| author | 2018-10-26 22:55:17 +0000 | |
|---|---|---|
| committer | 2018-10-26 22:55:17 +0000 | |
| commit | 6cdb69c04f55f09bd5d264be1a26aac47c20bcee (patch) | |
| tree | da28ba4c6e6744d21833ad9145011f9ceeceba5d | |
| parent | 26f79f9c4f5059734159f71e2e848ee845c7351b (diff) | |
| parent | 2dbcf0973bd04c2b66e6280a3ce7363876ce7108 (diff) | |
Merge "Moving SysUI with legacy Recents to another build target"
223 files changed, 2201 insertions, 2216 deletions
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp index 9c33116a149b..b770d5c88324 100644 --- a/packages/SystemUI/Android.bp +++ b/packages/SystemUI/Android.bp @@ -156,3 +156,43 @@ android_app { ], } + +// Only used for products that are shipping legacy Recents +android_app { + name: "SystemUIWithLegacyRecents", + overrides: [ + "SystemUI", + ], + + platform_apis: true, + certificate: "platform", + privileged: true, + + dxflags: ["--multi-dex"], + aaptflags: [ + "--extra-packages", + "com.android.keyguard", + ], + optimize: { + proguard_flags_files: ["proguard.flags", "legacy/recents/proguard.flags"], + }, + + static_libs: [ + "SystemUI-core", + ], + libs: [ + "telephony-common", + "android.car", + "android.car.user", + ], + + srcs: [ + "legacy/recents/src/**/*.java", + "legacy/recents/src/**/I*.aidl", + ], + resource_dirs: [ + "legacy/recents/res", + ], + + manifest: "legacy/recents/AndroidManifest.xml", +} diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index fef9ae813f12..44bc3f212654 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -128,9 +128,6 @@ <!-- Needed for WallpaperManager.clear in ImageWallpaper.updateWallpaperLocked --> <uses-permission android:name="android.permission.SET_WALLPAPER"/> - <!-- Recents --> - <uses-permission android:name="android.permission.BIND_APPWIDGET" /> - <!-- Wifi Display --> <uses-permission android:name="android.permission.CONFIGURE_WIFI_DISPLAY" /> @@ -247,14 +244,14 @@ android:exported="true" /> - <!-- Recents depends on every user having their own SystemUI process, so on user switch, - ensure that the process is created by starting this service. + <!-- On user switch, this service is started to ensure that the associated SystemUI + process for the current user is started. See the resource + "config_systemUIServiceComponentsPerUser". --> <service android:name="SystemUISecondaryUserService" - android:exported="true" + android:exported="false" android:permission="com.android.systemui.permission.SELF" /> - <!-- started from PhoneWindowManager TODO: Should have an android:permission attribute --> <service android:name=".screenshot.TakeScreenshotService" @@ -313,27 +310,6 @@ </intent-filter> </activity-alias> - <!-- Service used by secondary users to register themselves with the system user. --> - <service android:name=".recents.RecentsSystemUserService" - android:exported="false" - android:permission="com.android.systemui.permission.SELF" /> - - <!-- Alternate Recents --> - <activity android:name=".recents.RecentsActivity" - android:label="@string/accessibility_desc_recent_apps" - android:exported="false" - android:launchMode="singleInstance" - android:excludeFromRecents="true" - android:stateNotNeeded="true" - android:resumeWhilePausing="true" - android:resizeableActivity="true" - android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|keyboard|keyboardHidden" - android:theme="@style/RecentsTheme.Wallpaper"> - <intent-filter> - <action android:name="com.android.systemui.recents.TOGGLE_RECENTS" /> - </intent-filter> - </activity> - <activity android:name=".stackdivider.ForcedResizableInfoActivity" android:theme="@style/ForcedResizableTheme" diff --git a/packages/SystemUI/legacy/recents/AndroidManifest.xml b/packages/SystemUI/legacy/recents/AndroidManifest.xml new file mode 100644 index 000000000000..0d8b3cd26c1a --- /dev/null +++ b/packages/SystemUI/legacy/recents/AndroidManifest.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright (c) 2018 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" + xmlns:tools="http://schemas.android.com/tools" + package="com.android.systemui" + android:sharedUserId="android.uid.systemui" + coreApp="true"> + + <application + android:name="com.android.systemui.SystemUIApplication"> + + <!-- Service used by secondary users to register themselves with the system user. --> + <service android:name=".recents.RecentsSystemUserService" + android:exported="false" + android:permission="com.android.systemui.permission.SELF" /> + + <!-- Alternate Recents --> + <activity android:name=".recents.RecentsActivity" + android:label="@string/accessibility_desc_recent_apps" + android:exported="false" + android:launchMode="singleInstance" + android:excludeFromRecents="true" + android:stateNotNeeded="true" + android:resumeWhilePausing="true" + android:resizeableActivity="true" + android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|keyboard|keyboardHidden" + android:theme="@style/RecentsTheme.Wallpaper"> + <intent-filter> + <action android:name="com.android.systemui.recents.TOGGLE_RECENTS" /> + </intent-filter> + </activity> + + </application> +</manifest> diff --git a/packages/SystemUI/legacy/recents/proguard.flags b/packages/SystemUI/legacy/recents/proguard.flags new file mode 100644 index 000000000000..c3589491865d --- /dev/null +++ b/packages/SystemUI/legacy/recents/proguard.flags @@ -0,0 +1,14 @@ +-keepclassmembers class ** { + public void onBusEvent(**); + public void onInterprocessBusEvent(**); +} +-keepclassmembers class ** extends **.EventBus$InterprocessEvent { + public <init>(android.os.Bundle); +} + +-keep class com.android.systemui.recents.views.TaskView { + public int getDim(); + public void setDim(int); + public float getTaskProgress(); + public void setTaskProgress(float); +}
\ No newline at end of file diff --git a/packages/SystemUI/res/anim/recents_fast_toggle_app_home_exit.xml b/packages/SystemUI/legacy/recents/res/anim/recents_fast_toggle_app_home_exit.xml index 69edcc757ba9..69edcc757ba9 100644 --- a/packages/SystemUI/res/anim/recents_fast_toggle_app_home_exit.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_fast_toggle_app_home_exit.xml diff --git a/packages/SystemUI/res/anim/recents_from_launcher_enter.xml b/packages/SystemUI/legacy/recents/res/anim/recents_from_launcher_enter.xml index 00b3dfda135e..00b3dfda135e 100644 --- a/packages/SystemUI/res/anim/recents_from_launcher_enter.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_from_launcher_enter.xml diff --git a/packages/SystemUI/res/anim/recents_from_launcher_exit.xml b/packages/SystemUI/legacy/recents/res/anim/recents_from_launcher_exit.xml index 33831b8c0a32..33831b8c0a32 100644 --- a/packages/SystemUI/res/anim/recents_from_launcher_exit.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_from_launcher_exit.xml diff --git a/packages/SystemUI/res/anim/recents_from_unknown_enter.xml b/packages/SystemUI/legacy/recents/res/anim/recents_from_unknown_enter.xml index da1dee007546..da1dee007546 100644 --- a/packages/SystemUI/res/anim/recents_from_unknown_enter.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_from_unknown_enter.xml diff --git a/packages/SystemUI/res/anim/recents_from_unknown_exit.xml b/packages/SystemUI/legacy/recents/res/anim/recents_from_unknown_exit.xml index 31cf26a9fdfd..31cf26a9fdfd 100644 --- a/packages/SystemUI/res/anim/recents_from_unknown_exit.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_from_unknown_exit.xml diff --git a/packages/SystemUI/res/anim/recents_launch_next_affiliated_task_bounce.xml b/packages/SystemUI/legacy/recents/res/anim/recents_launch_next_affiliated_task_bounce.xml index 74f2814b2ce8..74f2814b2ce8 100644 --- a/packages/SystemUI/res/anim/recents_launch_next_affiliated_task_bounce.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_launch_next_affiliated_task_bounce.xml diff --git a/packages/SystemUI/res/anim/recents_launch_next_affiliated_task_source.xml b/packages/SystemUI/legacy/recents/res/anim/recents_launch_next_affiliated_task_source.xml index f0fd68458801..f0fd68458801 100644 --- a/packages/SystemUI/res/anim/recents_launch_next_affiliated_task_source.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_launch_next_affiliated_task_source.xml diff --git a/packages/SystemUI/res/anim/recents_launch_next_affiliated_task_target.xml b/packages/SystemUI/legacy/recents/res/anim/recents_launch_next_affiliated_task_target.xml index 170ac829c3c2..170ac829c3c2 100644 --- a/packages/SystemUI/res/anim/recents_launch_next_affiliated_task_target.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_launch_next_affiliated_task_target.xml diff --git a/packages/SystemUI/res/anim/recents_launch_prev_affiliated_task_bounce.xml b/packages/SystemUI/legacy/recents/res/anim/recents_launch_prev_affiliated_task_bounce.xml index b19167da3dde..b19167da3dde 100644 --- a/packages/SystemUI/res/anim/recents_launch_prev_affiliated_task_bounce.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_launch_prev_affiliated_task_bounce.xml diff --git a/packages/SystemUI/res/anim/recents_launch_prev_affiliated_task_source.xml b/packages/SystemUI/legacy/recents/res/anim/recents_launch_prev_affiliated_task_source.xml index ad5341bf8ff3..ad5341bf8ff3 100644 --- a/packages/SystemUI/res/anim/recents_launch_prev_affiliated_task_source.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_launch_prev_affiliated_task_source.xml diff --git a/packages/SystemUI/res/anim/recents_launch_prev_affiliated_task_target.xml b/packages/SystemUI/legacy/recents/res/anim/recents_launch_prev_affiliated_task_target.xml index 7687f0286f25..7687f0286f25 100644 --- a/packages/SystemUI/res/anim/recents_launch_prev_affiliated_task_target.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_launch_prev_affiliated_task_target.xml diff --git a/packages/SystemUI/res/anim/recents_to_launcher_enter.xml b/packages/SystemUI/legacy/recents/res/anim/recents_to_launcher_enter.xml index 544ec88d2bfa..544ec88d2bfa 100644 --- a/packages/SystemUI/res/anim/recents_to_launcher_enter.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_to_launcher_enter.xml diff --git a/packages/SystemUI/res/anim/recents_to_launcher_exit.xml b/packages/SystemUI/legacy/recents/res/anim/recents_to_launcher_exit.xml index 226edb85d049..226edb85d049 100644 --- a/packages/SystemUI/res/anim/recents_to_launcher_exit.xml +++ b/packages/SystemUI/legacy/recents/res/anim/recents_to_launcher_exit.xml diff --git a/packages/SystemUI/res/drawable-hdpi/recents_lower_gradient.9.png b/packages/SystemUI/legacy/recents/res/drawable-hdpi/recents_lower_gradient.9.png Binary files differindex 17100f773a16..17100f773a16 100644 --- a/packages/SystemUI/res/drawable-hdpi/recents_lower_gradient.9.png +++ b/packages/SystemUI/legacy/recents/res/drawable-hdpi/recents_lower_gradient.9.png diff --git a/packages/SystemUI/res/drawable-hdpi/recents_status_gradient.9.png b/packages/SystemUI/legacy/recents/res/drawable-hdpi/recents_status_gradient.9.png Binary files differindex e969d4c26717..e969d4c26717 100644 --- a/packages/SystemUI/res/drawable-hdpi/recents_status_gradient.9.png +++ b/packages/SystemUI/legacy/recents/res/drawable-hdpi/recents_status_gradient.9.png diff --git a/packages/SystemUI/res/drawable-mdpi/recents_lower_gradient.9.png b/packages/SystemUI/legacy/recents/res/drawable-mdpi/recents_lower_gradient.9.png Binary files differindex b53bd8f92a00..b53bd8f92a00 100644 --- a/packages/SystemUI/res/drawable-mdpi/recents_lower_gradient.9.png +++ b/packages/SystemUI/legacy/recents/res/drawable-mdpi/recents_lower_gradient.9.png diff --git a/packages/SystemUI/res/drawable-mdpi/recents_status_gradient.9.png b/packages/SystemUI/legacy/recents/res/drawable-mdpi/recents_status_gradient.9.png Binary files differindex 657f710ac8d6..657f710ac8d6 100644 --- a/packages/SystemUI/res/drawable-mdpi/recents_status_gradient.9.png +++ b/packages/SystemUI/legacy/recents/res/drawable-mdpi/recents_status_gradient.9.png diff --git a/packages/SystemUI/res/drawable-xhdpi/recents_lower_gradient.9.png b/packages/SystemUI/legacy/recents/res/drawable-xhdpi/recents_lower_gradient.9.png Binary files differindex 09606f629b67..09606f629b67 100644 --- a/packages/SystemUI/res/drawable-xhdpi/recents_lower_gradient.9.png +++ b/packages/SystemUI/legacy/recents/res/drawable-xhdpi/recents_lower_gradient.9.png diff --git a/packages/SystemUI/res/drawable-xhdpi/recents_status_gradient.9.png b/packages/SystemUI/legacy/recents/res/drawable-xhdpi/recents_status_gradient.9.png Binary files differindex a444c551d430..a444c551d430 100644 --- a/packages/SystemUI/res/drawable-xhdpi/recents_status_gradient.9.png +++ b/packages/SystemUI/legacy/recents/res/drawable-xhdpi/recents_status_gradient.9.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/recents_lower_gradient.9.png b/packages/SystemUI/legacy/recents/res/drawable-xxhdpi/recents_lower_gradient.9.png Binary files differindex 427cad9f6326..427cad9f6326 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/recents_lower_gradient.9.png +++ b/packages/SystemUI/legacy/recents/res/drawable-xxhdpi/recents_lower_gradient.9.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/recents_status_gradient.9.png b/packages/SystemUI/legacy/recents/res/drawable-xxhdpi/recents_status_gradient.9.png Binary files differindex 29cf44bf381f..29cf44bf381f 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/recents_status_gradient.9.png +++ b/packages/SystemUI/legacy/recents/res/drawable-xxhdpi/recents_status_gradient.9.png diff --git a/packages/SystemUI/res/drawable-xxhdpi/recents_task_shadow.9.png b/packages/SystemUI/legacy/recents/res/drawable-xxhdpi/recents_task_shadow.9.png Binary files differindex 36e7e45494ef..36e7e45494ef 100644 --- a/packages/SystemUI/res/drawable-xxhdpi/recents_task_shadow.9.png +++ b/packages/SystemUI/legacy/recents/res/drawable-xxhdpi/recents_task_shadow.9.png diff --git a/packages/SystemUI/res/drawable/ic_lock_to_app_24dp.xml b/packages/SystemUI/legacy/recents/res/drawable/ic_lock_to_app_24dp.xml index 2d779499f6e6..2d779499f6e6 100644 --- a/packages/SystemUI/res/drawable/ic_lock_to_app_24dp.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/ic_lock_to_app_24dp.xml diff --git a/packages/SystemUI/res/drawable/recents_dismiss_dark.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_dismiss_dark.xml index b837ebef78eb..b837ebef78eb 100644 --- a/packages/SystemUI/res/drawable/recents_dismiss_dark.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_dismiss_dark.xml diff --git a/packages/SystemUI/res/drawable/recents_dismiss_light.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_dismiss_light.xml index 2b2081404b69..2b2081404b69 100644 --- a/packages/SystemUI/res/drawable/recents_dismiss_light.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_dismiss_light.xml diff --git a/packages/SystemUI/res/drawable/recents_empty.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_empty.xml index 5506de1d583f..5506de1d583f 100644 --- a/packages/SystemUI/res/drawable/recents_empty.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_empty.xml diff --git a/packages/SystemUI/res/drawable/recents_freeform_workspace_bg.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_freeform_workspace_bg.xml index 5f9341c0d151..5f9341c0d151 100644 --- a/packages/SystemUI/res/drawable/recents_freeform_workspace_bg.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_freeform_workspace_bg.xml diff --git a/packages/SystemUI/res/drawable/recents_grid_task_view_focus_frame_background.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_grid_task_view_focus_frame_background.xml index 4987f9bcf610..4987f9bcf610 100644 --- a/packages/SystemUI/res/drawable/recents_grid_task_view_focus_frame_background.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_grid_task_view_focus_frame_background.xml diff --git a/packages/SystemUI/res/drawable/recents_info_dark.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_info_dark.xml index 555a69ae9123..555a69ae9123 100644 --- a/packages/SystemUI/res/drawable/recents_info_dark.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_info_dark.xml diff --git a/packages/SystemUI/res/drawable/recents_info_light.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_info_light.xml index 65e7bf5fa41d..65e7bf5fa41d 100644 --- a/packages/SystemUI/res/drawable/recents_info_light.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_info_light.xml diff --git a/packages/SystemUI/res/drawable/recents_lock_to_app_pin.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_lock_to_app_pin.xml index 317f858f662d..317f858f662d 100644 --- a/packages/SystemUI/res/drawable/recents_lock_to_app_pin.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_lock_to_app_pin.xml diff --git a/packages/SystemUI/res/drawable/recents_lock_to_task_button_bg.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_lock_to_task_button_bg.xml index 8a8164a94122..8a8164a94122 100644 --- a/packages/SystemUI/res/drawable/recents_lock_to_task_button_bg.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_lock_to_task_button_bg.xml diff --git a/packages/SystemUI/res/drawable/recents_low_ram_stack_button_background.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_low_ram_stack_button_background.xml index bff97f6f8fe4..bff97f6f8fe4 100644 --- a/packages/SystemUI/res/drawable/recents_low_ram_stack_button_background.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_low_ram_stack_button_background.xml diff --git a/packages/SystemUI/res/drawable/recents_move_task_freeform_dark.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_move_task_freeform_dark.xml index 9a060b4a3d39..9a060b4a3d39 100644 --- a/packages/SystemUI/res/drawable/recents_move_task_freeform_dark.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_move_task_freeform_dark.xml diff --git a/packages/SystemUI/res/drawable/recents_move_task_freeform_light.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_move_task_freeform_light.xml index b8acedb3c2f7..b8acedb3c2f7 100644 --- a/packages/SystemUI/res/drawable/recents_move_task_freeform_light.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_move_task_freeform_light.xml diff --git a/packages/SystemUI/res/drawable/recents_move_task_fullscreen_dark.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_move_task_fullscreen_dark.xml index fd468c1ff25e..fd468c1ff25e 100644 --- a/packages/SystemUI/res/drawable/recents_move_task_fullscreen_dark.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_move_task_fullscreen_dark.xml diff --git a/packages/SystemUI/res/drawable/recents_move_task_fullscreen_light.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_move_task_fullscreen_light.xml index 532290637d74..532290637d74 100644 --- a/packages/SystemUI/res/drawable/recents_move_task_fullscreen_light.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_move_task_fullscreen_light.xml diff --git a/packages/SystemUI/res/drawable/recents_stack_action_background.xml b/packages/SystemUI/legacy/recents/res/drawable/recents_stack_action_background.xml index 2a40dd0ec613..2a40dd0ec613 100644 --- a/packages/SystemUI/res/drawable/recents_stack_action_background.xml +++ b/packages/SystemUI/legacy/recents/res/drawable/recents_stack_action_background.xml diff --git a/packages/SystemUI/res/interpolator/recents_from_launcher_exit_interpolator.xml b/packages/SystemUI/legacy/recents/res/interpolator/recents_from_launcher_exit_interpolator.xml index 4a7fff67eac5..4a7fff67eac5 100644 --- a/packages/SystemUI/res/interpolator/recents_from_launcher_exit_interpolator.xml +++ b/packages/SystemUI/legacy/recents/res/interpolator/recents_from_launcher_exit_interpolator.xml diff --git a/packages/SystemUI/res/interpolator/recents_launch_next_affiliated_task_bounce_scale.xml b/packages/SystemUI/legacy/recents/res/interpolator/recents_launch_next_affiliated_task_bounce_scale.xml index c4e5d972222c..c4e5d972222c 100644 --- a/packages/SystemUI/res/interpolator/recents_launch_next_affiliated_task_bounce_scale.xml +++ b/packages/SystemUI/legacy/recents/res/interpolator/recents_launch_next_affiliated_task_bounce_scale.xml diff --git a/packages/SystemUI/res/interpolator/recents_launch_prev_affiliated_task_bounce_ydelta.xml b/packages/SystemUI/legacy/recents/res/interpolator/recents_launch_prev_affiliated_task_bounce_ydelta.xml index 40a08b97160d..40a08b97160d 100644 --- a/packages/SystemUI/res/interpolator/recents_launch_prev_affiliated_task_bounce_ydelta.xml +++ b/packages/SystemUI/legacy/recents/res/interpolator/recents_launch_prev_affiliated_task_bounce_ydelta.xml diff --git a/packages/SystemUI/res/interpolator/recents_to_launcher_enter_interpolator.xml b/packages/SystemUI/legacy/recents/res/interpolator/recents_to_launcher_enter_interpolator.xml index c61dfd87d842..c61dfd87d842 100644 --- a/packages/SystemUI/res/interpolator/recents_to_launcher_enter_interpolator.xml +++ b/packages/SystemUI/legacy/recents/res/interpolator/recents_to_launcher_enter_interpolator.xml diff --git a/packages/SystemUI/res/layout/recents.xml b/packages/SystemUI/legacy/recents/res/layout/recents.xml index ae89631219fb..ae89631219fb 100644 --- a/packages/SystemUI/res/layout/recents.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents.xml diff --git a/packages/SystemUI/res/layout/recents_empty.xml b/packages/SystemUI/legacy/recents/res/layout/recents_empty.xml index d7f058ce4a9d..d7f058ce4a9d 100644 --- a/packages/SystemUI/res/layout/recents_empty.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents_empty.xml diff --git a/packages/SystemUI/res/layout/recents_grid_task_view.xml b/packages/SystemUI/legacy/recents/res/layout/recents_grid_task_view.xml index 1c9b9ac5f5f2..1c9b9ac5f5f2 100644 --- a/packages/SystemUI/res/layout/recents_grid_task_view.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents_grid_task_view.xml diff --git a/packages/SystemUI/res/layout/recents_incompatible_app_overlay.xml b/packages/SystemUI/legacy/recents/res/layout/recents_incompatible_app_overlay.xml index a1c1e5bd32c7..a1c1e5bd32c7 100644 --- a/packages/SystemUI/res/layout/recents_incompatible_app_overlay.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents_incompatible_app_overlay.xml diff --git a/packages/SystemUI/res/layout/recents_low_ram_stack_action_button.xml b/packages/SystemUI/legacy/recents/res/layout/recents_low_ram_stack_action_button.xml index dca891103c4e..dca891103c4e 100644 --- a/packages/SystemUI/res/layout/recents_low_ram_stack_action_button.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents_low_ram_stack_action_button.xml diff --git a/packages/SystemUI/res/layout/recents_search_bar.xml b/packages/SystemUI/legacy/recents/res/layout/recents_search_bar.xml index 915283e30f65..915283e30f65 100644 --- a/packages/SystemUI/res/layout/recents_search_bar.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents_search_bar.xml diff --git a/packages/SystemUI/res/layout/recents_stack_action_button.xml b/packages/SystemUI/legacy/recents/res/layout/recents_stack_action_button.xml index 4707a8ca843f..4707a8ca843f 100644 --- a/packages/SystemUI/res/layout/recents_stack_action_button.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents_stack_action_button.xml diff --git a/packages/SystemUI/res/layout/recents_task_view.xml b/packages/SystemUI/legacy/recents/res/layout/recents_task_view.xml index 015e4a2006bb..015e4a2006bb 100644 --- a/packages/SystemUI/res/layout/recents_task_view.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents_task_view.xml diff --git a/packages/SystemUI/res/layout/recents_task_view_header.xml b/packages/SystemUI/legacy/recents/res/layout/recents_task_view_header.xml index 1734506dbaba..1734506dbaba 100644 --- a/packages/SystemUI/res/layout/recents_task_view_header.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents_task_view_header.xml diff --git a/packages/SystemUI/res/layout/recents_task_view_header_overlay.xml b/packages/SystemUI/legacy/recents/res/layout/recents_task_view_header_overlay.xml index cf09b1d108ec..cf09b1d108ec 100644 --- a/packages/SystemUI/res/layout/recents_task_view_header_overlay.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents_task_view_header_overlay.xml diff --git a/packages/SystemUI/res/layout/recents_task_view_header_progress_bar.xml b/packages/SystemUI/legacy/recents/res/layout/recents_task_view_header_progress_bar.xml index f3526322f52d..f3526322f52d 100644 --- a/packages/SystemUI/res/layout/recents_task_view_header_progress_bar.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents_task_view_header_progress_bar.xml diff --git a/packages/SystemUI/res/layout/recents_task_view_incompatible_app_toast.xml b/packages/SystemUI/legacy/recents/res/layout/recents_task_view_incompatible_app_toast.xml index d573d6b881d2..d573d6b881d2 100644 --- a/packages/SystemUI/res/layout/recents_task_view_incompatible_app_toast.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents_task_view_incompatible_app_toast.xml diff --git a/packages/SystemUI/res/layout/recents_task_view_lock_to_app.xml b/packages/SystemUI/legacy/recents/res/layout/recents_task_view_lock_to_app.xml index 8cece1149ce7..8cece1149ce7 100644 --- a/packages/SystemUI/res/layout/recents_task_view_lock_to_app.xml +++ b/packages/SystemUI/legacy/recents/res/layout/recents_task_view_lock_to_app.xml diff --git a/packages/SystemUI/src/com/android/systemui/RecentsComponent.java b/packages/SystemUI/legacy/recents/res/values-sw600dp/dimens.xml index fb343f9b9b45..20d6670cb5b9 100644 --- a/packages/SystemUI/src/com/android/systemui/RecentsComponent.java +++ b/packages/SystemUI/legacy/recents/res/values-sw600dp/dimens.xml @@ -1,31 +1,21 @@ -/* - * Copyright (C) 2013 The Android Open Source Project +<?xml version="1.0" encoding="utf-8"?> +<!-- + * Copyright (c) 2012, The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. - */ - -package com.android.systemui; - -import android.graphics.Rect; -import android.view.Display; -import android.view.View; - -public interface RecentsComponent { - void showRecentApps(boolean triggeredFromAltTab); - - /** - * Docks the top-most task and opens recents. - */ - boolean splitPrimaryTask(int stackCreateMode, Rect initialBounds, - int metricsDockAction); -} +*/ +--> +<resources> + <!-- The offsets the tasks animate from when recents is launched while docking --> + <dimen name="recents_task_stack_animation_launched_while_docking_offset">192dp</dimen> +</resources> diff --git a/packages/SystemUI/legacy/recents/res/values/attrs.xml b/packages/SystemUI/legacy/recents/res/values/attrs.xml new file mode 100644 index 000000000000..ef4cd5b959de --- /dev/null +++ b/packages/SystemUI/legacy/recents/res/values/attrs.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2010 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources> + + <declare-styleable name="RecentsPanelView"> + <attr name="recentItemLayout" format="reference" /> + <!-- Style for the "Clear all" button. --> + <attr name="clearAllStyle" format="reference" /> + <attr name="clearAllBackgroundColor" format="reference" /> + </declare-styleable> + +</resources>
\ No newline at end of file diff --git a/packages/SystemUI/legacy/recents/res/values/colors.xml b/packages/SystemUI/legacy/recents/res/values/colors.xml new file mode 100644 index 000000000000..88b9b70956ef --- /dev/null +++ b/packages/SystemUI/legacy/recents/res/values/colors.xml @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* + * Copyright 2010, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<resources> + <!-- The disabled recents task bar background color. --> + <color name="recents_task_bar_disabled_background_color">#ff676767</color> + <!-- The default recents task bar background color. --> + <color name="recents_task_bar_default_background_color">#ffe6e6e6</color> + <!-- The default recents task view background color. --> + <color name="recents_task_view_default_background_color">#fff3f3f3</color> + <!-- The recents task bar light text color to be drawn on top of dark backgrounds. --> + <color name="recents_task_bar_light_text_color">#ffeeeeee</color> + <!-- The recents task bar dark text color to be drawn on top of light backgrounds. --> + <color name="recents_task_bar_dark_text_color">#cc000000</color> + <!-- The recents task bar light dismiss icon color to be drawn on top of dark backgrounds. --> + <color name="recents_task_bar_light_icon_color">#ccffffff</color> + <!-- The recents task bar dark dismiss icon color to be drawn on top of light backgrounds. --> + <color name="recents_task_bar_dark_icon_color">#99000000</color> + <!-- The lock to task button background color. --> + <color name="recents_task_view_lock_to_app_button_background_color">#ffe6e6e6</color> + <!-- The lock to task button foreground color. --> + <color name="recents_task_view_lock_to_app_button_color">#ff666666</color> + <!-- The background color for the freeform workspace. --> + <color name="recents_freeform_workspace_bg_color">#33FFFFFF</color> + + <!-- The background color for clear all button on light backgrounds if not transparent. --> + <color name="recents_clear_all_button_bg_light_color">#CCFFFFFF</color> + <!-- The background color for clear all button on dark backgrounds if not transparent. --> + <color name="recents_clear_all_button_bg_dark_color">#CC000000</color> + + <!-- Shadow color for the first pixels around the fake shadow for recents. --> + <color name="fake_shadow_start_color">#44000000</color> + + <!-- Shadow color for the furthest pixels around the fake shadow for recents. --> + <color name="fake_shadow_end_color">#03000000</color> +</resources>
\ No newline at end of file diff --git a/packages/SystemUI/legacy/recents/res/values/config.xml b/packages/SystemUI/legacy/recents/res/values/config.xml new file mode 100644 index 000000000000..2ff9abf4003d --- /dev/null +++ b/packages/SystemUI/legacy/recents/res/values/config.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2009, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources> + + <!-- Component to be used as the recents implementation. Must implement the + RecentsImplementation interface. This name is in the ComponentName flattened format + (package/class) --> + <string name="config_recentsComponent" translatable="false">com.android.systemui.recents.LegacyRecentsImpl</string> + + <!-- Whether recents should use hardware layers for its taskviews. This flag can be enabled + for devices where the java drawing of round rects may be slow --> + <bool name="config_recents_use_hardware_layers">false</bool> + + <!-- The number of app thumbnails we keep in memory --> + <integer name="config_recents_max_thumbnail_count">10</integer> + + <!-- The number of app icons we keep in memory --> + <integer name="config_recents_max_icon_count">20</integer> + + <!-- Whether to use cheap, less good looking shadows for recents --> + <bool name="config_recents_fake_shadows">false</bool> + + <!-- The duration in seconds to wait before the dismiss buttons are shown. --> + <integer name="recents_task_bar_dismiss_delay_seconds">1000</integer> + + <!-- The duration for animating the task decorations in after transitioning from an app. --> + <integer name="recents_task_enter_from_app_duration">200</integer> + + <!-- The duration for animating the task decorations in after transitioning from an app. --> + <integer name="recents_task_enter_from_affiliated_app_duration">125</integer> + + <!-- The duration for animating the task decorations out before transitioning to an app. --> + <integer name="recents_task_exit_to_app_duration">125</integer> + + <!-- The min animation duration for animating the nav bar scrim in. --> + <integer name="recents_nav_bar_scrim_enter_duration">400</integer> + + <!-- The animation duration for scrolling the stack to a particular item. --> + <integer name="recents_animate_task_stack_scroll_duration">200</integer> + + <!-- The delay to enforce between each alt-tab key press. --> + <integer name="recents_alt_tab_key_delay">200</integer> + + <!-- Svelte specific logic, see RecentsConfiguration.SVELTE_* constants. --> + <integer name="recents_svelte_level">0</integer> + + <!-- Recents: The relative range of visible tasks from the current scroll position + while the stack is focused. --> + <item name="recents_layout_focused_range_min" format="float" type="integer">-3</item> + <item name="recents_layout_focused_range_max" format="float" type="integer">2</item> + + <!-- Recents: The relative range of visible tasks from the current scroll position + while the stack is not focused. --> + <item name="recents_layout_unfocused_range_min" format="float" type="integer">-2</item> + <item name="recents_layout_unfocused_range_max" format="float" type="integer">2.5</item> +</resources>
\ No newline at end of file diff --git a/packages/SystemUI/legacy/recents/res/values/dimens.xml b/packages/SystemUI/legacy/recents/res/values/dimens.xml new file mode 100644 index 000000000000..528610e4c990 --- /dev/null +++ b/packages/SystemUI/legacy/recents/res/values/dimens.xml @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + * Copyright (c) 2006, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. +*/ +--> +<resources> +<!-- Recents Layout --> + + <!-- The amount to inset the stack, specifically at the top and the other sides. We also + don't want this to change across configurations that Recents can be opened in, so we + define them statically for all display sizes. --> + <dimen name="recents_layout_min_margin">16dp</dimen> + <dimen name="recents_layout_top_margin_phone">16dp</dimen> + <dimen name="recents_layout_top_margin_tablet">32dp</dimen> + <dimen name="recents_layout_top_margin_tablet_xlarge">40dp</dimen> + <dimen name="recents_layout_bottom_margin">16dp</dimen> + <dimen name="recents_layout_side_margin_phone">16dp</dimen> + <dimen name="recents_layout_side_margin_tablet">48dp</dimen> + <dimen name="recents_layout_side_margin_tablet_docked">16dp</dimen> + <dimen name="recents_layout_side_margin_tablet_xlarge">64dp</dimen> + <dimen name="recents_layout_side_margin_tablet_xlarge_docked">16dp</dimen> + + <!-- The height between the top margin and the top of the focused task. --> + <dimen name="recents_layout_top_peek_size">48dp</dimen> + <!-- The height between the bottom margin and the top of task in front of the focused task. --> + <dimen name="recents_layout_bottom_peek_size">56dp</dimen> + + <!-- The offset from the top and bottom of the stack of the focused task. The bottom offset + will be additionally offset by the bottom system insets since it goes under the nav bar + in certain orientations. --> + <dimen name="recents_layout_initial_top_offset_phone_port">128dp</dimen> + <dimen name="recents_layout_initial_bottom_offset_phone_port">80dp</dimen> + <dimen name="recents_layout_initial_top_offset_phone_land">72dp</dimen> + <dimen name="recents_layout_initial_bottom_offset_phone_land">72dp</dimen> + <dimen name="recents_layout_initial_top_offset_tablet">160dp</dimen> + <dimen name="recents_layout_initial_bottom_offset_tablet">112dp</dimen> + + <!-- The min/max translationZ for the tasks in the stack. --> + <dimen name="recents_layout_z_min">3dp</dimen> + <dimen name="recents_layout_z_max">24dp</dimen> + + <!-- The margin between the freeform and stack. We also don't want this to change across + configurations that Recents can be opened in, so we define them statically for all + display sizes. --> + <dimen name="recents_freeform_layout_bottom_margin">16dp</dimen> + + <!-- The padding between each freeform task. --> + <dimen name="recents_freeform_layout_task_padding">8dp</dimen> + +<!-- Recents Views --> + + <!-- The height of a task view bar. This has to be large enough to cover the action bar + height in either orientation at this smallest width. --> + <dimen name="recents_task_view_header_height">56dp</dimen> + <dimen name="recents_task_view_header_height_tablet_land">64dp</dimen> + + <!-- The padding of a button in the recents task view header. --> + <dimen name="recents_task_view_header_button_padding">16dp</dimen> + <dimen name="recents_task_view_header_button_padding_tablet_land">20dp</dimen> + + <!-- The radius of the rounded corners on a task view and its shadow (which can be larger + to create a softer corner effect. --> + <dimen name="recents_task_view_rounded_corners_radius">2dp</dimen> + <dimen name="recents_task_view_shadow_rounded_corners_radius">6dp</dimen> + + <!-- The amount of highlight to make on each task view. --> + <dimen name="recents_task_view_highlight">1dp</dimen> + + <!-- The size of the lock-to-app button and its icon. --> + <dimen name="recents_lock_to_app_size">56dp</dimen> + <dimen name="recents_lock_to_app_icon_size">28dp</dimen> + + <!-- The amount of overscroll allowed when flinging to the end of the stack. --> + <dimen name="recents_fling_overscroll_distance">24dp</dimen> + + <!-- The size of the drag hint text. --> + <dimen name="recents_drag_hint_text_size">14sp</dimen> + + <!-- The min alpha to apply to a task affiliation group color. --> + <item name="recents_task_affiliation_color_min_alpha_percentage" format="float" type="dimen">0.6</item> + + <!-- The amount to offset when animating into an affiliate group. --> + <dimen name="recents_task_stack_animation_affiliate_enter_offset">32dp</dimen> + + <!-- The offsets the tasks animate from when recents is launched while docking --> + <dimen name="recents_task_stack_animation_launched_while_docking_offset">144dp</dimen> + + <!-- The amount to translate when animating the removal of a task. --> + <dimen name="recents_task_view_remove_anim_translation_x">100dp</dimen> + + <!-- The alpha to apply to the recents row when it doesn't have focus --> + <item name="recents_recents_row_dim_alpha" format="float" type="dimen">0.5</item> + + <!-- The speed in dp/s at which the user needs to be scrolling in recents such that we start + loading full resolution screenshots. --> + <dimen name="recents_fast_fling_velocity">600dp</dimen> + +</resources>
\ No newline at end of file diff --git a/packages/SystemUI/res/values/dimens_grid.xml b/packages/SystemUI/legacy/recents/res/values/dimens_grid.xml index febf65b834ee..febf65b834ee 100644 --- a/packages/SystemUI/res/values/dimens_grid.xml +++ b/packages/SystemUI/legacy/recents/res/values/dimens_grid.xml diff --git a/packages/SystemUI/legacy/recents/res/values/strings.xml b/packages/SystemUI/legacy/recents/res/values/strings.xml new file mode 100644 index 000000000000..4b44ba969d6e --- /dev/null +++ b/packages/SystemUI/legacy/recents/res/values/strings.xml @@ -0,0 +1,67 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/** + * Copyright (c) 2009, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +--> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Content description for the recent apps panel (not shown on the screen). [CHAR LIMIT=NONE] --> + <string name="accessibility_desc_recent_apps">Overview.</string> + + <!-- Content description to tell the user that this button will remove an application from recents --> + <string name="accessibility_recents_item_will_be_dismissed">Dismiss <xliff:g id="app" example="Calendar">%s</xliff:g>.</string> + <!-- Content description to tell the user an application has been removed from recents --> + <string name="accessibility_recents_item_dismissed"><xliff:g id="app" example="Calendar">%s</xliff:g> dismissed.</string> + <!-- Content description to tell the user all applications has been removed from recents --> + <string name="accessibility_recents_all_items_dismissed">All recent applications dismissed.</string> + <!-- Content description to tell the user that this button will open application info for an application in recents --> + <string name="accessibility_recents_item_open_app_info">Open <xliff:g id="app" example="Calendar">%s</xliff:g> application info.</string> + <!-- Content description to tell the user an application has been launched from recents --> + <string name="accessibility_recents_item_launched">Starting <xliff:g id="app" example="Calendar">%s</xliff:g>.</string> + + <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] --> + <string name="recents_empty_message">No recent items</string> + <!-- Recents: The empty recents string after dismissing all tasks. [CHAR LIMIT=NONE] --> + <string name="recents_empty_message_dismissed_all">You\'ve cleared everything</string> + <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] --> + <string name="recents_app_info_button_label">Application Info</string> + <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] --> + <string name="recents_lock_to_app_button_label">screen pinning</string> + <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] --> + <string name="recents_search_bar_label">search</string> + <!-- Recents: Launch error string. [CHAR LIMIT=NONE] --> + <string name="recents_launch_error_message">Could not start <xliff:g id="app" example="Calendar">%s</xliff:g>.</string> + <!-- Recents: Launch disabled string. [CHAR LIMIT=NONE] --> + <string name="recents_launch_disabled_message"><xliff:g id="app" example="Calendar">%s</xliff:g> is disabled in safe-mode.</string> + <!-- Recents: Stack action button string. [CHAR LIMIT=NONE] --> + <string name="recents_stack_action_button_label">Clear all</string> + <!-- Recents: Hint text that shows on the drop targets to start multiwindow. [CHAR LIMIT=NONE] --> + <string name="recents_drag_hint_message">Drag here to use split screen</string> + + <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] --> + <string name="recents_multistack_add_stack_dialog_split_horizontal">Split Horizontal</string> + <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] --> + <string name="recents_multistack_add_stack_dialog_split_vertical">Split Vertical</string> + <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] --> + <string name="recents_multistack_add_stack_dialog_split_custom">Split Custom</string> + <!-- Recents: Accessibility split to the top --> + <string name="recents_accessibility_split_screen_top">Split screen to the top</string> + <!-- Recents: Accessibility split to the left --> + <string name="recents_accessibility_split_screen_left">Split screen to the left</string> + <!-- Recents: Accessibility split to the right --> + <string name="recents_accessibility_split_screen_right">Split screen to the right</string> + +</resources>
\ No newline at end of file diff --git a/packages/SystemUI/legacy/recents/res/values/styles.xml b/packages/SystemUI/legacy/recents/res/values/styles.xml new file mode 100644 index 000000000000..eb16be7c95b6 --- /dev/null +++ b/packages/SystemUI/legacy/recents/res/values/styles.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2006 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<resources xmlns:android="http://schemas.android.com/apk/res/android"> + + <style name="RecentsTheme" parent="@android:style/Theme.Material"> + <!-- NoTitle --> + <item name="android:windowNoTitle">true</item> + <!-- Misc --> + <item name="android:statusBarColor">@android:color/transparent</item> + <item name="android:navigationBarColor">@android:color/transparent</item> + <item name="android:windowDrawsSystemBarBackgrounds">true</item> + <item name="android:windowAnimationStyle">@null</item> + <item name="android:ambientShadowAlpha">0.35</item> + </style> + + <!-- Recents theme --> + <style name="RecentsTheme.Wallpaper"> + <item name="android:windowBackground">@*android:color/transparent</item> + <item name="android:colorBackgroundCacheHint">@null</item> + <item name="android:windowShowWallpaper">true</item> + <item name="android:windowDisablePreview">true</item> + <item name="clearAllStyle">@style/ClearAllButtonDefaultMargins</item> + <item name="clearAllBackgroundColor">@color/recents_clear_all_button_bg_dark_color</item> + <item name="wallpaperTextColor">@*android:color/primary_text_material_dark</item> + <item name="wallpaperTextColorSecondary">@*android:color/secondary_text_material_dark</item> + </style> + + <style name="RecentsTheme.Wallpaper.Light"> + <item name="clearAllBackgroundColor">@color/recents_clear_all_button_bg_light_color</item> + <item name="wallpaperTextColor">@*android:color/primary_text_material_light</item> + <item name="wallpaperTextColorSecondary">@*android:color/secondary_text_material_light</item> + </style> + + <!-- Performance optimized Recents theme (no wallpaper) --> + <style name="RecentsTheme.NoWallpaper"> + <item name="android:windowBackground">@android:color/black</item> + <item name="wallpaperTextColor">@android:color/white</item> + <item name="wallpaperTextColorSecondary">@android:color/white</item> + </style> + + </resources>
\ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/recents/Constants.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/Constants.java index 003379fe0bf8..003379fe0bf8 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/Constants.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/Constants.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl index 90c10992bc94..90c10992bc94 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl diff --git a/packages/SystemUI/src/com/android/systemui/recents/IRecentsSystemUserCallbacks.aidl b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/IRecentsSystemUserCallbacks.aidl index e97714486dcf..e97714486dcf 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/IRecentsSystemUserCallbacks.aidl +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/IRecentsSystemUserCallbacks.aidl diff --git a/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/LegacyRecentsImpl.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/LegacyRecentsImpl.java new file mode 100644 index 000000000000..b7bb751c1582 --- /dev/null +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/LegacyRecentsImpl.java @@ -0,0 +1,744 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.recents; + +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; +import static com.android.systemui.statusbar.phone.StatusBar.SYSTEM_DIALOG_REASON_RECENT_APPS; + +import android.app.ActivityManager; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.content.ServiceConnection; +import android.content.pm.ActivityInfo; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.graphics.Point; +import android.graphics.Rect; +import android.hardware.display.DisplayManager; +import android.os.Handler; +import android.os.IBinder; +import android.os.RemoteException; +import android.os.UserHandle; +import android.util.EventLog; +import android.util.Log; +import android.view.Display; +import android.widget.Toast; +import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.systemui.EventLogConstants; +import com.android.systemui.EventLogTags; +import com.android.systemui.R; +import com.android.systemui.SysUiServiceProvider; +import com.android.systemui.pip.PipUI; +import com.android.systemui.recents.events.EventBus; +import com.android.systemui.recents.events.activity.ConfigurationChangedEvent; +import com.android.systemui.recents.events.activity.DockedFirstAnimationFrameEvent; +import com.android.systemui.recents.events.activity.DockedTopTaskEvent; +import com.android.systemui.recents.events.activity.LaunchTaskFailedEvent; +import com.android.systemui.recents.events.activity.RecentsActivityStartingEvent; +import com.android.systemui.recents.events.component.ExpandPipEvent; +import com.android.systemui.recents.events.component.HidePipMenuEvent; +import com.android.systemui.recents.events.component.RecentsVisibilityChangedEvent; +import com.android.systemui.recents.events.component.ScreenPinningRequestEvent; +import com.android.systemui.recents.events.component.SetWaitingForTransitionStartEvent; +import com.android.systemui.recents.events.component.ShowUserToastEvent; +import com.android.systemui.recents.events.ui.RecentsDrawnEvent; +import com.android.systemui.recents.events.ui.RecentsGrowingEvent; +import com.android.systemui.recents.misc.SystemServicesProxy; +import com.android.systemui.recents.model.RecentsTaskLoader; +import com.android.systemui.shared.system.ActivityManagerWrapper; +import com.android.systemui.stackdivider.Divider; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; + +/** + * An implementation of the SystemUI recents component, which supports both system and secondary + * users. + */ +public class LegacyRecentsImpl implements RecentsImplementation { + + private final static String TAG = "Recents"; + + public final static int EVENT_BUS_PRIORITY = 1; + public final static int BIND_TO_SYSTEM_USER_RETRY_DELAY = 5000; + + public final static Set<String> RECENTS_ACTIVITIES = new HashSet<>(); + static { + RECENTS_ACTIVITIES.add(RecentsImpl.RECENTS_ACTIVITY); + } + + private static final String COUNTER_WINDOW_SUPPORTED = "window_enter_supported"; + private static final String COUNTER_WINDOW_UNSUPPORTED = "window_enter_unsupported"; + private static final String COUNTER_WINDOW_INCOMPATIBLE = "window_enter_incompatible"; + + private static SystemServicesProxy sSystemServicesProxy; + private static RecentsDebugFlags sDebugFlags; + private static RecentsTaskLoader sTaskLoader; + private static RecentsConfiguration sConfiguration; + + private Context mContext; + private SysUiServiceProvider mSysUiServiceProvider; + private Handler mHandler; + private RecentsImpl mImpl; + + // Only For system user, this is the callbacks instance we return to each secondary user + private RecentsSystemUser mSystemToUserCallbacks; + + // Only for secondary users, this is the callbacks instance provided by the system user to make + // calls back + private IRecentsSystemUserCallbacks mUserToSystemCallbacks; + + // The set of runnables to run after binding to the system user's service. + private final ArrayList<Runnable> mOnConnectRunnables = new ArrayList<>(); + + // Only for secondary users, this is the death handler for the binder from the system user + private final IBinder.DeathRecipient mUserToSystemCallbacksDeathRcpt = new IBinder.DeathRecipient() { + @Override + public void binderDied() { + mUserToSystemCallbacks = null; + EventLog.writeEvent(EventLogTags.SYSUI_RECENTS_CONNECTION, + EventLogConstants.SYSUI_RECENTS_CONNECTION_USER_SYSTEM_UNBOUND, + sSystemServicesProxy.getProcessUser()); + + // Retry after a fixed duration + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + registerWithSystemUser(); + } + }, BIND_TO_SYSTEM_USER_RETRY_DELAY); + } + }; + + // Only for secondary users, this is the service connection we use to connect to the system user + private final ServiceConnection mUserToSystemServiceConnection = new ServiceConnection() { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + if (service != null) { + mUserToSystemCallbacks = IRecentsSystemUserCallbacks.Stub.asInterface( + service); + EventLog.writeEvent(EventLogTags.SYSUI_RECENTS_CONNECTION, + EventLogConstants.SYSUI_RECENTS_CONNECTION_USER_SYSTEM_BOUND, + sSystemServicesProxy.getProcessUser()); + + // Listen for system user's death, so that we can reconnect later + try { + service.linkToDeath(mUserToSystemCallbacksDeathRcpt, 0); + } catch (RemoteException e) { + Log.e(TAG, "Lost connection to (System) SystemUI", e); + } + + // Run each of the queued runnables + runAndFlushOnConnectRunnables(); + } + + // Unbind ourselves now that we've registered our callbacks. The + // binder to the system user are still valid at this point. + mContext.unbindService(this); + } + + @Override + public void onServiceDisconnected(ComponentName name) { + // Do nothing + } + }; + + /** + * Returns the callbacks interface that non-system users can call. + */ + public IBinder getSystemUserCallbacks() { + return mSystemToUserCallbacks; + } + + public static RecentsTaskLoader getTaskLoader() { + return sTaskLoader; + } + + + public static SystemServicesProxy getSystemServices() { + return sSystemServicesProxy; + } + + public static RecentsConfiguration getConfiguration() { + return sConfiguration; + } + + public static RecentsDebugFlags getDebugFlags() { + return sDebugFlags; + } + + @Override + public void onStart(Context context, SysUiServiceProvider sysUiServiceProvider) { + mContext = context; + mSysUiServiceProvider = sysUiServiceProvider; + final Resources res = mContext.getResources(); + final int defaultTaskBarBackgroundColor = + mContext.getColor(R.color.recents_task_bar_default_background_color); + final int defaultTaskViewBackgroundColor = + mContext.getColor(R.color.recents_task_view_default_background_color); + sDebugFlags = new RecentsDebugFlags(); + sSystemServicesProxy = SystemServicesProxy.getInstance(mContext); + sConfiguration = new RecentsConfiguration(mContext); + sTaskLoader = new RecentsTaskLoader(mContext, + // TODO: Once we start building the AAR, move these into the loader + res.getInteger(R.integer.config_recents_max_thumbnail_count), + res.getInteger(R.integer.config_recents_max_icon_count), + res.getInteger(R.integer.recents_svelte_level)); + sTaskLoader.setDefaultColors(defaultTaskBarBackgroundColor, defaultTaskViewBackgroundColor); + mHandler = new Handler(); + mImpl = new RecentsImpl(mContext); + + // Register with the event bus + EventBus.getDefault().register(this, EVENT_BUS_PRIORITY); + EventBus.getDefault().register(sSystemServicesProxy, EVENT_BUS_PRIORITY); + EventBus.getDefault().register(sTaskLoader, EVENT_BUS_PRIORITY); + + // Due to the fact that RecentsActivity is per-user, we need to establish and interface for + // the system user's Recents component to pass events (like show/hide/toggleRecents) to the + // secondary user, and vice versa (like visibility change, screen pinning). + final int processUser = sSystemServicesProxy.getProcessUser(); + if (sSystemServicesProxy.isSystemUser(processUser)) { + // For the system user, initialize an instance of the interface that we can pass to the + // secondary user + mSystemToUserCallbacks = new RecentsSystemUser(mContext, mImpl); + } else { + // For the secondary user, bind to the primary user's service to get a persistent + // interface to register its implementation and to later update its state + registerWithSystemUser(); + } + } + + @Override + public void onBootCompleted() { + mImpl.onBootCompleted(); + } + + + @Override + public void growRecents() { + EventBus.getDefault().send(new RecentsGrowingEvent()); + } + + /** + * Shows the Recents. + */ + @Override + public void showRecentApps(boolean triggeredFromAltTab) { + ActivityManagerWrapper.getInstance().closeSystemWindows(SYSTEM_DIALOG_REASON_RECENT_APPS); + int recentsGrowTarget = getComponent(Divider.class).getView().growsRecents(); + int currentUser = sSystemServicesProxy.getCurrentUser(); + if (sSystemServicesProxy.isSystemUser(currentUser)) { + mImpl.showRecents(triggeredFromAltTab, false /* draggingInRecents */, + true /* animate */, recentsGrowTarget); + } else { + if (mSystemToUserCallbacks != null) { + IRecentsNonSystemUserCallbacks callbacks = + mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); + if (callbacks != null) { + try { + callbacks.showRecents(triggeredFromAltTab, false /* draggingInRecents */, + true /* animate */, recentsGrowTarget); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } else { + Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); + } + } + } + } + + /** + * Hides the Recents. + */ + @Override + public void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) { + int currentUser = sSystemServicesProxy.getCurrentUser(); + if (sSystemServicesProxy.isSystemUser(currentUser)) { + mImpl.hideRecents(triggeredFromAltTab, triggeredFromHomeKey); + } else { + if (mSystemToUserCallbacks != null) { + IRecentsNonSystemUserCallbacks callbacks = + mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); + if (callbacks != null) { + try { + callbacks.hideRecents(triggeredFromAltTab, triggeredFromHomeKey); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } else { + Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); + } + } + } + } + + /** + * Toggles the Recents activity. + */ + @Override + public void toggleRecentApps() { + int growTarget = getComponent(Divider.class).getView().growsRecents(); + int currentUser = sSystemServicesProxy.getCurrentUser(); + if (sSystemServicesProxy.isSystemUser(currentUser)) { + mImpl.toggleRecents(growTarget); + } else { + if (mSystemToUserCallbacks != null) { + IRecentsNonSystemUserCallbacks callbacks = + mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); + if (callbacks != null) { + try { + callbacks.toggleRecents(growTarget); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } else { + Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); + } + } + } + } + + /** + * Preloads info for the Recents activity. + */ + @Override + public void preloadRecentApps() { + int currentUser = sSystemServicesProxy.getCurrentUser(); + if (sSystemServicesProxy.isSystemUser(currentUser)) { + mImpl.preloadRecents(); + } else { + if (mSystemToUserCallbacks != null) { + IRecentsNonSystemUserCallbacks callbacks = + mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); + if (callbacks != null) { + try { + callbacks.preloadRecents(); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } else { + Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); + } + } + } + } + + @Override + public void cancelPreloadRecentApps() { + int currentUser = sSystemServicesProxy.getCurrentUser(); + if (sSystemServicesProxy.isSystemUser(currentUser)) { + mImpl.cancelPreloadingRecents(); + } else { + if (mSystemToUserCallbacks != null) { + IRecentsNonSystemUserCallbacks callbacks = + mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); + if (callbacks != null) { + try { + callbacks.cancelPreloadingRecents(); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } else { + Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); + } + } + } + } + + @Override + public boolean splitPrimaryTask(int stackCreateMode, Rect initialBounds, int metricsDockAction) { + Point realSize = new Point(); + if (initialBounds == null) { + mContext.getSystemService(DisplayManager.class).getDisplay(Display.DEFAULT_DISPLAY) + .getRealSize(realSize); + initialBounds = new Rect(0, 0, realSize.x, realSize.y); + } + + int currentUser = sSystemServicesProxy.getCurrentUser(); + ActivityManager.RunningTaskInfo runningTask = + ActivityManagerWrapper.getInstance().getRunningTask(); + final int activityType = runningTask != null + ? runningTask.configuration.windowConfiguration.getActivityType() + : ACTIVITY_TYPE_UNDEFINED; + boolean screenPinningActive = ActivityManagerWrapper.getInstance().isScreenPinningActive(); + boolean isRunningTaskInHomeOrRecentsStack = + activityType == ACTIVITY_TYPE_HOME || activityType == ACTIVITY_TYPE_RECENTS; + if (runningTask != null && !isRunningTaskInHomeOrRecentsStack && !screenPinningActive) { + logDockAttempt(mContext, runningTask.topActivity, runningTask.resizeMode); + if (runningTask.supportsSplitScreenMultiWindow) { + if (metricsDockAction != -1) { + MetricsLogger.action(mContext, metricsDockAction, + runningTask.topActivity.flattenToShortString()); + } + if (sSystemServicesProxy.isSystemUser(currentUser)) { + mImpl.splitPrimaryTask(runningTask.id, stackCreateMode, initialBounds); + } else { + if (mSystemToUserCallbacks != null) { + IRecentsNonSystemUserCallbacks callbacks = + mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); + if (callbacks != null) { + try { + callbacks.splitPrimaryTask(runningTask.id, stackCreateMode, + initialBounds); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } else { + Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); + } + } + } + + return true; + } else { + EventBus.getDefault().send(new ShowUserToastEvent( + R.string.dock_non_resizeble_failed_to_dock_text, Toast.LENGTH_SHORT)); + return false; + } + } else { + return false; + } + } + + public static void logDockAttempt(Context ctx, ComponentName activity, int resizeMode) { + if (resizeMode == ActivityInfo.RESIZE_MODE_UNRESIZEABLE) { + MetricsLogger.action(ctx, MetricsEvent.ACTION_WINDOW_DOCK_UNRESIZABLE, + activity.flattenToShortString()); + } + MetricsLogger.count(ctx, getMetricsCounterForResizeMode(resizeMode), 1); + } + + private static String getMetricsCounterForResizeMode(int resizeMode) { + switch (resizeMode) { + case ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE: + return COUNTER_WINDOW_UNSUPPORTED; + case ActivityInfo.RESIZE_MODE_RESIZEABLE: + case ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION: + return COUNTER_WINDOW_SUPPORTED; + default: + return COUNTER_WINDOW_INCOMPATIBLE; + } + } + + @Override + public void onAppTransitionFinished() { + if (!LegacyRecentsImpl.getConfiguration().isLowRamDevice) { + // Fallback, reset the flag once an app transition ends + EventBus.getDefault().send(new SetWaitingForTransitionStartEvent( + false /* waitingForTransitionStart */)); + } + } + + /** + * Updates on configuration change. + */ + public void onConfigurationChanged(Configuration newConfig) { + int currentUser = sSystemServicesProxy.getCurrentUser(); + if (sSystemServicesProxy.isSystemUser(currentUser)) { + mImpl.onConfigurationChanged(); + } else { + if (mSystemToUserCallbacks != null) { + IRecentsNonSystemUserCallbacks callbacks = + mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); + if (callbacks != null) { + try { + callbacks.onConfigurationChanged(); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } else { + Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); + } + } + } + } + + /** + * Handle Recents activity visibility changed. + */ + public final void onBusEvent(final RecentsVisibilityChangedEvent event) { + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); + int processUser = ssp.getProcessUser(); + if (ssp.isSystemUser(processUser)) { + mImpl.onVisibilityChanged(event.applicationContext, event.visible); + } else { + postToSystemUser(new Runnable() { + @Override + public void run() { + try { + mUserToSystemCallbacks.updateRecentsVisibility(event.visible); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } + }); + } + + // This will catch the cases when a user launches from recents to another app + // (and vice versa) that is not in the recents stack (such as home or bugreport) and it + // would not reset the wait for transition flag. This will catch it and make sure that the + // flag is reset. + if (!event.visible) { + mImpl.setWaitingForTransitionStart(false); + } + } + + public final void onBusEvent(DockedFirstAnimationFrameEvent event) { + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); + int processUser = ssp.getProcessUser(); + if (ssp.isSystemUser(processUser)) { + final Divider divider = getComponent(Divider.class); + if (divider != null) { + divider.onDockedFirstAnimationFrame(); + } + } else { + postToSystemUser(new Runnable() { + @Override + public void run() { + try { + mUserToSystemCallbacks.sendDockedFirstAnimationFrameEvent(); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } + }); + } + } + + /** + * Handle screen pinning request. + */ + public final void onBusEvent(final ScreenPinningRequestEvent event) { + int processUser = sSystemServicesProxy.getProcessUser(); + if (sSystemServicesProxy.isSystemUser(processUser)) { + mImpl.onStartScreenPinning(event.applicationContext, event.taskId); + } else { + postToSystemUser(new Runnable() { + @Override + public void run() { + try { + mUserToSystemCallbacks.startScreenPinning(event.taskId); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } + }); + } + } + + public final void onBusEvent(final RecentsDrawnEvent event) { + int processUser = sSystemServicesProxy.getProcessUser(); + if (sSystemServicesProxy.isSystemUser(processUser)) { + final Divider divider = getComponent(Divider.class); + if (divider != null) { + divider.onRecentsDrawn(); + } + } else { + postToSystemUser(new Runnable() { + @Override + public void run() { + try { + mUserToSystemCallbacks.sendRecentsDrawnEvent(); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } + }); + } + } + + public final void onBusEvent(final DockedTopTaskEvent event) { + int processUser = sSystemServicesProxy.getProcessUser(); + if (sSystemServicesProxy.isSystemUser(processUser)) { + final Divider divider = getComponent(Divider.class); + if (divider != null) { + divider.onDockedTopTask(); + } + } else { + postToSystemUser(new Runnable() { + @Override + public void run() { + try { + mUserToSystemCallbacks.sendDockingTopTaskEvent(event.initialRect); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } + }); + } + } + + public final void onBusEvent(final RecentsActivityStartingEvent event) { + int processUser = sSystemServicesProxy.getProcessUser(); + if (sSystemServicesProxy.isSystemUser(processUser)) { + final Divider divider = getComponent(Divider.class); + if (divider != null) { + divider.onRecentsActivityStarting(); + } + } else { + postToSystemUser(new Runnable() { + @Override + public void run() { + try { + mUserToSystemCallbacks.sendLaunchRecentsEvent(); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } + }); + } + } + + public final void onBusEvent(LaunchTaskFailedEvent event) { + // Reset the transition when tasks fail to launch + mImpl.setWaitingForTransitionStart(false); + } + + public final void onBusEvent(ConfigurationChangedEvent event) { + // Update the configuration for the Recents component when the activity configuration + // changes as well + mImpl.onConfigurationChanged(); + } + + public final void onBusEvent(ShowUserToastEvent event) { + int currentUser = sSystemServicesProxy.getCurrentUser(); + if (sSystemServicesProxy.isSystemUser(currentUser)) { + mImpl.onShowCurrentUserToast(event.msgResId, event.msgLength); + } else { + if (mSystemToUserCallbacks != null) { + IRecentsNonSystemUserCallbacks callbacks = + mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); + if (callbacks != null) { + try { + callbacks.showCurrentUserToast(event.msgResId, event.msgLength); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } else { + Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); + } + } + } + } + + public final void onBusEvent(SetWaitingForTransitionStartEvent event) { + int processUser = sSystemServicesProxy.getProcessUser(); + if (sSystemServicesProxy.isSystemUser(processUser)) { + mImpl.setWaitingForTransitionStart(event.waitingForTransitionStart); + } else { + postToSystemUser(new Runnable() { + @Override + public void run() { + try { + mUserToSystemCallbacks.setWaitingForTransitionStartEvent( + event.waitingForTransitionStart); + } catch (RemoteException e) { + Log.e(TAG, "Callback failed", e); + } + } + }); + } + } + + public final void onBusEvent(ExpandPipEvent event) { + PipUI pipUi = getComponent(PipUI.class); + pipUi.expandPip(); + } + + public final void onBusEvent(HidePipMenuEvent event) { + PipUI pipUi = getComponent(PipUI.class); + event.getAnimationTrigger().increment(); + pipUi.hidePipMenu(() -> { + event.getAnimationTrigger().increment(); + }, () -> { + event.getAnimationTrigger().decrement(); + }); + event.getAnimationTrigger().decrement(); + } + + /** + * Attempts to register with the system user. + */ + private void registerWithSystemUser() { + final int processUser = sSystemServicesProxy.getProcessUser(); + postToSystemUser(new Runnable() { + @Override + public void run() { + try { + mUserToSystemCallbacks.registerNonSystemUserCallbacks( + new RecentsImplProxy(mImpl), processUser); + } catch (RemoteException e) { + Log.e(TAG, "Failed to register", e); + } + } + }); + } + + /** + * Runs the runnable in the system user's Recents context, connecting to the service if + * necessary. + */ + private void postToSystemUser(final Runnable onConnectRunnable) { + mOnConnectRunnables.add(onConnectRunnable); + if (mUserToSystemCallbacks == null) { + Intent systemUserServiceIntent = new Intent(); + systemUserServiceIntent.setClass(mContext, RecentsSystemUserService.class); + boolean bound = mContext.bindServiceAsUser(systemUserServiceIntent, + mUserToSystemServiceConnection, Context.BIND_AUTO_CREATE, UserHandle.SYSTEM); + EventLog.writeEvent(EventLogTags.SYSUI_RECENTS_CONNECTION, + EventLogConstants.SYSUI_RECENTS_CONNECTION_USER_BIND_SERVICE, + sSystemServicesProxy.getProcessUser()); + if (!bound) { + // Retry after a fixed duration + mHandler.postDelayed(new Runnable() { + @Override + public void run() { + registerWithSystemUser(); + } + }, BIND_TO_SYSTEM_USER_RETRY_DELAY); + } + } else { + runAndFlushOnConnectRunnables(); + } + } + + /** + * Runs all the queued runnables after a service connection is made. + */ + private void runAndFlushOnConnectRunnables() { + for (Runnable r : mOnConnectRunnables) { + r.run(); + } + mOnConnectRunnables.clear(); + } + + private <T> T getComponent(Class<T> clazz) { + return mSysUiServiceProvider.getComponent(clazz); + } + + @Override + public void dump(PrintWriter pw) { + pw.println("Recents"); + pw.println(" currentUserId=" + SystemServicesProxy.getInstance(mContext).getCurrentUser()); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsActivity.java index 36a12559d6b8..cec97ab49954 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsActivity.java @@ -87,16 +87,15 @@ import com.android.systemui.recents.events.ui.focus.FocusPreviousTaskViewEvent; import com.android.systemui.recents.events.ui.focus.NavigateTaskViewEvent; import com.android.systemui.recents.events.ui.focus.NavigateTaskViewEvent.Direction; import com.android.systemui.recents.misc.SystemServicesProxy; -import com.android.systemui.shared.recents.utilities.Utilities; -import com.android.systemui.shared.recents.model.RecentsTaskLoadPlan; -import com.android.systemui.shared.recents.model.RecentsTaskLoader; +import com.android.systemui.recents.utilities.Utilities; +import com.android.systemui.recents.model.RecentsTaskLoadPlan; +import com.android.systemui.recents.model.RecentsTaskLoader; import com.android.systemui.shared.recents.model.Task; -import com.android.systemui.shared.recents.model.TaskStack; +import com.android.systemui.recents.model.TaskStack; import com.android.systemui.recents.views.RecentsView; import com.android.systemui.recents.views.SystemBarScrimViews; import com.android.systemui.shared.system.ActivityManagerWrapper; -import com.android.systemui.shared.system.WindowManagerWrapper; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -109,7 +108,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD private final static String TAG = "RecentsActivity"; private final static boolean DEBUG = false; - public final static int EVENT_BUS_PRIORITY = Recents.EVENT_BUS_PRIORITY + 1; + public final static int EVENT_BUS_PRIORITY = LegacyRecentsImpl.EVENT_BUS_PRIORITY + 1; public final static int INCOMPATIBLE_APP_ALPHA_DURATION = 150; private PackageMonitor mPackageMonitor = new PackageMonitor() { @@ -217,8 +216,8 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD LatencyTracker.ACTION_TOGGLE_RECENTS)); } DejankUtils.postAfterTraversal(() -> { - Recents.getTaskLoader().startLoader(RecentsActivity.this); - Recents.getTaskLoader().getHighResThumbnailLoader().setVisible(true); + LegacyRecentsImpl.getTaskLoader().startLoader(RecentsActivity.this); + LegacyRecentsImpl.getTaskLoader().getHighResThumbnailLoader().setVisible(true); }); return true; } @@ -228,7 +227,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD * Dismisses recents if we are already visible and the intent is to toggle the recents view. */ boolean dismissRecentsToFocusedTask(int logCategory) { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); if (ssp.isRecentsActivityVisible()) { // If we have a focused Task, launch that Task now if (mRecentsView.launchFocusedTask(logCategory)) return true; @@ -240,7 +239,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD * Dismisses recents back to the launch target task. */ boolean dismissRecentsToLaunchTargetTaskOrHome() { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); if (ssp.isRecentsActivityVisible()) { // If we have a focused Task, launch that Task now if (mRecentsView.launchPreviousTask()) return true; @@ -254,7 +253,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD * Dismisses recents if we are already visible and the intent is to toggle the recents view. */ boolean dismissRecentsToFocusedTaskOrHome() { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); if (ssp.isRecentsActivityVisible()) { // If we have a focused Task, launch that Task now if (mRecentsView.launchFocusedTask(0 /* logCategory */)) return true; @@ -289,7 +288,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD /** Dismisses Recents directly to Home if we currently aren't transitioning. */ boolean dismissRecentsToHomeIfVisible(boolean animated) { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); if (ssp.isRecentsActivityVisible()) { // Return to Home dismissRecentsToHome(animated); @@ -306,7 +305,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD // In the case that the activity starts up before the Recents component has initialized // (usually when debugging/pushing the SysUI apk), just finish this activity. - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); if (ssp == null) { mFinishedOnStartup = true; finish(); @@ -335,7 +334,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD mScrimViews = new SystemBarScrimViews(this); getWindow().getAttributes().privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_DECOR_VIEW_VISIBILITY; - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); } @@ -384,7 +383,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD // reset launch state with dock, app and home set to false Object isRelaunching = getLastNonConfigurationInstance(); if (isRelaunching != null && isRelaunching instanceof Boolean && (boolean) isRelaunching) { - RecentsActivityLaunchState launchState = Recents.getConfiguration().getLaunchState(); + RecentsActivityLaunchState launchState = LegacyRecentsImpl.getConfiguration().getLaunchState(); launchState.launchedViaDockGesture = false; launchState.launchedFromApp = false; launchState.launchedFromHome = false; @@ -418,14 +417,14 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD private void reloadStackView() { // If the Recents component has preloaded a load plan, then use that to prevent // reconstructing the task stack - RecentsTaskLoader loader = Recents.getTaskLoader(); + RecentsTaskLoader loader = LegacyRecentsImpl.getTaskLoader(); RecentsTaskLoadPlan loadPlan = RecentsImpl.consumeInstanceLoadPlan(); if (loadPlan == null) { loadPlan = new RecentsTaskLoadPlan(this); } // Start loading tasks according to the load plan - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); RecentsActivityLaunchState launchState = config.getLaunchState(); if (!loadPlan.hasTasks()) { loader.preloadTasks(loadPlan, launchState.launchedToTaskId); @@ -538,7 +537,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD mIsVisible = false; EventBus.getDefault().send(new RecentsVisibilityChangedEvent(this, false)); MetricsLogger.hidden(this, MetricsEvent.OVERVIEW_ACTIVITY); - Recents.getTaskLoader().getHighResThumbnailLoader().setVisible(false); + LegacyRecentsImpl.getTaskLoader().getHighResThumbnailLoader().setVisible(false); // When recents starts again before onStop, do not reset launch flags so entrance animation // can run @@ -546,13 +545,13 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD // Workaround for b/22542869, if the RecentsActivity is started again, but without going // through SystemUI, we need to reset the config launch flags to ensure that we do not // wait on the system to send a signal that was never queued. - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); RecentsActivityLaunchState launchState = config.getLaunchState(); launchState.reset(); } // Force a gc to attempt to clean up bitmap references more quickly (b/38258699) - Recents.getSystemServices().gc(); + LegacyRecentsImpl.getSystemServices().gc(); } @Override @@ -587,7 +586,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD @Override public void onTrimMemory(int level) { - RecentsTaskLoader loader = Recents.getTaskLoader(); + RecentsTaskLoader loader = LegacyRecentsImpl.getTaskLoader(); if (loader != null) { loader.onTrimMemory(level); } @@ -656,7 +655,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD /**** EventBus events ****/ public final void onBusEvent(ToggleRecentsEvent event) { - RecentsActivityLaunchState launchState = Recents.getConfiguration().getLaunchState(); + RecentsActivityLaunchState launchState = LegacyRecentsImpl.getConfiguration().getLaunchState(); if (launchState.launchedFromHome) { dismissRecentsToHome(true /* animateTaskViews */); } else { @@ -700,7 +699,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD } public final void onBusEvent(CancelEnterRecentsWindowAnimationEvent event) { - RecentsActivityLaunchState launchState = Recents.getConfiguration().getLaunchState(); + RecentsActivityLaunchState launchState = LegacyRecentsImpl.getConfiguration().getLaunchState(); int launchToTaskId = launchState.launchedToTaskId; if (launchToTaskId != -1 && (event.launchTask == null || launchToTaskId != event.launchTask.key.id)) { @@ -748,7 +747,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD public final void onBusEvent(DeleteTaskDataEvent event) { // Remove any stored data from the loader - RecentsTaskLoader loader = Recents.getTaskLoader(); + RecentsTaskLoader loader = LegacyRecentsImpl.getTaskLoader(); loader.deleteTaskData(event.task, false); // Remove the task from activity manager @@ -760,7 +759,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD } public final void onBusEvent(AllTaskViewsDismissedEvent event) { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); if (ssp.hasDockedTask()) { mRecentsView.showEmptyView(event.msgResId); } else { @@ -808,9 +807,9 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD private void reloadTaskStack(boolean isInMultiWindowMode, boolean sendConfigChangedEvent) { // Reload the task stack completely - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); RecentsActivityLaunchState launchState = config.getLaunchState(); - RecentsTaskLoader loader = Recents.getTaskLoader(); + RecentsTaskLoader loader = LegacyRecentsImpl.getTaskLoader(); RecentsTaskLoadPlan loadPlan = new RecentsTaskLoadPlan(this); loader.preloadTasks(loadPlan, -1 /* runningTaskId */); @@ -839,7 +838,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD } public void onPackageChanged(String packageName, int userId) { - Recents.getTaskLoader().onPackageChanged(packageName); + LegacyRecentsImpl.getTaskLoader().onPackageChanged(packageName); EventBus.getDefault().send(new PackagesChangedEvent(packageName, userId)); } @@ -847,7 +846,7 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD public void dump(String prefix, FileDescriptor fd, PrintWriter writer, String[] args) { super.dump(prefix, fd, writer, args); EventBus.getDefault().dump(prefix, writer); - Recents.getTaskLoader().dump(prefix, writer); + LegacyRecentsImpl.getTaskLoader().dump(prefix, writer); String id = Integer.toHexString(System.identityHashCode(this)); diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivityLaunchState.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsActivityLaunchState.java index 14fda952b7ac..14fda952b7ac 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivityLaunchState.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsActivityLaunchState.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsConfiguration.java index 68df1d5bd322..ee53734d175e 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsConfiguration.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsConfiguration.java @@ -26,7 +26,6 @@ import android.os.SystemProperties; import com.android.systemui.R; import com.android.systemui.recents.misc.SystemServicesProxy; import com.android.systemui.recents.views.DockState; -import com.android.systemui.shared.recents.model.TaskStack; /** * Represents the dock regions for each orientation. @@ -86,7 +85,7 @@ public class RecentsConfiguration { public RecentsConfiguration(Context context) { // Load only resources that can not change after the first load either through developer // settings or via multi window - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); mAppContext = context.getApplicationContext(); Resources res = mAppContext.getResources(); fakeShadows = res.getBoolean(R.bool.config_recents_fake_shadows); @@ -116,7 +115,7 @@ public class RecentsConfiguration { public DockState[] getDockStatesForCurrentOrientation() { boolean isLandscape = mAppContext.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); if (config.isLargeScreen) { return isLandscape ? DockRegion.TABLET_LANDSCAPE : DockRegion.TABLET_PORTRAIT; } else { diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsDebugFlags.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsDebugFlags.java index 19185939c553..19185939c553 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsDebugFlags.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsDebugFlags.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsImpl.java index d95c7313a282..3e5acabfed49 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImpl.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsImpl.java @@ -47,7 +47,6 @@ import android.view.WindowManager; import android.widget.Toast; import com.android.systemui.Dependency; -import com.android.systemui.OverviewProxyService; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.pip.phone.ForegroundThread; import com.google.android.collect.Lists; @@ -55,7 +54,6 @@ import com.google.android.collect.Lists; import com.android.internal.logging.MetricsLogger; import com.android.internal.policy.DockedDividerUtils; import com.android.systemui.R; -import com.android.systemui.SystemUIApplication; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.DockedTopTaskEvent; import com.android.systemui.recents.events.activity.EnterRecentsWindowLastAnimationFrameEvent; @@ -75,11 +73,11 @@ import com.android.systemui.recents.events.ui.TaskSnapshotChangedEvent; import com.android.systemui.recents.misc.DozeTrigger; import com.android.systemui.recents.misc.SystemServicesProxy; import com.android.systemui.recents.misc.SysUiTaskStackChangeListener; -import com.android.systemui.shared.recents.model.RecentsTaskLoadPlan; -import com.android.systemui.shared.recents.model.RecentsTaskLoader; +import com.android.systemui.recents.model.RecentsTaskLoadPlan; +import com.android.systemui.recents.model.RecentsTaskLoader; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task.TaskKey; -import com.android.systemui.shared.recents.model.TaskStack; +import com.android.systemui.recents.model.TaskStack; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.recents.views.TaskStackLayoutAlgorithm; import com.android.systemui.recents.views.TaskStackLayoutAlgorithm.VisibilityReport; @@ -143,7 +141,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener } // Preloads the next task - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); if (config.svelteLevel == RecentsTaskLoader.SVELTE_NONE) { Rect windowRect = getWindowRect(null /* windowRectOverride */); if (windowRect.isEmpty()) { @@ -153,7 +151,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener // Load the next task only if we aren't svelte ActivityManager.RunningTaskInfo runningTaskInfo = ActivityManagerWrapper.getInstance().getRunningTask(); - RecentsTaskLoader loader = Recents.getTaskLoader(); + RecentsTaskLoader loader = LegacyRecentsImpl.getTaskLoader(); RecentsTaskLoadPlan plan = new RecentsTaskLoadPlan(mContext); loader.preloadTasks(plan, -1); TaskStack stack = plan.getTaskStack(); @@ -195,8 +193,8 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener // This time needs to be fetched the same way the last active time is fetched in // {@link TaskRecord#touchActiveTime} - Recents.getConfiguration().getLaunchState().launchedFromPipApp = true; - Recents.getConfiguration().getLaunchState().launchedWithNextPipApp = false; + LegacyRecentsImpl.getConfiguration().getLaunchState().launchedFromPipApp = true; + LegacyRecentsImpl.getConfiguration().getLaunchState().launchedWithNextPipApp = false; EventBus.getDefault().send(new ActivityPinnedEvent(taskId)); consumeInstanceLoadPlan(); sLastPipTime = System.currentTimeMillis(); @@ -278,7 +276,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener public void onConnectionChanged(boolean isConnected) { if (!isConnected) { // Clear everything when the connection to the overview service - Recents.getTaskLoader().onTrimMemory(ComponentCallbacks2.TRIM_MEMORY_COMPLETE); + LegacyRecentsImpl.getTaskLoader().onTrimMemory(ComponentCallbacks2.TRIM_MEMORY_COMPLETE); } } }; @@ -313,7 +311,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener // When we start, preload the data associated with the previous recent tasks. // We can use a new plan since the caches will be the same. - RecentsTaskLoader loader = Recents.getTaskLoader(); + RecentsTaskLoader loader = LegacyRecentsImpl.getTaskLoader(); RecentsTaskLoadPlan plan = new RecentsTaskLoadPlan(mContext); loader.preloadTasks(plan, -1); RecentsTaskLoadPlan.Options launchOpts = new RecentsTaskLoadPlan.Options(); @@ -334,16 +332,16 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener /** * This is only called from the system user's Recents. Secondary users will instead proxy their * visibility change events through to the system user via - * {@link Recents#onBusEvent(RecentsVisibilityChangedEvent)}. + * {@link LegacyRecentsImpl#onBusEvent(RecentsVisibilityChangedEvent)}. */ public void onVisibilityChanged(Context context, boolean visible) { - Recents.getSystemServices().setRecentsVisibility(visible); + LegacyRecentsImpl.getSystemServices().setRecentsVisibility(visible); } /** * This is only called from the system user's Recents. Secondary users will instead proxy their * visibility change events through to the system user via - * {@link Recents#onBusEvent(ScreenPinningRequestEvent)}. + * {@link LegacyRecentsImpl#onBusEvent(ScreenPinningRequestEvent)}. */ public void onStartScreenPinning(Context context, int taskId) { final StatusBar statusBar = getStatusBar(); @@ -354,13 +352,13 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener public void showRecents(boolean triggeredFromAltTab, boolean draggingInRecents, boolean animate, int growTarget) { - final SystemServicesProxy ssp = Recents.getSystemServices(); + final SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); final MutableBoolean isHomeStackVisible = new MutableBoolean(true); - final boolean isRecentsVisible = Recents.getSystemServices().isRecentsActivityVisible( + final boolean isRecentsVisible = LegacyRecentsImpl.getSystemServices().isRecentsActivityVisible( isHomeStackVisible); final boolean fromHome = isHomeStackVisible.value; final boolean launchedWhileDockingTask = - Recents.getSystemServices().getSplitScreenPrimaryStack() != null; + LegacyRecentsImpl.getSystemServices().getSplitScreenPrimaryStack() != null; mTriggeredFromAltTab = triggeredFromAltTab; mDraggingInRecents = draggingInRecents; @@ -439,12 +437,12 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener MutableBoolean isHomeStackVisible = new MutableBoolean(true); long elapsedTime = SystemClock.elapsedRealtime() - mLastToggleTime; - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); if (ssp.isRecentsActivityVisible(isHomeStackVisible)) { - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); RecentsActivityLaunchState launchState = config.getLaunchState(); if (!launchState.launchedWithAltTab) { - if (Recents.getConfiguration().isGridEnabled) { + if (LegacyRecentsImpl.getConfiguration().isGridEnabled) { // Has the user tapped quickly? boolean isQuickTap = elapsedTime < ViewConfiguration.getDoubleTapTimeout(); if (isQuickTap) { @@ -509,7 +507,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener // RecentsActivity) only if there is a task to animate to. Post this to ensure that we // don't block the touch feedback on the nav bar button which triggers this. mHandler.post(() -> { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); if (!ssp.isRecentsActivityVisible(null)) { ActivityManager.RunningTaskInfo runningTask = ActivityManagerWrapper.getInstance().getRunningTask(); @@ -517,7 +515,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener return; } - RecentsTaskLoader loader = Recents.getTaskLoader(); + RecentsTaskLoader loader = LegacyRecentsImpl.getTaskLoader(); sInstanceLoadPlan = new RecentsTaskLoadPlan(mContext); loader.preloadTasks(sInstanceLoadPlan, runningTask.id); TaskStack stack = sInstanceLoadPlan.getTaskStack(); @@ -556,8 +554,8 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener * Transitions to the next recent task in the stack. */ public void showNextTask() { - SystemServicesProxy ssp = Recents.getSystemServices(); - RecentsTaskLoader loader = Recents.getTaskLoader(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); + RecentsTaskLoader loader = LegacyRecentsImpl.getTaskLoader(); RecentsTaskLoadPlan plan = new RecentsTaskLoadPlan(mContext); loader.preloadTasks(plan, -1); TaskStack focusedStack = plan.getTaskStack(); @@ -612,8 +610,8 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener * Transitions to the next affiliated task. */ public void showRelativeAffiliatedTask(boolean showNextTask) { - SystemServicesProxy ssp = Recents.getSystemServices(); - RecentsTaskLoader loader = Recents.getTaskLoader(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); + RecentsTaskLoader loader = LegacyRecentsImpl.getTaskLoader(); RecentsTaskLoadPlan plan = new RecentsTaskLoadPlan(mContext); loader.preloadTasks(plan, -1); TaskStack focusedStack = plan.getTaskStack(); @@ -678,20 +676,8 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener null /* resultListener */, null /* resultCallbackHandler */); } - public void showNextAffiliatedTask() { - // Keep track of when the affiliated task is triggered - MetricsLogger.count(mContext, "overview_affiliated_task_next", 1); - showRelativeAffiliatedTask(true); - } - - public void showPrevAffiliatedTask() { - // Keep track of when the affiliated task is triggered - MetricsLogger.count(mContext, "overview_affiliated_task_prev", 1); - showRelativeAffiliatedTask(false); - } - public void splitPrimaryTask(int taskId, int stackCreateMode, Rect initialBounds) { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); // Make sure we inform DividerView before we actually start the activity so we can change // the resize mode already. @@ -758,7 +744,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener private void updateDummyStackViewLayout(TaskStackLayoutAlgorithm stackLayout, TaskStack stack, Rect windowRect) { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); Rect displayRect = ssp.getDisplayRect(); Rect systemInsets = new Rect(); ssp.getStableInsets(systemInsets); @@ -789,7 +775,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener private Rect getWindowRect(Rect windowRectOverride) { return windowRectOverride != null ? new Rect(windowRectOverride) - : Recents.getSystemServices().getWindowRect(); + : LegacyRecentsImpl.getSystemServices().getWindowRect(); } /** @@ -871,7 +857,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener launchOpts.runningTaskId = runningTaskId; launchOpts.loadThumbnails = false; launchOpts.onlyLoadForCache = true; - Recents.getTaskLoader().loadTasks(sInstanceLoadPlan, launchOpts); + LegacyRecentsImpl.getTaskLoader().loadTasks(sInstanceLoadPlan, launchOpts); } /** @@ -900,7 +886,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener private Pair<ActivityOptions, AppTransitionAnimationSpecsFuture> getThumbnailTransitionActivityOptions(ActivityManager.RunningTaskInfo runningTask, Rect windowOverrideRect) { - final boolean isLowRamDevice = Recents.getConfiguration().isLowRamDevice; + final boolean isLowRamDevice = LegacyRecentsImpl.getConfiguration().isLowRamDevice; // Update the destination rect Task toTask = new Task(); @@ -955,7 +941,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener */ private Bitmap drawThumbnailTransitionBitmap(Task toTask, TaskViewTransform toTransform) { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); int width = (int) toTransform.rect.width(); int height = (int) toTransform.rect.height(); if (toTransform != null && toTask.key != null && width > 0 && height > 0) { @@ -1007,8 +993,8 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener private void startRecentsActivity(ActivityManager.RunningTaskInfo runningTask, boolean isHomeStackVisible, boolean animate, int growTarget) { - RecentsTaskLoader loader = Recents.getTaskLoader(); - RecentsActivityLaunchState launchState = Recents.getConfiguration().getLaunchState(); + RecentsTaskLoader loader = LegacyRecentsImpl.getTaskLoader(); + RecentsActivityLaunchState launchState = LegacyRecentsImpl.getConfiguration().getLaunchState(); int runningTaskId = !mLaunchedWhileDocking && (runningTask != null) ? runningTask.id @@ -1087,10 +1073,10 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener return SystemServicesProxy.getInstance(mContext).getWindowRect(); } Rect result = new Rect(); - Rect displayRect = Recents.getSystemServices().getDisplayRect(); + Rect displayRect = LegacyRecentsImpl.getSystemServices().getDisplayRect(); DockedDividerUtils.calculateBoundsForPosition(growTarget, WindowManager.DOCKED_BOTTOM, result, displayRect.width(), displayRect.height(), - Recents.getSystemServices().getDockedDividerSize(mContext)); + LegacyRecentsImpl.getSystemServices().getDockedDividerSize(mContext)); return result; } @@ -1110,7 +1096,7 @@ public class RecentsImpl implements ActivityOptions.OnAnimationFinishedListener | Intent.FLAG_ACTIVITY_TASK_ON_HOME); HidePipMenuEvent hideMenuEvent = new HidePipMenuEvent(); hideMenuEvent.addPostAnimationCallback(() -> { - Recents.getSystemServices().startActivityAsUserAsync(intent, opts); + LegacyRecentsImpl.getSystemServices().startActivityAsUserAsync(intent, opts); EventBus.getDefault().send(new RecentsActivityStartingEvent()); if (future != null) { future.composeSpecsSynchronous(); diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsImplProxy.java index a1da785f2a80..a1da785f2a80 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsImplProxy.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsImplProxy.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsSystemUser.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsSystemUser.java index c5e9f046aa16..c5e9f046aa16 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsSystemUser.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsSystemUser.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsSystemUserService.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsSystemUserService.java index b4212d310fc0..b5a0181c7d56 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsSystemUserService.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/RecentsSystemUserService.java @@ -22,7 +22,6 @@ import android.os.IBinder; import android.util.Log; import com.android.systemui.SysUiServiceProvider; -import com.android.systemui.SystemUIApplication; /** * A strictly system-user service that is started by the secondary user's Recents (with a limited @@ -41,7 +40,7 @@ public class RecentsSystemUserService extends Service { @Override public IBinder onBind(Intent intent) { - Recents recents = SysUiServiceProvider.getComponent(this, Recents.class); + LegacyRecentsImpl recents = SysUiServiceProvider.getComponent(this, LegacyRecentsImpl.class); if (DEBUG) { Log.d(TAG, "onBind: " + recents); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/EventBus.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/EventBus.java index 177362cf60aa..177362cf60aa 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/EventBus.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/EventBus.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/AppTransitionFinishedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/AppTransitionFinishedEvent.java index 4738eed3d1a1..4738eed3d1a1 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/AppTransitionFinishedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/AppTransitionFinishedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/CancelEnterRecentsWindowAnimationEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/CancelEnterRecentsWindowAnimationEvent.java index fec34e3cd23d..fec34e3cd23d 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/CancelEnterRecentsWindowAnimationEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/CancelEnterRecentsWindowAnimationEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/ConfigurationChangedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/ConfigurationChangedEvent.java index 294c1e7a190f..294c1e7a190f 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/ConfigurationChangedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/ConfigurationChangedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/DismissRecentsToHomeAnimationStarted.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/DismissRecentsToHomeAnimationStarted.java index e7be85868da2..e7be85868da2 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/DismissRecentsToHomeAnimationStarted.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/DismissRecentsToHomeAnimationStarted.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/DockedFirstAnimationFrameEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/DockedFirstAnimationFrameEvent.java index 32d9a70340de..32d9a70340de 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/DockedFirstAnimationFrameEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/DockedFirstAnimationFrameEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/DockedTopTaskEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/DockedTopTaskEvent.java index 9e3ced3f3757..9e3ced3f3757 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/DockedTopTaskEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/DockedTopTaskEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/EnterRecentsWindowAnimationCompletedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/EnterRecentsWindowAnimationCompletedEvent.java index b31f32090ac7..b31f32090ac7 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/EnterRecentsWindowAnimationCompletedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/EnterRecentsWindowAnimationCompletedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/EnterRecentsWindowLastAnimationFrameEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/EnterRecentsWindowLastAnimationFrameEvent.java index fd023d8054e5..fd023d8054e5 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/EnterRecentsWindowLastAnimationFrameEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/EnterRecentsWindowLastAnimationFrameEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/ExitRecentsWindowFirstAnimationFrameEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/ExitRecentsWindowFirstAnimationFrameEvent.java index fa806eb24ad1..fa806eb24ad1 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/ExitRecentsWindowFirstAnimationFrameEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/ExitRecentsWindowFirstAnimationFrameEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/HideRecentsEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/HideRecentsEvent.java index bf9b421ef1fb..bf9b421ef1fb 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/HideRecentsEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/HideRecentsEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/HideStackActionButtonEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/HideStackActionButtonEvent.java index e4a4f592657c..e4a4f592657c 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/HideStackActionButtonEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/HideStackActionButtonEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/LaunchMostRecentTaskRequestEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/LaunchMostRecentTaskRequestEvent.java index 24913a4c2ca6..24913a4c2ca6 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/LaunchMostRecentTaskRequestEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/LaunchMostRecentTaskRequestEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/LaunchNextTaskRequestEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/LaunchNextTaskRequestEvent.java index 11604b51b4a5..11604b51b4a5 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/LaunchNextTaskRequestEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/LaunchNextTaskRequestEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/LaunchTaskEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/LaunchTaskEvent.java index 2409f39d3760..2409f39d3760 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/LaunchTaskEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/LaunchTaskEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/LaunchTaskFailedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/LaunchTaskFailedEvent.java index 3a2d58c80d88..3a2d58c80d88 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/LaunchTaskFailedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/LaunchTaskFailedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/LaunchTaskStartedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/LaunchTaskStartedEvent.java index 3925ab1186dc..3925ab1186dc 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/LaunchTaskStartedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/LaunchTaskStartedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/LaunchTaskSucceededEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/LaunchTaskSucceededEvent.java index ec5089feabad..ec5089feabad 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/LaunchTaskSucceededEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/LaunchTaskSucceededEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/MultiWindowStateChangedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/MultiWindowStateChangedEvent.java index e4972b1fd7f4..64eeafa1ae17 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/MultiWindowStateChangedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/MultiWindowStateChangedEvent.java @@ -17,7 +17,7 @@ package com.android.systemui.recents.events.activity; import com.android.systemui.recents.events.EventBus; -import com.android.systemui.shared.recents.model.TaskStack; +import com.android.systemui.recents.model.TaskStack; /** * This is sent by the activity whenever the multi-window state has changed. diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/PackagesChangedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/PackagesChangedEvent.java index 47670e03c6a1..47670e03c6a1 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/PackagesChangedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/PackagesChangedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/RecentsActivityStartingEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/RecentsActivityStartingEvent.java index a2ecfe207cf9..a2ecfe207cf9 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/RecentsActivityStartingEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/RecentsActivityStartingEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/ShowEmptyViewEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/ShowEmptyViewEvent.java index 75bfd7bde66c..75bfd7bde66c 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/ShowEmptyViewEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/ShowEmptyViewEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/ShowStackActionButtonEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/ShowStackActionButtonEvent.java index d81f89c172b9..d81f89c172b9 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/ShowStackActionButtonEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/ShowStackActionButtonEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/TaskStackUpdatedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/TaskStackUpdatedEvent.java index 51d02b5b0018..0d614e8c675c 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/TaskStackUpdatedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/TaskStackUpdatedEvent.java @@ -17,7 +17,7 @@ package com.android.systemui.recents.events.activity; import com.android.systemui.recents.events.EventBus; -import com.android.systemui.shared.recents.model.TaskStack; +import com.android.systemui.recents.model.TaskStack; /** * This is sent by the activity whenever the task stach has changed. diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/ToggleRecentsEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/ToggleRecentsEvent.java index 49655b491aca..49655b491aca 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/ToggleRecentsEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/ToggleRecentsEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/activity/UndockingTaskEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/UndockingTaskEvent.java index d5083a8b017f..d5083a8b017f 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/activity/UndockingTaskEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/activity/UndockingTaskEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/component/ActivityPinnedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/ActivityPinnedEvent.java index f4d2fcff9672..f4d2fcff9672 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/component/ActivityPinnedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/ActivityPinnedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/component/ActivityUnpinnedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/ActivityUnpinnedEvent.java index 48c5f0b60f51..48c5f0b60f51 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/component/ActivityUnpinnedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/ActivityUnpinnedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/component/ExpandPipEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/ExpandPipEvent.java index 37266f6ff39f..37266f6ff39f 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/component/ExpandPipEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/ExpandPipEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/component/HidePipMenuEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/HidePipMenuEvent.java index ce4f207aa1d7..ce4f207aa1d7 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/component/HidePipMenuEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/HidePipMenuEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/component/RecentsVisibilityChangedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/RecentsVisibilityChangedEvent.java index 8843eb41210f..8843eb41210f 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/component/RecentsVisibilityChangedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/RecentsVisibilityChangedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/component/ScreenPinningRequestEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/ScreenPinningRequestEvent.java index d460917b6ab4..d460917b6ab4 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/component/ScreenPinningRequestEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/ScreenPinningRequestEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/component/SetWaitingForTransitionStartEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/SetWaitingForTransitionStartEvent.java index d9cf5fbf645d..d9cf5fbf645d 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/component/SetWaitingForTransitionStartEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/SetWaitingForTransitionStartEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/component/ShowUserToastEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/ShowUserToastEvent.java index e2b39c39b586..e2b39c39b586 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/component/ShowUserToastEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/component/ShowUserToastEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/AllTaskViewsDismissedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/AllTaskViewsDismissedEvent.java index 0352161be570..0352161be570 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/AllTaskViewsDismissedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/AllTaskViewsDismissedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/DeleteTaskDataEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/DeleteTaskDataEvent.java index b52e83b81649..b52e83b81649 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/DeleteTaskDataEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/DeleteTaskDataEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/DismissAllTaskViewsEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/DismissAllTaskViewsEvent.java index f8b59c7c62f7..f8b59c7c62f7 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/DismissAllTaskViewsEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/DismissAllTaskViewsEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/DismissTaskViewEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/DismissTaskViewEvent.java index 1f8c6443502f..1f8c6443502f 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/DismissTaskViewEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/DismissTaskViewEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/DraggingInRecentsEndedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/DraggingInRecentsEndedEvent.java index 9be8eb1cde4e..9be8eb1cde4e 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/DraggingInRecentsEndedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/DraggingInRecentsEndedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/DraggingInRecentsEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/DraggingInRecentsEvent.java index 5e8bfd410e31..5e8bfd410e31 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/DraggingInRecentsEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/DraggingInRecentsEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/HideIncompatibleAppOverlayEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/HideIncompatibleAppOverlayEvent.java index d6ef636b23a6..d6ef636b23a6 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/HideIncompatibleAppOverlayEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/HideIncompatibleAppOverlayEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/RecentsDrawnEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/RecentsDrawnEvent.java index 548316607133..548316607133 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/RecentsDrawnEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/RecentsDrawnEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/RecentsGrowingEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/RecentsGrowingEvent.java index d9b00271b31e..d9b00271b31e 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/RecentsGrowingEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/RecentsGrowingEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/ShowApplicationInfoEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/ShowApplicationInfoEvent.java index da19384ae93a..da19384ae93a 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/ShowApplicationInfoEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/ShowApplicationInfoEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/ShowIncompatibleAppOverlayEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/ShowIncompatibleAppOverlayEvent.java index 3a4350e3a0ca..3a4350e3a0ca 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/ShowIncompatibleAppOverlayEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/ShowIncompatibleAppOverlayEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/StackViewScrolledEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/StackViewScrolledEvent.java index c4b47c08fd8c..c4b47c08fd8c 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/StackViewScrolledEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/StackViewScrolledEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/TaskSnapshotChangedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/TaskSnapshotChangedEvent.java index f08292801b62..f08292801b62 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/TaskSnapshotChangedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/TaskSnapshotChangedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/TaskViewDismissedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/TaskViewDismissedEvent.java index 881a64af5b0f..973812454afd 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/TaskViewDismissedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/TaskViewDismissedEvent.java @@ -18,7 +18,7 @@ package com.android.systemui.recents.events.ui; import com.android.systemui.recents.events.EventBus; import com.android.systemui.shared.recents.model.Task; -import com.android.systemui.shared.recents.utilities.AnimationProps; +import com.android.systemui.recents.utilities.AnimationProps; import com.android.systemui.recents.views.TaskView; /** diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/UserInteractionEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/UserInteractionEvent.java index 39e4c1d7095c..39e4c1d7095c 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/UserInteractionEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/UserInteractionEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragDropTargetChangedEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/dragndrop/DragDropTargetChangedEvent.java index cf61b1ef7637..cf61b1ef7637 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragDropTargetChangedEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/dragndrop/DragDropTargetChangedEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragEndCancelledEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/dragndrop/DragEndCancelledEvent.java index 297afc53c557..c11936eee284 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragEndCancelledEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/dragndrop/DragEndCancelledEvent.java @@ -18,7 +18,7 @@ package com.android.systemui.recents.events.ui.dragndrop; import com.android.systemui.recents.events.EventBus; import com.android.systemui.shared.recents.model.Task; -import com.android.systemui.shared.recents.model.TaskStack; +import com.android.systemui.recents.model.TaskStack; import com.android.systemui.recents.views.TaskView; /** diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragEndEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/dragndrop/DragEndEvent.java index 73cbde998319..73cbde998319 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragEndEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/dragndrop/DragEndEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragStartEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/dragndrop/DragStartEvent.java index 021be77bcc8b..021be77bcc8b 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragStartEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/dragndrop/DragStartEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragStartInitializeDropTargetsEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/dragndrop/DragStartInitializeDropTargetsEvent.java index 64ba5748bb89..64ba5748bb89 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/dragndrop/DragStartInitializeDropTargetsEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/dragndrop/DragStartInitializeDropTargetsEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/focus/DismissFocusedTaskViewEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/focus/DismissFocusedTaskViewEvent.java index df740185f1e8..df740185f1e8 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/focus/DismissFocusedTaskViewEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/focus/DismissFocusedTaskViewEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/focus/FocusNextTaskViewEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/focus/FocusNextTaskViewEvent.java index 171ab5e8bcca..171ab5e8bcca 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/focus/FocusNextTaskViewEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/focus/FocusNextTaskViewEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/focus/FocusPreviousTaskViewEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/focus/FocusPreviousTaskViewEvent.java index 22469e758e70..22469e758e70 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/focus/FocusPreviousTaskViewEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/focus/FocusPreviousTaskViewEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/events/ui/focus/NavigateTaskViewEvent.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/focus/NavigateTaskViewEvent.java index 5508d269f03f..5508d269f03f 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/events/ui/focus/NavigateTaskViewEvent.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/events/ui/focus/NavigateTaskViewEvent.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/DozeTrigger.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/misc/DozeTrigger.java index 574ea03ac9bb..574ea03ac9bb 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/misc/DozeTrigger.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/misc/DozeTrigger.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/FreePathInterpolator.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/misc/FreePathInterpolator.java index 720c9520c074..720c9520c074 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/misc/FreePathInterpolator.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/misc/FreePathInterpolator.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/ReferenceCountedTrigger.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/misc/ReferenceCountedTrigger.java index 2637d8812357..2637d8812357 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/misc/ReferenceCountedTrigger.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/misc/ReferenceCountedTrigger.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SysUiTaskStackChangeListener.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/misc/SysUiTaskStackChangeListener.java index 5d7f1ba5eaf4..5d7f1ba5eaf4 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/misc/SysUiTaskStackChangeListener.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/misc/SysUiTaskStackChangeListener.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/misc/SystemServicesProxy.java index 350fe7848d9d..f8b61cd6b286 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/misc/SystemServicesProxy.java @@ -34,7 +34,6 @@ import android.app.IActivityManager; import android.app.IActivityTaskManager; import android.app.WindowConfiguration; import android.content.ComponentName; -import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.IPackageManager; @@ -51,10 +50,8 @@ import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.os.RemoteException; import android.os.ServiceManager; -import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; -import android.provider.Settings; import android.service.dreams.DreamService; import android.service.dreams.IDreamManager; import android.util.Log; @@ -71,7 +68,7 @@ import com.android.internal.app.AssistUtils; import com.android.internal.os.BackgroundThread; import com.android.systemui.Dependency; import com.android.systemui.UiOffloadThread; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.RecentsImpl; import com.android.systemui.statusbar.policy.UserInfoController; @@ -237,7 +234,7 @@ public class SystemServicesProxy { recentsStackInfo.topActivity : null; return (recentsStackVisibleNotOccluded && topActivity != null && topActivity.getPackageName().equals(RecentsImpl.RECENTS_PACKAGE) - && Recents.RECENTS_ACTIVITIES.contains(topActivity.getClassName())); + && LegacyRecentsImpl.RECENTS_ACTIVITIES.contains(topActivity.getClassName())); } catch (RemoteException e) { e.printStackTrace(); } diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/BackgroundTaskLoader.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/BackgroundTaskLoader.java index 114d69e35e39..e85a7fb27505 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/BackgroundTaskLoader.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/BackgroundTaskLoader.java @@ -14,7 +14,7 @@ * limitations under the License */ -package com.android.systemui.shared.recents.model; +package com.android.systemui.recents.model; import android.content.Context; import android.graphics.drawable.Drawable; @@ -22,12 +22,14 @@ import android.os.Handler; import android.os.HandlerThread; import android.util.Log; +import com.android.systemui.shared.recents.model.IconLoader; +import com.android.systemui.shared.recents.model.Task; +import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; /** * Background task resource loader */ -@Deprecated class BackgroundTaskLoader implements Runnable { static String TAG = "BackgroundTaskLoader"; static boolean DEBUG = false; diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/FilteredTaskList.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/FilteredTaskList.java index 7e0f8fe2e033..005be75b1b97 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/FilteredTaskList.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/FilteredTaskList.java @@ -14,11 +14,12 @@ * limitations under the License */ -package com.android.systemui.shared.recents.model; +package com.android.systemui.recents.model; import android.util.ArrayMap; import android.util.SparseArray; +import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task.TaskKey; import java.util.ArrayList; @@ -27,7 +28,6 @@ import java.util.List; /** * A list of filtered tasks. */ -@Deprecated class FilteredTaskList { private final ArrayList<Task> mTasks = new ArrayList<>(); diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/HighResThumbnailLoader.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/HighResThumbnailLoader.java index f02bc5ab15e1..34bc334204ee 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/HighResThumbnailLoader.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/HighResThumbnailLoader.java @@ -14,7 +14,7 @@ * limitations under the License */ -package com.android.systemui.shared.recents.model; +package com.android.systemui.recents.model; import static android.os.Process.setThreadPriority; @@ -25,7 +25,9 @@ import android.util.ArraySet; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; +import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task.TaskCallbacks; +import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; import java.util.ArrayDeque; @@ -34,7 +36,6 @@ import java.util.ArrayList; /** * Loader class that loads full-resolution thumbnails when appropriate. */ -@Deprecated public class HighResThumbnailLoader implements TaskCallbacks, BackgroundTaskLoader.OnIdleChangedListener { diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/RecentsTaskLoadPlan.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java index 8b3ae42ef479..7c6a76f1e25d 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/RecentsTaskLoadPlan.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/RecentsTaskLoadPlan.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.shared.recents.model; +package com.android.systemui.recents.model; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; @@ -29,7 +29,9 @@ import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.util.SparseBooleanArray; +import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task.TaskKey; +import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; import java.util.ArrayList; @@ -45,7 +47,6 @@ import java.util.List; * 3) executePlan() will actually load and fill in the icons and thumbnails according to the load * options specified, such that we can transition into the Recents activity seamlessly */ -@Deprecated public class RecentsTaskLoadPlan { /** The set of conditions to preload tasks. */ diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/RecentsTaskLoader.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/RecentsTaskLoader.java index b50aa76e1d0d..012913a60b66 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/RecentsTaskLoader.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/RecentsTaskLoader.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.shared.recents.model; +package com.android.systemui.recents.model; import android.app.ActivityManager; import android.app.ActivityTaskManager; @@ -29,10 +29,14 @@ import android.util.Log; import android.util.LruCache; import com.android.internal.annotations.GuardedBy; -import com.android.systemui.shared.recents.model.RecentsTaskLoadPlan.Options; -import com.android.systemui.shared.recents.model.RecentsTaskLoadPlan.PreloadOptions; +import com.android.systemui.recents.model.RecentsTaskLoadPlan.Options; +import com.android.systemui.recents.model.RecentsTaskLoadPlan.PreloadOptions; +import com.android.systemui.shared.recents.model.IconLoader; +import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task.TaskKey; +import com.android.systemui.shared.recents.model.TaskKeyLruCache; import com.android.systemui.shared.recents.model.TaskKeyLruCache.EvictionCallback; +import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; import java.io.PrintWriter; @@ -42,7 +46,6 @@ import java.util.Map; /** * Recents task loader */ -@Deprecated public class RecentsTaskLoader { private static final String TAG = "RecentsTaskLoader"; private static final boolean DEBUG = false; diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskFilter.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/TaskFilter.java index d378189b1675..9b734ec719ea 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskFilter.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/TaskFilter.java @@ -14,14 +14,14 @@ * limitations under the License */ -package com.android.systemui.shared.recents.model; +package com.android.systemui.recents.model; import android.util.SparseArray; +import com.android.systemui.shared.recents.model.Task; /** * An interface for a task filter to query whether a particular task should show in a stack. */ -@Deprecated public interface TaskFilter { /** Returns whether the filter accepts the specified task */ boolean acceptTask(SparseArray<Task> taskIdMap, Task t, int index); diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskKeyStrongCache.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/TaskKeyStrongCache.java index 4408eced3e93..27f2098868a1 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskKeyStrongCache.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/TaskKeyStrongCache.java @@ -14,12 +14,14 @@ * limitations under the License */ -package com.android.systemui.shared.recents.model; +package com.android.systemui.recents.model; import android.util.ArrayMap; import com.android.systemui.shared.recents.model.Task.TaskKey; +import com.android.systemui.shared.recents.model.TaskKeyCache; +import com.android.systemui.shared.recents.model.TaskKeyLruCache; import java.io.PrintWriter; /** @@ -31,7 +33,7 @@ public class TaskKeyStrongCache<V> extends TaskKeyCache<V> { private final ArrayMap<Integer, V> mCache = new ArrayMap<>(); - final void copyEntries(TaskKeyStrongCache<V> other) { + public final void copyEntries(TaskKeyStrongCache<V> other) { for (int i = other.mKeys.size() - 1; i >= 0; i--) { TaskKey key = other.mKeys.valueAt(i); put(key, other.mCache.get(key.id)); diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskResourceLoadQueue.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/TaskResourceLoadQueue.java index 6b9b9f55e49e..fe89ad5a324d 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskResourceLoadQueue.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/TaskResourceLoadQueue.java @@ -14,14 +14,14 @@ * limitations under the License */ -package com.android.systemui.shared.recents.model; +package com.android.systemui.recents.model; +import com.android.systemui.shared.recents.model.Task; import java.util.concurrent.ConcurrentLinkedQueue; /** * A Task load queue */ -@Deprecated class TaskResourceLoadQueue { private final ConcurrentLinkedQueue<Task> mQueue = new ConcurrentLinkedQueue<>(); diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskStack.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/TaskStack.java index fd92bca7fcda..01e6ba3f35ec 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskStack.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/model/TaskStack.java @@ -14,15 +14,16 @@ * limitations under the License. */ -package com.android.systemui.shared.recents.model; +package com.android.systemui.recents.model; import android.content.ComponentName; import android.util.ArrayMap; import android.util.ArraySet; import android.util.SparseArray; +import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task.TaskKey; -import com.android.systemui.shared.recents.utilities.AnimationProps; +import com.android.systemui.recents.utilities.AnimationProps; import com.android.systemui.shared.system.PackageManagerWrapper; import java.io.PrintWriter; @@ -33,7 +34,6 @@ import java.util.List; /** * The task stack contains a list of multiple tasks. */ -@Deprecated public class TaskStack { private static final String TAG = "TaskStack"; diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/AnimationProps.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/utilities/AnimationProps.java index 26f6b596e023..54639985bebd 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/AnimationProps.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/utilities/AnimationProps.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.systemui.shared.recents.utilities; +package com.android.systemui.recents.utilities; import android.animation.Animator; import android.animation.AnimatorSet; @@ -34,7 +34,6 @@ import java.util.List; * The generic set of animation properties to animate a {@link View}. The animation can have * different interpolators, start delays and durations for each of the different properties. */ -@Deprecated public class AnimationProps { private static final Interpolator LINEAR_INTERPOLATOR = new LinearInterpolator(); diff --git a/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/utilities/Utilities.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/utilities/Utilities.java new file mode 100644 index 000000000000..ff58eba71e8d --- /dev/null +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/utilities/Utilities.java @@ -0,0 +1,339 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.recents.utilities; + +import android.animation.Animator; +import android.animation.AnimatorSet; +import android.animation.RectEvaluator; +import android.annotation.FloatRange; +import android.annotation.Nullable; +import android.app.Activity; +import android.content.Context; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.graphics.Color; +import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.drawable.Drawable; +import android.os.Handler; +import android.os.Message; +import android.os.Trace; +import android.util.ArraySet; +import android.util.IntProperty; +import android.util.Property; +import android.util.TypedValue; +import android.view.Surface; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewParent; +import android.view.ViewRootImpl; +import android.view.ViewStub; + +import com.android.systemui.shared.recents.utilities.RectFEvaluator; +import java.util.ArrayList; +import java.util.Collections; + +/* Common code */ +public class Utilities { + + public static final Property<Drawable, Integer> DRAWABLE_ALPHA = + new IntProperty<Drawable>("drawableAlpha") { + @Override + public void setValue(Drawable object, int alpha) { + object.setAlpha(alpha); + } + + @Override + public Integer get(Drawable object) { + return object.getAlpha(); + } + }; + + public static final Property<Drawable, Rect> DRAWABLE_RECT = + new Property<Drawable, Rect>(Rect.class, "drawableBounds") { + @Override + public void set(Drawable object, Rect bounds) { + object.setBounds(bounds); + } + + @Override + public Rect get(Drawable object) { + return object.getBounds(); + } + }; + + public static final RectFEvaluator RECTF_EVALUATOR = new RectFEvaluator(); + public static final RectEvaluator RECT_EVALUATOR = new RectEvaluator(new Rect()); + + /** + * @return the first parent walking up the view hierarchy that has the given class type. + * + * @param parentClass must be a class derived from {@link View} + */ + public static <T extends View> T findParent(View v, Class<T> parentClass) { + ViewParent parent = v.getParent(); + while (parent != null) { + if (parentClass.isAssignableFrom(parent.getClass())) { + return (T) parent; + } + parent = parent.getParent(); + } + return null; + } + + /** + * Initializes the {@param setOut} with the given object. + */ + public static <T> ArraySet<T> objectToSet(T obj, ArraySet<T> setOut) { + setOut.clear(); + if (obj != null) { + setOut.add(obj); + } + return setOut; + } + + /** + * Replaces the contents of {@param setOut} with the contents of the {@param array}. + */ + public static <T> ArraySet<T> arrayToSet(T[] array, ArraySet<T> setOut) { + setOut.clear(); + if (array != null) { + Collections.addAll(setOut, array); + } + return setOut; + } + + /** + * @return the clamped {@param value} between the provided {@param min} and {@param max}. + */ + public static int clamp(int value, int min, int max) { + return Math.max(min, Math.min(max, value)); + } + + /** + * @return the clamped {@param value} between 0 and 1. + */ + public static float clamp01(float value) { + return Math.max(0f, Math.min(1f, value)); + } + + /** + * Scales the {@param value} to be proportionally between the {@param min} and + * {@param max} values. + * + * @param value must be between 0 and 1 + */ + public static float mapRange(@FloatRange(from=0.0,to=1.0) float value, float min, float max) { + return min + (value * (max - min)); + } + + /** + * Scales the {@param value} proportionally from {@param min} and {@param max} to 0 and 1. + * + * @param value must be between {@param min} and {@param max} + */ + public static float unmapRange(float value, float min, float max) { + return (value - min) / (max - min); + } + + /** Scales a rect about its centroid */ + public static void scaleRectAboutCenter(RectF r, float scale) { + if (scale != 1.0f) { + float cx = r.centerX(); + float cy = r.centerY(); + r.offset(-cx, -cy); + r.left *= scale; + r.top *= scale; + r.right *= scale; + r.bottom *= scale; + r.offset(cx, cy); + } + } + + /** Returns the base color overlaid with another overlay color with a specified alpha. */ + public static int getColorWithOverlay(int baseColor, int overlayColor, float overlayAlpha) { + return Color.rgb( + (int) (overlayAlpha * Color.red(baseColor) + + (1f - overlayAlpha) * Color.red(overlayColor)), + (int) (overlayAlpha * Color.green(baseColor) + + (1f - overlayAlpha) * Color.green(overlayColor)), + (int) (overlayAlpha * Color.blue(baseColor) + + (1f - overlayAlpha) * Color.blue(overlayColor))); + } + + /** + * Cancels an animation ensuring that if it has listeners, onCancel and onEnd + * are not called. + */ + public static void cancelAnimationWithoutCallbacks(Animator animator) { + if (animator != null && animator.isStarted()) { + removeAnimationListenersRecursive(animator); + animator.cancel(); + } + } + + /** + * Recursively removes all the listeners of all children of this animator + */ + public static void removeAnimationListenersRecursive(Animator animator) { + if (animator instanceof AnimatorSet) { + ArrayList<Animator> animators = ((AnimatorSet) animator).getChildAnimations(); + for (int i = animators.size() - 1; i >= 0; i--) { + removeAnimationListenersRecursive(animators.get(i)); + } + } + animator.removeAllListeners(); + } + + /** + * Sets the given {@link View}'s frame from its current translation. + */ + public static void setViewFrameFromTranslation(View v) { + RectF taskViewRect = new RectF(v.getLeft(), v.getTop(), v.getRight(), v.getBottom()); + taskViewRect.offset(v.getTranslationX(), v.getTranslationY()); + v.setTranslationX(0); + v.setTranslationY(0); + v.setLeftTopRightBottom((int) taskViewRect.left, (int) taskViewRect.top, + (int) taskViewRect.right, (int) taskViewRect.bottom); + } + + /** + * Returns a view stub for the given view id. + */ + public static ViewStub findViewStubById(View v, int stubId) { + return (ViewStub) v.findViewById(stubId); + } + + /** + * Returns a view stub for the given view id. + */ + public static ViewStub findViewStubById(Activity a, int stubId) { + return (ViewStub) a.findViewById(stubId); + } + + /** + * Used for debugging, converts DP to PX. + */ + public static float dpToPx(Resources res, float dp) { + return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, res.getDisplayMetrics()); + } + + /** + * Adds a trace event for debugging. + */ + public static void addTraceEvent(String event) { + Trace.traceBegin(Trace.TRACE_TAG_VIEW, event); + Trace.traceEnd(Trace.TRACE_TAG_VIEW); + } + + /** + * Returns whether this view, or one of its descendants have accessibility focus. + */ + public static boolean isDescendentAccessibilityFocused(View v) { + if (v.isAccessibilityFocused()) { + return true; + } + + if (v instanceof ViewGroup) { + ViewGroup vg = (ViewGroup) v; + int childCount = vg.getChildCount(); + for (int i = 0; i < childCount; i++) { + if (isDescendentAccessibilityFocused(vg.getChildAt(i))) { + return true; + } + } + } + return false; + } + + /** + * Returns the application configuration, which is independent of the activity's current + * configuration in multiwindow. + */ + public static Configuration getAppConfiguration(Context context) { + return context.getApplicationContext().getResources().getConfiguration(); + } + + /** + * @return The next frame name for the specified surface or -1 if the surface is no longer + * valid. + */ + public static long getNextFrameNumber(Surface s) { + return s != null && s.isValid() + ? s.getNextFrameNumber() + : -1; + + } + + /** + * @return The surface for the specified view. + */ + public static @Nullable Surface getSurface(View v) { + ViewRootImpl viewRoot = v.getViewRootImpl(); + if (viewRoot == null) { + return null; + } + return viewRoot.mSurface; + } + + /** + * Returns a lightweight dump of a rect. + */ + public static String dumpRect(Rect r) { + if (r == null) { + return "N:0,0-0,0"; + } + return r.left + "," + r.top + "-" + r.right + "," + r.bottom; + } + + /** + * Posts a runnable on a handler at the front of the queue ignoring any sync barriers. + */ + public static void postAtFrontOfQueueAsynchronously(Handler h, Runnable r) { + Message msg = h.obtainMessage().setCallback(r); + h.sendMessageAtFrontOfQueue(msg); + } + + /** Calculates the constrast between two colors, using the algorithm provided by the WCAG v2. */ + public static float computeContrastBetweenColors(int bg, int fg) { + float bgR = Color.red(bg) / 255f; + float bgG = Color.green(bg) / 255f; + float bgB = Color.blue(bg) / 255f; + bgR = (bgR < 0.03928f) ? bgR / 12.92f : (float) Math.pow((bgR + 0.055f) / 1.055f, 2.4f); + bgG = (bgG < 0.03928f) ? bgG / 12.92f : (float) Math.pow((bgG + 0.055f) / 1.055f, 2.4f); + bgB = (bgB < 0.03928f) ? bgB / 12.92f : (float) Math.pow((bgB + 0.055f) / 1.055f, 2.4f); + float bgL = 0.2126f * bgR + 0.7152f * bgG + 0.0722f * bgB; + + float fgR = Color.red(fg) / 255f; + float fgG = Color.green(fg) / 255f; + float fgB = Color.blue(fg) / 255f; + fgR = (fgR < 0.03928f) ? fgR / 12.92f : (float) Math.pow((fgR + 0.055f) / 1.055f, 2.4f); + fgG = (fgG < 0.03928f) ? fgG / 12.92f : (float) Math.pow((fgG + 0.055f) / 1.055f, 2.4f); + fgB = (fgB < 0.03928f) ? fgB / 12.92f : (float) Math.pow((fgB + 0.055f) / 1.055f, 2.4f); + float fgL = 0.2126f * fgR + 0.7152f * fgG + 0.0722f * fgB; + + return Math.abs((fgL + 0.05f) / (bgL + 0.05f)); + } + + /** + * @return the clamped {@param value} between the provided {@param min} and {@param max}. + */ + public static float clamp(float value, float min, float max) { + return Math.max(min, Math.min(max, value)); + } + +} diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/AnimateableViewBounds.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/AnimateableViewBounds.java index 30bea32dedff..e18850639336 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/AnimateableViewBounds.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/AnimateableViewBounds.java @@ -14,20 +14,18 @@ * limitations under the License. */ -package com.android.systemui.shared.recents.view; +package com.android.systemui.recents.views; import android.graphics.Outline; import android.graphics.Rect; import android.view.View; -import android.view.ViewDebug; import android.view.ViewOutlineProvider; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.utilities.Utilities; /** * An outline provider that has a clip and outline that can be animated. */ -@Deprecated public class AnimateableViewBounds extends ViewOutlineProvider { private static final float MIN_ALPHA = 0.1f; diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/DockState.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/DockState.java index a246141c74f8..d9c921cf3f7d 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/DockState.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/DockState.java @@ -45,8 +45,8 @@ import android.view.animation.Interpolator; import com.android.internal.policy.DockedDividerUtils; import com.android.systemui.Interpolators; import com.android.systemui.R; -import com.android.systemui.recents.Recents; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.LegacyRecentsImpl; +import com.android.systemui.recents.utilities.Utilities; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -132,7 +132,7 @@ public class DockState implements DropTarget { private ViewState(int areaAlpha, int hintAlpha, @TextOrientation int hintOrientation, int hintTextResId) { dockAreaAlpha = areaAlpha; - dockAreaOverlay = new ColorDrawable(Recents.getConfiguration().isGridEnabled + dockAreaOverlay = new ColorDrawable(LegacyRecentsImpl.getConfiguration().isGridEnabled ? DOCK_AREA_GRID_BG_COLOR : DOCK_AREA_BG_COLOR); dockAreaOverlay.setAlpha(0); hintTextAlpha = hintAlpha; diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/DropTarget.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/DropTarget.java index f2a631078d3c..f2a631078d3c 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/DropTarget.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/DropTarget.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/FakeShadowDrawable.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/FakeShadowDrawable.java index 79a774f7fba0..86b4297663cb 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/FakeShadowDrawable.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/FakeShadowDrawable.java @@ -30,7 +30,7 @@ import android.graphics.drawable.Drawable; import android.util.Log; import com.android.systemui.R; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.RecentsConfiguration; /** @@ -91,7 +91,7 @@ class FakeShadowDrawable extends Drawable { mCornerShadowPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.DITHER_FLAG); mCornerShadowPaint.setStyle(Paint.Style.FILL); mCornerShadowPaint.setDither(true); - mCornerRadius = Recents.getConfiguration().isGridEnabled ? + mCornerRadius = LegacyRecentsImpl.getConfiguration().isGridEnabled ? resources.getDimensionPixelSize( R.dimen.recents_grid_task_view_rounded_corners_radius) : resources.getDimensionPixelSize(R.dimen.recents_task_view_rounded_corners_radius); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/FixedSizeFrameLayout.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/FixedSizeFrameLayout.java index 471df6ae41fa..471df6ae41fa 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/FixedSizeFrameLayout.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/FixedSizeFrameLayout.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/FixedSizeImageView.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/FixedSizeImageView.java index d3b5e473eb7d..d3b5e473eb7d 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/FixedSizeImageView.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/FixedSizeImageView.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsEntrancePathInterpolator.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsEntrancePathInterpolator.java index e32da2d3f6be..e32da2d3f6be 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsEntrancePathInterpolator.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsEntrancePathInterpolator.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionComposer.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsTransitionComposer.java index 1c47430106e8..ce6631820fd8 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsTransitionComposer.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsTransitionComposer.java @@ -24,11 +24,10 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; import android.content.Context; import android.graphics.Bitmap; -import android.graphics.GraphicBuffer; import android.graphics.Rect; import android.util.Log; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.RecentsDebugFlags; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.view.AppTransitionAnimationSpecCompat; @@ -71,7 +70,7 @@ public class RecentsTransitionComposer { // height (stackView height) and when transitioning to fullscreen app, the code below would // force the task thumbnail to full stackView height immediately causing the transition // jarring. - if (!Recents.getConfiguration().isLowRamDevice && taskView.getTask() != + if (!LegacyRecentsImpl.getConfiguration().isLowRamDevice && taskView.getTask() != stackView.getStack().getFrontMostTask()) { taskRect.bottom = taskRect.top + stackView.getMeasuredHeight(); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsView.java index 5c925fda640e..0d758df11efc 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsView.java @@ -56,7 +56,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settingslib.Utils; import com.android.systemui.Interpolators; import com.android.systemui.R; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.RecentsActivity; import com.android.systemui.recents.RecentsActivityLaunchState; import com.android.systemui.recents.RecentsConfiguration; @@ -88,8 +88,8 @@ import com.android.systemui.recents.events.ui.dragndrop.DragStartEvent; import com.android.systemui.recents.misc.ReferenceCountedTrigger; import com.android.systemui.recents.misc.SystemServicesProxy; import com.android.systemui.shared.recents.model.Task; -import com.android.systemui.shared.recents.model.TaskStack; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.model.TaskStack; +import com.android.systemui.recents.utilities.Utilities; import com.android.systemui.shared.recents.view.AppTransitionAnimationSpecCompat; import com.android.systemui.shared.recents.view.AppTransitionAnimationSpecsFuture; import com.android.systemui.shared.recents.view.RecentsTransition; @@ -166,7 +166,7 @@ public class RecentsView extends FrameLayout { super(context, attrs, defStyleAttr, defStyleRes); setWillNotDraw(false); - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); mHandler = new Handler(); mTransitionHelper = new RecentsTransitionComposer(getContext()); mDividerSize = ssp.getDockedDividerSize(context); @@ -182,7 +182,7 @@ public class RecentsView extends FrameLayout { if (mStackActionButton != null) { removeView(mStackActionButton); } - mStackActionButton = (TextView) inflater.inflate(Recents.getConfiguration() + mStackActionButton = (TextView) inflater.inflate(LegacyRecentsImpl.getConfiguration() .isLowRamDevice ? R.layout.recents_low_ram_stack_action_button : R.layout.recents_stack_action_button, @@ -231,7 +231,7 @@ public class RecentsView extends FrameLayout { * Called from RecentsActivity when it is relaunched. */ public void onReload(TaskStack stack, boolean isResumingFromVisible) { - final RecentsConfiguration config = Recents.getConfiguration(); + final RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); final RecentsActivityLaunchState launchState = config.getLaunchState(); final boolean isTaskStackEmpty = stack.getTaskCount() == 0; @@ -350,7 +350,7 @@ public class RecentsView extends FrameLayout { /** Launches the task that recents was launched from if possible */ public boolean launchPreviousTask() { - if (Recents.getConfiguration().getLaunchState().launchedFromPipApp) { + if (LegacyRecentsImpl.getConfiguration().getLaunchState().launchedFromPipApp) { // If the app auto-entered PiP on the way to Recents, then just re-expand it EventBus.getDefault().send(new ExpandPipEvent()); return true; @@ -481,14 +481,14 @@ public class RecentsView extends FrameLayout { mAwaitingFirstLayout = false; // If launched via dragging from the nav bar, then we should translate the whole view // down offscreen - RecentsActivityLaunchState launchState = Recents.getConfiguration().getLaunchState(); + RecentsActivityLaunchState launchState = LegacyRecentsImpl.getConfiguration().getLaunchState(); if (launchState.launchedViaDragGesture) { setTranslationY(getMeasuredHeight()); } else { setTranslationY(0f); } - if (Recents.getConfiguration().isLowRamDevice + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice && mEmptyView.getVisibility() == View.VISIBLE) { animateEmptyView(true /* show */, null /* postAnimationTrigger */); } @@ -540,7 +540,7 @@ public class RecentsView extends FrameLayout { public final void onBusEvent(LaunchTaskEvent event) { launchTaskFromRecents(getStack(), event.task, mTaskStackView, event.taskView, event.screenPinningRequested, event.targetWindowingMode, event.targetActivityType); - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { EventBus.getDefault().send(new HideStackActionButtonEvent(false /* translate */)); } } @@ -551,13 +551,13 @@ public class RecentsView extends FrameLayout { EventBus.getDefault().send(new HideStackActionButtonEvent()); animateBackgroundScrim(0f, taskViewExitToHomeDuration); - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { animateEmptyView(false /* show */, event.getAnimationTrigger()); } } public final void onBusEvent(DragStartEvent event) { - updateVisibleDockRegions(Recents.getConfiguration().getDockStatesForCurrentOrientation(), + updateVisibleDockRegions(LegacyRecentsImpl.getConfiguration().getDockStatesForCurrentOrientation(), true /* isDefaultDockState */, DockState.NONE.viewState.dockAreaAlpha, DockState.NONE.viewState.hintTextAlpha, true /* animateAlpha */, false /* animateBounds */); @@ -575,7 +575,7 @@ public class RecentsView extends FrameLayout { public final void onBusEvent(DragDropTargetChangedEvent event) { if (event.dropTarget == null || !(event.dropTarget instanceof DockState)) { updateVisibleDockRegions( - Recents.getConfiguration().getDockStatesForCurrentOrientation(), + LegacyRecentsImpl.getConfiguration().getDockStatesForCurrentOrientation(), true /* isDefaultDockState */, DockState.NONE.viewState.dockAreaAlpha, DockState.NONE.viewState.hintTextAlpha, true /* animateAlpha */, true /* animateBounds */); @@ -695,7 +695,7 @@ public class RecentsView extends FrameLayout { } public final void onBusEvent(EnterRecentsWindowAnimationCompletedEvent event) { - RecentsActivityLaunchState launchState = Recents.getConfiguration().getLaunchState(); + RecentsActivityLaunchState launchState = LegacyRecentsImpl.getConfiguration().getLaunchState(); if (!launchState.launchedViaDockGesture && !launchState.launchedFromApp && getStack().getTaskCount() > 0) { animateBackgroundScrim(getOpaqueScrimAlpha(), @@ -708,7 +708,7 @@ public class RecentsView extends FrameLayout { } public final void onBusEvent(DismissAllTaskViewsEvent event) { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); if (!ssp.hasDockedTask()) { // Animate the background away only if we are dismissing Recents to home animateBackgroundScrim(0f, DEFAULT_UPDATE_SCRIM_DURATION); @@ -741,7 +741,7 @@ public class RecentsView extends FrameLayout { mStackActionButton.setAlpha(0f); if (translate) { mStackActionButton.setTranslationY(mStackActionButton.getMeasuredHeight() * - (Recents.getConfiguration().isLowRamDevice ? 1 : -0.25f)); + (LegacyRecentsImpl.getConfiguration().isLowRamDevice ? 1 : -0.25f)); } else { mStackActionButton.setTranslationY(0f); } @@ -780,7 +780,7 @@ public class RecentsView extends FrameLayout { if (mStackActionButton.getVisibility() == View.VISIBLE) { if (translate) { mStackActionButton.animate().translationY(mStackActionButton.getMeasuredHeight() - * (Recents.getConfiguration().isLowRamDevice ? 1 : -0.25f)); + * (LegacyRecentsImpl.getConfiguration().isLowRamDevice ? 1 : -0.25f)); } mStackActionButton.animate() .alpha(0f) @@ -896,8 +896,8 @@ public class RecentsView extends FrameLayout { Rect actionButtonRect = new Rect( mTaskStackView.mLayoutAlgorithm.getStackActionButtonRect()); int left, top; - if (Recents.getConfiguration().isLowRamDevice) { - Rect windowRect = Recents.getSystemServices().getWindowRect(); + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { + Rect windowRect = LegacyRecentsImpl.getSystemServices().getWindowRect(); int spaceLeft = windowRect.width() - mSystemInsets.left - mSystemInsets.right; left = (spaceLeft - mStackActionButton.getMeasuredWidth()) / 2 + mSystemInsets.left; top = windowRect.height() - (mStackActionButton.getMeasuredHeight() @@ -932,7 +932,7 @@ public class RecentsView extends FrameLayout { // Fetch window rect here already in order not to be blocked on lock contention in WM // when the future calls it. - final Rect windowRect = Recents.getSystemServices().getWindowRect(); + final Rect windowRect = LegacyRecentsImpl.getSystemServices().getWindowRect(); transitionFuture = new AppTransitionAnimationSpecsFuture(stackView.getHandler()) { @Override public List<AppTransitionAnimationSpecCompat> composeSpecs() { @@ -964,7 +964,7 @@ public class RecentsView extends FrameLayout { }, 350); } - if (!Recents.getConfiguration().isLowRamDevice) { + if (!LegacyRecentsImpl.getConfiguration().isLowRamDevice) { // Reset the state where we are waiting for the transition to start EventBus.getDefault().send(new SetWaitingForTransitionStartEvent(false)); } @@ -989,7 +989,7 @@ public class RecentsView extends FrameLayout { EventBus.getDefault().send(new ExitRecentsWindowFirstAnimationFrameEvent()); stackView.cancelAllTaskViewAnimations(); - if (!Recents.getConfiguration().isLowRamDevice) { + if (!LegacyRecentsImpl.getConfiguration().isLowRamDevice) { // Reset the state where we are waiting for the transition to start EventBus.getDefault().send(new SetWaitingForTransitionStartEvent(false)); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java index 53a91e536c8a..1a827d5941c0 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java @@ -16,7 +16,6 @@ package com.android.systemui.recents.views; -import android.app.ActivityManager; import android.app.ActivityTaskManager; import android.graphics.Point; import android.graphics.Rect; @@ -28,7 +27,7 @@ import android.view.ViewConfiguration; import android.view.ViewDebug; import com.android.internal.policy.DividerSnapAlgorithm; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.ConfigurationChangedEvent; import com.android.systemui.recents.events.activity.HideRecentsEvent; @@ -115,7 +114,7 @@ public class RecentsViewTouchHandler { /**** Events ****/ public final void onBusEvent(DragStartEvent event) { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); mRv.getParent().requestDisallowInterceptTouchEvent(true); mDragRequested = true; // We defer starting the actual drag handling until the user moves past the drag slop @@ -140,13 +139,13 @@ public class RecentsViewTouchHandler { mVisibleDockStates.clear(); if (ActivityTaskManager.supportsMultiWindow(mRv.getContext()) && !ssp.hasDockedTask() && mDividerSnapAlgorithm.isSplitScreenFeasible()) { - Recents.logDockAttempt(mRv.getContext(), event.task.getTopComponent(), + LegacyRecentsImpl.logDockAttempt(mRv.getContext(), event.task.getTopComponent(), event.task.resizeMode); if (!event.task.isDockable) { EventBus.getDefault().send(new ShowIncompatibleAppOverlayEvent()); } else { // Add the dock state drop targets (these take priority) - DockState[] dockStates = Recents.getConfiguration() + DockState[] dockStates = LegacyRecentsImpl.getConfiguration() .getDockStatesForCurrentOrientation(); for (DockState dockState : dockStates) { registerDropTargetForCurrentDrag(dockState); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/SystemBarScrimViews.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/SystemBarScrimViews.java index 170e39dfc360..22c12b408a13 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/SystemBarScrimViews.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/SystemBarScrimViews.java @@ -21,7 +21,7 @@ import android.view.View; import com.android.systemui.Interpolators; import com.android.systemui.R; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.RecentsActivity; import com.android.systemui.recents.events.activity.ConfigurationChangedEvent; import com.android.systemui.recents.events.activity.DismissRecentsToHomeAnimationStarted; @@ -30,7 +30,7 @@ import com.android.systemui.recents.events.ui.DismissAllTaskViewsEvent; import com.android.systemui.recents.events.activity.MultiWindowStateChangedEvent; import com.android.systemui.recents.events.ui.dragndrop.DragEndCancelledEvent; import com.android.systemui.recents.events.ui.dragndrop.DragEndEvent; -import com.android.systemui.shared.recents.utilities.AnimationProps; +import com.android.systemui.recents.utilities.AnimationProps; /** Manages the scrims for the various system bars. */ public class SystemBarScrimViews { @@ -53,8 +53,8 @@ public class SystemBarScrimViews { mNavBarScrimView.forceHasOverlappingRendering(false); mNavBarScrimEnterDuration = activity.getResources().getInteger( R.integer.recents_nav_bar_scrim_enter_duration); - mHasNavBarScrim = Recents.getSystemServices().hasTransposedNavigationBar(); - mHasDockedTasks = Recents.getSystemServices().hasDockedTask(); + mHasNavBarScrim = LegacyRecentsImpl.getSystemServices().hasTransposedNavigationBar(); + mHasDockedTasks = LegacyRecentsImpl.getSystemServices().hasDockedTask(); } /** @@ -147,7 +147,7 @@ public class SystemBarScrimViews { public final void onBusEvent(ConfigurationChangedEvent event) { if (event.fromDeviceOrientationChange) { - mHasNavBarScrim = Recents.getSystemServices().hasTransposedNavigationBar(); + mHasNavBarScrim = LegacyRecentsImpl.getSystemServices().hasTransposedNavigationBar(); } animateScrimToCurrentNavBarState(event.hasStackTasks); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackAnimationHelper.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackAnimationHelper.java index 67d09787e9f3..55749348b004 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackAnimationHelper.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackAnimationHelper.java @@ -28,7 +28,7 @@ import android.view.animation.PathInterpolator; import com.android.systemui.Interpolators; import com.android.systemui.R; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.RecentsActivityLaunchState; import com.android.systemui.recents.RecentsConfiguration; import com.android.systemui.recents.RecentsDebugFlags; @@ -36,9 +36,9 @@ import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.component.SetWaitingForTransitionStartEvent; import com.android.systemui.recents.misc.ReferenceCountedTrigger; import com.android.systemui.shared.recents.model.Task; -import com.android.systemui.shared.recents.model.TaskStack; +import com.android.systemui.recents.model.TaskStack; import com.android.systemui.recents.views.lowram.TaskStackLowRamLayoutAlgorithm; -import com.android.systemui.shared.recents.utilities.AnimationProps; +import com.android.systemui.recents.utilities.AnimationProps; import java.util.ArrayList; import java.util.List; @@ -115,7 +115,7 @@ public class TaskStackAnimationHelper { public TaskStackAnimationHelper(Context context, TaskStackView stackView) { mStackView = stackView; - mEnterAndExitFromHomeTranslationOffset = Recents.getConfiguration().isGridEnabled + mEnterAndExitFromHomeTranslationOffset = LegacyRecentsImpl.getConfiguration().isGridEnabled ? 0 : DOUBLE_FRAME_OFFSET_MS; } @@ -124,7 +124,7 @@ public class TaskStackAnimationHelper { * the in-app enter animations start (after the window-transition completes). */ public void prepareForEnterAnimation() { - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); RecentsActivityLaunchState launchState = config.getLaunchState(); Resources res = mStackView.getResources(); Resources appResources = mStackView.getContext().getApplicationContext().getResources(); @@ -148,7 +148,7 @@ public class TaskStackAnimationHelper { == Configuration.ORIENTATION_LANDSCAPE; float top = 0; - final boolean isLowRamDevice = Recents.getConfiguration().isLowRamDevice; + final boolean isLowRamDevice = LegacyRecentsImpl.getConfiguration().isLowRamDevice; if (isLowRamDevice && launchState.launchedFromApp && !launchState.launchedViaDockGesture) { stackLayout.getStackTransform(launchTargetTask, stackScroller.getStackScroll(), mTmpTransform, null /* frontTransform */); @@ -212,7 +212,7 @@ public class TaskStackAnimationHelper { * depending on how Recents was triggered. */ public void startEnterAnimation(final ReferenceCountedTrigger postAnimationTrigger) { - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); RecentsActivityLaunchState launchState = config.getLaunchState(); Resources res = mStackView.getResources(); Resources appRes = mStackView.getContext().getApplicationContext().getResources(); @@ -227,7 +227,7 @@ public class TaskStackAnimationHelper { return; } - final boolean isLowRamDevice = Recents.getConfiguration().isLowRamDevice; + final boolean isLowRamDevice = LegacyRecentsImpl.getConfiguration().isLowRamDevice; int taskViewEnterFromAppDuration = res.getInteger( R.integer.recents_task_enter_from_app_duration); int taskViewEnterFromAffiliatedAppDuration = res.getInteger( @@ -342,7 +342,7 @@ public class TaskStackAnimationHelper { taskAnimation = new AnimationProps() .setDuration(AnimationProps.BOUNDS, EXIT_TO_HOME_TRANSLATION_DURATION) .setListener(postAnimationTrigger.decrementOnAnimationEnd()); - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { taskAnimation.setInterpolator(AnimationProps.BOUNDS, Interpolators.FAST_OUT_SLOW_IN); } else { @@ -356,7 +356,7 @@ public class TaskStackAnimationHelper { } mTmpTransform.fillIn(tv); - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { taskAnimation.setInterpolator(AnimationProps.ALPHA, EXIT_TO_HOME_TRANSLATION_INTERPOLATOR) .setDuration(AnimationProps.ALPHA, EXIT_TO_HOME_TRANSLATION_DURATION); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java index d9f79bb6d34e..58a3f12c465d 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackLayoutAlgorithm.java @@ -29,15 +29,15 @@ import android.util.SparseIntArray; import android.view.ViewDebug; import com.android.systemui.R; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.RecentsActivityLaunchState; import com.android.systemui.recents.RecentsConfiguration; import com.android.systemui.recents.RecentsDebugFlags; import com.android.systemui.recents.misc.FreePathInterpolator; import com.android.systemui.recents.misc.SystemServicesProxy; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.utilities.Utilities; import com.android.systemui.shared.recents.model.Task; -import com.android.systemui.shared.recents.model.TaskStack; +import com.android.systemui.recents.model.TaskStack; import com.android.systemui.recents.views.lowram.TaskStackLowRamLayoutAlgorithm; import com.android.systemui.recents.views.grid.TaskGridLayoutAlgorithm; @@ -149,7 +149,7 @@ public class TaskStackLayoutAlgorithm { * @return True if we should use the grid layout. */ boolean useGridLayout() { - return Recents.getConfiguration().isGridEnabled; + return LegacyRecentsImpl.getConfiguration().isGridEnabled; } // A report of the visibility state of the stack @@ -432,7 +432,7 @@ public class TaskStackLayoutAlgorithm { */ public void update(TaskStack stack, ArraySet<Task.TaskKey> ignoreTasksSet, RecentsActivityLaunchState launchState, float lastScrollPPercent) { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); // Clear the progress map mTaskIndexMap.clear(); @@ -494,10 +494,10 @@ public class TaskStackLayoutAlgorithm { int maxBottomOffset = mStackBottomOffset + mTaskRect.height(); float maxBottomNormX = getNormalizedXFromUnfocusedY(maxBottomOffset, FROM_BOTTOM); mUnfocusedRange.offset(0f); - mMinScrollP = Recents.getConfiguration().isLowRamDevice + mMinScrollP = LegacyRecentsImpl.getConfiguration().isLowRamDevice ? mTaskStackLowRamLayoutAlgorithm.getMinScrollP() : 0; - mMaxScrollP = Recents.getConfiguration().isLowRamDevice + mMaxScrollP = LegacyRecentsImpl.getConfiguration().isLowRamDevice ? mTaskStackLowRamLayoutAlgorithm.getMaxScrollP(taskCount) : Math.max(mMinScrollP, (mNumStackTasks - 1) - Math.max(0, mUnfocusedRange.getAbsoluteX(maxBottomNormX))); @@ -508,7 +508,7 @@ public class TaskStackLayoutAlgorithm { mInitialScrollP = Utilities.clamp(launchTaskIndex, mMinScrollP, mMaxScrollP); } else if (0 <= lastScrollPPercent && lastScrollPPercent <= 1) { mInitialScrollP = Utilities.mapRange(lastScrollPPercent, mMinScrollP, mMaxScrollP); - } else if (Recents.getConfiguration().isLowRamDevice) { + } else if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { mInitialScrollP = mTaskStackLowRamLayoutAlgorithm.getInitialScrollP(mNumStackTasks, scrollToFront); } else if (scrollToFront) { @@ -527,7 +527,7 @@ public class TaskStackLayoutAlgorithm { * Creates task overrides to ensure the initial stack layout if necessary. */ public void setTaskOverridesForInitialState(TaskStack stack, boolean ignoreScrollToFront) { - RecentsActivityLaunchState launchState = Recents.getConfiguration().getLaunchState(); + RecentsActivityLaunchState launchState = LegacyRecentsImpl.getConfiguration().getLaunchState(); mTaskIndexOverrideMap.clear(); @@ -620,7 +620,7 @@ public class TaskStackLayoutAlgorithm { */ public float updateFocusStateOnScroll(float lastTargetStackScroll, float targetStackScroll, float lastStackScroll) { - if (targetStackScroll == lastStackScroll || Recents.getConfiguration().isLowRamDevice) { + if (targetStackScroll == lastStackScroll || LegacyRecentsImpl.getConfiguration().isLowRamDevice) { return targetStackScroll; } @@ -665,8 +665,8 @@ public class TaskStackLayoutAlgorithm { * Returns the default focus state. */ public int getInitialFocusState() { - RecentsActivityLaunchState launchState = Recents.getConfiguration().getLaunchState(); - RecentsDebugFlags debugFlags = Recents.getDebugFlags(); + RecentsActivityLaunchState launchState = LegacyRecentsImpl.getConfiguration().getLaunchState(); + RecentsDebugFlags debugFlags = LegacyRecentsImpl.getDebugFlags(); if (launchState.launchedWithAltTab) { return STATE_FOCUSED; } else { @@ -709,7 +709,7 @@ public class TaskStackLayoutAlgorithm { return mTaskGridLayoutAlgorithm.computeStackVisibilityReport(tasks); } - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { return mTaskStackLowRamLayoutAlgorithm.computeStackVisibilityReport(tasks); } @@ -786,7 +786,7 @@ public class TaskStackLayoutAlgorithm { int taskCount = mTaskIndexMap.size(); mTaskGridLayoutAlgorithm.getTransform(taskIndex, taskCount, transformOut, this); return transformOut; - } else if (Recents.getConfiguration().isLowRamDevice) { + } else if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { if (task == null) { transformOut.reset(); return transformOut; @@ -832,7 +832,7 @@ public class TaskStackLayoutAlgorithm { Rect windowOverrideRect) { Rect windowRect = windowOverrideRect != null ? windowOverrideRect - : Recents.getSystemServices().getWindowRect(); + : LegacyRecentsImpl.getSystemServices().getWindowRect(); transformOut.rect.offset(windowRect.left, windowRect.top); if (useGridLayout()) { // Draw the thumbnail a little lower to perfectly coincide with the view we are @@ -853,7 +853,7 @@ public class TaskStackLayoutAlgorithm { public void getStackTransform(float taskProgress, float nonOverrideTaskProgress, float stackScroll, int focusState, TaskViewTransform transformOut, TaskViewTransform frontTransform, boolean ignoreSingleTaskCase, boolean forceUpdate) { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); // Ensure that the task is in range mUnfocusedRange.offset(stackScroll); @@ -932,10 +932,12 @@ public class TaskStackLayoutAlgorithm { } } y = (mStackRect.top - mTaskRect.top) + - (int) Utilities.mapRange(focusState, unfocusedY, focusedY); + (int) com.android.systemui.recents.utilities.Utilities + .mapRange(focusState, unfocusedY, focusedY); z = Utilities.mapRange(Utilities.clamp01(boundedScrollUnfocusedNonOverrideRangeX), mMinTranslationZ, mMaxTranslationZ); - dimAlpha = Utilities.mapRange(focusState, unfocusedDim, focusedDim); + dimAlpha = com.android.systemui.recents.utilities.Utilities + .mapRange(focusState, unfocusedDim, focusedDim); viewOutlineAlpha = Utilities.mapRange(Utilities.clamp01(boundedScrollUnfocusedRangeX), OUTLINE_ALPHA_MIN_VALUE, OUTLINE_ALPHA_MAX_VALUE); } @@ -966,7 +968,7 @@ public class TaskStackLayoutAlgorithm { */ float getStackScrollForTask(Task t) { Float overrideP = mTaskIndexOverrideMap.get(t.key.id, null); - if (Recents.getConfiguration().isLowRamDevice || overrideP == null) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice || overrideP == null) { return (float) mTaskIndexMap.get(t.key.id, 0); } return overrideP; @@ -985,8 +987,8 @@ public class TaskStackLayoutAlgorithm { * offset (which is at the task's brightest point). */ float getStackScrollForTaskAtInitialOffset(Task t) { - if (Recents.getConfiguration().isLowRamDevice) { - RecentsActivityLaunchState launchState = Recents.getConfiguration().getLaunchState(); + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { + RecentsActivityLaunchState launchState = LegacyRecentsImpl.getConfiguration().getLaunchState(); return mTaskStackLowRamLayoutAlgorithm.getInitialScrollP(mNumStackTasks, launchState.launchedFromHome || launchState.launchedFromPipApp || launchState.launchedWithNextPipApp); @@ -1003,7 +1005,7 @@ public class TaskStackLayoutAlgorithm { * screen along the arc-length proportionally (1/arclength). */ public float getDeltaPForY(int downY, int y) { - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { return mTaskStackLowRamLayoutAlgorithm.scrollToPercentage(downY - y); } float deltaP = (float) (y - downY) / mStackRect.height() * @@ -1016,7 +1018,7 @@ public class TaskStackLayoutAlgorithm { * of the curve, map back to the screen y. */ public int getYForDeltaP(float downScrollP, float p) { - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { return mTaskStackLowRamLayoutAlgorithm.percentageToScroll(downScrollP - p); } int y = (int) ((p - downScrollP) * mStackRect.height() * @@ -1068,7 +1070,7 @@ public class TaskStackLayoutAlgorithm { public static int getDimensionForDevice(Context ctx, int phonePortResId, int phoneLandResId, int tabletPortResId, int tabletLandResId, int xlargeTabletPortResId, int xlargeTabletLandResId, int gridLayoutResId) { - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); Resources res = ctx.getResources(); boolean isLandscape = Utilities.getAppConfiguration(ctx).orientation == Configuration.ORIENTATION_LANDSCAPE; @@ -1211,7 +1213,7 @@ public class TaskStackLayoutAlgorithm { if (mStackRect.isEmpty()) { return; } - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { mTaskStackLowRamLayoutAlgorithm.getBackOfStackTransform(mBackOfStackTransform, this); mTaskStackLowRamLayoutAlgorithm.getFrontOfStackTransform(mFrontOfStackTransform, this); return; @@ -1233,7 +1235,7 @@ public class TaskStackLayoutAlgorithm { * Returns the proper task rectangle according to the current grid state. */ public Rect getTaskRect() { - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { return mTaskStackLowRamLayoutAlgorithm.getTaskRect(); } return useGridLayout() ? mTaskGridLayoutAlgorithm.getTaskGridRect() : mTaskRect; @@ -1250,7 +1252,8 @@ public class TaskStackLayoutAlgorithm { writer.print("insets="); writer.print(Utilities.dumpRect(mSystemInsets)); writer.print(" stack="); writer.print(Utilities.dumpRect(mStackRect)); writer.print(" task="); writer.print(Utilities.dumpRect(mTaskRect)); - writer.print(" actionButton="); writer.print(Utilities.dumpRect(mStackActionButtonRect)); + writer.print(" actionButton="); writer.print( + Utilities.dumpRect(mStackActionButtonRect)); writer.println(); writer.print(innerPrefix); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackView.java index 89288d84aceb..14fd149d22f4 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackView.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackView.java @@ -26,7 +26,6 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Rect; import android.os.Bundle; -import android.provider.Settings; import android.util.ArrayMap; import android.util.ArraySet; import android.util.MutableBoolean; @@ -44,7 +43,7 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.systemui.Interpolators; import com.android.systemui.R; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.RecentsActivity; import com.android.systemui.recents.RecentsActivityLaunchState; import com.android.systemui.recents.RecentsConfiguration; @@ -87,10 +86,10 @@ import com.android.systemui.recents.events.ui.focus.NavigateTaskViewEvent; import com.android.systemui.recents.misc.DozeTrigger; import com.android.systemui.recents.misc.ReferenceCountedTrigger; import com.android.systemui.recents.misc.SystemServicesProxy; -import com.android.systemui.shared.recents.utilities.AnimationProps; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.utilities.AnimationProps; +import com.android.systemui.recents.utilities.Utilities; import com.android.systemui.shared.recents.model.Task; -import com.android.systemui.shared.recents.model.TaskStack; +import com.android.systemui.recents.model.TaskStack; import com.android.systemui.recents.views.grid.GridTaskView; import com.android.systemui.recents.views.grid.TaskGridLayoutAlgorithm; import com.android.systemui.recents.views.grid.TaskViewFocusFrame; @@ -247,7 +246,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal public TaskStackView(Context context) { super(context); - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); Resources res = context.getResources(); // Set the stack first @@ -259,7 +258,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal mStackScroller = new TaskStackViewScroller(context, this, mLayoutAlgorithm); mTouchHandler = new TaskStackViewTouchHandler(context, this, mStackScroller); mAnimationHelper = new TaskStackAnimationHelper(context, this); - mTaskCornerRadiusPx = Recents.getConfiguration().isGridEnabled ? + mTaskCornerRadiusPx = LegacyRecentsImpl.getConfiguration().isGridEnabled ? res.getDimensionPixelSize(R.dimen.recents_grid_task_view_rounded_corners_radius) : res.getDimensionPixelSize(R.dimen.recents_task_view_rounded_corners_radius); mFastFlingVelocity = res.getDimensionPixelSize(R.dimen.recents_fast_fling_velocity); @@ -269,7 +268,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal mStackActionButtonVisible = false; // Create a frame to draw around the focused task view - if (Recents.getConfiguration().isGridEnabled) { + if (LegacyRecentsImpl.getConfiguration().isGridEnabled) { mTaskViewFocusFrame = new TaskViewFocusFrame(mContext, this, mLayoutAlgorithm.mTaskGridLayoutAlgorithm); addView(mTaskViewFocusFrame); @@ -762,7 +761,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal */ private void clipTaskViews() { // We never clip task views in grid layout - if (Recents.getConfiguration().isGridEnabled) { + if (LegacyRecentsImpl.getConfiguration().isGridEnabled) { return; } @@ -816,7 +815,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal } public void updateLayoutAlgorithm(boolean boundScrollToNewMinMax) { - updateLayoutAlgorithm(boundScrollToNewMinMax, Recents.getConfiguration().getLaunchState()); + updateLayoutAlgorithm(boundScrollToNewMinMax, LegacyRecentsImpl.getConfiguration().getLaunchState()); } /** @@ -1142,7 +1141,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal if (mStackScroller.computeScroll()) { // Notify accessibility sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SCROLLED); - Recents.getTaskLoader().getHighResThumbnailLoader().setFlingingFast( + LegacyRecentsImpl.getTaskLoader().getHighResThumbnailLoader().setFlingingFast( mStackScroller.getScrollVelocity() > mFastFlingVelocity); } if (mDeferredTaskViewLayoutAnimation != null) { @@ -1327,7 +1326,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal // Set the task focused state without requesting view focus, and leave the focus animations // until after the enter-animation - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); RecentsActivityLaunchState launchState = config.getLaunchState(); // We set the initial focused task view iff the following conditions are satisfied: @@ -1474,7 +1473,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal @Override public TaskView createView(Context context) { - if (Recents.getConfiguration().isGridEnabled) { + if (LegacyRecentsImpl.getConfiguration().isGridEnabled) { return (GridTaskView) mInflater.inflate(R.layout.recents_grid_task_view, this, false); } else { return (TaskView) mInflater.inflate(R.layout.recents_task_view, this, false); @@ -1565,7 +1564,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal // If the doze trigger has already fired, then update the state for this task view if (mUIDozeTrigger.isAsleep() || - useGridLayout() || Recents.getConfiguration().isLowRamDevice) { + useGridLayout() || LegacyRecentsImpl.getConfiguration().isLowRamDevice) { tv.setNoUserInteractionState(); } @@ -1573,17 +1572,17 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal task.notifyTaskDataLoaded(task.thumbnail, task.icon); } else { // Load the task data - Recents.getTaskLoader().loadTaskData(task); + LegacyRecentsImpl.getTaskLoader().loadTaskData(task); } - Recents.getTaskLoader().getHighResThumbnailLoader().onTaskVisible(task); + LegacyRecentsImpl.getTaskLoader().getHighResThumbnailLoader().onTaskVisible(task); } private void unbindTaskView(TaskView tv, Task task) { if (task != mPrefetchingTask) { // Report that this task's data is no longer being used - Recents.getTaskLoader().unloadTaskData(task); + LegacyRecentsImpl.getTaskLoader().unloadTaskData(task); } - Recents.getTaskLoader().getHighResThumbnailLoader().onTaskInvisible(task); + LegacyRecentsImpl.getTaskLoader().getHighResThumbnailLoader().onTaskInvisible(task); } private void updatePrefetchingTask(ArrayList<Task> tasks, int frontIndex, int backIndex) { @@ -1596,19 +1595,19 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal if (mPrefetchingTask != null) { int index = tasks.indexOf(mPrefetchingTask); if (index < backIndex || index > frontIndex) { - Recents.getTaskLoader().unloadTaskData(mPrefetchingTask); + LegacyRecentsImpl.getTaskLoader().unloadTaskData(mPrefetchingTask); } } mPrefetchingTask = t; if (t != null) { - Recents.getTaskLoader().loadTaskData(t); + LegacyRecentsImpl.getTaskLoader().loadTaskData(t); } } } private void clearPrefetchingTask() { if (mPrefetchingTask != null) { - Recents.getTaskLoader().unloadTaskData(mPrefetchingTask); + LegacyRecentsImpl.getTaskLoader().unloadTaskData(mPrefetchingTask); } mPrefetchingTask = null; } @@ -1644,7 +1643,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal // In grid layout, the stack action button always remains visible. if (mEnterAnimationComplete && !useGridLayout()) { - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { // Show stack button when user drags down to show older tasks on low ram devices if (mStack.getTaskCount() > 0 && !mStackActionButtonVisible && mTouchHandler.mIsScrolling && curScroll - prevScroll < 0) { @@ -1727,7 +1726,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal return; } - if (!Recents.getConfiguration().getLaunchState().launchedFromPipApp + if (!LegacyRecentsImpl.getConfiguration().getLaunchState().launchedFromPipApp && mStack.isNextLaunchTargetPip(RecentsImpl.getLastPipTime())) { // If the launch task is in the pinned stack, then expand the PiP now EventBus.getDefault().send(new ExpandPipEvent()); @@ -1831,7 +1830,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal // Remove the task from the stack mStack.removeTask(event.task, event.animation, false /* fromDockGesture */); EventBus.getDefault().send(new DeleteTaskDataEvent(event.task)); - if (mStack.getTaskCount() > 0 && Recents.getConfiguration().isLowRamDevice) { + if (mStack.getTaskCount() > 0 && LegacyRecentsImpl.getConfiguration().isLowRamDevice) { EventBus.getDefault().send(new ShowStackActionButtonEvent(false /* translate */)); } @@ -1878,7 +1877,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal // Poke the doze trigger on user interaction mUIDozeTrigger.poke(); - RecentsDebugFlags debugFlags = Recents.getDebugFlags(); + RecentsDebugFlags debugFlags = LegacyRecentsImpl.getDebugFlags(); if (mFocusedTask != null) { TaskView tv = getChildViewForTask(mFocusedTask); if (tv != null) { @@ -2002,7 +2001,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal // animate the focused state if we are alt-tabbing now, after the window enter // animation is completed if (mFocusedTask != null) { - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); RecentsActivityLaunchState launchState = config.getLaunchState(); setFocusedTask(mStack.indexOfTask(mFocusedTask), false /* scrollToTask */, launchState.launchedWithAltTab); @@ -2023,7 +2022,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal setTasks(event.stack, true /* allowNotifyStackChanges */); } else { // Reset the launch state before handling the multiwindow change - RecentsActivityLaunchState launchState = Recents.getConfiguration().getLaunchState(); + RecentsActivityLaunchState launchState = LegacyRecentsImpl.getConfiguration().getLaunchState(); launchState.reset(); // Defer until the next frame to ensure that we have received all the system insets, and @@ -2044,7 +2043,7 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal public final void onBusEvent(ConfigurationChangedEvent event) { if (event.fromDeviceOrientationChange) { mDisplayOrientation = Utilities.getAppConfiguration(mContext).orientation; - mDisplayRect = Recents.getSystemServices().getDisplayRect(); + mDisplayRect = LegacyRecentsImpl.getSystemServices().getDisplayRect(); // Always stop the scroller, otherwise, we may continue setting the stack scroll to the // wrong bounds in the new layout @@ -2186,14 +2185,14 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal * Reads current system flags related to accessibility and screen pinning. */ private void readSystemFlags() { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); mTouchExplorationEnabled = ssp.isTouchExplorationEnabled(); mScreenPinningEnabled = ActivityManagerWrapper.getInstance().isScreenPinningEnabled() && !ActivityManagerWrapper.getInstance().isLockToAppActive(); } private void updateStackActionButtonVisibility() { - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { return; } @@ -2260,9 +2259,12 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal writer.print(" screenPinningOn="); writer.print(mScreenPinningEnabled ? "Y" : "N"); writer.print(" numIgnoreTasks="); writer.print(mIgnoreTasks.size()); writer.print(" numViewPool="); writer.print(mViewPool.getViews().size()); - writer.print(" stableStackBounds="); writer.print(Utilities.dumpRect(mStableStackBounds)); - writer.print(" stackBounds="); writer.print(Utilities.dumpRect(mStackBounds)); - writer.print(" stableWindow="); writer.print(Utilities.dumpRect(mStableWindowRect)); + writer.print(" stableStackBounds="); writer.print( + Utilities.dumpRect(mStableStackBounds)); + writer.print(" stackBounds="); writer.print( + Utilities.dumpRect(mStackBounds)); + writer.print(" stableWindow="); writer.print( + Utilities.dumpRect(mStableWindowRect)); writer.print(" window="); writer.print(Utilities.dumpRect(mWindowRect)); writer.print(" display="); writer.print(Utilities.dumpRect(mDisplayRect)); writer.print(" orientation="); writer.print(mDisplayOrientation); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewScroller.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackViewScroller.java index 6b23977410c7..42efe59da54c 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewScroller.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackViewScroller.java @@ -31,9 +31,9 @@ import android.widget.OverScroller; import com.android.systemui.Interpolators; import com.android.systemui.R; -import com.android.systemui.recents.Recents; -import com.android.systemui.shared.recents.utilities.AnimationProps; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.LegacyRecentsImpl; +import com.android.systemui.recents.utilities.AnimationProps; +import com.android.systemui.recents.utilities.Utilities; import com.android.systemui.recents.views.lowram.TaskStackLowRamLayoutAlgorithm; import com.android.systemui.statusbar.FlingAnimationUtils; @@ -89,7 +89,7 @@ public class TaskStackViewScroller { mContext = context; mCb = cb; mScroller = new OverScroller(context); - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { mScroller.setFriction(0.06f); } mLayoutAlgorithm = layoutAlgorithm; @@ -206,7 +206,7 @@ public class TaskStackViewScroller { float stackScroll = getStackScroll(); // Skip if not in low ram layout and if the scroll is out of min and max bounds - if (!Recents.getConfiguration().isLowRamDevice || stackScroll < mLayoutAlgorithm.mMinScrollP + if (!LegacyRecentsImpl.getConfiguration().isLowRamDevice || stackScroll < mLayoutAlgorithm.mMinScrollP || stackScroll > mLayoutAlgorithm.mMaxScrollP) { return; } diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java index c91cdfc379c4..dd6926c848b4 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java @@ -38,14 +38,14 @@ import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.SwipeHelper; import com.android.systemui.recents.Constants; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.HideRecentsEvent; import com.android.systemui.recents.events.ui.StackViewScrolledEvent; import com.android.systemui.recents.events.ui.TaskViewDismissedEvent; import com.android.systemui.recents.misc.FreePathInterpolator; -import com.android.systemui.shared.recents.utilities.AnimationProps; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.utilities.AnimationProps; +import com.android.systemui.recents.utilities.Utilities; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.statusbar.FlingAnimationUtils; @@ -296,7 +296,7 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback { if (curScrollP < minScrollP || curScrollP > maxScrollP) { float clampedScrollP = Utilities.clamp(curScrollP, minScrollP, maxScrollP); float overscrollP = (curScrollP - clampedScrollP); - float maxOverscroll = Recents.getConfiguration().isLowRamDevice + float maxOverscroll = LegacyRecentsImpl.getConfiguration().isLowRamDevice ? layoutAlgorithm.mTaskStackLowRamLayoutAlgorithm.getMaxOverscroll() : MAX_OVERSCROLL; float overscrollX = Math.abs(overscrollP) / maxOverscroll; @@ -339,7 +339,7 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback { if (mScroller.isScrollOutOfBounds()) { mScroller.animateBoundScroll(); } else if (Math.abs(velocity) > mMinimumVelocity && - !Recents.getConfiguration().isLowRamDevice) { + !LegacyRecentsImpl.getConfiguration().isLowRamDevice) { float minY = mDownY + layoutAlgorithm.getYForDeltaP(mDownScrollP, layoutAlgorithm.mMaxScrollP); float maxY = mDownY + layoutAlgorithm.getYForDeltaP(mDownScrollP, @@ -352,7 +352,7 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback { // Reset the focused task after the user has scrolled, but we have no scrolling // in grid layout and therefore we don't want to reset the focus there. if (!mSv.mTouchExplorationEnabled && !mSv.useGridLayout()) { - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { mScroller.scrollToClosestTask(velocity); } else { mSv.resetFocusedTask(mSv.getFocusedTask()); @@ -493,7 +493,7 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback { float prevAnchorTaskScroll = 0; boolean pullStackForward = mCurrentTasks.size() > 0; if (pullStackForward) { - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { float index = layoutAlgorithm.getStackScrollForTask(anchorTask); prevAnchorTaskScroll = mSv.getStackAlgorithm().mTaskStackLowRamLayoutAlgorithm .getScrollPForTask((int) index); @@ -513,14 +513,14 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback { // Otherwise, offset the scroll by the movement of the anchor task float anchorTaskScroll = layoutAlgorithm.getStackScrollForTaskIgnoreOverrides(anchorTask); - if (Recents.getConfiguration().isLowRamDevice) { + if (LegacyRecentsImpl.getConfiguration().isLowRamDevice) { float index = layoutAlgorithm.getStackScrollForTask(anchorTask); anchorTaskScroll = mSv.getStackAlgorithm().mTaskStackLowRamLayoutAlgorithm .getScrollPForTask((int) index); } float stackScrollOffset = (anchorTaskScroll - prevAnchorTaskScroll); if (layoutAlgorithm.getFocusState() != TaskStackLayoutAlgorithm.STATE_FOCUSED - && !Recents.getConfiguration().isLowRamDevice) { + && !LegacyRecentsImpl.getConfiguration().isLowRamDevice) { // If we are focused, we don't want the front task to move, but otherwise, we // allow the back task to move up, and the front task to move back stackScrollOffset *= 0.75f; @@ -554,7 +554,7 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback { // Only update the swipe progress for the surrounding tasks if the dismiss animation was not // preempted from a call to cancelNonDismissTaskAnimations if ((mActiveTaskView == v || mSwipeHelperAnimations.containsKey(v)) && - !Recents.getConfiguration().isLowRamDevice) { + !LegacyRecentsImpl.getConfiguration().isLowRamDevice) { updateTaskViewTransforms( Interpolators.FAST_OUT_SLOW_IN.getInterpolation(swipeProgress)); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskView.java index f0278a69e116..ab0bf9570ffd 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskView.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskView.java @@ -39,7 +39,7 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.systemui.Interpolators; import com.android.systemui.R; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.RecentsActivity; import com.android.systemui.recents.RecentsConfiguration; import com.android.systemui.recents.events.EventBus; @@ -51,11 +51,10 @@ import com.android.systemui.recents.events.ui.dragndrop.DragEndEvent; import com.android.systemui.recents.events.ui.dragndrop.DragStartEvent; import com.android.systemui.recents.misc.ReferenceCountedTrigger; import com.android.systemui.recents.misc.SystemServicesProxy; -import com.android.systemui.shared.recents.utilities.AnimationProps; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.utilities.AnimationProps; +import com.android.systemui.recents.utilities.Utilities; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.ThumbnailData; -import com.android.systemui.shared.recents.view.AnimateableViewBounds; import java.io.PrintWriter; import java.util.ArrayList; @@ -175,7 +174,7 @@ public class TaskView extends FixedSizeFrameLayout implements Task.TaskCallbacks public TaskView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); Resources res = context.getResources(); mViewBounds = createOutlineProvider(); if (config.fakeShadows) { @@ -283,7 +282,7 @@ public class TaskView extends FixedSizeFrameLayout implements Task.TaskCallbacks void updateViewPropertiesToTaskTransform(TaskViewTransform toTransform, AnimationProps toAnimation, ValueAnimator.AnimatorUpdateListener updateCallback) { - RecentsConfiguration config = Recents.getConfiguration(); + RecentsConfiguration config = LegacyRecentsImpl.getConfiguration(); cancelTransformAnimation(); // Compose the animations for the transform @@ -412,7 +411,7 @@ public class TaskView extends FixedSizeFrameLayout implements Task.TaskCallbacks * view. */ boolean shouldClipViewInStack() { - if (getVisibility() != View.VISIBLE || Recents.getConfiguration().isLowRamDevice) { + if (getVisibility() != View.VISIBLE || LegacyRecentsImpl.getConfiguration().isLowRamDevice) { return false; } return mClipViewInStack; @@ -601,7 +600,7 @@ public class TaskView extends FixedSizeFrameLayout implements Task.TaskCallbacks public void onTaskBound(Task t, boolean touchExplorationEnabled, int displayOrientation, Rect displayRect) { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); mTouchExplorationEnabled = touchExplorationEnabled; mTask = t; mTaskBound = true; @@ -679,10 +678,10 @@ public class TaskView extends FixedSizeFrameLayout implements Task.TaskCallbacks @Override public boolean onLongClick(View v) { - if (!Recents.getConfiguration().dragToSplitEnabled) { + if (!LegacyRecentsImpl.getConfiguration().dragToSplitEnabled) { return false; } - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); boolean inBounds = false; Rect clipBounds = new Rect(mViewBounds.getClipBounds()); if (!clipBounds.isEmpty()) { diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewAccessibilityDelegate.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskViewAccessibilityDelegate.java index 5bb5b2da32b4..7bcad75cefcf 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewAccessibilityDelegate.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskViewAccessibilityDelegate.java @@ -25,7 +25,7 @@ import android.view.View; import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import com.android.systemui.R; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.ui.dragndrop.DragEndEvent; import com.android.systemui.recents.events.ui.dragndrop.DragStartEvent; @@ -56,8 +56,8 @@ public class TaskViewAccessibilityDelegate extends View.AccessibilityDelegate { public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(host, info); if (ActivityTaskManager.supportsSplitScreenMultiWindow(mTaskView.getContext()) - && !Recents.getSystemServices().hasDockedTask()) { - DockState[] dockStates = Recents.getConfiguration() + && !LegacyRecentsImpl.getSystemServices().hasDockedTask()) { + DockState[] dockStates = LegacyRecentsImpl.getConfiguration() .getDockStatesForCurrentOrientation(); for (DockState dockState: dockStates) { if (dockState == DockState.TOP) { diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewHeader.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskViewHeader.java index de4291446e7c..21c0234121c4 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewHeader.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskViewHeader.java @@ -53,14 +53,14 @@ import com.android.internal.logging.MetricsLogger; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.recents.Constants; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.LaunchTaskEvent; import com.android.systemui.recents.events.ui.ShowApplicationInfoEvent; import com.android.systemui.recents.misc.SystemServicesProxy; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.PackageManagerWrapper; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.utilities.Utilities; import com.android.systemui.shared.recents.model.Task; /* The task bar view */ @@ -212,7 +212,7 @@ public class TaskViewHeader extends FrameLayout Resources res = context.getResources(); mLightDismissDrawable = context.getDrawable(R.drawable.recents_dismiss_light); mDarkDismissDrawable = context.getDrawable(R.drawable.recents_dismiss_dark); - mCornerRadius = Recents.getConfiguration().isGridEnabled ? + mCornerRadius = LegacyRecentsImpl.getConfiguration().isGridEnabled ? res.getDimensionPixelSize(R.dimen.recents_grid_task_view_rounded_corners_radius) : res.getDimensionPixelSize(R.dimen.recents_task_view_rounded_corners_radius); mHighlightHeight = res.getDimensionPixelSize(R.dimen.recents_task_view_highlight); @@ -246,7 +246,7 @@ public class TaskViewHeader extends FrameLayout @Override protected void onFinishInflate() { - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); // Initialize the icon and description views mIconView = findViewById(R.id.icon); @@ -605,7 +605,7 @@ public class TaskViewHeader extends FrameLayout */ private void showAppOverlay() { // Skip early if the task is invalid - SystemServicesProxy ssp = Recents.getSystemServices(); + SystemServicesProxy ssp = LegacyRecentsImpl.getSystemServices(); ComponentName cn = mTask.key.getComponent(); int userId = mTask.key.userId; ActivityInfo activityInfo = PackageManagerWrapper.getInstance().getActivityInfo(cn, userId); diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewThumbnail.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskViewThumbnail.java index 4152b05a960e..68f85a50a9d6 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewThumbnail.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskViewThumbnail.java @@ -37,7 +37,7 @@ import android.view.ViewDebug; import com.android.systemui.R; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.ui.TaskSnapshotChangedEvent; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.utilities.Utilities; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.ThumbnailData; import java.io.PrintWriter; diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewTransform.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskViewTransform.java index 9b717e0e5e2f..48a733663fad 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/TaskViewTransform.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskViewTransform.java @@ -24,8 +24,8 @@ import android.graphics.RectF; import android.util.Property; import android.view.View; -import com.android.systemui.shared.recents.utilities.AnimationProps; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.utilities.AnimationProps; +import com.android.systemui.recents.utilities.Utilities; import java.util.ArrayList; diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/ViewPool.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/ViewPool.java index a287fe642002..a287fe642002 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/ViewPool.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/ViewPool.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/grid/AnimateableGridViewBounds.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/grid/AnimateableGridViewBounds.java index 3bdad314d7f3..a029478c2045 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/grid/AnimateableGridViewBounds.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/grid/AnimateableGridViewBounds.java @@ -17,7 +17,7 @@ package com.android.systemui.recents.views.grid; import android.view.View; -import com.android.systemui.shared.recents.view.AnimateableViewBounds; +import com.android.systemui.recents.views.AnimateableViewBounds; /* An outline provider for grid-based task views. */ class AnimateableGridViewBounds extends AnimateableViewBounds { diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/grid/GridTaskView.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/grid/GridTaskView.java index 0d5115444b01..8b4700c54b00 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/grid/GridTaskView.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/grid/GridTaskView.java @@ -19,7 +19,7 @@ package com.android.systemui.recents.views.grid; import android.content.Context; import android.util.AttributeSet; import com.android.systemui.R; -import com.android.systemui.shared.recents.view.AnimateableViewBounds; +import com.android.systemui.recents.views.AnimateableViewBounds; import com.android.systemui.recents.views.TaskView; public class GridTaskView extends TaskView { diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/grid/GridTaskViewThumbnail.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/grid/GridTaskViewThumbnail.java index 2d7cfb1ab167..2d7cfb1ab167 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/grid/GridTaskViewThumbnail.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/grid/GridTaskViewThumbnail.java diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/grid/TaskGridLayoutAlgorithm.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/grid/TaskGridLayoutAlgorithm.java index ccda4b5aaf1f..719eaa71f788 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/grid/TaskGridLayoutAlgorithm.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/grid/TaskGridLayoutAlgorithm.java @@ -26,7 +26,7 @@ import android.view.WindowManager; import com.android.systemui.R; import com.android.systemui.recents.events.ui.focus.NavigateTaskViewEvent.Direction; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.utilities.Utilities; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.recents.views.TaskStackLayoutAlgorithm; import com.android.systemui.recents.views.TaskViewTransform; diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/grid/TaskViewFocusFrame.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/grid/TaskViewFocusFrame.java index fe6bafb27c7c..1655f6c83c53 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/grid/TaskViewFocusFrame.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/grid/TaskViewFocusFrame.java @@ -23,7 +23,7 @@ import android.view.View; import android.view.ViewTreeObserver.OnGlobalFocusChangeListener; import com.android.systemui.R; -import com.android.systemui.shared.recents.model.TaskStack; +import com.android.systemui.recents.model.TaskStack; import com.android.systemui.recents.views.TaskStackView; public class TaskViewFocusFrame extends View implements OnGlobalFocusChangeListener { diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/lowram/TaskStackLowRamLayoutAlgorithm.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/lowram/TaskStackLowRamLayoutAlgorithm.java index 49cac269f51d..15c7c87366d2 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/lowram/TaskStackLowRamLayoutAlgorithm.java +++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/lowram/TaskStackLowRamLayoutAlgorithm.java @@ -21,9 +21,9 @@ import android.graphics.Rect; import android.view.ViewConfiguration; import com.android.systemui.R; -import com.android.systemui.recents.Recents; +import com.android.systemui.recents.LegacyRecentsImpl; import com.android.systemui.recents.RecentsActivityLaunchState; -import com.android.systemui.shared.recents.utilities.Utilities; +import com.android.systemui.recents.utilities.Utilities; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.recents.views.TaskStackLayoutAlgorithm; import com.android.systemui.recents.views.TaskViewTransform; @@ -82,7 +82,7 @@ public class TaskStackLowRamLayoutAlgorithm { } public VisibilityReport computeStackVisibilityReport(ArrayList<Task> tasks) { - RecentsActivityLaunchState launchState = Recents.getConfiguration().getLaunchState(); + RecentsActivityLaunchState launchState = LegacyRecentsImpl.getConfiguration().getLaunchState(); int maxVisible = launchState.launchedFromHome || launchState.launchedFromPipApp || launchState.launchedWithNextPipApp ? NUM_TASK_VISIBLE_LAUNCHED_FROM_HOME diff --git a/packages/SystemUI/proguard.flags b/packages/SystemUI/proguard.flags index fa4c8b51dc45..ee94aedfe399 100644 --- a/packages/SystemUI/proguard.flags +++ b/packages/SystemUI/proguard.flags @@ -10,6 +10,7 @@ public void setGlowScale(float); } +-keep class com.android.systemui.recents.OverviewProxyRecentsImpl -keep class com.android.systemui.statusbar.car.CarStatusBar -keep class com.android.systemui.statusbar.phone.StatusBar -keep class com.android.systemui.statusbar.tv.TvStatusBar @@ -17,21 +18,6 @@ -keep class com.android.systemui.SystemUIFactory -keep class * extends com.android.systemui.SystemUI --keepclassmembers class ** { - public void onBusEvent(**); - public void onInterprocessBusEvent(**); -} --keepclassmembers class ** extends **.EventBus$InterprocessEvent { - public <init>(android.os.Bundle); -} - --keep class com.android.systemui.recents.views.TaskView { - public int getDim(); - public void setDim(int); - public float getTaskProgress(); - public void setTaskProgress(float); -} - -keepclasseswithmembers class * { public <init>(android.content.Context, android.util.AttributeSet); } diff --git a/packages/SystemUI/res/layout/status_bar_no_recent_apps.xml b/packages/SystemUI/res/layout/status_bar_no_recent_apps.xml deleted file mode 100644 index adfaed13e0a1..000000000000 --- a/packages/SystemUI/res/layout/status_bar_no_recent_apps.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -** -** Copyright 2011, The Android Open Source Project -** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at -** -** http://www.apache.org/licenses/LICENSE-2.0 -** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and -** limitations under the License. -*/ ---> - -<FrameLayout - xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_height="match_parent" - android:layout_width="match_parent" - > - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textSize="20dp" - android:textColor="@android:color/holo_blue_light" - android:text="@string/status_bar_no_recent_apps" - android:gravity="center_horizontal" - android:layout_gravity="center" - /> -</FrameLayout> diff --git a/packages/SystemUI/res/values-sw600dp/dimens.xml b/packages/SystemUI/res/values-sw600dp/dimens.xml index eb5c180aa754..89341838f3e3 100644 --- a/packages/SystemUI/res/values-sw600dp/dimens.xml +++ b/packages/SystemUI/res/values-sw600dp/dimens.xml @@ -88,7 +88,4 @@ <!-- Keyboard shortcuts helper --> <dimen name="ksh_layout_width">488dp</dimen> - - <!-- The offsets the tasks animate from when recents is launched while docking --> - <dimen name="recents_task_stack_animation_launched_while_docking_offset">192dp</dimen> </resources> diff --git a/packages/SystemUI/res/values/attrs.xml b/packages/SystemUI/res/values/attrs.xml index f50ef8261add..baaf9d6c1260 100644 --- a/packages/SystemUI/res/values/attrs.xml +++ b/packages/SystemUI/res/values/attrs.xml @@ -30,12 +30,6 @@ <declare-styleable name="NotificationLinearLayout"> <attr name="insetLeft" format="dimension" /> </declare-styleable> - <declare-styleable name="RecentsPanelView"> - <attr name="recentItemLayout" format="reference" /> - <!-- Style for the "Clear all" button. --> - <attr name="clearAllStyle" format="reference" /> - <attr name="clearAllBackgroundColor" format="reference" /> - </declare-styleable> <declare-styleable name="DeadZone"> <attr name="minSize" format="dimension" /> <attr name="maxSize" format="dimension" /> diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml index d1320a34f365..0027cc606bad 100644 --- a/packages/SystemUI/res/values/colors.xml +++ b/packages/SystemUI/res/values/colors.xml @@ -39,32 +39,6 @@ <!-- Tint color for the content on the notification overflow card. --> <color name="keyguard_overflow_content_color">#ff686868</color> - <!-- The disabled recents task bar background color. --> - <color name="recents_task_bar_disabled_background_color">#ff676767</color> - <!-- The default recents task bar background color. --> - <color name="recents_task_bar_default_background_color">#ffe6e6e6</color> - <!-- The default recents task view background color. --> - <color name="recents_task_view_default_background_color">#fff3f3f3</color> - <!-- The recents task bar light text color to be drawn on top of dark backgrounds. --> - <color name="recents_task_bar_light_text_color">#ffeeeeee</color> - <!-- The recents task bar dark text color to be drawn on top of light backgrounds. --> - <color name="recents_task_bar_dark_text_color">#cc000000</color> - <!-- The recents task bar light dismiss icon color to be drawn on top of dark backgrounds. --> - <color name="recents_task_bar_light_icon_color">#ccffffff</color> - <!-- The recents task bar dark dismiss icon color to be drawn on top of light backgrounds. --> - <color name="recents_task_bar_dark_icon_color">#99000000</color> - <!-- The lock to task button background color. --> - <color name="recents_task_view_lock_to_app_button_background_color">#ffe6e6e6</color> - <!-- The lock to task button foreground color. --> - <color name="recents_task_view_lock_to_app_button_color">#ff666666</color> - <!-- The background color for the freeform workspace. --> - <color name="recents_freeform_workspace_bg_color">#33FFFFFF</color> - - <!-- The background color for clear all button on light backgrounds if not transparent. --> - <color name="recents_clear_all_button_bg_light_color">#CCFFFFFF</color> - <!-- The background color for clear all button on dark backgrounds if not transparent. --> - <color name="recents_clear_all_button_bg_dark_color">#CC000000</color> - <color name="keyguard_affordance">#ffffffff</color> <!-- The color of the legacy notification background --> @@ -110,12 +84,6 @@ <!-- The shadow color for light navigation bar icons. --> <color name="nav_key_button_shadow_color">#30000000</color> - <!-- Shadow color for the first pixels around the fake shadow for recents. --> - <color name="fake_shadow_start_color">#44000000</color> - - <!-- Shadow color for the furthest pixels around the fake shadow for recents. --> - <color name="fake_shadow_end_color">#03000000</color> - <color name="screen_pinning_request_window_bg">#80000000</color> <color name="segmented_buttons_background">#14FFFFFF</color><!-- 8% white --> diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 637830906124..b31dc50be5d1 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -20,19 +20,6 @@ <!-- These resources are around just to allow their values to be customized for different hardware and product builds. --> <resources> - <!-- Whether recents should use hardware layers for its taskviews. This flag can be enabled - for devices where the java drawing of round rects may be slow --> - <bool name="config_recents_use_hardware_layers">false</bool> - - <!-- The number of app thumbnails we keep in memory --> - <integer name="config_recents_max_thumbnail_count">10</integer> - - <!-- The number of app icons we keep in memory --> - <integer name="config_recents_max_icon_count">20</integer> - - <!-- Whether to use cheap, less good looking shadows for recents --> - <bool name="config_recents_fake_shadows">false</bool> - <!-- Whether to clip notification contents with a rounded rectangle. Might be expensive on certain GPU's and thus can be turned off with only minimal visual impact. --> <bool name="config_notifications_round_rect_clipping">true</bool> @@ -45,6 +32,11 @@ interface. This name is in the ComponentName flattened format (package/class) --> <string name="config_statusBarComponent" translatable="false">com.android.systemui.statusbar.phone.StatusBar</string> + <!-- Component to be used as the recents implementation. Must implement the + RecentsImplementation interface. This name is in the ComponentName flattened format + (package/class) --> + <string name="config_recentsComponent" translatable="false">com.android.systemui.recents.OverviewProxyRecentsImpl</string> + <!-- Whether or not we show the number in the bar. --> <bool name="config_statusBarShowNumber">false</bool> @@ -163,30 +155,6 @@ <!-- The number of milliseconds to extend ambient pulse by when prompted (e.g. on touch) --> <integer name="ambient_notification_extension_time">6000</integer> - <!-- The duration in seconds to wait before the dismiss buttons are shown. --> - <integer name="recents_task_bar_dismiss_delay_seconds">1000</integer> - - <!-- The duration for animating the task decorations in after transitioning from an app. --> - <integer name="recents_task_enter_from_app_duration">200</integer> - - <!-- The duration for animating the task decorations in after transitioning from an app. --> - <integer name="recents_task_enter_from_affiliated_app_duration">125</integer> - - <!-- The duration for animating the task decorations out before transitioning to an app. --> - <integer name="recents_task_exit_to_app_duration">125</integer> - - <!-- The min animation duration for animating the nav bar scrim in. --> - <integer name="recents_nav_bar_scrim_enter_duration">400</integer> - - <!-- The animation duration for scrolling the stack to a particular item. --> - <integer name="recents_animate_task_stack_scroll_duration">200</integer> - - <!-- The delay to enforce between each alt-tab key press. --> - <integer name="recents_alt_tab_key_delay">200</integer> - - <!-- Svelte specific logic, see RecentsConfiguration.SVELTE_* constants. --> - <integer name="recents_svelte_level">0</integer> - <!-- In multi-window, determines whether the stack where recents lives should grow from the smallest position when being launched. --> <bool name="recents_grow_in_multiwindow">true</bool> @@ -194,16 +162,6 @@ <!-- Animation duration when using long press on recents to dock --> <integer name="long_press_dock_anim_duration">250</integer> - <!-- Recents: The relative range of visible tasks from the current scroll position - while the stack is focused. --> - <item name="recents_layout_focused_range_min" format="float" type="integer">-3</item> - <item name="recents_layout_focused_range_max" format="float" type="integer">2</item> - - <!-- Recents: The relative range of visible tasks from the current scroll position - while the stack is not focused. --> - <item name="recents_layout_unfocused_range_min" format="float" type="integer">-2</item> - <item name="recents_layout_unfocused_range_max" format="float" type="integer">2.5</item> - <!-- Whether to enable KeyguardService or not --> <bool name="config_enableKeyguardService">true</bool> @@ -362,7 +320,6 @@ <string-array name="config_systemUIServiceComponentsPerUser" translatable="false"> <item>com.android.systemui.Dependency</item> <item>com.android.systemui.util.NotificationChannels</item> - <item>com.android.systemui.recents.Recents</item> </string-array> <!-- Nav bar button default ordering/layout --> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index ab7dec9bbb4d..9fe771868568 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -793,102 +793,11 @@ <dimen name="ksh_item_padding">4dp</dimen> <dimen name="ksh_item_margin_start">4dp</dimen> -<!-- Recents Layout --> - - <!-- The amount to inset the stack, specifically at the top and the other sides. We also - don't want this to change across configurations that Recents can be opened in, so we - define them statically for all display sizes. --> - <dimen name="recents_layout_min_margin">16dp</dimen> - <dimen name="recents_layout_top_margin_phone">16dp</dimen> - <dimen name="recents_layout_top_margin_tablet">32dp</dimen> - <dimen name="recents_layout_top_margin_tablet_xlarge">40dp</dimen> - <dimen name="recents_layout_bottom_margin">16dp</dimen> - <dimen name="recents_layout_side_margin_phone">16dp</dimen> - <dimen name="recents_layout_side_margin_tablet">48dp</dimen> - <dimen name="recents_layout_side_margin_tablet_docked">16dp</dimen> - <dimen name="recents_layout_side_margin_tablet_xlarge">64dp</dimen> - <dimen name="recents_layout_side_margin_tablet_xlarge_docked">16dp</dimen> - - <!-- The height between the top margin and the top of the focused task. --> - <dimen name="recents_layout_top_peek_size">48dp</dimen> - <!-- The height between the bottom margin and the top of task in front of the focused task. --> - <dimen name="recents_layout_bottom_peek_size">56dp</dimen> - - <!-- The offset from the top and bottom of the stack of the focused task. The bottom offset - will be additionally offset by the bottom system insets since it goes under the nav bar - in certain orientations. --> - <dimen name="recents_layout_initial_top_offset_phone_port">128dp</dimen> - <dimen name="recents_layout_initial_bottom_offset_phone_port">80dp</dimen> - <dimen name="recents_layout_initial_top_offset_phone_land">72dp</dimen> - <dimen name="recents_layout_initial_bottom_offset_phone_land">72dp</dimen> - <dimen name="recents_layout_initial_top_offset_tablet">160dp</dimen> - <dimen name="recents_layout_initial_bottom_offset_tablet">112dp</dimen> - - <!-- The min/max translationZ for the tasks in the stack. --> - <dimen name="recents_layout_z_min">3dp</dimen> - <dimen name="recents_layout_z_max">24dp</dimen> - - <!-- The margin between the freeform and stack. We also don't want this to change across - configurations that Recents can be opened in, so we define them statically for all - display sizes. --> - <dimen name="recents_freeform_layout_bottom_margin">16dp</dimen> - - <!-- The padding between each freeform task. --> - <dimen name="recents_freeform_layout_task_padding">8dp</dimen> - -<!-- Recents Views --> - - <!-- The height of a task view bar. This has to be large enough to cover the action bar - height in either orientation at this smallest width. --> - <dimen name="recents_task_view_header_height">56dp</dimen> - <dimen name="recents_task_view_header_height_tablet_land">64dp</dimen> - - <!-- The padding of a button in the recents task view header. --> - <dimen name="recents_task_view_header_button_padding">16dp</dimen> - <dimen name="recents_task_view_header_button_padding_tablet_land">20dp</dimen> - - <!-- The radius of the rounded corners on a task view and its shadow (which can be larger - to create a softer corner effect. --> - <dimen name="recents_task_view_rounded_corners_radius">2dp</dimen> - <dimen name="recents_task_view_shadow_rounded_corners_radius">6dp</dimen> - - <!-- The amount of highlight to make on each task view. --> - <dimen name="recents_task_view_highlight">1dp</dimen> - - <!-- The size of the lock-to-app button and its icon. --> - <dimen name="recents_lock_to_app_size">56dp</dimen> - <dimen name="recents_lock_to_app_icon_size">28dp</dimen> - - <!-- The amount of overscroll allowed when flinging to the end of the stack. --> - <dimen name="recents_fling_overscroll_distance">24dp</dimen> - - <!-- The size of the drag hint text. --> - <dimen name="recents_drag_hint_text_size">14sp</dimen> - <!-- The size of corner radius of the arrow in the onboarding toast. --> <dimen name="recents_onboarding_toast_arrow_corner_radius">2dp</dimen> <!-- The start margin of quick scrub onboarding toast. --> <dimen name="recents_quick_scrub_onboarding_margin_start">8dp</dimen> - <!-- The min alpha to apply to a task affiliation group color. --> - <item name="recents_task_affiliation_color_min_alpha_percentage" format="float" type="dimen">0.6</item> - - <!-- The amount to offset when animating into an affiliate group. --> - <dimen name="recents_task_stack_animation_affiliate_enter_offset">32dp</dimen> - - <!-- The offsets the tasks animate from when recents is launched while docking --> - <dimen name="recents_task_stack_animation_launched_while_docking_offset">144dp</dimen> - - <!-- The amount to translate when animating the removal of a task. --> - <dimen name="recents_task_view_remove_anim_translation_x">100dp</dimen> - - <!-- The alpha to apply to the recents row when it doesn't have focus --> - <item name="recents_recents_row_dim_alpha" format="float" type="dimen">0.5</item> - - <!-- The speed in dp/s at which the user needs to be scrolling in recents such that we start - loading full resolution screenshots. --> - <dimen name="recents_fast_fling_velocity">600dp</dimen> - <!-- The height of the gradient indicating the dismiss edge when moving a PIP. --> <dimen name="pip_dismiss_gradient_height">176dp</dimen> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 42e19aace0c3..b92fcc6c1d31 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -24,26 +24,6 @@ all of the currently visible notifications. [CHAR LIMIT=10]--> <string name="status_bar_clear_all_button">Clear</string> - <!-- Title shown in recents popup for removing an application from the list --> - <string name="status_bar_recent_remove_item_title">Remove from list</string> - - <!-- Title shown in recents popup for inspecting an application's properties --> - <string name="status_bar_recent_inspect_item_title">App info</string> - - <!-- Message shown in the middle of the screen after clicking on the recent apps button - when there are no recent apps to show. Also used for accessibility. [CHAR LIMIT=45]--> - <string name="status_bar_no_recent_apps">Your recent screens appear here</string> - - <!-- Content description for the button to dismiss Recent Apps (only present on large - devices) --> - <string name="status_bar_accessibility_dismiss_recents">Dismiss recent apps</string> - - <!-- Message that is read when you enter recent apps in TalkBack --> - <plurals name="status_bar_accessibility_recent_apps"> - <item quantity="one">1 screen in Overview</item> - <item quantity="other">%d screens in Overview</item> - </plurals> - <!-- The label in the bar at the top of the status bar when there are no notifications showing. [CHAR LIMIT=40]--> <string name="status_bar_no_notifications_title">No notifications</string> @@ -252,8 +232,6 @@ <string name="voice_assist_label">open voice assist</string> <!-- Click action label for accessibility for the phone button. [CHAR LIMIT=NONE] --> <string name="camera_label">open camera</string> - <!-- Caption for "Recents resize" developer debug feature. [CHAR LIMIT=NONE] --> - <string name="recents_caption_resize">Select new task layout</string> <!-- Button name for "Cancel". [CHAR LIMIT=NONE] --> <string name="cancel">Cancel</string> @@ -477,16 +455,6 @@ <!-- Content description of the work mode icon in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_work_mode">@string/quick_settings_work_mode_label</string> - <!-- Content description to tell the user that this button will remove an application from recents --> - <string name="accessibility_recents_item_will_be_dismissed">Dismiss <xliff:g id="app" example="Calendar">%s</xliff:g>.</string> - <!-- Content description to tell the user an application has been removed from recents --> - <string name="accessibility_recents_item_dismissed"><xliff:g id="app" example="Calendar">%s</xliff:g> dismissed.</string> - <!-- Content description to tell the user all applications has been removed from recents --> - <string name="accessibility_recents_all_items_dismissed">All recent applications dismissed.</string> - <!-- Content description to tell the user that this button will open application info for an application in recents --> - <string name="accessibility_recents_item_open_app_info">Open <xliff:g id="app" example="Calendar">%s</xliff:g> application info.</string> - <!-- Content description to tell the user an application has been launched from recents --> - <string name="accessibility_recents_item_launched">Starting <xliff:g id="app" example="Calendar">%s</xliff:g>.</string> <!-- Content description to tell the user a notification has been removed from the notification shade --> <string name="accessibility_notification_dismissed">Notification dismissed.</string> @@ -836,42 +804,10 @@ <!-- QuickSettings: NFC (on) [CHAR LIMIT=NONE] --> <string name="quick_settings_nfc_on">NFC is enabled</string> - <!-- Recents: The empty recents string. [CHAR LIMIT=NONE] --> - <string name="recents_empty_message">No recent items</string> - <!-- Recents: The empty recents string after dismissing all tasks. [CHAR LIMIT=NONE] --> - <string name="recents_empty_message_dismissed_all">You\'ve cleared everything</string> - <!-- Recents: The info panel app info button string. [CHAR LIMIT=NONE] --> - <string name="recents_app_info_button_label">Application Info</string> - <!-- Recents: The screen pinning button. [CHAR LIMIT=NONE] --> - <string name="recents_lock_to_app_button_label">screen pinning</string> - <!-- Recents: Temporary string for the button in the recents search bar. [CHAR LIMIT=NONE] --> - <string name="recents_search_bar_label">search</string> - <!-- Recents: Launch error string. [CHAR LIMIT=NONE] --> - <string name="recents_launch_error_message">Could not start <xliff:g id="app" example="Calendar">%s</xliff:g>.</string> - <!-- Recents: Launch disabled string. [CHAR LIMIT=NONE] --> - <string name="recents_launch_disabled_message"><xliff:g id="app" example="Calendar">%s</xliff:g> is disabled in safe-mode.</string> - <!-- Recents: Stack action button string. [CHAR LIMIT=NONE] --> - <string name="recents_stack_action_button_label">Clear all</string> - <!-- Recents: Hint text that shows on the drop targets to start multiwindow. [CHAR LIMIT=NONE] --> - <string name="recents_drag_hint_message">Drag here to use split screen</string> <!-- Recents: Text that shows above the navigation bar after launching a few apps. [CHAR LIMIT=NONE] --> <string name="recents_swipe_up_onboarding">Swipe up to switch apps</string> <!-- Recents: Text that shows above the navigation bar after launching several apps. [CHAR LIMIT=NONE] --> <string name="recents_quick_scrub_onboarding">Drag right to quickly switch apps</string> - - <!-- Recents: MultiStack add stack split horizontal radio button. [CHAR LIMIT=NONE] --> - <string name="recents_multistack_add_stack_dialog_split_horizontal">Split Horizontal</string> - <!-- Recents: MultiStack add stack split vertical radio button. [CHAR LIMIT=NONE] --> - <string name="recents_multistack_add_stack_dialog_split_vertical">Split Vertical</string> - <!-- Recents: MultiStack add stack split custom radio button. [CHAR LIMIT=NONE] --> - <string name="recents_multistack_add_stack_dialog_split_custom">Split Custom</string> - <!-- Recents: Accessibility split to the top --> - <string name="recents_accessibility_split_screen_top">Split screen to the top</string> - <!-- Recents: Accessibility split to the left --> - <string name="recents_accessibility_split_screen_left">Split screen to the left</string> - <!-- Recents: Accessibility split to the right --> - <string name="recents_accessibility_split_screen_right">Split screen to the right</string> - <!-- QuickStep: Accessibility to toggle overview [CHAR LIMIT=40] --> <string name="quick_step_accessibility_toggle_overview">Toggle Overview</string> diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index 6446367e19a5..6bc2a6352e3d 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -16,35 +16,6 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android"> - <style name="RecentsTheme" parent="@android:style/Theme.Material"> - <!-- NoTitle --> - <item name="android:windowNoTitle">true</item> - <!-- Misc --> - <item name="android:statusBarColor">@android:color/transparent</item> - <item name="android:navigationBarColor">@android:color/transparent</item> - <item name="android:windowDrawsSystemBarBackgrounds">true</item> - <item name="android:windowAnimationStyle">@null</item> - <item name="android:ambientShadowAlpha">0.35</item> - </style> - - <!-- Recents theme --> - <style name="RecentsTheme.Wallpaper"> - <item name="android:windowBackground">@*android:color/transparent</item> - <item name="android:colorBackgroundCacheHint">@null</item> - <item name="android:windowShowWallpaper">true</item> - <item name="android:windowDisablePreview">true</item> - <item name="clearAllStyle">@style/ClearAllButtonDefaultMargins</item> - <item name="clearAllBackgroundColor">@color/recents_clear_all_button_bg_dark_color</item> - <item name="wallpaperTextColor">@*android:color/primary_text_material_dark</item> - <item name="wallpaperTextColorSecondary">@*android:color/secondary_text_material_dark</item> - </style> - - <style name="RecentsTheme.Wallpaper.Light"> - <item name="clearAllBackgroundColor">@color/recents_clear_all_button_bg_light_color</item> - <item name="wallpaperTextColor">@*android:color/primary_text_material_light</item> - <item name="wallpaperTextColorSecondary">@*android:color/secondary_text_material_light</item> - </style> - <style name="ClearAllButtonDefaultMargins"> <item name="android:layout_marginStart">0dp</item> <item name="android:layout_marginTop">0dp</item> @@ -52,13 +23,6 @@ <item name="android:layout_marginBottom">0dp</item> </style> - <!-- Performance optimized Recents theme (no wallpaper) --> - <style name="RecentsTheme.NoWallpaper"> - <item name="android:windowBackground">@android:color/black</item> - <item name="wallpaperTextColor">@android:color/white</item> - <item name="wallpaperTextColorSecondary">@android:color/white</item> - </style> - <!-- Theme used for the activity that shows when the system forced an app to be resizable --> <style name="ForcedResizableTheme" parent="@android:style/Theme.Translucent.NoTitleBar"> <item name="android:windowBackground">@drawable/forced_resizable_background</item> @@ -293,11 +257,6 @@ <item name="android:windowExitAnimation">@*android:anim/shrink_fade_out_from_bottom</item> </style> - <style name="Animation.RecentPanel"> - <item name="android:windowEnterAnimation">@*android:anim/grow_fade_in_from_bottom</item> - <item name="android:windowExitAnimation">@*android:anim/shrink_fade_out_from_bottom</item> - </style> - <style name="Animation.NavigationBarFadeIn"> <item name="android:windowEnterAnimation">@anim/navbar_fade_in</item> <item name="android:windowExitAnimation">@null</item> diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/Task.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/Task.java index 368e50362cd6..7558efae6c23 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/Task.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/Task.java @@ -143,7 +143,7 @@ public class Task { * The temporary sort index in the stack, used when ordering the stack. */ @Deprecated - int temporarySortIndexInStack; + public int temporarySortIndexInStack; /** * The icon is the task description icon (if provided), which falls back to the activity icon, diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskKeyLruCache.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskKeyLruCache.java index 0ba2c3bf6e3c..b2c79a4c0a32 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskKeyLruCache.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskKeyLruCache.java @@ -58,7 +58,7 @@ public class TaskKeyLruCache<V> extends TaskKeyCache<V> { } /** Trims the cache to a specific size */ - final void trimToSize(int cacheSize) { + public final void trimToSize(int cacheSize) { mCache.trimToSize(cacheSize); } diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java index 7d159b745254..7dffc2613956 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/utilities/Utilities.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2014 The Android Open Source Project + * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,158 +16,19 @@ package com.android.systemui.shared.recents.utilities; -import android.animation.Animator; -import android.animation.AnimatorSet; -import android.animation.RectEvaluator; -import android.annotation.FloatRange; -import android.annotation.Nullable; -import android.app.Activity; -import android.content.Context; -import android.content.res.Configuration; -import android.content.res.Resources; import android.graphics.Color; -import android.graphics.Rect; -import android.graphics.RectF; -import android.graphics.drawable.Drawable; import android.os.Handler; import android.os.Message; -import android.os.Trace; -import android.util.ArraySet; -import android.util.IntProperty; -import android.util.Property; -import android.util.TypedValue; -import android.view.Surface; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewParent; -import android.view.ViewRootImpl; -import android.view.ViewStub; - -import java.util.ArrayList; -import java.util.Collections; /* Common code */ public class Utilities { - public static final Property<Drawable, Integer> DRAWABLE_ALPHA = - new IntProperty<Drawable>("drawableAlpha") { - @Override - public void setValue(Drawable object, int alpha) { - object.setAlpha(alpha); - } - - @Override - public Integer get(Drawable object) { - return object.getAlpha(); - } - }; - - public static final Property<Drawable, Rect> DRAWABLE_RECT = - new Property<Drawable, Rect>(Rect.class, "drawableBounds") { - @Override - public void set(Drawable object, Rect bounds) { - object.setBounds(bounds); - } - - @Override - public Rect get(Drawable object) { - return object.getBounds(); - } - }; - - public static final RectFEvaluator RECTF_EVALUATOR = new RectFEvaluator(); - public static final RectEvaluator RECT_EVALUATOR = new RectEvaluator(new Rect()); - - /** - * @return the first parent walking up the view hierarchy that has the given class type. - * - * @param parentClass must be a class derived from {@link View} - */ - public static <T extends View> T findParent(View v, Class<T> parentClass) { - ViewParent parent = v.getParent(); - while (parent != null) { - if (parentClass.isAssignableFrom(parent.getClass())) { - return (T) parent; - } - parent = parent.getParent(); - } - return null; - } - - /** - * Initializes the {@param setOut} with the given object. - */ - public static <T> ArraySet<T> objectToSet(T obj, ArraySet<T> setOut) { - setOut.clear(); - if (obj != null) { - setOut.add(obj); - } - return setOut; - } - /** - * Replaces the contents of {@param setOut} with the contents of the {@param array}. - */ - public static <T> ArraySet<T> arrayToSet(T[] array, ArraySet<T> setOut) { - setOut.clear(); - if (array != null) { - Collections.addAll(setOut, array); - } - return setOut; - } - - /** - * @return the clamped {@param value} between the provided {@param min} and {@param max}. - */ - public static float clamp(float value, float min, float max) { - return Math.max(min, Math.min(max, value)); - } - - /** - * @return the clamped {@param value} between the provided {@param min} and {@param max}. - */ - public static int clamp(int value, int min, int max) { - return Math.max(min, Math.min(max, value)); - } - - /** - * @return the clamped {@param value} between 0 and 1. - */ - public static float clamp01(float value) { - return Math.max(0f, Math.min(1f, value)); - } - - /** - * Scales the {@param value} to be proportionally between the {@param min} and - * {@param max} values. - * - * @param value must be between 0 and 1 - */ - public static float mapRange(@FloatRange(from=0.0,to=1.0) float value, float min, float max) { - return min + (value * (max - min)); - } - - /** - * Scales the {@param value} proportionally from {@param min} and {@param max} to 0 and 1. - * - * @param value must be between {@param min} and {@param max} + * Posts a runnable on a handler at the front of the queue ignoring any sync barriers. */ - public static float unmapRange(float value, float min, float max) { - return (value - min) / (max - min); - } - - /** Scales a rect about its centroid */ - public static void scaleRectAboutCenter(RectF r, float scale) { - if (scale != 1.0f) { - float cx = r.centerX(); - float cy = r.centerY(); - r.offset(-cx, -cy); - r.left *= scale; - r.top *= scale; - r.right *= scale; - r.bottom *= scale; - r.offset(cx, cy); - } + public static void postAtFrontOfQueueAsynchronously(Handler h, Runnable r) { + Message msg = h.obtainMessage().setCallback(r); + h.sendMessageAtFrontOfQueue(msg); } /** Calculates the constrast between two colors, using the algorithm provided by the WCAG v2. */ @@ -179,7 +40,7 @@ public class Utilities { bgG = (bgG < 0.03928f) ? bgG / 12.92f : (float) Math.pow((bgG + 0.055f) / 1.055f, 2.4f); bgB = (bgB < 0.03928f) ? bgB / 12.92f : (float) Math.pow((bgB + 0.055f) / 1.055f, 2.4f); float bgL = 0.2126f * bgR + 0.7152f * bgG + 0.0722f * bgB; - + float fgR = Color.red(fg) / 255f; float fgG = Color.green(fg) / 255f; float fgB = Color.blue(fg) / 255f; @@ -191,147 +52,10 @@ public class Utilities { return Math.abs((fgL + 0.05f) / (bgL + 0.05f)); } - /** Returns the base color overlaid with another overlay color with a specified alpha. */ - public static int getColorWithOverlay(int baseColor, int overlayColor, float overlayAlpha) { - return Color.rgb( - (int) (overlayAlpha * Color.red(baseColor) + - (1f - overlayAlpha) * Color.red(overlayColor)), - (int) (overlayAlpha * Color.green(baseColor) + - (1f - overlayAlpha) * Color.green(overlayColor)), - (int) (overlayAlpha * Color.blue(baseColor) + - (1f - overlayAlpha) * Color.blue(overlayColor))); - } - - /** - * Cancels an animation ensuring that if it has listeners, onCancel and onEnd - * are not called. - */ - public static void cancelAnimationWithoutCallbacks(Animator animator) { - if (animator != null && animator.isStarted()) { - removeAnimationListenersRecursive(animator); - animator.cancel(); - } - } - /** - * Recursively removes all the listeners of all children of this animator - */ - public static void removeAnimationListenersRecursive(Animator animator) { - if (animator instanceof AnimatorSet) { - ArrayList<Animator> animators = ((AnimatorSet) animator).getChildAnimations(); - for (int i = animators.size() - 1; i >= 0; i--) { - removeAnimationListenersRecursive(animators.get(i)); - } - } - animator.removeAllListeners(); - } - - /** - * Sets the given {@link View}'s frame from its current translation. - */ - public static void setViewFrameFromTranslation(View v) { - RectF taskViewRect = new RectF(v.getLeft(), v.getTop(), v.getRight(), v.getBottom()); - taskViewRect.offset(v.getTranslationX(), v.getTranslationY()); - v.setTranslationX(0); - v.setTranslationY(0); - v.setLeftTopRightBottom((int) taskViewRect.left, (int) taskViewRect.top, - (int) taskViewRect.right, (int) taskViewRect.bottom); - } - - /** - * Returns a view stub for the given view id. - */ - public static ViewStub findViewStubById(View v, int stubId) { - return (ViewStub) v.findViewById(stubId); - } - - /** - * Returns a view stub for the given view id. - */ - public static ViewStub findViewStubById(Activity a, int stubId) { - return (ViewStub) a.findViewById(stubId); - } - - /** - * Used for debugging, converts DP to PX. - */ - public static float dpToPx(Resources res, float dp) { - return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, res.getDisplayMetrics()); - } - - /** - * Adds a trace event for debugging. - */ - public static void addTraceEvent(String event) { - Trace.traceBegin(Trace.TRACE_TAG_VIEW, event); - Trace.traceEnd(Trace.TRACE_TAG_VIEW); - } - - /** - * Returns whether this view, or one of its descendants have accessibility focus. - */ - public static boolean isDescendentAccessibilityFocused(View v) { - if (v.isAccessibilityFocused()) { - return true; - } - - if (v instanceof ViewGroup) { - ViewGroup vg = (ViewGroup) v; - int childCount = vg.getChildCount(); - for (int i = 0; i < childCount; i++) { - if (isDescendentAccessibilityFocused(vg.getChildAt(i))) { - return true; - } - } - } - return false; - } - - /** - * Returns the application configuration, which is independent of the activity's current - * configuration in multiwindow. - */ - public static Configuration getAppConfiguration(Context context) { - return context.getApplicationContext().getResources().getConfiguration(); - } - - /** - * @return The next frame name for the specified surface or -1 if the surface is no longer - * valid. - */ - public static long getNextFrameNumber(Surface s) { - return s != null && s.isValid() - ? s.getNextFrameNumber() - : -1; - - } - - /** - * @return The surface for the specified view. - */ - public static @Nullable Surface getSurface(View v) { - ViewRootImpl viewRoot = v.getViewRootImpl(); - if (viewRoot == null) { - return null; - } - return viewRoot.mSurface; - } - - /** - * Returns a lightweight dump of a rect. - */ - public static String dumpRect(Rect r) { - if (r == null) { - return "N:0,0-0,0"; - } - return r.left + "," + r.top + "-" + r.right + "," + r.bottom; - } - - /** - * Posts a runnable on a handler at the front of the queue ignoring any sync barriers. + * @return the clamped {@param value} between the provided {@param min} and {@param max}. */ - public static void postAtFrontOfQueueAsynchronously(Handler h, Runnable r) { - Message msg = h.obtainMessage().setCallback(r); - h.sendMessageAtFrontOfQueue(msg); + public static float clamp(float value, float min, float max) { + return Math.max(min, Math.min(max, value)); } } diff --git a/packages/SystemUI/shared/tests/Android.mk b/packages/SystemUI/shared/tests/Android.mk deleted file mode 100644 index 02774c946596..000000000000 --- a/packages/SystemUI/shared/tests/Android.mk +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright (C) 2017 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_USE_AAPT2 := true -LOCAL_MODULE_TAGS := tests - -LOCAL_JACK_FLAGS := --multi-dex native -LOCAL_DX_FLAGS := --multi-dex - -LOCAL_PROTOC_OPTIMIZE_TYPE := nano -LOCAL_PROTOC_FLAGS := -I$(LOCAL_PATH)/.. -LOCAL_PROTO_JAVA_OUTPUT_PARAMS := optional_field_style=accessors - -LOCAL_PACKAGE_NAME := SystemUISharedLibTests -LOCAL_PRIVATE_PLATFORM_APIS := true -LOCAL_COMPATIBILITY_SUITE := device-tests - -# Add local path sources as well as shared lib sources -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_STATIC_JAVA_LIBRARIES := \ - SystemUISharedLib \ - metrics-helper-lib \ - android-support-test \ - mockito-target-inline-minus-junit4 \ - SystemUI-proto \ - SystemUI-tags \ - testables \ - truth-prebuilt \ - -LOCAL_MULTILIB := both - -LOCAL_JNI_SHARED_LIBRARIES := \ - libdexmakerjvmtiagent \ - libmultiplejvmtiagentsinterferenceagent - -LOCAL_JAVA_LIBRARIES := android.test.runner telephony-common - -# sign this with platform cert, so this test is allowed to inject key events into -# UI it doesn't own. This is necessary to allow screenshots to be taken -LOCAL_CERTIFICATE := platform - -ifeq ($(EXCLUDE_SYSTEMUI_TESTS),) - include $(BUILD_PACKAGE) -endif diff --git a/packages/SystemUI/shared/tests/AndroidManifest.xml b/packages/SystemUI/shared/tests/AndroidManifest.xml deleted file mode 100644 index 5974b76c6c5c..000000000000 --- a/packages/SystemUI/shared/tests/AndroidManifest.xml +++ /dev/null @@ -1,30 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.android.systemui.shared.tests"> - - <uses-permission android:name="android.permission.READ_FRAME_BUFFER" /> - - <application android:debuggable="true"> - <uses-library android:name="android.test.runner" /> - </application> - - <instrumentation android:name="android.testing.TestableInstrumentation" - android:targetPackage="com.android.systemui.shared.tests" - android:label="Tests for SystemUISharedLib"> - </instrumentation> -</manifest> diff --git a/packages/SystemUI/shared/tests/AndroidTest.xml b/packages/SystemUI/shared/tests/AndroidTest.xml deleted file mode 100644 index b3de8368deec..000000000000 --- a/packages/SystemUI/shared/tests/AndroidTest.xml +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The Android Open Source Project - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<configuration description="Runs Tests for SystemUISharedLib."> - <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup"> - <option name="test-file-name" value="SystemUISharedLibTests.apk" /> - </target_preparer> - - <option name="test-suite-tag" value="apct" /> - <option name="test-suite-tag" value="framework-base-presubmit" /> - <option name="test-tag" value="SystemUISharedLibTests" /> - <test class="com.android.tradefed.testtype.AndroidJUnitTest" > - <option name="package" value="com.android.systemui.shared.tests" /> - <option name="runner" value="android.testing.TestableInstrumentation" /> - </test> -</configuration> diff --git a/packages/SystemUI/shared/tests/src/com/android/systemui/shared/SysuiSharedLibTestCase.java b/packages/SystemUI/shared/tests/src/com/android/systemui/shared/SysuiSharedLibTestCase.java deleted file mode 100644 index 04b341e38c04..000000000000 --- a/packages/SystemUI/shared/tests/src/com/android/systemui/shared/SysuiSharedLibTestCase.java +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.systemui.shared; - -import android.content.Context; -import android.os.Handler; -import android.os.Looper; -import android.os.MessageQueue; -import android.support.test.InstrumentationRegistry; - -import org.junit.After; -import org.junit.Before; - -/** - * Base class that does System UI Shared Lib specific setup. - */ -public abstract class SysuiSharedLibTestCase { - - private static final String TAG = "SysuiSharedLibTestCase"; - - private Handler mHandler; - private Context mContext = InstrumentationRegistry.getContext(); - - @Before - public void SysuiSetup() throws Exception { - // Enable shared class loader to test package-private classes/methods - System.setProperty("dexmaker.share_classloader", "true"); - } - - @After - public void SysuiTeardown() { - // Do nothing - } - - public Context getContext() { - return mContext; - } - - protected void waitForIdleSync() { - if (mHandler == null) { - mHandler = new Handler(Looper.getMainLooper()); - } - waitForIdleSync(mHandler); - } - - public static void waitForIdleSync(Handler h) { - validateThread(h.getLooper()); - Idler idler = new Idler(null); - h.getLooper().getQueue().addIdleHandler(idler); - // Ensure we are non-idle, so the idle handler can run. - h.post(new EmptyRunnable()); - idler.waitForIdle(); - } - - private static final void validateThread(Looper l) { - if (Looper.myLooper() == l) { - throw new RuntimeException( - "This method can not be called from the looper being synced"); - } - } - - public static final class EmptyRunnable implements Runnable { - public void run() { - } - } - - public static final class Idler implements MessageQueue.IdleHandler { - private final Runnable mCallback; - private boolean mIdle; - - public Idler(Runnable callback) { - mCallback = callback; - mIdle = false; - } - - @Override - public boolean queueIdle() { - if (mCallback != null) { - mCallback.run(); - } - synchronized (this) { - mIdle = true; - notifyAll(); - } - return false; - } - - public void waitForIdle() { - synchronized (this) { - while (!mIdle) { - try { - wait(); - } catch (InterruptedException e) { - } - } - } - } - } -} diff --git a/packages/SystemUI/shared/tests/src/com/android/systemui/shared/recents/model/HighResThumbnailLoaderTest.java b/packages/SystemUI/shared/tests/src/com/android/systemui/shared/recents/model/HighResThumbnailLoaderTest.java deleted file mode 100644 index 3b647c12c0b4..000000000000 --- a/packages/SystemUI/shared/tests/src/com/android/systemui/shared/recents/model/HighResThumbnailLoaderTest.java +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.systemui.shared.recents.model; - -import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.mockito.Mockito.anyBoolean; -import static org.mockito.Mockito.anyInt; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.content.ComponentName; -import android.os.Looper; -import android.support.test.filters.SmallTest; -import android.support.test.runner.AndroidJUnit4; - -import com.android.systemui.shared.SysuiSharedLibTestCase; -import com.android.systemui.shared.recents.model.Task.TaskKey; -import com.android.systemui.shared.system.ActivityManagerWrapper; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; - -/** - * runtest --path frameworks/base/packages/SystemUI/shared/tests/src/com/android/systemui/shared/recents/model/HighResThumbnailLoaderTest.java - */ -@SmallTest -@RunWith(AndroidJUnit4.class) -public class HighResThumbnailLoaderTest extends SysuiSharedLibTestCase { - - private HighResThumbnailLoader mLoader; - - @Mock - private ActivityManagerWrapper mMockActivityManagerWrapper; - @Mock - private Task mTask; - - private ThumbnailData mThumbnailData = new ThumbnailData(); - - @Before - public void setUp() throws Exception { - MockitoAnnotations.initMocks(this); - mLoader = new HighResThumbnailLoader(mMockActivityManagerWrapper, Looper.getMainLooper(), - false /* reducedResolution */); - mTask.key = new TaskKey(0, WINDOWING_MODE_UNDEFINED, null, null, 0, 0); - when(mMockActivityManagerWrapper.getTaskThumbnail(anyInt(), anyBoolean())) - .thenReturn(mThumbnailData); - mLoader.setVisible(true); - mLoader.setTaskLoadQueueIdle(true); - } - - @Test - public void testLoading() throws Exception { - mLoader.setVisible(true); - assertTrue(mLoader.isLoading()); - mLoader.setVisible(false); - assertFalse(mLoader.isLoading()); - mLoader.setVisible(true); - mLoader.setFlingingFast(true); - assertFalse(mLoader.isLoading()); - mLoader.setFlingingFast(false); - assertTrue(mLoader.isLoading()); - mLoader.setFlingingFast(false); - mLoader.setTaskLoadQueueIdle(false); - assertFalse(mLoader.isLoading()); - mLoader.setTaskLoadQueueIdle(true); - assertTrue(mLoader.isLoading()); - } - - @Test - public void testLoad() throws Exception { - mLoader.onTaskVisible(mTask); - mLoader.waitForLoaderIdle(); - waitForIdleSync(); - verify(mTask).notifyTaskDataLoaded(mThumbnailData, null); - } - - @Test - public void testFlinging_notLoaded() throws Exception { - mLoader.setFlingingFast(true); - mLoader.onTaskVisible(mTask); - mLoader.waitForLoaderIdle(); - waitForIdleSync(); - verify(mTask, never()).notifyTaskDataLoaded(mThumbnailData, null); - } - - /** - * Tests whether task is loaded after stopping to fling - */ - @Test - public void testAfterFlinging() throws Exception { - mLoader.setFlingingFast(true); - mLoader.onTaskVisible(mTask); - mLoader.setFlingingFast(false); - mLoader.waitForLoaderIdle(); - waitForIdleSync(); - verify(mTask).notifyTaskDataLoaded(mThumbnailData, null); - } - - @Test - public void testAlreadyLoaded() throws Exception { - mTask.thumbnail = new ThumbnailData(); - mTask.thumbnail.reducedResolution = false; - mLoader.onTaskVisible(mTask); - mLoader.waitForLoaderIdle(); - waitForIdleSync(); - verify(mTask, never()).notifyTaskDataLoaded(mThumbnailData, null); - } -} diff --git a/packages/SystemUI/src/com/android/systemui/Dependency.java b/packages/SystemUI/src/com/android/systemui/Dependency.java index b0fe19057cbd..b7844bc6395e 100644 --- a/packages/SystemUI/src/com/android/systemui/Dependency.java +++ b/packages/SystemUI/src/com/android/systemui/Dependency.java @@ -44,13 +44,14 @@ import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.PluginDependencyProvider; import com.android.systemui.plugins.PluginInitializerImpl; +import com.android.systemui.recents.OverviewProxyService; +import com.android.systemui.shared.plugins.PluginManager; +import com.android.systemui.shared.plugins.PluginManagerImpl; import com.android.systemui.plugins.VolumeDialogController; import com.android.systemui.power.EnhancedEstimates; import com.android.systemui.power.EnhancedEstimatesImpl; import com.android.systemui.power.PowerNotificationWarnings; import com.android.systemui.power.PowerUI; -import com.android.systemui.shared.plugins.PluginManager; -import com.android.systemui.shared.plugins.PluginManagerImpl; import com.android.systemui.statusbar.NotificationRemoteInputManager; import com.android.systemui.statusbar.VibratorHelper; import com.android.systemui.statusbar.notification.NotificationData.KeyguardEnvironment; diff --git a/packages/SystemUI/src/com/android/systemui/pip/BasePipManager.java b/packages/SystemUI/src/com/android/systemui/pip/BasePipManager.java index 36dbb0f3061b..e0fc31bc70b8 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/BasePipManager.java +++ b/packages/SystemUI/src/com/android/systemui/pip/BasePipManager.java @@ -21,9 +21,11 @@ import android.content.res.Configuration; import java.io.PrintWriter; -public interface BasePipManager { +public interface BasePipManager { void initialize(Context context); void showPictureInPictureMenu(); + default void expandPip() {} + default void hidePipMenu(Runnable onStartCallback, Runnable onEndCallback) {} void onConfigurationChanged(Configuration newConfig); - void dump(PrintWriter pw); + default void dump(PrintWriter pw) {} } diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipUI.java b/packages/SystemUI/src/com/android/systemui/pip/PipUI.java index 864a6f9185fa..70b581a78ce4 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/PipUI.java +++ b/packages/SystemUI/src/com/android/systemui/pip/PipUI.java @@ -24,8 +24,6 @@ import android.content.res.Configuration; import android.os.UserHandle; import android.os.UserManager; import com.android.systemui.SystemUI; -import com.android.systemui.recents.events.EventBus; -import com.android.systemui.recents.events.component.ExpandPipEvent; import com.android.systemui.statusbar.CommandQueue; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -68,7 +66,11 @@ public class PipUI extends SystemUI implements CommandQueue.Callbacks { } public void expandPip() { - EventBus.getDefault().send(new ExpandPipEvent()); + mPipManager.expandPip(); + } + + public void hidePipMenu(Runnable onStartCallback, Runnable onEndCallback) { + mPipManager.hidePipMenu(onStartCallback, onEndCallback); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java index 04746c16585a..08208e506f24 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipManager.java @@ -38,8 +38,6 @@ import android.view.WindowManagerGlobal; import com.android.systemui.Dependency; import com.android.systemui.UiOffloadThread; import com.android.systemui.pip.BasePipManager; -import com.android.systemui.recents.events.EventBus; -import com.android.systemui.recents.events.component.ExpandPipEvent; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.TaskStackChangeListener; @@ -197,7 +195,6 @@ public class PipManager implements BasePipManager { mMenuController, mInputConsumerController); mAppOpsListener = new PipAppOpsListener(context, mActivityManager, mTouchHandler.getMotionHelper()); - EventBus.getDefault().register(this); } /** @@ -210,11 +207,20 @@ public class PipManager implements BasePipManager { /** * Expands the PIP. */ - public final void onBusEvent(ExpandPipEvent event) { + @Override + public void expandPip() { mTouchHandler.getMotionHelper().expandPip(false /* skipAnimation */); } /** + * Hides the PIP menu. + */ + @Override + public void hidePipMenu(Runnable onStartCallback, Runnable onEndCallback) { + mMenuController.hideMenu(onStartCallback, onEndCallback); + } + + /** * Sent from KEYCODE_WINDOW handler in PhoneWindowManager, to request the menu to be shown. */ public void showPictureInPictureMenu() { diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java index 2dc531aea0f7..b746c192cece 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivity.java @@ -72,8 +72,6 @@ import android.widget.LinearLayout; import com.android.systemui.Interpolators; import com.android.systemui.R; -import com.android.systemui.recents.events.EventBus; -import com.android.systemui.recents.events.component.HidePipMenuEvent; import java.util.ArrayList; import java.util.Collections; @@ -151,7 +149,7 @@ public class PipMenuActivity extends Activity { cancelDelayedFinish(); break; case MESSAGE_HIDE_MENU: - hideMenu(); + hideMenu((Runnable) msg.obj); break; case MESSAGE_UPDATE_ACTIONS: { final Bundle data = (Bundle) msg.obj; @@ -275,7 +273,6 @@ public class PipMenuActivity extends Activity { super.onStop(); cancelDelayedFinish(); - EventBus.getDefault().unregister(this); } @Override @@ -335,19 +332,6 @@ public class PipMenuActivity extends Activity { // Do nothing } - public final void onBusEvent(HidePipMenuEvent event) { - if (mMenuState != MENU_STATE_NONE) { - // If the menu is visible in either the closed or full state, then hide the menu and - // trigger the animation trigger afterwards - event.getAnimationTrigger().increment(); - hideMenu(() -> { - mHandler.post(() -> { - event.getAnimationTrigger().decrement(); - }); - }, true /* notifyMenuVisibility */, false /* isDismissing */); - } - } - private void showMenu(int menuState, Rect stackBounds, Rect movementBounds, boolean allowMenuTimeout, boolean resizeMenuOnShow) { mAllowMenuTimeout = allowMenuTimeout; @@ -398,8 +382,11 @@ public class PipMenuActivity extends Activity { } private void hideMenu() { - hideMenu(null /* animationFinishedRunnable */, true /* notifyMenuVisibility */, - false /* isDismissing */); + hideMenu(null); + } + + private void hideMenu(Runnable animationEndCallback) { + hideMenu(animationEndCallback, true /* notifyMenuVisibility */, false /* isDismissing */); } private void hideMenu(final Runnable animationFinishedRunnable, boolean notifyMenuVisibility, @@ -450,9 +437,6 @@ public class PipMenuActivity extends Activity { } notifyActivityCallback(mMessenger); - // Register for HidePipMenuEvents once we notify the controller of this activity - EventBus.getDefault().register(this); - ParceledListSlice actions = intent.getParcelableExtra(EXTRA_ACTIONS); if (actions != null) { mActions.clear(); diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java index 360fe73be95a..56b83247a15e 100644 --- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java +++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java @@ -19,9 +19,9 @@ package com.android.systemui.pip.phone; import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; -import android.app.ActivityTaskManager; import android.app.ActivityManager.StackInfo; import android.app.ActivityOptions; +import android.app.ActivityTaskManager; import android.app.IActivityManager; import android.app.RemoteAction; import android.content.Context; @@ -37,14 +37,8 @@ import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; import android.util.Log; -import android.view.IWindowManager; - import com.android.systemui.pip.phone.PipMediaController.ActionListener; -import com.android.systemui.recents.events.EventBus; -import com.android.systemui.recents.events.component.HidePipMenuEvent; -import com.android.systemui.recents.misc.ReferenceCountedTrigger; import com.android.systemui.shared.system.InputConsumerController; - import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; @@ -131,7 +125,7 @@ public class PipMenuActivityController { // The dismiss fraction update is sent frequently, so use a temporary bundle for the message private Bundle mTmpDismissFractionData = new Bundle(); - private ReferenceCountedTrigger mOnAttachDecrementTrigger; + private Runnable mOnAnimationEndRunnable; private boolean mStartActivityRequested; private long mStartActivityRequestedTime; private Messenger mToActivityMessenger; @@ -171,9 +165,9 @@ public class PipMenuActivityController { case MESSAGE_UPDATE_ACTIVITY_CALLBACK: { mToActivityMessenger = msg.replyTo; setStartActivityRequested(false); - if (mOnAttachDecrementTrigger != null) { - mOnAttachDecrementTrigger.decrement(); - mOnAttachDecrementTrigger = null; + if (mOnAnimationEndRunnable != null) { + mOnAnimationEndRunnable.run(); + mOnAnimationEndRunnable = null; } // Mark the menu as invisible once the activity finishes as well if (mToActivityMessenger == null) { @@ -188,9 +182,9 @@ public class PipMenuActivityController { private Runnable mStartActivityRequestedTimeoutRunnable = () -> { setStartActivityRequested(false); - if (mOnAttachDecrementTrigger != null) { - mOnAttachDecrementTrigger.decrement(); - mOnAttachDecrementTrigger = null; + if (mOnAnimationEndRunnable != null) { + mOnAnimationEndRunnable.run(); + mOnAnimationEndRunnable = null; } Log.e(TAG, "Expected start menu activity request timed out"); }; @@ -209,8 +203,6 @@ public class PipMenuActivityController { mActivityManager = activityManager; mMediaController = mediaController; mInputConsumerController = inputConsumerController; - - EventBus.getDefault().register(this); } public boolean isMenuActivityVisible() { @@ -353,6 +345,36 @@ public class PipMenuActivityController { } /** + * Hides the menu activity. + */ + public void hideMenu(Runnable onStartCallback, Runnable onEndCallback) { + if (mStartActivityRequested) { + // If the menu has been start-requested, but not actually started, then we defer the + // trigger callback until the menu has started and called back to the controller. + mOnAnimationEndRunnable = onEndCallback; + onStartCallback.run(); + + // Fallback for b/63752800, we have started the PipMenuActivity but it has not made any + // callbacks. Don't continue to wait for the menu to show past some timeout. + mHandler.removeCallbacks(mStartActivityRequestedTimeoutRunnable); + mHandler.postDelayed(mStartActivityRequestedTimeoutRunnable, + START_ACTIVITY_REQUEST_TIMEOUT_MS); + } else if (mMenuState != MENU_STATE_NONE && mToActivityMessenger != null) { + // If the menu is visible in either the closed or full state, then hide the menu and + // trigger the animation trigger afterwards + onStartCallback.run(); + Message m = Message.obtain(); + m.what = PipMenuActivity.MESSAGE_HIDE_MENU; + m.obj = onEndCallback; + try { + mToActivityMessenger.send(m); + } catch (RemoteException e) { + Log.e(TAG, "Could not notify hide menu", e); + } + } + } + + /** * Preemptively mark the menu as invisible, used when we are directly manipulating the pinned * stack and don't want to trigger a resize which can animate the stack in a conflicting way * (ie. when manually expanding or dismissing). @@ -496,21 +518,6 @@ public class PipMenuActivityController { mStartActivityRequestedTime = requested ? SystemClock.uptimeMillis() : 0; } - public final void onBusEvent(HidePipMenuEvent event) { - if (mStartActivityRequested) { - // If the menu has been start-requested, but not actually started, then we defer the - // trigger callback until the menu has started and called back to the controller. - mOnAttachDecrementTrigger = event.getAnimationTrigger(); - mOnAttachDecrementTrigger.increment(); - - // Fallback for b/63752800, we have started the PipMenuActivity but it has not made any - // callbacks. Don't continue to wait for the menu to show past some timeout. - mHandler.removeCallbacks(mStartActivityRequestedTimeoutRunnable); - mHandler.postDelayed(mStartActivityRequestedTimeoutRunnable, - START_ACTIVITY_REQUEST_TIMEOUT_MS); - } - } - public void dump(PrintWriter pw, String prefix) { final String innerPrefix = prefix + " "; pw.println(prefix + TAG); diff --git a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java index 43e9db7f0ee5..e17e0bca56dc 100755 --- a/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java +++ b/packages/SystemUI/src/com/android/systemui/pip/tv/PipManager.java @@ -758,9 +758,4 @@ public class PipManager implements BasePipManager { WindowManagerWrapper.getInstance().setPipVisibility(visible); }); } - - @Override - public void dump(PrintWriter pw) { - // Do nothing - } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java new file mode 100644 index 000000000000..661b958d4865 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java @@ -0,0 +1,163 @@ +/* + * Copyright (C) 2014 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.systemui.recents; + +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; + +import android.app.ActivityManager; +import android.app.trust.TrustManager; +import android.content.Context; +import android.graphics.Point; +import android.graphics.Rect; +import android.hardware.display.DisplayManager; +import android.os.Handler; +import android.os.RemoteException; +import android.util.Log; +import android.view.Display; +import android.widget.Toast; +import com.android.systemui.Dependency; +import com.android.systemui.R; +import com.android.systemui.SysUiServiceProvider; +import com.android.systemui.shared.recents.IOverviewProxy; +import com.android.systemui.shared.system.ActivityManagerWrapper; +import com.android.systemui.stackdivider.Divider; +import com.android.systemui.statusbar.phone.StatusBar; + +/** + * An implementation of the Recents interface which proxies to the OverviewProxyService. + */ +public class OverviewProxyRecentsImpl implements RecentsImplementation { + + private final static String TAG = "OverviewProxyRecentsImpl"; + + private SysUiServiceProvider mSysUiServiceProvider; + private Context mContext; + private Handler mHandler; + private TrustManager mTrustManager; + private OverviewProxyService mOverviewProxyService; + + @Override + public void onStart(Context context, SysUiServiceProvider sysUiServiceProvider) { + mContext = context; + mSysUiServiceProvider = sysUiServiceProvider; + mHandler = new Handler(); + mTrustManager = (TrustManager) context.getSystemService(Context.TRUST_SERVICE); + mOverviewProxyService = Dependency.get(OverviewProxyService.class); + } + + @Override + public void showRecentApps(boolean triggeredFromAltTab) { + IOverviewProxy overviewProxy = mOverviewProxyService.getProxy(); + if (overviewProxy != null) { + try { + overviewProxy.onOverviewShown(triggeredFromAltTab); + return; + } catch (RemoteException e) { + Log.e(TAG, "Failed to send overview show event to launcher.", e); + } + } else { + // Do nothing + } + } + + @Override + public void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) { + IOverviewProxy overviewProxy = mOverviewProxyService.getProxy(); + if (overviewProxy != null) { + try { + overviewProxy.onOverviewHidden(triggeredFromAltTab, triggeredFromHomeKey); + return; + } catch (RemoteException e) { + Log.e(TAG, "Failed to send overview hide event to launcher.", e); + } + } else { + // Do nothing + } + } + + @Override + public void toggleRecentApps() { + // If connected to launcher service, let it handle the toggle logic + IOverviewProxy overviewProxy = mOverviewProxyService.getProxy(); + if (overviewProxy != null) { + final Runnable toggleRecents = () -> { + try { + if (mOverviewProxyService.getProxy() != null) { + mOverviewProxyService.getProxy().onOverviewToggle(); + } + } catch (RemoteException e) { + Log.e(TAG, "Cannot send toggle recents through proxy service.", e); + } + }; + // Preload only if device for current user is unlocked + final StatusBar statusBar = mSysUiServiceProvider.getComponent(StatusBar.class); + if (statusBar != null && statusBar.isKeyguardShowing()) { + statusBar.executeRunnableDismissingKeyguard(() -> { + // Flush trustmanager before checking device locked per user + mTrustManager.reportKeyguardShowingChanged(); + mHandler.post(toggleRecents); + }, null, true /* dismissShade */, false /* afterKeyguardGone */, + true /* deferred */); + } else { + toggleRecents.run(); + } + return; + } else { + // Do nothing + } + } + + @Override + public boolean splitPrimaryTask(int stackCreateMode, Rect initialBounds, + int metricsDockAction) { + Point realSize = new Point(); + if (initialBounds == null) { + mContext.getSystemService(DisplayManager.class).getDisplay(Display.DEFAULT_DISPLAY) + .getRealSize(realSize); + initialBounds = new Rect(0, 0, realSize.x, realSize.y); + } + + ActivityManager.RunningTaskInfo runningTask = + ActivityManagerWrapper.getInstance().getRunningTask(); + final int activityType = runningTask != null + ? runningTask.configuration.windowConfiguration.getActivityType() + : ACTIVITY_TYPE_UNDEFINED; + boolean screenPinningActive = ActivityManagerWrapper.getInstance().isScreenPinningActive(); + boolean isRunningTaskInHomeOrRecentsStack = + activityType == ACTIVITY_TYPE_HOME || activityType == ACTIVITY_TYPE_RECENTS; + if (runningTask != null && !isRunningTaskInHomeOrRecentsStack && !screenPinningActive) { + if (runningTask.supportsSplitScreenMultiWindow) { + if (ActivityManagerWrapper.getInstance().setTaskWindowingModeSplitScreenPrimary( + runningTask.id, stackCreateMode, initialBounds)) { + // The overview service is handling split screen, so just skip the wait for the + // first draw and notify the divider to start animating now + final Divider divider = mSysUiServiceProvider.getComponent(Divider.class); + if (divider != null) { + divider.onRecentsDrawn(); + } + return true; + } + } else { + Toast.makeText(mContext, R.string.dock_non_resizeble_failed_to_dock_text, + Toast.LENGTH_SHORT).show(); + } + } + return false; + } +} diff --git a/packages/SystemUI/src/com/android/systemui/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index 1bf87506ab0c..19f76759ead7 100644 --- a/packages/SystemUI/src/com/android/systemui/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -14,7 +14,7 @@ * limitations under the License */ -package com.android.systemui; +package com.android.systemui.recents; import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE; import static android.view.MotionEvent.ACTION_DOWN; @@ -42,7 +42,11 @@ import android.os.UserHandle; import android.provider.Settings; import android.util.Log; import android.view.MotionEvent; -import com.android.systemui.OverviewProxyService.OverviewProxyListener; +import com.android.systemui.Dependency; +import com.android.systemui.Dumpable; +import com.android.systemui.Prefs; +import com.android.systemui.SysUiServiceProvider; +import com.android.systemui.recents.OverviewProxyService.OverviewProxyListener; import com.android.systemui.shared.recents.IOverviewProxy; import com.android.systemui.shared.recents.ISystemUiProxy; import com.android.systemui.shared.system.ActivityManagerWrapper; diff --git a/packages/SystemUI/src/com/android/systemui/recents/Recents.java b/packages/SystemUI/src/com/android/systemui/recents/Recents.java index 74f6c2dec4e7..de22d219d4aa 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/Recents.java +++ b/packages/SystemUI/src/com/android/systemui/recents/Recents.java @@ -16,232 +16,29 @@ package com.android.systemui.recents; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; -import static com.android.systemui.statusbar.phone.StatusBar.SYSTEM_DIALOG_REASON_RECENT_APPS; - -import android.app.ActivityManager; -import android.app.trust.TrustManager; -import android.content.ComponentName; import android.content.ContentResolver; -import android.content.Context; -import android.content.Intent; -import android.content.ServiceConnection; -import android.content.pm.ActivityInfo; import android.content.res.Configuration; -import android.content.res.Resources; -import android.graphics.Point; import android.graphics.Rect; -import android.hardware.display.DisplayManager; -import android.os.Handler; -import android.os.IBinder; -import android.os.RemoteException; -import android.os.UserHandle; import android.provider.Settings; -import android.util.EventLog; -import android.util.Log; -import android.view.Display; -import android.widget.Toast; - -import com.android.internal.logging.MetricsLogger; -import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.systemui.Dependency; -import com.android.systemui.EventLogConstants; -import com.android.systemui.EventLogTags; -import com.android.systemui.OverviewProxyService; import com.android.systemui.R; -import com.android.systemui.RecentsComponent; -import com.android.systemui.SystemUIApplication; -import com.android.systemui.recents.events.ui.RecentsGrowingEvent; -import com.android.systemui.shared.recents.IOverviewProxy; import com.android.systemui.SystemUI; -import com.android.systemui.recents.events.EventBus; -import com.android.systemui.recents.events.activity.ConfigurationChangedEvent; -import com.android.systemui.recents.events.activity.DockedFirstAnimationFrameEvent; -import com.android.systemui.recents.events.activity.DockedTopTaskEvent; -import com.android.systemui.recents.events.activity.LaunchTaskFailedEvent; -import com.android.systemui.recents.events.activity.RecentsActivityStartingEvent; -import com.android.systemui.recents.events.component.RecentsVisibilityChangedEvent; -import com.android.systemui.recents.events.component.ScreenPinningRequestEvent; -import com.android.systemui.recents.events.component.SetWaitingForTransitionStartEvent; -import com.android.systemui.recents.events.component.ShowUserToastEvent; -import com.android.systemui.recents.events.ui.RecentsDrawnEvent; -import com.android.systemui.recents.misc.SystemServicesProxy; -import com.android.systemui.shared.recents.model.RecentsTaskLoader; -import com.android.systemui.shared.system.ActivityManagerWrapper; -import com.android.systemui.stackdivider.Divider; import com.android.systemui.statusbar.CommandQueue; - -import com.android.systemui.statusbar.phone.StatusBar; import java.io.FileDescriptor; import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Set; - /** - * An implementation of the SystemUI recents component, which supports both system and secondary - * users. + * A proxy to a Recents implementation. */ -public class Recents extends SystemUI - implements RecentsComponent, CommandQueue.Callbacks { - - private final static String TAG = "Recents"; - - public final static int EVENT_BUS_PRIORITY = 1; - public final static int BIND_TO_SYSTEM_USER_RETRY_DELAY = 5000; - - public final static Set<String> RECENTS_ACTIVITIES = new HashSet<>(); - static { - RECENTS_ACTIVITIES.add(RecentsImpl.RECENTS_ACTIVITY); - } - - private static final String COUNTER_WINDOW_SUPPORTED = "window_enter_supported"; - private static final String COUNTER_WINDOW_UNSUPPORTED = "window_enter_unsupported"; - private static final String COUNTER_WINDOW_INCOMPATIBLE = "window_enter_incompatible"; - - private static SystemServicesProxy sSystemServicesProxy; - private static RecentsDebugFlags sDebugFlags; - private static RecentsTaskLoader sTaskLoader; - private static RecentsConfiguration sConfiguration; - - private OverviewProxyService mOverviewProxyService; - - private Handler mHandler; - private RecentsImpl mImpl; - private TrustManager mTrustManager; - private int mDraggingInRecentsCurrentUser; - - // Only For system user, this is the callbacks instance we return to each secondary user - private RecentsSystemUser mSystemToUserCallbacks; - - // Only for secondary users, this is the callbacks instance provided by the system user to make - // calls back - private IRecentsSystemUserCallbacks mUserToSystemCallbacks; - - // The set of runnables to run after binding to the system user's service. - private final ArrayList<Runnable> mOnConnectRunnables = new ArrayList<>(); - - // Only for secondary users, this is the death handler for the binder from the system user - private final IBinder.DeathRecipient mUserToSystemCallbacksDeathRcpt = new IBinder.DeathRecipient() { - @Override - public void binderDied() { - mUserToSystemCallbacks = null; - EventLog.writeEvent(EventLogTags.SYSUI_RECENTS_CONNECTION, - EventLogConstants.SYSUI_RECENTS_CONNECTION_USER_SYSTEM_UNBOUND, - sSystemServicesProxy.getProcessUser()); - - // Retry after a fixed duration - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - registerWithSystemUser(); - } - }, BIND_TO_SYSTEM_USER_RETRY_DELAY); - } - }; - - // Only for secondary users, this is the service connection we use to connect to the system user - private final ServiceConnection mUserToSystemServiceConnection = new ServiceConnection() { - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - if (service != null) { - mUserToSystemCallbacks = IRecentsSystemUserCallbacks.Stub.asInterface( - service); - EventLog.writeEvent(EventLogTags.SYSUI_RECENTS_CONNECTION, - EventLogConstants.SYSUI_RECENTS_CONNECTION_USER_SYSTEM_BOUND, - sSystemServicesProxy.getProcessUser()); - - // Listen for system user's death, so that we can reconnect later - try { - service.linkToDeath(mUserToSystemCallbacksDeathRcpt, 0); - } catch (RemoteException e) { - Log.e(TAG, "Lost connection to (System) SystemUI", e); - } - - // Run each of the queued runnables - runAndFlushOnConnectRunnables(); - } +public class Recents extends SystemUI implements CommandQueue.Callbacks { - // Unbind ourselves now that we've registered our callbacks. The - // binder to the system user are still valid at this point. - mContext.unbindService(this); - } - - @Override - public void onServiceDisconnected(ComponentName name) { - // Do nothing - } - }; - - /** - * Returns the callbacks interface that non-system users can call. - */ - public IBinder getSystemUserCallbacks() { - return mSystemToUserCallbacks; - } - - public static RecentsTaskLoader getTaskLoader() { - return sTaskLoader; - } - - - public static SystemServicesProxy getSystemServices() { - return sSystemServicesProxy; - } - - public static RecentsConfiguration getConfiguration() { - return sConfiguration; - } - - public static RecentsDebugFlags getDebugFlags() { - return sDebugFlags; - } + private RecentsImplementation mImpl; @Override public void start() { - final Resources res = mContext.getResources(); - final int defaultTaskBarBackgroundColor = - mContext.getColor(R.color.recents_task_bar_default_background_color); - final int defaultTaskViewBackgroundColor = - mContext.getColor(R.color.recents_task_view_default_background_color); - sDebugFlags = new RecentsDebugFlags(); - sSystemServicesProxy = SystemServicesProxy.getInstance(mContext); - sConfiguration = new RecentsConfiguration(mContext); - sTaskLoader = new RecentsTaskLoader(mContext, - // TODO: Once we start building the AAR, move these into the loader - res.getInteger(R.integer.config_recents_max_thumbnail_count), - res.getInteger(R.integer.config_recents_max_icon_count), - res.getInteger(R.integer.recents_svelte_level)); - sTaskLoader.setDefaultColors(defaultTaskBarBackgroundColor, defaultTaskViewBackgroundColor); - mHandler = new Handler(); - mImpl = new RecentsImpl(mContext); - mOverviewProxyService = Dependency.get(OverviewProxyService.class); - - // Register with the event bus - EventBus.getDefault().register(this, EVENT_BUS_PRIORITY); - EventBus.getDefault().register(sSystemServicesProxy, EVENT_BUS_PRIORITY); - EventBus.getDefault().register(sTaskLoader, EVENT_BUS_PRIORITY); - - // Due to the fact that RecentsActivity is per-user, we need to establish and interface for - // the system user's Recents component to pass events (like show/hide/toggleRecents) to the - // secondary user, and vice versa (like visibility change, screen pinning). - final int processUser = sSystemServicesProxy.getProcessUser(); - if (sSystemServicesProxy.isSystemUser(processUser)) { - // For the system user, initialize an instance of the interface that we can pass to the - // secondary user - getComponent(CommandQueue.class).addCallbacks(this); - mSystemToUserCallbacks = new RecentsSystemUser(mContext, mImpl); - } else { - // For the secondary user, bind to the primary user's service to get a persistent - // interface to register its implementation and to later update its state - registerWithSystemUser(); - } + getComponent(CommandQueue.class).addCallbacks(this); putComponent(Recents.class, this); - - mTrustManager = (TrustManager) mContext.getSystemService(Context.TRUST_SERVICE); + mImpl = createRecentsImplementationFromConfig(); + mImpl.onStart(mContext, this); } @Override @@ -249,13 +46,20 @@ public class Recents extends SystemUI mImpl.onBootCompleted(); } + @Override + public void onConfigurationChanged(Configuration newConfig) { + mImpl.onConfigurationChanged(newConfig); + } + + @Override + public void appTransitionFinished() { + mImpl.onAppTransitionFinished(); + } + public void growRecents() { - EventBus.getDefault().send(new RecentsGrowingEvent()); + mImpl.growRecents(); } - /** - * Shows the Recents. - */ @Override public void showRecentApps(boolean triggeredFromAltTab) { // Ensure the device has been provisioned before allowing the user to interact with @@ -264,43 +68,9 @@ public class Recents extends SystemUI return; } - IOverviewProxy overviewProxy = mOverviewProxyService.getProxy(); - if (overviewProxy != null) { - try { - overviewProxy.onOverviewShown(triggeredFromAltTab); - return; - } catch (RemoteException e) { - Log.e(TAG, "Failed to send overview show event to launcher.", e); - } - } - - ActivityManagerWrapper.getInstance().closeSystemWindows(SYSTEM_DIALOG_REASON_RECENT_APPS); - int recentsGrowTarget = getComponent(Divider.class).getView().growsRecents(); - int currentUser = sSystemServicesProxy.getCurrentUser(); - if (sSystemServicesProxy.isSystemUser(currentUser)) { - mImpl.showRecents(triggeredFromAltTab, false /* draggingInRecents */, - true /* animate */, recentsGrowTarget); - } else { - if (mSystemToUserCallbacks != null) { - IRecentsNonSystemUserCallbacks callbacks = - mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); - if (callbacks != null) { - try { - callbacks.showRecents(triggeredFromAltTab, false /* draggingInRecents */, - true /* animate */, recentsGrowTarget); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } else { - Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); - } - } - } + mImpl.showRecentApps(triggeredFromAltTab); } - /** - * Hides the Recents. - */ @Override public void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) { // Ensure the device has been provisioned before allowing the user to interact with @@ -309,39 +79,9 @@ public class Recents extends SystemUI return; } - IOverviewProxy overviewProxy = mOverviewProxyService.getProxy(); - if (overviewProxy != null) { - try { - overviewProxy.onOverviewHidden(triggeredFromAltTab, triggeredFromHomeKey); - return; - } catch (RemoteException e) { - Log.e(TAG, "Failed to send overview hide event to launcher.", e); - } - } - - int currentUser = sSystemServicesProxy.getCurrentUser(); - if (sSystemServicesProxy.isSystemUser(currentUser)) { - mImpl.hideRecents(triggeredFromAltTab, triggeredFromHomeKey); - } else { - if (mSystemToUserCallbacks != null) { - IRecentsNonSystemUserCallbacks callbacks = - mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); - if (callbacks != null) { - try { - callbacks.hideRecents(triggeredFromAltTab, triggeredFromHomeKey); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } else { - Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); - } - } - } + mImpl.hideRecentApps(triggeredFromAltTab, triggeredFromHomeKey); } - /** - * Toggles the Recents activity. - */ @Override public void toggleRecentApps() { // Ensure the device has been provisioned before allowing the user to interact with @@ -350,57 +90,9 @@ public class Recents extends SystemUI return; } - // If connected to launcher service, let it handle the toggle logic - IOverviewProxy overviewProxy = mOverviewProxyService.getProxy(); - if (overviewProxy != null) { - final Runnable toggleRecents = () -> { - try { - if (mOverviewProxyService.getProxy() != null) { - mOverviewProxyService.getProxy().onOverviewToggle(); - } - } catch (RemoteException e) { - Log.e(TAG, "Cannot send toggle recents through proxy service.", e); - } - }; - // Preload only if device for current user is unlocked - final StatusBar statusBar = getComponent(StatusBar.class); - if (statusBar != null && statusBar.isKeyguardShowing()) { - statusBar.executeRunnableDismissingKeyguard(() -> { - // Flush trustmanager before checking device locked per user - mTrustManager.reportKeyguardShowingChanged(); - mHandler.post(toggleRecents); - }, null, true /* dismissShade */, false /* afterKeyguardGone */, - true /* deferred */); - } else { - toggleRecents.run(); - } - return; - } - - int growTarget = getComponent(Divider.class).getView().growsRecents(); - int currentUser = sSystemServicesProxy.getCurrentUser(); - if (sSystemServicesProxy.isSystemUser(currentUser)) { - mImpl.toggleRecents(growTarget); - } else { - if (mSystemToUserCallbacks != null) { - IRecentsNonSystemUserCallbacks callbacks = - mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); - if (callbacks != null) { - try { - callbacks.toggleRecents(growTarget); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } else { - Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); - } - } - } + mImpl.toggleRecentApps(); } - /** - * Preloads info for the Recents activity. - */ @Override public void preloadRecentApps() { // Ensure the device has been provisioned before allowing the user to interact with @@ -409,29 +101,7 @@ public class Recents extends SystemUI return; } - if (mOverviewProxyService.getProxy() != null) { - // TODO: Proxy to Launcher - return; - } - - int currentUser = sSystemServicesProxy.getCurrentUser(); - if (sSystemServicesProxy.isSystemUser(currentUser)) { - mImpl.preloadRecents(); - } else { - if (mSystemToUserCallbacks != null) { - IRecentsNonSystemUserCallbacks callbacks = - mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); - if (callbacks != null) { - try { - callbacks.preloadRecents(); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } else { - Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); - } - } - } + mImpl.preloadRecentApps(); } @Override @@ -442,32 +112,9 @@ public class Recents extends SystemUI return; } - if (mOverviewProxyService.getProxy() != null) { - // TODO: Proxy to Launcher - return; - } - - int currentUser = sSystemServicesProxy.getCurrentUser(); - if (sSystemServicesProxy.isSystemUser(currentUser)) { - mImpl.cancelPreloadingRecents(); - } else { - if (mSystemToUserCallbacks != null) { - IRecentsNonSystemUserCallbacks callbacks = - mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); - if (callbacks != null) { - try { - callbacks.cancelPreloadingRecents(); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } else { - Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); - } - } - } + mImpl.cancelPreloadRecentApps(); } - @Override public boolean splitPrimaryTask(int stackCreateMode, Rect initialBounds, int metricsDockAction) { // Ensure the device has been provisioned before allowing the user to interact with @@ -476,394 +123,42 @@ public class Recents extends SystemUI return false; } - Point realSize = new Point(); - if (initialBounds == null) { - mContext.getSystemService(DisplayManager.class).getDisplay(Display.DEFAULT_DISPLAY) - .getRealSize(realSize); - initialBounds = new Rect(0, 0, realSize.x, realSize.y); - } - - int currentUser = sSystemServicesProxy.getCurrentUser(); - ActivityManager.RunningTaskInfo runningTask = - ActivityManagerWrapper.getInstance().getRunningTask(); - final int activityType = runningTask != null - ? runningTask.configuration.windowConfiguration.getActivityType() - : ACTIVITY_TYPE_UNDEFINED; - boolean screenPinningActive = ActivityManagerWrapper.getInstance().isScreenPinningActive(); - boolean isRunningTaskInHomeOrRecentsStack = - activityType == ACTIVITY_TYPE_HOME || activityType == ACTIVITY_TYPE_RECENTS; - if (runningTask != null && !isRunningTaskInHomeOrRecentsStack && !screenPinningActive) { - logDockAttempt(mContext, runningTask.topActivity, runningTask.resizeMode); - if (runningTask.supportsSplitScreenMultiWindow) { - if (metricsDockAction != -1) { - MetricsLogger.action(mContext, metricsDockAction, - runningTask.topActivity.flattenToShortString()); - } - if (sSystemServicesProxy.isSystemUser(currentUser)) { - mImpl.splitPrimaryTask(runningTask.id, stackCreateMode, initialBounds); - } else { - if (mSystemToUserCallbacks != null) { - IRecentsNonSystemUserCallbacks callbacks = - mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); - if (callbacks != null) { - try { - callbacks.splitPrimaryTask(runningTask.id, stackCreateMode, - initialBounds); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } else { - Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); - } - } - } - mDraggingInRecentsCurrentUser = currentUser; - - if (mOverviewProxyService.getProxy() != null) { - // The overview service is handling split screen, so just skip the wait for the - // first draw and notify the divider to start animating now - EventBus.getDefault().post(new RecentsDrawnEvent()); - } - - return true; - } else { - EventBus.getDefault().send(new ShowUserToastEvent( - R.string.dock_non_resizeble_failed_to_dock_text, Toast.LENGTH_SHORT)); - return false; - } - } else { - return false; - } - } - - public static void logDockAttempt(Context ctx, ComponentName activity, int resizeMode) { - if (resizeMode == ActivityInfo.RESIZE_MODE_UNRESIZEABLE) { - MetricsLogger.action(ctx, MetricsEvent.ACTION_WINDOW_DOCK_UNRESIZABLE, - activity.flattenToShortString()); - } - MetricsLogger.count(ctx, getMetricsCounterForResizeMode(resizeMode), 1); - } - - private static String getMetricsCounterForResizeMode(int resizeMode) { - switch (resizeMode) { - case ActivityInfo.RESIZE_MODE_FORCE_RESIZEABLE: - return COUNTER_WINDOW_UNSUPPORTED; - case ActivityInfo.RESIZE_MODE_RESIZEABLE: - case ActivityInfo.RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION: - return COUNTER_WINDOW_SUPPORTED; - default: - return COUNTER_WINDOW_INCOMPATIBLE; - } - } - - public void showNextAffiliatedTask() { - // Ensure the device has been provisioned before allowing the user to interact with - // recents - if (!isUserSetup()) { - return; - } - - mImpl.showNextAffiliatedTask(); - } - - public void showPrevAffiliatedTask() { - // Ensure the device has been provisioned before allowing the user to interact with - // recents - if (!isUserSetup()) { - return; - } - - mImpl.showPrevAffiliatedTask(); - } - - @Override - public void appTransitionFinished() { - if (!Recents.getConfiguration().isLowRamDevice) { - // Fallback, reset the flag once an app transition ends - EventBus.getDefault().send(new SetWaitingForTransitionStartEvent( - false /* waitingForTransitionStart */)); - } - } - - /** - * Updates on configuration change. - */ - public void onConfigurationChanged(Configuration newConfig) { - int currentUser = sSystemServicesProxy.getCurrentUser(); - if (sSystemServicesProxy.isSystemUser(currentUser)) { - mImpl.onConfigurationChanged(); - } else { - if (mSystemToUserCallbacks != null) { - IRecentsNonSystemUserCallbacks callbacks = - mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); - if (callbacks != null) { - try { - callbacks.onConfigurationChanged(); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } else { - Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); - } - } - } + return mImpl.splitPrimaryTask(stackCreateMode, initialBounds, metricsDockAction); } /** - * Handle Recents activity visibility changed. + * @return whether this device is provisioned and the current user is set up. */ - public final void onBusEvent(final RecentsVisibilityChangedEvent event) { - SystemServicesProxy ssp = Recents.getSystemServices(); - int processUser = ssp.getProcessUser(); - if (ssp.isSystemUser(processUser)) { - mImpl.onVisibilityChanged(event.applicationContext, event.visible); - } else { - postToSystemUser(new Runnable() { - @Override - public void run() { - try { - mUserToSystemCallbacks.updateRecentsVisibility(event.visible); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } - }); - } - - // This will catch the cases when a user launches from recents to another app - // (and vice versa) that is not in the recents stack (such as home or bugreport) and it - // would not reset the wait for transition flag. This will catch it and make sure that the - // flag is reset. - if (!event.visible) { - mImpl.setWaitingForTransitionStart(false); - } - } - - public final void onBusEvent(DockedFirstAnimationFrameEvent event) { - SystemServicesProxy ssp = Recents.getSystemServices(); - int processUser = ssp.getProcessUser(); - if (ssp.isSystemUser(processUser)) { - final Divider divider = getComponent(Divider.class); - if (divider != null) { - divider.onDockedFirstAnimationFrame(); - } - } else { - postToSystemUser(new Runnable() { - @Override - public void run() { - try { - mUserToSystemCallbacks.sendDockedFirstAnimationFrameEvent(); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } - }); - } + private boolean isUserSetup() { + ContentResolver cr = mContext.getContentResolver(); + return (Settings.Global.getInt(cr, Settings.Global.DEVICE_PROVISIONED, 0) != 0) && + (Settings.Secure.getInt(cr, Settings.Secure.USER_SETUP_COMPLETE, 0) != 0); } /** - * Handle screen pinning request. + * @return The recents implementation from the config. */ - public final void onBusEvent(final ScreenPinningRequestEvent event) { - int processUser = sSystemServicesProxy.getProcessUser(); - if (sSystemServicesProxy.isSystemUser(processUser)) { - mImpl.onStartScreenPinning(event.applicationContext, event.taskId); - } else { - postToSystemUser(new Runnable() { - @Override - public void run() { - try { - mUserToSystemCallbacks.startScreenPinning(event.taskId); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } - }); + private RecentsImplementation createRecentsImplementationFromConfig() { + final String clsName = mContext.getString(R.string.config_recentsComponent); + if (clsName == null || clsName.length() == 0) { + throw new RuntimeException("No recents component configured", null); } - } - - public final void onBusEvent(final RecentsDrawnEvent event) { - int processUser = sSystemServicesProxy.getProcessUser(); - if (sSystemServicesProxy.isSystemUser(processUser)) { - final Divider divider = getComponent(Divider.class); - if (divider != null) { - divider.onRecentsDrawn(); - } - } else { - postToSystemUser(new Runnable() { - @Override - public void run() { - try { - mUserToSystemCallbacks.sendRecentsDrawnEvent(); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } - }); + Class<?> cls = null; + try { + cls = mContext.getClassLoader().loadClass(clsName); + } catch (Throwable t) { + throw new RuntimeException("Error loading recents component: " + clsName, t); } - } - - public final void onBusEvent(final DockedTopTaskEvent event) { - int processUser = sSystemServicesProxy.getProcessUser(); - if (sSystemServicesProxy.isSystemUser(processUser)) { - final Divider divider = getComponent(Divider.class); - if (divider != null) { - divider.onDockedTopTask(); - } - } else { - postToSystemUser(new Runnable() { - @Override - public void run() { - try { - mUserToSystemCallbacks.sendDockingTopTaskEvent(event.initialRect); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } - }); + try { + RecentsImplementation impl = (RecentsImplementation) cls.newInstance(); + return impl; + } catch (Throwable t) { + throw new RuntimeException("Error creating recents component: " + clsName, t); } } - public final void onBusEvent(final RecentsActivityStartingEvent event) { - int processUser = sSystemServicesProxy.getProcessUser(); - if (sSystemServicesProxy.isSystemUser(processUser)) { - final Divider divider = getComponent(Divider.class); - if (divider != null) { - divider.onRecentsActivityStarting(); - } - } else { - postToSystemUser(new Runnable() { - @Override - public void run() { - try { - mUserToSystemCallbacks.sendLaunchRecentsEvent(); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } - }); - } - } - - public final void onBusEvent(LaunchTaskFailedEvent event) { - // Reset the transition when tasks fail to launch - mImpl.setWaitingForTransitionStart(false); - } - - public final void onBusEvent(ConfigurationChangedEvent event) { - // Update the configuration for the Recents component when the activity configuration - // changes as well - mImpl.onConfigurationChanged(); - } - - public final void onBusEvent(ShowUserToastEvent event) { - int currentUser = sSystemServicesProxy.getCurrentUser(); - if (sSystemServicesProxy.isSystemUser(currentUser)) { - mImpl.onShowCurrentUserToast(event.msgResId, event.msgLength); - } else { - if (mSystemToUserCallbacks != null) { - IRecentsNonSystemUserCallbacks callbacks = - mSystemToUserCallbacks.getNonSystemUserRecentsForUser(currentUser); - if (callbacks != null) { - try { - callbacks.showCurrentUserToast(event.msgResId, event.msgLength); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } else { - Log.e(TAG, "No SystemUI callbacks found for user: " + currentUser); - } - } - } - } - - public final void onBusEvent(SetWaitingForTransitionStartEvent event) { - int processUser = sSystemServicesProxy.getProcessUser(); - if (sSystemServicesProxy.isSystemUser(processUser)) { - mImpl.setWaitingForTransitionStart(event.waitingForTransitionStart); - } else { - postToSystemUser(new Runnable() { - @Override - public void run() { - try { - mUserToSystemCallbacks.setWaitingForTransitionStartEvent( - event.waitingForTransitionStart); - } catch (RemoteException e) { - Log.e(TAG, "Callback failed", e); - } - } - }); - } - } - - /** - * Attempts to register with the system user. - */ - private void registerWithSystemUser() { - final int processUser = sSystemServicesProxy.getProcessUser(); - postToSystemUser(new Runnable() { - @Override - public void run() { - try { - mUserToSystemCallbacks.registerNonSystemUserCallbacks( - new RecentsImplProxy(mImpl), processUser); - } catch (RemoteException e) { - Log.e(TAG, "Failed to register", e); - } - } - }); - } - - /** - * Runs the runnable in the system user's Recents context, connecting to the service if - * necessary. - */ - private void postToSystemUser(final Runnable onConnectRunnable) { - mOnConnectRunnables.add(onConnectRunnable); - if (mUserToSystemCallbacks == null) { - Intent systemUserServiceIntent = new Intent(); - systemUserServiceIntent.setClass(mContext, RecentsSystemUserService.class); - boolean bound = mContext.bindServiceAsUser(systemUserServiceIntent, - mUserToSystemServiceConnection, Context.BIND_AUTO_CREATE, UserHandle.SYSTEM); - EventLog.writeEvent(EventLogTags.SYSUI_RECENTS_CONNECTION, - EventLogConstants.SYSUI_RECENTS_CONNECTION_USER_BIND_SERVICE, - sSystemServicesProxy.getProcessUser()); - if (!bound) { - // Retry after a fixed duration - mHandler.postDelayed(new Runnable() { - @Override - public void run() { - registerWithSystemUser(); - } - }, BIND_TO_SYSTEM_USER_RETRY_DELAY); - } - } else { - runAndFlushOnConnectRunnables(); - } - } - - /** - * Runs all the queued runnables after a service connection is made. - */ - private void runAndFlushOnConnectRunnables() { - for (Runnable r : mOnConnectRunnables) { - r.run(); - } - mOnConnectRunnables.clear(); - } - - /** - * @return whether this device is provisioned and the current user is set up. - */ - private boolean isUserSetup() { - ContentResolver cr = mContext.getContentResolver(); - return (Settings.Global.getInt(cr, Settings.Global.DEVICE_PROVISIONED, 0) != 0) && - (Settings.Secure.getInt(cr, Settings.Secure.USER_SETUP_COMPLETE, 0) != 0); - } - @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { - pw.println("Recents"); - pw.println(" currentUserId=" + SystemServicesProxy.getInstance(mContext).getCurrentUser()); + mImpl.dump(pw); } } diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsImplementation.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsImplementation.java new file mode 100644 index 000000000000..8a04c11f551a --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsImplementation.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.systemui.recents; + +import android.content.Context; +import android.content.res.Configuration; +import android.graphics.Rect; +import com.android.systemui.SysUiServiceProvider; +import java.io.PrintWriter; + +interface RecentsImplementation { + default void onStart(Context context, SysUiServiceProvider sysUiServiceProvider) {} + default void onBootCompleted() {} + default void onAppTransitionFinished() {} + default void onConfigurationChanged(Configuration newConfig) {} + + default void preloadRecentApps() {} + default void cancelPreloadRecentApps() {} + default void showRecentApps(boolean triggeredFromAltTab) {} + default void hideRecentApps(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {} + default void toggleRecentApps() {} + default void growRecents() {} + default boolean splitPrimaryTask(int stackCreateMode, Rect initialBounds, + int metricsDockAction) { + return false; + } + + default void dump(PrintWriter pw) {} +} diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java index db2b69f1d062..af0ebdc1306a 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsOnboarding.java @@ -59,13 +59,11 @@ import android.view.animation.DecelerateInterpolator; import android.widget.ImageView; import android.widget.TextView; -import com.android.systemui.OverviewProxyService; import com.android.systemui.Prefs; import com.android.systemui.R; -import com.android.systemui.recents.misc.SysUiTaskStackChangeListener; import com.android.systemui.shared.recents.IOverviewProxy; import com.android.systemui.shared.system.ActivityManagerWrapper; - +import com.android.systemui.shared.system.TaskStackChangeListener; import java.io.PrintWriter; import java.util.Collections; import java.util.HashSet; @@ -119,7 +117,7 @@ public class RecentsOnboarding { private int mNumAppsLaunchedSinceSwipeUpTipDismiss; private int mOverviewOpenedCountSinceQuickScrubTipDismiss; - private final SysUiTaskStackChangeListener mTaskListener = new SysUiTaskStackChangeListener() { + private final TaskStackChangeListener mTaskListener = new TaskStackChangeListener() { private String mLastPackageName; @Override diff --git a/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java b/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java index b7eee36cc5a5..f92c50a93f69 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java +++ b/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java @@ -29,7 +29,6 @@ import android.graphics.drawable.ColorDrawable; import android.os.Binder; import android.os.RemoteException; import android.util.DisplayMetrics; -import android.view.ContextThemeWrapper; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; @@ -42,9 +41,9 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; -import com.android.settingslib.Utils; import com.android.systemui.R; import com.android.systemui.SysUiServiceProvider; +import com.android.systemui.shared.system.WindowManagerWrapper; import com.android.systemui.statusbar.phone.NavigationBarView; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.util.leak.RotationUtils; @@ -220,8 +219,7 @@ public class ScreenPinningRequest implements View.OnClickListener { mLayout.findViewById(R.id.screen_pinning_text_area) .setLayoutDirection(View.LAYOUT_DIRECTION_LOCALE); View buttons = mLayout.findViewById(R.id.screen_pinning_buttons); - if (Recents.getSystemServices() != null && - Recents.getSystemServices().hasSoftNavigationBar()) { + if (WindowManagerWrapper.getInstance().hasSoftNavigationBar()) { buttons.setLayoutDirection(View.LAYOUT_DIRECTION_LOCALE); swapChildrenIfRtlAndVertical(buttons); } else { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java index 178c5c516e7b..38011d9c1e87 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java @@ -44,11 +44,10 @@ import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.Dependency; import com.android.systemui.Dumpable; -import com.android.systemui.OverviewProxyService; +import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.statusbar.StatusBarStateController.StateListener; import com.android.systemui.statusbar.notification.NotificationData; import com.android.systemui.statusbar.notification.NotificationEntryManager; -import com.android.systemui.statusbar.phone.StatusBarRemoteInputCallback; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardMonitor; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java index 59c15f15e4f7..329a33d91b1b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java @@ -19,7 +19,7 @@ import static android.app.StatusBarManager.NAVIGATION_HINT_IME_SHOWN; import static android.app.StatusBarManager.WINDOW_STATE_SHOWING; import static android.app.StatusBarManager.windowStateToString; -import static com.android.systemui.OverviewProxyService.OverviewProxyListener; +import static com.android.systemui.recents.OverviewProxyService.OverviewProxyListener; import static com.android.systemui.shared.system.NavigationBarCompat.InteractionType; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_LIGHTS_OUT_TRANSPARENT; import static com.android.systemui.statusbar.phone.BarTransitions.MODE_SEMI_TRANSPARENT; @@ -74,7 +74,7 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.util.LatencyTracker; import com.android.systemui.Dependency; -import com.android.systemui.OverviewProxyService; +import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.R; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.assist.AssistManager; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java index 52134d9d713c..22b6ba6fbb25 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarInflaterView.java @@ -34,7 +34,7 @@ import android.widget.LinearLayout; import android.widget.Space; import com.android.systemui.Dependency; -import com.android.systemui.OverviewProxyService; +import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.R; import com.android.systemui.plugins.PluginListener; import com.android.systemui.shared.plugins.PluginManager; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 2ab5958a12d2..6728f08581ec 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -57,7 +57,7 @@ import android.widget.FrameLayout; import com.android.systemui.Dependency; import com.android.systemui.DockedStackExistsListener; import com.android.systemui.Interpolators; -import com.android.systemui.OverviewProxyService; +import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.R; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.plugins.PluginListener; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java index fd5403fd8301..398012601587 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java @@ -20,8 +20,8 @@ import static android.view.WindowManagerPolicyConstants.NAV_BAR_BOTTOM; import static android.view.WindowManagerPolicyConstants.NAV_BAR_LEFT; import static com.android.systemui.Interpolators.ALPHA_IN; import static com.android.systemui.Interpolators.ALPHA_OUT; -import static com.android.systemui.OverviewProxyService.DEBUG_OVERVIEW_PROXY; -import static com.android.systemui.OverviewProxyService.TAG_OPS; +import static com.android.systemui.recents.OverviewProxyService.DEBUG_OVERVIEW_PROXY; +import static com.android.systemui.recents.OverviewProxyService.TAG_OPS; import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_DEAD_ZONE; import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_HOME; @@ -56,7 +56,7 @@ import android.view.ViewPropertyAnimator; import android.view.WindowManagerGlobal; import com.android.systemui.Dependency; import com.android.systemui.Interpolators; -import com.android.systemui.OverviewProxyService; +import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.R; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.plugins.statusbar.phone.NavGesture.GestureHelper; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationContextButton.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationContextButton.java index 855592fb9bb9..c6e98e0cfeb3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationContextButton.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationContextButton.java @@ -44,8 +44,8 @@ import com.android.systemui.Interpolators; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.systemui.R; -import com.android.systemui.recents.misc.SysUiTaskStackChangeListener; import com.android.systemui.shared.system.ActivityManagerWrapper; +import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.systemui.statusbar.policy.KeyButtonDrawable; import com.android.systemui.statusbar.policy.RotationLockController; @@ -400,7 +400,7 @@ public class RotationContextButton extends ContextualButton { } } - private class TaskStackListenerImpl extends SysUiTaskStackChangeListener { + private class TaskStackListenerImpl extends TaskStackChangeListener { // Invalidate any rotation suggestion on task change or activity orientation change // Note: all callbacks happen on main thread diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 37eccb59ebdd..b2a04add6a48 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -135,7 +135,6 @@ import com.android.systemui.InitController; import com.android.systemui.Interpolators; import com.android.systemui.Prefs; import com.android.systemui.R; -import com.android.systemui.RecentsComponent; import com.android.systemui.SystemUI; import com.android.systemui.SystemUIFactory; import com.android.systemui.UiOffloadThread; @@ -4121,7 +4120,7 @@ public class StatusBar extends SystemUI implements DemoMode, protected Display mDisplay; - protected RecentsComponent mRecents; + protected Recents mRecents; protected NotificationShelf mNotificationShelf; protected EmptyShadeView mEmptyShadeView; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java index 298a93eed55c..6fa73ef62447 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyButtonView.java @@ -34,7 +34,6 @@ import android.os.Bundle; import android.os.SystemClock; import android.util.AttributeSet; import android.util.TypedValue; -import android.view.Display; import android.view.HapticFeedbackConstants; import android.view.InputDevice; import android.view.KeyCharacterMap; @@ -49,7 +48,7 @@ import android.widget.ImageView; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.systemui.Dependency; -import com.android.systemui.OverviewProxyService; +import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.R; import com.android.systemui.plugins.statusbar.phone.NavBarButtonProvider.ButtonInterface; import com.android.systemui.shared.system.NavigationBarCompat; diff --git a/packages/SystemUI/tests/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl b/packages/SystemUI/tests/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl deleted file mode 120000 index 0ea3e9102d83..000000000000 --- a/packages/SystemUI/tests/src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl +++ /dev/null @@ -1 +0,0 @@ -../../../../../../src/com/android/systemui/recents/IRecentsNonSystemUserCallbacks.aidl
\ No newline at end of file diff --git a/packages/SystemUI/tests/src/com/android/systemui/recents/IRecentsSystemUserCallbacks.aidl b/packages/SystemUI/tests/src/com/android/systemui/recents/IRecentsSystemUserCallbacks.aidl deleted file mode 120000 index b1a0963e3673..000000000000 --- a/packages/SystemUI/tests/src/com/android/systemui/recents/IRecentsSystemUserCallbacks.aidl +++ /dev/null @@ -1 +0,0 @@ -../../../../../../src/com/android/systemui/recents/IRecentsSystemUserCallbacks.aidl
\ No newline at end of file diff --git a/packages/SystemUI/tests/src/com/android/systemui/recents/RecentsTest.java b/packages/SystemUI/tests/src/com/android/systemui/recents/RecentsTest.java deleted file mode 100644 index 2160f9a2ac0f..000000000000 --- a/packages/SystemUI/tests/src/com/android/systemui/recents/RecentsTest.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2017 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License - */ - -package com.android.systemui.recents; - -import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; - -import static com.android.systemui.recents.RecentsImpl.RECENTS_ACTIVITY; -import static com.android.systemui.recents.RecentsImpl.RECENTS_PACKAGE; - -import static org.junit.Assert.fail; - -import android.app.ActivityManager.RunningTaskInfo; -import android.app.ActivityTaskManager; -import android.app.IActivityTaskManager; -import android.os.SystemClock; -import android.support.test.filters.MediumTest; -import android.support.test.runner.AndroidJUnit4; - -import com.android.systemui.SysuiTestCase; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import java.util.List; - -@RunWith(AndroidJUnit4.class) -@MediumTest -public class RecentsTest extends SysuiTestCase { - - @Test - public void testRecentsActivityType() throws Exception { - // Clear the state - final IActivityTaskManager atm = ActivityTaskManager.getService(); - atm.removeStacksWithActivityTypes(new int[] { ACTIVITY_TYPE_RECENTS }); - - // Toggle recents, use a shell command because it is not exported - runShellCommand("am start -n " + RECENTS_PACKAGE + "/" + RECENTS_ACTIVITY); - - // Verify that an activity was launched with the right activity type - int retryCount = 0; - while (retryCount < 10) { - List<RunningTaskInfo> tasks = atm.getTasks(Integer.MAX_VALUE); - for (RunningTaskInfo info : tasks) { - if (info.configuration.windowConfiguration.getActivityType() - == ACTIVITY_TYPE_RECENTS) { - // Found a recents activity with the right activity type - return; - } - } - SystemClock.sleep(50); - retryCount++; - } - fail("Expected Recents activity with ACTIVITY_TYPE_RECENTS"); - } -} diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java index 17df8003dfa9..003d0586e912 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NavigationBarFragmentTest.java @@ -27,7 +27,7 @@ import android.view.WindowManager; import com.android.systemui.Dependency; -import com.android.systemui.OverviewProxyService; +import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.SysuiBaseFragmentTest; import com.android.systemui.recents.Recents; import com.android.systemui.stackdivider.Divider; |