Migrate Bubbles to wm-shell (5/n)
Move bubbles package and related resources to shell package, also copied some used codes and resources. Bug: 161980186 Test: atest SystemUITests Test: atest WMShellUnitTests Change-Id: Ia108bd4149b3c3bf86631ba1a7a6bce0e76af78f
This commit is contained in:
@@ -144,7 +144,7 @@ public @interface SoftInputShowHideReason {
|
||||
int HIDE_RECENTS_ANIMATION = 18;
|
||||
|
||||
/**
|
||||
* Hide soft input when {@link com.android.systemui.bubbles.BubbleController} is expanding,
|
||||
* Hide soft input when {@link com.android.wm.shell.bubbles.BubbleController} is expanding,
|
||||
* switching, or collapsing Bubbles.
|
||||
*/
|
||||
int HIDE_BUBBLES = 19;
|
||||
|
||||
@@ -116,12 +116,15 @@ android_library {
|
||||
"res",
|
||||
],
|
||||
static_libs: [
|
||||
"androidx.appcompat_appcompat",
|
||||
"androidx.arch.core_core-runtime",
|
||||
"androidx.dynamicanimation_dynamicanimation",
|
||||
"kotlinx-coroutines-android",
|
||||
"kotlinx-coroutines-core",
|
||||
"iconloader_base",
|
||||
"protolog-lib",
|
||||
"SettingsLib",
|
||||
"WindowManager-Shell-proto",
|
||||
"androidx.appcompat_appcompat",
|
||||
],
|
||||
kotlincflags: ["-Xjvm-default=enable"],
|
||||
manifest: "AndroidManifest.xml",
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<!--
|
||||
~ Copyright (C) 2020 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.
|
||||
-->
|
||||
<!--
|
||||
The transparent circle outline that encircles the bubbles when they're in the dismiss target.
|
||||
-->
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
|
||||
<stroke
|
||||
android:width="1dp"
|
||||
android:color="#66FFFFFF" />
|
||||
|
||||
<solid android:color="#B3000000" />
|
||||
</shape>
|
||||
@@ -1,18 +1,18 @@
|
||||
<!--
|
||||
Copyright (C) 2019 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.
|
||||
-->
|
||||
~ Copyright (C) 2020 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.
|
||||
-->
|
||||
<!-- The 'X' bubble dismiss icon. This is just ic_close with a stroke. -->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24.0dp"
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2020 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="20dp"
|
||||
android:height="20dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M23,5v8h-2V5H3v14h10v2v0H3c-1.1,0 -2,-0.9 -2,-2V5c0,-1.1 0.9,-2 2,-2h18C22.1,3 23,3.9 23,5zM10,8v2.59L5.71,6.29L4.29,7.71L8.59,12H6v2h6V8H10zM19,15c-1.66,0 -3,1.34 -3,3s1.34,3 3,3s3,-1.34 3,-3S20.66,15 19,15z"/>
|
||||
</vector>
|
||||
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2020 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="20dp"
|
||||
android:height="20dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M11.29,14.71L7,10.41V13H5V7h6v2H8.41l4.29,4.29L11.29,14.71zM21,3H3C1.9,3 1,3.9 1,5v14c0,1.1 0.9,2 2,2h10v0v-2H3V5h18v8h2V5C23,3.9 22.1,3 21,3zM19,15c-1.66,0 -3,1.34 -3,3s1.34,3 3,3s3,-1.34 3,-3S20.66,15 19,15z"/>
|
||||
</vector>
|
||||
@@ -12,7 +12,7 @@
|
||||
~ 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
|
||||
~ limitations under the License.
|
||||
-->
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true">
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2020 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
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24.0"
|
||||
android:viewportHeight="24.0"
|
||||
android:tint="?android:attr/textColorPrimary" >
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M13.41,12l5.29-5.29c0.39-0.39,0.39-1.02,0-1.41c-0.39-0.39-1.02-0.39-1.41,0L12,10.59L6.71,
|
||||
5.29c-0.39-0.39-1.02-0.39-1.41,0c-0.39,0.39-0.39,1.02,0,1.41L10.59,12l-5.29,5.29c-0.39,0.39-0.39,1.02,
|
||||
0,1.41c0.39,0.39,1.02,0.39,1.41,0L12,13.41l5.29,5.29c0.39,0.39,1.02,0.39,1.41,0c0.39-0.39,0.39-1.02,0-1.41L13.41,12z"/>
|
||||
</vector>
|
||||
26
libs/WindowManager/Shell/res/drawable/rounded_bg_full.xml
Normal file
26
libs/WindowManager/Shell/res/drawable/rounded_bg_full.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2020 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.
|
||||
-->
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle">
|
||||
<solid android:color="?android:attr/colorBackgroundFloating" />
|
||||
<corners
|
||||
android:bottomLeftRadius="?android:attr/dialogCornerRadius"
|
||||
android:topLeftRadius="?android:attr/dialogCornerRadius"
|
||||
android:bottomRightRadius="?android:attr/dialogCornerRadius"
|
||||
android:topRightRadius="?android:attr/dialogCornerRadius"
|
||||
/>
|
||||
</shape>
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
~ Copyright (C) 2018 The Android Open Source Project
|
||||
~ Copyright (C) 2020 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.
|
||||
@@ -12,9 +12,9 @@
|
||||
~ 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
|
||||
~ limitations under the License.
|
||||
-->
|
||||
<com.android.systemui.bubbles.BubbleExpandedView
|
||||
<com.android.wm.shell.bubbles.BubbleExpandedView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
@@ -27,7 +27,7 @@
|
||||
android:layout_height="@dimen/bubble_pointer_height"
|
||||
/>
|
||||
|
||||
<com.android.systemui.statusbar.AlphaOptimizedButton
|
||||
<com.android.wm.shell.common.AlphaOptimizedButton
|
||||
style="@android:style/Widget.Material.Button.Borderless"
|
||||
android:id="@+id/settings_button"
|
||||
android:layout_gravity="start"
|
||||
@@ -35,7 +35,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="true"
|
||||
android:text="@string/manage_bubbles_text"
|
||||
android:textColor="?attr/wallpaperTextColor"
|
||||
android:textColor="?android:attr/textColorPrimaryInverse"
|
||||
/>
|
||||
|
||||
</com.android.systemui.bubbles.BubbleExpandedView>
|
||||
</com.android.wm.shell.bubbles.BubbleExpandedView>
|
||||
@@ -34,7 +34,7 @@
|
||||
android:layout_height="30dp"
|
||||
android:layout_marginEnd="@dimen/bubble_flyout_avatar_message_space"
|
||||
android:scaleType="centerInside"
|
||||
android:src="@drawable/ic_create_bubble"/>
|
||||
android:src="@drawable/bubble_ic_create_bubble"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
@@ -35,7 +35,7 @@
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_remove_no_shadow"
|
||||
android:tint="@color/global_actions_text"/>
|
||||
android:tint="@color/bubbles_icon_tint"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
@@ -59,8 +59,8 @@
|
||||
<ImageView
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:src="@drawable/ic_stop_bubble"
|
||||
android:tint="@color/global_actions_text"/>
|
||||
android:src="@drawable/bubble_ic_stop_bubble"
|
||||
android:tint="@color/bubbles_icon_tint"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
@@ -14,7 +14,7 @@
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License.
|
||||
-->
|
||||
<com.android.systemui.bubbles.BubbleMenuView
|
||||
<com.android.wm.shell.bubbles.BubbleMenuView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent"
|
||||
@@ -30,14 +30,14 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@*android:id/icon"
|
||||
android:layout_width="@dimen/global_actions_grid_item_icon_width"
|
||||
android:layout_height="@dimen/global_actions_grid_item_icon_height"
|
||||
android:layout_marginTop="@dimen/global_actions_grid_item_icon_top_margin"
|
||||
android:layout_marginBottom="@dimen/global_actions_grid_item_icon_bottom_margin"
|
||||
android:layout_marginLeft="@dimen/global_actions_grid_item_icon_side_margin"
|
||||
android:layout_marginRight="@dimen/global_actions_grid_item_icon_side_margin"
|
||||
android:layout_width="@dimen/bubble_grid_item_icon_width"
|
||||
android:layout_height="@dimen/bubble_grid_item_icon_height"
|
||||
android:layout_marginTop="@dimen/bubble_grid_item_icon_top_margin"
|
||||
android:layout_marginBottom="@dimen/bubble_grid_item_icon_bottom_margin"
|
||||
android:layout_marginLeft="@dimen/bubble_grid_item_icon_side_margin"
|
||||
android:layout_marginRight="@dimen/bubble_grid_item_icon_side_margin"
|
||||
android:scaleType="centerInside"
|
||||
android:tint="@color/global_actions_text"
|
||||
android:tint="@color/bubbles_icon_tint"
|
||||
/>
|
||||
</FrameLayout>
|
||||
</com.android.systemui.bubbles.BubbleMenuView>
|
||||
</com.android.wm.shell.bubbles.BubbleMenuView>
|
||||
@@ -14,9 +14,9 @@
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License
|
||||
-->
|
||||
<com.android.systemui.bubbles.BadgedImageView
|
||||
<com.android.wm.shell.bubbles.BadgedImageView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/bubble_overflow_button"
|
||||
android:layout_width="@dimen/individual_bubble_size"
|
||||
android:layout_height="@dimen/individual_bubble_size"
|
||||
android:src="@drawable/ic_bubble_overflow_button"/>
|
||||
android:src="@drawable/bubble_ic_overflow_button"/>
|
||||
@@ -21,7 +21,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.android.systemui.bubbles.BadgedImageView
|
||||
<com.android.wm.shell.bubbles.BadgedImageView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/bubble_view"
|
||||
android:layout_gravity="center"
|
||||
@@ -14,7 +14,7 @@
|
||||
~ See the License for the specific language governing permissions and
|
||||
~ limitations under the License
|
||||
-->
|
||||
<com.android.systemui.bubbles.BadgedImageView
|
||||
<com.android.wm.shell.bubbles.BadgedImageView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/bubble_view"
|
||||
android:layout_width="@dimen/individual_bubble_size"
|
||||
@@ -64,7 +64,7 @@
|
||||
android:id="@+id/button_layout"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<com.android.systemui.statusbar.AlphaOptimizedButton
|
||||
<com.android.wm.shell.common.AlphaOptimizedButton
|
||||
style="@android:style/Widget.Material.Button.Borderless"
|
||||
android:id="@+id/manage"
|
||||
android:layout_gravity="start"
|
||||
@@ -73,10 +73,10 @@
|
||||
android:focusable="true"
|
||||
android:clickable="false"
|
||||
android:text="@string/manage_bubbles_text"
|
||||
android:textColor="?attr/wallpaperTextColor"
|
||||
android:textColor="?android:attr/textColorPrimaryInverse"
|
||||
/>
|
||||
|
||||
<com.android.systemui.statusbar.AlphaOptimizedButton
|
||||
<com.android.wm.shell.common.AlphaOptimizedButton
|
||||
style="@android:style/Widget.Material.Button.Borderless"
|
||||
android:id="@+id/got_it"
|
||||
android:layout_gravity="start"
|
||||
@@ -84,7 +84,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:focusable="true"
|
||||
android:text="@string/bubbles_user_education_got_it"
|
||||
android:textColor="?attr/wallpaperTextColor"
|
||||
android:textColor="?android:attr/textColorPrimaryInverse"
|
||||
/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
@@ -18,4 +18,8 @@
|
||||
<resources>
|
||||
<dimen name="docked_divider_handle_width">2dp</dimen>
|
||||
<dimen name="docked_divider_handle_height">16dp</dimen>
|
||||
|
||||
<!-- Padding between status bar and bubbles when displayed in expanded state, smaller
|
||||
value in landscape since we have limited vertical space-->
|
||||
<dimen name="bubble_padding_top">4dp</dimen>
|
||||
</resources>
|
||||
20
libs/WindowManager/Shell/res/values-night/colors.xml
Normal file
20
libs/WindowManager/Shell/res/values-night/colors.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<!--
|
||||
~ Copyright (C) 2020 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>
|
||||
<!-- Bubbles -->
|
||||
<color name="bubbles_icon_tint">@color/GM2_grey_200</color>
|
||||
</resources>
|
||||
@@ -25,4 +25,14 @@
|
||||
|
||||
<!-- Background for the various drop targets when handling drag and drop. -->
|
||||
<color name="drop_outline_background">#330000FF</color>
|
||||
|
||||
<!-- Bubbles -->
|
||||
<color name="bubbles_light">#FFFFFF</color>
|
||||
<color name="bubbles_dark">@color/GM2_grey_800</color>
|
||||
<color name="bubbles_icon_tint">@color/GM2_grey_700</color>
|
||||
|
||||
<!-- GM2 colors -->
|
||||
<color name="GM2_grey_200">#E8EAED</color>
|
||||
<color name="GM2_grey_700">#5F6368</color>
|
||||
<color name="GM2_grey_800">#3C4043</color>
|
||||
</resources>
|
||||
@@ -75,4 +75,94 @@
|
||||
|
||||
<!-- The amount to inset the drop target regions from the edge of the display -->
|
||||
<dimen name="drop_layout_display_margin">16dp</dimen>
|
||||
|
||||
<!-- The menu grid size for bubble menu. -->
|
||||
<dimen name="bubble_grid_item_icon_width">20dp</dimen>
|
||||
<dimen name="bubble_grid_item_icon_height">20dp</dimen>
|
||||
<dimen name="bubble_grid_item_icon_top_margin">12dp</dimen>
|
||||
<dimen name="bubble_grid_item_icon_bottom_margin">4dp</dimen>
|
||||
<dimen name="bubble_grid_item_icon_side_margin">22dp</dimen>
|
||||
|
||||
<!-- How much each bubble is elevated. -->
|
||||
<dimen name="bubble_elevation">1dp</dimen>
|
||||
<!-- How much the bubble flyout text container is elevated. -->
|
||||
<dimen name="bubble_flyout_elevation">4dp</dimen>
|
||||
<!-- How much padding is around the left and right sides of the flyout text. -->
|
||||
<dimen name="bubble_flyout_padding_x">12dp</dimen>
|
||||
<!-- How much padding is around the top and bottom of the flyout text. -->
|
||||
<dimen name="bubble_flyout_padding_y">10dp</dimen>
|
||||
<!-- Size of the triangle that points from the flyout to the bubble stack. -->
|
||||
<dimen name="bubble_flyout_pointer_size">6dp</dimen>
|
||||
<!-- How much space to leave between the flyout (tip of the arrow) and the bubble stack. -->
|
||||
<dimen name="bubble_flyout_space_from_bubble">8dp</dimen>
|
||||
<!-- How much space to leave between the flyout text and the avatar displayed in the flyout. -->
|
||||
<dimen name="bubble_flyout_avatar_message_space">6dp</dimen>
|
||||
<!-- Padding between status bar and bubbles when displayed in expanded state -->
|
||||
<dimen name="bubble_padding_top">16dp</dimen>
|
||||
<!-- Size of individual bubbles. -->
|
||||
<dimen name="individual_bubble_size">60dp</dimen>
|
||||
<!-- Size of bubble bitmap. -->
|
||||
<dimen name="bubble_bitmap_size">52dp</dimen>
|
||||
<!-- Size of bubble icon bitmap. -->
|
||||
<dimen name="bubble_overflow_icon_bitmap_size">24dp</dimen>
|
||||
<!-- Extra padding added to the touchable rect for bubbles so they are easier to grab. -->
|
||||
<dimen name="bubble_touch_padding">12dp</dimen>
|
||||
<!-- Size of the circle around the bubbles when they're in the dismiss target. -->
|
||||
<dimen name="bubble_dismiss_encircle_size">52dp</dimen>
|
||||
<!-- Padding around the view displayed when the bubble is expanded -->
|
||||
<dimen name="bubble_expanded_view_padding">4dp</dimen>
|
||||
<!-- This should be at least the size of bubble_expanded_view_padding; it is used to include
|
||||
a slight touch slop around the expanded view. -->
|
||||
<dimen name="bubble_expanded_view_slop">8dp</dimen>
|
||||
<!-- Default (and minimum) height of the expanded view shown when the bubble is expanded -->
|
||||
<dimen name="bubble_expanded_default_height">180dp</dimen>
|
||||
<!-- Default height of bubble overflow -->
|
||||
<dimen name="bubble_overflow_height">480dp</dimen>
|
||||
<!-- Bubble overflow padding when there are no bubbles -->
|
||||
<dimen name="bubble_overflow_empty_state_padding">16dp</dimen>
|
||||
<!-- Padding of container for overflow bubbles -->
|
||||
<dimen name="bubble_overflow_padding">15dp</dimen>
|
||||
<!-- Padding of label for bubble overflow view -->
|
||||
<dimen name="bubble_overflow_text_padding">7dp</dimen>
|
||||
<!-- Height of bubble overflow empty state illustration -->
|
||||
<dimen name="bubble_empty_overflow_image_height">200dp</dimen>
|
||||
<!-- Padding of bubble overflow empty state subtitle -->
|
||||
<dimen name="bubble_empty_overflow_subtitle_padding">50dp</dimen>
|
||||
<!-- Height of the triangle that points to the expanded bubble -->
|
||||
<dimen name="bubble_pointer_height">8dp</dimen>
|
||||
<!-- Width of the triangle that points to the expanded bubble -->
|
||||
<dimen name="bubble_pointer_width">12dp</dimen>
|
||||
<!-- Extra padding around the dismiss target for bubbles -->
|
||||
<dimen name="bubble_dismiss_slop">16dp</dimen>
|
||||
<!-- Height of button allowing users to adjust settings for bubbles. -->
|
||||
<dimen name="bubble_manage_button_height">48dp</dimen>
|
||||
<!-- Max width of the message bubble-->
|
||||
<dimen name="bubble_message_max_width">144dp</dimen>
|
||||
<!-- Min width of the message bubble -->
|
||||
<dimen name="bubble_message_min_width">32dp</dimen>
|
||||
<!-- Interior padding of the message bubble -->
|
||||
<dimen name="bubble_message_padding">4dp</dimen>
|
||||
<!-- Offset between bubbles in their stacked position. -->
|
||||
<dimen name="bubble_stack_offset">10dp</dimen>
|
||||
<!-- Offset between stack y and animation y for bubble swap. -->
|
||||
<dimen name="bubble_swap_animation_offset">15dp</dimen>
|
||||
<!-- How far offscreen the bubble stack rests. Cuts off padding and part of icon bitmap. -->
|
||||
<dimen name="bubble_stack_offscreen">9dp</dimen>
|
||||
<!-- How far down the screen the stack starts. -->
|
||||
<dimen name="bubble_stack_starting_offset_y">120dp</dimen>
|
||||
<!-- Space between the pointer triangle and the bubble expanded view -->
|
||||
<dimen name="bubble_pointer_margin">8dp</dimen>
|
||||
<!-- Padding applied to the bubble dismiss target. Touches in this padding cause the bubbles to
|
||||
snap to the dismiss target. -->
|
||||
<dimen name="bubble_dismiss_target_padding_x">40dp</dimen>
|
||||
<dimen name="bubble_dismiss_target_padding_y">20dp</dimen>
|
||||
<dimen name="bubble_manage_menu_elevation">4dp</dimen>
|
||||
|
||||
<!-- Bubbles user education views -->
|
||||
<dimen name="bubbles_manage_education_width">160dp</dimen>
|
||||
<!-- The inset from the top bound of the manage button to place the user education. -->
|
||||
<dimen name="bubbles_manage_education_top_inset">65dp</dimen>
|
||||
<!-- Size of padding for the user education cling, this should at minimum be larger than
|
||||
individual_bubble_size + some padding. -->
|
||||
<dimen name="bubble_stack_user_education_side_inset">72dp</dimen>
|
||||
</resources>
|
||||
|
||||
@@ -23,4 +23,21 @@
|
||||
<item type="id" name="action_move_tl_50" />
|
||||
<item type="id" name="action_move_tl_30" />
|
||||
<item type="id" name="action_move_rb_full" />
|
||||
|
||||
<!-- For saving PhysicsAnimationLayout animations/animators as view tags. -->
|
||||
<item type="id" name="translation_x_dynamicanimation_tag"/>
|
||||
<item type="id" name="translation_y_dynamicanimation_tag"/>
|
||||
<item type="id" name="translation_z_dynamicanimation_tag"/>
|
||||
<item type="id" name="alpha_dynamicanimation_tag"/>
|
||||
<item type="id" name="scale_x_dynamicanimation_tag"/>
|
||||
<item type="id" name="scale_y_dynamicanimation_tag"/>
|
||||
<item type="id" name="physics_animator_tag"/>
|
||||
<item type="id" name="target_animator_tag" />
|
||||
<item type="id" name="reorder_animator_tag"/>
|
||||
|
||||
<!-- Accessibility actions for bubbles. -->
|
||||
<item type="id" name="action_move_top_left"/>
|
||||
<item type="id" name="action_move_top_right"/>
|
||||
<item type="id" name="action_move_bottom_left"/>
|
||||
<item type="id" name="action_move_bottom_right"/>
|
||||
</resources>
|
||||
|
||||
25
libs/WindowManager/Shell/res/values/integers.xml
Normal file
25
libs/WindowManager/Shell/res/values/integers.xml
Normal file
@@ -0,0 +1,25 @@
|
||||
<!--
|
||||
~ Copyright (C) 2020 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>
|
||||
<!-- Maximum number of bubbles to render and animate at one time. While the animations used are
|
||||
lightweight translation animations, this number can be reduced on lower end devices if any
|
||||
performance issues arise. -->
|
||||
<integer name="bubbles_max_rendered">5</integer>
|
||||
<!-- Number of columns in bubble overflow. -->
|
||||
<integer name="bubbles_overflow_columns">4</integer>
|
||||
<!-- Maximum number of bubbles we allow in overflow before we dismiss the oldest one. -->
|
||||
<integer name="bubbles_max_overflow">16</integer>
|
||||
</resources>
|
||||
@@ -97,4 +97,53 @@
|
||||
<string name="accessibility_action_start_one_handed">Start one-handed mode</string>
|
||||
<!-- Accessibility description for stop one-handed mode [CHAR LIMIT=NONE] -->
|
||||
<string name="accessibility_action_stop_one_handed">Exit one-handed mode</string>
|
||||
|
||||
<!-- Text used for content description of settings button in the header of expanded bubble
|
||||
view. [CHAR_LIMIT=NONE] -->
|
||||
<string name="bubbles_settings_button_description">Settings for <xliff:g id="app_name" example="YouTube">%1$s</xliff:g> bubbles</string>
|
||||
<!-- Content description for button that shows bubble overflow on click [CHAR LIMIT=NONE] -->
|
||||
<string name="bubble_overflow_button_content_description">Overflow</string>
|
||||
<!-- Action to add overflow bubble back to stack. [CHAR LIMIT=NONE] -->
|
||||
<string name="bubble_accessibility_action_add_back">Add back to stack</string>
|
||||
<!-- Content description when a bubble is focused. [CHAR LIMIT=NONE] -->
|
||||
<string name="bubble_content_description_single"><xliff:g id="notification_title" example="some title">%1$s</xliff:g> from <xliff:g id="app_name" example="YouTube">%2$s</xliff:g></string>
|
||||
<!-- Content description when the stack of bubbles is focused. [CHAR LIMIT=NONE] -->
|
||||
<string name="bubble_content_description_stack"><xliff:g id="notification_title" example="some title">%1$s</xliff:g> from <xliff:g id="app_name" example="YouTube">%2$s</xliff:g> and <xliff:g id="bubble_count" example="4">%3$d</xliff:g> more</string>
|
||||
<!-- Action in accessibility menu to move the stack of bubbles to the top left of the screen. [CHAR LIMIT=30] -->
|
||||
<string name="bubble_accessibility_action_move_top_left">Move top left</string>
|
||||
<!-- Action in accessibility menu to move the stack of bubbles to the top right of the screen. [CHAR LIMIT=30] -->
|
||||
<string name="bubble_accessibility_action_move_top_right">Move top right</string>
|
||||
<!-- Action in accessibility menu to move the stack of bubbles to the bottom left of the screen. [CHAR LIMIT=30]-->
|
||||
<string name="bubble_accessibility_action_move_bottom_left">Move bottom left</string>
|
||||
<!-- Action in accessibility menu to move the stack of bubbles to the bottom right of the screen. [CHAR LIMIT=30]-->
|
||||
<string name="bubble_accessibility_action_move_bottom_right">Move bottom right</string>
|
||||
<!-- Label for the button that takes the user to the notification settings for the given app. -->
|
||||
<string name="bubbles_app_settings"><xliff:g id="notification_title" example="Android Messages">%1$s</xliff:g> settings</string>
|
||||
<!-- Text used for the bubble dismiss area. Bubbles dragged to, or flung towards, this area will go away. [CHAR LIMIT=30] -->
|
||||
<string name="bubble_dismiss_text">Dismiss bubble</string>
|
||||
<!-- Button text to stop a conversation from bubbling [CHAR LIMIT=60]-->
|
||||
<string name="bubbles_dont_bubble_conversation">Don\u2019t bubble conversation</string>
|
||||
<!-- Title text for the bubbles feature education cling shown when a bubble is on screen for the first time. [CHAR LIMIT=60]-->
|
||||
<string name="bubbles_user_education_title">Chat using bubbles</string>
|
||||
<!-- Descriptive text for the bubble feature education cling shown when a bubble is on screen for the first time. [CHAR LIMIT=NONE] -->
|
||||
<string name="bubbles_user_education_description">New conversations appear as floating icons, or bubbles. Tap to open bubble. Drag to move it.</string>
|
||||
<!-- Title text for the bubble "manage" button tool tip highlighting where users can go to control bubble settings. [CHAR LIMIT=60]-->
|
||||
<string name="bubbles_user_education_manage_title">Control bubbles anytime</string>
|
||||
<!-- Descriptive text for the bubble "manage" button tool tip highlighting where users can go to control bubble settings. [CHAR LIMIT=80]-->
|
||||
<string name="bubbles_user_education_manage">Tap Manage to turn off bubbles from this app</string>
|
||||
<!-- Button text for dismissing the bubble "manage" button tool tip [CHAR LIMIT=20]-->
|
||||
<string name="bubbles_user_education_got_it">Got it</string>
|
||||
<!-- [CHAR LIMIT=NONE] Empty overflow title -->
|
||||
<string name="bubble_overflow_empty_title">No recent bubbles</string>
|
||||
<!-- [CHAR LIMIT=NONE] Empty overflow subtitle -->
|
||||
<string name="bubble_overflow_empty_subtitle">Recent bubbles and dismissed bubbles will appear here</string>
|
||||
|
||||
<!-- [CHAR LIMIT=100] Notification Importance title -->
|
||||
<string name="notification_bubble_title">Bubble</string>
|
||||
|
||||
<!-- The text for the manage bubbles link. [CHAR LIMIT=NONE] -->
|
||||
<string name="manage_bubbles_text">Manage</string>
|
||||
|
||||
<!-- Content description to tell the user a bubble has been dismissed. -->
|
||||
<string name="accessibility_bubble_dismissed">Bubble dismissed.</string>
|
||||
</resources>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell;
|
||||
|
||||
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
|
||||
|
||||
@@ -30,26 +30,23 @@ import android.content.pm.LauncherApps;
|
||||
import android.content.pm.ShortcutInfo;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Binder;
|
||||
import android.util.CloseGuard;
|
||||
import android.view.SurfaceControl;
|
||||
import android.view.SurfaceHolder;
|
||||
import android.view.SurfaceView;
|
||||
import android.window.WindowContainerToken;
|
||||
import android.window.WindowContainerTransaction;
|
||||
|
||||
import com.android.wm.shell.ShellTaskOrganizer;
|
||||
|
||||
import dalvik.system.CloseGuard;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
/**
|
||||
* View that can display a task.
|
||||
*/
|
||||
// TODO: Place in com.android.wm.shell vs. com.android.wm.shell.bubbles on shell migration.
|
||||
public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
|
||||
ShellTaskOrganizer.TaskListener {
|
||||
|
||||
/** Callback for listening task state. */
|
||||
public interface Listener {
|
||||
/** Called when the container is ready for launching activities. */
|
||||
default void onInitialized() {}
|
||||
@@ -70,7 +67,7 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
|
||||
default void onBackPressedOnTaskRoot(int taskId) {}
|
||||
}
|
||||
|
||||
private final CloseGuard mGuard = CloseGuard.get();
|
||||
private final CloseGuard mGuard = new CloseGuard();
|
||||
|
||||
private final ShellTaskOrganizer mTaskOrganizer;
|
||||
|
||||
@@ -56,4 +56,10 @@ public class Interpolators {
|
||||
* Interpolator to be used when animating a move based on a click. Pair with enough duration.
|
||||
*/
|
||||
public static final Interpolator TOUCH_RESPONSE = new PathInterpolator(0.3f, 0f, 0.1f, 1f);
|
||||
|
||||
/**
|
||||
* Interpolator to be used when animating a panel closing.
|
||||
*/
|
||||
public static final Interpolator PANEL_CLOSE_ACCELERATED =
|
||||
new PathInterpolator(0.3f, 0, 0.5f, 1);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -13,7 +13,10 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static android.graphics.Paint.DITHER_FLAG;
|
||||
import static android.graphics.Paint.FILTER_BITMAP_FLAG;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.content.Context;
|
||||
@@ -28,14 +31,11 @@ import android.util.PathParser;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.android.launcher3.icons.DotRenderer;
|
||||
import com.android.systemui.Interpolators;
|
||||
import com.android.systemui.R;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.animation.Interpolators;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import static android.graphics.Paint.DITHER_FLAG;
|
||||
import static android.graphics.Paint.FILTER_BITMAP_FLAG;
|
||||
|
||||
/**
|
||||
* View that displays an adaptive icon with an app-badge and a dot.
|
||||
*
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
|
||||
import static android.os.AsyncTask.Status.FINISHED;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
|
||||
import static android.service.notification.NotificationListenerService.REASON_CANCEL;
|
||||
@@ -22,8 +22,8 @@ import static android.view.View.INVISIBLE;
|
||||
import static android.view.View.VISIBLE;
|
||||
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
|
||||
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_BUBBLES;
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.UserIdInt;
|
||||
@@ -59,8 +59,6 @@ import androidx.annotation.Nullable;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.logging.UiEventLogger;
|
||||
import com.android.internal.statusbar.IStatusBarService;
|
||||
import com.android.systemui.bubbles.dagger.BubbleModule;
|
||||
import com.android.systemui.dagger.qualifiers.Main;
|
||||
import com.android.wm.shell.ShellTaskOrganizer;
|
||||
import com.android.wm.shell.WindowManagerShellWrapper;
|
||||
import com.android.wm.shell.common.FloatingContentCoordinator;
|
||||
@@ -165,7 +163,7 @@ public class BubbleController implements Bubbles {
|
||||
private boolean mIsStatusBarShade = true;
|
||||
|
||||
/**
|
||||
* Injected constructor. See {@link BubbleModule}.
|
||||
* Injected constructor.
|
||||
*/
|
||||
public static BubbleController create(Context context,
|
||||
@Nullable BubbleStackView.SurfaceSynchronizer synchronizer,
|
||||
@@ -175,7 +173,7 @@ public class BubbleController implements Bubbles {
|
||||
WindowManagerShellWrapper windowManagerShellWrapper,
|
||||
LauncherApps launcherApps,
|
||||
UiEventLogger uiEventLogger,
|
||||
@Main Handler mainHandler,
|
||||
Handler mainHandler,
|
||||
ShellTaskOrganizer organizer) {
|
||||
BubbleLogger logger = new BubbleLogger(uiEventLogger);
|
||||
return new BubbleController(context,
|
||||
@@ -903,7 +901,7 @@ public class BubbleController implements Bubbles {
|
||||
}
|
||||
if (!mBubbleData.hasBubbleInStackWithKey(bubble.getKey())) {
|
||||
if (!mBubbleData.hasOverflowBubbleWithKey(bubble.getKey())
|
||||
&& (!bubble.showInShade()
|
||||
&& (!bubble.showInShade()
|
||||
|| reason == DISMISS_NOTIF_CANCEL
|
||||
|| reason == DISMISS_GROUP_CANCELLED)) {
|
||||
// The bubble is now gone & the notification is hidden from the shade, so
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -13,13 +13,13 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;
|
||||
import static com.android.internal.annotations.VisibleForTesting.Visibility.PRIVATE;
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_DATA;
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_BUBBLES;
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_DATA;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.app.PendingIntent;
|
||||
@@ -33,8 +33,8 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.util.FrameworkStatsLog;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.bubbles.Bubbles.DismissReason;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.bubbles.Bubbles.DismissReason;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles
|
||||
package com.android.wm.shell.bubbles
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.annotation.UserIdInt
|
||||
@@ -24,9 +24,9 @@ import android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC
|
||||
import android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED_BY_ANY_LAUNCHER
|
||||
import android.os.UserHandle
|
||||
import android.util.Log
|
||||
import com.android.systemui.bubbles.storage.BubbleEntity
|
||||
import com.android.systemui.bubbles.storage.BubblePersistentRepository
|
||||
import com.android.systemui.bubbles.storage.BubbleVolatileRepository
|
||||
import com.android.wm.shell.bubbles.storage.BubbleEntity
|
||||
import com.android.wm.shell.bubbles.storage.BubblePersistentRepository
|
||||
import com.android.wm.shell.bubbles.storage.BubbleVolatileRepository
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.Job
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import android.content.Context;
|
||||
import android.provider.Settings;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static android.app.Notification.FLAG_BUBBLE;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,17 +14,17 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static android.app.ActivityTaskManager.INVALID_TASK_ID;
|
||||
import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
|
||||
import static android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT;
|
||||
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_EXPANDED_VIEW;
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_BUBBLES;
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
import static com.android.systemui.bubbles.BubbleOverflowActivity.EXTRA_BUBBLE_CONTROLLER;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_EXPANDED_VIEW;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
import static com.android.wm.shell.bubbles.BubbleOverflowActivity.EXTRA_BUBBLE_CONTROLLER;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.SuppressLint;
|
||||
@@ -54,10 +54,11 @@ import android.widget.LinearLayout;
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.internal.policy.ScreenDecorationsUtils;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.recents.TriangleShape;
|
||||
import com.android.systemui.statusbar.AlphaOptimizedButton;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.TaskView;
|
||||
import com.android.wm.shell.common.AlphaOptimizedButton;
|
||||
import com.android.wm.shell.common.HandlerExecutor;
|
||||
import com.android.wm.shell.common.TriangleShape;
|
||||
|
||||
import java.io.FileDescriptor;
|
||||
import java.io.PrintWriter;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,12 +14,13 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static android.graphics.Paint.ANTI_ALIAS_FLAG;
|
||||
import static android.graphics.Paint.FILTER_BITMAP_FLAG;
|
||||
import static com.android.systemui.Interpolators.ALPHA_IN;
|
||||
import static com.android.systemui.Interpolators.ALPHA_OUT;
|
||||
|
||||
import static com.android.wm.shell.animation.Interpolators.ALPHA_IN;
|
||||
import static com.android.wm.shell.animation.Interpolators.ALPHA_OUT;
|
||||
|
||||
import android.animation.ArgbEvaluator;
|
||||
import android.content.Context;
|
||||
@@ -47,8 +48,8 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.recents.TriangleShape;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.common.TriangleShape;
|
||||
|
||||
/**
|
||||
* Flyout view that appears as a 'chat bubble' alongside the bubble stack. The flyout can visually
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
@@ -26,14 +26,13 @@ import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Path;
|
||||
import android.graphics.drawable.AdaptiveIconDrawable;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.graphics.drawable.Icon;
|
||||
|
||||
import com.android.launcher3.icons.BaseIconFactory;
|
||||
import com.android.launcher3.icons.BitmapInfo;
|
||||
import com.android.launcher3.icons.ShadowGenerator;
|
||||
import com.android.systemui.R;
|
||||
import com.android.wm.shell.R;
|
||||
|
||||
/**
|
||||
* Factory for creating normalized bubble icons.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.logging.UiEvent;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles
|
||||
package com.android.wm.shell.bubbles
|
||||
|
||||
import android.app.ActivityTaskManager.INVALID_TASK_ID
|
||||
import android.content.Context
|
||||
@@ -31,7 +31,7 @@ import android.util.TypedValue
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import com.android.systemui.R
|
||||
import com.android.wm.shell.R
|
||||
|
||||
class BubbleOverflow(
|
||||
private val context: Context,
|
||||
@@ -72,7 +72,7 @@ class BubbleOverflow(
|
||||
updateResources()
|
||||
expandedView.applyThemeAttrs()
|
||||
// Apply inset and new style to fresh icon drawable.
|
||||
overflowBtn.setImageResource(R.drawable.ic_bubble_overflow_button)
|
||||
overflowBtn.setImageResource(R.drawable.bubble_ic_overflow_button)
|
||||
updateBtnTheme()
|
||||
}
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.DEBUG_OVERFLOW;
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_BUBBLES;
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_OVERFLOW;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
@@ -43,13 +43,12 @@ import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.internal.util.ContrastColorUtil;
|
||||
import com.android.systemui.R;
|
||||
import com.android.wm.shell.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
|
||||
/**
|
||||
* Activity for showing aged out bubbles.
|
||||
* Must be public to be accessible to androidx...AppComponentFactory
|
||||
@@ -168,8 +167,8 @@ public class BubbleOverflowActivity extends Activity {
|
||||
final boolean isNightMode = (mode == Configuration.UI_MODE_NIGHT_YES);
|
||||
|
||||
mEmptyStateImage.setImageDrawable(isNightMode
|
||||
? res.getDrawable(R.drawable.ic_empty_bubble_overflow_dark)
|
||||
: res.getDrawable(R.drawable.ic_empty_bubble_overflow_light));
|
||||
? res.getDrawable(R.drawable.bubble_ic_empty_overflow_dark)
|
||||
: res.getDrawable(R.drawable.bubble_ic_empty_overflow_light));
|
||||
|
||||
findViewById(android.R.id.content)
|
||||
.setBackgroundColor(isNightMode
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Configuration;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2012 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,14 +14,14 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
|
||||
import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
|
||||
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_STACK_VIEW;
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_BUBBLES;
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_STACK_VIEW;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -71,13 +71,13 @@ import androidx.dynamicanimation.animation.SpringForce;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.util.FrameworkStatsLog;
|
||||
import com.android.systemui.Interpolators;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.bubbles.animation.AnimatableScaleMatrix;
|
||||
import com.android.systemui.bubbles.animation.ExpandedAnimationController;
|
||||
import com.android.systemui.bubbles.animation.PhysicsAnimationLayout;
|
||||
import com.android.systemui.bubbles.animation.StackAnimationController;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.animation.Interpolators;
|
||||
import com.android.wm.shell.animation.PhysicsAnimator;
|
||||
import com.android.wm.shell.bubbles.animation.AnimatableScaleMatrix;
|
||||
import com.android.wm.shell.bubbles.animation.ExpandedAnimationController;
|
||||
import com.android.wm.shell.bubbles.animation.PhysicsAnimationLayout;
|
||||
import com.android.wm.shell.bubbles.animation.StackAnimationController;
|
||||
import com.android.wm.shell.common.FloatingContentCoordinator;
|
||||
import com.android.wm.shell.common.magnetictarget.MagnetizedObject;
|
||||
|
||||
@@ -2661,14 +2661,17 @@ public class BubbleStackView extends FrameLayout
|
||||
.floatValue();
|
||||
}
|
||||
|
||||
/** Set the start position of the bubble stack. */
|
||||
public void setStackStartPosition(RelativeStackPosition position) {
|
||||
mStackAnimationController.setStackStartPosition(position);
|
||||
}
|
||||
|
||||
/** @return the position of the bubble stack. */
|
||||
public PointF getStackPosition() {
|
||||
return mStackAnimationController.getStackPosition();
|
||||
}
|
||||
|
||||
/** @return the relative position of the bubble stack. */
|
||||
public RelativeStackPosition getRelativeStackPosition() {
|
||||
return mStackAnimationController.getRelativeStackPosition();
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,12 +14,12 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static com.android.systemui.bubbles.BadgedImageView.DEFAULT_PATH_SIZE;
|
||||
import static com.android.systemui.bubbles.BadgedImageView.WHITE_SCRIM_ALPHA;
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_BUBBLES;
|
||||
import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
import static com.android.wm.shell.bubbles.BadgedImageView.DEFAULT_PATH_SIZE;
|
||||
import static com.android.wm.shell.bubbles.BadgedImageView.WHITE_SCRIM_ALPHA;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES;
|
||||
import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.content.Context;
|
||||
@@ -42,7 +42,7 @@ import androidx.annotation.Nullable;
|
||||
|
||||
import com.android.internal.graphics.ColorUtils;
|
||||
import com.android.launcher3.icons.BitmapInfo;
|
||||
import com.android.systemui.R;
|
||||
import com.android.wm.shell.R;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.Objects;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Path;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static java.lang.annotation.ElementType.FIELD;
|
||||
import static java.lang.annotation.ElementType.LOCAL_VARIABLE;
|
||||
@@ -1,4 +1,20 @@
|
||||
package com.android.systemui.bubbles
|
||||
/*
|
||||
* Copyright (C) 2020 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.wm.shell.bubbles
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.drawable.TransitionDrawable
|
||||
@@ -9,9 +25,9 @@ import android.widget.FrameLayout
|
||||
import androidx.dynamicanimation.animation.DynamicAnimation
|
||||
import androidx.dynamicanimation.animation.SpringForce.DAMPING_RATIO_LOW_BOUNCY
|
||||
import androidx.dynamicanimation.animation.SpringForce.STIFFNESS_LOW
|
||||
import com.android.systemui.R
|
||||
import com.android.wm.shell.common.DismissCircleView
|
||||
import com.android.wm.shell.R
|
||||
import com.android.wm.shell.animation.PhysicsAnimator
|
||||
import com.android.wm.shell.common.DismissCircleView
|
||||
|
||||
/*
|
||||
* View that handles interactions between DismissCircleView and BubbleStackView.
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles
|
||||
package com.android.wm.shell.bubbles
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
@@ -24,8 +24,8 @@ import android.widget.Button
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import com.android.internal.util.ContrastColorUtil
|
||||
import com.android.systemui.Interpolators
|
||||
import com.android.systemui.R
|
||||
import com.android.wm.shell.R
|
||||
import com.android.wm.shell.animation.Interpolators
|
||||
|
||||
/**
|
||||
* User education view to highlight the manage button that allows a user to configure the settings
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import android.os.Binder;
|
||||
import android.os.IBinder;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles
|
||||
package com.android.wm.shell.bubbles
|
||||
|
||||
import android.graphics.PointF
|
||||
import android.os.Handler
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles
|
||||
package com.android.wm.shell.bubbles
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
@@ -23,8 +23,8 @@ import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.TextView
|
||||
import com.android.internal.util.ContrastColorUtil
|
||||
import com.android.systemui.Interpolators
|
||||
import com.android.systemui.R
|
||||
import com.android.wm.shell.R
|
||||
import com.android.wm.shell.animation.Interpolators
|
||||
|
||||
/**
|
||||
* User education view to highlight the collapsed stack of bubbles.
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles.animation;
|
||||
package com.android.wm.shell.bubbles.animation;
|
||||
|
||||
import android.graphics.Matrix;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles.animation;
|
||||
package com.android.wm.shell.bubbles.animation;
|
||||
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
@@ -28,10 +28,10 @@ import androidx.annotation.Nullable;
|
||||
import androidx.dynamicanimation.animation.DynamicAnimation;
|
||||
import androidx.dynamicanimation.animation.SpringForce;
|
||||
|
||||
import com.android.systemui.Interpolators;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.bubbles.BubblePositioner;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.animation.Interpolators;
|
||||
import com.android.wm.shell.animation.PhysicsAnimator;
|
||||
import com.android.wm.shell.bubbles.BubblePositioner;
|
||||
import com.android.wm.shell.common.magnetictarget.MagnetizedObject;
|
||||
|
||||
import com.google.android.collect.Sets;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles.animation;
|
||||
package com.android.wm.shell.bubbles.animation;
|
||||
|
||||
import androidx.dynamicanimation.animation.DynamicAnimation;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles.animation;
|
||||
package com.android.wm.shell.bubbles.animation;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
@@ -35,7 +35,7 @@ import androidx.dynamicanimation.animation.DynamicAnimation;
|
||||
import androidx.dynamicanimation.animation.SpringAnimation;
|
||||
import androidx.dynamicanimation.animation.SpringForce;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.wm.shell.R;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles.animation;
|
||||
package com.android.wm.shell.bubbles.animation;
|
||||
|
||||
import android.content.ContentResolver;
|
||||
import android.content.res.Resources;
|
||||
@@ -34,11 +34,11 @@ import androidx.dynamicanimation.animation.FloatPropertyCompat;
|
||||
import androidx.dynamicanimation.animation.SpringAnimation;
|
||||
import androidx.dynamicanimation.animation.SpringForce;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.bubbles.BadgedImageView;
|
||||
import com.android.systemui.bubbles.BubblePositioner;
|
||||
import com.android.systemui.bubbles.BubbleStackView;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.animation.PhysicsAnimator;
|
||||
import com.android.wm.shell.bubbles.BadgedImageView;
|
||||
import com.android.wm.shell.bubbles.BubblePositioner;
|
||||
import com.android.wm.shell.bubbles.BubbleStackView;
|
||||
import com.android.wm.shell.common.FloatingContentCoordinator;
|
||||
import com.android.wm.shell.common.magnetictarget.MagnetizedObject;
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles.storage
|
||||
package com.android.wm.shell.bubbles.storage
|
||||
|
||||
import android.annotation.DimenRes
|
||||
import android.annotation.UserIdInt
|
||||
@@ -13,7 +13,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles.storage
|
||||
package com.android.wm.shell.bubbles.storage
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AtomicFile
|
||||
@@ -13,12 +13,12 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles.storage
|
||||
package com.android.wm.shell.bubbles.storage
|
||||
|
||||
import android.content.pm.LauncherApps
|
||||
import android.os.UserHandle
|
||||
import com.android.internal.annotations.VisibleForTesting
|
||||
import com.android.systemui.bubbles.ShortcutKey
|
||||
import com.android.wm.shell.bubbles.ShortcutKey
|
||||
|
||||
private const val CAPACITY = 16
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.systemui.bubbles.storage
|
||||
package com.android.wm.shell.bubbles.storage
|
||||
|
||||
import com.android.internal.util.FastXmlSerializer
|
||||
import org.xmlpull.v1.XmlSerializer
|
||||
import java.io.IOException
|
||||
import android.util.Xml
|
||||
import com.android.internal.util.FastXmlSerializer
|
||||
import com.android.internal.util.XmlUtils
|
||||
import org.xmlpull.v1.XmlPullParser
|
||||
import org.xmlpull.v1.XmlSerializer
|
||||
import java.io.IOException
|
||||
import java.io.InputStream
|
||||
import java.io.OutputStream
|
||||
import java.nio.charset.StandardCharsets
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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.wm.shell.common;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.Button;
|
||||
|
||||
/**
|
||||
* A Button which doesn't have overlapping drawing commands
|
||||
*
|
||||
* This is the copy from SystemUI/statusbar.
|
||||
*/
|
||||
public class AlphaOptimizedButton extends Button {
|
||||
public AlphaOptimizedButton(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public AlphaOptimizedButton(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
public AlphaOptimizedButton(Context context, AttributeSet attrs, int defStyleAttr) {
|
||||
super(context, attrs, defStyleAttr);
|
||||
}
|
||||
|
||||
public AlphaOptimizedButton(Context context, AttributeSet attrs, int defStyleAttr,
|
||||
int defStyleRes) {
|
||||
super(context, attrs, defStyleAttr, defStyleRes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasOverlappingRendering() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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.wm.shell.common;
|
||||
|
||||
import android.graphics.Outline;
|
||||
import android.graphics.Path;
|
||||
import android.graphics.drawable.shapes.PathShape;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
/**
|
||||
* Wrapper around {@link PathShape}
|
||||
* that creates a shape with a triangular path (pointing up or down).
|
||||
*
|
||||
* This is the copy from SystemUI/recents.
|
||||
*/
|
||||
public class TriangleShape extends PathShape {
|
||||
private Path mTriangularPath;
|
||||
|
||||
public TriangleShape(Path path, float stdWidth, float stdHeight) {
|
||||
super(path, stdWidth, stdHeight);
|
||||
mTriangularPath = path;
|
||||
}
|
||||
|
||||
public static TriangleShape create(float width, float height, boolean isPointingUp) {
|
||||
Path triangularPath = new Path();
|
||||
if (isPointingUp) {
|
||||
triangularPath.moveTo(0, height);
|
||||
triangularPath.lineTo(width, height);
|
||||
triangularPath.lineTo(width / 2, 0);
|
||||
triangularPath.close();
|
||||
} else {
|
||||
triangularPath.moveTo(0, 0);
|
||||
triangularPath.lineTo(width / 2, height);
|
||||
triangularPath.lineTo(width, 0);
|
||||
triangularPath.close();
|
||||
}
|
||||
return new TriangleShape(triangularPath, width, height);
|
||||
}
|
||||
|
||||
/** Create an arrow TriangleShape that points to the left or the right */
|
||||
public static TriangleShape createHorizontal(
|
||||
float width, float height, boolean isPointingLeft) {
|
||||
Path triangularPath = new Path();
|
||||
if (isPointingLeft) {
|
||||
triangularPath.moveTo(0, height / 2);
|
||||
triangularPath.lineTo(width, height);
|
||||
triangularPath.lineTo(width, 0);
|
||||
triangularPath.close();
|
||||
} else {
|
||||
triangularPath.moveTo(0, height);
|
||||
triangularPath.lineTo(width, height / 2);
|
||||
triangularPath.lineTo(0, 0);
|
||||
triangularPath.close();
|
||||
}
|
||||
return new TriangleShape(triangularPath, width, height);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getOutline(@NonNull Outline outline) {
|
||||
outline.setPath(mTriangularPath);
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,13 @@
|
||||
<application android:debuggable="true" android:largeHeap="true">
|
||||
<uses-library android:name="android.test.mock" />
|
||||
<uses-library android:name="android.test.runner" />
|
||||
|
||||
<activity android:name=".bubbles.BubblesTestActivity"
|
||||
android:allowEmbedded="true"
|
||||
android:documentLaunchMode="always"
|
||||
android:excludeFromRecents="true"
|
||||
android:exported="false"
|
||||
android:resizeableActivity="true" />
|
||||
</application>
|
||||
|
||||
<instrumentation
|
||||
|
||||
32
libs/WindowManager/Shell/tests/unittest/res/layout/main.xml
Normal file
32
libs/WindowManager/Shell/tests/unittest/res/layout/main.xml
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Copyright (C) 2020 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.
|
||||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent"
|
||||
>
|
||||
<TextView
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="this is a test activity"
|
||||
/>
|
||||
<EditText
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/editText1"
|
||||
android:layout_width="match_parent">
|
||||
<requestFocus></requestFocus>
|
||||
</EditText>
|
||||
</LinearLayout>
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.wm.shell.pip;
|
||||
package com.android.wm.shell;
|
||||
|
||||
import static android.view.Display.DEFAULT_DISPLAY;
|
||||
|
||||
@@ -24,17 +24,18 @@ import android.testing.TestableContext;
|
||||
|
||||
import androidx.test.InstrumentationRegistry;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
|
||||
/**
|
||||
* Base class that does One Handed specific setup.
|
||||
* Base class that does shell test case setup.
|
||||
*/
|
||||
public abstract class PipTestCase {
|
||||
public abstract class ShellTestCase {
|
||||
|
||||
protected TestableContext mContext;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
public void shellSetup() {
|
||||
final Context context =
|
||||
InstrumentationRegistry.getInstrumentation().getTargetContext();
|
||||
final DisplayManager dm = context.getSystemService(DisplayManager.class);
|
||||
@@ -47,6 +48,14 @@ public abstract class PipTestCase {
|
||||
.adoptShellPermissionIdentity();
|
||||
}
|
||||
|
||||
@After
|
||||
public void shellTearDown() {
|
||||
InstrumentationRegistry
|
||||
.getInstrumentation()
|
||||
.getUiAutomation()
|
||||
.dropShellPermissionIdentity();
|
||||
}
|
||||
|
||||
protected Context getContext() {
|
||||
return mContext;
|
||||
}
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell;
|
||||
|
||||
import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
|
||||
|
||||
@@ -30,7 +30,6 @@ import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.reset;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.app.ActivityOptions;
|
||||
@@ -45,8 +44,6 @@ import android.window.WindowContainerToken;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.wm.shell.ShellTaskOrganizer;
|
||||
import com.android.wm.shell.common.HandlerExecutor;
|
||||
|
||||
import org.junit.After;
|
||||
@@ -60,8 +57,7 @@ import org.mockito.invocation.InvocationOnMock;
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@TestableLooper.RunWithLooper(setAsMainLooper = true)
|
||||
// TODO: Place in com.android.wm.shell vs. com.android.wm.shell.bubbles on shell migration.
|
||||
public class TaskViewTest extends SysuiTestCase {
|
||||
public class TaskViewTest extends ShellTestCase {
|
||||
|
||||
@Mock
|
||||
TaskView.Listener mViewListener;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static com.google.common.truth.Truth.assertWithMessage;
|
||||
@@ -38,8 +38,8 @@ import android.util.Pair;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.bubbles.BubbleData.TimeSource;
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
import com.android.wm.shell.bubbles.BubbleData.TimeSource;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
@@ -63,7 +63,7 @@ import org.mockito.MockitoAnnotations;
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@TestableLooper.RunWithLooper(setAsMainLooper = true)
|
||||
public class BubbleDataTest extends SysuiTestCase {
|
||||
public class BubbleDataTest extends ShellTestCase {
|
||||
|
||||
private BubbleEntry mEntryA1;
|
||||
private BubbleEntry mEntryA2;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static junit.framework.Assert.assertEquals;
|
||||
import static junit.framework.Assert.assertNotSame;
|
||||
@@ -30,8 +30,8 @@ import android.widget.TextView;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -42,7 +42,7 @@ import org.mockito.MockitoAnnotations;
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@TestableLooper.RunWithLooper(setAsMainLooper = true)
|
||||
public class BubbleFlyoutViewTest extends SysuiTestCase {
|
||||
public class BubbleFlyoutViewTest extends ShellTestCase {
|
||||
private BubbleFlyoutView mFlyout;
|
||||
private TextView mFlyoutText;
|
||||
private TextView mSenderName;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles;
|
||||
package com.android.wm.shell.bubbles;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
@@ -37,8 +37,8 @@ import android.testing.TestableLooper;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -49,7 +49,7 @@ import org.mockito.MockitoAnnotations;
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@TestableLooper.RunWithLooper
|
||||
public class BubbleTest extends SysuiTestCase {
|
||||
public class BubbleTest extends ShellTestCase {
|
||||
@Mock
|
||||
private Notification mNotif;
|
||||
@Mock
|
||||
@@ -72,7 +72,7 @@ public class BubbleTest extends SysuiTestCase {
|
||||
Intent target = new Intent(mContext, BubblesTestActivity.class);
|
||||
Notification.BubbleMetadata metadata = new Notification.BubbleMetadata.Builder(
|
||||
PendingIntent.getActivity(mContext, 0, target, 0),
|
||||
Icon.createWithResource(mContext, R.drawable.android))
|
||||
Icon.createWithResource(mContext, R.drawable.bubble_ic_create_bubble))
|
||||
.build();
|
||||
when(mSbn.getNotification()).thenReturn(mNotif);
|
||||
when(mNotif.getBubbleMetadata()).thenReturn(metadata);
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (C) 2020 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.wm.shell.bubbles;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.android.wm.shell.R;
|
||||
|
||||
/**
|
||||
* Referenced by NotificationTestHelper#makeBubbleMetadata
|
||||
*/
|
||||
public class BubblesTestActivity extends Activity {
|
||||
|
||||
public static final String BUBBLE_ACTIVITY_OPENED = "BUBBLE_ACTIVITY_OPENED";
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.main);
|
||||
|
||||
Intent i = new Intent(BUBBLE_ACTIVITY_OPENED);
|
||||
sendBroadcast(i);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles.animation;
|
||||
package com.android.wm.shell.bubbles.animation;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.Mockito.mock;
|
||||
@@ -34,8 +34,8 @@ import android.widget.FrameLayout;
|
||||
import androidx.dynamicanimation.animation.DynamicAnimation;
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.bubbles.BubblePositioner;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.bubbles.BubblePositioner;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles.animation;
|
||||
package com.android.wm.shell.bubbles.animation;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles.animation;
|
||||
package com.android.wm.shell.bubbles.animation;
|
||||
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@@ -30,8 +30,8 @@ import android.widget.FrameLayout;
|
||||
import androidx.dynamicanimation.animation.DynamicAnimation;
|
||||
import androidx.dynamicanimation.animation.SpringForce;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.mockito.Mock;
|
||||
@@ -50,7 +50,7 @@ import java.util.concurrent.TimeUnit;
|
||||
*
|
||||
* See physics-animation-testing.md.
|
||||
*/
|
||||
public class PhysicsAnimationLayoutTestCase extends SysuiTestCase {
|
||||
public class PhysicsAnimationLayoutTestCase extends ShellTestCase {
|
||||
TestablePhysicsAnimationLayout mLayout;
|
||||
List<View> mViews = new ArrayList<>();
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2019 The Android Open Source Project
|
||||
* Copyright (C) 2020 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.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles.animation;
|
||||
package com.android.wm.shell.bubbles.animation;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
@@ -33,8 +33,8 @@ import androidx.dynamicanimation.animation.DynamicAnimation;
|
||||
import androidx.dynamicanimation.animation.SpringForce;
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.bubbles.BubblePositioner;
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.bubbles.BubblePositioner;
|
||||
import com.android.wm.shell.common.FloatingContentCoordinator;
|
||||
|
||||
import org.junit.Before;
|
||||
@@ -14,11 +14,11 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles.storage
|
||||
package com.android.wm.shell.bubbles.storage
|
||||
|
||||
import android.testing.AndroidTestingRunner
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.wm.shell.ShellTestCase
|
||||
import junit.framework.Assert.assertEquals
|
||||
import junit.framework.Assert.assertNotNull
|
||||
import junit.framework.Assert.assertTrue
|
||||
@@ -28,7 +28,7 @@ import org.junit.runner.RunWith
|
||||
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner::class)
|
||||
class BubblePersistentRepositoryTest : SysuiTestCase() {
|
||||
class BubblePersistentRepositoryTest : ShellTestCase() {
|
||||
|
||||
private val bubbles = listOf(
|
||||
BubbleEntity(0, "com.example.messenger", "shortcut-1", "key-1", 120, 0),
|
||||
@@ -14,14 +14,14 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles.storage
|
||||
package com.android.wm.shell.bubbles.storage
|
||||
|
||||
import android.content.pm.LauncherApps
|
||||
import android.os.UserHandle
|
||||
import android.testing.AndroidTestingRunner
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.systemui.util.mockito.eq
|
||||
import com.android.wm.shell.ShellTestCase
|
||||
import junit.framework.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
@@ -32,7 +32,7 @@ import org.mockito.Mockito.verifyNoMoreInteractions
|
||||
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner::class)
|
||||
class BubbleVolatileRepositoryTest : SysuiTestCase() {
|
||||
class BubbleVolatileRepositoryTest : ShellTestCase() {
|
||||
|
||||
private val user0 = UserHandle.of(0)
|
||||
private val user10 = UserHandle.of(10)
|
||||
@@ -14,11 +14,11 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.android.systemui.bubbles.storage
|
||||
package com.android.wm.shell.bubbles.storage
|
||||
|
||||
import android.testing.AndroidTestingRunner
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.systemui.SysuiTestCase
|
||||
import com.android.wm.shell.ShellTestCase
|
||||
import junit.framework.Assert.assertEquals
|
||||
import junit.framework.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
@@ -28,7 +28,7 @@ import java.io.ByteArrayOutputStream
|
||||
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner::class)
|
||||
class BubbleXmlHelperTest : SysuiTestCase() {
|
||||
class BubbleXmlHelperTest : ShellTestCase() {
|
||||
|
||||
private val bubbles = listOf(
|
||||
BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0),
|
||||
@@ -32,9 +32,7 @@ import android.view.SurfaceControl;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.wm.shell.pip.PipAnimationController;
|
||||
import com.android.wm.shell.pip.PipSurfaceTransactionHelper;
|
||||
import com.android.wm.shell.pip.PipTestCase;
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -49,7 +47,7 @@ import org.mockito.MockitoAnnotations;
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@SmallTest
|
||||
@TestableLooper.RunWithLooper(setAsMainLooper = true)
|
||||
public class PipAnimationControllerTest extends PipTestCase {
|
||||
public class PipAnimationControllerTest extends ShellTestCase {
|
||||
|
||||
private PipAnimationController mPipAnimationController;
|
||||
|
||||
|
||||
@@ -30,8 +30,7 @@ import android.view.Gravity;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.wm.shell.pip.PipBoundsHandler;
|
||||
import com.android.wm.shell.pip.PipTestCase;
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -46,7 +45,7 @@ import org.junit.runner.RunWith;
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@SmallTest
|
||||
@TestableLooper.RunWithLooper(setAsMainLooper = true)
|
||||
public class PipBoundsHandlerTest extends PipTestCase {
|
||||
public class PipBoundsHandlerTest extends ShellTestCase {
|
||||
private static final int ROUNDING_ERROR_MARGIN = 16;
|
||||
private static final float ASPECT_RATIO_ERROR_MARGIN = 0.01f;
|
||||
private static final float DEFAULT_ASPECT_RATIO = 1f;
|
||||
|
||||
@@ -28,6 +28,8 @@ import android.util.Size;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -38,7 +40,7 @@ import org.junit.runner.RunWith;
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@TestableLooper.RunWithLooper
|
||||
@SmallTest
|
||||
public class PipBoundsStateTest extends PipTestCase {
|
||||
public class PipBoundsStateTest extends ShellTestCase {
|
||||
|
||||
private static final Rect DEFAULT_BOUNDS = new Rect(0, 0, 10, 10);
|
||||
private static final float DEFAULT_SNAP_FRACTION = 1.0f;
|
||||
|
||||
@@ -40,6 +40,7 @@ import android.view.DisplayInfo;
|
||||
import android.window.WindowContainerToken;
|
||||
|
||||
import com.android.wm.shell.ShellTaskOrganizer;
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
import com.android.wm.shell.common.DisplayController;
|
||||
import com.android.wm.shell.pip.phone.PipMenuActivityController;
|
||||
import com.android.wm.shell.splitscreen.SplitScreen;
|
||||
@@ -58,7 +59,7 @@ import java.util.Optional;
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@TestableLooper.RunWithLooper
|
||||
public class PipTaskOrganizerTest extends PipTestCase {
|
||||
public class PipTaskOrganizerTest extends ShellTestCase {
|
||||
private PipTaskOrganizer mSpiedPipTaskOrganizer;
|
||||
|
||||
@Mock private DisplayController mMockdDisplayController;
|
||||
|
||||
@@ -35,6 +35,7 @@ import android.test.suitebuilder.annotation.SmallTest;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
import android.testing.TestableLooper;
|
||||
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
import com.android.wm.shell.WindowManagerShellWrapper;
|
||||
import com.android.wm.shell.common.DisplayController;
|
||||
import com.android.wm.shell.common.ShellExecutor;
|
||||
@@ -42,7 +43,6 @@ import com.android.wm.shell.pip.PipBoundsHandler;
|
||||
import com.android.wm.shell.pip.PipBoundsState;
|
||||
import com.android.wm.shell.pip.PipMediaController;
|
||||
import com.android.wm.shell.pip.PipTaskOrganizer;
|
||||
import com.android.wm.shell.pip.PipTestCase;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -56,7 +56,7 @@ import org.mockito.MockitoAnnotations;
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@TestableLooper.RunWithLooper
|
||||
public class PipControllerTest extends PipTestCase {
|
||||
public class PipControllerTest extends ShellTestCase {
|
||||
private PipController mPipController;
|
||||
|
||||
@Mock private DisplayController mMockDisplayController;
|
||||
|
||||
@@ -31,17 +31,13 @@ import android.util.Size;
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.wm.shell.R;
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
import com.android.wm.shell.common.FloatingContentCoordinator;
|
||||
import com.android.wm.shell.pip.PipBoundsHandler;
|
||||
import com.android.wm.shell.pip.PipBoundsState;
|
||||
import com.android.wm.shell.pip.PipSnapAlgorithm;
|
||||
import com.android.wm.shell.pip.PipTaskOrganizer;
|
||||
import com.android.wm.shell.pip.PipTestCase;
|
||||
import com.android.wm.shell.pip.PipUiEventLogger;
|
||||
import com.android.wm.shell.pip.phone.PipMenuActivityController;
|
||||
import com.android.wm.shell.pip.phone.PipMotionHelper;
|
||||
import com.android.wm.shell.pip.phone.PipResizeGestureHandler;
|
||||
import com.android.wm.shell.pip.phone.PipTouchHandler;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -59,7 +55,7 @@ import org.mockito.MockitoAnnotations;
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@SmallTest
|
||||
@TestableLooper.RunWithLooper(setAsMainLooper = true)
|
||||
public class PipTouchHandlerTest extends PipTestCase {
|
||||
public class PipTouchHandlerTest extends ShellTestCase {
|
||||
|
||||
private PipTouchHandler mPipTouchHandler;
|
||||
|
||||
|
||||
@@ -35,8 +35,7 @@ import android.view.ViewConfiguration;
|
||||
|
||||
import androidx.test.filters.SmallTest;
|
||||
|
||||
import com.android.wm.shell.pip.PipTestCase;
|
||||
import com.android.wm.shell.pip.phone.PipTouchState;
|
||||
import com.android.wm.shell.ShellTestCase;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
@@ -47,7 +46,7 @@ import java.util.concurrent.CountDownLatch;
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@SmallTest
|
||||
@RunWithLooper
|
||||
public class PipTouchStateTest extends PipTestCase {
|
||||
public class PipTouchStateTest extends ShellTestCase {
|
||||
|
||||
private PipTouchState mTouchState;
|
||||
private CountDownLatch mDoubleTapCallbackTriggeredLatch;
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package com.android.systemui;
|
||||
|
||||
import com.android.systemui.biometrics.AuthController;
|
||||
import com.android.systemui.bubbles.dagger.BubbleModule;
|
||||
import com.android.systemui.car.navigationbar.CarNavigationBar;
|
||||
import com.android.systemui.car.notification.CarNotificationModule;
|
||||
import com.android.systemui.car.sideloaded.SideLoadedAppController;
|
||||
@@ -48,8 +47,7 @@ import dagger.multibindings.IntoMap;
|
||||
|
||||
/** Binder for car specific {@link SystemUI} modules. */
|
||||
@Module(includes = {RecentsModule.class, StatusBarModule.class, NotificationsModule.class,
|
||||
BubbleModule.class, KeyguardModule.class, OverlayWindowModule.class,
|
||||
CarNotificationModule.class})
|
||||
KeyguardModule.class, OverlayWindowModule.class, CarNotificationModule.class})
|
||||
public abstract class CarSystemUIBinder {
|
||||
/** Inject into AuthController. */
|
||||
@Binds
|
||||
|
||||
@@ -352,7 +352,7 @@
|
||||
android:exported="true" />
|
||||
|
||||
<activity
|
||||
android:name=".bubbles.BubbleOverflowActivity"
|
||||
android:name="com.android.wm.shell.bubbles.BubbleOverflowActivity"
|
||||
android:theme="@style/BubbleOverflow"
|
||||
android:excludeFromRecents="true"
|
||||
android:documentLaunchMode="always"
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
<!--
|
||||
Copyright (C) 2019 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.
|
||||
-->
|
||||
<!--
|
||||
The transparent circle outline that encircles the bubbles when they're in the dismiss target.
|
||||
-->
|
||||
<shape
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
|
||||
<stroke
|
||||
android:width="1dp"
|
||||
android:color="#66FFFFFF" />
|
||||
|
||||
<solid android:color="#B3000000" />
|
||||
</shape>
|
||||
@@ -1,25 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2019 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="20dp"
|
||||
android:height="20dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M23,5v8h-2V5H3v14h10v2v0H3c-1.1,0 -2,-0.9 -2,-2V5c0,-1.1 0.9,-2 2,-2h18C22.1,3 23,3.9 23,5zM10,8v2.59L5.71,6.29L4.29,7.71L8.59,12H6v2h6V8H10zM19,15c-1.66,0 -3,1.34 -3,3s1.34,3 3,3s3,-1.34 3,-3S20.66,15 19,15z"/>
|
||||
</vector>
|
||||
@@ -1,25 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2020 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.
|
||||
-->
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="20dp"
|
||||
android:height="20dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FF000000"
|
||||
android:pathData="M11.29,14.71L7,10.41V13H5V7h6v2H8.41l4.29,4.29L11.29,14.71zM21,3H3C1.9,3 1,3.9 1,5v14c0,1.1 0.9,2 2,2h10v0v-2H3V5h18v8h2V5C23,3.9 22.1,3 21,3zM19,15c-1.66,0 -3,1.34 -3,3s1.34,3 3,3s3,-1.34 3,-3S20.66,15 19,15z"/>
|
||||
</vector>
|
||||
@@ -36,10 +36,6 @@
|
||||
<dimen name="volume_tool_tip_right_margin">136dp</dimen>
|
||||
<dimen name="volume_tool_tip_top_margin">12dp</dimen>
|
||||
|
||||
<!-- Padding between status bar and bubbles when displayed in expanded state, smaller
|
||||
value in landscape since we have limited vertical space-->
|
||||
<dimen name="bubble_padding_top">4dp</dimen>
|
||||
|
||||
<dimen name="controls_activity_view_top_offset">25dp</dimen>
|
||||
|
||||
<dimen name="biometric_dialog_button_negative_max_width">140dp</dimen>
|
||||
|
||||
@@ -204,10 +204,6 @@
|
||||
<color name="global_screenshot_dismiss_foreground">@color/GM2_grey_500</color>
|
||||
<color name="global_screenshot_background_protection_start">#40000000</color> <!-- 25% black -->
|
||||
|
||||
<!-- Bubbles -->
|
||||
<color name="bubbles_light">#FFFFFF</color>
|
||||
<color name="bubbles_dark">@color/GM2_grey_800</color>
|
||||
|
||||
<!-- GM2 colors -->
|
||||
<color name="GM2_grey_50">#F8F9FA</color>
|
||||
<color name="GM2_grey_100">#F1F3F4</color>
|
||||
|
||||
@@ -1159,90 +1159,6 @@
|
||||
<!-- Radius of Ongoing App Ops chip corners -->
|
||||
<dimen name="ongoing_appops_chip_bg_corner_radius">16dp</dimen>
|
||||
|
||||
|
||||
<!-- How much each bubble is elevated. -->
|
||||
<dimen name="bubble_elevation">1dp</dimen>
|
||||
<!-- How much the bubble flyout text container is elevated. -->
|
||||
<dimen name="bubble_flyout_elevation">4dp</dimen>
|
||||
<!-- How much padding is around the left and right sides of the flyout text. -->
|
||||
<dimen name="bubble_flyout_padding_x">12dp</dimen>
|
||||
<!-- How much padding is around the top and bottom of the flyout text. -->
|
||||
<dimen name="bubble_flyout_padding_y">10dp</dimen>
|
||||
<!-- Size of the triangle that points from the flyout to the bubble stack. -->
|
||||
<dimen name="bubble_flyout_pointer_size">6dp</dimen>
|
||||
<!-- How much space to leave between the flyout (tip of the arrow) and the bubble stack. -->
|
||||
<dimen name="bubble_flyout_space_from_bubble">8dp</dimen>
|
||||
<!-- How much space to leave between the flyout text and the avatar displayed in the flyout. -->
|
||||
<dimen name="bubble_flyout_avatar_message_space">6dp</dimen>
|
||||
<!-- Padding between status bar and bubbles when displayed in expanded state -->
|
||||
<dimen name="bubble_padding_top">16dp</dimen>
|
||||
<!-- Size of individual bubbles. -->
|
||||
<dimen name="individual_bubble_size">60dp</dimen>
|
||||
<!-- Size of bubble bitmap. -->
|
||||
<dimen name="bubble_bitmap_size">52dp</dimen>
|
||||
<!-- Size of bubble icon bitmap. -->
|
||||
<dimen name="bubble_overflow_icon_bitmap_size">24dp</dimen>
|
||||
<!-- Extra padding added to the touchable rect for bubbles so they are easier to grab. -->
|
||||
<dimen name="bubble_touch_padding">12dp</dimen>
|
||||
<!-- Size of the circle around the bubbles when they're in the dismiss target. -->
|
||||
<dimen name="bubble_dismiss_encircle_size">52dp</dimen>
|
||||
<!-- Padding around the view displayed when the bubble is expanded -->
|
||||
<dimen name="bubble_expanded_view_padding">4dp</dimen>
|
||||
<!-- This should be at least the size of bubble_expanded_view_padding; it is used to include
|
||||
a slight touch slop around the expanded view. -->
|
||||
<dimen name="bubble_expanded_view_slop">8dp</dimen>
|
||||
<!-- Default (and minimum) height of the expanded view shown when the bubble is expanded -->
|
||||
<dimen name="bubble_expanded_default_height">180dp</dimen>
|
||||
<!-- Default height of bubble overflow -->
|
||||
<dimen name="bubble_overflow_height">480dp</dimen>
|
||||
<!-- Bubble overflow padding when there are no bubbles -->
|
||||
<dimen name="bubble_overflow_empty_state_padding">16dp</dimen>
|
||||
<!-- Padding of container for overflow bubbles -->
|
||||
<dimen name="bubble_overflow_padding">15dp</dimen>
|
||||
<!-- Padding of label for bubble overflow view -->
|
||||
<dimen name="bubble_overflow_text_padding">7dp</dimen>
|
||||
<!-- Height of bubble overflow empty state illustration -->
|
||||
<dimen name="bubble_empty_overflow_image_height">200dp</dimen>
|
||||
<!-- Padding of bubble overflow empty state subtitle -->
|
||||
<dimen name="bubble_empty_overflow_subtitle_padding">50dp</dimen>
|
||||
<!-- Height of the triangle that points to the expanded bubble -->
|
||||
<dimen name="bubble_pointer_height">8dp</dimen>
|
||||
<!-- Width of the triangle that points to the expanded bubble -->
|
||||
<dimen name="bubble_pointer_width">12dp</dimen>
|
||||
<!-- Extra padding around the dismiss target for bubbles -->
|
||||
<dimen name="bubble_dismiss_slop">16dp</dimen>
|
||||
<!-- Height of button allowing users to adjust settings for bubbles. -->
|
||||
<dimen name="bubble_manage_button_height">48dp</dimen>
|
||||
<!-- Max width of the message bubble-->
|
||||
<dimen name="bubble_message_max_width">144dp</dimen>
|
||||
<!-- Min width of the message bubble -->
|
||||
<dimen name="bubble_message_min_width">32dp</dimen>
|
||||
<!-- Interior padding of the message bubble -->
|
||||
<dimen name="bubble_message_padding">4dp</dimen>
|
||||
<!-- Offset between bubbles in their stacked position. -->
|
||||
<dimen name="bubble_stack_offset">10dp</dimen>
|
||||
<!-- Offset between stack y and animation y for bubble swap. -->
|
||||
<dimen name="bubble_swap_animation_offset">15dp</dimen>
|
||||
<!-- How far offscreen the bubble stack rests. Cuts off padding and part of icon bitmap. -->
|
||||
<dimen name="bubble_stack_offscreen">9dp</dimen>
|
||||
<!-- How far down the screen the stack starts. -->
|
||||
<dimen name="bubble_stack_starting_offset_y">120dp</dimen>
|
||||
<!-- Space between the pointer triangle and the bubble expanded view -->
|
||||
<dimen name="bubble_pointer_margin">8dp</dimen>
|
||||
<!-- Padding applied to the bubble dismiss target. Touches in this padding cause the bubbles to
|
||||
snap to the dismiss target. -->
|
||||
<dimen name="bubble_dismiss_target_padding_x">40dp</dimen>
|
||||
<dimen name="bubble_dismiss_target_padding_y">20dp</dimen>
|
||||
<dimen name="bubble_manage_menu_elevation">4dp</dimen>
|
||||
|
||||
<!-- Bubbles user education views -->
|
||||
<dimen name="bubbles_manage_education_width">160dp</dimen>
|
||||
<!-- The inset from the top bound of the manage button to place the user education. -->
|
||||
<dimen name="bubbles_manage_education_top_inset">65dp</dimen>
|
||||
<!-- Size of padding for the user education cling, this should at minimum be larger than
|
||||
individual_bubble_size + some padding. -->
|
||||
<dimen name="bubble_stack_user_education_side_inset">72dp</dimen>
|
||||
|
||||
<!-- Size of the RAT type for CellularTile -->
|
||||
<dimen name="celltile_rat_type_size">10sp</dimen>
|
||||
|
||||
|
||||
@@ -130,12 +130,6 @@
|
||||
<item type="id" name="action_snooze_assistant_suggestion_1"/>
|
||||
<item type="id" name="action_snooze"/>
|
||||
|
||||
<!-- Accessibility actions for bubbles. -->
|
||||
<item type="id" name="action_move_top_left"/>
|
||||
<item type="id" name="action_move_top_right"/>
|
||||
<item type="id" name="action_move_bottom_left"/>
|
||||
<item type="id" name="action_move_bottom_right"/>
|
||||
|
||||
<!-- For StatusIconContainer to tag its icon views -->
|
||||
<item type="id" name="status_bar_view_state_tag" />
|
||||
|
||||
@@ -146,17 +140,6 @@
|
||||
<!-- Optional cancel button on Keyguard -->
|
||||
<item type="id" name="cancel_button"/>
|
||||
|
||||
<!-- For saving PhysicsAnimationLayout animations/animators as view tags. -->
|
||||
<item type="id" name="translation_x_dynamicanimation_tag"/>
|
||||
<item type="id" name="translation_y_dynamicanimation_tag"/>
|
||||
<item type="id" name="translation_z_dynamicanimation_tag"/>
|
||||
<item type="id" name="alpha_dynamicanimation_tag"/>
|
||||
<item type="id" name="scale_x_dynamicanimation_tag"/>
|
||||
<item type="id" name="scale_y_dynamicanimation_tag"/>
|
||||
<item type="id" name="physics_animator_tag"/>
|
||||
<item type="id" name="target_animator_tag" />
|
||||
<item type="id" name="reorder_animator_tag"/>
|
||||
|
||||
<!-- Global Actions Menu -->
|
||||
<item type="id" name="global_actions_view" />
|
||||
|
||||
|
||||
@@ -22,17 +22,6 @@
|
||||
<integer name="qs_footer_actions_width">0</integer>
|
||||
<integer name="qs_footer_actions_weight">1</integer>
|
||||
|
||||
<!-- Maximum number of bubbles to render and animate at one time. While the animations used are
|
||||
lightweight translation animations, this number can be reduced on lower end devices if any
|
||||
performance issues arise. -->
|
||||
<integer name="bubbles_max_rendered">5</integer>
|
||||
|
||||
<!-- Number of columns in bubble overflow. -->
|
||||
<integer name="bubbles_overflow_columns">4</integer>
|
||||
|
||||
<!-- Maximum number of bubbles we allow in overflow before we dismiss the oldest one. -->
|
||||
<integer name="bubbles_max_overflow">16</integer>
|
||||
|
||||
<integer name="magnification_default_scale">2</integer>
|
||||
|
||||
<!-- The position of the volume dialog on the screen.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user