Merge "Revert "ApnSettingsActivity shows the ActionBar"" into main
diff --git a/Android.bp b/Android.bp
index b716117..8a86d67 100644
--- a/Android.bp
+++ b/Android.bp
@@ -84,6 +84,7 @@
"net-utils-framework-common",
"notification_flags_lib",
"securebox",
+ "android.os.flags-aconfig-java",
// Settings dependencies
"FingerprintManagerInteractor",
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 19e774c..923f5ae 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -1790,12 +1790,6 @@
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
- <intent-filter android:priority="1">
- <action android:name="android.settings.BACKGROUND_RESTRICTIONS_SETTINGS" />
- <category android:name="android.intent.category.BROWSABLE" />
- <category android:name="android.intent.category.DEFAULT" />
- <data android:scheme="package" />
- </intent-filter>
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.applications.manageapplications.ManageApplications" />
<meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
diff --git a/res/drawable/ic_private_space_unlock_icon.xml b/res/drawable/ic_private_space_unlock_icon.xml
new file mode 100644
index 0000000..0ea9488
--- /dev/null
+++ b/res/drawable/ic_private_space_unlock_icon.xml
@@ -0,0 +1,25 @@
+<!--
+ ~ Copyright (C) 2024 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"
+ android:viewportHeight="24">
+ <path
+ android:pathData="M6,20H18V10H6V20ZM12,17C12.55,17 13.017,16.808 13.4,16.425C13.8,16.025 14,15.55 14,15C14,14.45 13.8,13.983 13.4,13.6C13.017,13.2 12.55,13 12,13C11.45,13 10.975,13.2 10.575,13.6C10.192,13.983 10,14.45 10,15C10,15.55 10.192,16.025 10.575,16.425C10.975,16.808 11.45,17 12,17ZM6,20V10V20ZM6,22C5.45,22 4.975,21.808 4.575,21.425C4.192,21.025 4,20.55 4,20V10C4,9.45 4.192,8.983 4.575,8.6C4.975,8.2 5.45,8 6,8H13V6C13,4.617 13.483,3.442 14.45,2.475C15.433,1.492 16.617,1 18,1C19.383,1 20.558,1.492 21.525,2.475C22.508,3.442 23,4.617 23,6H21C21,5.167 20.708,4.458 20.125,3.875C19.542,3.292 18.833,3 18,3C17.167,3 16.458,3.292 15.875,3.875C15.292,4.458 15,5.167 15,6V8H18C18.55,8 19.017,8.2 19.4,8.6C19.8,8.983 20,9.45 20,10V20C20,20.55 19.8,21.025 19.4,21.425C19.017,21.808 18.55,22 18,22H6Z"
+ android:fillColor="?android:attr/colorAccent"/>
+</vector>
diff --git a/res/layout/accessibility_color_contrast_preview.xml b/res/layout/accessibility_color_contrast_preview.xml
index 44f7584..1603549 100644
--- a/res/layout/accessibility_color_contrast_preview.xml
+++ b/res/layout/accessibility_color_contrast_preview.xml
@@ -21,17 +21,17 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:background="@drawable/color_contrast_preview_background"
+ android:importantForAccessibility="no"
android:paddingLeft="24dp"
android:paddingRight="24dp"
- android:paddingBottom="24dp"
- android:background="@drawable/color_contrast_preview_background">
+ android:paddingBottom="24dp">
<View
android:id="@+id/preview_background"
- android:background="?androidprv:attr/materialColorSurface"
android:layout_width="0dp"
android:layout_height="0dp"
-
+ android:background="?androidprv:attr/materialColorSurface"
app:layout_constraintBottom_toTopOf="@+id/bottom_appbar_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
@@ -41,21 +41,20 @@
android:id="@+id/preview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:gravity="center_horizontal"
android:layout_margin="8dp"
+ android:gravity="center_horizontal"
+ android:text="@string/color_contrast_preview"
+ android:textColor="?androidprv:attr/textColorPrimary"
android:textSize="14sp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
- app:layout_constraintTop_toTopOf="parent"
- android:textColor="?androidprv:attr/textColorPrimary"
- android:text="@string/color_contrast_preview" />
+ app:layout_constraintTop_toTopOf="parent" />
<View
android:id="@+id/email_background"
android:layout_width="0dp"
android:layout_height="0dp"
- android:layout_marginLeft="12dp"
- android:layout_marginRight="12dp"
+ android:layout_marginHorizontal="12dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="24dp"
android:background="@drawable/color_contrast_preview_dialog_background"
@@ -66,88 +65,137 @@
<ImageView
android:id="@+id/ic_group"
- android:contentDescription="@null"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginStart="14dp"
android:layout_marginTop="14dp"
- android:layout_marginLeft="14dp"
+ android:background="@drawable/color_contrast_preview_icon_group_background"
+ android:contentDescription="@null"
android:padding="8dp"
android:src="@drawable/ic_group_24dp"
- android:background="@drawable/color_contrast_preview_icon_group_background"
app:layout_constraintStart_toStartOf="@+id/email_background"
app:layout_constraintTop_toTopOf="@+id/email_background" />
- <TextView
- android:id="@+id/sender_name"
- android:layout_width="wrap_content"
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:id="@+id/email_header"
+ android:layout_width="0dp"
android:layout_height="wrap_content"
- android:layout_marginLeft="8dp"
+ android:layout_marginEnd="10dp"
+ android:layout_marginStart="8dp"
android:layout_marginTop="17dp"
- android:textColor="?androidprv:attr/materialColorOnSurface"
- android:textSize="12sp"
- app:layout_constraintStart_toEndOf="@+id/ic_group"
- app:layout_constraintTop_toTopOf="@+id/email_background"
- android:text="@string/color_contrast_preview_sender_name" />
+ app:layout_constrainedWidth="true"
+ app:layout_constraintEnd_toStartOf="@+id/ic_star"
+ app:layout_constraintStart_toEndOf="@id/ic_group"
+ app:layout_constraintTop_toTopOf="@+id/email_background">
+
+ <TextView
+ android:id="@+id/sender_name"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:paddingEnd="10dp"
+ android:text="@string/color_contrast_preview_sender_name"
+ android:textColor="?androidprv:attr/materialColorOnSurface"
+ android:textSize="12sp"
+ app:layout_constraintEnd_toStartOf="@+id/email_tag"
+ app:layout_constraintHorizontal_bias="0"
+ app:layout_constraintHorizontal_chainStyle="packed"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintWidth_default="percent"
+ app:layout_constraintWidth_max="wrap"
+ app:layout_constraintWidth_percent="0.5" />
+
+ <TextView
+ android:id="@+id/email_tag"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:background="@drawable/color_contrast_preview_tag_background"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:paddingHorizontal="4dp"
+ android:text="@string/color_contrast_preview_email_badge"
+ android:textColor="?androidprv:attr/materialColorOnSurface"
+ android:textSize="11sp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toEndOf="@+id/sender_name"
+ app:layout_constraintTop_toTopOf="@+id/sender_name"
+ app:layout_constraintWidth_default="percent"
+ app:layout_constraintWidth_max="wrap"
+ app:layout_constraintWidth_percent="0.5" />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:text="@string/color_contrast_preview_email_send_date"
android:textColor="?androidprv:attr/materialColorOnSurfaceVariant"
android:textSize="11sp"
- app:layout_constraintStart_toStartOf="@+id/sender_name"
- app:layout_constraintTop_toBottomOf="@+id/sender_name"
- android:text="@string/color_contrast_preview_email_send_date" />
-
- <TextView
- android:id="@+id/email_tag"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="10dp"
- android:paddingHorizontal="4dp"
- android:textColor="?androidprv:attr/materialColorOnSurface"
- android:background="@drawable/color_contrast_preview_tag_background"
- android:textSize="11sp"
- app:layout_constraintStart_toEndOf="@+id/sender_name"
- app:layout_constraintTop_toTopOf="@+id/sender_name"
- android:text="@string/color_contrast_preview_email_badge" />
+ app:layout_constrainedWidth="true"
+ app:layout_constraintEnd_toEndOf="@+id/email_background"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toStartOf="@+id/email_header"
+ app:layout_constraintTop_toBottomOf="@+id/email_header" />
<ImageView
android:id="@+id/ic_star"
- android:contentDescription="@null"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="14dp"
- android:layout_marginRight="14dp"
+ android:layout_marginEnd="14dp"
+ android:background="@drawable/color_contrast_preview_icon_star_background"
+ android:contentDescription="@null"
android:padding="8dp"
android:src="@drawable/ic_star_24dp"
- android:background="@drawable/color_contrast_preview_icon_star_background"
app:layout_constraintEnd_toEndOf="@+id/email_background"
app:layout_constraintTop_toTopOf="@+id/email_background" />
+ <View
+ android:id="@+id/email_main_background"
+ android:layout_width="0dp"
+ android:layout_height="0dp"
+ android:layout_marginHorizontal="14dp"
+ app:layout_constraintBottom_toBottomOf="@+id/email_background"
+ app:layout_constraintEnd_toEndOf="@+id/email_background"
+ app:layout_constraintStart_toStartOf="@+id/email_background"
+ app:layout_constraintTop_toBottomOf="@+id/date" />
+
<TextView
android:id="@+id/email_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginLeft="14dp"
- android:layout_marginTop="62dp"
+ android:layout_marginTop="10dp"
+ android:ellipsize="end"
+ android:maxLines="1"
+ android:text="@string/color_contrast_preview_email_title"
android:textColor="?androidprv:attr/materialColorOnSurface"
android:textSize="16sp"
- app:layout_constraintStart_toStartOf="@+id/email_background"
- app:layout_constraintTop_toTopOf="@+id/email_background"
- android:text="@string/color_contrast_preview_email_title" />
+ app:layout_constrainedWidth="true"
+ app:layout_constraintEnd_toEndOf="@+id/email_main_background"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toStartOf="@+id/email_main_background"
+ app:layout_constraintTop_toTopOf="@+id/email_main_background" />
<TextView
android:id="@+id/email_body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:ellipsize="end"
+ android:maxLines="2"
+ android:paddingBottom="8dp"
+ android:text="@string/color_contrast_preview_email_body"
android:textColor="?androidprv:attr/materialColorOnSurfaceVariant"
android:textSize="12sp"
- android:paddingBottom="8dp"
- android:maxLines="2"
+ app:layout_constrainedWidth="true"
+ app:layout_constraintEnd_toEndOf="@+id/email_main_background"
+ app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/email_title"
- app:layout_constraintTop_toBottomOf="@+id/email_title"
- android:text="@string/color_contrast_preview_email_body" />
+ app:layout_constraintTop_toBottomOf="@+id/email_title" />
<View
android:id="@+id/attachment_background"
@@ -161,13 +209,13 @@
<ImageView
android:id="@+id/ic_article_filled"
- android:contentDescription="@null"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:src="@drawable/ic_article_filled_24dp"
+ android:contentDescription="@null"
+ android:paddingVertical="6dp"
android:paddingStart="8dp"
android:paddingEnd="6dp"
- android:paddingVertical="6dp"
+ android:src="@drawable/ic_article_filled_24dp"
app:layout_constraintStart_toStartOf="@+id/email_title"
app:layout_constraintTop_toBottomOf="@+id/email_body" />
@@ -175,25 +223,31 @@
android:id="@+id/email_attachment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:layout_marginEnd="10dp"
+ android:ellipsize="end"
+ android:maxLines="1"
android:paddingEnd="10dp"
+ android:text="@string/color_contrast_preview_email_attachment_name"
android:textColor="?androidprv:attr/materialColorOnTertiaryContainer"
android:textSize="12sp"
- app:layout_constraintStart_toEndOf="@+id/ic_article_filled"
- app:layout_constraintTop_toTopOf="@+id/attachment_background"
+ app:layout_constrainedWidth="true"
app:layout_constraintBottom_toBottomOf="@+id/attachment_background"
- android:text="@string/color_contrast_preview_email_attachment_name" />
+ app:layout_constraintEnd_toStartOf="@+id/ic_edit"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toEndOf="@+id/ic_article_filled"
+ app:layout_constraintTop_toTopOf="@+id/attachment_background" />
<ImageView
android:id="@+id/ic_edit"
- android:contentDescription="@null"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="48dp"
+ android:layout_marginBottom="-8dp"
+ android:background="@drawable/color_contrast_preview_icon_edit_background"
+ android:contentDescription="@null"
android:padding="27dp"
android:src="@drawable/ic_edit_24dp"
- android:background="@drawable/color_contrast_preview_icon_edit_background"
- app:layout_constraintEnd_toEndOf="@+id/email_background"
- app:layout_constraintTop_toBottomOf="@+id/ic_star" />
+ app:layout_constraintBottom_toBottomOf="@+id/email_background"
+ app:layout_constraintEnd_toEndOf="@+id/email_background" />
<View
android:id="@+id/bottom_appbar_background"
@@ -206,9 +260,9 @@
app:layout_constraintTop_toTopOf="@+id/ic_inbox" />
<ImageView
- android:contentDescription="@null"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:contentDescription="@null"
android:src="@drawable/color_contrast_preview_icon_inbox_background"
app:layout_constraintBottom_toBottomOf="@+id/ic_inbox"
app:layout_constraintEnd_toEndOf="@+id/ic_inbox"
@@ -217,38 +271,38 @@
<ImageView
android:id="@+id/ic_inbox"
- android:contentDescription="@null"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="42dp"
+ android:contentDescription="@null"
android:padding="24dp"
android:src="@drawable/ic_inbox_24dp"
- app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toStartOf="@+id/ic_article"
+ app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/ic_article_filled" />
<ImageView
android:id="@+id/ic_article"
- android:contentDescription="@null"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:contentDescription="@null"
android:padding="24dp"
android:src="@drawable/ic_article_24dp"
- app:layout_constraintStart_toEndOf="@+id/ic_inbox"
+ app:layout_constraintBottom_toBottomOf="@id/ic_inbox"
app:layout_constraintEnd_toStartOf="@+id/ic_chat_bubble"
- app:layout_constraintTop_toTopOf="@id/ic_inbox"
- app:layout_constraintBottom_toBottomOf="@id/ic_inbox" />
+ app:layout_constraintStart_toEndOf="@+id/ic_inbox"
+ app:layout_constraintTop_toTopOf="@id/ic_inbox" />
<ImageView
android:id="@+id/ic_chat_bubble"
- android:contentDescription="@null"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:contentDescription="@null"
android:padding="24dp"
android:src="@drawable/ic_chat_bubble_24dp"
+ app:layout_constraintBottom_toBottomOf="@id/ic_inbox"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/ic_article"
- app:layout_constraintTop_toTopOf="@id/ic_inbox"
- app:layout_constraintBottom_toBottomOf="@id/ic_inbox" />
+ app:layout_constraintTop_toTopOf="@id/ic_inbox" />
</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/res/layout/accessibility_color_contrast_selector.xml b/res/layout/accessibility_color_contrast_selector.xml
index 38bcf7a..18b085a 100644
--- a/res/layout/accessibility_color_contrast_selector.xml
+++ b/res/layout/accessibility_color_contrast_selector.xml
@@ -23,6 +23,7 @@
android:layout_height="wrap_content">
<FrameLayout
+ android:contentDescription="@string/color_contrast_preview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingVertical="@dimen/settingslib_illustration_padding"
@@ -44,12 +45,12 @@
android:layout_weight="1"/>
<LinearLayout
+ android:id="@+id/contrast_button_default"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout
- android:id="@+id/contrast_button_default"
android:layout_width="@dimen/contrast_button_total_size"
android:layout_height="@dimen/contrast_button_total_size"
android:background="@drawable/accessibility_contrast_button_background">
@@ -58,7 +59,7 @@
android:layout_gravity="center"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
- android:contentDescription="@string/contrast_default"
+ android:contentDescription="@null"
android:src="@drawable/ic_contrast_standard"/>
</FrameLayout>
@@ -67,6 +68,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/contrast_button_text_spacing"
android:gravity="center_horizontal|top"
+ android:ellipsize="end"
+ android:singleLine="true"
android:textSize="@dimen/contrast_button_text_size"
android:text="@string/contrast_default"
android:textColor="?androidprv:attr/materialColorOnSurface"/>
@@ -77,12 +80,12 @@
android:layout_height="match_parent" />
<LinearLayout
+ android:id="@+id/contrast_button_medium"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout
- android:id="@+id/contrast_button_medium"
android:layout_width="@dimen/contrast_button_total_size"
android:layout_height="@dimen/contrast_button_total_size"
android:background="@drawable/accessibility_contrast_button_background">
@@ -91,7 +94,7 @@
android:layout_gravity="center"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
- android:contentDescription="@string/contrast_medium"
+ android:contentDescription="@null"
android:src="@drawable/ic_contrast_medium"/>
</FrameLayout>
@@ -100,6 +103,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/contrast_button_text_spacing"
android:gravity="center_horizontal|top"
+ android:ellipsize="end"
+ android:singleLine="true"
android:textSize="@dimen/contrast_button_text_size"
android:text="@string/contrast_medium"
android:textColor="?androidprv:attr/materialColorOnSurface"/>
@@ -110,12 +115,12 @@
android:layout_height="match_parent" />
<LinearLayout
+ android:id="@+id/contrast_button_high"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<FrameLayout
- android:id="@+id/contrast_button_high"
android:layout_width="@dimen/contrast_button_total_size"
android:layout_height="@dimen/contrast_button_total_size"
android:background="@drawable/accessibility_contrast_button_background">
@@ -124,7 +129,7 @@
android:layout_gravity="center"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
- android:contentDescription="@string/contrast_high"
+ android:contentDescription="@null"
android:src="@drawable/ic_contrast_high"/>
</FrameLayout>
@@ -133,6 +138,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/contrast_button_text_spacing"
android:gravity="center_horizontal|top"
+ android:ellipsize="end"
+ android:singleLine="true"
android:textSize="@dimen/contrast_button_text_size"
android:text="@string/contrast_high"
android:textColor="?androidprv:attr/materialColorOnSurface"/>
diff --git a/res/layout/apn_preference_layout.xml b/res/layout/apn_preference_layout.xml
index d536234..9b6efe7 100644
--- a/res/layout/apn_preference_layout.xml
+++ b/res/layout/apn_preference_layout.xml
@@ -39,6 +39,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
+ android:labelFor="@id/apn_radio_button_frame"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceListItem" />
diff --git a/res/layout/arrow_preference.xml b/res/layout/arrow_preference.xml
deleted file mode 100644
index 0924a44..0000000
--- a/res/layout/arrow_preference.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2023 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:minHeight="?android:attr/listPreferredItemHeight"
- android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
- android:paddingStart="?android:attr/listPreferredItemPaddingStart"
- android:paddingVertical="@dimen/settingslib_switchbar_margin"
- android:background="@android:color/transparent">
-
- <LinearLayout
- android:id="@+id/background"
- android:layout_height="wrap_content"
- android:layout_width="match_parent"
- android:paddingStart="@dimen/settingslib_switchbar_padding_left"
- android:paddingEnd="@dimen/settingslib_switchbar_padding_right"
- android:background="@drawable/settingslib_switch_bar_bg_on"
- android:orientation="horizontal">
-
- <TextView
- android:id="@android:id/title"
- android:layout_height="wrap_content"
- android:layout_width="0dp"
- android:layout_gravity="start|center_vertical"
- android:layout_weight="1"
- android:paddingVertical="@dimen/settingslib_switch_title_margin"
- android:ellipsize="end"
- android:textAppearance="?android:attr/textAppearanceListItem"
- android:hyphenationFrequency="normalFast"
- android:lineBreakWordStyle="phrase"
- style="@style/MainSwitchText.Settingslib"/>
-
- <ImageView
- android:layout_width="24dp"
- android:layout_height="24dp"
- android:layout_gravity="center_vertical"
- android:contentDescription="@null"
- android:src="@drawable/ic_arrow_forward"/>
-
- </LinearLayout>
-</FrameLayout>
diff --git a/res/layout/preference_widget_arrow.xml b/res/layout/preference_widget_arrow.xml
index ddeb669..e7a3f82 100644
--- a/res/layout/preference_widget_arrow.xml
+++ b/res/layout/preference_widget_arrow.xml
@@ -22,4 +22,5 @@
android:layout_gravity="center_vertical"
android:contentDescription="@null"
android:scaleType="center"
+ android:tint="?android:attr/textColorPrimary"
android:src="@drawable/ic_arrow_forward" />
\ No newline at end of file
diff --git a/res/values/strings.xml b/res/values/strings.xml
index cbd9772..1d538e7 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4077,7 +4077,7 @@
<!-- Manage applications, restore updated system application to factory version -->
<string name="app_factory_reset">Uninstall updates</string>
<!-- [CHAR LIMIT=50] Manage applications, unlock restricted setting from lock screen title -->
- <string name="app_restricted_settings_lockscreen_title">Allow restricted settings</string>
+ <string name="app_restricted_settings_lockscreen_title">Allow restricted permissions</string>
<!-- Manage applications, individual application info screen, screen, message text under Launch by default heading. This is present if the app is set as a default for some actions. -->
<string name="auto_launch_enable_text">Some activities you\u2019ve selected open in this app by default.</string>
<!-- Manage applications, individual application info screen, screen, message text under Launch by default heading. This is present if the app was given user permission to create widgets. -->
@@ -4692,9 +4692,11 @@
<!-- Preview screen email title on the contrast page. [CHAR LIMIT=30] -->
<string name="color_contrast_preview_email_title">Business trip report</string>
<!-- Preview screen email body on the contrast page. [CHAR LIMIT=NONE] -->
- <string name="color_contrast_preview_email_body">For further assistance, please reach out to \nmyself or Helen. This report will be</string>
+ <string name="color_contrast_preview_email_body">For further assistance, please reach out to myself or Helen. This report will be</string>
<!-- Preview screen email attachment name on the contrast page. [CHAR LIMIT=30] -->
<string name="color_contrast_preview_email_attachment_name">Client Expenses</string>
+ <!-- Title for color_contrast page footer. [CHAR LIMIT=30] -->
+ <string name="color_contrast_about_title">About color contrast</string>
<!-- Title for the accessibility text options page. [CHAR LIMIT=50] -->
<string name="accessibility_turn_screen_darker_title">Turn screen darker</string>
<!-- Title for the accessibility preference category of interaction control services and settings. [CHAR LIMIT=50] -->
@@ -11343,6 +11345,9 @@
<!-- Summary for media output default settings. (this device) [CHAR LIMIT=30] -->
<string name="media_output_default_summary">This device</string>
+ <!-- Summary for media output when audio sharing. [CHAR LIMIT=NONE] -->
+ <string name="media_output_audio_sharing">Audio sharing</string>
+
<!-- Summary for media output settings when device is in ongoing call state. -->
<string name="media_out_summary_ongoing_call_state">Unavailable during calls</string>
@@ -11775,10 +11780,10 @@
<string name="dsds_activation_failure_body_msg2">Try turning on the SIM again. If the problem continues, restart your device.</string>
<!-- Strings for dual SIM onboarding -->
- <!-- Title of dual sim onboarding's bottom sheets. [CHAR LIMIT=30] -->
- <string name="sim_onboarding_bottomsheets_title">Set up your SIM</string>
- <!-- Body text of dual sim onboarding's bottom sheets. [CHAR LIMIT=NONE] -->
- <string name="sim_onboarding_bottomsheets_msg">Set your mobile network preferences to use multiple SIMs on this device</string>
+ <!-- Title of dual sim onboarding's dialog for starting. [CHAR LIMIT=30] -->
+ <string name="sim_onboarding_dialog_starting_title">Set your SIM preferences</string>
+ <!-- Body text of dual sim onboarding's dialog for starting. [CHAR LIMIT=NONE] -->
+ <string name="sim_onboarding_dialog_starting_msg">Set your mobile network preferences to use multiple SIMs on this device</string>
<!-- Title of dual sim onboarding's label sim page. [CHAR LIMIT=30] -->
<string name="sim_onboarding_label_sim_title">Label your SIMs</string>
<!-- Body text of dual sim onboarding's label sim page. [CHAR LIMIT=NONE] -->
@@ -11819,7 +11824,9 @@
<string name="sim_onboarding_phoneNumber_data_only">Data only</string>
<!-- Button on the dual sim onboarding to start to set up sim. [CHAR LIMIT=30] -->
- <string name="sim_onboarding_setup">Set up</string>
+ <string name="sim_onboarding_setup">Get started</string>
+ <!-- button on the dual sim onboarding dialog for closing dialog. [CHAR LIMIT=30] -->
+ <string name="sim_onboarding_close">Close</string>
<!-- Button on the dual sim onboarding to go to next page. [CHAR LIMIT=30] -->
<string name="sim_onboarding_next">Next</string>
<!-- Text on the progressbar of dual sim onboarding for turning sim on. [CHAR LIMIT=30] -->
diff --git a/res/xml/accessibility_color_contrast.xml b/res/xml/accessibility_color_contrast.xml
index 67c939b..5962b8d 100644
--- a/res/xml/accessibility_color_contrast.xml
+++ b/res/xml/accessibility_color_contrast.xml
@@ -28,7 +28,7 @@
android:key="color_contrast_selector"
android:selectable="false"
android:layout="@layout/accessibility_color_contrast_selector"
- settings:controller="com.android.settings.accessibility.ContrastSelectorPreferenceController"/>
+ settings:controller="com.android.settings.accessibility.ContrastSelectorPreferenceController" />
<SwitchPreferenceCompat
android:key="toggle_high_text_contrast_preference"
@@ -39,8 +39,10 @@
"com.android.settings.accessibility.HighTextContrastPreferenceController" />
<com.android.settings.accessibility.AccessibilityFooterPreference
+ android:key="color_contrast_footer"
android:title="@string/color_contrast_note"
android:selectable="false"
- settings:searchable="false"/>
+ settings:searchable="false"
+ settings:controller="com.android.settings.accessibility.ColorContrastFooterPreferenceController" />
</PreferenceScreen>
diff --git a/res/xml/development_settings.xml b/res/xml/development_settings.xml
index 682a9c2..b8dd955 100644
--- a/res/xml/development_settings.xml
+++ b/res/xml/development_settings.xml
@@ -152,7 +152,8 @@
<Preference
android:key="demo_mode"
android:title="@string/demo_mode">
- <intent android:action="com.android.settings.action.DEMO_MODE" />
+ <intent android:action="com.android.settings.action.DEMO_MODE"
+ android:targetPackage="com.android.systemui"/>
</Preference>
<Preference
diff --git a/res/xml/special_access.xml b/res/xml/special_access.xml
index d522ef6..572345c 100644
--- a/res/xml/special_access.xml
+++ b/res/xml/special_access.xml
@@ -23,6 +23,8 @@
android:key="run_backup_tasks"
android:title="@string/run_backup_tasks_title"
android:order="-2000"
+ settings:isPreferenceVisible="false"
+ settings:searchable="false"
settings:keywords="@string/keywords_run_backup_tasks"
settings:controller="com.android.settings.spa.app.specialaccess.BackupTasksAppsPreferenceController">
</Preference>
diff --git a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
index 603ff7a..b111faa 100644
--- a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
@@ -220,12 +220,12 @@
return mDialog;
case DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL:
if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
- mDialog = AccessibilityGestureNavigationTutorial
+ mDialog = AccessibilityShortcutsTutorial
.createAccessibilityTutorialDialogForSetupWizard(
getPrefContext(), getUserShortcutTypes(),
this::callOnTutorialDialogButtonClicked, getLabelName());
} else {
- mDialog = AccessibilityGestureNavigationTutorial
+ mDialog = AccessibilityShortcutsTutorial
.createAccessibilityTutorialDialog(
getPrefContext(), getUserShortcutTypes(),
this::callOnTutorialDialogButtonClicked, getLabelName());
diff --git a/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java b/src/com/android/settings/accessibility/AccessibilityShortcutsTutorial.java
similarity index 97%
rename from src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java
rename to src/com/android/settings/accessibility/AccessibilityShortcutsTutorial.java
index 3bb03de..fd11ab0 100644
--- a/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java
+++ b/src/com/android/settings/accessibility/AccessibilityShortcutsTutorial.java
@@ -11,7 +11,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.
*/
package com.android.settings.accessibility;
@@ -72,10 +72,10 @@
import java.util.Map;
/**
- * Utility class for creating the dialog that guides users for gesture navigation for
- * accessibility services.
+ * Utility class for creating the dialog that shows tutorials on how to use the selected
+ * accessibility shortcut types
*/
-public final class AccessibilityGestureNavigationTutorial {
+public final class AccessibilityShortcutsTutorial {
private static final String TAG = "AccessibilityGestureNavigationTutorial";
/** IntDef enum for dialog type. */
@@ -92,9 +92,9 @@
int GESTURE_NAVIGATION_SETTINGS = 2;
}
- private AccessibilityGestureNavigationTutorial() {}
+ private AccessibilityShortcutsTutorial() {}
- private static final DialogInterface.OnClickListener mOnClickListener =
+ private static final DialogInterface.OnClickListener ON_CLICK_LISTENER =
(DialogInterface dialog, int which) -> dialog.dismiss();
/**
@@ -106,7 +106,7 @@
final AlertDialog alertDialog = new AlertDialog.Builder(context)
.setView(createTutorialDialogContentView(context,
DialogType.GESTURE_NAVIGATION_SETTINGS))
- .setPositiveButton(R.string.accessibility_tutorial_dialog_button, mOnClickListener)
+ .setPositiveButton(R.string.accessibility_tutorial_dialog_button, ON_CLICK_LISTENER)
.setOnDismissListener(onDismissListener)
.create();
@@ -124,7 +124,7 @@
static AlertDialog createAccessibilityTutorialDialog(
@NonNull Context context, int shortcutTypes, @NonNull CharSequence featureName) {
return createAccessibilityTutorialDialog(
- context, shortcutTypes, mOnClickListener, featureName);
+ context, shortcutTypes, ON_CLICK_LISTENER, featureName);
}
static AlertDialog createAccessibilityTutorialDialog(
@@ -184,7 +184,7 @@
static AlertDialog createAccessibilityTutorialDialogForSetupWizard(Context context,
int shortcutTypes, CharSequence featureName) {
return createAccessibilityTutorialDialogForSetupWizard(context, shortcutTypes,
- mOnClickListener, featureName);
+ ON_CLICK_LISTENER, featureName);
}
static AlertDialog createAccessibilityTutorialDialogForSetupWizard(
@@ -259,7 +259,7 @@
private static AlertDialog createDialog(Context context, int dialogType) {
final AlertDialog alertDialog = new AlertDialog.Builder(context)
.setView(createTutorialDialogContentView(context, dialogType))
- .setPositiveButton(R.string.accessibility_tutorial_dialog_button, mOnClickListener)
+ .setPositiveButton(R.string.accessibility_tutorial_dialog_button, ON_CLICK_LISTENER)
.create();
alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
diff --git a/src/com/android/settings/accessibility/ColorContrastFooterPreferenceController.java b/src/com/android/settings/accessibility/ColorContrastFooterPreferenceController.java
new file mode 100644
index 0000000..99f7418
--- /dev/null
+++ b/src/com/android/settings/accessibility/ColorContrastFooterPreferenceController.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2024 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.settings.accessibility;
+
+import android.content.Context;
+
+import androidx.annotation.NonNull;
+
+import com.android.settings.R;
+
+/** Preference controller for footer in color contrast page. */
+public class ColorContrastFooterPreferenceController extends
+ AccessibilityFooterPreferenceController {
+ public ColorContrastFooterPreferenceController(@NonNull Context context,
+ @NonNull String key) {
+ super(context, key);
+ }
+
+ @Override
+ protected String getIntroductionTitle() {
+ return mContext.getString(R.string.color_contrast_about_title);
+ }
+}
diff --git a/src/com/android/settings/accessibility/ContrastSelectorPreferenceController.java b/src/com/android/settings/accessibility/ContrastSelectorPreferenceController.java
index b99680f..5b746cd 100644
--- a/src/com/android/settings/accessibility/ContrastSelectorPreferenceController.java
+++ b/src/com/android/settings/accessibility/ContrastSelectorPreferenceController.java
@@ -26,7 +26,7 @@
import android.content.Context;
import android.provider.Settings;
import android.view.View;
-import android.widget.FrameLayout;
+import android.widget.LinearLayout;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -53,7 +53,7 @@
private final Executor mMainExecutor;
private final UiModeManager mUiModeManager;
- private Map<Integer, FrameLayout> mContrastButtons = new HashMap<>();
+ private Map<Integer, LinearLayout> mContrastButtons = new HashMap<>();
public ContrastSelectorPreferenceController(@NonNull Context context,
@NonNull String preferenceKey) {
diff --git a/src/com/android/settings/accessibility/RTTSettingPreferenceController.java b/src/com/android/settings/accessibility/RTTSettingPreferenceController.java
index 3ad2a3b..8ab8850 100644
--- a/src/com/android/settings/accessibility/RTTSettingPreferenceController.java
+++ b/src/com/android/settings/accessibility/RTTSettingPreferenceController.java
@@ -61,7 +61,8 @@
mDialerPackage = mContext.getString(R.string.config_rtt_setting_package_name);
mPackageManager = mContext.getPackageManager();
mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class);
- mRTTIntent = new Intent(context.getString(R.string.config_rtt_setting_intent_action));
+ mRTTIntent = new Intent(context.getString(R.string.config_rtt_setting_intent_action))
+ .setPackage(mDialerPackage);
Log.d(TAG, "init controller");
}
diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
index 72e1ad8..0e50a5c 100644
--- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
@@ -443,7 +443,8 @@
final ApplicationInfo appInfo =
a11yServiceInfo.getResolveInfo().serviceInfo.applicationInfo;
final Uri packageUri = Uri.parse("package:" + appInfo.packageName);
- final Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri);
+ final Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri)
+ .setPackage(getString(R.string.config_package_installer_package_name));
return uninstallIntent;
}
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index a7fce6f..137be21 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -225,12 +225,12 @@
return mDialog;
case DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL:
if (isAnySetupWizard()) {
- mDialog = AccessibilityGestureNavigationTutorial
+ mDialog = AccessibilityShortcutsTutorial
.createAccessibilityTutorialDialogForSetupWizard(
getPrefContext(), getUserShortcutTypes(),
this::callOnTutorialDialogButtonClicked, mPackageName);
} else {
- mDialog = AccessibilityGestureNavigationTutorial
+ mDialog = AccessibilityShortcutsTutorial
.createAccessibilityTutorialDialog(
getPrefContext(), getUserShortcutTypes(),
this::callOnTutorialDialogButtonClicked, mPackageName);
@@ -570,6 +570,7 @@
}
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
+ intent.setPackage(getContext().getPackageName());
intent.setData(Uri.parse("package:" + packageName));
final Preference appInfoPreference = new Preference(getPrefContext());
diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
index 0da55af..630c24e 100644
--- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
@@ -166,7 +166,7 @@
}
switch (dialogId) {
case DialogEnums.GESTURE_NAVIGATION_TUTORIAL:
- return AccessibilityGestureNavigationTutorial
+ return AccessibilityShortcutsTutorial
.showAccessibilityGestureTutorialDialog(getPrefContext());
case DialogEnums.MAGNIFICATION_EDIT_SHORTCUT:
final CharSequence dialogTitle = getShortcutTitle();
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
index 9dac46d..119d9b3 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
@@ -88,7 +88,6 @@
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.TwoTargetPreference;
-import com.google.android.setupcompat.util.WizardManagerHelper;
import com.google.android.setupdesign.util.DeviceHelper;
import java.util.ArrayList;
@@ -112,9 +111,6 @@
private static final int RESULT_SKIP = BiometricEnrollBase.RESULT_SKIP;
private static final int RESULT_TIMEOUT = BiometricEnrollBase.RESULT_TIMEOUT;
- @Nullable
- private UdfpsEnrollCalibrator mCalibrator;
-
@Override
public Intent getIntent() {
Intent modIntent = new Intent(super.getIntent());
@@ -135,13 +131,6 @@
setTitle(msg);
}
- @Override
- public void onResume() {
- super.onResume();
- mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider()
- .getUdfpsEnrollCalibrator(getApplicationContext(), null, null);
- }
-
/**
* @param context
* @return true if the Fingerprint hardware is detected.
@@ -272,6 +261,9 @@
private FingerprintRemoveSidecar mRemovalSidecar;
private HashMap<Integer, String> mFingerprintsRenaming;
+ @Nullable
+ private UdfpsEnrollCalibrator mCalibrator;
+
FingerprintAuthenticateSidecar.Listener mAuthenticateListener =
new FingerprintAuthenticateSidecar.Listener() {
@Override
@@ -745,6 +737,9 @@
if (mRemovalSidecar != null) {
mRemovalSidecar.setListener(mRemovalListener);
}
+
+ mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider()
+ .getUdfpsEnrollCalibrator(getActivity().getApplicationContext(), null, null);
}
private void updatePreferences() {
@@ -811,10 +806,8 @@
}
intent.putExtra(Intent.EXTRA_USER_ID, mUserId);
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken);
- if (((FingerprintSettings) getActivity()).mCalibrator != null) {
- intent.putExtras(
- (((FingerprintSettings) getActivity()).mCalibrator)
- .getExtrasForNextIntent());
+ if (mCalibrator != null) {
+ intent.putExtras(mCalibrator.getExtrasForNextIntent());
}
startActivityForResult(intent, ADD_FINGERPRINT_REQUEST);
} else if (pref instanceof FingerprintPreference) {
diff --git a/src/com/android/settings/development/graphicsdriver/GraphicsDriverEnableAngleAsSystemDriverController.java b/src/com/android/settings/development/graphicsdriver/GraphicsDriverEnableAngleAsSystemDriverController.java
index e75ab1a..b107501 100644
--- a/src/com/android/settings/development/graphicsdriver/GraphicsDriverEnableAngleAsSystemDriverController.java
+++ b/src/com/android/settings/development/graphicsdriver/GraphicsDriverEnableAngleAsSystemDriverController.java
@@ -195,7 +195,7 @@
@VisibleForTesting
void rebootDevice(Context context) {
- final Intent intent = new Intent(Intent.ACTION_REBOOT);
+ final Intent intent = new Intent(Intent.ACTION_REBOOT).setPackage("android");
context.startActivity(intent);
}
diff --git a/src/com/android/settings/fuelgauge/batteryusage/bugreport/BatteryUsageLogUtils.java b/src/com/android/settings/fuelgauge/batteryusage/bugreport/BatteryUsageLogUtils.java
index 4017131..e3829e3 100644
--- a/src/com/android/settings/fuelgauge/batteryusage/bugreport/BatteryUsageLogUtils.java
+++ b/src/com/android/settings/fuelgauge/batteryusage/bugreport/BatteryUsageLogUtils.java
@@ -95,7 +95,7 @@
.append(ConvertUtils.utcToLocalTimeForLogging(entry.getTimestamp()))
.append(" " + entry.getAction());
final String description = entry.getActionDescription();
- if (description != null && !description.isEmpty()) {
+ if (!description.isEmpty()) {
builder.append(" " + description);
}
return builder.toString();
diff --git a/src/com/android/settings/gestures/SystemNavigationGestureSettings.java b/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
index 9f76fad..4e35460 100644
--- a/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
+++ b/src/com/android/settings/gestures/SystemNavigationGestureSettings.java
@@ -42,7 +42,7 @@
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
-import com.android.settings.accessibility.AccessibilityGestureNavigationTutorial;
+import com.android.settings.accessibility.AccessibilityShortcutsTutorial;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerListHelper;
import com.android.settings.core.SubSettingLauncher;
@@ -101,7 +101,7 @@
mA11yTutorialDialogShown =
savedInstanceState.getBoolean(KEY_SHOW_A11Y_TUTORIAL_DIALOG, false);
if (mA11yTutorialDialogShown) {
- AccessibilityGestureNavigationTutorial.showGestureNavigationTutorialDialog(
+ AccessibilityShortcutsTutorial.showGestureNavigationTutorialDialog(
getContext(), dialog -> mA11yTutorialDialogShown = false);
}
}
@@ -181,7 +181,8 @@
if (KEY_SYSTEM_NAV_GESTURAL.equals(info.getKey())) {
pref.setExtraWidgetOnClickListener((v) -> startActivity(new Intent(
- GestureNavigationSettingsFragment.GESTURE_NAVIGATION_SETTINGS)));
+ GestureNavigationSettingsFragment.GESTURE_NAVIGATION_SETTINGS)
+ .setPackage(getContext().getPackageName())));
}
if ((KEY_SYSTEM_NAV_2BUTTONS.equals(info.getKey())
@@ -355,7 +356,7 @@
&& !isAccessibilityFloatingMenuEnabled()
&& (isAnyServiceSupportAccessibilityButton() || isNavBarMagnificationEnabled())) {
mA11yTutorialDialogShown = true;
- AccessibilityGestureNavigationTutorial.showGestureNavigationTutorialDialog(getContext(),
+ AccessibilityShortcutsTutorial.showGestureNavigationTutorialDialog(getContext(),
dialog -> mA11yTutorialDialogShown = false);
} else {
mA11yTutorialDialogShown = false;
diff --git a/src/com/android/settings/homepage/SettingsHomepageActivity.java b/src/com/android/settings/homepage/SettingsHomepageActivity.java
index 6688831..5f091d9 100644
--- a/src/com/android/settings/homepage/SettingsHomepageActivity.java
+++ b/src/com/android/settings/homepage/SettingsHomepageActivity.java
@@ -187,6 +187,15 @@
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ // Ensure device is provisioned in order to access Settings home
+ // TODO(b/331254029): This should later be replaced in favor of an allowlist
+ boolean unprovisioned = android.provider.Settings.Global.getInt(getContentResolver(),
+ android.provider.Settings.Global.DEVICE_PROVISIONED, 0) == 0;
+ if (unprovisioned) {
+ Log.e(TAG, "Device is not provisioned, exiting Settings");
+ finish();
+ }
+
mIsEmbeddingActivityEnabled = ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this);
if (mIsEmbeddingActivityEnabled) {
final UserManager um = getSystemService(UserManager.class);
diff --git a/src/com/android/settings/localepicker/TermsOfAddressCategoryController.java b/src/com/android/settings/localepicker/TermsOfAddressCategoryController.java
index 518f670..01168c7 100644
--- a/src/com/android/settings/localepicker/TermsOfAddressCategoryController.java
+++ b/src/com/android/settings/localepicker/TermsOfAddressCategoryController.java
@@ -36,9 +36,10 @@
public class TermsOfAddressCategoryController extends PreferenceCategoryController {
- private static final String TAG = "TermsOfAddressCategoryController";
+ private static final String TAG = "TermsOfAddressCategory";
private static final String KEY_CATEGORY_TERMS_OF_ADDRESS = "key_category_terms_of_address";
private static final String KEY_TERMS_OF_ADDRESS = "key_terms_of_address";
+ private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
public TermsOfAddressCategoryController(Context context, String key) {
super(context, key);
@@ -79,11 +80,13 @@
mContext.getResources().getStringArray(
R.array.terms_of_address_unsupported_locales));
- final Locale locale = localeInfo.getLocale();
+ final Locale locale = localeInfo.getLocale().stripExtensions();
final String language = locale.getLanguage();
final String localeTag = locale.toLanguageTag();
- Log.d(TAG, "current language: " + language);
- Log.d(TAG, "current locale tag: " + localeTag);
+ if (DEBUG) {
+ Log.d(TAG, "current language: " + language);
+ Log.d(TAG, "current locale tag: " + localeTag);
+ }
// Supported locales:
// 1. All French is supported except fr-CA.
diff --git a/src/com/android/settings/network/SimOnboardingActivity.kt b/src/com/android/settings/network/SimOnboardingActivity.kt
index 350f5b8..f97822a 100644
--- a/src/com/android/settings/network/SimOnboardingActivity.kt
+++ b/src/com/android/settings/network/SimOnboardingActivity.kt
@@ -31,16 +31,12 @@
import androidx.compose.material.icons.outlined.SignalCellularAlt
import androidx.compose.material3.AlertDialogDefaults
import androidx.compose.material3.BasicAlertDialog
-import androidx.compose.material3.Button
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.ModalBottomSheet
-import androidx.compose.material3.SheetState
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
-import androidx.compose.material3.rememberModalBottomSheetState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState
@@ -52,7 +48,6 @@
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
-import androidx.compose.ui.text.style.TextOverflow
import com.android.settings.R
import com.android.settings.SidecarFragment
import com.android.settings.network.telephony.SubscriptionActionDialogActivity
@@ -63,6 +58,7 @@
import com.android.settingslib.spa.framework.theme.SettingsDimension
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
import com.android.settingslib.spa.widget.dialog.AlertDialogButton
+import com.android.settingslib.spa.widget.dialog.SettingsAlertDialogWithIcon
import com.android.settingslib.spa.widget.dialog.getDialogWidth
import com.android.settingslib.spa.widget.dialog.rememberAlertDialogPresenter
import com.android.settingslib.spa.widget.ui.SettingsTitle
@@ -77,7 +73,7 @@
class SimOnboardingActivity : SpaBaseDialogActivity() {
lateinit var scope: CoroutineScope
- lateinit var showBottomSheet: MutableState<Boolean>
+ lateinit var showStartingDialog: MutableState<Boolean>
lateinit var showError: MutableState<ErrorType>
lateinit var showProgressDialog: MutableState<Boolean>
lateinit var showDsdsProgressDialog: MutableState<Boolean>
@@ -138,7 +134,7 @@
}
CallbackType.CALLBACK_ONBOARDING_COMPLETE -> {
- showBottomSheet.value = false
+ showStartingDialog.value = false
setProgressDialog(true)
scope.launch {
// TODO: refactor the Sidecar
@@ -181,7 +177,7 @@
@OptIn(ExperimentalMaterial3Api::class)
@Composable
override fun Content() {
- showBottomSheet = remember { mutableStateOf(false) }
+ showStartingDialog = remember { mutableStateOf(false) }
showError = remember { mutableStateOf(ErrorType.ERROR_NONE) }
showProgressDialog = remember { mutableStateOf(false) }
showDsdsProgressDialog = remember { mutableStateOf(false) }
@@ -194,14 +190,12 @@
RestartDialogImpl()
LaunchedEffect(Unit) {
if (onboardingService.activeSubInfoList.isNotEmpty()) {
- showBottomSheet.value = true
+ showStartingDialog.value = true
}
}
- if (showBottomSheet.value) {
- var sheetState = rememberModalBottomSheetState()
- BottomSheetImpl(
- sheetState = sheetState,
+ if (showStartingDialog.value) {
+ StartingDialogImpl(
nextAction = {
if (onboardingService.isDsdsConditionSatisfied()) {
// TODO: if the phone is SS mode and the isDsdsConditionSatisfied is true,
@@ -468,48 +462,39 @@
}
@Composable
- fun BottomSheetBody(nextAction: () -> Unit) {
- Column(horizontalAlignment = Alignment.CenterHorizontally,
- modifier = Modifier.padding(bottom = SettingsDimension.itemPaddingVertical)) {
- Icon(
- imageVector = Icons.Outlined.SignalCellularAlt,
- contentDescription = null,
- modifier = Modifier
- .size(SettingsDimension.iconLarge),
- tint = MaterialTheme.colorScheme.primary,
- )
- SettingsTitle(stringResource(R.string.sim_onboarding_bottomsheets_title))
- Column(Modifier.padding(SettingsDimension.itemPadding)) {
- Text(
- text = stringResource(R.string.sim_onboarding_bottomsheets_msg),
- color = MaterialTheme.colorScheme.onSurfaceVariant,
- style = MaterialTheme.typography.bodyMedium,
- overflow = TextOverflow.Ellipsis,
- textAlign = TextAlign.Center
- )
- }
- Button(onClick = nextAction) {
- Text(stringResource(R.string.sim_onboarding_setup))
- }
- }
- }
-
- @OptIn(ExperimentalMaterial3Api::class)
- @Composable
- fun BottomSheetImpl(
- sheetState: SheetState,
+ fun StartingDialogImpl(
nextAction: () -> Unit,
cancelAction: () -> Unit,
) {
- ModalBottomSheet(
+ SettingsAlertDialogWithIcon(
onDismissRequest = cancelAction,
- sheetState = sheetState,
- ) {
- BottomSheetBody(nextAction = nextAction)
- }
- LaunchedEffect(Unit) {
- sheetState.show()
- }
+ confirmButton = AlertDialogButton(
+ getString(R.string.sim_onboarding_setup),
+ nextAction
+ ),
+ dismissButton =
+ AlertDialogButton(
+ getString(R.string.sim_onboarding_close),
+ cancelAction
+ ),
+ title = stringResource(R.string.sim_onboarding_dialog_starting_title),
+ icon = {
+ Icon(
+ imageVector = Icons.Outlined.SignalCellularAlt,
+ contentDescription = null,
+ modifier = Modifier
+ .size(SettingsDimension.iconLarge),
+ tint = MaterialTheme.colorScheme.primary,
+ )
+ },
+ text = {
+ Text(
+ stringResource(R.string.sim_onboarding_dialog_starting_msg),
+ modifier = Modifier.fillMaxWidth(),
+ textAlign = TextAlign.Center
+ )
+ })
+
}
fun setProgressState(state: Int) {
diff --git a/src/com/android/settings/password/BiometricFragment.java b/src/com/android/settings/password/BiometricFragment.java
index 90a1feb..2e4a317 100644
--- a/src/com/android/settings/password/BiometricFragment.java
+++ b/src/com/android/settings/password/BiometricFragment.java
@@ -143,7 +143,8 @@
.setShowEmergencyCallButton(promptInfo.isShowEmergencyCallButton())
.setReceiveSystemEvents(true);
- if (Flags.enableBiometricsToUnlockPrivateSpace()) {
+ if (android.os.Flags.allowPrivateProfile() && Flags.enablePrivateSpaceFeatures()
+ && Flags.enableBiometricsToUnlockPrivateSpace()) {
promptBuilder = promptBuilder.setAllowBackgroundAuthentication(true /* allow */,
promptInfo.shouldUseParentProfileForDeviceCredential());
} else {
diff --git a/src/com/android/settings/privatespace/PrivateSpaceDashboardFragment.java b/src/com/android/settings/privatespace/PrivateSpaceDashboardFragment.java
index 32db8b6..f539a8b 100644
--- a/src/com/android/settings/privatespace/PrivateSpaceDashboardFragment.java
+++ b/src/com/android/settings/privatespace/PrivateSpaceDashboardFragment.java
@@ -19,6 +19,7 @@
import static com.android.settings.privatespace.PrivateSpaceAuthenticationActivity.EXTRA_SHOW_PRIVATE_SPACE_UNLOCKED;
import android.app.settings.SettingsEnums;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
@@ -38,7 +39,14 @@
if (icicle == null
&& getIntent().getBooleanExtra(EXTRA_SHOW_PRIVATE_SPACE_UNLOCKED, false)) {
Log.i(TAG, "Private space unlocked showing toast");
- Toast.makeText(getContext(), R.string.private_space_unlocked, Toast.LENGTH_SHORT)
+ Drawable drawable =
+ getContext().getDrawable(R.drawable.ic_private_space_unlock_icon);
+ Toast.makeCustomToastWithIcon(
+ getContext(),
+ null /* looper */,
+ getContext().getString(R.string.private_space_unlocked),
+ Toast.LENGTH_SHORT,
+ drawable)
.show();
}
}
diff --git a/src/com/android/settings/privatespace/SetupSuccessFragment.java b/src/com/android/settings/privatespace/SetupSuccessFragment.java
index cf63b22..c0a2cd4 100644
--- a/src/com/android/settings/privatespace/SetupSuccessFragment.java
+++ b/src/com/android/settings/privatespace/SetupSuccessFragment.java
@@ -21,6 +21,7 @@
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
@@ -100,6 +101,7 @@
allAppsIntent.setPackage(resolveInfo.activityInfo.packageName);
allAppsIntent.setComponent(resolveInfo.activityInfo.getComponentName());
}
+ activity.setTheme(R.style.Theme_SubSettings);
accessPrivateSpaceToast();
startActivity(allAppsIntent);
Log.i(TAG, "Private space setup complete");
@@ -109,7 +111,13 @@
}
private void accessPrivateSpaceToast() {
- Toast.makeText(getContext(), R.string.private_space_scrolldown_to_access,
- Toast.LENGTH_SHORT).show();
+ Drawable drawable = getContext().getDrawable(R.drawable.ic_private_space_icon);
+ Toast.makeCustomToastWithIcon(
+ getContext(),
+ null /* looper */ ,
+ getContext().getString(R.string.private_space_scrolldown_to_access),
+ Toast.LENGTH_SHORT,
+ drawable)
+ .show();
}
}
diff --git a/src/com/android/settings/privatespace/delete/PrivateSpaceDeletionProgressFragment.java b/src/com/android/settings/privatespace/delete/PrivateSpaceDeletionProgressFragment.java
index 33f0a3e..0893070 100644
--- a/src/com/android/settings/privatespace/delete/PrivateSpaceDeletionProgressFragment.java
+++ b/src/com/android/settings/privatespace/delete/PrivateSpaceDeletionProgressFragment.java
@@ -21,6 +21,7 @@
import android.app.settings.SettingsEnums;
import android.content.Context;
+import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -132,13 +133,23 @@
/** Shows a toast saying that the private space was deleted */
@VisibleForTesting
public void showSuccessfulDeletionToast() {
- Toast.makeText(getContext(), R.string.private_space_deleted, Toast.LENGTH_SHORT).show();
+ showToastWithCustomIcon(R.string.private_space_deleted);
}
/** Shows a toast saying that the private space could not be deleted */
@VisibleForTesting
public void showDeletionInternalErrorToast() {
- Toast.makeText(getContext(), R.string.private_space_delete_failed, Toast.LENGTH_SHORT)
+ showToastWithCustomIcon(R.string.private_space_delete_failed);
+ }
+
+ private void showToastWithCustomIcon(int stringRes) {
+ Drawable drawable = getContext().getDrawable(R.drawable.ic_private_space_icon);
+ Toast.makeCustomToastWithIcon(
+ getContext(),
+ null /* looper */ ,
+ getContext().getString(stringRes),
+ Toast.LENGTH_SHORT,
+ drawable)
.show();
}
}
diff --git a/src/com/android/settings/sound/MediaOutputPreferenceController.java b/src/com/android/settings/sound/MediaOutputPreferenceController.java
index c85789d..e116422 100644
--- a/src/com/android/settings/sound/MediaOutputPreferenceController.java
+++ b/src/com/android/settings/sound/MediaOutputPreferenceController.java
@@ -19,6 +19,8 @@
import static com.android.settingslib.media.flags.Flags.enableOutputSwitcherForSystemRouting;
import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothLeBroadcast;
+import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
@@ -26,6 +28,7 @@
import android.media.session.MediaSessionManager;
import android.text.TextUtils;
+import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -35,6 +38,8 @@
import com.android.settingslib.Utils;
import com.android.settingslib.bluetooth.A2dpProfile;
import com.android.settingslib.bluetooth.HearingAidProfile;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.media.MediaOutputConstants;
import java.util.List;
@@ -53,10 +58,74 @@
@Nullable private MediaController mMediaController;
private MediaSessionManager mMediaSessionManager;
+ @Nullable private LocalBluetoothLeBroadcast mLocalBluetoothLeBroadcast;
+
+ private final BluetoothLeBroadcast.Callback mBroadcastCallback =
+ new BluetoothLeBroadcast.Callback() {
+ @Override
+ public void onBroadcastStarted(int reason, int broadcastId) {
+ updateState(mPreference);
+ }
+
+ @Override
+ public void onBroadcastStartFailed(int reason) {
+ updateState(mPreference);
+ }
+
+ @Override
+ public void onBroadcastStopped(int reason, int broadcastId) {
+ updateState(mPreference);
+ }
+
+ @Override
+ public void onBroadcastStopFailed(int reason) {
+ updateState(mPreference);
+ }
+
+ @Override
+ public void onPlaybackStarted(int reason, int broadcastId) {}
+
+ @Override
+ public void onPlaybackStopped(int reason, int broadcastId) {}
+
+ @Override
+ public void onBroadcastUpdated(int reason, int broadcastId) {}
+
+ @Override
+ public void onBroadcastUpdateFailed(int reason, int broadcastId) {}
+
+ @Override
+ public void onBroadcastMetadataChanged(
+ int broadcastId, @NonNull BluetoothLeBroadcastMetadata metadata) {}
+ };
+
public MediaOutputPreferenceController(Context context, String key) {
super(context, key);
mMediaSessionManager = context.getSystemService(MediaSessionManager.class);
mMediaController = MediaOutputUtils.getActiveLocalMediaController(mMediaSessionManager);
+ LocalBluetoothManager localBluetoothManager =
+ com.android.settings.bluetooth.Utils.getLocalBtManager(mContext);
+ if (localBluetoothManager != null) {
+ mLocalBluetoothLeBroadcast =
+ localBluetoothManager.getProfileManager().getLeAudioBroadcastProfile();
+ }
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ if (mLocalBluetoothLeBroadcast != null) {
+ mLocalBluetoothLeBroadcast.registerServiceCallBack(
+ mContext.getMainExecutor(), mBroadcastCallback);
+ }
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ if (mLocalBluetoothLeBroadcast != null) {
+ mLocalBluetoothLeBroadcast.unregisterServiceCallBack(mBroadcastCallback);
+ }
}
@Override
@@ -83,7 +152,7 @@
}
}
-
+ mPreference.setEnabled(true);
if (Utils.isAudioModeOngoingCall(mContext)) {
// Ongoing call status, switch entry for media will be disabled.
mPreference.setVisible(false);
@@ -112,9 +181,15 @@
com.android.settings.Utils.getApplicationLabel(mContext,
mMediaController.getPackageName())));
}
- mPreference.setSummary((activeDevice == null) ?
- mContext.getText(R.string.media_output_default_summary) :
- activeDevice.getAlias());
+ if (isDeviceBroadcasting()) {
+ mPreference.setSummary(R.string.media_output_audio_sharing);
+ mPreference.setEnabled(false);
+ } else {
+ mPreference.setSummary(
+ (activeDevice == null)
+ ? mContext.getText(R.string.media_output_default_summary)
+ : activeDevice.getAlias());
+ }
}
@Override
@@ -176,4 +251,10 @@
}
return false;
}
+
+ private boolean isDeviceBroadcasting() {
+ return com.android.settingslib.flags.Flags.enableLeAudioSharing()
+ && mLocalBluetoothLeBroadcast != null
+ && mLocalBluetoothLeBroadcast.isEnabled(null);
+ }
}
diff --git a/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceController.kt b/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceController.kt
index 8d6de4e..d209f0b 100644
--- a/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceController.kt
+++ b/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceController.kt
@@ -19,14 +19,11 @@
import android.content.Context
import androidx.preference.Preference
import com.android.settings.core.BasePreferenceController
-import com.android.settings.flags.Flags
import com.android.settings.spa.SpaActivity.Companion.startSpaActivity
class BackupTasksAppsPreferenceController(context: Context, preferenceKey: String) :
BasePreferenceController(context, preferenceKey) {
- override fun getAvailabilityStatus() =
- if (Flags.enablePerformBackupTasksInSettings()) AVAILABLE
- else CONDITIONALLY_UNAVAILABLE
+ override fun getAvailabilityStatus() = CONDITIONALLY_UNAVAILABLE
override fun handlePreferenceTreeClick(preference: Preference): Boolean {
if (preference.key == mPreferenceKey) {
diff --git a/src/com/android/settings/spa/preference/ComposePreference.kt b/src/com/android/settings/spa/preference/ComposePreference.kt
index aa5c32c..55a469c 100644
--- a/src/com/android/settings/spa/preference/ComposePreference.kt
+++ b/src/com/android/settings/spa/preference/ComposePreference.kt
@@ -47,6 +47,7 @@
init {
layoutResource = R.layout.preference_compose
+ isSelectable = false
}
override fun onBindViewHolder(holder: PreferenceViewHolder) {
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorialTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityShortcutsTutorialTest.java
similarity index 97%
rename from tests/robotests/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorialTest.java
rename to tests/robotests/src/com/android/settings/accessibility/AccessibilityShortcutsTutorialTest.java
index 18a3c3a..a5aceed 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorialTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityShortcutsTutorialTest.java
@@ -16,10 +16,10 @@
package com.android.settings.accessibility;
-import static com.android.settings.accessibility.AccessibilityGestureNavigationTutorial.createAccessibilityTutorialDialog;
-import static com.android.settings.accessibility.AccessibilityGestureNavigationTutorial.createAccessibilityTutorialDialogForSetupWizard;
-import static com.android.settings.accessibility.AccessibilityGestureNavigationTutorial.createShortcutTutorialPages;
-import static com.android.settings.accessibility.AccessibilityGestureNavigationTutorial.showGestureNavigationTutorialDialog;
+import static com.android.settings.accessibility.AccessibilityShortcutsTutorial.createAccessibilityTutorialDialog;
+import static com.android.settings.accessibility.AccessibilityShortcutsTutorial.createAccessibilityTutorialDialogForSetupWizard;
+import static com.android.settings.accessibility.AccessibilityShortcutsTutorial.createShortcutTutorialPages;
+import static com.android.settings.accessibility.AccessibilityShortcutsTutorial.showGestureNavigationTutorialDialog;
import static com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
import static com.google.common.truth.Truth.assertThat;
@@ -69,10 +69,10 @@
import java.util.Map;
-/** Tests for {@link AccessibilityGestureNavigationTutorial}. */
+/** Tests for {@link AccessibilityShortcutsTutorial}. */
@Config(shadows = SettingsShadowResources.class)
@RunWith(RobolectricTestRunner.class)
-public final class AccessibilityGestureNavigationTutorialTest {
+public final class AccessibilityShortcutsTutorialTest {
private static final String FAKE_FEATURE_NAME = "Fake Feature Name";
@Rule
diff --git a/tests/robotests/src/com/android/settings/accessibility/ContrastSelectorPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accessibility/ContrastSelectorPreferenceControllerTest.java
index 38d6e80..83d9cb9 100644
--- a/tests/robotests/src/com/android/settings/accessibility/ContrastSelectorPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/ContrastSelectorPreferenceControllerTest.java
@@ -27,7 +27,7 @@
import android.app.UiModeManager;
import android.content.Context;
-import android.widget.FrameLayout;
+import android.widget.LinearLayout;
import androidx.preference.PreferenceScreen;
import androidx.test.core.app.ApplicationProvider;
@@ -57,7 +57,7 @@
@Mock
private PreferenceScreen mScreen;
@Mock
- private FrameLayout mFrameLayout;
+ private LinearLayout mLinearLayout;
@Mock
private LayoutPreference mLayoutPreference;
private Context mContext;
@@ -72,7 +72,7 @@
when(mContext.getSystemService(UiModeManager.class)).thenReturn(mUiService);
mController = new ContrastSelectorPreferenceController(mContext, PREFERENCE_KEY);
when(mScreen.findPreference(PREFERENCE_KEY)).thenReturn(mLayoutPreference);
- when(mLayoutPreference.findViewById(anyInt())).thenReturn(mFrameLayout);
+ when(mLayoutPreference.findViewById(anyInt())).thenReturn(mLinearLayout);
}
@Test
@@ -102,7 +102,7 @@
public void displayPreference_shouldAddClickListener() {
mController.displayPreference(mScreen);
- verify(mFrameLayout, times(3)).setOnClickListener(any());
+ verify(mLinearLayout, times(3)).setOnClickListener(any());
}
@Test
@@ -110,6 +110,6 @@
mController.displayPreference(mScreen);
mController.onContrastChanged(1);
- verify(mFrameLayout, times(2)).setSelected(true);
+ verify(mLinearLayout, times(2)).setSelected(true);
}
}
diff --git a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
index 6431306..0d1ee9c 100644
--- a/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/SettingsHomepageActivityTest.java
@@ -38,6 +38,7 @@
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
+import android.provider.Settings;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -54,6 +55,7 @@
import com.android.settingslib.core.lifecycle.HideNonSystemOverlayMixin;
import org.junit.After;
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -80,12 +82,29 @@
@Rule
public final MockitoRule mMockitoRule = MockitoJUnit.rule();
+ @Before
+ public void setup() {
+ Settings.Global.putInt(ApplicationProvider.getApplicationContext().getContentResolver(),
+ Settings.Global.DEVICE_PROVISIONED, 1);
+ }
+
@After
public void tearDown() {
ShadowPasswordUtils.reset();
}
@Test
+ public void launch_deviceUnprovisioned_finish() {
+ Settings.Global.putInt(ApplicationProvider.getApplicationContext().getContentResolver(),
+ Settings.Global.DEVICE_PROVISIONED, 0);
+
+ SettingsHomepageActivity activity = Robolectric.buildActivity(
+ SettingsHomepageActivity.class).create().get();
+
+ assertThat(activity.isFinishing()).isTrue();
+ }
+
+ @Test
public void launch_shouldHaveAnimationForIaFragment() {
final SettingsHomepageActivity activity = Robolectric.buildActivity(
SettingsHomepageActivity.class).create().get();
diff --git a/tests/robotests/src/com/android/settings/sound/MediaOutputPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/sound/MediaOutputPreferenceControllerTest.java
index b9f9b16..5dc602a 100644
--- a/tests/robotests/src/com/android/settings/sound/MediaOutputPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/sound/MediaOutputPreferenceControllerTest.java
@@ -22,6 +22,7 @@
import static android.media.AudioSystem.DEVICE_OUT_HEARING_AID;
import static com.android.settingslib.media.flags.Flags.FLAG_ENABLE_OUTPUT_SWITCHER_FOR_SYSTEM_ROUTING;
+import static com.android.settingslib.flags.Flags.FLAG_ENABLE_LE_AUDIO_SHARING;
import static com.google.common.truth.Truth.assertThat;
@@ -35,6 +36,7 @@
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
+import android.bluetooth.BluetoothLeBroadcast;
import android.bluetooth.BluetoothManager;
import android.content.Context;
import android.content.Intent;
@@ -63,6 +65,7 @@
import com.android.settingslib.bluetooth.CachedBluetoothDeviceManager;
import com.android.settingslib.bluetooth.HearingAidProfile;
import com.android.settingslib.bluetooth.LeAudioProfile;
+import com.android.settingslib.bluetooth.LocalBluetoothLeBroadcast;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
import com.android.settingslib.media.MediaOutputConstants;
@@ -123,6 +126,8 @@
@Mock
private LeAudioProfile mLeAudioProfile;
@Mock
+ private LocalBluetoothLeBroadcast mLocalBluetoothLeBroadcast;
+ @Mock
private AudioSwitchPreferenceController.AudioSwitchCallback mAudioSwitchPreferenceCallback;
@Mock
private MediaSessionManager mMediaSessionManager;
@@ -194,6 +199,8 @@
when(mLocalBluetoothProfileManager.getA2dpProfile()).thenReturn(mA2dpProfile);
when(mLocalBluetoothProfileManager.getHearingAidProfile()).thenReturn(mHearingAidProfile);
when(mLocalBluetoothProfileManager.getLeAudioProfile()).thenReturn(mLeAudioProfile);
+ when(mLocalBluetoothProfileManager.getLeAudioBroadcastProfile())
+ .thenReturn(mLocalBluetoothLeBroadcast);
mBluetoothManager = mContext.getSystemService(BluetoothManager.class);
mBluetoothAdapter = mBluetoothManager.getAdapter();
@@ -243,6 +250,25 @@
ShadowBluetoothUtils.reset();
}
+ /** Device start broadcasting so Preference summary should become "Audio Sharing" */
+ @Test
+ public void audioSharingStart_changeSummary() {
+ mSetFlagsRule.enableFlags(FLAG_ENABLE_LE_AUDIO_SHARING);
+ mController.onStart();
+ ArgumentCaptor<BluetoothLeBroadcast.Callback> broadcastCallbackCaptor =
+ ArgumentCaptor.forClass(BluetoothLeBroadcast.Callback.class);
+ mShadowAudioManager.setOutputDevice(DEVICE_OUT_BLUETOOTH_A2DP);
+ mAudioManager.setMode(AudioManager.MODE_NORMAL);
+ when(mLocalBluetoothLeBroadcast.isEnabled(null)).thenReturn(true);
+ verify(mLocalBluetoothLeBroadcast)
+ .registerServiceCallBack(any(), broadcastCallbackCaptor.capture());
+ BluetoothLeBroadcast.Callback callback = broadcastCallbackCaptor.getValue();
+
+ callback.onBroadcastStarted(0, 0);
+ assertThat(mPreference.getSummary().toString())
+ .isEqualTo(mContext.getText(R.string.media_output_audio_sharing).toString());
+ }
+
/**
* A2DP Bluetooth device(s) are connected, but no device is set as activated
* Preference summary should be "This device"
diff --git a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceControllerTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceControllerTest.kt
index 38f81fe..9473b04 100644
--- a/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceControllerTest.kt
+++ b/tests/spa_unit/src/com/android/settings/spa/app/specialaccess/BackupTasksAppsPreferenceControllerTest.kt
@@ -55,7 +55,8 @@
@Test
@RequiresFlagsEnabled(Flags.FLAG_ENABLE_PERFORM_BACKUP_TASKS_IN_SETTINGS)
fun getAvailabilityStatus_enableBackupTasksApps_returnAvailable() {
- assertThat(controller.isAvailable).isTrue()
+ // Feature is currently disabled so it should return false regardless of flag status.
+ assertThat(controller.isAvailable).isFalse()
}
@Test