Merge "Show "uninstall for all users" when >1 users installed it."
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6082182..4b311c1 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -560,15 +560,6 @@
                 android:value="true" />
         </activity>
 
-        <activity android:name="DateTimeSettingsSetupWizard"
-                  android:label="@string/date_and_time"
-                  android:theme="@android:style/Theme.DeviceDefault.Light.NoActionBar"
-                  android:screenOrientation="behind">
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-            </intent-filter>
-        </activity>
-
         <activity android:name="Settings$LocalePickerActivity"
                 android:label="@string/language_picker_title"
                 android:icon="@drawable/ic_settings_language"
@@ -3159,6 +3150,19 @@
                        android:value="true" />
         </activity-alias>
 
+        <activity-alias android:name="LocationDashboardAlias"
+                        android:targetActivity="Settings$LocationSettingsActivity">
+            <intent-filter>
+                <action android:name="com.android.settings.action.SETTINGS" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.security" />
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.location.LocationSettings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
+        </activity-alias>
+
         <activity android:name=".Settings$SystemDashboardActivity"
                   android:label="@string/header_category_system"
                   android:icon="@drawable/ic_settings_about">
@@ -3240,6 +3244,19 @@
                        android:resource="@string/gesture_preference_summary"/>
         </activity-alias>
 
+        <activity-alias android:name="PrivacyDashboardAlias"
+            android:targetActivity="Settings$PrivacySettingsActivity">
+            <intent-filter android:priority="60">
+                <action android:name="com.android.settings.action.SETTINGS" />
+            </intent-filter>
+            <meta-data android:name="com.android.settings.category"
+                       android:value="com.android.settings.category.ia.system" />
+            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+                       android:value="com.android.settings.PrivacySettings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                       android:value="true" />
+        </activity-alias>
+
         <activity-alias android:name="BackupResetDashboardAlias"
                         android:targetActivity="Settings$PrivacySettingsActivity">
             <intent-filter android:priority="60">
diff --git a/res/drawable/button_bg_transparent.xml b/res/drawable/button_bg_transparent.xml
new file mode 100644
index 0000000..d9c6fc8
--- /dev/null
+++ b/res/drawable/button_bg_transparent.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 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.
+-->
+
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+       android:insetLeft="4dp"
+       android:insetTop="6dp"
+       android:insetRight="4dp"
+       android:insetBottom="6dp">
+    <ripple android:color="?android:attr/colorControlHighlight">
+        <item android:id="@android:id/mask">
+            <shape android:shape="rectangle">
+                <corners android:radius="2dp"/>
+                <solid android:color="@android:color/white"/>
+            </shape>
+        </item>
+        <item>
+            <shape android:shape="rectangle">
+                <solid android:color="#00ffffff"/>
+                <!--make button border solid color, nontransparent-->
+                <stroke android:color="?android:attr/colorAccent" android:width="1dp"/>
+                <corners android:radius="2dp"/>
+            </shape>
+        </item>
+    </ripple>
+</inset>
\ No newline at end of file
diff --git a/res/layout-land/choose_lock_pattern.xml b/res/layout-land/choose_lock_pattern.xml
index 89e3d57..b4d5fce 100644
--- a/res/layout-land/choose_lock_pattern.xml
+++ b/res/layout-land/choose_lock_pattern.xml
@@ -41,37 +41,46 @@
             android:layout_marginBottom="@dimen/suw_content_frame_padding_bottom"
             android:orientation="vertical">
 
-            <LinearLayout
-                android:layout_width="match_parent"
+            <ImageView
+                android:id="@+id/suw_layout_icon"
+                style="@style/SuwGlifIcon"
+                android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:orientation="vertical">
+                android:layout_marginStart="0dp"
+                android:layout_marginEnd="0dp"
+                android:src="@drawable/ic_lock"/>
 
-                <ImageView
-                    android:id="@+id/suw_layout_icon"
-                    style="@style/SuwGlifIcon"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_marginStart="0dp"
-                    android:layout_marginEnd="0dp"
-                    android:src="@drawable/ic_lock" />
+            <ScrollView
+                android:id="@+id/scroll_layout_title_header"
+                android:layout_width="match_parent"
+                android:layout_height="0dp"
+                android:layout_weight="3.0">
 
-                <TextView
-                    android:id="@+id/suw_layout_title"
-                    style="@style/SuwGlifHeaderTitle"
+                <LinearLayout
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginStart="0dp"
-                    android:layout_marginEnd="0dp" />
+                    android:orientation="vertical">
 
-            </LinearLayout>
+                    <TextView
+                        android:id="@+id/suw_layout_title"
+                        style="@style/SuwGlifHeaderTitle"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="0dp"
+                        android:layout_marginEnd="0dp"/>
 
-            <!-- header message -->
-            <TextView android:id="@+id/headerText"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="16dp"
-                android:gravity="start|bottom"
-                android:textSize="18sp" />
+                    <!-- header message -->
+                    <TextView
+                        android:id="@+id/headerText"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="16dp"
+                        android:gravity="start|bottom"
+                        android:textSize="18sp"/>
+
+                </LinearLayout>
+
+            </ScrollView>
 
             <!-- footer can show a message, or confirm / restart buttons -->
             <RelativeLayout
diff --git a/res/layout-sw600dp/date_time_settings_setupwizard.xml b/res/layout-sw600dp/date_time_settings_setupwizard.xml
deleted file mode 100644
index 41e3021..0000000
--- a/res/layout-sw600dp/date_time_settings_setupwizard.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:id="@+id/layout_root"
-        android:layout_height="match_parent"
-        android:layout_width="match_parent"
-        android:paddingTop="96dip"
-        android:paddingStart="40dip"
-        android:paddingEnd="40dip"
-        android:paddingBottom="96dip"
-        android:orientation="vertical">
-
-    <FrameLayout android:id="@+id/timezone_dropdown_anchor"
-            android:layout_height="0px"
-            android:layout_width="match_parent"
-            android:layout_marginStart="40dip"
-            android:layout_marginEnd="40dip"/>
-
-    <LinearLayout android:layout_height="0px"
-                  android:layout_weight="1"
-                  android:layout_width="match_parent"
-                  android:orientation="vertical">
-
-        <fragment android:id="@+id/date_time_settings_fragment"
-                  class="com.android.settings.DateTimeSettings"
-                  android:layout_width="match_parent"
-                  android:layout_height="match_parent" />
-
-    </LinearLayout>
-
-    <RelativeLayout android:layout_height="wrap_content"
-                    android:layout_weight="0"
-                    android:layout_width="match_parent">
-
-        <View
-            android:id="@+id/bottom_divider"
-            android:layout_height="3dip"
-            android:layout_width="match_parent"
-            android:layout_marginTop="0dip"
-            android:layout_marginBottom="16dip"
-            android:background="@color/divider_color"
-            android:layout_above="@+id/next_button"/>
-
-        <Button android:id="@+id/next_button"
-            android:layout_width="wrap_content"
-            android:minWidth="208dip"
-            android:layout_height="48dip"
-            android:layout_marginTop="10dip"
-            android:layout_alignParentEnd="true"
-            android:text="@string/next_label"/>
-
-    </RelativeLayout>
-
-</LinearLayout>
diff --git a/res/layout-sw720dp/date_time_settings_setupwizard.xml b/res/layout-sw720dp/date_time_settings_setupwizard.xml
deleted file mode 100644
index 32c4d93..0000000
--- a/res/layout-sw720dp/date_time_settings_setupwizard.xml
+++ /dev/null
@@ -1,168 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2011 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
-  -->
-<RelativeLayout
-    android:id="@+id/layout_root"
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:orientation="vertical"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:paddingTop="@dimen/datetime_margin_top"
-    android:paddingStart="@dimen/screen_margin_sides"
-    android:paddingEnd="@dimen/screen_margin_sides"
-    android:paddingBottom="@dimen/datetime_margin_bottom">
-
-    <!-- Title: Set date & time-->
-    <TextView
-        android:id="@+id/title"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:minHeight="48dip"
-        android:layout_alignParentStart="true"
-        android:layout_marginStart="16dip"
-        android:layout_alignParentTop="true"
-        android:textSize="32dip"
-        android:textColor="@color/title_color"
-        android:text="@string/date_and_time_settings_title_setup_wizard"
-        android:gravity="bottom" />
-
-    <!-- Divider -->
-    <View
-        android:id="@+id/top_divider"
-        android:layout_width="match_parent"
-        android:layout_height="3dip"
-        android:layout_below="@id/title"
-        android:layout_marginTop="6dip"
-        android:layout_marginBottom="17dip"
-        android:background="@color/divider_color" />
-
-    <RelativeLayout
-        android:id="@+id/timezone_auto_time"
-        android:layout_width="716dip"
-        android:layout_height="wrap_content"
-        android:layout_centerHorizontal="true"
-        android:layout_below="@id/top_divider">
-        <!-- timezone -->
-        <Button
-            android:id="@+id/time_zone_button"
-            style="?android:attr/dropDownSpinnerStyle"
-            android:layout_width="304dip"
-            android:layout_height="48dip"
-            android:layout_alignParentStart="true"
-            android:layout_alignBottom="@+id/date_time_auto"
-            android:gravity="start|center_vertical"
-            android:textAppearance="?android:attr/textAppearanceMedium"
-            android:textSize="20dip" />
-
-        <LinearLayout
-            android:id="@+id/date_time_auto"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:orientation="vertical"
-            android:layout_toEndOf="@id/time_zone_button"
-            android:layout_marginStart="32dip"
-            android:layout_alignParentEnd="true">
-
-            <Switch
-                android:id="@+id/date_time_auto_button"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:minHeight="?android:attr/listPreferredItemHeight"
-                android:layout_marginStart="16dip"
-                android:text="@string/date_time_auto"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:textSize="20dip" />
-
-            <!-- Divider -->
-            <View
-                android:layout_width="match_parent"
-                android:layout_height="1px"
-                android:background="@color/divider_color" />
-        </LinearLayout>
-    </RelativeLayout>
-
-    <LinearLayout
-        android:layout_width="624dip"
-        android:layout_height="wrap_content"
-        android:layout_centerHorizontal="true"
-        android:layout_below="@+id/timezone_auto_time"
-        android:layout_marginTop="48dip"
-        android:orientation="horizontal">
-
-        <LinearLayout
-            android:layout_width="312dip"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
-            <TextView
-                android:id="@+id/date_picker_title"
-                android:layout_width="match_parent"
-                android:layout_height="48dip"
-                android:text="@string/date_picker_title"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:textSize="20dip"
-                android:clickable="false"
-                android:longClickable="false"
-                android:gravity="center" />
-            <DatePicker
-                android:id="@+id/date_picker"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_below="@id/date_picker_title" />
-        </LinearLayout>
-
-        <!-- divider -->
-        <View
-            android:id="@+id/center_divider"
-            android:layout_width="1dip"
-            android:layout_height="match_parent"
-            android:background="@color/divider_color" />
-
-        <LinearLayout
-            android:layout_width="312dip"
-            android:layout_height="wrap_content"
-            android:orientation="vertical">
-            <TextView
-                android:id="@+id/time_picker_title"
-                android:layout_width="match_parent"
-                android:layout_height="48dip"
-                android:text="@string/time_picker_title"
-                android:textAppearance="?android:attr/textAppearanceMedium"
-                android:textSize="20dip"
-                android:gravity="center" />
-
-            <TimePicker
-                android:id="@+id/time_picker"
-                android:layout_width="match_parent"
-                android:layout_height="wrap_content"
-                android:layout_below="@id/time_picker_title" />
-        </LinearLayout>
-    </LinearLayout>
-
-    <View
-        android:id="@+id/bottom_divider"
-        android:layout_width="match_parent"
-        android:layout_height="3dip"
-        android:layout_alignStart="@id/timezone_auto_time"
-        android:layout_above="@+id/next_button"
-        android:layout_marginBottom="16dip"
-        android:background="@color/divider_color" />
-
-    <Button
-        android:id="@+id/next_button"
-        style="@style/setup_wizard_button"
-        android:layout_alignParentBottom="true"
-        android:layout_alignParentEnd="true"
-        android:text="@string/next_label" />
-</RelativeLayout>
diff --git a/res/layout/app_action_buttons.xml b/res/layout/app_action_buttons.xml
new file mode 100644
index 0000000..5b00205
--- /dev/null
+++ b/res/layout/app_action_buttons.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2016 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:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="bottom"
+    android:paddingTop="4dp"
+    android:paddingStart="8dp"
+    android:paddingEnd="8dp"
+    android:orientation="horizontal">
+
+    <Button
+        android:id="@+id/left_button"
+        style="@style/AppActionPrimaryButton"
+        android:layout_width="0dp"
+        android:layout_weight="1"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:paddingEnd="8dp"/>
+
+    <Button
+        android:id="@+id/right_button"
+        style="@style/AppActionPrimaryButton"
+        android:layout_width="0dp"
+        android:layout_weight="1"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:paddingStart="8dp"/>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/app_details.xml b/res/layout/app_details.xml
new file mode 100644
index 0000000..4e654fd
--- /dev/null
+++ b/res/layout/app_details.xml
@@ -0,0 +1,90 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2016 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:id="@+id/app_snippet"
+    style="@style/AppHeader"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center_horizontal|top"
+    android:orientation="vertical"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
+
+    <!-- App snippet with buttons -->
+    <ImageView
+        android:id="@android:id/icon"
+        android:layout_width="80dp"
+        android:layout_height="80dp"
+        android:scaleType="fitXY"
+        android:layout_gravity="center_horizontal"
+        android:antialias="true"/>
+
+    <TextView
+        android:id="@android:id/title"
+        style="@style/TextAppearance.AppHeaderTitle"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:singleLine="true"
+        android:ellipsize="marquee"
+        android:gravity="center_horizontal"
+        android:paddingTop="8dp"/>
+
+    <TextView
+        android:id="@android:id/summary"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:gravity="center_horizontal"
+        android:singleLine="true"
+        android:ellipsize="marquee"
+        android:textAppearance="@android:style/TextAppearance.Material.Body1"
+        android:textColor="?android:attr/textColorSecondary"/>
+
+    <LinearLayout
+        android:id="@+id/app_detail_links"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="bottom"
+        android:paddingStart="8dp"
+        android:paddingEnd="8dp"
+        android:orientation="horizontal">
+
+        <ImageButton
+            android:id="@+id/left_button"
+            style="@style/AppHeaderLinkButton"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:paddingEnd="8dp"
+            android:tint="?android:attr/colorAccent"/>
+
+        <ImageButton
+            android:id="@+id/right_button"
+            style="@style/AppHeaderLinkButton"
+            android:layout_width="0dp"
+            android:layout_weight="1"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:paddingStart="8dp"
+            android:src="@drawable/ic_settings_24dp"
+            android:tint="?android:attr/colorAccent"/>
+
+    </LinearLayout>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/condition_card.xml b/res/layout/condition_card.xml
index 7c9e46d..4edd0f2 100644
--- a/res/layout/condition_card.xml
+++ b/res/layout/condition_card.xml
@@ -66,7 +66,7 @@
         <LinearLayout
             android:id="@+id/detail_group"
             android:layout_width="match_parent"
-            android:layout_height="0dp"
+            android:layout_height="wrap_content"
             android:paddingStart="72dp"
             android:visibility="gone"
             android:orientation="vertical">
@@ -96,7 +96,7 @@
                 android:layout_height="wrap_content"
                 android:paddingTop="8dp"
                 android:paddingBottom="8dp"
-                style="?attr/buttonBarStyle"
+                style="?android:attr/buttonBarStyle"
                 android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
 
                 <Button
diff --git a/res/layout/confirm_lock_pattern_base.xml b/res/layout/confirm_lock_pattern_base.xml
index 7c960a2..e6b7887 100644
--- a/res/layout/confirm_lock_pattern_base.xml
+++ b/res/layout/confirm_lock_pattern_base.xml
@@ -29,47 +29,54 @@
         android:layout_gravity="top|center_horizontal"
         android:paddingTop="@dimen/confirm_credentials_top_padding">
 
-        <TextView
-            style="@android:style/TextAppearance.Material.Headline"
-            android:id="@+id/headerText"
-            android:layout_marginStart="?attr/confirmDeviceCredentialsSideMargin"
-            android:layout_marginEnd="?attr/confirmDeviceCredentialsSideMargin"
-            android:layout_marginTop="?attr/confirmDeviceCredentialsTopMargin"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textColor="?android:attr/colorAccent"/>
+        <ScrollView
+            android:layout_width="match_parent"
+            android:layout_height="0dp"
+            android:layout_weight="2">
 
-        <TextView
-            style="@android:style/TextAppearance.Material.Body1"
-            android:id="@+id/detailsText"
-            android:layout_marginStart="?attr/confirmDeviceCredentialsSideMargin"
-            android:layout_marginEnd="?attr/confirmDeviceCredentialsSideMargin"
-            android:layout_marginTop="12dp"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            />
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical">
 
-        <Button
-            style="@android:style/Widget.Material.Button.Borderless"
-            android:id="@+id/cancelButton"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/cancel"
-            android:layout_marginStart="16dp"
-            android:layout_marginEnd="16dp"
-            android:layout_marginTop="16dp"/>
+                <TextView
+                    style="@android:style/TextAppearance.Material.Headline"
+                    android:id="@+id/headerText"
+                    android:layout_marginStart="?attr/confirmDeviceCredentialsSideMargin"
+                    android:layout_marginEnd="?attr/confirmDeviceCredentialsSideMargin"
+                    android:layout_marginTop="?attr/confirmDeviceCredentialsTopMargin"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textColor="?android:attr/colorAccent"/>
 
-        <View android:layout_width="match_parent"
-              android:layout_height="0dp"
-              android:layout_weight="0.5"/>
+                <TextView
+                    style="@android:style/TextAppearance.Material.Body1"
+                    android:id="@+id/detailsText"
+                    android:layout_marginStart="?attr/confirmDeviceCredentialsSideMargin"
+                    android:layout_marginEnd="?attr/confirmDeviceCredentialsSideMargin"
+                    android:layout_marginTop="12dp"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"/>
+
+                <Button
+                    style="@android:style/Widget.Material.Button.Borderless"
+                    android:id="@+id/cancelButton"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:text="@string/cancel"
+                    android:layout_marginStart="16dp"
+                    android:layout_marginEnd="16dp"
+                    android:layout_marginTop="16dp"/>
+            </LinearLayout>
+
+        </ScrollView>
 
         <com.android.internal.widget.LockPatternView
             android:id="@+id/lockPattern"
             android:layout_width="312dp"
-            android:layout_height="312dp"
-            android:layout_gravity="center_horizontal"
-            android:layout_marginTop="-46dp"
-            android:layout_marginBottom="-46dp"/>
+            android:layout_height="0dp"
+            android:layout_weight="3"
+            android:layout_gravity="center_horizontal"/>
 
         <LinearLayout
             android:layout_width="match_parent"
diff --git a/res/layout/date_time_setup_custom_list_item_2.xml b/res/layout/date_time_custom_list_item_2.xml
similarity index 100%
rename from res/layout/date_time_setup_custom_list_item_2.xml
rename to res/layout/date_time_custom_list_item_2.xml
diff --git a/res/layout/date_time_settings_setupwizard.xml b/res/layout/date_time_settings_setupwizard.xml
deleted file mode 100644
index 7227f2b..0000000
--- a/res/layout/date_time_settings_setupwizard.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 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:id="@+id/layout_root"
-        android:layout_height="fill_parent"
-        android:layout_width="fill_parent"
-        android:orientation="vertical">
-
-    <View
-        android:id="@+id/timezone_dropdown_anchor"
-        android:layout_width="match_parent"
-        android:layout_marginStart="20dip"
-        android:layout_marginEnd="20dip"
-        android:layout_height="0px" />
-
-    <LinearLayout android:layout_height="0px"
-                  android:layout_weight="1"
-                  android:layout_width="fill_parent"
-                  android:orientation="vertical">
-        <fragment android:id="@+id/date_time_settings_fragment"
-                  class="com.android.settings.DateTimeSettings"
-                  android:layout_width="fill_parent"
-                  android:layout_height="fill_parent" />
-    </LinearLayout>
-
-    <RelativeLayout android:layout_height="wrap_content"
-                    android:layout_weight="0"
-                    android:padding="10dip"
-                    android:layout_width="fill_parent">
-
-        <Button android:id="@+id/next_button"
-            android:layout_width="150dip"
-            android:layout_height="wrap_content"
-            android:layout_alignParentEnd="true"
-            android:text="@string/next_label"
-        />
-
-    </RelativeLayout>
-
-</LinearLayout>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index ff39c80..5d54c47 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netwerk en internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Gekoppelde toestelle"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Programme en kennisgewings"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Gebruiker en rekeninge"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Programverstekke"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Taal: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Instellings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Soekinstellings"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Vervang werkprofielklanke?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Vervang"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Jou huidige werkprofielklanke sal vervang word met jou persoonlike profiel se klanke"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Stel kennisgewings op"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Kennisgewingvoorkeure"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Gevorderd"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Werkkennisgewings"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Flikker kennisgewing-liggie"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Programme is nie geïnstalleer nie"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Geïnstalleerde programme"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Jou berging word nou deur die bergingbestuurder bestuur"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 047fdc0..d95fb7c 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"አውታረ መረብ እና በይነመረብ"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"የተገናኙ መሣሪያዎች"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"መተግበሪያዎች እና ማሳወቂያዎች"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ተጠቃሚ እና መለያዎች"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"የመተግበሪያ ነባሪዎች"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"ቋንቋ፦ <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ቅንብሮች"</string>
     <string name="search_menu" msgid="6283419262313758339">"የፍለጋ ቅንብሮች"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"በመገለጫ ድምጾች ይተኩ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ተካ"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"የአሁኑ የስራ መገለጫዎ ድምጾች በግል መገለጫ ድምጾችዎ ይተካሉ"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"ማሳወቂያዎችን አዋቅር"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"የማሳወቂያ ምርጫዎች"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"የላቀ"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"የስራ ማሳወቂያዎች"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"የማሳወቂያ ብርሃን አሳይ"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"መተግበሪያዎች አልተጫኑም"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"የተጫኑ መተግበሪያዎች"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"የእርስዎ ማከማቻ አሁን በማከማቻ አስተዳዳሪ እየተዳደረ ነው"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 649061b..8ab3da2 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -2617,8 +2617,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"الشبكة والإنترنت"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"الأجهزة المرتبطة"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"التطبيقات والإشعارات"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"المستخدم والحسابات"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"الاعدادات الافتراضية للتطبيق"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"اللغة: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"الإعدادات"</string>
     <string name="search_menu" msgid="6283419262313758339">"إعدادات البحث"</string>
@@ -2721,7 +2722,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"أتستبدل أصوات ملف العمل؟"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"استبدال"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"سيتم استبدال الأصوات الحالية للملف الشخصي للعمل بأصوات ملفك الشخصي على حسابك الشخصي."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"تهيئة الإشعارات"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"تفضيلات الإشعارات"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"متقدمة"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"إشعارات العمل"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ضوء الاشعار بالنبض"</string>
@@ -3415,4 +3416,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"التطبيقات غير مثبَّتة"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"التطبيقات المثبَّتة"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"تتم إدارة السعة التخزينية لجهازك الآن عن طريق مدير السعة التخزينية"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml
index 638d6e4..94180ac 100644
--- a/res/values-az-rAZ/strings.xml
+++ b/res/values-az-rAZ/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Şəbəkə və İnternet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Qoşulmuş cihazlar"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Tətbiq və bildirişlər"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"İstifadəçi və hesablar"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Tətbiq defoltları"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Dil: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ayarlar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Axtarış ayarları"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"İş profili səsləri əvəz edilsin?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Əvəz edin"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Cari iş profili səsləriniz şəxsi profil səsləri ilə əvəz olunacaq"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfiqurasiya bildirişləri"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Bildiriş tərcihləri"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Qabaqcıl"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"İş bildirişləri"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Puls bildiriş işığı"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Tətbiq quraşdırılmayıb"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Quraşdırılmış tətbiqlər"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Yaddaşınız indi yaddaş meneceri tərəfindən idarə olunur"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 15b0a31..3d4739d 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -2551,8 +2551,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mreža i internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Povezani uređaji"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacije i obaveštenja"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Korisnik i nalozi"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Podrazumevane aplikacije"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Podešavanja"</string>
     <string name="search_menu" msgid="6283419262313758339">"Pretražite podešavanja"</string>
@@ -2655,7 +2656,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Zameniti zvuke profila za Work?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Zameni"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Aktuelni zvuci profila za Work će biti zamenjeni zvucima sa ličnog profila"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurišite obaveštenja"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Podešavanja obaveštenja"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Napredna"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Obaveštenja za Work"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsirajuće obaveštenje"</string>
@@ -3310,4 +3311,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Aplikacije koje nisu instalirane"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Instalirane aplikacije"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Memorijskim prostorom sada upravlja Menadžer memorijskog prostora"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-be-rBY/strings.xml b/res/values-be-rBY/strings.xml
index c3e8600..be3df42 100644
--- a/res/values-be-rBY/strings.xml
+++ b/res/values-be-rBY/strings.xml
@@ -2573,8 +2573,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Сетка і інтэрнэт"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Падключаныя прылады"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Праграмы і апавяшчэнні"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Карыстальнік і ўліковыя запісы"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Cтандартныя налады праграмы"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Мова: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Налады"</string>
     <string name="search_menu" msgid="6283419262313758339">"Налады пошуку"</string>
@@ -2677,7 +2678,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Замяніць гукі прац. профілю?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Замяніць"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Вашы бягучыя гукі працоўнага профілю будуць заменены гукамі вашага асабістага профілю"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Наладзіць апавяшчэнні"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Параметры апавяшчэнняў"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Пашыраныя"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Апавяшчэнні працоўнага профілю"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Мігценне індыкатара апавяшчэння"</string>
@@ -3345,4 +3346,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Праграмы не ўсталяваны"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Усталяваныя праграмы"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Ваша сховішча зараз знаходзіцца пад кіраваннем менеджара сховішча"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 270f9ba..188204b 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Мрежа и интернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Свързани устройства"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Приложения и известия"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Потребител и профили"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Стандартни настройки на приложението"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Език: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Настройки"</string>
     <string name="search_menu" msgid="6283419262313758339">"Търсете в настройките"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Замяна на звуците за служебния потребителски профил?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Замяна"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Текущите звуци за служебния ви потребителски профил ще бъдат заменени с тези за личния ви"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Конфигуриране на известията"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Предпочитания за известията"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Разширени"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Служебни известия"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Пулсираща светлина"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Приложения, които не са инсталирани"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Инсталирани приложения"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Хранилището ви вече се управлява от съответния мениджър"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-bn-rBD/strings.xml b/res/values-bn-rBD/strings.xml
index cf5746b..94dbdc1 100644
--- a/res/values-bn-rBD/strings.xml
+++ b/res/values-bn-rBD/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"নেটওয়ার্ক ও ইন্টারনেট"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"সংযুক্ত ডিভাইস"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"অ্যাপ্স &amp; বিজ্ঞপ্তি"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ব্যবহারকারি &amp; অ্যাকাউন্টগুলি"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"অ্যাপ ডিফল্টগুলি"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"ভাষা: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"সেটিংস"</string>
     <string name="search_menu" msgid="6283419262313758339">"অনুসন্ধান সেটিংস"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"কর্মস্থলের প্রোফাইলের ধ্বনিগুলিকে প্রতিস্থাপন করতে চান?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"প্রতিস্থাপন করুন"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"আপনার বর্তমান কর্মস্থালের প্রোফাইলের ধ্বনিগুলিকে আপনার ব্যক্তিগত প্রোফাইলের ধ্বনিগুলির সাথে প্রতিস্থাপন করা হবে"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"বিজ্ঞপ্তি কনফিগার করুন"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"বিজ্ঞপ্তির পছন্দগুলি"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"উন্নত"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"কর্মস্থলের বিজ্ঞপ্তিগুলি"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"পাল্স বিজ্ঞপ্তির জন্য আলো"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"অ্যাপ্স ইনস্টল করা হয়নি"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"ইনস্টল করা অ্যাপ্স"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"আপনার সঞ্চয়স্থান এখন সঞ্চয়স্থান পরিচালকের দ্বারা পরিচালিত হচ্ছে"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-bs-rBA/strings.xml b/res/values-bs-rBA/strings.xml
index a0e0ce4..eb68649 100644
--- a/res/values-bs-rBA/strings.xml
+++ b/res/values-bs-rBA/strings.xml
@@ -2551,8 +2551,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mreža i internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Povezani uređaji"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacije i obavještenja"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Korisnik i računi"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Zadane akcije aplikacije"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Postavke"</string>
     <string name="search_menu" msgid="6283419262313758339">"Postavke pretraživanja"</string>
@@ -2655,7 +2656,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Želite li zamijeniti zvuke radnog profila?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Zamijeni"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Postojeći zvuci vašeg radnog profila će se zamijeniti zvucima vašeg ličnog profila"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfiguriraj obavještenja"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Pref. postavke obavještenja"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Napredno"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Obavještenja za posao"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsirajuće svjetlo obavještenja"</string>
@@ -3310,4 +3311,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Neinstalirane aplikacije"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Instalirane aplikacije"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Vašom pohranom sada upravlja upravitelj pohrane"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index cdd3e6b..24cb3da 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Xarxa i Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositius connectats"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicacions i notificacions"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Usuari i comptes"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Valors predeterminats de l\'aplicació"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configuració"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configuració de la cerca"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Subst. sons del perfil prof.?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Substitueix"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"El sons actuals del teu perfil professional se substituiran pels del perfil personal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configura les notificacions"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferències de notificació"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avançada"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificacions de la feina"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Llum de notificació"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Aplicacions no instal·lades"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Aplicacions instal·lades"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Ara mateix, el gestor d\'emmagatzematge gestiona el teu emmagatzematge"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index a169d19..883e843 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -811,7 +811,7 @@
     <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP adresa"</string>
     <string name="wifi_saved_access_points_label" msgid="2013409399392285262">"Uložené sítě"</string>
     <string name="wifi_advanced_settings_label" msgid="3654366894867838338">"Nastavení IP adresy"</string>
-    <string name="wifi_advanced_not_available" msgid="5823045095444154586">"Pokročilá nastavení sítě Wi-Fi nejsou pro tohoto uživatele dostupná."</string>
+    <string name="wifi_advanced_not_available" msgid="5823045095444154586">"Rozšířená nastavení sítě Wi-Fi nejsou pro tohoto uživatele dostupná."</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"Uložit"</string>
     <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"Zrušit"</string>
     <string name="wifi_ip_settings_invalid_ip_address" msgid="2513142355364274970">"Zadejte platnou IP adresu."</string>
@@ -2573,8 +2573,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Síť a internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Připojená zařízení"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikace a oznámení"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Uživatel a účty"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Výchozí aplikace"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Jazyk: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Nastavení"</string>
     <string name="search_menu" msgid="6283419262313758339">"Nastavení vyhledávání"</string>
@@ -2677,7 +2678,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Nahradit zvuky prac. profilu?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Nahradit"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Zvuky aktuálního pracovního profilu budou nahrazeny zvuky z osobního profilu"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurovat oznámení"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Nastavení oznámení"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Rozšířená nastavení"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Pracovní oznámení"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Blikat kontrolkou oznámení"</string>
@@ -3345,4 +3346,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Aplikace nejsou nainstalovány"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Nainstalované aplikace"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Úložiště je nyní spravováno správcem úložiště."</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 3872957..5e22ab2 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netværk &amp; internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Tilsluttede enheder"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps og underretninger"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Bruger og konti"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Appstandarder"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Sprog: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Indstillinger"</string>
     <string name="search_menu" msgid="6283419262313758339">"Søgeindstillinger"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Erstat lyde for arbejdsprofil?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Erstat"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Dine aktuelle lyde for din arbejdsprofil erstattes af lydene fra din private profil"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurer underretninger"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Underretningsindstillinger"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avanceret"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Arbejdsunderretninger"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Blink ved nye underretninger"</string>
@@ -3091,7 +3092,7 @@
     <string name="color_temperature_toast" msgid="4974218172133854827">"Du skal slå skærmen fra, før du kan anvende farveændringer"</string>
     <string name="ota_disable_automatic_update" msgid="2319639631655915050">"Automatiske systemopdateringer"</string>
     <string name="usage" msgid="2977875522080448986">"Forbrug"</string>
-    <string name="cellular_data_usage" msgid="2763710678354680712">"Dataforbrug for mobilenhed"</string>
+    <string name="cellular_data_usage" msgid="2763710678354680712">"Forbrug af mobildata"</string>
     <string name="wifi_data_usage" msgid="686754111095324306">"Dataforbrug via Wi-Fi"</string>
     <string name="ethernet_data_usage" msgid="5108764537574354616">"Forbrug af Ethernet-data"</string>
     <string name="wifi" msgid="1081550856200013637">"Wi-Fi"</string>
@@ -3102,8 +3103,8 @@
     <string name="cell_warning_only" msgid="763147658209027140">"<xliff:g id="ID_1">%1$s</xliff:g> Dataadvarsel"</string>
     <string name="cell_warning_and_limit" msgid="2273413629267437470">"<xliff:g id="ID_1">%1$s</xliff:g> Dataadvarsel / <xliff:g id="ID_2">%2$s</xliff:g> Datagrænse"</string>
     <string name="billing_cycle" msgid="5169909190811133499">"Faktureringscyklus"</string>
-    <string name="billing_cycle_summary" msgid="9009106526129293752">"Den månedlige cyklus starter den <xliff:g id="ID_1">%1$s</xliff:g> i hver måned"</string>
-    <string name="billing_cycle_fragment_summary" msgid="1940518156600077066">"Hver måned fra og med den <xliff:g id="ID_1">%1$s</xliff:g>"</string>
+    <string name="billing_cycle_summary" msgid="9009106526129293752">"Den månedlige cyklus starter den <xliff:g id="ID_1">%1$s</xliff:g>. i hver måned"</string>
+    <string name="billing_cycle_fragment_summary" msgid="1940518156600077066">"Hver måned fra og med den <xliff:g id="ID_1">%1$s</xliff:g>."</string>
     <string name="network_restrictions" msgid="8234695294536675380">"Netværksbegrænsninger"</string>
     <string name="operator_warning" msgid="1862988028996859195">"Mobilselskabets dataopgørelse kan variere fra enhedens opgørelse."</string>
     <string name="data_used_template" msgid="3245919669966296505">"<xliff:g id="ID_1">%1$s</xliff:g> anvendt"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Apps, som ikke er installeret"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Installerede aps"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Din lagerplads administreres nu af lageradministratoren"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 5e48966..ddba737 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netzwerk &amp; Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Verbundene Geräte"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps &amp; Benachrichtigungen"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Nutzer &amp; Konten"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"App-Standardeinstellungen"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Sprache: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Einstellungen"</string>
     <string name="search_menu" msgid="6283419262313758339">"Sucheinstellungen"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Töne für Arbeitsprofil ersetzen?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Ersetzen"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Deine aktuellen Töne für das Arbeitsprofil werden durch die Töne für das persönliche Profil ersetzt"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Benachrichtigungen"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Benachrichtigungseinstellungen"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Erweitert"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Geschäftliche Benachrichtigungen"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Benachrichtigungslicht"</string>
@@ -2669,7 +2670,7 @@
     </plurals>
     <string name="no_notification_listeners" msgid="3487091564454192821">"Keine installierte App hat Benachrichtigungszugriff angefordert."</string>
     <string name="notification_listener_security_warning_title" msgid="5522924135145843279">"Benachrichtigungszugriff für <xliff:g id="SERVICE">%1$s</xliff:g> zulassen?"</string>
-    <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> kann alle Benachrichtigungen lesen, darunter auch persönliche Informationen wie Kontaktnamen und eingehende Nachrichten. Außerdem können Benachrichtigungen geschlossen oder Schaltflächen in den Benachrichtigungen betätigt werden. \n\nZusätzlich kann durch die App die \"Nicht stören\"-Funktion aktiviert bzw. deaktiviert werden. Verwandte Einstellungen können ebenfalls geändert werden."</string>
+    <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> kann alle Benachrichtigungen lesen, darunter auch persönliche Informationen wie Kontaktnamen und eingehende Nachrichten. Außerdem können Benachrichtigungen geschlossen und damit verbundene Aktionen ausgelöst werden. \n\nZusätzlich kann durch die App die \"Nicht stören\"-Funktion aktiviert bzw. deaktiviert werden. Verwandte Einstellungen können ebenfalls geändert werden."</string>
     <string name="notification_listener_disable_warning_summary" msgid="6738915379642948000">"Wenn du den Benachrichtigungszugriff für <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> deaktivierst, wird möglicherweise auch der \"Nicht stören\"-Zugriff deaktiviert."</string>
     <string name="notification_listener_disable_warning_confirm" msgid="8333442186428083057">"Deaktivieren"</string>
     <string name="notification_listener_disable_warning_cancel" msgid="8586417377104211584">"Abbrechen"</string>
@@ -3191,7 +3192,7 @@
     <string name="support_escalation_title" msgid="4111071371281023145">"Wir sind für dich da"</string>
     <string name="support_escalation_24_7_title" msgid="8118369197749832074">"Wir sind täglich rund um die Uhr für dich da"</string>
     <string name="support_escalation_24_7_content_description" msgid="3772776213036994533">"Wir sind täglich rund um die Uhr für dich da"</string>
-    <string name="support_escalation_summary" msgid="8473084168776014405">"Unser Kundenservice hilft dir beim Lösen von Problemen"</string>
+    <string name="support_escalation_summary" msgid="8473084168776014405">"Unser Kundenservice hilft dir gerne weiter"</string>
     <string name="support_escalation_24_7_summary" msgid="2802773279262547187">"Unser Kundenservice steht täglich rund um die Uhr zur Verfügung"</string>
     <string name="support_escalation_closed_summary" msgid="2240967274380168303">"Durchsuche die Hilfe oder versuche es noch einmal während der Geschäftszeiten des Supports (Ortszeit):&lt;br&gt;&lt;b&gt;<xliff:g id="OPERATION_HOURS">%s</xliff:g>&lt;/b&gt;"</string>
     <string name="support_escalation_no_internet_summary" msgid="2526082812336597989">"Geschäftszeiten des telefonischen Supports (Ortszeit)&lt;br&gt;&lt;b&gt;<xliff:g id="OPERATION_HOURS">%s</xliff:g>&lt;/b&gt;"</string>
@@ -3277,4 +3278,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Nicht installierte Apps"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Installierte Apps"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Dein Speicher wird jetzt vom Speichermanager verwaltet"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 3dcaaa2..d267031 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Δίκτυο και διαδίκτυο"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Συνδεδεμένες συσκευές"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Εφαρμογές και ειδοποιήσεις"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Χρήστης και λογαριασμοί"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Προεπιλογές εφαρμογής"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Γλώσσα: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ρυθμίσεις"</string>
     <string name="search_menu" msgid="6283419262313758339">"Ρυθμίσεις αναζήτησης"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Αντικατάσταση ήχων προφίλ εργασίας;"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Αντικατάσταση"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Οι τρέχοντες ήχοι του προφίλ εργασίας σας θα αντικατασταθούν με τους ήχους του προσωπικού προφίλ σας"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Διαμόρφωση ειδοποιήσεων"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Προτιμήσεις ειδοποιήσεων"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Σύνθετες ρυθμίσεις"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Ειδοποιήσεις εργασίας"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Φωτεινή ένδειξη ειδοπ."</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Μη εγκατεστημένες εφαρμογές"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Εγκατεστημένες εφαρμογές"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Στο εξής, γίνεται διαχείριση του αποθηκευτικού σας χώρου από τον διαχειριστή αποθηκευτικού χώρου"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index d82ca86..9406f5b 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Network &amp; Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Connected devices"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps &amp; notifications"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"User &amp; accounts"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"App defaults"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Language: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Settings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Search Settings"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Replace work profile sounds?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Replace"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Your current work profile sounds will be replaced with your personal profile sounds"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configure notifications"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Notification preferences"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Advanced"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Work notifications"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulse notification light"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Apps not installed"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Installed apps"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Your storage is now being managed by the storage manager"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index c8b7605..804a36d 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Network &amp; Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Connected devices"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps &amp; notifications"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"User &amp; accounts"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"App defaults"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Language: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Settings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Search Settings"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Replace work profile sounds?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Replace"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Your current work profile sounds will be replaced with your personal profile sounds"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configure notifications"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Notification preferences"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Advanced"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Work notifications"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulse notification light"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Apps not installed"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Installed apps"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Your storage is now being managed by the storage manager"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index c8b7605..804a36d 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Network &amp; Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Connected devices"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps &amp; notifications"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"User &amp; accounts"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"App defaults"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Language: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Settings"</string>
     <string name="search_menu" msgid="6283419262313758339">"Search Settings"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Replace work profile sounds?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Replace"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Your current work profile sounds will be replaced with your personal profile sounds"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configure notifications"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Notification preferences"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Advanced"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Work notifications"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulse notification light"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Apps not installed"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Installed apps"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Your storage is now being managed by the storage manager"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 33cee30..2a5e13a 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Internet y red"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps y notificaciones"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Usuario y cuentas"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Valores predeterminados de apps"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configuración"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configuración de búsqueda"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"¿Reemplazar sonidos de perfil?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Reemplazar"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Se reemplazarán los sonidos actuales de tu perfil de trabajo por los de tu perfil personal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurar las notificaciones"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferencias de notificaciones"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avanzada"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificaciones de trabajo"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Luz de notificación"</string>
@@ -3273,4 +3274,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Apps no instaladas"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Apps instaladas"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Tu almacenamiento ahora está a cargo del administrador de almacenamiento"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index d981038..584885c 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -2527,8 +2527,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Red e Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicaciones y notificaciones"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Cuentas de usuario"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Valores predeterminados de aplicaciones"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ajustes"</string>
     <string name="search_menu" msgid="6283419262313758339">"Ajustes de búsqueda"</string>
@@ -2631,7 +2632,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"¿Sustituir sonidos del perfil de trabajo?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Sustituir"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Se sustituirán los sonidos actuales del perfil de trabajo por los sonidos del perfil personal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurar notificaciones"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferencias de notificaciones"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Opciones avanzadas"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificaciones de trabajo"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Usar LED de notificaciones"</string>
@@ -3273,4 +3274,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Aplicaciones no instaladas"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Aplicaciones instaladas"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"El Administrador de Almacenamiento gestiona ahora el almacenamiento"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml
index edf6643..2610e9a 100644
--- a/res/values-et-rEE/strings.xml
+++ b/res/values-et-rEE/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Võrk ja Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Ühendatud seadmed"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Rakendused ja märguanded"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Kasutaja ja kontod"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Vaikerakendused"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Keel: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Seaded"</string>
     <string name="search_menu" msgid="6283419262313758339">"Otsingu seaded"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Kas asendada tööprofiili helid?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Asenda"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Teie praegused tööprofiili helid asendatakse isikliku profiili helidega"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Märguannete seadistamine"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Märguannete eelistused"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Täpsemad"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Töö märguanded"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Vilkuv märguande tuli"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Rakendused pole installitud"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Installitud rakendused"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Teie salvestusruumi haldab nüüd salvestusruumi haldur"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-eu-rES/strings.xml b/res/values-eu-rES/strings.xml
index 48cfa94..d6500db1 100644
--- a/res/values-eu-rES/strings.xml
+++ b/res/values-eu-rES/strings.xml
@@ -2281,7 +2281,7 @@
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> bertsioa"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Ahaztu VPN konexioa"</string>
     <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Dagoen VPN konexioa ordeztu nahi duzu?"</string>
-    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"VPNa beti aktibatuta egoteko aukera aktibatu nahi duzu?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"VPNa beti aktibatuta egoteko aukera ezarri nahi duzu?"</string>
     <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ezarpen hau aktibatzen baduzu, ez duzu Interneteko konexiorik izango VPN sarera behar bezala konektatu arte"</string>
     <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Lehendik duzun VPNa ordeztuko da eta ez duzu Interneteko konexiorik izango VPN sarera behar bezala konektatu arte"</string>
     <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Beti aktibatuta dagoen VPN sare batera konektatuta zaude dagoeneko. Beste VPN batera konektatzen bazara, lehendik duzuna ordeztuko da eta desaktibatu egingo da beti aktibatuta edukitzeko modua."</string>
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Sareak eta Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Konektatutako gailuak"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikazioak eta jakinarazpenak"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Erabiltzailea eta kontuak"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Aplikazio lehenetsiak"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Hizkuntza: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ezarpenak"</string>
     <string name="search_menu" msgid="6283419262313758339">"Bilaketa-ezarpenak"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Laneko profilaren soinua ordeztu?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Ordeztu"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Laneko profilaren soinuak profil pertsonaleko soinuekin ordeztuko dira"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfiguratu jakinarazpenak"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Jakinarazpenen hobespenak"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Ezarpen aurreratuak"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Laneko jakinarazpenak"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Jakinarazpen-argi keinukaria"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Instalatu gabeko aplikazioak"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Instalatutako aplikazioak"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Biltegi-kudeatzailea ari da biltegia kudeatzen"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 510bcdb..75b2d11 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"شبکه و اینترنت"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"دستگاه‌های متصل"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"برنامه‌ها و اعلان‌ها"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"حساب‌های کاربر"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"پیش‌فرض‌های برنامه"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"زبان: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"تنظیمات"</string>
     <string name="search_menu" msgid="6283419262313758339">"تنظیمات جستجو"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"صداهای نمایه کاری‌تان جایگزین شوند؟"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"جایگزینی"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"صداهای نمایه کاری کنونی‌تان با صداهای نمایه شخصی‌تان جایگزین می‌شوند"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"پیکربندی اعلان‌ها"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"تنظیمات برگزیده اعلان"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"پیشرفته"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"اعلان‌های کار"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"چراغ اعلان چشمک بزند"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"برنامه‌های نصب‌نشده"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"برنامه‌های نصب‌شده"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"حافظه شما اکنون توسط مدیر حافظه مدیریت می‌شود"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index a94448f..0138d90 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Verkko ja internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Yhdistetyt laitteet"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Sovellukset ja ilmoitukset"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Käyttäjä ja tilit"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Oletussovellukset"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Kieli: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Asetukset"</string>
     <string name="search_menu" msgid="6283419262313758339">"Hakuasetukset"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Korvataanko työprofiiliäänet?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Korvaa"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Työprofiilin nykyiset äänet korvataan henkilökohtaisen profiilin äänillä."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Ilmoitusten määrittäminen"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Ilmoitusasetukset"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Lisäasetukset"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Työilmoitukset"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Vilkuta ilmoitusvaloa"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Sovelluksia ei asennettu"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Asennetut sovellukset"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Tallennustilan hallinta hallitsee nyt tallennustilaasi."</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 85e35c8..f52cad2 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -1261,7 +1261,7 @@
     <string name="tether_settings_title_wifi" msgid="3277144155960302049">"Point d\'accès Wi-Fi mobile"</string>
     <string name="tether_settings_title_bluetooth" msgid="355855408317564420">"Via Bluetooth"</string>
     <string name="tether_settings_title_usb_bluetooth" msgid="5355828977109785001">"Partage de connexion"</string>
-    <string name="tether_settings_title_all" msgid="8356136101061143841">"Partage de connexion et point d\'accès mobile"</string>
+    <string name="tether_settings_title_all" msgid="8356136101061143841">"Partage de connexion"</string>
     <string name="tether_settings_disabled_on_data_saver" msgid="1576908608463904152">"Impossible de partager la connexion ou d\'utiliser des points d\'accès mobiles lorsque la fonction Économiseur de données est activée"</string>
     <string name="usb_title" msgid="7483344855356312510">"USB"</string>
     <string name="usb_tethering_button_text" msgid="585829947108007917">"Partage de connexion par USB"</string>
@@ -2281,7 +2281,7 @@
     <string name="vpn_version" msgid="1939804054179766249">"Version <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Oublier le profil RPV"</string>
     <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Remplacer le RPV existant?"</string>
-    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Configurer le RPV permanent?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Définir le RPV permanent?"</string>
     <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Si vous activez ce paramètre, vous ne disposerez d\'aucune connexion Internet jusqu\'à ce que le RPV parvienne à se connecter"</string>
     <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Votre RPV existant sera remplacé, et vous ne disposerez d\'aucune connexion Internet jusqu\'à ce que le RPV parvienne à se connecter"</string>
     <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Vous êtes déjà connecté à un RPV permanent. Si vous vous connectez à un autre RPV, le RPV actuel sera remplacé et le mode permanent sera désactivé."</string>
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Réseau et Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Appareils connectés"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Applications et notifications"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Utilisateurs et comptes"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Valeurs par défaut de l\'application"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Langue : <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Paramètres"</string>
     <string name="search_menu" msgid="6283419262313758339">"Paramètres de recherche"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Remplacer sons du profil prof.?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Remplacer"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Les sons actuels de votre profil professionnel seront remplacés par ceux de votre profil personnel."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurer les notifications"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Préférences de notification"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Paramètres avancés"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notifications professionnelles"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Voyant de notification"</string>
@@ -2737,7 +2738,7 @@
     <string name="zen_mode_messages" msgid="5886440273537510894">"Messages"</string>
     <string name="zen_mode_all_messages" msgid="6449223378976743208">"Tous les messages"</string>
     <string name="zen_mode_selected_messages" msgid="8245990149599142281">"Messages sélectionnés"</string>
-    <string name="zen_mode_from_anyone" msgid="2638322015361252161">"De tous"</string>
+    <string name="zen_mode_from_anyone" msgid="2638322015361252161">"De tout le monde"</string>
     <string name="zen_mode_from_contacts" msgid="2232335406106711637">"Des contacts seulement"</string>
     <string name="zen_mode_from_starred" msgid="2678345811950997027">"Des contacts favoris seulement"</string>
     <string name="zen_mode_from_none" msgid="8219706639954614136">"Aucun"</string>
@@ -3202,7 +3203,7 @@
     <string name="support_escalation_by_phone" msgid="4843223043487058711">"Téléphone"</string>
     <string name="support_escalation_by_chat" msgid="977019859110763749">"Clavardage"</string>
     <string name="support_tips_and_tricks_title" msgid="4153466795695447828">"Découvrir des conseils et des astuces"</string>
-    <string name="support_help_feedback_title" msgid="693440287222186718">"Rechercher dans l\'aide et envoyer commentaires"</string>
+    <string name="support_help_feedback_title" msgid="693440287222186718">"Rechercher dans l\'aide et envoyer des commentaires"</string>
     <string name="support_sign_in_required_title" msgid="1367187789121480440">"Communiquer avec l\'équipe d\'assistance"</string>
     <string name="support_sign_in_button_text" msgid="3054769428620671241">"Connexion"</string>
     <string name="support_sign_in_required_help" msgid="5200654782405538114">"Vous n\'arrivez pas à vous connecter?"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Applications non installées"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Applications installées"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Votre espace de stockage est maintenant géré par le gestionnaire de stockage"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index e187875..2f85d63 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Réseau et Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Appareils connectés"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Applications et notifications"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Utilisateur et comptes"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Valeurs par défaut de l\'application"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Langue : <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Paramètres"</string>
     <string name="search_menu" msgid="6283419262313758339">"Paramètres de recherche"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Remplacer sons du profil pro ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Remplacer"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Les sons actuels de votre profil professionnel seront remplacés par ceux de votre profil personnel."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurer les notifications"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Préférences de notification"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Paramètres avancés"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notifications profil pro"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Voyant de notification"</string>
@@ -3202,7 +3203,7 @@
     <string name="support_escalation_by_phone" msgid="4843223043487058711">"Téléphone"</string>
     <string name="support_escalation_by_chat" msgid="977019859110763749">"Chat"</string>
     <string name="support_tips_and_tricks_title" msgid="4153466795695447828">"Parcourir les conseils et les astuces"</string>
-    <string name="support_help_feedback_title" msgid="693440287222186718">"Rechercher dans l\'aide ou envoyer comment."</string>
+    <string name="support_help_feedback_title" msgid="693440287222186718">"Rechercher dans l\'aide et envoyer des commentaires"</string>
     <string name="support_sign_in_required_title" msgid="1367187789121480440">"Contacter le service d\'assistance"</string>
     <string name="support_sign_in_button_text" msgid="3054769428620671241">"Connexion"</string>
     <string name="support_sign_in_required_help" msgid="5200654782405538114">"Vous ne pouvez pas vous connecter ?"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Applications pas installées"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Applications installées"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Votre espace de stockage est désormais géré par le gestionnaire d\'espace de stockage."</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-gl-rES/strings.xml b/res/values-gl-rES/strings.xml
index 0e08084..fc6f9c8 100644
--- a/res/values-gl-rES/strings.xml
+++ b/res/values-gl-rES/strings.xml
@@ -2281,10 +2281,10 @@
     <string name="vpn_version" msgid="1939804054179766249">"Versión <xliff:g id="VERSION">%s</xliff:g>"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"Esquecer perfil da VPN"</string>
     <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Queres substituír a VPN existente?"</string>
-    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Queres definir a VPN sempre activada?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Queres definir a VPN como sempre activa?"</string>
     <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Ao activar esta configuración, non terás conexión a Internet ata que se conecte a VPN correctamente"</string>
-    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"A VPN existente substituirase e non terás conexión a Internet ata que se conecte a VPN correctamente"</string>
-    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Xa te conectaches a unha VPN sempre activada. Se te conectas a unha distinta, substituirase a VPN actual e desactivarase o modo de VPN sempre activada."</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"A VPN existente substituirase e non terás conexión a Internet ata que se conecte á VPN correctamente"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Xa te conectaches a unha VPN sempre activa. Se te conectas a unha VPN distinta, substituirase a actual e desactivarase o modo de VPN sempre activa."</string>
     <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"Xa te conectaches a unha VPN. Se te conectas a unha distinta, substituirase a VPN actual."</string>
     <string name="vpn_turn_on" msgid="2363136869284273872">"Activar"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"Non se pode conectar a <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicacións e notificacións"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Usuario e contas"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Accións predeterminadas das aplicacións"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configuración"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configuración de busca"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Substit. sons perfil traballo?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Substituír"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Os sons actuais do perfil do traballo substituiranse cos sons do teu perfil persoal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurar notificacións"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferencias de notificacións"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avanzada"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificacións do traballo"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Luz de notificación"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Aplicacións non instaladas"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Aplicacións instaladas"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Agora o xestor de almacenamento administra o teu espazo"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-gu-rIN/strings.xml b/res/values-gu-rIN/strings.xml
index f54b3d7..90e369f 100644
--- a/res/values-gu-rIN/strings.xml
+++ b/res/values-gu-rIN/strings.xml
@@ -2531,8 +2531,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"નેટવર્ક અને ઇન્ટરનેટ"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"કનેક્ટ થયેલ ઉપકરણો"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ઍપ્લિકેશનો અને સૂચનાઓ"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"વપરાશકર્તા અને એકાઉન્ટ્સ"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ઍપ્લિકેશન ડિફૉલ્ટ્સ"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"ભાષા: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"સેટિંગ્સ"</string>
     <string name="search_menu" msgid="6283419262313758339">"શોધ સેટિંગ્સ"</string>
@@ -2635,7 +2636,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"કાર્ય પ્રોફાઇલ ધ્વનિઓ બદલીએ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"બદલો"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"તમારી વર્તમાન કાર્ય પ્રોફાઇલ ધ્વનિઓ તમારી વ્યક્તિગત પ્રોફાઇલ ધ્વનિઓ સાથે બદલવામાં આવશે"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"સૂચનાઓ ગોઠવો"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"સૂચના પસંદગીઓ"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"વિગતવાર"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"કાર્યની સૂચનાઓ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"પલ્સ સૂચના પ્રકાશ"</string>
@@ -3277,4 +3278,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"ઍપ્લિકેશનો ઇન્સ્ટૉલ થયેલ નથી"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"ઇન્સ્ટૉલ કરેલ ઍપ્લિકેશનો"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"તમારું સ્ટોરેજ, હવે સ્ટોરેજ સંચાલક દ્વારા સંચાલિત કરવામાં આવી રહ્યું છે"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 7751c0d..f4653da 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"नेटवर्क और इंटरनेट"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"कनेक्ट किए गए डिवाइस"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ऐप्लिकेशन और नोटिफ़िकेशन"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"उपयोगकर्ता और खाते"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ऐप्लिकेशन डिफ़ॉल्ट"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"भाषा: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"सेटिंग"</string>
     <string name="search_menu" msgid="6283419262313758339">"खोज सेटिंग"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"कार्य प्रोफाइल ध्वनियां बदलें?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"बदलें"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"आपकी वर्तमान कार्य प्रोफ़ाइल की ध्वनियां आपकी व्यक्तिगत प्रोफ़ाइल की ध्वनियों से बदल दी जाएंगी"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"नोटिफिकेशन कॉन्फ़िगर किए गए"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"नोटिफ़िकेशन प्राथमिकताएं"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"उन्नत"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"कार्य नोटिफ़िकेशन"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"पल्‍स नोटिफिकेशन लाइट"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"इंस्टॉल नहीं किए गए ऐप्‍लिकेशन"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"इंस्‍टॉल किए गए ऐप्‍लिकेशन"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"आपकी जगह का प्रबंधन अब जगह प्रबंधक द्वारा किया जा रहा है"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 0b1fccd..2853c19 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -2551,8 +2551,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mreža i internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Povezani uređaji"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacije i obavijesti"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Korisnik i postavke"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Zadane aplikacije"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Postavke"</string>
     <string name="search_menu" msgid="6283419262313758339">"Postavke pretraživanja"</string>
@@ -2655,7 +2656,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Zamjena zvuka radnog profila?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Zamijeni"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Trenutačni zvukovi radnog profila zamijenit će se zvukovima osobnog profila"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfiguriranje obavijesti"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Postavke obavijesti"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Napredno"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Obavijesti s radnog profila"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsno svjetlo obavijesti"</string>
@@ -3310,4 +3311,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Aplikacije nisu instalirane"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Instalirane aplikacije"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Vašom pohranom sada upravlja upravitelj pohrane"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index b2b101b..554d9d5 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Hálózat és internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Társított eszközök"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Alkalmazások és értesítések"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Felhasználó és fiókok"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Alapértelmezett alkalmazások"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Nyelv: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Beállítások"</string>
     <string name="search_menu" msgid="6283419262313758339">"Keresési beállítások"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Lecseréli a munkaprofil hangbeállításait?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Csere"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"A munkaprofil jelenlegi hangbeállításait lecseréljük a személyes profilban lévőkkel"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Értesítések beállítása"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Értesítési beállítások"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Speciális"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Munkahelyi profil értesítései"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Villogó értesítő fény"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Az alkalmazások nincsenek telepítve"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Telepített alkalmazások"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Tárhelyét mostantól a tárhelykezelő kezeli"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml
index 3bd4370..24d6a1e 100644
--- a/res/values-hy-rAM/strings.xml
+++ b/res/values-hy-rAM/strings.xml
@@ -2026,7 +2026,7 @@
     <string name="credentials_enabled" msgid="7588607413349978930">"Վկայականի պահոցը միացված է:"</string>
     <string name="credentials_configure_lock_screen_hint" msgid="6757119179588664966">"Վկայականների պահոցն օգտագործելու համար անհրաժեշտ է, որ էկրանը կողպող PIN կամ գաղտնաբառ կիրառեք:"</string>
     <string name="usage_access_title" msgid="332333405495457839">"Թույլատրված հավելվածներ"</string>
-    <string name="emergency_tone_title" msgid="1055954530111587114">"Արտակարգ իրավիճակ ահազանգող ազդանշան"</string>
+    <string name="emergency_tone_title" msgid="1055954530111587114">"Շտապ կանչի ազդանշանը"</string>
     <string name="emergency_tone_summary" msgid="722259232924572153">"Կարգավորել աշխատանքի ռեժիմը շտապ կանչի դեպքում"</string>
     <string name="privacy_settings" msgid="5446972770562918934">"Պահուստավորում և վերակայում"</string>
     <string name="privacy_settings_title" msgid="4856282165773594890">"Պահուստավորում և վերականգնում"</string>
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Ցանց և ինտերնետ"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Կապակցված սարքեր"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Հավելվածներ և ծանուցումներ"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Օգտվող և հաշիվներ"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Հավելվածի կանխադրված կարգավորումներ"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Լեզուն՝ <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Կարգավորումներ"</string>
     <string name="search_menu" msgid="6283419262313758339">"Որոնման կարգավորումներ"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Փոխարինե՞լ աշխատանքային պրոֆիլի ձայները:"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Փոխարինել"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Աշխատանքային պրոֆիլի ընթացիկ ձայները կփոխարինվեն անձնական հաշվի ձայներով"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Ծանուցումների կազմաձևում"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Ծանուցումների կարգավորումներ"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Լրացուցիչ"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Աշխատանքային ծանուցումներ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Ծանուցման լույսի թարթում"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Հավելվածները տեղադրված չեն"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Տեղադրված հավելվածներ"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Ձեր սարքի հիշողությունն այժմ կառավարվում է հիշողության կառավարիչի կողմից"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 02f1892..12ce5fa 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Jaringan &amp; Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Perangkat yang terhubung"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikasi &amp; notifikasi"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Pengguna &amp; akun"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Aplikasi default"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Bahasa: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Setelan"</string>
     <string name="search_menu" msgid="6283419262313758339">"Setelan penelusuran"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Ganti suara profil kerja?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Ganti"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Suara profil kerja saat ini akan diganti dengan suara profil pribadi"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurasikan notifikasi"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferensi notifikasi"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Lanjutan"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notifikasi kerja"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Kedipkan lampu notifikasi"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Aplikasi tidak terpasang"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Aplikasi terpasang"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Penyimpanan kini dikelola oleh pengelola penyimpanan"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-is-rIS/strings.xml b/res/values-is-rIS/strings.xml
index 74bf257..4d52069 100644
--- a/res/values-is-rIS/strings.xml
+++ b/res/values-is-rIS/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netkerfi og internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Tengd tæki"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Forrit og tilkynningar"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Notandi og reikningar"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Sjálfgefnar stillingar forrits"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Tungumál: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Stillingar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Leitarstillingar"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Skipta út hljóðum vinnuprófíls?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Skipta út"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Núverandi hljóðum vinnuprófílsins verður skipt út fyrir hljóð úr persónulega prófílnum"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Stilla tilkynningar"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Tilkynningastillingar"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Ítarlegt"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Vinnutilkynningar"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Hægt blikkandi tilkynningaljós"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Forrit ekki uppsett"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Uppsett forrit"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Geymslurýminu þínu er nú stjórnað af geymslustjórnun"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 32a9980..4f010f7 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rete e Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivi collegati"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"App e notifiche"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Utente e account"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"App predefinite"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Lingua: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Impostazioni"</string>
     <string name="search_menu" msgid="6283419262313758339">"Impostazioni di ricerca"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Sostituire suoni lavoro?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Sostituisci"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"I suoni attuali del profilo di lavoro verranno sostituiti con i suoni del tuo profilo personale"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configura le notifiche"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferenze di notifica"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avanzate"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notifiche di lavoro"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Luce intermittente"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"App non installate"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"App installate"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Il tuo spazio di archiviazione è ora gestito dalla Gestione memoria"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 4a322b0..8bf1a24 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -2575,8 +2575,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"רשת ואינטרנט"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"מכשירים מחוברים"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"אפליקציות והודעות"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"משתמש וחשבונות"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"אפליקציות ברירות מחדל"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"שפה: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"הגדרות"</string>
     <string name="search_menu" msgid="6283419262313758339">"הגדרות חיפוש"</string>
@@ -2679,7 +2680,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"להחליף צלילי פרופיל עבודה?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"החלף"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"הצלילים המוגדרים לפרופיל העבודה שלך יוחלפו בצלילים שהוגדרו לפרופיל האישי"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"הגדרת הודעות"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"העדפות התראה"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"מתקדם"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"הודעות עבודה"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"תאורת התראה מהבהבת"</string>
@@ -3347,4 +3348,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"אפליקציות לא מותקנות"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"אפליקציות מותקנות"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"האחסון שלך מנוהל כעת על ידי מנהל האחסון"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 824fc59..44d8308 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -2533,8 +2533,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ネットワークとインターネット"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"接続済みの端末"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"アプリと通知"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ユーザーとアカウント"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"デフォルトのアプリ"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"言語: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"設定"</string>
     <string name="search_menu" msgid="6283419262313758339">"検索設定"</string>
@@ -2617,10 +2618,10 @@
     <string name="emergency_tone_alert" msgid="8941852695428130667">"アラート"</string>
     <string name="emergency_tone_vibrate" msgid="8281126443204950847">"バイブレーション"</string>
     <string name="boot_sounds_title" msgid="567029107382343709">"電源オンの音"</string>
-    <string name="zen_mode_settings_title" msgid="2689740350895257590">"通知を非表示"</string>
+    <string name="zen_mode_settings_title" msgid="2689740350895257590">"マナーモード"</string>
     <string name="zen_mode_priority_settings_title" msgid="2623117023031824309">"優先する通知のみを許可"</string>
     <string name="zen_mode_automation_settings_title" msgid="4228995740594063774">"自動ルール"</string>
-    <string name="zen_mode_automation_suggestion_title" msgid="3373871113435938830">"[通知を非表示] スケジュールの設定"</string>
+    <string name="zen_mode_automation_suggestion_title" msgid="3373871113435938830">"マナーモード スケジュールの設定"</string>
     <string name="zen_mode_automation_suggestion_summary" msgid="8554080399360506596">"所定の時間にマナーモードにする"</string>
     <string name="zen_mode_option_important_interruptions" msgid="3903928008177972500">"優先する通知のみ"</string>
     <string name="zen_mode_option_alarms" msgid="5785372117288803600">"アラームのみ"</string>
@@ -2637,7 +2638,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"仕事用プロファイルの音の置換"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"置換"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"現在の仕事用プロファイルの音は個人用プロファイルの音に置き換えられます"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"通知の設定"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"通知設定"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"詳細設定"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"仕事用プロファイルの通知"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"光を点滅させて通知"</string>
@@ -2673,8 +2674,8 @@
     </plurals>
     <string name="no_notification_listeners" msgid="3487091564454192821">"通知へのアクセスをリクエストしたインストール済みアプリはありません。"</string>
     <string name="notification_listener_security_warning_title" msgid="5522924135145843279">"<xliff:g id="SERVICE">%1$s</xliff:g>での通知へのアクセスを許可しますか?"</string>
-    <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> はすべての通知を読み取ることができます。通知には、連絡先名などの個人情報や受信したメッセージの本文も含まれます。また、通知を非表示にしたり、通知内のボタン操作を実行したりすることもできます。\n\nこれにより、アプリが通知の非表示設定を切り替えたり、関連する設定を変更したりすることも可能になります。"</string>
-    <string name="notification_listener_disable_warning_summary" msgid="6738915379642948000">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> の通知アクセスを OFF にすると、[通知を非表示] のアクセスも OFF になります。"</string>
+    <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> はすべての通知を読み取ることができます。通知には、連絡先名などの個人情報や受信したメッセージの本文も含まれます。また、通知を非表示にしたり、通知内のボタン操作を実行したりすることもできます。\n\nこれにより、アプリがマナーモード設定を切り替えたり、関連する設定を変更したりすることも可能になります。"</string>
+    <string name="notification_listener_disable_warning_summary" msgid="6738915379642948000">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> の通知アクセスを OFF にすると、マナーモードのアクセスも OFF になります。"</string>
     <string name="notification_listener_disable_warning_confirm" msgid="8333442186428083057">"OFF にする"</string>
     <string name="notification_listener_disable_warning_cancel" msgid="8586417377104211584">"キャンセル"</string>
     <string name="vr_listeners_title" msgid="1318901577754715777">"VR ヘルパー サービス"</string>
@@ -2684,16 +2685,16 @@
     <string name="display_vr_pref_title" msgid="8104485269504335481">"端末が VR モードの場合"</string>
     <string name="display_vr_pref_low_persistence" msgid="5707494209944718537">"手ぶれ補正を弱くする(推奨)"</string>
     <string name="display_vr_pref_off" msgid="2190091757123260989">"ちらつきを減らす"</string>
-    <string name="manage_zen_access_title" msgid="2611116122628520522">"[通知を非表示]へのアクセス"</string>
-    <string name="zen_access_empty_text" msgid="8772967285742259540">"[通知を非表示]へのアクセスをリクエストしたインストール済みアプリはありません"</string>
+    <string name="manage_zen_access_title" msgid="2611116122628520522">"マナーモードへのアクセス"</string>
+    <string name="zen_access_empty_text" msgid="8772967285742259540">"マナーモードへのアクセスをリクエストしたインストール済みアプリはありません"</string>
     <string name="loading_notification_apps" msgid="5031818677010335895">"アプリを読み込んでいます..."</string>
     <string name="notification_channels" msgid="8681423709659818791">"チャンネル"</string>
     <string name="app_notification_block_title" msgid="4069351066849087649">"すべてブロック"</string>
     <string name="app_notification_block_summary" msgid="9049487483231233726">"このアプリからの通知を表示しない"</string>
     <string name="channel_notification_block_title" msgid="1570538726036580979">"すべてブロック"</string>
     <string name="channel_notification_block_summary" msgid="3024773079420038146">"このチャンネルからの通知を表示しない"</string>
-    <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"[通知を非表示] をオーバーライドする"</string>
-    <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"[通知を非表示] が [優先する通知のみ] に設定されているとき、この通知を引き続き表示する"</string>
+    <string name="app_notification_override_dnd_title" msgid="7867458246395884830">"マナーモードをオーバーライドする"</string>
+    <string name="app_notification_override_dnd_summary" msgid="3516007157020189746">"[マナーモード] が [優先する通知のみ] に設定されているとき、この通知を引き続き表示する"</string>
     <string name="app_notification_visibility_override_title" msgid="2187232730902430718">"ロック画面"</string>
     <string name="app_notification_row_banned" msgid="5983655258784814773">"ブロック済み"</string>
     <string name="app_notification_row_priority" msgid="7723839972982746568">"優先"</string>
@@ -2714,9 +2715,9 @@
     <string name="zen_mode_rule_type_unknown" msgid="3049377282766700600">"不明"</string>
     <string name="zen_mode_configure_rule" msgid="8865785428056490305">"ルールを設定"</string>
     <string name="zen_schedule_rule_type_name" msgid="142936744435271449">"時間ルール"</string>
-    <string name="zen_schedule_rule_enabled_toast" msgid="3379499360390382259">"自動ルールでは指定時間内は[通知を非表示]をONに設定します"</string>
+    <string name="zen_schedule_rule_enabled_toast" msgid="3379499360390382259">"自動ルールでは指定時間内はマナーモードを ON に設定します"</string>
     <string name="zen_event_rule_type_name" msgid="2645981990973086797">"予定ルール"</string>
-    <string name="zen_event_rule_enabled_toast" msgid="6910577623330811480">"自動ルールでは指定した予定の間は[通知を非表示]をONに設定します"</string>
+    <string name="zen_event_rule_enabled_toast" msgid="6910577623330811480">"自動ルールでは指定した予定の間はマナーモードを ON に設定します"</string>
     <string name="zen_mode_event_rule_calendar" msgid="8787906563769067418">"対象となる予定"</string>
     <string name="zen_mode_event_rule_summary_calendar_template" msgid="5135844750232403975">"対象となる予定: <xliff:g id="CALENDAR">%1$s</xliff:g>"</string>
     <string name="zen_mode_event_rule_summary_any_calendar" msgid="4936646399126636358">"すべてのカレンダー"</string>
@@ -2771,10 +2772,10 @@
     <string name="zen_mode_summary_alarms_only_by_time" msgid="7465525754879341907">"<xliff:g id="FORMATTEDTIME">%1$s</xliff:g>までアラームのみに変更します"</string>
     <string name="zen_mode_summary_always" msgid="6172985102689237703">"常に割り込みに変更します"</string>
     <string name="zen_mode_screen_on" msgid="7712038508173845101">"画面が ON のときにブロックする"</string>
-    <string name="zen_mode_screen_on_summary" msgid="6444425984146305149">"[通知を非表示] でサイレントに設定した通知を受信したときに、画面上にポップアップ表示されなくなります"</string>
+    <string name="zen_mode_screen_on_summary" msgid="6444425984146305149">"マナーモードでサイレントに設定した通知を受信したときに、画面上にポップアップ表示されなくなります"</string>
     <string name="zen_mode_screen_off" msgid="5026854939192419879">"画面が OFF のときにブロックする"</string>
-    <string name="zen_mode_screen_off_summary" msgid="6490932947651798094">"[通知を非表示] でサイレントに設定した通知を受信したときに、画面が ON になったり光が点滅したりしなくなります"</string>
-    <string name="zen_mode_screen_off_summary_no_led" msgid="3758698381956461866">"[通知を非表示] でサイレントに設定した通知を受信したときに画面が ON にならなくなります"</string>
+    <string name="zen_mode_screen_off_summary" msgid="6490932947651798094">"マナーモードでサイレントに設定した通知を受信したときに、画面が ON になったり光が点滅したりしなくなります"</string>
+    <string name="zen_mode_screen_off_summary_no_led" msgid="3758698381956461866">"マナーモードでサイレントに設定した通知を受信したときに画面が ON にならなくなります"</string>
     <string name="zen_mode_all_visual_interruptions" msgid="2851308980832487411">"OFF"</string>
     <string name="zen_mode_screen_on_visual_interruptions" msgid="7373348148129140528">"画面が ON のとき"</string>
     <string name="zen_mode_screen_off_visual_interruptions" msgid="4850792880144382633">"画面が OFF のとき"</string>
@@ -2842,7 +2843,7 @@
     <string name="notifications_silenced" msgid="4728603513072110381">"マナーモード"</string>
     <string name="notifications_redacted" msgid="4493588975742803160">"ロック画面にプライベートな内容を表示しない"</string>
     <string name="notifications_hidden" msgid="3619610536038757468">"ロック画面に表示しない"</string>
-    <string name="notifications_priority" msgid="1066342037602085552">"[通知を非表示] をオーバーライド"</string>
+    <string name="notifications_priority" msgid="1066342037602085552">"マナーモードをオーバーライド済み"</string>
     <string name="notifications_summary_divider" msgid="9013807608804041387">" / "</string>
     <string name="notification_summary_level" msgid="2726571692704140826">"レベル %d"</string>
     <plurals name="permissions_summary" formatted="false" msgid="6402730318075959117">
@@ -2865,7 +2866,7 @@
     <string name="filter_work_apps" msgid="24519936790795574">"仕事用"</string>
     <string name="filter_notif_blocked_apps" msgid="3446926933792244485">"ブロック中"</string>
     <string name="filter_with_domain_urls_apps" msgid="4573276638806792792">"ドメインURLあり"</string>
-    <string name="filter_notif_priority_apps" msgid="5056470299318500609">"[通知を非表示] をオーバーライド"</string>
+    <string name="filter_notif_priority_apps" msgid="5056470299318500609">"マナーモードをオーバーライド"</string>
     <string name="filter_notif_sensitive_apps" msgid="3847012996691991486">"ロック画面にプライベートな内容を表示しない"</string>
     <string name="filter_notif_hide_notifications_apps" msgid="3977513041080404368">"ロック画面に表示しない"</string>
     <string name="filter_notif_silent" msgid="8533960664617048281">"マナーモードで表示"</string>
@@ -2983,11 +2984,11 @@
     <string name="running_frequency" msgid="6622624669948277693">"頻度"</string>
     <string name="memory_maximum_usage" msgid="6513785462055278341">"最大使用量"</string>
     <string name="no_data_usage" msgid="9131454024293628063">"データ通信の使用はありません"</string>
-    <string name="zen_access_warning_dialog_title" msgid="1198189958031157142">"<xliff:g id="APP">%1$s</xliff:g>の[通知を非表示]へのアクセスを許可しますか?"</string>
-    <string name="zen_access_warning_dialog_summary" msgid="4015885767653010873">"アプリは[通知を非表示]のON/OFFを切り替えたり、関連する設定を変更したりできるようになります。"</string>
+    <string name="zen_access_warning_dialog_title" msgid="1198189958031157142">"<xliff:g id="APP">%1$s</xliff:g> のマナーモードへのアクセスを許可しますか?"</string>
+    <string name="zen_access_warning_dialog_summary" msgid="4015885767653010873">"アプリはマナーモードの ON / OFF を切り替えたり、関連する設定を変更したりできるようになります。"</string>
     <string name="zen_access_disabled_package_warning" msgid="302820100078584431">"通知アクセスが ON になっているため ON のままにしておく必要があります"</string>
-    <string name="zen_access_revoke_warning_dialog_title" msgid="558779234015793950">"「<xliff:g id="APP">%1$s</xliff:g>」の「通知を非表示」に対する権限を取り消しますか?"</string>
-    <string name="zen_access_revoke_warning_dialog_summary" msgid="5518216907304930148">"このアプリで作成したすべての「通知を非表示」ルールは削除されます。"</string>
+    <string name="zen_access_revoke_warning_dialog_title" msgid="558779234015793950">"<xliff:g id="APP">%1$s</xliff:g> のマナーモードに対する権限を取り消しますか?"</string>
+    <string name="zen_access_revoke_warning_dialog_summary" msgid="5518216907304930148">"このアプリで作成したすべてのマナーモード ルールは削除されます。"</string>
     <string name="ignore_optimizations_on" msgid="6915689518016285116">"最適化しない"</string>
     <string name="ignore_optimizations_off" msgid="6153196256410296835">"最適化する"</string>
     <string name="ignore_optimizations_on_desc" msgid="2321398930330555815">"電池の消耗が速くなる可能性があります"</string>
@@ -3076,7 +3077,7 @@
     <string name="condition_hotspot_summary" msgid="3433182779269409683">"ポータブル Wi-Fi アクセス ポイント(<xliff:g id="ID_1">%1$s</xliff:g>)が有効です。この端末では Wi-Fi が OFF になっています。"</string>
     <string name="condition_airplane_title" msgid="287356299107070503">"機内モードが ON"</string>
     <string name="condition_airplane_summary" msgid="2136872325308526329">"Wi-Fi、Bluetooth、モバイル ネットワークが OFF になっています。電話の発信やインターネットへの接続はできません。"</string>
-    <string name="condition_zen_title" msgid="2679168532600816392">"[通知を非通知] が ON(<xliff:g id="ID_1">%1$s</xliff:g>)"</string>
+    <string name="condition_zen_title" msgid="2679168532600816392">"マナーモードが ON(<xliff:g id="ID_1">%1$s</xliff:g>)"</string>
     <string name="condition_battery_title" msgid="3272131008388575349">"バッテリー セーバー ON"</string>
     <string name="condition_battery_summary" msgid="4418839236027977450">"パフォーマンスが制限されています。位置情報サービスとバックグラウンド データは OFF です。"</string>
     <string name="condition_cellular_title" msgid="2398754272044917264">"モバイルデータ OFF"</string>
@@ -3279,4 +3280,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"アプリがインストールされていません"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"インストール済みアプリ"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"お使いのストレージの管理はストレージ マネージャが行うようになりました"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml
index 9b1841a..5ff4296 100644
--- a/res/values-ka-rGE/strings.xml
+++ b/res/values-ka-rGE/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ქსელი და ინტერნეტი"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"დაკავშირებული მოწყობილობები"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"აპები და შეტყობინებები"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"მომხმარებელი და ანგარიშები"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"აპის ნაგულისხმევი პარამეტრები"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"ენა: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"პარამეტრები"</string>
     <string name="search_menu" msgid="6283419262313758339">"ძიების პარამეტრები"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"ჩანაცვლდეს სამსახურის პროფილის ხმები?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ჩანაცვლება"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"სამსახურის პროფილის ამჟამინდელი ხმები თქვენი პირადი პროფილის ხმებით ჩანაცვლდება"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"შეტყობინ. კონფიგურაცია"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"შეტყობინების პარამეტრები"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"გაფართოებული"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"სამსახურის შეტყობინებები"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"მოვლენების ინდიკატორი"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"დაუინსტალირებული აპები"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"დაინსტალირებული აპები"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"თქვენს მეხსიერებას ახლა მეხსიერების მენეჯერი მართავს"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-kk-rKZ/strings.xml b/res/values-kk-rKZ/strings.xml
index 5f2bb0e..05555bc 100644
--- a/res/values-kk-rKZ/strings.xml
+++ b/res/values-kk-rKZ/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Желі және интернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Қосылған құрылғылар"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Қолданбалар мен хабарландырулар"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Пайдаланушы және есептік жазбалар"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Қолданбаның әдепкі мәндері"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Тіл: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Параметрлер"</string>
     <string name="search_menu" msgid="6283419262313758339">"Іздеу параметрлері"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Жұмыс профилінің дыбыстары ауыстырылсын ба?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Ауыстыру"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Ағымдағы жұмыс профилі дыбыстарының орнына жеке профильдікі қолданылады"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Хабарландырулар конфигурациясы"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Хабарландыру параметрлері"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Кеңейтілген"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Жұмыс хабарландырулары"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Хабар беру шамы"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Орнатылмаған қолданбалар"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Орнатылған қолданбалар"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Құрылғы жадын енді жад менеджері басқарады"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml
index 0d6a296..152e46f 100644
--- a/res/values-km-rKH/strings.xml
+++ b/res/values-km-rKH/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"បណ្តាញ និងអ៊ីនធឺណិត"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ឧបករណ៍ដែលបានភ្ជាប់"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"កម្មវិធី និងការជូនដំណឹង"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"អ្នកប្រើ និងគណនី"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"លំនាំដើមកម្មវិធី"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"ភាសា៖ <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ការកំណត់"</string>
     <string name="search_menu" msgid="6283419262313758339">"ការកំណត់ការស្វែងរក"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"ជំនួសសំឡេងប្រវត្តិការងារឬ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ជំនួស"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"សំឡេងប្រវត្តិរូបការងារបច្ចុប្បន្នរបស់អ្នកនឹងត្រូវបានជំនួសដោយសំឡេងប្រវត្តិរូបផ្ទាល់ខ្លួនរបស់អ្នក"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"កំណត់រចនាសម្ព័ន្ធការជូនដំណឹង"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"ចំណូលចិត្តការជូនដំណឹង"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"កម្រិតខ្ពស់"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"ការជូនដំណឹងពីកន្លែងធ្វើការ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ពន្លឺ​ជូន​ដំណឹង​ភ្លឺបភ្លែត"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"មិនបានដំឡើងកម្មវិធីទេ"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"កម្មវិធី​បាន​ដំឡើង"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"នៅពេលនេះទំហំផ្ទុករបស់អ្នកត្រូវបានគ្រប់គ្រងដោយកម្មវិធីគ្រប់គ្រងទំហំផ្ទុក"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-kn-rIN/strings.xml b/res/values-kn-rIN/strings.xml
index cf76ec6..1b3cd3a 100644
--- a/res/values-kn-rIN/strings.xml
+++ b/res/values-kn-rIN/strings.xml
@@ -256,7 +256,7 @@
     <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB ಸಂಗ್ರಹಣೆ"</string>
     <string name="sd_card_settings_label" product="default" msgid="5743100901106177102">"SD ಕಾರ್ಡ್"</string>
     <string name="proxy_settings_label" msgid="3271174136184391743">"ಪ್ರಾಕ್ಸಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
-    <string name="cancel" msgid="6859253417269739139">"ರದ್ದುಮಾಡು"</string>
+    <string name="cancel" msgid="6859253417269739139">"ರದ್ದುಮಾಡಿ"</string>
     <string name="okay" msgid="1997666393121016642">"ಸರಿ"</string>
     <string name="forget" msgid="1400428660472591263">"ಮರೆತುಬಿಡಿ"</string>
     <string name="save" msgid="879993180139353333">"ಉಳಿಸು"</string>
@@ -342,7 +342,7 @@
     <string name="security_settings_fingerprint_enroll_introduction_message" msgid="3508870672887336095">"ನಿಮ್ಮ ಫೋನ್ ಅನ್‌ಲಾಕ್ ಮಾಡಲು, ಖರೀದಿಗಳನ್ನು ದೃಢೀಕರಿಸಲು ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಕೇವಲ ಬೆರಳಚ್ಚು ಸೆನ್ಸರ್ ಸ್ಪರ್ಶಿಸಿ‌. ನೀವು ಸೇರಿಸುವ ಬೆರಳಚ್ಚು‌ಗಳ ಬಗ್ಗೆ ಜಾಗರೂಕರಾಗಿರಿ. ಒಂದು ಹೆಚ್ಚಿನ ಬೆರಳಚ್ಚು ಸಹ ಇವುಗಳಲ್ಲಿ ಯಾವುದನ್ನಾದರೂ ಮಾಡಬಹುದು.\n\nಗಮನಿಸಿ: ನಿಮ್ಮ ಬೆರಳಚ್ಚು ಬಲವಾದ ಪ್ಯಾಟರ್ನ್ ಅಥವಾ ‌ಪಿನ್‌ಗಿಂತ ಕಡಿಮೆ ಸುರಕ್ಷಿತವಾಗಿರಬಹುದು."</string>
     <string name="security_settings_fingerprint_enroll_introduction_message_unlock_disabled" msgid="4193477159493347679">"ಖರೀದಿಗಳನ್ನು ದೃಢೀಕರಿಸಲು ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಕೇವಲ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಸ್ಪರ್ಶಿಸಿ. ನೀವು ಸೇರಿಸುವ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್‌ಗಳ ಬಗ್ಗೆ ಕಾಳಜಿವಹಿಸಿ. ಒಂದು ಹೆಚ್ಚಿನ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸಹ ಇವುಗಳಲ್ಲಿ ಯಾವುದನ್ನಾದರೂ ಮಾಡಬಹುದು.\n\nಗಮನಿಸಿ: ಈ ಸಾಧನವನ್ನು ಅನ್‌ಲಾಕ್ ಮಾಡಲು ನೀವು ನಿಮ್ಮ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಹೆಚ್ಚಿನ ಮಾಹಿತಿಗಾಗಿ, ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
     <string name="security_settings_fingerprint_enroll_introduction_message_setup" msgid="3635924459027832861">"ನಿಮ್ಮ ಫೋನ್ ಅನ್‌ಲಾಕ್ ಮಾಡಲು, ಖರೀದಿಗಳನ್ನು ದೃಢೀಕರಿಸಲು ಅಥವಾ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಿಗೆ ಸೈನ್ ಇನ್ ಮಾಡಲು ಕೇವಲ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಸ್ಪರ್ಶಿಸಿ‌. ನೀವು ಯಾರ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್‌ಗಳನ್ನು ಸೇರಿಸುತ್ತೀರಿ ಎಂಬುದರ ಕುರಿತು ಎಚ್ಚರಿಕೆಯಿಂದಿರಿ. ಒಂದು ಸೇರಿಸಲಾದ ಮುದ್ರಣವು ಸಹ ಇವುಗಳಲ್ಲಿ ಯಾವುದನ್ನಾದರೂ ಪೂರೈಸಬಹುದು.\n\nನಿಮ್ಮ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್‌ ಬಲವಾದ ಪ್ಯಾಟರ್ನ್ ಅಥವಾ ಪಿನ್‌ಗಿಂತಲೂ ಕಡಿಮೆ ಸುರಕ್ಷತೆ ಹೊಂದಿರಬಹುದು."</string>
-    <string name="security_settings_fingerprint_enroll_introduction_cancel" msgid="3199351118385606526">"ರದ್ದುಮಾಡು"</string>
+    <string name="security_settings_fingerprint_enroll_introduction_cancel" msgid="3199351118385606526">"ರದ್ದುಮಾಡಿ"</string>
     <string name="security_settings_fingerprint_enroll_introduction_continue" msgid="7472492858148162530">"ಮುಂದುವರಿಸು"</string>
     <string name="security_settings_fingerprint_enroll_introduction_cancel_setup" msgid="5021369420474432665">"ಸ್ಕಿಪ್‌"</string>
     <string name="security_settings_fingerprint_enroll_introduction_continue_setup" msgid="8386444182056861429">"ಬೆರಳಚ್ಚು ಸೇರಿಸಿ"</string>
@@ -546,8 +546,8 @@
     <string name="lockpassword_password_recently_used" msgid="4687102591995446860">"ಸಾಧನ ನಿರ್ವಾಹಕ ಇತ್ತೀಚಿನ ಪಾಸ್‌ವರ್ಡ್‌ ಬಳಸಲು ಅನುಮತಿಸುವುದಿಲ್ಲ."</string>
     <string name="lockpassword_pin_no_sequential_digits" msgid="6830610582179569631">"ಅಂಕಿಗಳ ಆರೋಹಣ, ಅವರೋಹಣ ಅಥವಾ ಪುನಾವರ್ತಿತ ಅನುಕ್ರಮವನ್ನು ನಿಷೇಧಿಸಲಾಗಿದೆ"</string>
     <string name="lockpassword_ok_label" msgid="313822574062553672">"ಸರಿ"</string>
-    <string name="lockpassword_cancel_label" msgid="8818529276331121899">"ರದ್ದುಮಾಡು"</string>
-    <string name="lockpattern_tutorial_cancel_label" msgid="6431583477570493261">"ರದ್ದುಮಾಡು"</string>
+    <string name="lockpassword_cancel_label" msgid="8818529276331121899">"ರದ್ದುಮಾಡಿ"</string>
+    <string name="lockpattern_tutorial_cancel_label" msgid="6431583477570493261">"ರದ್ದುಮಾಡಿ"</string>
     <string name="lockpattern_tutorial_continue_label" msgid="3559793618653400434">"ಮುಂದೆ"</string>
     <string name="lock_setup" msgid="3355847066343753943">"ಸೆಟಪ್ ಪೂರ್ಣಗೊಂಡಿದೆ."</string>
     <string name="device_admin_title" msgid="3562216873644263804">"ಸಾಧನ ನಿರ್ವಹಣೆ"</string>
@@ -774,7 +774,7 @@
     <string name="wifi_failed_forget_message" msgid="1348172929201654986">"ನೆಟ್‌ವರ್ಕ್‌ ಮರೆಯಲು ವಿಫಲವಾಗಿದೆ"</string>
     <string name="wifi_save" msgid="3331121567988522826">"ಉಳಿಸು"</string>
     <string name="wifi_failed_save_message" msgid="6650004874143815692">"ನೆಟ್‌ವರ್ಕ್‌ ಉಳಿಸಲು ವಿಫಲವಾಗಿದೆ"</string>
-    <string name="wifi_cancel" msgid="6763568902542968964">"ರದ್ದುಮಾಡು"</string>
+    <string name="wifi_cancel" msgid="6763568902542968964">"ರದ್ದುಮಾಡಿ"</string>
     <string name="wifi_skip_anyway" msgid="6965361454438011190">"ಅದೇನೇ ಇರಲಿ ಸ್ಕಿಪ್‌ ಮಾಡು"</string>
     <string name="wifi_dont_skip" msgid="3615535136327231588">"ಹಿಂತಿರುಗು"</string>
     <string name="wifi_skipped_message" product="tablet" msgid="6761689889733331124">"ಎಚ್ಚರಿಕೆ: ನೀವು ವೈ-ಫೈ ಸ್ಕಿಪ್ ಮಾಡಿದರೆ, ಆರಂಭಿಕ ಡೌನ್‌ಲೋಡ್‌ಗಳು ಮತ್ತು ನವೀಕರಣಗಳಿಗಾಗಿ ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ ಸೆಲ್ಯುಲಾರ್ ಡೇಟಾವನ್ನು ಮಾತ್ರ ಬಳಸುತ್ತದೆ. ಸಂಭಾವ್ಯ ಡೇಟಾ ಶುಲ್ಕಗಳನ್ನು ನಿಯಂತ್ರಿಸಲು, ವೈ-ಫೈ ಗೆ ಸಂಪರ್ಕಪಡಿಸಿ."</string>
@@ -795,7 +795,7 @@
     <string name="wifi_advanced_settings_label" msgid="3654366894867838338">"IP ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="wifi_advanced_not_available" msgid="5823045095444154586">"ಈ ಬಳಕೆದಾರರಿಗೆ ವೈ ಫೈ ಸುಧಾರಿತ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="wifi_ip_settings_menu_save" msgid="7296724066102908366">"ಉಳಿಸು"</string>
-    <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"ರದ್ದುಮಾಡು"</string>
+    <string name="wifi_ip_settings_menu_cancel" msgid="6582567330136502340">"ರದ್ದುಮಾಡಿ"</string>
     <string name="wifi_ip_settings_invalid_ip_address" msgid="2513142355364274970">"ಮಾನ್ಯವಾದ IP ವಿಳಾಸವನ್ನು ಟೈಪ್‌ ಮಾಡಿ."</string>
     <string name="wifi_ip_settings_invalid_gateway" msgid="8164264988361096450">"ಮಾನ್ಯವಾದ ಗೇಟ್‌ವೇ ವಿಳಾಸವನ್ನು ಟೈಪ್‌ ಮಾಡಿ."</string>
     <string name="wifi_ip_settings_invalid_dns" msgid="8744583948328391047">"ಮಾನ್ಯವಾದ DNS ವಿಳಾಸವನ್ನು ಟೈಪ್‌ ಮಾಡಿ."</string>
@@ -999,7 +999,7 @@
     <string name="sim_change_succeeded" msgid="8556135413096489627">"ಸಿಮ್‌ ಪಿನ್‌ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಬದಲಾಯಿಸಲಾಗಿದೆ"</string>
     <string name="sim_lock_failed" msgid="2489611099235575984">"ಸಿಮ್‌ ಕಾರ್ಡ್ ಲಾಕ್ ಸ್ಥಿತಿಯನ್ನು ಬದಲಾಯಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.\nಬಹುಶಃ ತಪ್ಪಾದ ಪಿನ್‌."</string>
     <string name="sim_enter_ok" msgid="6475946836899218919">"ಸರಿ"</string>
-    <string name="sim_enter_cancel" msgid="6240422158517208036">"ರದ್ದುಮಾಡು"</string>
+    <string name="sim_enter_cancel" msgid="6240422158517208036">"ರದ್ದುಮಾಡಿ"</string>
     <string name="sim_multi_sims_title" msgid="9159427879911231239">"ಬಹು ಸಿಮ್‌ ಗಳು ಕಂಡುಬಂದಿವೆ"</string>
     <string name="sim_multi_sims_summary" msgid="7018740080801483990">"ಸೆಲ್ಯುಲಾರ್ ಡೇಟಾಗೆ ನೀವು ಬಯಸುವ ಸಿಮ್‌ ಆಯ್ಕೆಮಾಡಿ."</string>
     <string name="sim_change_data_title" msgid="294357201685244532">"ಡೇಟಾ ಸಿಮ್‌ ಬದಲಾಯಿಸುವುದೇ?"</string>
@@ -1501,7 +1501,7 @@
     <string name="clear_data_dlg_title" msgid="5605258400134511197">"ಅಪ್ಲಿಕೇಶನ್ ಡೇಟಾ ಅಳಿಸುವುದೇ?"</string>
     <string name="clear_data_dlg_text" msgid="3951297329833822490">"ಈ ಎಲ್ಲ ಅಪ್ಲಿಕೇಶನ್‌ನ ಡೇಟಾವನ್ನು ಶಾಶ್ವತವಾಗಿ ಅಳಿಸಲಾಗುತ್ತದೆ. ಇದರಲ್ಲಿ ಎಲ್ಲ ಫೈಲ್‌ಗಳು, ಸೆಟ್ಟಿಂಗ್‌ಗಳು, ಖಾತೆಗಳು, ಡೇಟಾಬೇಸ್‌ಗಳು ಇತರೆ ಒಳಗೊಂಡಿರುತ್ತದೆ."</string>
     <string name="dlg_ok" msgid="2402639055725653590">"ಸರಿ"</string>
-    <string name="dlg_cancel" msgid="1674753358972975911">"ರದ್ದುಮಾಡು"</string>
+    <string name="dlg_cancel" msgid="1674753358972975911">"ರದ್ದುಮಾಡಿ"</string>
     <string name="app_not_found_dlg_title" msgid="3127123411738434964"></string>
     <string name="app_not_found_dlg_text" msgid="4893589904687340011">"ಸ್ಥಾಪಿಸಲಾಗಿರುವ ಅಪ್ಲಿಕೇಶನ್‍ಗಳ ಪಟ್ಟಿಯಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ ಕಂಡುಬಂದಿಲ್ಲ."</string>
     <string name="clear_data_failed" msgid="7214074331627422248">"ಅಪ್ಲಿಕೇಶನ್ ಡೇಟಾವನ್ನು ತೆರವುಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."</string>
@@ -1814,7 +1814,7 @@
     <string name="print_print_jobs" msgid="3582094777756968793">"ಮುದ್ರಣ ಕಾರ್ಯಗಳು"</string>
     <string name="print_print_job" msgid="7563741676053287211">"ಮುದ್ರಣ ಕಾರ್ಯ"</string>
     <string name="print_restart" msgid="8373999687329384202">"ಮರುಪ್ರಾರಂಭಿಸಿ"</string>
-    <string name="print_cancel" msgid="3621199386568672235">"ರದ್ದುಮಾಡು"</string>
+    <string name="print_cancel" msgid="3621199386568672235">"ರದ್ದುಮಾಡಿ"</string>
     <string name="print_job_summary" msgid="8472427347192930694">"<xliff:g id="PRINTER">%1$s</xliff:g>\n<xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="print_printing_state_title_template" msgid="5736107667714582025">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> ಮುದ್ರಿಸಲಾಗುತ್ತಿದೆ"</string>
     <string name="print_cancelling_state_title_template" msgid="7102968925358219875">"<xliff:g id="PRINT_JOB_NAME">%1$s</xliff:g> ರದ್ದು ಮಾಡಲಾಗುತ್ತಿದೆ"</string>
@@ -2083,7 +2083,7 @@
     <string name="wifi_setup_connect" msgid="7954456989590237049">"ಸಂಪರ್ಕಪಡಿಸು"</string>
     <string name="wifi_setup_forget" msgid="2562847595567347526">"ಮರೆತುಬಿಡು"</string>
     <string name="wifi_setup_save" msgid="3659235094218508211">"ಉಳಿಸು"</string>
-    <string name="wifi_setup_cancel" msgid="3185216020264410239">"ರದ್ದುಮಾಡು"</string>
+    <string name="wifi_setup_cancel" msgid="3185216020264410239">"ರದ್ದುಮಾಡಿ"</string>
     <string name="wifi_setup_status_scanning" msgid="5317003416385428036">"ನೆಟ್‌ವರ್ಕ್‌ಗಳನ್ನು ಸ್ಕ್ಯಾನ್‌ ಮಾಡಲಾಗುತ್ತಿದೆ…"</string>
     <string name="wifi_setup_status_select_network" msgid="3960480613544747397">"ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಗೊಳಿಸಲು ಅದನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
     <string name="wifi_setup_status_existing_network" msgid="6394925174802598186">"ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಸಂಪರ್ಕಗೊಳಿಸಿ"</string>
@@ -2268,7 +2268,7 @@
     <string name="vpn_not_used" msgid="9094191054524660891">"(ಬಳಸಲಾಗಿಲ್ಲ)"</string>
     <string name="vpn_no_ca_cert" msgid="8776029412793353361">"(ಸರ್ವರ್‌ ಅನ್ನು ಪರಿಶೀಲಿಸದಿರು)"</string>
     <string name="vpn_no_server_cert" msgid="2167487440231913330">"(ಸರ್ವರ್‌ನಿಂದ ಸ್ವೀಕರಿಸಲಾಗಿದೆ)"</string>
-    <string name="vpn_cancel" msgid="1979937976123659332">"ರದ್ದುಮಾಡು"</string>
+    <string name="vpn_cancel" msgid="1979937976123659332">"ರದ್ದುಮಾಡಿ"</string>
     <string name="vpn_done" msgid="8678655203910995914">"ವಜಾಗೊಳಿಸು"</string>
     <string name="vpn_save" msgid="4233484051644764510">"ಉಳಿಸು"</string>
     <string name="vpn_connect" msgid="8469608541746132301">"ಸಂಪರ್ಕಿಸು"</string>
@@ -2324,7 +2324,7 @@
     <string name="new_backup_pw_prompt" msgid="8755501377391998428">"ಸಂಪೂರ್ಣ ಬ್ಯಾಕಪ್‌ಗಳಿಗಾಗಿ ಹೊಸ ಪಾಸ್‌ವರ್ಡನ್ನು ಇಲ್ಲಿ ಟೈಪ್ ಮಾಡಿ"</string>
     <string name="confirm_new_backup_pw_prompt" msgid="3238728882512787864">"ನಿಮ್ಮ ಹೊಸ ಪೂರ್ಣ ಬ್ಯಾಕಪ್ ಪಾಸ್‌ವರ್ಡ್‌ ಅನ್ನು ಇಲ್ಲಿ ಮರುಟೈಪ್ ಮಾಡಿ"</string>
     <string name="backup_pw_set_button_text" msgid="2387480910044648795">"ಬ್ಯಾಕಪ್ ಪಾಸ್‌ವರ್ಡ್‌ ಹೊಂದಿಸಿ"</string>
-    <string name="backup_pw_cancel_button_text" msgid="8845630125391744615">"ರದ್ದುಮಾಡು"</string>
+    <string name="backup_pw_cancel_button_text" msgid="8845630125391744615">"ರದ್ದುಮಾಡಿ"</string>
     <string name="additional_system_update_settings_list_item_title" msgid="214987609894661992">"ಹೆಚ್ಚುವರಿ ಸಿಸ್ಟಂ ಅಪ್‌ಡೇಟ್‌ಗಳು"</string>
     <string name="selinux_status_disabled" msgid="924551035552323327">"ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
     <string name="selinux_status_permissive" msgid="6004965534713398778">"ಅನುಮೋದನೆ"</string>
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ನೆಟ್‌ವರ್ಕ್ ಮತ್ತು ಇಂಟರ್ನೆಟ್"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಸಾಧನಗಳು"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಮತ್ತು ಅಧಿಸೂಚನೆಗಳು"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ಬಳಕೆದಾರ ಮತ್ತು ಖಾತೆಗಳು"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ಅಪ್ಲಿಕೇಶನ್ ಡಿಫಾಲ್ಟ್‌ಗಳು"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"ಭಾಷೆ: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
     <string name="search_menu" msgid="6283419262313758339">"ಹುಡುಕಾಟ ಸೆಟ್ಟಿಂಗ್‌ಗಳು"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"ಕೆಲಸದ ಪ್ರೊಫೈಲ್ ಧ್ವನಿಗಳನ್ನು ಬದಲಾಯಿಸುವುದೇ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ಸ್ಥಾನಾಂತರಿಸು"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"ನಿಮ್ಮ ಪ್ರಸ್ತುತ ಕೆಲಸದ ಪ್ರೊಫೈಲ್ ಧ್ವನಿಗಳನ್ನು ನಿಮ್ಮ ವೈಯಕ್ತಿಕ ಪ್ರೊಫೈಲ್ ಧ್ವನಿಯಾಗಿ ಸ್ಥಾನಾಂತರಿಸಲಾಗುತ್ತದೆ"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"ಅಧಿಸೂಚನೆ ಪ್ರಾಶಸ್ತ್ಯಗಳು"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"ಸುಧಾರಿತ"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"ಕೆಲಸದ ಅಧಿಸೂಚನೆಗಳು"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ಪಲ್ಸ್ ಅಧಿಸೂಚನೆ ಬೆಳಕು"</string>
@@ -2672,7 +2673,7 @@
     <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"ಸಂಪರ್ಕ ಹೆಸರುಗಳು ಮತ್ತು ನೀವು ಸ್ವೀಕರಿಸುವ ಸಂದೇಶಗಳ ಪಠ್ಯದಂತಹ ವೈಯಕ್ತಿಕ ಮಾಹಿತಿ ಸೇರಿದಂತೆ <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ಗೆ ಎಲ್ಲ ಅಧಿಸೂಚನೆಗಳನ್ನು ಓದಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಇದಕ್ಕೆ ಅಧಿಸೂಚನೆಗಳನ್ನು ವಜಾ ಮಾಡಲು ಅಥವಾ ಅವುಗಳು ಹೊಂದಿರುವಂತಹ ಕ್ರಿಯೆ ಬಟನ್‌ಗಳನ್ನು ಟ್ರಿಗ್ಗರ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. \n\nಈ ಅಪ್ಲಿಕೇಶನ್ ಸಂಬಂಧಿಸಿದ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಮತ್ತು ಅಡಚಣೆ ಮಾಡಬೇಡ ಆನ್ ಅಥವಾ ಆಫ್ ಮಾಡುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಈ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ನೀಡುತ್ತದೆ."</string>
     <string name="notification_listener_disable_warning_summary" msgid="6738915379642948000">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ಗೆ ನೀವು ಅಧಿಸೂಚನೆ ಪ್ರವೇಶಿಸುವಿಕೆಯನ್ನು ಆಫ್ ಮಾಡಿದರೆ, ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಪ್ರವೇಶವು ಸಹ ಆಫ್ ಆಗಬಹುದು."</string>
     <string name="notification_listener_disable_warning_confirm" msgid="8333442186428083057">"ಆಫ್ ಮಾಡು"</string>
-    <string name="notification_listener_disable_warning_cancel" msgid="8586417377104211584">"ರದ್ದು ಮಾಡು"</string>
+    <string name="notification_listener_disable_warning_cancel" msgid="8586417377104211584">"ರದ್ದು ಮಾಡಿ"</string>
     <string name="vr_listeners_title" msgid="1318901577754715777">"VR ಸಹಾಯ ಸೇವೆಗಳು"</string>
     <string name="no_vr_listeners" msgid="2689382881717507390">"ಯಾವುದೇ ಸ್ಥಾಪಿಸಿದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು VR ಸಹಾಯಕ ಸೇವೆಗಳ ರೀತಿಯಲ್ಲಿ ರನ್ ಮಾಡಲು ವಿನಂತಿಸಿಲ್ಲ."</string>
     <string name="vr_listener_security_warning_title" msgid="8309673749124927122">"<xliff:g id="SERVICE">%1$s</xliff:g> ಗೆ VR ಸೇವೆ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸುವುದೇ?"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"ಅಪ್ಲಿಕೇಶನ್‌ಗಳು ಸ್ಥಾಪನೆಗೊಂಡಿಲ್ಲ"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"ಸ್ಥಾಪಿಸಲಾದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"ನಿಮ್ಮ ಸಂಗ್ರಹಣೆಯು ಈಗ ಸಂಗ್ರಹಣೆ ನಿರ್ವಾಹಕರಿಂದ ನಿರ್ವಹಿಸಿಲಾಗುತ್ತಿದೆ"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 71d78bc..1a945d9 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"네트워크 및 인터넷"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"연결된 기기"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"앱 및 알림"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"사용자 및 계정"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"앱 기본값"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"언어: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"설정"</string>
     <string name="search_menu" msgid="6283419262313758339">"검색 설정"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"직장 프로필 사운드 바꾸기"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"바꾸기"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"현재 직장 프로필 사운드가 개인 프로필 사운드로 대체됩니다."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"알림 구성"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"알림 환경설정"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"고급"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"직장 알림"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"알림등 반복 표시"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"앱이 설치되어 있지 않음"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"설치된 앱"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"현재 저장용량 관리자가 저장용량을 관리하고 있습니다."</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ky-rKG/strings.xml b/res/values-ky-rKG/strings.xml
index e7a316d..1e23afc 100644
--- a/res/values-ky-rKG/strings.xml
+++ b/res/values-ky-rKG/strings.xml
@@ -2280,9 +2280,9 @@
     <string name="vpn_version" msgid="1939804054179766249">"<xliff:g id="VERSION">%s</xliff:g> версиясы"</string>
     <string name="vpn_forget_long" msgid="2232239391189465752">"VPN профили унутулсун"</string>
     <string name="vpn_replace_vpn_title" msgid="2963898301277610248">"Учурдагы VPN алмаштырылсынбы?"</string>
-    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Дайым иштеген VPN\'ди жөндөөбу?"</string>
+    <string name="vpn_set_vpn_title" msgid="4009987321156037267">"Дайым иштеген VPN\'ди жөндөө керекпи?"</string>
     <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"Бул орнотууну куйгүзүү менен VPN ийгиликтүү туташмайынча, интернетиңиз жок болуп турат"</string>
-    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Күйгүзулгөн VPN\'ңиз алмаштырылып, VPN ийгиликтүү туташмайынча, интернетиңиз жок болуп турат"</string>
+    <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"Күйгүзүлгөн VPN\'ңиз алмаштырылып, VPN ийгиликтүү туташмайынча, интернетиңиз жок болуп турат"</string>
     <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"Дайым иштеген VPN кызматыңыз туташылган. Эгер башкасына туташсаңыз, учурдагы VPN алмаштырылып, дайым күйүк режими өчүрүлүп калат."</string>
     <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"VPN кызматы туташылган. Эгер башкасына туташсаңыз, учурдагы VPN өчүрүлөт."</string>
     <string name="vpn_turn_on" msgid="2363136869284273872">"Күйгүзүү"</string>
@@ -2528,8 +2528,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Тармак жана Интернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Туташкан түзмөктөр"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Колдонмолор жана эскертмелер"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Колдонуучу жана каттоо эсептери"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Демейки колдонмолор"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Тили: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Жөндөөлөр"</string>
     <string name="search_menu" msgid="6283419262313758339">"Издөө жөндөөлөрү"</string>
@@ -2632,7 +2633,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Үндөр алмаштырылсынбы?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Алмаштыруу"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Учурдагы жумуш профилиңиздин үндөрү жеке профилиңиздин үндөрү менен алмаштырылат."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Эскертмелерди жөндөө"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Эскертменин параметрлери"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Өркүндөтүлгөн"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Жумуш боюнча эскертмелер"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Тармактын индикатору"</string>
@@ -3274,4 +3275,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Колдонмолор орнотулган эмес"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Орнотулган колдонмолор"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Учурда сактагычыңыз сактагычты көзөмөлдөгүч тарабынан башкарылууда"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml
index b13a584..60e750d 100644
--- a/res/values-lo-rLA/strings.xml
+++ b/res/values-lo-rLA/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ເຄືອຂ່າຍ ແລະ ອິນເຕີເນັດ"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ອຸປະກອນທີ່ເຊື່ອມຕໍ່ແລ້ວ"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ແອັບ ແລະ ການແຈ້ງເຕືອນ"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"User &amp; accounts"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"App defaults"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Language: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"​ການ​ຕັ້ງ​ຄ່າ"</string>
     <string name="search_menu" msgid="6283419262313758339">"​ການ​ຕັ້ງ​ຄ່າ​ການ​ຊອກ​ຫາ"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"ແທນທີ່ສຽງໂປຣໄຟລ໌ບ່ອນເຮັດວຽກບໍ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ແທນທີ່"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"ສຽງໂປຣໄຟລ໌ບ່ອນເຮັດວຽກຂອງທ່ານໃນປັດຈຸບັນຈະຖືກແທນທີ່ດ້ວຍສຽງໂປຣໄຟລ໌ສ່ວນຕົວຂອງທ່ານ"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"ປັບແຕ່ງການແຈ້ງເຕືອນ"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"ການຕັ້ງຄ່າການແຈ້ງເຕືອນ"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"​ຂັ້ນ​ສູງ"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"ການແຈ້ງເຕືອນວຽກ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ໄຟກະພິບແຈ້ງເຕືອນ"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Apps not installed"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"ແອັບຯທີ່ຕິດຕັ້ງແລ້ວ"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"ຕອນນີ້ອຸປະກອນຂອງທ່ານຖືກຈັດການໂດຍຕົວຈັດການບ່ອນຈັດເກັບຂໍ້ມູນແລ້ວ."</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 8d04731..ab375fc 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -2573,8 +2573,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Tinkas ir internetas"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Prijungti įrenginiai"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Programos ir pranešimai"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Naudotojas ir paskyros"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Programos numatytieji nustatymai"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Kalba: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Nustatymai"</string>
     <string name="search_menu" msgid="6283419262313758339">"Paieškos nustatymai"</string>
@@ -2677,7 +2678,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Pakeisti darbo profil. garsus?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Pakeisti"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Dabartiniai darbo profilio garsai bus pakeisti asmeninio profilio garsais"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Pranešimų konfigūravimas"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Pranešimų nuostatos"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Išplėstiniai"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Darbo profilio pranešimai"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsuojanti įspėjimo šviesa"</string>
@@ -3347,4 +3348,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Programos neįdiegtos"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Įdiegtos programos"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Saugyklą dabar tvarko saugyklos valdytojas"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 2c9ad41..781f504 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -2551,8 +2551,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Tīkls un internets"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Pievienotās ierīces"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Lietotnes un paziņojumi"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Lietotāji un konti"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Noklusējuma lietotnes"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Valoda: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Iestatījumi"</string>
     <string name="search_menu" msgid="6283419262313758339">"Meklēšanas iestatījumi"</string>
@@ -2655,7 +2656,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Aizstāt darba profila signālus?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Aizstāt"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Jūsu pašreizējā darba profila signāli tiks aizstāti ar jūsu personiskā profila signāliem."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Paziņojumu konfigurēšana"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Paziņojumu preferences"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Papildu"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Darba paziņojumi"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsa paziņojuma indikators"</string>
@@ -3310,4 +3311,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Lietotnes nav instalētas"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Instalētās lietotnes"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Tagad jūsu krātuvi pārvalda krātuves pārvaldnieks"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-mk-rMK/strings.xml b/res/values-mk-rMK/strings.xml
index b56c2a5..e0cbbbe 100644
--- a/res/values-mk-rMK/strings.xml
+++ b/res/values-mk-rMK/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Мрежа и Интернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Поврзани уреди"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Апликации и известувања"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Корисник и сметки"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Стандардни апликации"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Јазик: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Поставки"</string>
     <string name="search_menu" msgid="6283419262313758339">"Поставки за пребарување"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Заменете звуци на раб. профил?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Замени"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Тековните звуци на работниот профил ќе бидат заменети со звуците од личниот профил"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Конфигурирајте известувања"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Поставки за известувањата"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Напредни"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Известувања за работен профил"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Пулсирачко светло за известување"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Апликациите не се инсталирани"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Инсталирани апликации"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Управникот со меморија сега управува со вашата меморија"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ml-rIN/strings.xml b/res/values-ml-rIN/strings.xml
index cd40ec8..e82bfe0 100644
--- a/res/values-ml-rIN/strings.xml
+++ b/res/values-ml-rIN/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"നെറ്റ്‌വർക്കും ഇന്റർനെറ്റും"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"കണക്‌റ്റുചെയ്‌ത ഉപകരണങ്ങൾ"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ആപ്‌സും അറിയിപ്പുകളും"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ഉപയോക്താവും അക്കൗണ്ടുകളും"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ആപ്പ് ഡിഫോൾട്ടുകൾ"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"ഭാഷ: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ക്രമീകരണം"</string>
     <string name="search_menu" msgid="6283419262313758339">"തിരയൽ ക്രമീകരണം"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"ഔദ്യോഗിക പ്രൊഫൈൽ ശബ്ദങ്ങൾ മാറ്റണോ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"മാറ്റിസ്ഥാപിക്കുക"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"നിങ്ങളുടെ നിലവിലെ ഔദ്യോഗിക പ്രൊഫൈൽ ശബ്ദങ്ങൾക്ക് പകരമായി നിങ്ങളുടെ വ്യക്തിഗത പ്രൊഫൈൽ ശബ്ദങ്ങൾ ഉപയോഗിക്കപ്പെടും"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"അറിയിപ്പ് കോൺഫിഗർചെയ്യൂ"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"അറിയിപ്പ് മുൻഗണനകൾ"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"വിപുലമായത്"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"ഔദ്യോഗിക അറിയിപ്പുകൾ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"അറിയിപ്പുലൈറ്റ് പ്രകാശിപ്പിക്കൂ"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"ആപ്‌സ് ഇൻസ്റ്റാൾ ചെയ്തിട്ടില്ല"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"ഇൻസ്‌റ്റാളുചെയ്‌ത അപ്ലിക്കേഷനുകൾ"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"നിങ്ങളുടെ സ്റ്റോറേജ് ഇപ്പോൾ മാനേജുചെയ്യുന്നത് സ്റ്റോറേജ് ​​മാനേജരാണ്"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml
index 52c09ef..82a31e5 100644
--- a/res/values-mn-rMN/strings.xml
+++ b/res/values-mn-rMN/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Сүлжээ &amp; интернэт"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Холбогдсон төхөөрөмж"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Апп; мэдэгдэл"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Хэрэглэгч &amp; бүртгэл"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Апп-н өгөгдмөл"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Хэл: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Тохиргоо"</string>
     <string name="search_menu" msgid="6283419262313758339">"Хайлтын тохиргоо"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Ажлын профайлын дууг солих уу?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Солих"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Таны ажлын профайлын одоогийн дууг таны хувийн профайлын дуугаар солих болно"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Мэдэгдлийг оновчлох"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Мэдэгдлийн тохируулга"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Нарийвчилсан"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Ажлын мэдэгдэл"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Анивчих мэдэгдлийн гэрэл"</string>
@@ -3273,4 +3274,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Апп суулгаагүй байна"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Суулгасан апп"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Таны санг одоо сангийн менежер удирдаж байна"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-mr-rIN/strings.xml b/res/values-mr-rIN/strings.xml
index c48c201..d78b8b9 100644
--- a/res/values-mr-rIN/strings.xml
+++ b/res/values-mr-rIN/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"नेटवर्क आणि इंटरनेट"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"कनेक्‍ट केलेले डिव्‍हाइसेस"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"अॅप्स आणि सूचना"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"वापरकर्ता आणि खाती"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"अॅप डीफॉल्ट"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"भाषा: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"सेटिंग्ज"</string>
     <string name="search_menu" msgid="6283419262313758339">"शोध सेटिंग्ज"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"कार्य प्रोफाईल ध्वनी पुनर्स्थित करायचे?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"पुनर्स्थित करा"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"आपले वर्तमान कार्य प्रोफाइल ध्वनी आपल्या वैयक्तिक प्रोफाइल ध्वनींनी पुनर्स्थित केले जातील"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"सूचना कॉन्फिगर करा"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"सूचना प्राधान्ये"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"प्रगत"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"कार्य सूचना"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"पल्स सूचना प्रकाश"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"अ‍ॅप्स स्थापित केलेले नाहीत"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"स्थापित केलेले अॅप्स"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"आपला संचय आता संचय व्यवस्थापक व्यवस्थापित करीत आहे"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml
index b508336..06a38d2 100644
--- a/res/values-ms-rMY/strings.xml
+++ b/res/values-ms-rMY/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rangkaian &amp; Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Peranti yang disambungkan"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apl &amp; pemberitahuan"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Pengguna &amp; akaun"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Lalai apl"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Bahasa: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Tetapan"</string>
     <string name="search_menu" msgid="6283419262313758339">"Tetapan carian"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Gantikan bunyi profil kerja?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Gantikan"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Bunyi profil kerja semasa akan digantikan dengan bunyi profil peribadi anda."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurasikan pemberitahuan"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Pilihan pemberitahuan"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Terperinci"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Pemberitahuan kerja"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Kelip lampu pemberitahuan"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Apl tidak dipasang"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Apl yang dipasang"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Storan anda kini diurus oleh pengurus storan"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-my-rMM/strings.xml b/res/values-my-rMM/strings.xml
index b908d68..2e481ff 100644
--- a/res/values-my-rMM/strings.xml
+++ b/res/values-my-rMM/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ကွန်ရက်နှင့် အင်တာနက်"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ချိတ်ဆက်ထားသော စက်ပစ္စည်းများ"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"အက်ပ်များနှင့် အကြောင်းကြားချက်များ"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"အသုံးပြုသူနှင့် အကောင့်များ"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"အက်ပ်မူရင်းဆက်တင်များ"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"ဘာသာစကား - <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ဆက်တင်များ"</string>
     <string name="search_menu" msgid="6283419262313758339">"ရှာဖွေမှု ဆက်တင်များ"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"အလုပ်၏အသံများကို အစားထိုးမလား။"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"အစားထိုးရန်"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"သင့်လက်ရှိအလုပ်ပရိုဖိုင်ဆိုင်ရာ အသံများကို သင်၏ကိုယ်ရေးကိုယ်တာပရိုဖိုင်ဆိုင်ရာအသံများနှင့် အစားထိုးလိုက်ပါမည်။"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"အကြောင်းကြားချက်များ သတ်မှတ်ခြင်း"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"အကြောင်းကြားချက် ရွေးချယ်မှု"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"အဆင့်မြင့်"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"အလုပ်သတိပေးချက်များ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"အကြောင်းကြားချက်ပြ မီးဖွင့်ရန်"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"အက်ပ်များကို ထည့်သွင်းမထားပါ"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"ထည့်သွင်းထားသည့် အက်ပ်များ"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"သင့်သိုလှောင်မှုကို သိုလှောင်မှုမန်နေဂျာက လက်ရှိစီမံခန့်ခွဲနေပါသည်"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 7546c0d..9e8458f 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Nettverk og Internett"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Tilkoblede enheter"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apper og varsler"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Bruker og kontoer"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Appstandarder"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Språk: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Innstillinger"</string>
     <string name="search_menu" msgid="6283419262313758339">"Søkeinnstillinger"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Bytte lyder for jobbprofilen?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Erstatt"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"De nåværende lydene for jobbprofilen din blir byttet ut med lydene for den personlige profilen din"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurer varsler"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Innstillinger for varsler"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avansert"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Jobbvarsler"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"La varsellampen pulsere"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Apper som ikke er installert"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Installerte apper"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Lagringsplassen din blir nå administrert av lagringsadministratoren"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml
index 573c716..2960858 100644
--- a/res/values-ne-rNP/strings.xml
+++ b/res/values-ne-rNP/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"नेटवर्क र इन्टरनेट"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"जडान गरिएका यन्त्रहरू"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"अनुप्रयोग सम्बन्धी &amp; सूचनाहरू"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"प्रयोगकर्ता रamp; खाता"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"अनुप्रयोगको पूर्वनिर्धारित अवस्था"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"भाषा: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"सेटिङहरू"</string>
     <string name="search_menu" msgid="6283419262313758339">"खोज सेटिङहरू"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"कार्य प्रोफाइलका ध्वनिहरूलाई प्रतिस्थापन गर्ने हो?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"प्रतिस्थापन गर्नुहोस्"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"तपाईँको हालको कार्य प्रोफाइलका ध्वनिहरूलाई तपाईँको व्यक्तिगत प्रोफाइलका ध्वनिहरूले प्रतिस्थापन गरिनेछ"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"सूचनाहरू कन्फिगर गर्नुहोस्"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"सूचना सम्बन्धी प्राथमिकताहरू"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"उन्‍नत"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"कार्यका सूचनाहरू"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"प्रकाशका सम्बन्धमा पल्स सूचना"</string>
@@ -3277,4 +3278,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"अनुप्रयोगहरूको स्थापना गरिएको छैन"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"स्थापना गरिएका अनुप्रयोगहरू"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"तपाईंको भण्डारण अहिले भण्डारण प्रबन्धकद्वारा व्यवस्थापन भइरहेको छ"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 32c2bb0..5959a9c 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Netwerk en internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Verbonden apparaten"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps en meldingen"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Gebruiker en accounts"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Standaard-apps"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Taal: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Instellingen"</string>
     <string name="search_menu" msgid="6283419262313758339">"Zoekinstellingen"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Geluid werkprofiel vervangen?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Vervangen"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"De huidige geluiden van je werkprofiel worden vervangen door de huidige geluiden van je persoonlijke profiel"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Meldingen configureren"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Meldingsvoorkeuren"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Geavanceerd"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Werkmeldingen"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Meldingslampje knippert"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Apps niet geïnstalleerd"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Geïnstalleerde apps"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Je opslag wordt nu beheerd door de opslagbeheerder"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-pa-rIN/strings.xml b/res/values-pa-rIN/strings.xml
index 5f6c739..764f2a3 100644
--- a/res/values-pa-rIN/strings.xml
+++ b/res/values-pa-rIN/strings.xml
@@ -2284,7 +2284,7 @@
     <string name="vpn_set_vpn_title" msgid="4009987321156037267">"ਕੀ ਹਮੇਸ਼ਾ-ਚਾਲੂ VPN ਨੂੰ ਸੈੱਟ ਕਰਨਾ ਹੈ?"</string>
     <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"ਇਸ ਸੈਟਿੰਗ ਨੂੰ ਚਾਲੂ ਕਰਨ ਨਾਲ, ਤੁਹਾਡੇ ਕੋਲ ਇੱਕ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਤਦ ਤੱਕ ਨਹੀਂ ਹੋਵੇਗਾ ਜਦ ਤੱਕ VPN ਸਫ਼ਲਤਾਪੂਰਵਕ ਕਨੈਕਟ ਨਹੀਂ ਹੋ ਜਾਂਦਾ"</string>
     <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"ਤੁਹਾਡੇ ਮੌਜੂਦਾ VPN ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਅਤੇ ਤੁਹਾਡੇ ਕੋਲ ਤਦ ਤੱਕ ਇੱਕ ਇੰਟਰਨੈੱਟ ਕਨੈਕਸ਼ਨ ਨਹੀਂ ਹੋਵੇਗਾ ਜਦ ਤੱਕ VPN ਸਫ਼ਲਤਾਪੂਰਵਕ ਕਨੈਕਟ ਨਹੀਂ ਹੋ ਜਾਂਦਾ"</string>
-    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"ਤੁਸੀਂ ਪਹਿਲਾਂ ਤੋਂ ਹਮੇਸ਼ਾ-ਚਾਲੂ VPN ਨਾਲ ਕਨੈਕਟ ਹੋ। ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਨਾਲ ਕਨੈਕਟ ਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਮੌਜੂਦਾ VPN ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਅਤੇ ਹਮੇਸ਼ਾ-ਚਾਲੂ ਮੋਡ ਬੰਦ ਹੋ ਜਾਵੇਗਾ।"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"ਤੁਸੀਂ ਪਹਿਲਾਂ ਹੀ ਹਮੇਸ਼ਾ-ਚਾਲੂ VPN ਨਾਲ ਕਨੈਕਟ ਹੋ। ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਨਾਲ ਕਨੈਕਟ ਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਮੌਜੂਦਾ VPN ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ, ਅਤੇ ਹਮੇਸ਼ਾ-ਚਾਲੂ ਮੋਡ ਬੰਦ ਹੋ ਜਾਵੇਗਾ।"</string>
     <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"ਤੁਸੀਂ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਕਿਸੇ VPN ਨਾਲ ਕਨੈਕਟ ਹੋ। ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਹੋਰ ਨਾਲ ਕਨੈਕਟ ਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਵਰਤਮਾਨ VPN ਨੂੰ ਤਬਦੀਲ ਕਰ ਦਿੱਤਾ ਜਾਵੇਗਾ।"</string>
     <string name="vpn_turn_on" msgid="2363136869284273872">"ਚਾਲੂ ਕਰੋ"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"<xliff:g id="VPN_NAME">%1$s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ਨੈੱਟਵਰਕ ਅਤੇ ਇੰਟਰਨੈੱਟ"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"ਕਨੈਕਟ ਕੀਤੀਆਂ ਡੀਵਾਈਸਾਂ"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ਐਪਾਂ ਅਤੇ ਸੂਚਨਾਵਾਂ"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ਵਰਤੋਂਕਾਰ ਅਤੇ ਖਾਤੇ"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ਐਪ ਪੂਰਵ-ਨਿਰਧਾਰਤ"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"ਭਾਸ਼ਾ: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ਸੈਟਿੰਗਾਂ"</string>
     <string name="search_menu" msgid="6283419262313758339">"ਖੋਜ ਸੈੱਟਿੰਗਜ਼"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"ਕੀ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਧੁਨੀਆਂ ਬਦਲਣੀਆਂ ਹਨ?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ਬਦਲੋ"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"ਤੁਹਾਡੀਆਂ ਵਰਤਮਾਨ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਧੁਨੀਆਂ ਤੁਹਾਡੀਆਂ ਨਿੱਜੀ ਪ੍ਰੋਫਾਈਲ ਧੁਨੀਆਂ ਦੇ ਨਾਲ ਬਦਲੀਆਂ ਜਾਣਗੀਆਂ"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"ਸੂਚਨਾਵਾਂ ਦਾ ਸੰਰੂਪਣ ਕਰੋ"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"ਸੂਚਨਾ ਤਰਜੀਹਾਂ"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"ਉੱਨਤ"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"ਕੰਮ ਸਬੰਧੀ ਸੂਚਨਾਵਾਂ"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ਪਲਸ ਸੂਚਨਾ ਲਾਈਟ"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"ਐਪਾਂ ਸਥਾਪਤ ਨਹੀਂ ਹਨ"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"ਸਥਾਪਤ ਕੀਤੀਆਂ ਐਪਾਂ"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"ਤੁਹਾਡੀ ਸਟੋਰੇਜ ਦਾ ਪ੍ਰਬੰਧਨ ਹੁਣ ਸਟੋਰੇਜ ਪ੍ਰਬੰਧਕ ਦੁਆਰਾ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 987580a..98c3ee2 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -1719,7 +1719,7 @@
     <string name="accessibility_settings" msgid="3975902491934816215">"Ułatwienia dostępu"</string>
     <string name="accessibility_settings_title" msgid="2130492524656204459">"Ustawienia ułatwień dostępu"</string>
     <string name="vision_settings_title" msgid="4204111425716868288">"Ustawienia widoczności"</string>
-    <string name="vision_settings_description" msgid="5679491180156408260">"Możesz dostosować urządzenie do swoich potrzeb. Funkcje ułatwień dostępu możesz zawsze zmienić w Ustawieniach."</string>
+    <string name="vision_settings_description" msgid="5679491180156408260">"Możesz dostosować urządzenie do swoich potrzeb. Ułatwienia dostępu możesz zawsze zmienić w Ustawieniach."</string>
     <string name="accessibility_services_title" msgid="2592221829284342237">"Usługi"</string>
     <string name="talkback_title" msgid="7912059827205988080">"TalkBack"</string>
     <string name="talkback_summary" msgid="8331244650729024963">"Czytnik ekranu przeznaczony głównie dla osób niewidomych i słabowidzących"</string>
@@ -1732,7 +1732,7 @@
     <string name="accessibility_global_gesture_preference_title" msgid="6752037184140789970">"Skrót ułatwień dostępu"</string>
     <string name="accessibility_global_gesture_preference_summary_on" msgid="6180927399052022181">"Wł."</string>
     <string name="accessibility_global_gesture_preference_summary_off" msgid="8102103337813609849">"Wył."</string>
-    <string name="accessibility_global_gesture_preference_description" msgid="1605107799571936715">"Gdy ta funkcja jest włączona, możesz w dwóch prostych krokach włączyć funkcje ułatwień dostępu:\n\nKrok 1. Naciśnij i przytrzymaj przycisk zasilania, aż usłyszysz dźwięk lub poczujesz wibrację.\n\nKrok 2. Dotknij ekranu dwoma palcami i przytrzymaj je, aż usłyszysz potwierdzenie dźwiękowe.\n\nJeśli z urządzenia korzysta wiele osób, użycie tego skrótu na ekranie blokady powoduje tymczasowe włączenie ułatwień dostępu. Zostaną one aktywne do chwili odblokowania urządzenia."</string>
+    <string name="accessibility_global_gesture_preference_description" msgid="1605107799571936715">"Gdy ta funkcja jest włączona, możesz w dwóch prostych krokach włączyć ułatwienia dostępu:\n\nKrok 1. Naciśnij i przytrzymaj przycisk zasilania, aż usłyszysz dźwięk lub poczujesz wibrację.\n\nKrok 2. Dotknij ekranu dwoma palcami i przytrzymaj je, aż usłyszysz potwierdzenie dźwiękowe.\n\nJeśli z urządzenia korzysta wiele osób, użycie tego skrótu na ekranie blokady powoduje tymczasowe włączenie ułatwień dostępu. Zostaną one aktywne do chwili odblokowania urządzenia."</string>
     <string name="accessibility_toggle_high_text_contrast_preference_title" msgid="2567402942683463779">"Tekst o dużym kontraście"</string>
     <string name="accessibility_toggle_screen_magnification_auto_update_preference_title" msgid="7218498768415430963">"Automatyczna aktualizacja powiększenia ekranu"</string>
     <string name="accessibility_toggle_screen_magnification_auto_update_preference_summary" msgid="4392059334816220155">"Aktualizuj powiększenie ekranu przy zmianie aplikacji"</string>
@@ -2459,7 +2459,7 @@
     <string name="global_change_warning" product="tablet" msgid="8045013389464294039">"To ustawienie obowiązuje wszystkich użytkowników tego tabletu."</string>
     <string name="global_change_warning" product="default" msgid="2461264421590324675">"To ustawienie obowiązuje wszystkich użytkowników tego telefonu."</string>
     <string name="global_locale_change_title" msgid="5956281361384221451">"Zmień język"</string>
-    <string name="nfc_payment_settings_title" msgid="1807298287380821613">"Dotknij i zapłać"</string>
+    <string name="nfc_payment_settings_title" msgid="1807298287380821613">"Zbliż i zapłać"</string>
     <string name="nfc_payment_how_it_works" msgid="3028822263837896720">"Jak to działa"</string>
     <string name="nfc_payment_no_apps" msgid="5477904979148086424">"Płać telefonem w sklepie"</string>
     <string name="nfc_payment_default" msgid="8648420259219150395">"Płatność domyślna"</string>
@@ -2468,14 +2468,14 @@
     <string name="nfc_payment_use_default" msgid="3234730182120288495">"Użyj domyślnej"</string>
     <string name="nfc_payment_favor_default" msgid="5743781166099608372">"Zawsze"</string>
     <string name="nfc_payment_favor_open" msgid="1923314062109977944">"Z wyjątkiem, gdy jest otwarta inna aplikacja płatnicza"</string>
-    <string name="nfc_payment_pay_with" msgid="7524904024378144072">"Na terminalu „dotknij i zapłać” zapłać przy użyciu:"</string>
+    <string name="nfc_payment_pay_with" msgid="7524904024378144072">"Na terminalu „Zbliż i zapłać” zapłać przy użyciu:"</string>
     <string name="nfc_how_it_works_title" msgid="1984068457698797207">"Płacenie przy terminalu"</string>
     <string name="nfc_how_it_works_content" msgid="4749007806393224934">"Skonfiguruj aplikację płatniczą, a później przyłóż tylną część telefonu do terminala z symbolem płatności zbliżeniowej."</string>
     <string name="nfc_how_it_works_got_it" msgid="259653300203217402">"OK"</string>
     <string name="nfc_more_title" msgid="815910943655133280">"Więcej..."</string>
     <string name="nfc_payment_set_default_label" msgid="7315817259485674542">"Ustawić jako Twoją preferencję?"</string>
-    <string name="nfc_payment_set_default" msgid="8532426406310833489">"Zawsze używać aplikacji <xliff:g id="APP">%1$s</xliff:g>, gdy korzystasz z systemu „dotknij i zapłać”?"</string>
-    <string name="nfc_payment_set_default_instead_of" msgid="6993301165940432743">"Zawsze używać aplikacji <xliff:g id="APP_0">%1$s</xliff:g> zamiast <xliff:g id="APP_1">%2$s</xliff:g>, gdy korzystasz z systemu „dotknij i zapłać”?"</string>
+    <string name="nfc_payment_set_default" msgid="8532426406310833489">"Zawsze używać aplikacji <xliff:g id="APP">%1$s</xliff:g>, gdy korzystasz z systemu „Zbliż i zapłać”?"</string>
+    <string name="nfc_payment_set_default_instead_of" msgid="6993301165940432743">"Zawsze używać aplikacji <xliff:g id="APP_0">%1$s</xliff:g> zamiast <xliff:g id="APP_1">%2$s</xliff:g>, gdy korzystasz z systemu „Zbliż i zapłać”?"</string>
     <string name="restriction_settings_title" msgid="4233515503765879736">"Ograniczenia"</string>
     <string name="restriction_menu_reset" msgid="2067644523489568173">"Usuń ograniczenia"</string>
     <string name="restriction_menu_change_pin" msgid="740081584044302775">"Zmień PIN"</string>
@@ -2573,8 +2573,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Sieć i internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Połączone urządzenia"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacje i powiadomienia"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Użytkownik i konta"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Domyślne aplikacje"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Język: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ustawienia"</string>
     <string name="search_menu" msgid="6283419262313758339">"Ustawienia wyszukiwania"</string>
@@ -2677,7 +2678,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Zastąpić dźwięki w profilu do pracy?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Zastąp"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Dźwięki w Twoim profilu do pracy zostaną zastąpione dźwiękami z Twojego profilu osobistego."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Skonfiguruj powiadomienia"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Ustawienia powiadomień"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Zaawansowane"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Powiadomienia związane z pracą"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsująca dioda"</string>
@@ -3345,4 +3346,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Aplikacje niezainstalowane"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Zainstalowane aplikacje"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Pamięcią zarządza teraz menedżer miejsca"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index bf10f45..c61065f 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps e notificações"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Usuário e contas"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Padrões de apps"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configurações"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configurações de pesquisa"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Substituir sons do perfil de trabalho?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Substituir"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Os sons atuais do seu perfil de trabalho serão substituídos pelos sons do seu perfil pessoal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurar notificações"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferências de notificação"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avançadas"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificações de trabalho"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsar luz de notificação"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Apps não instalados"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Apps instalados"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Seu armazenamento está sendo controlado pelo gerenciador de armazenamento"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 7e5d96a..df88d18 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos ligados"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicações e notificações"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Utilizador e contas"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Predefinições da aplicação"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Definições"</string>
     <string name="search_menu" msgid="6283419262313758339">"Definições de pesquisa"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Subst. sons perfil de trab.?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Substituir"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Os sons atuais do seu perfil de trabalho serão substituídos pelos sons do seu perfil pessoal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurar notificações"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferências de notificação"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avançadas"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificações de trabalho"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Usar luz de notificações"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Aplicações não instaladas"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Aplicações instaladas"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"O seu armazenamento está agora a ser gerido pelo gestor de armazenamento"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index bf10f45..c61065f 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rede e Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispositivos conectados"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Apps e notificações"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Usuário e contas"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Padrões de apps"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Idioma: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Configurações"</string>
     <string name="search_menu" msgid="6283419262313758339">"Configurações de pesquisa"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Substituir sons do perfil de trabalho?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Substituir"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Os sons atuais do seu perfil de trabalho serão substituídos pelos sons do seu perfil pessoal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurar notificações"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferências de notificação"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avançadas"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificações de trabalho"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulsar luz de notificação"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Apps não instalados"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Apps instalados"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Seu armazenamento está sendo controlado pelo gerenciador de armazenamento"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 0ff69b7..bf063b1 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -2551,8 +2551,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rețea și internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Dispozitive conectate"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplicații și notificări"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Utilizator și conturi"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Setări prestabilite ale aplicației"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Limba: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Setări"</string>
     <string name="search_menu" msgid="6283419262313758339">"Setări de căutare"</string>
@@ -2655,7 +2656,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Înlocuiți sunetele profilului de serviciu?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Înlocuiți"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Sunetele actuale ale profilului de serviciu vor fi înlocuite cu cele ale profilului personal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Configurați notificările"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferințe privind notificările"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avansate"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Notificări profil de serviciu"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Indicator luminos intermitent"</string>
@@ -2700,7 +2701,7 @@
     <string name="no_vr_listeners" msgid="2689382881717507390">"Nicio aplicație instalată nu a solicitat să fie rulată ca un serviciu de ajutor pentru Realitatea virtuală."</string>
     <string name="vr_listener_security_warning_title" msgid="8309673749124927122">"Permiteți accesul la serviciul de Realitate virtuală pentru <xliff:g id="SERVICE">%1$s</xliff:g>?"</string>
     <string name="vr_listener_security_warning_summary" msgid="6931541068825094653">"<xliff:g id="VR_LISTENER_NAME">%1$s</xliff:g> va putea rula când folosiți aplicațiile în modul de realitate virtuală."</string>
-    <string name="display_vr_pref_title" msgid="8104485269504335481">"Când dispozitivul este în modul VR"</string>
+    <string name="display_vr_pref_title" msgid="8104485269504335481">"Când dispozitivul este în modul RV"</string>
     <string name="display_vr_pref_low_persistence" msgid="5707494209944718537">"Reduceți estomparea (recomandat)"</string>
     <string name="display_vr_pref_off" msgid="2190091757123260989">"Reduceți pâlpâirea"</string>
     <string name="manage_zen_access_title" msgid="2611116122628520522">"Accesul Nu deranja"</string>
@@ -3310,4 +3311,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Aplicații neinstalate"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Aplicații instalate"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Spațiul de stocare este acum gestionat de managerul spațiului de stocare"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 45e4940..a157b6d 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -959,7 +959,7 @@
     <string name="night_display_category_schedule" msgid="2044072617637348966">"Расписание"</string>
     <string name="night_display_category_status" msgid="1952928783124400330">"Статус"</string>
     <string name="night_display_auto_mode_title" msgid="8046314360381608455">"Включать автоматически"</string>
-    <string name="night_display_auto_mode_never" msgid="6723636142053240947">"Всегда выключать"</string>
+    <string name="night_display_auto_mode_never" msgid="6723636142053240947">"Никогда"</string>
     <string name="night_display_auto_mode_custom" msgid="6012300346981608242">"Мое расписание"</string>
     <string name="night_display_auto_mode_twilight" msgid="2123345097508167094">"От заката до рассвета"</string>
     <string name="night_display_start_time_title" msgid="8918016772613689584">"Время включения"</string>
@@ -2573,8 +2573,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Сеть и Интернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Подключенные устройства"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Приложения и уведомления"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Пользователь и аккаунты"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Приложения по умолчанию"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Язык: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Настройки"</string>
     <string name="search_menu" msgid="6283419262313758339">"Поиск настроек"</string>
@@ -2677,7 +2678,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Изменить настройки?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Да"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Сигналы в рабочем профиле будут заменены звуками, выбранными в личном."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Настройка уведомлений"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Настройки оповещений"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Расширенные настройки"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Рабочие уведомления"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Световой индикатор"</string>
@@ -3345,4 +3346,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Приложения не установлены"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Установленные приложения"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Память устройства теперь управляется менеджером хранилища"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml
index 6c733cd..88dfedc 100644
--- a/res/values-si-rLK/strings.xml
+++ b/res/values-si-rLK/strings.xml
@@ -2531,8 +2531,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"ජාලය සහ අන්තර්ජාලය"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"සම්බන්ධ කළ උපාංග"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"යෙදුම් සහ දැනුම්දීම්"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"පරිශීලක සහ ගිණුම්"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"යෙදුම් පෙරනිමි"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"භාෂාව: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"සැකසීම්"</string>
     <string name="search_menu" msgid="6283419262313758339">"සැකසීම් සොයන්න"</string>
@@ -2635,7 +2636,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"කා. පැතිකඩ හඩ ප්‍රතිස්ථා. කර.?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"ප්‍රතිස්ථාපනය කරන්න"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"ඔබේ වත්මන් කාර්යාල පැතිකඩ හඬවල් ඔබේ පුද්ගලික පැතිකඩ හඬවල්වලින් ප්‍රතිස්ථාපනය වනු ඇත"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"දැනුම්දීම් වින්‍යාස කිරීම"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"දැනුම්දීම් මනාප"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"උසස්"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"වැඩ දැනුම්දීම්"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ස්පන්ද දැනුම්දීම් එළිය"</string>
@@ -3277,4 +3278,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"යෙදුම් ස්ථාපනය කර නැත"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"ස්ථාපිත යෙදුම්"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"ඔබේ ගබඩාව දැන් ගබඩා කළමනාකරු විසින් පාලනය කරනු ලැබේ"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index aa469ff..d3030d9 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -2573,8 +2573,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Sieť a internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Pripojené zariadenia"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikácie a upozornenia"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Používateľ a účty"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Predvolené aplikácie"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Jazyk: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Nastavenia"</string>
     <string name="search_menu" msgid="6283419262313758339">"Nastavenia vyhľadávania"</string>
@@ -2677,7 +2678,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Nahradiť zvuky prac. profilu?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Nahradiť"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Vaše súčasné zvuky pracovného profilu budú nahradené zvukmi osobného profilu"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurácia upozornení"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Predvoľby upozornení"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Rozšírené"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Pracovné upozornenia"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Blikať kontrolkou upozornenia"</string>
@@ -3345,4 +3346,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Nenainštalované aplikácie"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Nainštalované aplikácie"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Vaše úložisko odteraz riadi správca úložiska"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 871ab34..d81a888 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -2573,8 +2573,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Omrežje in internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Povezane naprave"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacije in obvestila"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Uporabnik in računi"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Privzete aplikacije"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Jezik: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Nastavitve"</string>
     <string name="search_menu" msgid="6283419262313758339">"Nastavitve iskanja"</string>
@@ -2677,7 +2678,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Zamenj. zvokov v del. profilu?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Zamenjaj"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Trenutne zvoke v delovnem profilu bodo nadomestili zvoki iz osebnega profila"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfiguriranje obvestil"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Nastavitve obvestil"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Dodatno"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Obvestila za delovni profil"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Lučka za obvestila z utripanjem"</string>
@@ -3345,4 +3346,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Nenameščene aplikacije"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Nameščene aplikacije"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Shrambo zdaj upravlja upravitelj shrambe"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-sq-rAL/strings.xml b/res/values-sq-rAL/strings.xml
index 1c87e9a..e13de0a 100644
--- a/res/values-sq-rAL/strings.xml
+++ b/res/values-sq-rAL/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Rrjeti dhe interneti"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Pajisje të lidhura"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aplikacionet dhe njoftimet"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Përdoruesi dhe llogaritë"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Parazgjedhjet e aplikacionit"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Gjuha: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Cilësimet"</string>
     <string name="search_menu" msgid="6283419262313758339">"Cilësimet e kërkimit"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Të zëvendësohen tingujt e profilit të punës?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Zëvendëso"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Tingujt aktualë të profilit tënd të punës do të zëvendësohen me tingujt e profilit tënd personal"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfiguro njoftimet"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Preferencat e njoftimeve"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Të përparuara"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Njoftimet e punës"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulso dritën e njoftimeve"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Aplikacionet nuk janë të instaluara"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Aplikacionet e instaluara"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Hapësira jote ruajtëse tani po menaxhohet nga menaxheri i hapësirës ruajtëse"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index e4eefd6..5659b8e 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -2551,8 +2551,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Мрежа и интернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Повезани уређаји"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Aпликације и обавештења"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Корисник и налози"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Подразумеване апликације"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Језик: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Подешавања"</string>
     <string name="search_menu" msgid="6283419262313758339">"Претражите подешавања"</string>
@@ -2655,7 +2656,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Заменити звуке профилa за Work?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Замени"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Актуелни звуци профилa за Work ће бити замењени звуцима са личног профила"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Конфигуришите обавештења"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Подешавања обавештења"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Напредна"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Обавештења за Work"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Пулсирајуће обавештење"</string>
@@ -3310,4 +3311,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Апликације које нису инсталиране"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Инсталиране апликације"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Меморијским простором сада управља Менаџер меморијског простора"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 1c5d79f..3bded77 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Nätverk och internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Anslutna enheter"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Appar och aviseringar"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Användare och konton"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Standardappar"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Språk: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Inställningar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Sökinställningar"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Ersätta jobbprofilljuden?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Ersätt"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"De nuvarande ljuden i jobbprofilen ersätts med dem i den personliga profilen."</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Konfigurera aviseringar"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Aviseringsinställningar"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Avancerat"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Jobbaviseringar"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Blinkande ljusavisering"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Appar som är inte installerade"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Installerade appar"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Ditt lagringsutrymme hanteras nu av lagringshanteraren"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 5a4a490..6507f91 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -2535,8 +2535,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mtandao na Intaneti"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Vifaa vilivyounganishwa"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Programu na arifa"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Watumiaji na akaunti"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Chaguo-msingi za programu"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Lugha: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Mipangilio"</string>
     <string name="search_menu" msgid="6283419262313758339">"Mipangilio ya utafutaji"</string>
@@ -2639,7 +2640,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Ungependa kubadilisha sauti za wasifu wako wa kazini?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Badilisha"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Sauti za wasifu wako wa sasa wa kazini zitabadilishwa na nafasi zao kuchuliwa na sauti za wasifu wako binafsi"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Arifa za kuweka mipangilio"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Mapendeleo ya arifa"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Mipangilio ya kina"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Arifa za kazini"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Arifu ya mwangaza wa palsi"</string>
@@ -3281,4 +3282,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Programu hazijasakinishwa"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Programu zilizosakinishwa"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Hifadhi yako sasa inasimamiwa na kidhibiti cha hifadhi"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ta-rIN/strings.xml b/res/values-ta-rIN/strings.xml
index 2c92d19..b5fd51c 100644
--- a/res/values-ta-rIN/strings.xml
+++ b/res/values-ta-rIN/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"நெட்வொர்க் &amp; இணையம்"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"இணைத்த சாதனங்கள்"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"பயன்பாடுகள் &amp; அறிவிப்புகள்"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"பயனர் &amp; கணக்குகள்"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"பயன்பாட்டின் இயல்புகள்"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"மொழி: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"அமைப்பு"</string>
     <string name="search_menu" msgid="6283419262313758339">"தேடல் அமைப்புகள்"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"பணி விவர ஒலிகளை மாற்றவா?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"மாற்று"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"உங்கள் பணி விவர ஒலிகளானது தனிப்பட்ட சுயவிவர ஒலிகளாக மாற்றப்படும்"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"அறிவிப்புகளை உள்ளமை"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"அறிவிப்பு விருப்பத்தேர்வுகள்"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"மேம்பட்டவை"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"பணி அறிவிப்புகள்"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"தொடர் அறிவிப்பு விளக்கு"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"பயன்பாடுகள் நிறுவப்படவில்லை"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"நிறுவிய பயன்பாடுகள்"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"உங்கள் சேமிப்பகம் இப்போது சேமிப்பக நிர்வாகியால் நிர்வகிக்கப்படுகிறது"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-te-rIN/strings.xml b/res/values-te-rIN/strings.xml
index 712adcc..168acc4 100644
--- a/res/values-te-rIN/strings.xml
+++ b/res/values-te-rIN/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"నెట్‌వర్క్ &amp; ఇంటర్నెట్"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"కనెక్ట్ చేసిన పరికరాలు"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"అనువర్తనాలు &amp; నోటిఫికేషన్‌లు"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"వినియోగదారు &amp; ఖాతాలు"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"అనువర్తన డిఫాల్ట్‌లు"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"భాష: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"సెట్టింగ్‌లు"</string>
     <string name="search_menu" msgid="6283419262313758339">"శోధన సెట్టింగ్‌లు"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"కార్యాలయ ప్రొఫైల్ శబ్దాలు భర్తీ చేయాలా?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"భర్తీ చేయి"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"మీ ప్రస్తుత కార్యాలయ ప్రొఫైల్ శబ్దాలు మీ వ్యక్తిగత ప్రొఫైల్ శబ్దాలతో భర్తీ చేయబడతాయి"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"నోటిఫికేషన్‌లను కాన్ఫిగర్ చేయి"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"నోటిఫికేషన్ ప్రాధాన్యతలు"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"అధునాతనం"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"కార్యాలయ నోటిఫికేషన్‌లు"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"నోటిఫికేషన్ లైట్‌ను మిణుకుమిణుకుమనేలా చేయి"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"ఇన్‌స్టాల్ చేయని అనువర్తనాలు"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"ఇన్‌స్టాల్ చేయబడిన అనువర్తనాలు"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"మీ నిల్వ ఇప్పుడు నిల్వ నిర్వాహికి ద్వారా నిర్వహించబడుతోంది"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 9dbec07..92b1ef0 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"เครือข่ายและอินเทอร์เน็ต"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"อุปกรณ์ที่เชื่อมต่อ"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"แอปและการแจ้งเตือน"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"ผู้ใช้และบัญชี"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ค่าเริ่มต้นของแอป"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"ภาษา: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"การตั้งค่า"</string>
     <string name="search_menu" msgid="6283419262313758339">"การตั้งค่าการค้นหา"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"เปลี่ยนเสียงในโปรไฟล์งานไหม"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"แทนที่"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"ระบบจะใช้เสียงในโปรไฟล์ส่วนตัวของคุณแทนเสียงในโปรไฟล์งานปัจจุบัน"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"กำหนดค่าการแจ้งเตือน"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"ค่ากำหนดการแจ้งเตือน"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"ขั้นสูง"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"การแจ้งเตือนงาน"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"ไฟกระพริบแจ้งเตือน"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"ไม่ได้ติดตั้งแอป"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"แอปที่ติดตั้ง"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"ตัวจัดการพื้นที่เก็บข้อมูลกำลังจัดการพื้นที่เก็บข้อมูลของคุณ"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 4fab1e1..de87e82 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Network at Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Mga nakakonektang device"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Mga app at notification"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"User at mga account"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Mga default na app"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Wika: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Mga Setting"</string>
     <string name="search_menu" msgid="6283419262313758339">"Mga setting ng paghahanap"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Palitan tunog sa profile sa trabaho?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Palitan"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Papalitan ang kasalukuyang mga tunog sa profile sa trabaho ng mga tunog sa iyong personal na profile"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"I-configure ang mga notification"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Mga kagustuhan sa notification"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Advanced"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Mga notification sa trabaho"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Pulse na ilaw ng notification"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Hindi naka-install ang mga app"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Mga naka-install na app"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Pinamamahalaan na ngayon ng storage manager ang iyong storage"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 19261dd..4d8fd3d 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Ağ ve İnternet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Bağlı cihazlar"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Uygulamalar ve bildirimler"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Kullanıcı ve hesaplar"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Uygulama varsayılanları"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Dil: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Ayarlar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Arama ayarları"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"İş profili seslerini değiştir?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Değiştir"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Mevcut iş profili sesleriniz kişisel profil seslerinizle değiştirilecek"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Bildirimleri yapılandır"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Bildirim tercihleri"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Gelişmiş"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"İş bildirimleri"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Bildirim ışığını yakıp söndür"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Yüklü olmayan uygulamalar"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Yüklü uygulamalar"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Depolama alanınız artık depolama yöneticisi tarafından yönetiliyor"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index ea8da6d..fe8f408 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -2573,8 +2573,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Мережа й Інтернет"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Під’єднані пристрої"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Додатки та сповіщення"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Користувач і облікові записи"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Додатки за умовчанням"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Мова: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Налаштування"</string>
     <string name="search_menu" msgid="6283419262313758339">"Налаштування пошуку"</string>
@@ -2677,7 +2678,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Замінити звуки робоч. профілю?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Замінити"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Поточні звуки робочого профілю буде замінено на звуки особистого профілю"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Налаштування сповіщень"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Налаштування сповіщень"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Розширені налаштування"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Робочі сповіщення"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Світловий сигнал"</string>
@@ -3345,4 +3346,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Додатки не встановлено"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Установлені додатки"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Зараз пам’яттю керує диспетчер пам’яті"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-ur-rPK/strings.xml b/res/values-ur-rPK/strings.xml
index c2b868e..c6de156 100644
--- a/res/values-ur-rPK/strings.xml
+++ b/res/values-ur-rPK/strings.xml
@@ -2517,8 +2517,9 @@
     <!-- no translation found for settings_suggestion_header_summary_hidden_items (5597356221942118048) -->
     <string name="network_dashboard_title" msgid="4771589228992391573">"نیٹ ورک اور انٹرنیٹ"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"منسلک آلات"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"ایپس اور اطلاعات"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"صارف اور اکاؤنٹس"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"ایپ ڈیفالٹس"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"زبان: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"ترتیبات"</string>
     <string name="search_menu" msgid="6283419262313758339">"تلاش کی ترتیبات"</string>
@@ -2621,7 +2622,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"دفتری پروفائل کی آوازیں بدلیں؟"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"بدلیں"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"آپ کی موجودہ دفتری پروفائل کی آوازیں آپ کی ذاتی پروفائل کی آوازوں سے تبدیل ہو جائیں گی۔"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"اطلاعات کنفیگر کریں"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"اطلاع کی ترجیحات"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"جدید ترین"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"دفتری اطلاعات"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"پلس اطلاعی روشنی"</string>
@@ -3263,4 +3264,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"ایپس انسٹال نہیں ہیں"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"انسٹال کردہ ایپس"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"آپ کی اسٹوریج کا نظم اب اسٹوریج مینیجر کی جانب سے کیا جا رہا ہے"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-uz-rUZ/strings.xml b/res/values-uz-rUZ/strings.xml
index 84e6845..0f9becc 100644
--- a/res/values-uz-rUZ/strings.xml
+++ b/res/values-uz-rUZ/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Tarmoq va Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Ulangan qurilmalar"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Ilova va bildirishnomalar"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Foydalanuvchi va hisoblar"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Birlamchi ilovalar"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Til: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Sozlamalar"</string>
     <string name="search_menu" msgid="6283419262313758339">"Qidiruv sozlamalari"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Ishchi ovozlar almashtirilsinmi?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Almashtirish"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Joriy ishchi profil ovozlari shaxsiy profil ovozlari bilan almashtiriladi"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Bildirishnomalarni sozlash"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Bildirishnoma sozlamalari"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Kengaytirilgan sozlamalar"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Ishga oid bildirishnomalar"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Yoritkichli indikator"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Ilovalar o‘rnatilmagan"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"O‘rnatilgan ilovalar"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Xotirangiz hozirda xotira boshqaruvi tomonidan boshqarilmoqda"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 60d4ae1..b3f6236 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Mạng và Internet"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Thiết bị đã kết nối"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Ứng dụng và thông báo"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Người dùng và tài khoản"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Mặc định của ứng dụng"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Ngôn ngữ: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Cài đặt"</string>
     <string name="search_menu" msgid="6283419262313758339">"Cài đặt tìm kiếm"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Thay thế âm thanh hồ sơ công việc?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Thay thế"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Âm thanh hồ sơ công việc hiện tại của bạn sẽ được thay thế bằng âm thanh hồ sơ cá nhân của bạn"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Định cấu hình thông báo"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Tùy chọn thông báo"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Nâng cao"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Thông báo công việc"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Đèn thông báo dạng xung"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Ứng dụng chưa cài đặt"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Ứng dụng đã cài đặt"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Bộ nhớ của bạn hiện đang được quản lý bởi trình quản lý bộ nhớ"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 7c73895..996796f 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -2529,8 +2529,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"网络和互联网"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"已关联的设备"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"应用和通知"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"用户和帐号"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"应用默认设置"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"语言:<xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"设置"</string>
     <string name="search_menu" msgid="6283419262313758339">"搜索设置"</string>
@@ -2633,7 +2634,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"要替换工作资料提示音吗?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"替换"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"系统将使用您的个人资料提示音替换您当前的工作资料提示音"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"配置通知"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"通知偏好设置"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"高级"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"工作通知"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"收到通知时指示灯闪烁"</string>
@@ -3275,4 +3276,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"未安装的应用"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"已安装的应用"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"您的存储空间目前是由存储空间管理器管理"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 4ba6be0..13832f2 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -2534,8 +2534,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"網絡和互聯網"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"已連結的裝置"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"應用程式和通知"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"使用者和帳戶"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"應用程式預設"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"語言:<xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"設定"</string>
     <string name="search_menu" msgid="6283419262313758339">"搜尋設定"</string>
@@ -2638,7 +2639,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"要取代工作設定檔聲音嗎?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"取代"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"目前的工作設定檔聲音會以個人設定檔聲音取代"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"設定通知"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"通知偏好設定"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"進階"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"工作通知"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"啟用通知燈"</string>
@@ -3280,4 +3281,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"尚未安裝的應用程式"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"已安裝的應用程式"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"您的儲存空間即將由儲存空間管理員管理"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index e08958e..3b7bdf1 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -2288,8 +2288,8 @@
     <string name="vpn_set_vpn_title" msgid="4009987321156037267">"要設定永久連線的 VPN 嗎?"</string>
     <string name="vpn_first_always_on_vpn_message" msgid="3025322109743675467">"開啟這項設定後,在 VPN 成功連線之前,你將無法連上網際網路"</string>
     <string name="vpn_replace_always_on_vpn_enable_message" msgid="2577928591361606641">"現有的 VPN 會遭到取代,而且在 VPN 成功連線之前,你將無法連上網際網路"</string>
-    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"你已連線至某個永久連線的 VPN。連線至其他 VPN 將會取代現有的 VPN,並關閉永久連線模式。"</string>
-    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"你已連線至某個 VPN。連線至其他 VPN 將會取代現有的 VPN。"</string>
+    <string name="vpn_replace_always_on_vpn_disable_message" msgid="3011818750025879902">"你已連線至特定的永久連線 VPN。連線至其他 VPN 將會取代現有的 VPN,並關閉永久連線模式。"</string>
+    <string name="vpn_replace_vpn_message" msgid="5611635724578812860">"你已連線至特定 VPN。連線至其他 VPN 將會取代現有的 VPN。"</string>
     <string name="vpn_turn_on" msgid="2363136869284273872">"開啟"</string>
     <string name="vpn_cant_connect_title" msgid="4517706987875907511">"無法連線至 <xliff:g id="VPN_NAME">%1$s</xliff:g>"</string>
     <string name="vpn_cant_connect_message" msgid="2593197919352621279">"這個應用程式不支援永久連線的 VPN。"</string>
@@ -2533,8 +2533,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"網路和網際網路"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"已連結的裝置"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"應用程式和通知"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"使用者和帳戶"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"預設應用程式"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"語言:<xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"設定"</string>
     <string name="search_menu" msgid="6283419262313758339">"搜尋設定"</string>
@@ -2637,7 +2638,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"要取代 Work 設定檔音效嗎?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"取代"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"你的個人設定檔音效將取代目前的 Work 設定檔音效"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"設定通知"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"通知偏好設定"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"進階"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Work 通知"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"閃爍燈光通知"</string>
@@ -3279,4 +3280,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"未安裝的應用程式"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"已安裝的應用程式"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"你的儲存空間目前是由儲存空間管理員管理"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 92ec202..e2a66d0 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -2530,8 +2530,9 @@
     </plurals>
     <string name="network_dashboard_title" msgid="4771589228992391573">"Inethiwekhi ye-inthanethi"</string>
     <string name="connected_devices_dashboard_title" msgid="2355264951438890709">"Amadivayisi axhunyiwe"</string>
-    <!-- no translation found for app_and_notification_dashboard_title (7838365599185397539) -->
-    <skip />
+    <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"Izinhlelo zokusebenza nezaziso"</string>
+    <string name="account_dashboard_title" msgid="38701889336378742">"Umsebenzisi nama-akhawunti"</string>
+    <string name="app_default_dashboard_title" msgid="8176215295082796426">"Okuzenzakalelayo kohlelo lokusebenza"</string>
     <string name="system_dashboard_summary" msgid="6112602136713843779">"Ulimi: <xliff:g id="LANGUAGE">%1$s</xliff:g>"</string>
     <string name="search_results_title" msgid="1796252422574886932">"Izilungiselelo"</string>
     <string name="search_menu" msgid="6283419262313758339">"Izilungiselelo zokusesha"</string>
@@ -2634,7 +2635,7 @@
     <string name="work_sync_dialog_title" msgid="4235493986362911084">"Faka esikhundleni imisindo yephrofayela yomsebenzi?"</string>
     <string name="work_sync_dialog_yes" msgid="7243884940551635717">"Buyisela"</string>
     <string name="work_sync_dialog_message" msgid="1655410601622810837">"Imisindo yakho yamanje yephrofayela yomsebenzi izoshintshaniswa nemisindo yakho siqu yephrofayela"</string>
-    <string name="configure_notification_settings" msgid="3558846607192693233">"Lungisa izaziso"</string>
+    <string name="configure_notification_settings" msgid="7447797716856573587">"Okuncamelayo kwesaziso"</string>
     <string name="advanced_section_header" msgid="8833934850242546903">"Okuthuthukisiwe"</string>
     <string name="profile_section_header" msgid="2320848161066912001">"Izaziso zomsebenzi"</string>
     <string name="notification_pulse_title" msgid="1247988024534030629">"Ukukhanya kwesaziso sephalsi"</string>
@@ -3276,4 +3277,8 @@
     <string name="web_action_section_title" msgid="806405168097593614">"Izinhlelo zokusebenza azifakiwe"</string>
     <string name="domain_url_section_title" msgid="7046835219056428883">"Izinhlelo zokusebenza ezifakiwe"</string>
     <string name="automatic_storage_manager_activation_warning" msgid="6353100011690933254">"Isitoreji sakho manje siphethwe umphathi wesitoreji"</string>
+    <!-- no translation found for account_for_section_header (5867553104728848377) -->
+    <skip />
+    <!-- no translation found for configure_section_header (7391183586410814450) -->
+    <skip />
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 208737c..010706f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5933,9 +5933,9 @@
     <string name="app_and_notification_dashboard_title">Apps &amp; notifications</string>
     <!-- Title for setting tile leading to User and accounts settings [CHAR LIMIT=40]-->
     <string name="account_dashboard_title">User &amp; accounts</string>
-    <!-- Title for setting tile leading to App defaults (which allows user set default app to
+    <!-- Title for setting tile leading to setting UI which allows user set default app to
     handle actions such as open web page, making phone calls, default SMS apps [CHAR  LIMIT=40]-->
-    <string name="app_default_dashboard_title">App defaults</string>
+    <string name="app_default_dashboard_title">Default apps</string>
     <!-- Summary text for system preference tile, showing current display language of device [CHAR LIMIT=NONE]-->
     <string name="system_dashboard_summary">Language: <xliff:g id="language">%1$s</xliff:g></string>
 
@@ -6159,7 +6159,7 @@
 
 
     <!-- Configure Notifications Settings title. [CHAR LIMIT=30] -->
-    <string name="configure_notification_settings">Configure notifications</string>
+    <string name="configure_notification_settings">Notification preferences</string>
 
     <!-- Configure Notifications: Advanced section header [CHAR LIMIT=30] -->
     <string name="advanced_section_header">Advanced</string>
@@ -7932,4 +7932,18 @@
 
     <!-- Warning when activating the automatic storage manager on legacy devices. [CHAR LIMIT=NONE] -->
     <string name="automatic_storage_manager_activation_warning">Your storage is now being managed by the storage manager</string>
+
+    <!-- Accounts for section header [CHAR LIMIT=30] -->
+    <string name="account_for_section_header">Accounts</string>
+
+    <!-- Configure section header [CHAR LIMIT=30] -->
+    <string name="configure_section_header">Configure</string>
+
+    <!-- Switch label to enable auto sync account [CHAR LIMIT=30] -->
+    <string name="auto_sync_account_title">Auto sync account data</string>
+    <!-- Switch label to enable auto sync personal account [CHAR LIMIT=30] -->
+    <string name="auto_sync_personal_account_title">Auto sync personal account data</string>
+    <!-- Switch label to enable auto sync work account [CHAR LIMIT=30] -->
+    <string name="auto_sync_work_account_title">Auto sync work account data</string>
+
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 0f957a8..a18fde3 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -452,4 +452,25 @@
         <item name="android:progressDrawable">@drawable/ring_progress</item>
     </style>
 
+    <style name="AppHeader">
+        <item name="android:background">@color/card_background_grey</item>
+        <item name="android:gravity">center_horizontal</item>
+        <item name="android:paddingTop">16dp</item>
+        <item name="android:paddingStart">16dp</item>
+        <item name="android:paddingEnd">16dp</item>
+        <item name="android:paddingBottom">8dp</item>
+    </style>
+
+    <style name="TextAppearance.AppHeaderTitle"
+           parent="@android:style/TextAppearance.Material.Subhead">
+        <item name="android:textColor">?android:attr/textColorPrimary</item>
+        <item name="android:textSize">24sp</item>
+    </style>
+
+    <style name="AppHeaderLinkButton" parent="android:Widget.Material.Button.Borderless">
+        <item name="android:background">@drawable/button_bg_transparent</item>
+    </style>
+
+    <style name="AppActionPrimaryButton" parent="android:Widget.Material.Button.Colored"/>
+
 </resources>
diff --git a/res/xml/configure_notification_settings.xml b/res/xml/configure_notification_settings.xml
index 8778abb..626cd33 100644
--- a/res/xml/configure_notification_settings.xml
+++ b/res/xml/configure_notification_settings.xml
@@ -15,19 +15,34 @@
 -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
-        android:title="@string/configure_notification_settings"
-        android:key="configure_notification_settings" >
+                  android:title="@string/configure_notification_settings"
+                  android:key="configure_notification_settings">
 
     <!-- Pulse notification light -->
     <SwitchPreference
-            android:key="notification_pulse"
-            android:title="@string/notification_pulse_title" />
+        android:key="notification_pulse"
+        android:title="@string/notification_pulse_title"/>
 
     <!-- When device is locked -->
     <com.android.settings.notification.RestrictedDropDownPreference
-            android:key="lock_screen_notifications"
+        android:key="lock_screen_notifications"
+        android:title="@string/lock_screen_notifications_title"
+        android:summary="%s"/>
+
+    <SwitchPreference
+        android:key="gesture_swipe_down_fingerprint"
+        android:title="@string/fingerprint_swipe_for_notifications_title"
+        android:summary="@string/fingerprint_swipe_for_notifications_summary"/>
+
+    <PreferenceCategory
+        android:key="lock_screen_notifications_profile_header"
+        android:title="@string/profile_section_header">
+
+        <com.android.settings.notification.RestrictedDropDownPreference
+            android:key="lock_screen_notifications_profile"
             android:title="@string/lock_screen_notifications_title"
-            android:summary="%s" />
+            android:summary="%s"/>
+
+    </PreferenceCategory>
 
 </PreferenceScreen>
diff --git a/res/xml/configure_notification_settings_profile.xml b/res/xml/configure_notification_settings_profile.xml
deleted file mode 100644
index 301f3c0..0000000
--- a/res/xml/configure_notification_settings_profile.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 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.
--->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
-                  xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
-        android:title="@string/configure_notification_settings" >
-
-    <PreferenceCategory
-            android:title="@string/profile_section_header" >
-
-        <com.android.settings.notification.RestrictedDropDownPreference
-            android:key="lock_screen_notifications_profile"
-            android:title="@string/lock_screen_notifications_title"
-            android:summary="%s" />
-
-    </PreferenceCategory>
-
-</PreferenceScreen>
diff --git a/res/xml/installed_app_details_ia.xml b/res/xml/installed_app_details_ia.xml
new file mode 100644
index 0000000..f4603ed
--- /dev/null
+++ b/res/xml/installed_app_details_ia.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2016 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.
+  -->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <com.android.settings.applications.LayoutPreference
+        android:key="header_view"
+        android:layout="@layout/app_details"
+        android:selectable="false"/>
+
+    <Preference
+        android:key="storage_settings"
+        android:title="@string/storage_settings"
+        android:selectable="true"/>
+
+    <Preference
+        android:key="data_settings"
+        android:title="@string/data_usage_summary_title"
+        android:selectable="true"/>
+
+    <Preference
+        android:key="permission_settings"
+        android:title="@string/permissions_label"
+        android:selectable="true"/>
+
+    <Preference
+        android:key="notification_settings"
+        android:title="@string/notifications_label"
+        android:selectable="true"/>
+
+    <Preference
+        android:key="preferred_settings"
+        android:title="@string/launch_by_default"
+        android:selectable="true"/>
+
+    <Preference
+        android:key="battery"
+        android:title="@string/power_usage_summary_title"
+        android:selectable="true"/>
+
+    <Preference
+        android:key="memory"
+        android:title="@string/memory_settings_title"
+        android:enabled="false"
+        android:selectable="true"/>
+
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/user_and_accounts_settings.xml b/res/xml/user_and_accounts_settings.xml
new file mode 100644
index 0000000..64b9292
--- /dev/null
+++ b/res/xml/user_and_accounts_settings.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+                  xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
+        android:key="account"
+        android:title="@string/account_settings_title"
+        settings:keywords="@string/keywords_accounts">
+
+    <PreferenceCategory
+            android:key="account_for_header"
+            android:title="@string/account_for_section_header" />
+
+    <Preference
+            android:key="emergency_info"
+            android:title="@string/emergency_info_title" />
+
+    <PreferenceCategory
+            android:key="account_configuration_header"
+            android:title="@string/configure_section_header">
+
+    </PreferenceCategory>
+
+    <SwitchPreference
+            android:key="auto_sync_account_data"
+            android:title="@string/auto_sync_account_title" />
+
+    <SwitchPreference
+            android:key="auto_sync_work_account_data"
+            android:title="@string/account_settings_menu_auto_sync_work" />
+
+    <SwitchPreference
+            android:key="auto_sync_personal_account_data"
+            android:title="@string/account_settings_menu_auto_sync_personal" />
+
+    <com.android.settingslib.RestrictedSwitchPreference
+            android:key="add_users_when_locked"
+            android:title="@string/user_add_on_lockscreen_menu"
+            android:summary="@string/user_add_on_lockscreen_menu_summary"
+            settings:useAdditionalSummary="true" />
+
+</PreferenceScreen>
diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java
index 06858b7..3a1f501 100644
--- a/src/com/android/settings/ChooseLockGeneric.java
+++ b/src/com/android/settings/ChooseLockGeneric.java
@@ -298,7 +298,11 @@
                 intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT,
                         mForFingerprint);
                 intent.putExtra(EXTRA_HIDE_DRAWER, mHideDrawer);
-                startActivityForResult(intent, ENABLE_ENCRYPTION_REQUEST);
+                startActivityForResult(
+                        intent,
+                        mIsSetNewPassword && mHasChallenge
+                                ? CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST
+                                : ENABLE_ENCRYPTION_REQUEST);
             } else {
                 if (mForChangeCredRequiredForBoot) {
                     // Welp, couldn't change it. Oh well.
diff --git a/src/com/android/settings/ChooseLockPassword.java b/src/com/android/settings/ChooseLockPassword.java
index 0ce61c7..2d40f20 100644
--- a/src/com/android/settings/ChooseLockPassword.java
+++ b/src/com/android/settings/ChooseLockPassword.java
@@ -19,6 +19,7 @@
 import android.app.Activity;
 import android.app.Fragment;
 import android.app.admin.DevicePolicyManager;
+import android.app.admin.PasswordMetrics;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.drawable.InsetDrawable;
@@ -583,8 +584,8 @@
                 // The length requirements are fulfilled.
                 if (mRequestedQuality == PASSWORD_QUALITY_NUMERIC_COMPLEX) {
                     // Check for repeated characters or sequences (e.g. '1234', '0000', '2468')
-                    final int sequence = LockPatternUtils.maxLengthSequence(password);
-                    if (sequence > LockPatternUtils.MAX_ALLOWED_SEQUENCE) {
+                    final int sequence = PasswordMetrics.maxLengthSequence(password);
+                    if (sequence > PasswordMetrics.MAX_ALLOWED_SEQUENCE) {
                         errorCode |= CONTAIN_SEQUENTIAL_DIGITS;
                     }
                 }
@@ -594,40 +595,22 @@
                 }
             }
 
-            // Count different types of character.
-            int letters = 0;
-            int numbers = 0;
-            int lowercase = 0;
-            int symbols = 0;
-            int uppercase = 0;
-            int nonletter = 0;
+            // Allow non-control Latin-1 characters only.
             for (int i = 0; i < password.length(); i++) {
                 char c = password.charAt(i);
-                // allow non control Latin-1 characters only
                 if (c < 32 || c > 127) {
                     errorCode |= CONTAIN_INVALID_CHARACTERS;
-                    continue;
-                }
-                if (c >= '0' && c <= '9') {
-                    numbers++;
-                    nonletter++;
-                } else if (c >= 'A' && c <= 'Z') {
-                    letters++;
-                    uppercase++;
-                } else if (c >= 'a' && c <= 'z') {
-                    letters++;
-                    lowercase++;
-                } else {
-                    symbols++;
-                    nonletter++;
+                    break;
                 }
             }
 
+            final PasswordMetrics metrics = PasswordMetrics.computeForPassword(password);
+
             // Ensure no non-digits if we are requesting numbers. This shouldn't be possible unless
             // user finds some way to bring up soft keyboard.
             if (mRequestedQuality == PASSWORD_QUALITY_NUMERIC
                     || mRequestedQuality == PASSWORD_QUALITY_NUMERIC_COMPLEX) {
-                if (letters > 0 || symbols > 0) {
+                if (metrics.letters > 0 || metrics.symbols > 0) {
                     errorCode |= CONTAIN_NON_DIGITS;
                 }
             }
@@ -637,32 +620,32 @@
                 int passwordRestriction = mPasswordRequirements[i];
                 switch (passwordRestriction) {
                     case MIN_LETTER_IN_PASSWORD:
-                        if (letters < mPasswordMinLetters) {
+                        if (metrics.letters < mPasswordMinLetters) {
                             errorCode |= NOT_ENOUGH_LETTER;
                         }
                         break;
                     case MIN_UPPER_LETTERS_IN_PASSWORD:
-                        if (uppercase < mPasswordMinUpperCase) {
+                        if (metrics.upperCase < mPasswordMinUpperCase) {
                             errorCode |= NOT_ENOUGH_UPPER_CASE;
                         }
                         break;
                     case MIN_LOWER_LETTERS_IN_PASSWORD:
-                        if (lowercase < mPasswordMinLowerCase) {
+                        if (metrics.lowerCase < mPasswordMinLowerCase) {
                             errorCode |= NOT_ENOUGH_LOWER_CASE;
                         }
                         break;
                     case MIN_SYMBOLS_IN_PASSWORD:
-                        if (symbols < mPasswordMinSymbols) {
+                        if (metrics.symbols < mPasswordMinSymbols) {
                             errorCode |= NOT_ENOUGH_SYMBOLS;
                         }
                         break;
                     case MIN_NUMBER_IN_PASSWORD:
-                        if (numbers < mPasswordMinNumeric) {
+                        if (metrics.numeric < mPasswordMinNumeric) {
                             errorCode |= NOT_ENOUGH_DIGITS;
                         }
                         break;
                     case MIN_NON_LETTER_IN_PASSWORD:
-                        if (nonletter < mPasswordMinNonLetter) {
+                        if (metrics.nonLetter < mPasswordMinNonLetter) {
                             errorCode |= NOT_ENOUGH_NON_LETTER;
                         }
                         break;
diff --git a/src/com/android/settings/ChooseLockPattern.java b/src/com/android/settings/ChooseLockPattern.java
index 42a941a..23768ab 100644
--- a/src/com/android/settings/ChooseLockPattern.java
+++ b/src/com/android/settings/ChooseLockPattern.java
@@ -27,6 +27,7 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.LinearLayout;
+import android.widget.ScrollView;
 import android.widget.TextView;
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
@@ -152,6 +153,9 @@
         protected List<LockPatternView.Cell> mChosenPattern = null;
         private boolean mHideDrawer = false;
 
+        // ScrollView that contains title and header, only exist in land mode
+        private ScrollView mTitleHeaderScrollView;
+
         /**
          * The patten used during the help screen to show how to draw a pattern.
          */
@@ -237,6 +241,15 @@
                     mFooterText.setText("");
                     mFooterLeftButton.setEnabled(false);
                     mFooterRightButton.setEnabled(false);
+
+                    if (mTitleHeaderScrollView != null) {
+                        mTitleHeaderScrollView.post(new Runnable() {
+                            @Override
+                            public void run() {
+                                mTitleHeaderScrollView.fullScroll(ScrollView.FOCUS_DOWN);
+                            }
+                        });
+                    }
                 }
          };
 
@@ -415,6 +428,9 @@
             mFooterLeftButton = (TextView) view.findViewById(R.id.footerLeftButton);
             mFooterRightButton = (TextView) view.findViewById(R.id.footerRightButton);
 
+            mTitleHeaderScrollView = (ScrollView) view.findViewById(R.id
+                    .scroll_layout_title_header);
+
             mFooterLeftButton.setOnClickListener(this);
             mFooterRightButton.setOnClickListener(this);
 
diff --git a/src/com/android/settings/CryptKeeper.java b/src/com/android/settings/CryptKeeper.java
index 4214343..826c20b 100644
--- a/src/com/android/settings/CryptKeeper.java
+++ b/src/com/android/settings/CryptKeeper.java
@@ -293,11 +293,11 @@
             try {
                 Log.d(TAG, "Validating encryption state.");
                 state = service.getEncryptionState();
-                if (state == IMountService.ENCRYPTION_STATE_NONE) {
+                if (state == StorageManager.ENCRYPTION_STATE_NONE) {
                     Log.w(TAG, "Unexpectedly in CryptKeeper even though there is no encryption.");
                     return true; // Unexpected, but fine, I guess...
                 }
-                return state == IMountService.ENCRYPTION_STATE_OK;
+                return state == StorageManager.ENCRYPTION_STATE_OK;
             } catch (RemoteException e) {
                 Log.w(TAG, "Unable to get encryption state properly");
                 return true;
@@ -310,7 +310,7 @@
             if (Boolean.FALSE.equals(result)) {
                 Log.w(TAG, "Incomplete, or corrupted encryption detected. Prompting user to wipe.");
                 mEncryptionGoneBad = true;
-                mCorrupt = state == IMountService.ENCRYPTION_STATE_ERROR_CORRUPT;
+                mCorrupt = state == StorageManager.ENCRYPTION_STATE_ERROR_CORRUPT;
             } else {
                 Log.d(TAG, "Encryption state validated. Proceeding to configure UI");
             }
diff --git a/src/com/android/settings/DateTimeSettingsSetupWizard.java b/src/com/android/settings/DateTimeSettingsSetupWizard.java
deleted file mode 100644
index 64b9204..0000000
--- a/src/com/android/settings/DateTimeSettingsSetupWizard.java
+++ /dev/null
@@ -1,326 +0,0 @@
-/*
- * Copyright (C) 2008 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;
-
-import android.app.Activity;
-import android.app.AlarmManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.os.Bundle;
-import android.provider.Settings;
-import android.provider.Settings.SettingNotFoundException;
-import android.support.v14.preference.PreferenceFragment;
-import android.support.v7.preference.Preference;
-import android.util.Log;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.Window;
-import android.view.inputmethod.InputMethodManager;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemClickListener;
-import android.widget.Button;
-import android.widget.CompoundButton;
-import android.widget.CompoundButton.OnCheckedChangeListener;
-import android.widget.DatePicker;
-import android.widget.ListPopupWindow;
-import android.widget.SimpleAdapter;
-import android.widget.TimePicker;
-
-import java.util.Calendar;
-import java.util.TimeZone;
-
-public class DateTimeSettingsSetupWizard extends Activity
-        implements OnClickListener, OnItemClickListener, OnCheckedChangeListener,
-        PreferenceFragment.OnPreferenceStartFragmentCallback {
-    private static final String TAG = DateTimeSettingsSetupWizard.class.getSimpleName();
-
-    // force the first status of auto datetime flag.
-    private static final String EXTRA_INITIAL_AUTO_DATETIME_VALUE =
-            "extra_initial_auto_datetime_value";
-
-    // If we have enough screen real estate, we use a radically different layout with
-    // big date and time pickers right on the screen, which requires very different handling.
-    // Otherwise, we use the standard date time settings fragment.
-    private boolean mUsingXLargeLayout;
-
-    /* Available only in XL */
-    private CompoundButton mAutoDateTimeButton;
-    // private CompoundButton mAutoTimeZoneButton;
-
-    private Button mTimeZoneButton;
-    private ListPopupWindow mTimeZonePopup;
-    private SimpleAdapter mTimeZoneAdapter;
-    private TimeZone mSelectedTimeZone;
-
-    private TimePicker mTimePicker;
-    private DatePicker mDatePicker;
-    private InputMethodManager mInputMethodManager;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        requestWindowFeature(Window.FEATURE_NO_TITLE);
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.date_time_settings_setupwizard);
-
-        // we know we've loaded the special xlarge layout because it has controls
-        // not present in the standard layout
-        mUsingXLargeLayout = findViewById(R.id.time_zone_button) != null;
-        if (mUsingXLargeLayout) {
-            initUiForXl();
-        } else {
-            findViewById(R.id.next_button).setOnClickListener(this);
-        }
-        mTimeZoneAdapter = ZonePicker.constructTimezoneAdapter(this, false,
-            R.layout.date_time_setup_custom_list_item_2);
-
-        // For the normal view, disable Back since changes stick immediately
-        // and can't be canceled, and we already have a Next button. For xLarge,
-        // though, we save up our changes and set them upon Next, so Back can
-        // cancel. And also, in xlarge, we need the keyboard dismiss button
-        // to be available.
-        if (!mUsingXLargeLayout) {
-            final View layoutRoot = findViewById(R.id.layout_root);
-            layoutRoot.setSystemUiVisibility(View.STATUS_BAR_DISABLE_BACK);
-        }
-    }
-
-    public void initUiForXl() {
-        // Currently just comment out codes related to auto timezone.
-        // TODO: Remove them when we are sure they are unnecessary.
-        /*
-        final boolean autoTimeZoneEnabled = isAutoTimeZoneEnabled();
-        mAutoTimeZoneButton = (CompoundButton)findViewById(R.id.time_zone_auto);
-        mAutoTimeZoneButton.setChecked(autoTimeZoneEnabled);
-        mAutoTimeZoneButton.setOnCheckedChangeListener(this);
-        mAutoTimeZoneButton.setText(autoTimeZoneEnabled ? R.string.zone_auto_summaryOn :
-                R.string.zone_auto_summaryOff);*/
-
-        final TimeZone tz = TimeZone.getDefault();
-        mSelectedTimeZone = tz;
-        mTimeZoneButton = (Button)findViewById(R.id.time_zone_button);
-        mTimeZoneButton.setText(tz.getDisplayName());
-        mTimeZoneButton.setOnClickListener(this);
-
-        final boolean autoDateTimeEnabled;
-        final Intent intent = getIntent();
-        if (intent.hasExtra(EXTRA_INITIAL_AUTO_DATETIME_VALUE)) {
-            autoDateTimeEnabled = intent.getBooleanExtra(EXTRA_INITIAL_AUTO_DATETIME_VALUE, false);
-        } else {
-            autoDateTimeEnabled = isAutoDateTimeEnabled();
-        }
-
-        mAutoDateTimeButton = (CompoundButton)findViewById(R.id.date_time_auto_button);
-        mAutoDateTimeButton.setChecked(autoDateTimeEnabled);
-        mAutoDateTimeButton.setOnCheckedChangeListener(this);
-
-        mTimePicker = (TimePicker)findViewById(R.id.time_picker);
-        mTimePicker.setEnabled(!autoDateTimeEnabled);
-        mDatePicker = (DatePicker)findViewById(R.id.date_picker);
-        mDatePicker.setEnabled(!autoDateTimeEnabled);
-        mDatePicker.setCalendarViewShown(false);
-        DateTimeSettings.configureDatePicker(mDatePicker);
-
-        mInputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
-
-        ((Button)findViewById(R.id.next_button)).setOnClickListener(this);
-        final Button skipButton = (Button)findViewById(R.id.skip_button);
-        if (skipButton != null) {
-            skipButton.setOnClickListener(this);
-        }
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        IntentFilter filter = new IntentFilter();
-        filter.addAction(Intent.ACTION_TIME_TICK);
-        filter.addAction(Intent.ACTION_TIME_CHANGED);
-        filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
-        registerReceiver(mIntentReceiver, filter, null, null);
-    }
-
-    @Override
-    public void onPause() {
-        super.onPause();
-        unregisterReceiver(mIntentReceiver);
-    }
-
-    @Override
-    public void onClick(View view) {
-        switch (view.getId()) {
-        case R.id.time_zone_button: {
-            showTimezonePicker(R.id.time_zone_button);
-            break;
-        }
-        case R.id.next_button: {
-            if (mSelectedTimeZone != null) {
-                final TimeZone systemTimeZone = TimeZone.getDefault();
-                if (!systemTimeZone.equals(mSelectedTimeZone)) {
-                    Log.i(TAG, "Another TimeZone is selected by a user. Changing system TimeZone.");
-                    final AlarmManager alarm = (AlarmManager)
-                            getSystemService(Context.ALARM_SERVICE);
-                    alarm.setTimeZone(mSelectedTimeZone.getID());
-                }
-            }
-            if (mAutoDateTimeButton != null) {
-                Settings.Global.putInt(getContentResolver(), Settings.Global.AUTO_TIME,
-                      mAutoDateTimeButton.isChecked() ? 1 : 0);
-                if (!mAutoDateTimeButton.isChecked()) {
-                    DateTimeSettings.setDate(this, mDatePicker.getYear(), mDatePicker.getMonth(),
-                            mDatePicker.getDayOfMonth());
-                    DateTimeSettings.setTime(this,
-                            mTimePicker.getCurrentHour(), mTimePicker.getCurrentMinute());
-                }
-            }
-        }  // $FALL-THROUGH$
-        case R.id.skip_button: {
-            setResult(RESULT_OK);
-            finish();
-            break;
-        }
-        }
-    }
-
-    @Override
-    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-        final boolean autoEnabled = isChecked;  // just for readibility.
-        /*if (buttonView == mAutoTimeZoneButton) {
-            // In XL screen, we save all the state only when the next button is pressed.
-            if (!mUsingXLargeLayout) {
-                Settings.Global.putInt(getContentResolver(),
-                        Settings.Global.AUTO_TIME_ZONE,
-                        isChecked ? 1 : 0);
-            }
-            mTimeZone.setEnabled(!autoEnabled);
-            if (isChecked) {
-                findViewById(R.id.current_time_zone).setVisibility(View.VISIBLE);
-                findViewById(R.id.zone_picker).setVisibility(View.GONE);
-            }
-        } else */
-        if (buttonView == mAutoDateTimeButton) {
-            Settings.Global.putInt(getContentResolver(),
-                    Settings.Global.AUTO_TIME,
-                    isChecked ? 1 : 0);
-            mTimePicker.setEnabled(!autoEnabled);
-            mDatePicker.setEnabled(!autoEnabled);
-        }
-        if (autoEnabled) {
-            final View focusedView = getCurrentFocus();
-            if (focusedView != null) {
-                mInputMethodManager.hideSoftInputFromWindow(focusedView.getWindowToken(), 0);
-                focusedView.clearFocus();
-            }
-        }
-    }
-
-    @Override
-    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-        final TimeZone tz = ZonePicker.obtainTimeZoneFromItem(parent.getItemAtPosition(position));
-        if (mUsingXLargeLayout) {
-            mSelectedTimeZone = tz;
-            final Calendar now = Calendar.getInstance(tz);
-            if (mTimeZoneButton != null) {
-                mTimeZoneButton.setText(tz.getDisplayName());
-            }
-            mDatePicker.updateDate(now.get(Calendar.YEAR), now.get(Calendar.MONTH),
-                    now.get(Calendar.DAY_OF_MONTH));
-            mTimePicker.setCurrentHour(now.get(Calendar.HOUR_OF_DAY));
-            mTimePicker.setCurrentMinute(now.get(Calendar.MINUTE));
-        } else {
-            // in prefs mode, we actually change the setting right now, as opposed to waiting
-            // until Next is pressed in xLarge mode
-            final AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
-            alarm.setTimeZone(tz.getID());
-            DateTimeSettings settingsFragment = (DateTimeSettings) getFragmentManager().
-                    findFragmentById(R.id.date_time_settings_fragment);
-            settingsFragment.updateTimeAndDateDisplay(this);
-        }
-        mTimeZonePopup.dismiss();
-    }
-
-    /**
-     * If this is called, that means we're in prefs style portrait mode for a large display
-     * and the user has tapped on the time zone preference. If we were a PreferenceActivity,
-     * we'd then launch the timezone fragment in a new activity, but we aren't, and here
-     * on a tablet display, we really want more of a popup picker look' like the one we use
-     * for the xlarge version of this activity. So we just take this opportunity to launch that.
-     *
-     * TODO: For phones, we might want to change this to do the "normal" opening
-     * of the zonepicker fragment in its own activity. Or we might end up just
-     * creating a separate DateTimeSettingsSetupWizardPhone activity that subclasses
-     * PreferenceActivity in the first place to handle all that automatically.
-     */
-    @Override
-    public boolean onPreferenceStartFragment(PreferenceFragment caller, Preference pref) {
-        showTimezonePicker(R.id.timezone_dropdown_anchor);
-        return true;
-    }
-
-    private void showTimezonePicker(int anchorViewId) {
-        View anchorView = findViewById(anchorViewId);
-        if (anchorView == null) {
-            Log.e(TAG, "Unable to find zone picker anchor view " + anchorViewId);
-            return;
-        }
-        mTimeZonePopup = new ListPopupWindow(this, null);
-        mTimeZonePopup.setWidth(anchorView.getWidth());
-        mTimeZonePopup.setAnchorView(anchorView);
-        mTimeZonePopup.setAdapter(mTimeZoneAdapter);
-        mTimeZonePopup.setOnItemClickListener(this);
-        mTimeZonePopup.setModal(true);
-        mTimeZonePopup.show();
-    }
-
-    private boolean isAutoDateTimeEnabled() {
-        try {
-            return Settings.Global.getInt(getContentResolver(), Settings.Global.AUTO_TIME) > 0;
-        } catch (SettingNotFoundException e) {
-            return true;
-        }
-    }
-
-    /*
-    private boolean isAutoTimeZoneEnabled() {
-        try {
-            return Settings.Global.getInt(getContentResolver(),
-                    Settings.Global.AUTO_TIME_ZONE) > 0;
-        } catch (SettingNotFoundException e) {
-            return true;
-        }
-    }*/
-
-    private void updateTimeAndDateDisplay() {
-        if (!mUsingXLargeLayout) {
-            return;
-        }
-        final Calendar now = Calendar.getInstance();
-        mTimeZoneButton.setText(now.getTimeZone().getDisplayName());
-        mDatePicker.updateDate(now.get(Calendar.YEAR), now.get(Calendar.MONTH),
-                now.get(Calendar.DAY_OF_MONTH));
-        mTimePicker.setCurrentHour(now.get(Calendar.HOUR_OF_DAY));
-        mTimePicker.setCurrentMinute(now.get(Calendar.MINUTE));
-    }
-
-    private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            updateTimeAndDateDisplay();
-        }
-    };
-}
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
index 5808219..24091e2 100644
--- a/src/com/android/settings/DeviceInfoSettings.java
+++ b/src/com/android/settings/DeviceInfoSettings.java
@@ -32,14 +32,13 @@
 import android.support.v7.preference.PreferenceGroup;
 import android.text.TextUtils;
 import android.util.Log;
-import android.widget.Toast;
 
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.deviceinfo.AdditionalSystemUpdatePreferenceController;
+import com.android.settings.deviceinfo.BuildNumberPreferenceController;
 import com.android.settings.deviceinfo.SystemUpdatePreferenceController;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.Index;
 import com.android.settings.search.Indexable;
 import com.android.settingslib.DeviceInfoUtils;
 import com.android.settingslib.RestrictedLockUtils;
@@ -59,7 +58,6 @@
     private static final String PROPERTY_URL_SAFETYLEGAL = "ro.url.safetylegal";
     private static final String PROPERTY_SELINUX_STATUS = "ro.build.selinux";
     private static final String KEY_KERNEL_VERSION = "kernel_version";
-    private static final String KEY_BUILD_NUMBER = "build_number";
     private static final String KEY_DEVICE_MODEL = "device_model";
     private static final String KEY_SELINUX_STATUS = "selinux_status";
     private static final String KEY_BASEBAND_VERSION = "baseband_version";
@@ -70,20 +68,16 @@
     private static final String KEY_DEVICE_FEEDBACK = "device_feedback";
     private static final String KEY_SAFETY_LEGAL = "safetylegal";
 
-    static final int TAPS_TO_BE_A_DEVELOPER = 7;
 
     long[] mHits = new long[3];
-    int mDevHitCountdown;
-    Toast mDevHitToast;
     private SystemUpdatePreferenceController mSystemUpdatePreferenceController;
     private AdditionalSystemUpdatePreferenceController mAdditionalSystemUpdatePreferenceController;
+    private BuildNumberPreferenceController mBuildNumberPreferenceController;
 
     private UserManager mUm;
 
     private EnforcedAdmin mFunDisallowedAdmin;
     private boolean mFunDisallowedBySystem;
-    private EnforcedAdmin mDebuggingFeaturesDisallowedAdmin;
-    private boolean mDebuggingFeaturesDisallowedBySystem;
 
     @Override
     public int getMetricsCategory() {
@@ -96,6 +90,14 @@
     }
 
     @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (mBuildNumberPreferenceController.onActivityResult(requestCode, resultCode, data)) {
+            return;
+        }
+        super.onActivityResult(requestCode, resultCode, data);
+    }
+
+    @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         final Activity activity = getActivity();
@@ -103,7 +105,9 @@
         mSystemUpdatePreferenceController = new SystemUpdatePreferenceController(activity, mUm);
         mAdditionalSystemUpdatePreferenceController =
                 new AdditionalSystemUpdatePreferenceController(activity);
-
+        mBuildNumberPreferenceController =
+                new BuildNumberPreferenceController(activity, activity, this /* fragment */);
+        getLifecycle().addObserver(mBuildNumberPreferenceController);
         addPreferencesFromResource(R.xml.device_info_settings);
 
         setStringSummary(KEY_FIRMWARE_VERSION, Build.VERSION.RELEASE);
@@ -119,8 +123,7 @@
         setValueSummary(KEY_BASEBAND_VERSION, "gsm.version.baseband");
         setStringSummary(KEY_DEVICE_MODEL, Build.MODEL + DeviceInfoUtils.getMsvSuffix());
         setValueSummary(KEY_EQUIPMENT_ID, PROPERTY_EQUIPMENT_ID);
-        setStringSummary(KEY_BUILD_NUMBER, Build.DISPLAY);
-        findPreference(KEY_BUILD_NUMBER).setEnabled(true);
+        mBuildNumberPreferenceController.displayPreference(getPreferenceScreen());
         findPreference(KEY_KERNEL_VERSION).setSummary(DeviceInfoUtils.getFormattedKernelVersion());
 
         if (!SELinux.isSELinuxEnabled()) {
@@ -174,26 +177,21 @@
     @Override
     public void onResume() {
         super.onResume();
-        mDevHitCountdown = getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,
-                Context.MODE_PRIVATE).getBoolean(DevelopmentSettings.PREF_SHOW,
-                        android.os.Build.TYPE.equals("eng")) ? -1 : TAPS_TO_BE_A_DEVELOPER;
-        mDevHitToast = null;
         mFunDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(
                 getActivity(), UserManager.DISALLOW_FUN, UserHandle.myUserId());
         mFunDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(
                 getActivity(), UserManager.DISALLOW_FUN, UserHandle.myUserId());
-        mDebuggingFeaturesDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(
-                getActivity(), UserManager.DISALLOW_DEBUGGING_FEATURES, UserHandle.myUserId());
-        mDebuggingFeaturesDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(
-                getActivity(), UserManager.DISALLOW_DEBUGGING_FEATURES, UserHandle.myUserId());
     }
 
     @Override
     public boolean onPreferenceTreeClick(Preference preference) {
+        if (mBuildNumberPreferenceController.handlePreferenceTreeClick(preference)) {
+            return true;
+        }
         if (preference.getKey().equals(KEY_FIRMWARE_VERSION)) {
-            System.arraycopy(mHits, 1, mHits, 0, mHits.length-1);
-            mHits[mHits.length-1] = SystemClock.uptimeMillis();
-            if (mHits[0] >= (SystemClock.uptimeMillis()-500)) {
+            System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
+            mHits[mHits.length - 1] = SystemClock.uptimeMillis();
+            if (mHits[0] >= (SystemClock.uptimeMillis() - 500)) {
                 if (mUm.hasUserRestriction(UserManager.DISALLOW_FUN)) {
                     if (mFunDisallowedAdmin != null && !mFunDisallowedBySystem) {
                         RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(),
@@ -212,59 +210,6 @@
                     Log.e(LOG_TAG, "Unable to start activity " + intent.toString());
                 }
             }
-        } else if (preference.getKey().equals(KEY_BUILD_NUMBER)) {
-            // Don't enable developer options for secondary users.
-            if (!mUm.isAdminUser()) return true;
-
-            // Don't enable developer options until device has been provisioned
-            if (!Utils.isDeviceProvisioned(getActivity())) {
-                return true;
-            }
-
-            if (mUm.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES)) {
-                if (mDebuggingFeaturesDisallowedAdmin != null &&
-                        !mDebuggingFeaturesDisallowedBySystem) {
-                    RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getActivity(),
-                            mDebuggingFeaturesDisallowedAdmin);
-                }
-                return true;
-            }
-
-            if (mDevHitCountdown > 0) {
-                mDevHitCountdown--;
-                if (mDevHitCountdown == 0) {
-                    getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,
-                            Context.MODE_PRIVATE).edit().putBoolean(
-                                    DevelopmentSettings.PREF_SHOW, true).apply();
-                    if (mDevHitToast != null) {
-                        mDevHitToast.cancel();
-                    }
-                    mDevHitToast = Toast.makeText(getActivity(), R.string.show_dev_on,
-                            Toast.LENGTH_LONG);
-                    mDevHitToast.show();
-                    // This is good time to index the Developer Options
-                    Index.getInstance(
-                            getActivity().getApplicationContext()).updateFromClassNameResource(
-                                    DevelopmentSettings.class.getName(), true, true);
-
-                } else if (mDevHitCountdown > 0
-                        && mDevHitCountdown < (TAPS_TO_BE_A_DEVELOPER-2)) {
-                    if (mDevHitToast != null) {
-                        mDevHitToast.cancel();
-                    }
-                    mDevHitToast = Toast.makeText(getActivity(), getResources().getQuantityString(
-                            R.plurals.show_dev_countdown, mDevHitCountdown, mDevHitCountdown),
-                            Toast.LENGTH_SHORT);
-                    mDevHitToast.show();
-                }
-            } else if (mDevHitCountdown < 0) {
-                if (mDevHitToast != null) {
-                    mDevHitToast.cancel();
-                }
-                mDevHitToast = Toast.makeText(getActivity(), R.string.show_dev_already,
-                        Toast.LENGTH_LONG);
-                mDevHitToast.show();
-            }
         } else if (preference.getKey().equals(KEY_SECURITY_PATCH)) {
             if (getPackageManager().queryIntentActivities(preference.getIntent(), 0).isEmpty()) {
                 // Don't send out the intent to stop crash
@@ -279,7 +224,6 @@
         return super.onPreferenceTreeClick(preference);
     }
 
-
     private void removePreferenceIfPropertyMissing(PreferenceGroup preferenceGroup,
             String preference, String property ) {
         if (SystemProperties.get(property).equals("")) {
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 5f90353..eb79c25 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -20,7 +20,6 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.app.FragmentManager;
 import android.app.admin.DevicePolicyManager;
 import android.content.ComponentName;
@@ -35,7 +34,6 @@
 import android.os.PersistableBundle;
 import android.os.UserHandle;
 import android.os.UserManager;
-import android.os.storage.StorageManager;
 import android.provider.SearchIndexableResource;
 import android.provider.Settings;
 import android.security.KeyStore;
@@ -52,11 +50,14 @@
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 import android.util.Log;
+
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.TrustAgentUtils.TrustAgentComponentInfo;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.fingerprint.FingerprintSettings;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Index;
 import com.android.settings.search.Indexable;
@@ -64,6 +65,9 @@
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.RestrictedPreference;
 import com.android.settingslib.RestrictedSwitchPreference;
+import com.android.settingslib.drawer.CategoryKey;
+import com.android.settingslib.drawer.DashboardCategory;
+import com.android.settingslib.drawer.Tile;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -79,6 +83,7 @@
         GearPreference.OnGearClickListener {
 
     private static final String TAG = "SecuritySettings";
+
     private static final String TRUST_AGENT_CLICK_INTENT = "trust_agent_click_intent";
     private static final Intent TRUST_AGENT_INTENT =
             new Intent(TrustAgentService.SERVICE_INTERFACE);
@@ -125,6 +130,7 @@
 
     private static final int MY_USER_ID = UserHandle.myUserId();
 
+    private DashboardFeatureProvider mDashboardFeatureProvider;
     private DevicePolicyManager mDPM;
     private SubscriptionManager mSubscriptionManager;
     private UserManager mUm;
@@ -162,17 +168,22 @@
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        mSubscriptionManager = SubscriptionManager.from(getActivity());
+        final Activity activity = getActivity();
 
-        mLockPatternUtils = new LockPatternUtils(getActivity());
+        mSubscriptionManager = SubscriptionManager.from(activity);
 
-        mManagedPasswordProvider = ManagedLockPasswordProvider.get(getActivity(), MY_USER_ID);
+        mLockPatternUtils = new LockPatternUtils(activity);
+
+        mManagedPasswordProvider = ManagedLockPasswordProvider.get(activity, MY_USER_ID);
 
         mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
 
-        mUm = UserManager.get(getActivity());
+        mUm = UserManager.get(activity);
 
-        mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity());
+        mChooseLockSettingsHelper = new ChooseLockSettingsHelper(activity);
+
+        mDashboardFeatureProvider = FeatureFactory.getFactory(activity)
+                .getDashboardFeatureProvider(activity);
 
         if (savedInstanceState != null
                 && savedInstanceState.containsKey(TRUST_AGENT_CLICK_INTENT)) {
@@ -399,6 +410,13 @@
         Index.getInstance(getActivity())
                 .updateFromClassNameResource(SecuritySettings.class.getName(), true, true);
 
+        final List<Preference> tilePrefs = getDynamicTilesForSecurity();
+        if (tilePrefs != null && !tilePrefs.isEmpty()) {
+            for (Preference preference : tilePrefs) {
+                root.addPreference(preference);
+            }
+        }
+
         for (int i = 0; i < SWITCH_PREFERENCE_KEYS.length; i++) {
             final Preference pref = findPreference(SWITCH_PREFERENCE_KEYS[i]);
             if (pref != null) pref.setOnPreferenceChangeListener(this);
@@ -745,6 +763,31 @@
                 SET_OR_CHANGE_LOCK_METHOD_REQUEST_PROFILE, extras);
     }
 
+    private List<Preference> getDynamicTilesForSecurity() {
+        if (!mDashboardFeatureProvider.isEnabled()) {
+            return null;
+        }
+        final DashboardCategory category =
+                mDashboardFeatureProvider.getTilesForCategory(CategoryKey.CATEGORY_SECURITY);
+        if (category == null) {
+            Log.d(TAG, "NO dashboard tiles for " + TAG);
+            return null;
+        }
+        final List<Tile> tiles = category.tiles;
+        if (tiles == null) {
+            Log.d(TAG, "tile list is empty, skipping category " + category.title);
+            return null;
+        }
+        final List<Preference> preferences = new ArrayList<>();
+        for (Tile tile : tiles) {
+            final Preference pref = new Preference(getPrefContext());
+            mDashboardFeatureProvider
+                    .bindPreferenceToTile(getActivity(), pref, tile, null /* key */);
+            preferences.add(pref);
+        }
+        return preferences;
+    }
+
     @Override
     public boolean onPreferenceChange(Preference preference, Object value) {
         boolean result = true;
@@ -1053,7 +1096,6 @@
             if (root != null) {
                 root.removeAll();
             }
-            root = null;
 
             final int resid = getResIdForLockUnlockSubScreen(getActivity(),
                     new LockPatternUtils(getContext()),
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 432dec3..3813c42 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -289,6 +289,8 @@
             // Home page > Network & Internet
             "com.android.settings.Settings.WifiDashboardAlias",
             "com.android.settings.Settings.DataUsageDashboardAlias",
+            // Home page > Security
+            "com.android.settings.Settings.LocationDashboardAlias",
             // Home page > System
             "com.android.settings.Settings.LanguageAndInputDashboardAlias",
             "com.android.settings.Settings.DateTimeDashboardAlias",
@@ -1187,6 +1189,10 @@
         boolean useDefaultBackup = TextUtils.isEmpty(backupIntent);
         setTileEnabled(new ComponentName(packageName,
                 Settings.PrivacySettingsActivity.class.getName()), useDefaultBackup, isAdmin, pm);
+        setTileEnabled(new ComponentName(packageName,
+                        "com.android.settings.PrivacyDashboardAlias"),
+                useDefaultBackup, isAdmin, pm);
+
         boolean hasBackupActivity = false;
         if (!useDefaultBackup) {
             try {
diff --git a/src/com/android/settings/ZonePicker.java b/src/com/android/settings/ZonePicker.java
index 6865090..b1778c6 100644
--- a/src/com/android/settings/ZonePicker.java
+++ b/src/com/android/settings/ZonePicker.java
@@ -76,7 +76,7 @@
     public static SimpleAdapter constructTimezoneAdapter(Context context,
             boolean sortedByName) {
         return constructTimezoneAdapter(context, sortedByName,
-                R.layout.date_time_setup_custom_list_item_2);
+                R.layout.date_time_custom_list_item_2);
     }
 
     /**
diff --git a/src/com/android/settings/accounts/AccountPreferenceBase.java b/src/com/android/settings/accounts/AccountPreferenceBase.java
index 65d5887..c6581ac 100644
--- a/src/com/android/settings/accounts/AccountPreferenceBase.java
+++ b/src/com/android/settings/accounts/AccountPreferenceBase.java
@@ -33,10 +33,10 @@
 import android.support.v7.preference.PreferenceScreen;
 import android.text.format.DateFormat;
 import android.util.Log;
-import android.view.ContextThemeWrapper;
 
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
+import com.android.settings.utils.LocalClassLoaderContextThemeWrapper;
 import com.android.settingslib.accounts.AuthenticatorHelper;
 
 import java.util.ArrayList;
@@ -156,7 +156,8 @@
                             desc.packageName, 0, mUserHandle);
                     final Theme baseTheme = getResources().newTheme();
                     baseTheme.applyStyle(com.android.settings.R.style.Theme_SettingsBase, true);
-                    final Context themedCtx = new ContextThemeWrapper(targetCtx, 0);
+                    final Context themedCtx =
+                            new LocalClassLoaderContextThemeWrapper(getClass(), targetCtx, 0);
                     themedCtx.getTheme().setTo(baseTheme);
                     prefs = getPreferenceManager().inflateFromResource(themedCtx,
                             desc.accountPreferencesId, parent);
diff --git a/src/com/android/settings/accounts/AccountSettings.java b/src/com/android/settings/accounts/AccountSettings.java
index e93c7fa..376aeef 100644
--- a/src/com/android/settings/accounts/AccountSettings.java
+++ b/src/com/android/settings/accounts/AccountSettings.java
@@ -20,9 +20,7 @@
 import android.accounts.Account;
 import android.accounts.AccountManager;
 import android.app.ActivityManager;
-import android.app.AlertDialog;
 import android.app.Dialog;
-import android.app.DialogFragment;
 import android.content.BroadcastReceiver;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -107,7 +105,7 @@
     /**
      * Holds data related to the accounts belonging to one profile.
      */
-    private static class ProfileData {
+    public static class ProfileData {
         /**
          * The preference that displays the accounts.
          */
@@ -619,8 +617,8 @@
             if (ActivityManager.isUserAMonkey()) {
                 Log.d(TAG, "ignoring monkey's attempt to flip sync state");
             } else {
-                ConfirmAutoSyncChangeFragment.show(AccountSettings.this, !item.isChecked(),
-                        mUserHandle);
+                AutoSyncDataPreferenceController.ConfirmAutoSyncChangeFragment.show(
+                        AccountSettings.this, !item.isChecked(), mUserHandle, /*preference*/null);
             }
             return true;
         }
@@ -657,67 +655,6 @@
         }
     }
 
-    /**
-     * Dialog to inform user about changing auto-sync setting
-     */
-    public static class ConfirmAutoSyncChangeFragment extends InstrumentedDialogFragment {
-        private static final String SAVE_ENABLING = "enabling";
-        private static final String SAVE_USER_HANDLE = "userHandle";
-        private boolean mEnabling;
-        private UserHandle mUserHandle;
-
-        public static void show(AccountSettings parent, boolean enabling, UserHandle userHandle) {
-            if (!parent.isAdded()) return;
-
-            final ConfirmAutoSyncChangeFragment dialog = new ConfirmAutoSyncChangeFragment();
-            dialog.mEnabling = enabling;
-            dialog.mUserHandle = userHandle;
-            dialog.setTargetFragment(parent, 0);
-            dialog.show(parent.getFragmentManager(), TAG_CONFIRM_AUTO_SYNC_CHANGE);
-        }
-
-        @Override
-        public Dialog onCreateDialog(Bundle savedInstanceState) {
-            final Context context = getActivity();
-            if (savedInstanceState != null) {
-                mEnabling = savedInstanceState.getBoolean(SAVE_ENABLING);
-                mUserHandle = (UserHandle) savedInstanceState.getParcelable(SAVE_USER_HANDLE);
-            }
-
-            final AlertDialog.Builder builder = new AlertDialog.Builder(context);
-            if (!mEnabling) {
-                builder.setTitle(R.string.data_usage_auto_sync_off_dialog_title);
-                builder.setMessage(R.string.data_usage_auto_sync_off_dialog);
-            } else {
-                builder.setTitle(R.string.data_usage_auto_sync_on_dialog_title);
-                builder.setMessage(R.string.data_usage_auto_sync_on_dialog);
-            }
-
-            builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
-                @Override
-                public void onClick(DialogInterface dialog, int which) {
-                    ContentResolver.setMasterSyncAutomaticallyAsUser(mEnabling,
-                            mUserHandle.getIdentifier());
-                }
-            });
-            builder.setNegativeButton(android.R.string.cancel, null);
-
-            return builder.create();
-        }
-
-        @Override
-        public void onSaveInstanceState(Bundle outState) {
-            super.onSaveInstanceState(outState);
-            outState.putBoolean(SAVE_ENABLING, mEnabling);
-            outState.putParcelable(SAVE_USER_HANDLE, mUserHandle);
-        }
-
-        @Override
-        public int getMetricsCategory() {
-            return MetricsEvent.DIALOG_CONFIRM_AUTO_SYNC_CHANGE;
-        }
-    }
-
     public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
             new BaseSearchIndexProvider() {
         @Override
diff --git a/src/com/android/settings/accounts/AddUserWhenLockedPreferenceController.java b/src/com/android/settings/accounts/AddUserWhenLockedPreferenceController.java
new file mode 100644
index 0000000..898d4a2
--- /dev/null
+++ b/src/com/android/settings/accounts/AddUserWhenLockedPreferenceController.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2016 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.accounts;
+
+import android.content.Context;
+import android.provider.Settings.Global;
+import android.support.v7.preference.Preference;
+
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnPause;
+import com.android.settings.core.lifecycle.events.OnResume;
+import com.android.settings.users.UserCapabilities;
+import com.android.settingslib.RestrictedSwitchPreference;
+
+public class AddUserWhenLockedPreferenceController extends PreferenceController
+        implements Preference.OnPreferenceChangeListener, LifecycleObserver, OnPause, OnResume {
+
+    private static final String KEY_ADD_USER_WHEN_LOCKED = "add_users_when_locked";
+
+    private RestrictedSwitchPreference mAddUserWhenLocked;
+    private UserCapabilities mUserCaps;
+    private boolean mShouldUpdateUserList;
+
+    public AddUserWhenLockedPreferenceController(Context context) {
+        super(context);
+        mUserCaps = UserCapabilities.create(context);
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        RestrictedSwitchPreference restrictedSwitchPreference =
+                (RestrictedSwitchPreference) preference;
+        int value = Global.getInt(mContext.getContentResolver(), Global.ADD_USERS_WHEN_LOCKED, 0);
+        restrictedSwitchPreference.setChecked(value == 1);
+        restrictedSwitchPreference.setDisabledByAdmin(
+                mUserCaps.disallowAddUser() ? mUserCaps.getEnforcedAdmin() : null);
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        Boolean value = (Boolean) newValue;
+        Global.putInt(mContext.getContentResolver(),
+                Global.ADD_USERS_WHEN_LOCKED, value != null && value ? 1 : 0);
+        return true;
+    }
+
+    @Override
+    public void onPause() {
+        mShouldUpdateUserList = true;
+    }
+
+    @Override
+    public void onResume() {
+        if (mShouldUpdateUserList) {
+            mUserCaps.updateAddUserCapabilities(mContext);
+        }
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return mUserCaps.isAdmin() &&
+                (!mUserCaps.disallowAddUser() || mUserCaps.disallowAddUserSetByAdmin());
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_ADD_USER_WHEN_LOCKED;
+    }
+}
diff --git a/src/com/android/settings/accounts/AutoSyncDataPreferenceController.java b/src/com/android/settings/accounts/AutoSyncDataPreferenceController.java
new file mode 100644
index 0000000..ba34b3b
--- /dev/null
+++ b/src/com/android/settings/accounts/AutoSyncDataPreferenceController.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2016 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.accounts;
+
+import android.app.ActivityManager;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.app.Fragment;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.os.Process;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.Preference;
+
+import android.util.Log;
+import com.android.internal.logging.MetricsProto;
+import com.android.settings.R;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+
+public class AutoSyncDataPreferenceController extends PreferenceController {
+
+    private static final String TAG = "AutoSyncDataController";
+    private static final String TAG_CONFIRM_AUTO_SYNC_CHANGE = "confirmAutoSyncChange";
+    private static final String KEY_AUTO_SYNC_ACCOUNT = "auto_sync_account_data";
+
+    protected UserManager mUserManager;
+    private UserHandle mUserHandle;
+    private Fragment mParentFragment;
+
+    public AutoSyncDataPreferenceController(Context context, Fragment parent) {
+        super(context);
+        mUserManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
+        mParentFragment = parent;
+        mUserHandle = Process.myUserHandle();
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        SwitchPreference switchPreference = (SwitchPreference) preference;
+        switchPreference.setChecked(ContentResolver.getMasterSyncAutomaticallyAsUser(
+                mUserHandle.getIdentifier()));
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (getPreferenceKey().equals(preference.getKey())) {
+            SwitchPreference switchPreference = (SwitchPreference) preference;
+            boolean checked = switchPreference.isChecked();
+            switchPreference.setChecked(!checked);
+            if (ActivityManager.isUserAMonkey()) {
+                Log.d(TAG, "ignoring monkey's attempt to flip sync state");
+            } else {
+                ConfirmAutoSyncChangeFragment.show(mParentFragment, checked, mUserHandle,
+                        switchPreference);
+            }
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return !mUserManager.isManagedProfile()
+                && (mUserManager.isLinkedUser()
+                || mUserManager.getProfiles(UserHandle.myUserId()).size() == 1);
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_AUTO_SYNC_ACCOUNT;
+    }
+
+    /**
+     * Dialog to inform user about changing auto-sync setting
+     */
+    public static class ConfirmAutoSyncChangeFragment extends InstrumentedDialogFragment implements
+            DialogInterface.OnClickListener {
+        private static final String SAVE_ENABLING = "enabling";
+        private static final String SAVE_USER_HANDLE = "userHandle";
+        boolean mEnabling;
+        UserHandle mUserHandle;
+        SwitchPreference mPreference;
+
+        public static void show(Fragment parent, boolean enabling, UserHandle userHandle,
+                SwitchPreference preference) {
+            if (!parent.isAdded()) return;
+
+            final ConfirmAutoSyncChangeFragment dialog = new ConfirmAutoSyncChangeFragment();
+            dialog.mEnabling = enabling;
+            dialog.mUserHandle = userHandle;
+            dialog.setTargetFragment(parent, 0);
+            dialog.mPreference = preference;
+            dialog.show(parent.getFragmentManager(), TAG_CONFIRM_AUTO_SYNC_CHANGE);
+        }
+
+        @Override
+        public Dialog onCreateDialog(Bundle savedInstanceState) {
+            final Context context = getActivity();
+            if (savedInstanceState != null) {
+                mEnabling = savedInstanceState.getBoolean(SAVE_ENABLING);
+                mUserHandle = (UserHandle) savedInstanceState.getParcelable(SAVE_USER_HANDLE);
+            }
+
+            final AlertDialog.Builder builder = new AlertDialog.Builder(context);
+            if (!mEnabling) {
+                builder.setTitle(R.string.data_usage_auto_sync_off_dialog_title);
+                builder.setMessage(R.string.data_usage_auto_sync_off_dialog);
+            } else {
+                builder.setTitle(R.string.data_usage_auto_sync_on_dialog_title);
+                builder.setMessage(R.string.data_usage_auto_sync_on_dialog);
+            }
+
+            builder.setPositiveButton(android.R.string.ok, this);
+            builder.setNegativeButton(android.R.string.cancel, null);
+
+            return builder.create();
+        }
+
+        @Override
+        public void onSaveInstanceState(Bundle outState) {
+            super.onSaveInstanceState(outState);
+            outState.putBoolean(SAVE_ENABLING, mEnabling);
+            outState.putParcelable(SAVE_USER_HANDLE, mUserHandle);
+        }
+
+        @Override
+        public int getMetricsCategory() {
+            return MetricsProto.MetricsEvent.DIALOG_CONFIRM_AUTO_SYNC_CHANGE;
+        }
+
+        @Override
+        public void onClick(DialogInterface dialog, int which) {
+            if (which == DialogInterface.BUTTON_POSITIVE) {
+                ContentResolver.setMasterSyncAutomaticallyAsUser(mEnabling,
+                        mUserHandle.getIdentifier());
+                if (mPreference != null) {
+                    mPreference.setChecked(mEnabling);
+                }
+            }
+        }
+    }
+
+}
diff --git a/src/com/android/settings/accounts/AutoSyncPersonalDataPreferenceController.java b/src/com/android/settings/accounts/AutoSyncPersonalDataPreferenceController.java
new file mode 100644
index 0000000..673b453
--- /dev/null
+++ b/src/com/android/settings/accounts/AutoSyncPersonalDataPreferenceController.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2016 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.accounts;
+
+import android.app.Fragment;
+import android.content.Context;
+import android.os.UserHandle;
+
+public class AutoSyncPersonalDataPreferenceController extends AutoSyncDataPreferenceController {
+
+    private static final String TAG = "AutoSyncPersonalData";
+    private static final String KEY_AUTO_SYNC_PERSONAL_ACCOUNT = "auto_sync_personal_account_data";
+
+    public AutoSyncPersonalDataPreferenceController(Context context, Fragment parent) {
+        super(context, parent);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return !mUserManager.isManagedProfile() && !mUserManager.isLinkedUser()
+                && mUserManager.getProfiles(UserHandle.myUserId()).size() > 1;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_AUTO_SYNC_PERSONAL_ACCOUNT;
+    }
+
+}
diff --git a/src/com/android/settings/accounts/AutoSyncWorkDataPreferenceController.java b/src/com/android/settings/accounts/AutoSyncWorkDataPreferenceController.java
new file mode 100644
index 0000000..899f77d
--- /dev/null
+++ b/src/com/android/settings/accounts/AutoSyncWorkDataPreferenceController.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2016 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.accounts;
+
+import android.app.Fragment;
+import android.content.Context;
+
+public class AutoSyncWorkDataPreferenceController extends AutoSyncPersonalDataPreferenceController {
+
+    private static final String TAG = "AutoSyncWorkData";
+    private static final String KEY_AUTO_SYNC_WORK_ACCOUNT = "auto_sync_work_account_data";
+
+    public AutoSyncWorkDataPreferenceController(Context context, Fragment parent) {
+        super(context, parent);
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_AUTO_SYNC_WORK_ACCOUNT;
+    }
+
+}
diff --git a/src/com/android/settings/accounts/EmergencyInfoPreferenceController.java b/src/com/android/settings/accounts/EmergencyInfoPreferenceController.java
new file mode 100644
index 0000000..6f0dfae
--- /dev/null
+++ b/src/com/android/settings/accounts/EmergencyInfoPreferenceController.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2016 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.accounts;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.core.PreferenceController;
+import com.android.settings.search.SearchIndexableRaw;
+
+import java.util.List;
+
+public class EmergencyInfoPreferenceController extends PreferenceController {
+
+    private static final String KEY_EMERGENCY_INFO = "emergency_info";
+    private static final String ACTION_EDIT_EMERGENCY_INFO = "android.settings.EDIT_EMERGENGY_INFO";
+    private static final String PACKAGE_NAME_EMERGENCY = "com.android.emergency";
+
+    public EmergencyInfoPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+    }
+
+    @Override
+    public void updateRawDataToIndex(List<SearchIndexableRaw> rawData) {
+        if (isAvailable()) {
+            SearchIndexableRaw data = new SearchIndexableRaw(mContext);
+            final Resources res = mContext.getResources();
+            data.title = res.getString(com.android.settings.R.string.emergency_info_title);
+            data.screenTitle = res.getString(com.android.settings.R.string.emergency_info_title);
+            rawData.add(data);
+        }
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (KEY_EMERGENCY_INFO.equals(preference.getKey())) {
+            Intent intent = new Intent(ACTION_EDIT_EMERGENCY_INFO);
+            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+            mContext.startActivity(intent);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        Intent intent = new Intent(ACTION_EDIT_EMERGENCY_INFO).setPackage(PACKAGE_NAME_EMERGENCY);
+        List<ResolveInfo> infos = mContext.getPackageManager().queryIntentActivities(intent, 0);
+        return infos != null && !infos.isEmpty();
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_EMERGENCY_INFO;
+    }
+}
diff --git a/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java b/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
index 34d6dc4..642a63a 100644
--- a/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
+++ b/src/com/android/settings/accounts/UserAndAccountDashboardFragment.java
@@ -23,6 +23,7 @@
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settingslib.drawer.CategoryKey;
 
+import java.util.ArrayList;
 import java.util.List;
 
 public class UserAndAccountDashboardFragment extends DashboardFragment {
@@ -46,12 +47,21 @@
 
     @Override
     protected int getPreferenceScreenResId() {
-        return R.xml.account_settings;
+        return R.xml.user_and_accounts_settings;
     }
 
     @Override
     protected List<PreferenceController> getPreferenceControllers(Context context) {
-        return null;
+        final List<PreferenceController> controllers = new ArrayList<>();
+        controllers.add(new EmergencyInfoPreferenceController(context));
+        AddUserWhenLockedPreferenceController addUserWhenLockedPrefController =
+                new AddUserWhenLockedPreferenceController(context);
+        controllers.add(addUserWhenLockedPrefController);
+        getLifecycle().addObserver(addUserWhenLockedPrefController);
+        controllers.add(new AutoSyncDataPreferenceController(context, this));
+        controllers.add(new AutoSyncPersonalDataPreferenceController(context, this));
+        controllers.add(new AutoSyncWorkDataPreferenceController(context, this));
+        return controllers;
     }
 
 }
\ No newline at end of file
diff --git a/src/com/android/settings/applications/AppHeaderController.java b/src/com/android/settings/applications/AppHeaderController.java
new file mode 100644
index 0000000..a6321df
--- /dev/null
+++ b/src/com/android/settings/applications/AppHeaderController.java
@@ -0,0 +1,309 @@
+/*
+ * Copyright (C) 2016 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.applications;
+
+import android.annotation.IdRes;
+import android.annotation.UserIdInt;
+import android.app.Fragment;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.os.UserHandle;
+import android.support.annotation.IntDef;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageButton;
+import android.widget.ImageView;
+import android.widget.TextView;
+import com.android.settings.AppHeader;
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settingslib.applications.ApplicationsState;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+public class AppHeaderController {
+
+    @IntDef({ActionType.ACTION_NONE,
+            ActionType.ACTION_APP_INFO,
+            ActionType.ACTION_APP_PREFERENCE,
+            ActionType.ACTION_STORE_DEEP_LINK,
+            ActionType.ACTION_NOTIF_PREFERENCE})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ActionType {
+        int ACTION_NONE = 0;
+        int ACTION_APP_INFO = 1;
+        int ACTION_STORE_DEEP_LINK = 2;
+        int ACTION_APP_PREFERENCE = 3;
+        int ACTION_NOTIF_PREFERENCE = 4;
+    }
+
+    public static final String PREF_KEY_APP_HEADER = "pref_app_header";
+
+    private static final String TAG = "AppDetailFeature";
+
+    private final Context mContext;
+    private final Fragment mFragment;
+    private final View mAppHeader;
+
+    private Drawable mIcon;
+    private CharSequence mLabel;
+    private CharSequence mSummary;
+    private String mPackageName;
+    private Intent mAppNotifPrefIntent;
+    @UserIdInt
+    private int mUid = UserHandle.USER_NULL;
+    @ActionType
+    private int mLeftAction;
+    @ActionType
+    private int mRightAction;
+
+    public AppHeaderController(Context context, Fragment fragment, View appHeader) {
+        mContext = context;
+        mFragment = fragment;
+        if (appHeader != null) {
+            mAppHeader = appHeader;
+        } else {
+            mAppHeader = LayoutInflater.from(mContext)
+                    .inflate(R.layout.app_details, null /* root */);
+        }
+    }
+
+    public AppHeaderController setIcon(Drawable icon) {
+        if (icon != null) {
+            mIcon = icon.getConstantState().newDrawable(mContext.getResources());
+        }
+        return this;
+    }
+
+    public AppHeaderController setIcon(ApplicationsState.AppEntry appEntry) {
+        if (appEntry.icon != null) {
+            mIcon = appEntry.icon.getConstantState().newDrawable(mContext.getResources());
+        }
+        return this;
+    }
+
+    public AppHeaderController setLabel(CharSequence label) {
+        mLabel = label;
+        return this;
+    }
+
+    public AppHeaderController setLabel(ApplicationsState.AppEntry appEntry) {
+        mLabel = appEntry.label;
+        return this;
+    }
+
+    public AppHeaderController setSummary(CharSequence summary) {
+        mSummary = summary;
+        return this;
+    }
+
+    public AppHeaderController setSummary(PackageInfo packageInfo) {
+        if (packageInfo != null) {
+            mSummary = packageInfo.versionName;
+        }
+        return this;
+    }
+
+    public AppHeaderController setButtonActions(@ActionType int leftAction,
+            @ActionType int rightAction) {
+        mLeftAction = leftAction;
+        mRightAction = rightAction;
+        return this;
+    }
+
+    public AppHeaderController setPackageName(String packageName) {
+        mPackageName = packageName;
+        return this;
+    }
+
+    public AppHeaderController setUid(int uid) {
+        mUid = uid;
+        return this;
+    }
+
+    public AppHeaderController setAppNotifPrefIntent(Intent appNotifPrefIntent) {
+        mAppNotifPrefIntent = appNotifPrefIntent;
+        return this;
+    }
+
+    /**
+     * Binds app header view and data from {@code PackageInfo} and {@code AppEntry}.
+     */
+    public void bindAppHeader(PackageInfo packageInfo, ApplicationsState.AppEntry appEntry) {
+        final String versionName = packageInfo == null ? null : packageInfo.versionName;
+        final Resources res = mAppHeader.getResources();
+
+        // Set Icon
+        final ImageView iconView = (ImageView) mAppHeader.findViewById(android.R.id.icon);
+        if (appEntry.icon != null) {
+            iconView.setImageDrawable(appEntry.icon.getConstantState().newDrawable(res));
+        }
+
+        // Set application name.
+        final TextView labelView = (TextView) mAppHeader.findViewById(android.R.id.title);
+        labelView.setText(appEntry.label);
+
+        // Version number of application
+        final TextView appVersion = (TextView) mAppHeader.findViewById(android.R.id.summary);
+
+        if (!TextUtils.isEmpty(versionName)) {
+            appVersion.setSelected(true);
+            appVersion.setVisibility(View.VISIBLE);
+            appVersion.setText(res.getString(R.string.version_text, String.valueOf(versionName)));
+        } else {
+            appVersion.setVisibility(View.INVISIBLE);
+        }
+    }
+
+    /**
+     * Done mutating appheader, rebinds everything and return a new {@link LayoutPreference}.
+     */
+    public LayoutPreference done(Context context) {
+        final LayoutPreference pref = new LayoutPreference(context, done());
+        // Makes sure it's the first preference onscreen.
+        pref.setOrder(-1000);
+        pref.setKey(PREF_KEY_APP_HEADER);
+        return pref;
+    }
+
+    /**
+     * Done mutating appheader, rebinds everything.
+     */
+    public View done() {
+        return done(true);
+    }
+
+    /**
+     * Done mutating appheader, rebinds everything (optionally skip rebinding buttons).
+     */
+    public View done(boolean rebindActions) {
+        ImageView iconView = (ImageView) mAppHeader.findViewById(android.R.id.icon);
+        if (iconView != null) {
+            iconView.setImageDrawable(mIcon);
+        }
+        setText(android.R.id.title, mLabel);
+        setText(android.R.id.summary, mSummary);
+        if (rebindActions) {
+            bindAppHeaderButtons();
+        }
+        return mAppHeader;
+    }
+
+    /**
+     * Only binds app header with button actions.
+     */
+    public void bindAppHeaderButtons() {
+        ImageButton leftButton = (ImageButton) mAppHeader.findViewById(R.id.left_button);
+        ImageButton rightButton = (ImageButton) mAppHeader.findViewById(R.id.right_button);
+
+        bindButton(leftButton, mLeftAction);
+        bindButton(rightButton, mRightAction);
+    }
+
+    private void bindButton(ImageButton button, @ActionType int action) {
+        if (button == null) {
+            return;
+        }
+        switch (action) {
+            case ActionType.ACTION_APP_INFO: {
+                if (mPackageName == null || mPackageName.equals(Utils.OS_PKG)
+                        || mUid == UserHandle.USER_NULL
+                        || !AppHeader.includeAppInfo(mFragment)) {
+                    button.setVisibility(View.GONE);
+                } else {
+                    button.setImageResource(com.android.settings.R.drawable.ic_info);
+                    button.setOnClickListener(v -> AppInfoBase.startAppInfoFragment(
+                            InstalledAppDetails.class, R.string.application_info_label,
+                            mPackageName, mUid, mFragment, 0));
+                    button.setVisibility(View.VISIBLE);
+                }
+                return;
+            }
+            case ActionType.ACTION_STORE_DEEP_LINK: {
+                final Intent intent = new Intent(Intent.ACTION_SHOW_APP_INFO)
+                        .setPackage(getInstallerPackageName(mContext, mPackageName));
+                final Intent result = resolveIntent(intent);
+                if (result == null) {
+                    button.setVisibility(View.GONE);
+                } else {
+                    result.putExtra(Intent.EXTRA_PACKAGE_NAME, mPackageName);
+                    button.setImageResource(R.drawable.ic_sim_sd);
+                    button.setOnClickListener(v -> mFragment.startActivity(intent));
+                    button.setVisibility(View.VISIBLE);
+                }
+                return;
+            }
+            case ActionType.ACTION_NOTIF_PREFERENCE: {
+                if (mAppNotifPrefIntent == null) {
+                    button.setVisibility(View.GONE);
+                } else {
+                    button.setOnClickListener(v -> mFragment.startActivity(mAppNotifPrefIntent));
+                    button.setVisibility(View.VISIBLE);
+                }
+                return;
+            }
+            case ActionType.ACTION_APP_PREFERENCE: {
+                final Intent intent = resolveIntent(
+                        new Intent(Intent.ACTION_APPLICATION_PREFERENCES).setPackage(mPackageName));
+                if (intent == null) {
+                    button.setVisibility(View.GONE);
+                    return;
+                }
+                button.setOnClickListener(v -> mFragment.startActivity(intent));
+                button.setVisibility(View.VISIBLE);
+                return;
+            }
+            case ActionType.ACTION_NONE: {
+                button.setVisibility(View.GONE);
+                return;
+            }
+        }
+    }
+
+    private String getInstallerPackageName(Context context, String packageName) {
+        try {
+            return context.getPackageManager().getInstallerPackageName(packageName);
+        } catch (IllegalArgumentException e) {
+            Log.e(TAG, "Exception while retrieving the package installer of " + packageName, e);
+            return null;
+        }
+    }
+
+    private Intent resolveIntent(Intent i) {
+        ResolveInfo result = mContext.getPackageManager().resolveActivity(i, 0);
+        if (result != null) {
+            return new Intent(i.getAction())
+                    .setClassName(result.activityInfo.packageName, result.activityInfo.name);
+        }
+        return null;
+    }
+
+    private void setText(@IdRes int id, CharSequence text) {
+        TextView textView = (TextView) mAppHeader.findViewById(id);
+        if (textView != null) {
+            textView.setText(text);
+            textView.setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE);
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/com/android/settings/applications/AppInfoWithHeader.java b/src/com/android/settings/applications/AppInfoWithHeader.java
index 004ce0c..910b618 100644
--- a/src/com/android/settings/applications/AppInfoWithHeader.java
+++ b/src/com/android/settings/applications/AppInfoWithHeader.java
@@ -16,10 +16,15 @@
 
 package com.android.settings.applications;
 
+import android.app.Activity;
 import android.os.Bundle;
+import android.support.v7.preference.Preference;
 import android.util.Log;
 
 import com.android.settings.AppHeader;
+import com.android.settings.overlay.FeatureFactory;
+
+import static com.android.settings.applications.AppHeaderController.ActionType;
 
 public abstract class AppInfoWithHeader extends AppInfoBase {
 
@@ -34,8 +39,24 @@
         }
         mCreated = true;
         if (mPackageInfo == null) return;
-        AppHeader.createAppHeader(this, mPackageInfo.applicationInfo.loadIcon(mPm),
-                mPackageInfo.applicationInfo.loadLabel(mPm), mPackageName,
-                mPackageInfo.applicationInfo.uid, 0);
+        final Activity activity = getActivity();
+        if (!FeatureFactory.getFactory(activity)
+                .getDashboardFeatureProvider(activity).isEnabled()) {
+            AppHeader.createAppHeader(this, mPackageInfo.applicationInfo.loadIcon(mPm),
+                    mPackageInfo.applicationInfo.loadLabel(mPm), mPackageName,
+                    mPackageInfo.applicationInfo.uid, 0);
+        } else {
+            final Preference pref = FeatureFactory.getFactory(activity)
+                    .getApplicationFeatureProvider(activity)
+                    .newAppHeaderController(this, null /* appHeader */)
+                    .setIcon(mPackageInfo.applicationInfo.loadIcon(mPm))
+                    .setLabel(mPackageInfo.applicationInfo.loadLabel(mPm))
+                    .setSummary(mPackageInfo)
+                    .setPackageName(mPackageName)
+                    .setUid(mPackageInfo.applicationInfo.uid)
+                    .setButtonActions(ActionType.ACTION_APP_INFO, ActionType.ACTION_NONE)
+                    .done(getPrefContext());
+            getPreferenceScreen().addPreference(pref);
+        }
     }
 }
diff --git a/src/com/android/settings/applications/AppStateNotificationBridge.java b/src/com/android/settings/applications/AppStateNotificationBridge.java
index b936351..5fff175 100644
--- a/src/com/android/settings/applications/AppStateNotificationBridge.java
+++ b/src/com/android/settings/applications/AppStateNotificationBridge.java
@@ -16,6 +16,7 @@
 package com.android.settings.applications;
 
 import android.app.Notification;
+import android.app.NotificationManager;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.os.UserHandle;
@@ -92,8 +93,8 @@
                 return false;
             }
             AppRow row = (AppRow) info.extraInfo;
-            return row.appImportance > NotificationListenerService.Ranking.IMPORTANCE_NONE
-                    && row.appImportance < NotificationListenerService.Ranking.IMPORTANCE_DEFAULT;
+            return row.appImportance > NotificationManager.IMPORTANCE_NONE
+                    && row.appImportance < NotificationManager.IMPORTANCE_DEFAULT;
         }
     };
 
diff --git a/src/com/android/settings/applications/ApplicationFeatureProvider.java b/src/com/android/settings/applications/ApplicationFeatureProvider.java
new file mode 100644
index 0000000..b6f7381
--- /dev/null
+++ b/src/com/android/settings/applications/ApplicationFeatureProvider.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2016 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.applications;
+
+import android.app.Fragment;
+import android.view.View;
+
+public interface ApplicationFeatureProvider {
+
+    /**
+     * Returns a new {@link AppHeaderController} instance to customize app header.
+     */
+    AppHeaderController newAppHeaderController(Fragment fragment, View appHeader);
+}
+
diff --git a/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java
new file mode 100644
index 0000000..b1b4474
--- /dev/null
+++ b/src/com/android/settings/applications/ApplicationFeatureProviderImpl.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2016 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.applications;
+
+import android.app.Fragment;
+import android.content.Context;
+import android.view.View;
+
+public class ApplicationFeatureProviderImpl implements ApplicationFeatureProvider {
+
+    private final Context mContext;
+
+    public ApplicationFeatureProviderImpl(Context context) {
+        mContext = context.getApplicationContext();
+    }
+
+    public AppHeaderController newAppHeaderController(Fragment fragment, View appHeader) {
+        return new AppHeaderController(mContext, fragment, appHeader);
+    }
+}
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index 948220c..e7f89be 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -22,6 +22,7 @@
 import android.app.AlertDialog;
 import android.app.LoaderManager.LoaderCallbacks;
 import android.app.Notification;
+import android.app.NotificationManager;
 import android.app.admin.DevicePolicyManager;
 import android.content.ActivityNotFoundException;
 import android.content.BroadcastReceiver;
@@ -85,6 +86,7 @@
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
 import com.android.settings.applications.PermissionsSummaryHelper.PermissionsResultCallback;
+import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.datausage.AppDataUsage;
 import com.android.settings.datausage.DataUsageList;
 import com.android.settings.datausage.DataUsageSummary;
@@ -93,6 +95,7 @@
 import com.android.settings.notification.AppNotificationSettings;
 import com.android.settings.notification.NotificationBackend;
 import com.android.settings.notification.NotificationBackend.AppRow;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.AppItem;
 import com.android.settingslib.RestrictedLockUtils;
 import com.android.settingslib.applications.AppUtils;
@@ -139,6 +142,7 @@
     private static final int DLG_SPECIAL_DISABLE = DLG_BASE + 3;
 
     private static final String KEY_HEADER = "header_view";
+    private static final String KEY_FOOTER = "header_footer";
     private static final String KEY_NOTIFICATION = "notification_settings";
     private static final String KEY_STORAGE = "storage_settings";
     private static final String KEY_PERMISSION = "permission_settings";
@@ -149,11 +153,14 @@
 
     private static final String NOTIFICATION_TUNER_SETTING = "show_importance_slider";
 
-    private final HashSet<String> mHomePackages = new HashSet<String>();
+    private final HashSet<String> mHomePackages = new HashSet<>();
+
+    private DashboardFeatureProvider mDashboardFeatureProvider;
 
     private boolean mInitialized;
     private boolean mShowUninstalled;
     private LayoutPreference mHeader;
+    private LayoutPreference mFooter;
     private Button mUninstallButton;
     private boolean mUpdatedSysApp = false;
     private Button mForceStopButton;
@@ -165,6 +172,7 @@
     private Preference mMemoryPreference;
 
     private boolean mDisableAfterUninstall;
+
     // Used for updating notification preference.
     private final NotificationBackend mBackend = new NotificationBackend();
 
@@ -307,9 +315,14 @@
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
+        final Activity activity = getActivity();
+        mDashboardFeatureProvider =
+                FeatureFactory.getFactory(activity).getDashboardFeatureProvider(activity);
 
         setHasOptionsMenu(true);
-        addPreferencesFromResource(R.xml.installed_app_details);
+        addPreferencesFromResource(mDashboardFeatureProvider.isEnabled()
+                ? R.xml.installed_app_details_ia
+                : R.xml.installed_app_details);
         addDynamicPrefs();
 
         if (Utils.isBandwidthControlEnabled()) {
@@ -367,7 +380,20 @@
         if (mFinishing) {
             return;
         }
-        handleHeader();
+        if (!mDashboardFeatureProvider.isEnabled()) {
+            handleHeader();
+        } else {
+            final Activity activity = getActivity();
+            mHeader = (LayoutPreference) findPreference(KEY_HEADER);
+            FeatureFactory.getFactory(activity)
+                    .getApplicationFeatureProvider(activity)
+                    .newAppHeaderController(this, mHeader.findViewById(R.id.app_snippet))
+                    .setPackageName(mPackageName)
+                    .setButtonActions(AppHeaderController.ActionType.ACTION_STORE_DEEP_LINK,
+                            AppHeaderController.ActionType.ACTION_APP_PREFERENCE)
+                    .bindAppHeaderButtons();
+            prepareUninstallAndStop();
+        }
 
         mNotificationPreference = findPreference(KEY_NOTIFICATION);
         mNotificationPreference.setOnPreferenceClickListener(this);
@@ -405,7 +431,6 @@
 
     private void handleHeader() {
         mHeader = (LayoutPreference) findPreference(KEY_HEADER);
-
         // Get Control button panel
         View btnPanel = mHeader.findViewById(R.id.control_buttons_panel);
         mForceStopButton = (Button) btnPanel.findViewById(R.id.right_button);
@@ -430,6 +455,13 @@
         }
     }
 
+    private void prepareUninstallAndStop() {
+        mForceStopButton = (Button) mFooter.findViewById(R.id.right_button);
+        mForceStopButton.setText(R.string.force_stop);
+        mUninstallButton = (Button) mFooter.findViewById(R.id.left_button);
+        mForceStopButton.setEnabled(false);
+    }
+
     private Intent resolveIntent(Intent i) {
         ResolveInfo result = getContext().getPackageManager().resolveActivity(i, 0);
         return result != null ? new Intent(i.getAction())
@@ -514,8 +546,19 @@
     private void setAppLabelAndIcon(PackageInfo pkgInfo) {
         final View appSnippet = mHeader.findViewById(R.id.app_snippet);
         mState.ensureIcon(mAppEntry);
-        setupAppSnippet(appSnippet, mAppEntry.label, mAppEntry.icon,
-                pkgInfo != null ? pkgInfo.versionName : null);
+        if (mDashboardFeatureProvider.isEnabled()) {
+            final Activity activity = getActivity();
+            FeatureFactory.getFactory(activity)
+                    .getApplicationFeatureProvider(activity)
+                    .newAppHeaderController(this, appSnippet)
+                    .setLabel(mAppEntry)
+                    .setIcon(mAppEntry)
+                    .setSummary(pkgInfo)
+                    .done(false /* rebindActions */);
+        } else {
+            setupAppSnippet(appSnippet, mAppEntry.label, mAppEntry.icon,
+                    pkgInfo != null ? pkgInfo.versionName : null);
+        }
     }
 
     private boolean signaturesMatch(String pkg1, String pkg2) {
@@ -920,6 +963,12 @@
         }
 
         addAppInstallerInfoPref(screen);
+        if (mDashboardFeatureProvider.isEnabled()) {
+            mFooter = new LayoutPreference(screen.getContext(), R.layout.app_action_buttons);
+            mFooter.setOrder(10000);
+            mFooter.setKey(KEY_FOOTER);
+            screen.addPreference(mFooter);
+        }
     }
 
     private void addAppInstallerInfoPref(PreferenceScreen screen) {
@@ -1054,15 +1103,15 @@
         List<String> summaryAttributes = new ArrayList<>();
         StringBuffer summary = new StringBuffer();
         if (showSlider) {
-            if (appRow.appImportance != Ranking.IMPORTANCE_UNSPECIFIED) {
+            if (appRow.appImportance != NotificationManager.IMPORTANCE_UNSPECIFIED) {
                 summaryAttributes.add(context.getString(
                         R.string.notification_summary_level, appRow.appImportance));
             }
         } else {
             if (appRow.banned) {
                 summaryAttributes.add(context.getString(R.string.notifications_disabled));
-            } else if (appRow.appImportance > Ranking.IMPORTANCE_NONE
-                    && appRow.appImportance < Ranking.IMPORTANCE_DEFAULT) {
+            } else if (appRow.appImportance > NotificationManager.IMPORTANCE_NONE
+                    && appRow.appImportance < NotificationManager.IMPORTANCE_DEFAULT) {
                 summaryAttributes.add(context.getString(R.string.notifications_silenced));
             }
         }
diff --git a/src/com/android/settings/applications/ManageApplications.java b/src/com/android/settings/applications/ManageApplications.java
index 2329d12..7dee5f4 100644
--- a/src/com/android/settings/applications/ManageApplications.java
+++ b/src/com/android/settings/applications/ManageApplications.java
@@ -31,8 +31,8 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.preference.PreferenceFrameLayout;
+import android.support.v7.preference.Preference;
 import android.text.TextUtils;
-import android.util.ArraySet;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
@@ -52,9 +52,9 @@
 import android.widget.ListView;
 import android.widget.SectionIndexer;
 import android.widget.Spinner;
+
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.AppHeader;
-import com.android.settings.core.InstrumentedFragment;
 import com.android.settings.R;
 import com.android.settings.Settings.AllApplicationsActivity;
 import com.android.settings.Settings.HighPowerApplicationsActivity;
@@ -67,6 +67,7 @@
 import com.android.settings.Utils;
 import com.android.settings.applications.AppStateAppOpsBridge.PermissionState;
 import com.android.settings.applications.AppStateUsageBridge.UsageState;
+import com.android.settings.core.InstrumentedFragment;
 import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.fuelgauge.HighPowerDetail;
 import com.android.settings.fuelgauge.PowerWhitelistBackend;
@@ -74,6 +75,7 @@
 import com.android.settings.notification.ConfigureNotificationSettings;
 import com.android.settings.notification.NotificationBackend;
 import com.android.settings.notification.NotificationBackend.AppRow;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.HelpUtils;
 import com.android.settingslib.applications.ApplicationsState;
 import com.android.settingslib.applications.ApplicationsState.AppEntry;
@@ -337,7 +339,7 @@
     private void createHeader() {
         Activity activity = getActivity();
         FrameLayout pinnedHeader = (FrameLayout) mRootView.findViewById(R.id.pinned_header);
-        mSpinnerHeader = (ViewGroup) activity.getLayoutInflater()
+        mSpinnerHeader = activity.getLayoutInflater()
                 .inflate(R.layout.apps_filter_spinner, pinnedHeader, false);
         mFilterSpinner = (Spinner) mSpinnerHeader.findViewById(R.id.filter_spinner);
         mFilterAdapter = new FilterSpinnerAdapter(this);
@@ -370,9 +372,23 @@
     @Override
     public void onViewCreated(View view, Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
+
         if (mListType == LIST_TYPE_STORAGE) {
-            FrameLayout pinnedHeader = (FrameLayout) mRootView.findViewById(R.id.pinned_header);
-            AppHeader.createAppHeader(getActivity(), null, mVolumeName, null, -1, pinnedHeader);
+            final Activity activity = getActivity();
+            final boolean isNewIAEnabled = FeatureFactory.getFactory(activity)
+                    .getDashboardFeatureProvider(activity)
+                    .isEnabled();
+            if (!isNewIAEnabled) {
+                FrameLayout pinnedHeader = (FrameLayout) mRootView.findViewById(R.id.pinned_header);
+                AppHeader.createAppHeader(getActivity(), null, mVolumeName, null, -1, pinnedHeader);
+            } else {
+                final View appHeader = FeatureFactory.getFactory(activity)
+                        .getApplicationFeatureProvider(activity)
+                        .newAppHeaderController(this, null /* appHeaderView */)
+                        .setLabel(mVolumeName)
+                        .done();
+                mListView.addHeaderView(appHeader);
+            }
         }
     }
 
@@ -547,8 +563,13 @@
         if (mOptionsMenu == null) {
             return;
         }
-        mOptionsMenu.findItem(R.id.advanced).setVisible(
-                mListType == LIST_TYPE_MAIN || mListType == LIST_TYPE_NOTIFICATION);
+        final Context context = getActivity();
+        if (FeatureFactory.getFactory(context).getDashboardFeatureProvider(context).isEnabled()) {
+            mOptionsMenu.findItem(R.id.advanced).setVisible(false);
+        } else {
+            mOptionsMenu.findItem(R.id.advanced).setVisible(
+                    mListType == LIST_TYPE_MAIN || mListType == LIST_TYPE_NOTIFICATION);
+        }
 
         mOptionsMenu.findItem(R.id.sort_order_alpha).setVisible(mListType == LIST_TYPE_STORAGE
                 && mSortOrder != R.id.sort_order_alpha);
diff --git a/src/com/android/settings/applications/ProcessStatsDetail.java b/src/com/android/settings/applications/ProcessStatsDetail.java
index bc65a7f..7a0760a 100644
--- a/src/com/android/settings/applications/ProcessStatsDetail.java
+++ b/src/com/android/settings/applications/ProcessStatsDetail.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.applications;
 
+import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.ActivityManager.RunningServiceInfo;
 import android.app.AlertDialog;
@@ -31,6 +32,7 @@
 import android.graphics.drawable.ColorDrawable;
 import android.os.Bundle;
 import android.os.Process;
+import android.os.UserHandle;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceCategory;
 import android.text.format.Formatter;
@@ -40,6 +42,7 @@
 import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
+
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.AppHeader;
 import com.android.settings.CancellablePreference;
@@ -48,6 +51,7 @@
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.SummaryPreference;
 import com.android.settings.applications.ProcStatsEntry.Service;
+import com.android.settings.overlay.FeatureFactory;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -55,6 +59,8 @@
 import java.util.HashMap;
 import java.util.List;
 
+import static com.android.settings.applications.AppHeaderController.ActionType;
+
 public class ProcessStatsDetail extends SettingsPreferenceFragment {
 
     private static final String TAG = "ProcessStatsDetail";
@@ -119,9 +125,29 @@
             finish();
             return;
         }
-        AppHeader.createAppHeader(this,
-                mApp.mUiTargetApp != null ? mApp.mUiTargetApp.loadIcon(mPm) : new ColorDrawable(0),
-                mApp.mUiLabel, mApp.mPackage, mApp.mUiTargetApp.uid);
+        final Activity activity = getActivity();
+        if (!FeatureFactory.getFactory(activity)
+                .getDashboardFeatureProvider(activity).isEnabled()) {
+            AppHeader.createAppHeader(this, mApp.mUiTargetApp != null
+                            ? mApp.mUiTargetApp.loadIcon(mPm)
+                            : new ColorDrawable(0),
+                    mApp.mUiLabel, mApp.mPackage, mApp.mUiTargetApp.uid);
+        } else {
+            final Preference pref = FeatureFactory.getFactory(activity)
+                    .getApplicationFeatureProvider(activity)
+                    .newAppHeaderController(this, null /* appHeader */)
+                    .setIcon(mApp.mUiTargetApp != null
+                            ? mApp.mUiTargetApp.loadIcon(mPm)
+                            : new ColorDrawable(0))
+                    .setLabel(mApp.mUiLabel)
+                    .setPackageName(mApp.mPackage)
+                    .setUid(mApp.mUiTargetApp != null
+                            ? mApp.mUiTargetApp.uid
+                            : UserHandle.USER_NULL)
+                    .setButtonActions(ActionType.ACTION_APP_INFO, ActionType.ACTION_NONE)
+                    .done(getPrefContext());
+            getPreferenceScreen().addPreference(pref);
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingController.java b/src/com/android/settings/bluetooth/BluetoothPairingController.java
index 38b30a8..ce82612 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingController.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingController.java
@@ -188,7 +188,7 @@
      *
      * @return - The message ID to show the user.
      */
-    public int getDeviceVariantMessageID() {
+    public int getDeviceVariantMessageId() {
         switch (mType) {
             case BluetoothDevice.PAIRING_VARIANT_PIN_16_DIGITS:
             case BluetoothDevice.PAIRING_VARIANT_PIN:
@@ -198,7 +198,7 @@
                 return R.string.bluetooth_enter_passkey_other_device;
 
             default:
-                return -1;
+                return INVALID_DIALOG_TYPE;
         }
     }
 
@@ -208,7 +208,7 @@
      *
      * @return - The message ID to show the user.
      */
-    public int getDeviceVariantMessageHint() {
+    public int getDeviceVariantMessageHintId() {
         switch (mType) {
             case BluetoothDevice.PAIRING_VARIANT_PIN_16_DIGITS:
                 return R.string.bluetooth_pin_values_hint_16_digits;
@@ -218,7 +218,7 @@
                 return R.string.bluetooth_pin_values_hint;
 
             default:
-                return -1;
+                return INVALID_DIALOG_TYPE;
         }
     }
 
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
index d4247c0..abeb862 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
@@ -45,10 +45,9 @@
     private static final String TAG = "BTPairingDialogFragment";
 
     private AlertDialog.Builder mBuilder;
-    private BluetoothPairingController mPairingController;
     private AlertDialog mDialog;
+    private BluetoothPairingController mPairingController;
     private EditText mPairingView;
-
     /**
      * The interface we expect a listener to implement. Typically this should be done by
      * the controller.
@@ -106,11 +105,25 @@
     }
 
     /**
+     * Used in testing to get a reference to the dialog.
+     * @return - The fragments current dialog
+     */
+    protected AlertDialog getmDialog() {
+        return mDialog;
+    }
+
+    /**
      * Sets the controller that the fragment should use. this method MUST be called
      * before you try to show the dialog or an error will be thrown. An implementation
-     * of a pairing controller can be found at {@link BluetoothPairingController}.
+     * of a pairing controller can be found at {@link BluetoothPairingController}. A
+     * controller may not be substituted once it is assigned. Forcibly switching a
+     * controller for a new one will lead to undefined behavior.
      */
     public void setPairingController(BluetoothPairingController pairingController) {
+        if (mPairingController != null) {
+            throw new IllegalStateException("The controller can only be set once. "
+                    + "Forcibly replacing it will lead to undefined behavior");
+        }
         mPairingController = pairingController;
     }
 
@@ -146,7 +159,7 @@
         mBuilder.setPositiveButton(getString(android.R.string.ok), this);
         mBuilder.setNegativeButton(getString(android.R.string.cancel), this);
         AlertDialog dialog = mBuilder.create();
-        dialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(false);
+        dialog.setOnShowListener(d -> mDialog.getButton(Dialog.BUTTON_POSITIVE).setEnabled(false));
         return dialog;
     }
 
@@ -171,6 +184,7 @@
 
         mPairingView = pairingView;
 
+        pairingView.setInputType(InputType.TYPE_CLASS_NUMBER);
         pairingView.addTextChangedListener(this);
         alphanumericPin.setOnCheckedChangeListener((buttonView, isChecked) -> {
             // change input type for soft keyboard to numeric or alphanumeric
@@ -181,15 +195,21 @@
             }
         });
 
-        int messageId = mPairingController.getDeviceVariantMessageID();
-        int messageIdHint = mPairingController.getDeviceVariantMessageHint();
+        int messageId = mPairingController.getDeviceVariantMessageId();
+        int messageIdHint = mPairingController.getDeviceVariantMessageHintId();
         int maxLength = mPairingController.getDeviceMaxPasskeyLength();
         alphanumericPin.setVisibility(mPairingController.pairingCodeIsAlphanumeric()
                 ? View.VISIBLE : View.GONE);
-
-        messageViewCaptionHint.setText(messageIdHint);
-        messageView2.setText(messageId);
-        pairingView.setInputType(InputType.TYPE_CLASS_NUMBER);
+        if (messageId != BluetoothPairingController.INVALID_DIALOG_TYPE) {
+            messageView2.setText(messageId);
+        } else {
+            messageView2.setVisibility(View.GONE);
+        }
+        if (messageIdHint != BluetoothPairingController.INVALID_DIALOG_TYPE) {
+            messageViewCaptionHint.setText(messageIdHint);
+        } else {
+            messageViewCaptionHint.setVisibility(View.GONE);
+        }
         pairingView.setFilters(new InputFilter[]{
                 new LengthFilter(maxLength)});
 
@@ -203,10 +223,8 @@
         mBuilder.setTitle(getString(R.string.bluetooth_pairing_request,
                 mPairingController.getDeviceName()));
         mBuilder.setView(createView());
-        mBuilder.setPositiveButton(getString(R.string.bluetooth_pairing_accept),
-                this);
-        mBuilder.setNegativeButton(getString(R.string.bluetooth_pairing_decline),
-                this);
+        mBuilder.setPositiveButton(getString(R.string.bluetooth_pairing_accept), this);
+        mBuilder.setNegativeButton(getString(R.string.bluetooth_pairing_decline), this);
         AlertDialog dialog = mBuilder.create();
         return dialog;
     }
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index 3dfcfc7..9b222fa 100644
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -180,13 +180,13 @@
     }
 
     @Override
-    public void onResume() {
-        // resume BluetoothEnabler before calling super.onResume() so we don't get
+    public void onStart() {
+        // resume BluetoothEnabler before calling super.onStart() so we don't get
         // any onDeviceAdded() callbacks before setting up view in updateContent()
         if (mBluetoothEnabler != null) {
             mBluetoothEnabler.resume(getActivity());
         }
-        super.onResume();
+        super.onStart();
 
         mInitiateDiscoverable = true;
 
@@ -206,8 +206,8 @@
     }
 
     @Override
-    public void onPause() {
-        super.onPause();
+    public void onStop() {
+        super.onStop();
         if (mBluetoothEnabler != null) {
             mBluetoothEnabler.pause();
         }
diff --git a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
index e6fcbcb..c132163 100644
--- a/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
+++ b/src/com/android/settings/bluetooth/DeviceListPreferenceFragment.java
@@ -98,8 +98,8 @@
     abstract void addPreferencesForActivity();
 
     @Override
-    public void onResume() {
-        super.onResume();
+    public void onStart() {
+        super.onStart();
         if (mLocalManager == null || isUiRestricted()) return;
 
         mLocalManager.setForegroundActivity(getActivity());
@@ -109,8 +109,8 @@
     }
 
     @Override
-    public void onPause() {
-        super.onPause();
+    public void onStop() {
+        super.onStop();
         if (mLocalManager == null || isUiRestricted()) {
             return;
         }
diff --git a/src/com/android/settings/bluetooth/DevicePickerFragment.java b/src/com/android/settings/bluetooth/DevicePickerFragment.java
index 3fbd7bd..066f5d2 100644
--- a/src/com/android/settings/bluetooth/DevicePickerFragment.java
+++ b/src/com/android/settings/bluetooth/DevicePickerFragment.java
@@ -47,7 +47,7 @@
     private boolean mNeedAuth;
     private String mLaunchPackage;
     private String mLaunchClass;
-    private boolean mStartScanOnResume;
+    private boolean mStartScanOnStart;
 
     @Override
     void addPreferencesForActivity() {
@@ -94,18 +94,18 @@
         super.onCreate(savedInstanceState);
         getActivity().setTitle(getString(R.string.device_picker));
         UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
-        mStartScanOnResume = !um.hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)
+        mStartScanOnStart = !um.hasUserRestriction(DISALLOW_CONFIG_BLUETOOTH)
                 && (savedInstanceState == null);  // don't start scan after rotation
         setHasOptionsMenu(true);
     }
 
     @Override
-    public void onResume() {
-        super.onResume();
+    public void onStart() {
+        super.onStart();
         addCachedDevices();
-        if (mStartScanOnResume) {
+        if (mStartScanOnStart) {
             mLocalAdapter.startScanning(true);
-            mStartScanOnResume = false;
+            mStartScanOnStart = false;
         }
     }
 
diff --git a/src/com/android/settings/core/PreferenceController.java b/src/com/android/settings/core/PreferenceController.java
index 8a4a245..93ffe36 100644
--- a/src/com/android/settings/core/PreferenceController.java
+++ b/src/com/android/settings/core/PreferenceController.java
@@ -18,6 +18,7 @@
 import android.content.Context;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
+import com.android.settings.search.SearchIndexableRaw;
 
 import java.util.List;
 
@@ -66,6 +67,19 @@
     }
 
     /**
+     * Updates raw data for search provider.
+     *
+     * Called by SearchIndexProvider#getRawDataToIndex
+     */
+    public void updateRawDataToIndex(List<SearchIndexableRaw> rawData) {
+    }
+
+    /**
+     * Returns true if preference is available (should be displayed)
+     */
+    public abstract boolean isAvailable();
+
+    /**
      * Handles preference tree click
      *
      * @param preference the preference being clicked
@@ -87,9 +101,4 @@
             screen.removePreference(pref);
         }
     }
-
-    /**
-     * Returns true if preference is available (should be displayed)
-     */
-    protected abstract boolean isAvailable();
 }
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index 9ea48b0..baea164 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -64,8 +64,7 @@
         @Override
         public void onClick(View v) {
             //TODO: get rid of setTag/getTag
-            final Tile tile = (Tile) mDashboardData.getItemEntityByPosition((int) v.getTag());
-            ((SettingsActivity) mContext).openTile(tile);
+            ((SettingsActivity) mContext).openTile((Tile) v.getTag());
         }
     };
 
@@ -205,7 +204,7 @@
             case R.layout.dashboard_tile:
                 final Tile tile = (Tile) mDashboardData.getItemEntityByPosition(position);
                 onBindTile(holder, tile);
-                holder.itemView.setTag(position);
+                holder.itemView.setTag(tile);
                 holder.itemView.setOnClickListener(mTileClickListener);
                 break;
             case R.layout.suggestion_header:
diff --git a/src/com/android/settings/dashboard/DashboardData.java b/src/com/android/settings/dashboard/DashboardData.java
index 0fc994b..147f39e 100644
--- a/src/com/android/settings/dashboard/DashboardData.java
+++ b/src/com/android/settings/dashboard/DashboardData.java
@@ -16,6 +16,7 @@
 package com.android.settings.dashboard;
 
 import android.annotation.IntDef;
+import android.support.annotation.Nullable;
 import android.support.v7.util.DiffUtil;
 import android.text.TextUtils;
 import com.android.settings.dashboard.conditional.Condition;
@@ -350,6 +351,15 @@
         public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
             return mOldItems.get(oldItemPosition).equals(mNewItems.get(newItemPosition));
         }
+
+        @Nullable
+        @Override
+        public Object getChangePayload(int oldItemPosition, int newItemPosition) {
+            if (mOldItems.get(oldItemPosition).type == Item.TYPE_CONDITION_CARD) {
+                return "condition"; // return anything but null to mark the payload
+            }
+            return null;
+         }
     }
 
     /**
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProvider.java b/src/com/android/settings/dashboard/DashboardFeatureProvider.java
index 0a8dbbf..8601f1d 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProvider.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProvider.java
@@ -15,6 +15,7 @@
  */
 package com.android.settings.dashboard;
 
+import android.app.Activity;
 import android.content.Context;
 import android.support.v7.preference.Preference;
 
@@ -56,6 +57,16 @@
     String getDashboardKeyForTile(Tile tile);
 
     /**
+     * Binds preference to data provided by tile.
+     *
+     * @param activity If tile contains intent to launch, it will be launched from this activity
+     * @param pref The preference to bind data
+     * @param tile The binding data
+     * @param key They key for preference. If null, we will generate one from tile data
+     */
+    void bindPreferenceToTile(Activity activity, Preference pref, Tile tile, String key);
+
+    /**
      * Returns a {@link ProgressiveDisclosureMixin} for specified fragment.
      */
     ProgressiveDisclosureMixin getProgressiveDisclosureMixin(Context context,
diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
index ed0520a..d07d303 100644
--- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java
@@ -16,12 +16,18 @@
 
 package com.android.settings.dashboard;
 
+import android.app.Activity;
 import android.content.ComponentName;
 import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
 import android.support.v7.preference.Preference;
+import android.text.TextUtils;
 
+import com.android.settings.SettingsActivity;
 import com.android.settingslib.drawer.CategoryManager;
 import com.android.settingslib.drawer.DashboardCategory;
+import com.android.settingslib.drawer.ProfileSelectDialog;
 import com.android.settingslib.drawer.Tile;
 
 import java.util.List;
@@ -38,8 +44,8 @@
     private final CategoryManager mCategoryManager;
 
     public DashboardFeatureProviderImpl(Context context) {
-        mContext = context;
-        mCategoryManager = CategoryManager.get(context);
+        mContext = context.getApplicationContext();
+        mCategoryManager = CategoryManager.get(mContext);
     }
 
     @Override
@@ -74,6 +80,47 @@
     }
 
     @Override
+    public void bindPreferenceToTile(Activity activity, Preference pref, Tile tile, String key) {
+        pref.setTitle(tile.title);
+        if (!TextUtils.isEmpty(key)) {
+            pref.setKey(key);
+        } else {
+            pref.setKey(getDashboardKeyForTile(tile));
+        }
+        pref.setSummary(tile.summary);
+        if (tile.icon != null) {
+            pref.setIcon(tile.icon.loadDrawable(activity));
+        }
+        final Bundle metadata = tile.metaData;
+        String clsName = null;
+        if (metadata != null) {
+            clsName = metadata.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS);
+        }
+        if (!TextUtils.isEmpty(clsName)) {
+            pref.setFragment(clsName);
+        } else if (tile.intent != null) {
+            final Intent intent = new Intent(tile.intent);
+            pref.setOnPreferenceClickListener(preference -> {
+                ProfileSelectDialog.updateUserHandlesIfNeeded(mContext, tile);
+                if (tile.userHandle == null) {
+                    activity.startActivityForResult(intent, 0);
+                } else if (tile.userHandle.size() == 1) {
+                    activity.startActivityForResultAsUser(intent, 0, tile.userHandle.get(0));
+                } else {
+                    ProfileSelectDialog.show(activity.getFragmentManager(), tile);
+                }
+                return true;
+            });
+        }
+        // Use negated priority for order, because tile priority is based on intent-filter
+        // (larger value has higher priority). However pref order defines smaller value has
+        // higher priority.
+        if (tile.priority != 0) {
+            pref.setOrder(-tile.priority);
+        }
+    }
+
+    @Override
     public ProgressiveDisclosureMixin getProgressiveDisclosureMixin(Context context,
             DashboardFragment fragment) {
         return new ProgressiveDisclosureMixin(context, this, fragment);
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index fd125af..dddc4cc 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -17,7 +17,6 @@
 
 import android.app.Activity;
 import android.content.Context;
-import android.content.Intent;
 import android.graphics.Color;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
@@ -34,7 +33,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 
-import com.android.settings.SettingsActivity;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.overlay.FeatureFactory;
@@ -251,11 +249,15 @@
         Collection<PreferenceController> controllers = mPreferenceControllers.values();
         final PreferenceScreen screen = getPreferenceScreen();
         for (PreferenceController controller : controllers) {
+            if (!controller.isAvailable()) {
+                continue;
+            }
             final String key = controller.getPreferenceKey();
 
             final Preference preference = mProgressiveDisclosureMixin.findPreference(screen, key);
             if (preference == null) {
-                Log.d(TAG, "Cannot find preference with key " + key);
+                Log.d(TAG, String.format("Cannot find preference with key %s in Controller %s",
+                        key, controller.getClass().getSimpleName()));
                 continue;
             }
             controller.updateState(preference);
@@ -286,7 +288,6 @@
     void refreshDashboardTiles(final String TAG) {
         final PreferenceScreen screen = getPreferenceScreen();
 
-        final Context context = getContext();
         final DashboardCategory category =
                 mDashboardFeatureProvider.getTilesForCategory(getCategoryKey());
         if (category == null) {
@@ -318,11 +319,12 @@
                 // Have the key already, will rebind.
                 final Preference preference = mProgressiveDisclosureMixin.findPreference(
                         screen, key);
-                bindPreferenceToTile(context, preference, tile, key);
+                mDashboardFeatureProvider.bindPreferenceToTile(
+                        getActivity(), preference, tile, key);
             } else {
                 // Don't have this key, add it.
-                final Preference pref = new DashboardTilePreference(context);
-                bindPreferenceToTile(context, pref, tile, key);
+                final Preference pref = new Preference(getPrefContext());
+                mDashboardFeatureProvider.bindPreferenceToTile(getActivity(), pref, tile, key);
                 mProgressiveDisclosureMixin.addPreference(screen, pref);
                 mDashboardTilePrefKeys.add(key);
             }
@@ -334,32 +336,4 @@
             mProgressiveDisclosureMixin.removePreference(screen, key);
         }
     }
-
-    @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
-    void bindPreferenceToTile(Context context, Preference pref, Tile tile, String key) {
-        pref.setTitle(tile.title);
-        pref.setKey(key);
-        pref.setSummary(tile.summary);
-        if (tile.icon != null) {
-            pref.setIcon(tile.icon.loadDrawable(context));
-        }
-        final Bundle metadata = tile.metaData;
-        String clsName = null;
-        if (metadata != null) {
-            clsName = metadata.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS);
-        }
-        if (!TextUtils.isEmpty(clsName)) {
-            pref.setFragment(clsName);
-        } else if (tile.intent != null) {
-            final Intent intent = new Intent(tile.intent);
-            pref.setOnPreferenceClickListener(preference -> {
-                getActivity().startActivityForResult(intent, 0);
-                return true;
-            });
-        }
-        // Use negated priority for order, because tile priority is based on intent-filter
-        // (larger value has higher priority). However pref order defines smaller value has
-        // higher priority.
-        pref.setOrder(-tile.priority);
-    }
 }
diff --git a/src/com/android/settings/dashboard/SearchResultsSummary.java b/src/com/android/settings/dashboard/SearchResultsSummary.java
index bd9948b..1c73a84 100644
--- a/src/com/android/settings/dashboard/SearchResultsSummary.java
+++ b/src/com/android/settings/dashboard/SearchResultsSummary.java
@@ -322,6 +322,7 @@
             mUpdateSuggestionsTask = null;
         }
         setSuggestionsCursor(null);
+        setSuggestionsVisibility(false);
     }
 
     private void setSuggestionsCursor(Cursor cursor) {
@@ -340,6 +341,7 @@
             mUpdateSearchResultsTask = null;
         }
         setResultsCursor(null);
+        setResultsVisibility(false);
     }
 
     private void setResultsCursor(Cursor cursor) {
diff --git a/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java b/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java
index 0c16527..3d13fde 100644
--- a/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java
+++ b/src/com/android/settings/dashboard/conditional/ConditionAdapterUtils.java
@@ -81,9 +81,17 @@
         View detailGroup = view.itemView.findViewById(R.id.detail_group);
         CharSequence[] actions = condition.getActions();
         if (isExpanded != (detailGroup.getVisibility() == View.VISIBLE)) {
-            animateChange(view.itemView, view.itemView.findViewById(R.id.content),
-                    detailGroup, isExpanded, actions.length > 0);
+            if (isExpanded) {
+                final boolean hasButtons = actions.length > 0;
+                setViewVisibility(detailGroup, R.id.divider, hasButtons);
+                setViewVisibility(detailGroup, R.id.buttonBar, hasButtons);
+
+                detailGroup.setVisibility(View.VISIBLE);
+            } else {
+                detailGroup.setVisibility(View.GONE);
+            }
         }
+
         if (isExpanded) {
             view.summary.setText(condition.getSummary());
             for (int i = 0; i < 2; i++) {
@@ -110,37 +118,6 @@
         }
     }
 
-    private static void animateChange(final View view, final View content,
-            final View detailGroup, final boolean visible, final boolean hasButtons) {
-        setViewVisibility(detailGroup, R.id.divider, hasButtons);
-        setViewVisibility(detailGroup, R.id.buttonBar, hasButtons);
-        final int beforeBottom = content.getBottom();
-        setHeight(detailGroup, visible ? LayoutParams.WRAP_CONTENT : 0);
-        detailGroup.setVisibility(View.VISIBLE);
-        view.addOnLayoutChangeListener(new OnLayoutChangeListener() {
-            public static final long DURATION = 250;
-
-            @Override
-            public void onLayoutChange(View v, int left, int top, int right, int bottom,
-                    int oldLeft, int oldTop, int oldRight, int oldBottom) {
-                final int afterBottom = content.getBottom();
-                v.removeOnLayoutChangeListener(this);
-                final ObjectAnimator animator = ObjectAnimator.ofInt(content, "bottom",
-                        beforeBottom, afterBottom);
-                animator.setDuration(DURATION);
-                animator.addListener(new AnimatorListenerAdapter() {
-                    @Override
-                    public void onAnimationEnd(Animator animation) {
-                        if (!visible) {
-                            detailGroup.setVisibility(View.GONE);
-                        }
-                    }
-                });
-                animator.start();
-            }
-        });
-    }
-
     private static void setHeight(View detailGroup, int height) {
         final LayoutParams params = detailGroup.getLayoutParams();
         params.height = height;
diff --git a/src/com/android/settings/datausage/AppDataUsage.java b/src/com/android/settings/datausage/AppDataUsage.java
index afe186b..d8b0849 100644
--- a/src/com/android/settings/datausage/AppDataUsage.java
+++ b/src/com/android/settings/datausage/AppDataUsage.java
@@ -14,6 +14,7 @@
 
 package com.android.settings.datausage;
 
+import android.app.Activity;
 import android.app.LoaderManager;
 import android.content.Context;
 import android.content.Intent;
@@ -29,7 +30,6 @@
 import android.net.TrafficStats;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.os.Process;
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.os.UserManager;
@@ -38,13 +38,15 @@
 import android.support.v7.preference.PreferenceCategory;
 import android.text.format.Formatter;
 import android.util.ArraySet;
-import android.util.Log;
 import android.view.View;
 import android.widget.AdapterView;
+
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.AppHeader;
 import com.android.settings.R;
+import com.android.settings.applications.AppHeaderController;
 import com.android.settings.applications.AppInfoBase;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.AppItem;
 import com.android.settingslib.Utils;
 import com.android.settingslib.net.ChartData;
@@ -53,7 +55,6 @@
 
 import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
@@ -345,15 +346,32 @@
     public void onViewCreated(View view, Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
 
-        View header = setPinnedHeaderView(R.layout.app_header);
         String pkg = mPackages.size() != 0 ? mPackages.valueAt(0) : null;
         int uid = 0;
         try {
             uid = pkg != null ? getPackageManager().getPackageUid(pkg, 0) : 0;
         } catch (PackageManager.NameNotFoundException e) {
         }
-        AppHeader.setupHeaderView(getActivity(), mIcon, mLabel,
-                pkg, uid, AppHeader.includeAppInfo(this), 0, header, null);
+
+        final Activity activity = getActivity();
+        if (!FeatureFactory.getFactory(activity)
+                .getDashboardFeatureProvider(activity).isEnabled()) {
+            View header = setPinnedHeaderView(R.layout.app_header);
+            AppHeader.setupHeaderView(getActivity(), mIcon, mLabel,
+                    pkg, uid, AppHeader.includeAppInfo(this), 0, header, null);
+        } else {
+            final Preference pref = FeatureFactory.getFactory(activity)
+                    .getApplicationFeatureProvider(activity)
+                    .newAppHeaderController(this, null /* appHeader */)
+                    .setIcon(mIcon)
+                    .setLabel(mLabel)
+                    .setPackageName(pkg)
+                    .setUid(uid)
+                    .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO,
+                            AppHeaderController.ActionType.ACTION_NONE)
+                    .done(getPrefContext());
+            getPreferenceScreen().addPreference(pref);
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/deviceinfo/AdditionalSystemUpdatePreferenceController.java b/src/com/android/settings/deviceinfo/AdditionalSystemUpdatePreferenceController.java
index 7290250..3435b53 100644
--- a/src/com/android/settings/deviceinfo/AdditionalSystemUpdatePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/AdditionalSystemUpdatePreferenceController.java
@@ -34,7 +34,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mContext.getResources().getBoolean(
                 com.android.settings.R.bool.config_additional_system_update_setting_enable);
     }
diff --git a/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
new file mode 100644
index 0000000..d118a45
--- /dev/null
+++ b/src/com/android/settings/deviceinfo/BuildNumberPreferenceController.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2016 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.deviceinfo;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.text.TextUtils;
+import android.widget.Toast;
+
+import com.android.settings.ChooseLockSettingsHelper;
+import com.android.settings.DevelopmentSettings;
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnResume;
+import com.android.settings.search.Index;
+import com.android.settingslib.RestrictedLockUtils;
+
+public class BuildNumberPreferenceController extends PreferenceController
+        implements LifecycleObserver, OnResume {
+
+    static final int TAPS_TO_BE_A_DEVELOPER = 7;
+    static final int REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF = 100;
+
+    private static final String KEY_BUILD_NUMBER = "build_number";
+
+    private final Activity mActivity;
+    private final Fragment mFragment;
+    private final UserManager mUm;
+
+    private Toast mDevHitToast;
+    private RestrictedLockUtils.EnforcedAdmin mDebuggingFeaturesDisallowedAdmin;
+    private boolean mDebuggingFeaturesDisallowedBySystem;
+    private int mDevHitCountdown;
+    private boolean mProcessingLastDevHit;
+
+    public BuildNumberPreferenceController(Context context, Activity activity, Fragment fragment) {
+        super(context);
+        mActivity = activity;
+        mFragment = fragment;
+        mUm = UserManager.get(activity);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        final Preference preference = screen.findPreference(KEY_BUILD_NUMBER);
+        if (preference != null) {
+            try {
+                preference.setSummary(Build.DISPLAY);
+                preference.setEnabled(true);
+            } catch (Exception e) {
+                preference.setSummary(R.string.device_info_default);
+            }
+        }
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_BUILD_NUMBER;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    @Override
+    public void onResume() {
+        mDebuggingFeaturesDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(
+                mContext, UserManager.DISALLOW_DEBUGGING_FEATURES, UserHandle.myUserId());
+        mDebuggingFeaturesDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(
+                mContext, UserManager.DISALLOW_DEBUGGING_FEATURES, UserHandle.myUserId());
+        mDevHitCountdown = mContext.getSharedPreferences(DevelopmentSettings.PREF_FILE,
+                Context.MODE_PRIVATE).getBoolean(DevelopmentSettings.PREF_SHOW,
+                android.os.Build.TYPE.equals("eng")) ? -1 : TAPS_TO_BE_A_DEVELOPER;
+        mDevHitToast = null;
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        if (!TextUtils.equals(preference.getKey(), KEY_BUILD_NUMBER)) {
+            return false;
+        }
+        // Don't enable developer options for secondary users.
+        if (!mUm.isAdminUser()) {
+            return false;
+        }
+
+        // Don't enable developer options until device has been provisioned
+        if (!Utils.isDeviceProvisioned(mContext)) {
+            return false;
+        }
+
+        if (mUm.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES)) {
+            if (mDebuggingFeaturesDisallowedAdmin != null &&
+                    !mDebuggingFeaturesDisallowedBySystem) {
+                RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext,
+                        mDebuggingFeaturesDisallowedAdmin);
+            }
+            return false;
+        }
+
+        if (mDevHitCountdown > 0) {
+            mDevHitCountdown--;
+            if (mDevHitCountdown == 0 && !mProcessingLastDevHit) {
+                // Add 1 count back, then start password confirmation flow.
+                mDevHitCountdown++;
+                final ChooseLockSettingsHelper helper =
+                        new ChooseLockSettingsHelper(mActivity, mFragment);
+                mProcessingLastDevHit = helper.launchConfirmationActivity(
+                        REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF,
+                        mContext.getString(R.string.unlock_set_unlock_launch_picker_title));
+                if (!mProcessingLastDevHit) {
+                    enableDevelopmentSettings();
+                }
+            } else if (mDevHitCountdown > 0
+                    && mDevHitCountdown < (TAPS_TO_BE_A_DEVELOPER - 2)) {
+                if (mDevHitToast != null) {
+                    mDevHitToast.cancel();
+                }
+                mDevHitToast = Toast.makeText(mContext,
+                        mContext.getResources().getQuantityString(
+                                R.plurals.show_dev_countdown, mDevHitCountdown,
+                                mDevHitCountdown),
+                        Toast.LENGTH_SHORT);
+                mDevHitToast.show();
+            }
+        } else if (mDevHitCountdown < 0) {
+            if (mDevHitToast != null) {
+                mDevHitToast.cancel();
+            }
+            mDevHitToast = Toast.makeText(mContext, R.string.show_dev_already,
+                    Toast.LENGTH_LONG);
+            mDevHitToast.show();
+        }
+        return true;
+    }
+
+    /**
+     * Handles password confirmation result.
+     *
+     * @return if activity result is handled.
+     */
+    public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
+        if (requestCode != REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF) {
+            return false;
+        }
+        if (resultCode == Activity.RESULT_OK) {
+            enableDevelopmentSettings();
+        }
+        mProcessingLastDevHit = false;
+        return true;
+    }
+
+    /**
+     * Enables development settings. Only call this after confirming password.
+     */
+    private void enableDevelopmentSettings() {
+        mDevHitCountdown = 0;
+        mProcessingLastDevHit = false;
+        mContext.getSharedPreferences(DevelopmentSettings.PREF_FILE,
+                Context.MODE_PRIVATE).edit()
+                .putBoolean(DevelopmentSettings.PREF_SHOW, true)
+                .apply();
+        if (mDevHitToast != null) {
+            mDevHitToast.cancel();
+        }
+        mDevHitToast = Toast.makeText(mContext, R.string.show_dev_on,
+                Toast.LENGTH_LONG);
+        mDevHitToast.show();
+        // This is good time to index the Developer Options
+        Index.getInstance(
+                mContext.getApplicationContext()).updateFromClassNameResource(
+                DevelopmentSettings.class.getName(), true, true);
+    }
+}
diff --git a/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java b/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java
index d4d53d4..e64525b 100644
--- a/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/ManageStoragePreferenceController.java
@@ -17,13 +17,10 @@
 
 import android.content.Context;
 import android.support.v7.preference.Preference;
-import android.support.v7.preference.PreferenceScreen;
 
 import com.android.settings.R;
 import com.android.settings.core.PreferenceController;
 
-import java.util.List;
-
 public class ManageStoragePreferenceController extends PreferenceController {
 
     public static final String KEY_MANAGE_STORAGE = "pref_manage_storage";
@@ -43,7 +40,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mContext.getResources().getBoolean(R.bool.config_storage_manager_settings_enabled);
     }
 }
diff --git a/src/com/android/settings/deviceinfo/Status.java b/src/com/android/settings/deviceinfo/Status.java
index 14173e8..1cbc78c 100644
--- a/src/com/android/settings/deviceinfo/Status.java
+++ b/src/com/android/settings/deviceinfo/Status.java
@@ -280,7 +280,8 @@
 
     private void setWifiStatus() {
         WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
-        String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress();
+        boolean hasMacAddress = wifiInfo != null && wifiInfo.hasRealMacAddress();
+        String macAddress = hasMacAddress ? wifiInfo.getMacAddress() : null;
         mWifiMacAddress.setSummary(!TextUtils.isEmpty(macAddress) ? macAddress : mUnavailable);
     }
 
diff --git a/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java b/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java
index e086a56..0bf43e2 100644
--- a/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java
+++ b/src/com/android/settings/deviceinfo/SystemUpdatePreferenceController.java
@@ -46,7 +46,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mUm.isAdminUser();
     }
 
diff --git a/src/com/android/settings/display/AutoBrightnessPreferenceController.java b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
index 775e60c..df2000e 100644
--- a/src/com/android/settings/display/AutoBrightnessPreferenceController.java
+++ b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
@@ -35,7 +35,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mContext.getResources().getBoolean(
                 com.android.internal.R.bool.config_automatic_brightness_available);
     }
diff --git a/src/com/android/settings/display/AutoRotatePreferenceController.java b/src/com/android/settings/display/AutoRotatePreferenceController.java
index 44d2158..567393e 100644
--- a/src/com/android/settings/display/AutoRotatePreferenceController.java
+++ b/src/com/android/settings/display/AutoRotatePreferenceController.java
@@ -73,7 +73,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return RotationPolicy.isRotationLockToggleVisible(mContext);
     }
 
diff --git a/src/com/android/settings/display/CameraGesturePreferenceController.java b/src/com/android/settings/display/CameraGesturePreferenceController.java
index 3f5d0de..a3dc6cf 100644
--- a/src/com/android/settings/display/CameraGesturePreferenceController.java
+++ b/src/com/android/settings/display/CameraGesturePreferenceController.java
@@ -50,7 +50,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         boolean configSet = mContext.getResources().getInteger(
                 com.android.internal.R.integer.config_cameraLaunchGestureSensorType) != -1;
         return configSet
diff --git a/src/com/android/settings/display/DozePreferenceController.java b/src/com/android/settings/display/DozePreferenceController.java
index bf5d8f3..16b0e81 100644
--- a/src/com/android/settings/display/DozePreferenceController.java
+++ b/src/com/android/settings/display/DozePreferenceController.java
@@ -67,7 +67,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         String name = Build.IS_DEBUGGABLE ? SystemProperties.get("debug.doze.component") : null;
         if (TextUtils.isEmpty(name)) {
             name = mContext.getResources().getString(
diff --git a/src/com/android/settings/display/FontSizePreferenceController.java b/src/com/android/settings/display/FontSizePreferenceController.java
index fcd423d..5014bda 100644
--- a/src/com/android/settings/display/FontSizePreferenceController.java
+++ b/src/com/android/settings/display/FontSizePreferenceController.java
@@ -31,7 +31,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return true;
     }
 
diff --git a/src/com/android/settings/display/LiftToWakePreferenceController.java b/src/com/android/settings/display/LiftToWakePreferenceController.java
index c518f68..81ba5f5 100644
--- a/src/com/android/settings/display/LiftToWakePreferenceController.java
+++ b/src/com/android/settings/display/LiftToWakePreferenceController.java
@@ -34,7 +34,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         SensorManager sensors = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
         return sensors != null && sensors.getDefaultSensor(Sensor.TYPE_WAKE_GESTURE) != null;
     }
diff --git a/src/com/android/settings/display/NightDisplayPreferenceController.java b/src/com/android/settings/display/NightDisplayPreferenceController.java
index c52df23..9cf2409 100644
--- a/src/com/android/settings/display/NightDisplayPreferenceController.java
+++ b/src/com/android/settings/display/NightDisplayPreferenceController.java
@@ -33,7 +33,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return NightDisplayController.isAvailable(mContext);
     }
 
diff --git a/src/com/android/settings/display/NightModePreferenceController.java b/src/com/android/settings/display/NightModePreferenceController.java
index c0f0c17..874d84f 100644
--- a/src/com/android/settings/display/NightModePreferenceController.java
+++ b/src/com/android/settings/display/NightModePreferenceController.java
@@ -35,7 +35,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return false;
     }
 
diff --git a/src/com/android/settings/display/ScreenSaverPreferenceController.java b/src/com/android/settings/display/ScreenSaverPreferenceController.java
index 64d9dec..7335b1f 100644
--- a/src/com/android/settings/display/ScreenSaverPreferenceController.java
+++ b/src/com/android/settings/display/ScreenSaverPreferenceController.java
@@ -28,7 +28,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mContext.getResources().getBoolean(
                 com.android.internal.R.bool.config_dreamsSupported);
     }
diff --git a/src/com/android/settings/display/TapToWakePreferenceController.java b/src/com/android/settings/display/TapToWakePreferenceController.java
index 4c5aaa0..18c877a 100644
--- a/src/com/android/settings/display/TapToWakePreferenceController.java
+++ b/src/com/android/settings/display/TapToWakePreferenceController.java
@@ -35,7 +35,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mContext.getResources().getBoolean(
                 com.android.internal.R.bool.config_supportDoubleTapWake);
     }
diff --git a/src/com/android/settings/display/TimeoutPreferenceController.java b/src/com/android/settings/display/TimeoutPreferenceController.java
index 8c73c31..d33f813 100644
--- a/src/com/android/settings/display/TimeoutPreferenceController.java
+++ b/src/com/android/settings/display/TimeoutPreferenceController.java
@@ -42,7 +42,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return true;
     }
 
diff --git a/src/com/android/settings/display/VrDisplayPreferenceController.java b/src/com/android/settings/display/VrDisplayPreferenceController.java
index 84d7462..61c3ed2 100644
--- a/src/com/android/settings/display/VrDisplayPreferenceController.java
+++ b/src/com/android/settings/display/VrDisplayPreferenceController.java
@@ -35,7 +35,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         final PackageManager pm = mContext.getPackageManager();
         return pm.hasSystemFeature(PackageManager.FEATURE_VR_MODE_HIGH_PERFORMANCE);
     }
diff --git a/src/com/android/settings/display/WallpaperPreferenceController.java b/src/com/android/settings/display/WallpaperPreferenceController.java
index 29415e9..8352377 100644
--- a/src/com/android/settings/display/WallpaperPreferenceController.java
+++ b/src/com/android/settings/display/WallpaperPreferenceController.java
@@ -32,7 +32,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return true;
     }
 
diff --git a/src/com/android/settings/fuelgauge/PowerUsageDetail.java b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
index 915cf74..b42547f 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageDetail.java
@@ -37,6 +37,7 @@
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.Preference.OnPreferenceClickListener;
 import android.support.v7.preference.PreferenceCategory;
+import android.support.v7.preference.PreferenceScreen;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.View;
@@ -53,6 +54,7 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.Utils;
 import com.android.settings.WirelessSettings;
+import com.android.settings.applications.AppHeaderController;
 import com.android.settings.applications.InstalledAppDetails;
 import com.android.settings.applications.LayoutPreference;
 import com.android.settings.bluetooth.BluetoothSettings;
@@ -462,13 +464,14 @@
     }
 
     private void setupHeader() {
+        final Activity activity = getActivity();
         final Bundle args = getArguments();
-        String title = args.getString(EXTRA_TITLE);
+        final String title = args.getString(EXTRA_TITLE);
+        final int iconId = args.getInt(EXTRA_ICON_ID, 0);
         String pkg = args.getString(EXTRA_ICON_PACKAGE);
-        int iconId = args.getInt(EXTRA_ICON_ID, 0);
         Drawable appIcon = null;
         int uid = -1;
-        final PackageManager pm = getActivity().getPackageManager();
+        final PackageManager pm = activity.getPackageManager();
 
         if (!TextUtils.isEmpty(pkg)) {
             try {
@@ -481,17 +484,38 @@
                 // Use default icon
             }
         } else if (iconId != 0) {
-            appIcon = getActivity().getDrawable(iconId);
+            appIcon = activity.getDrawable(iconId);
         }
         if (appIcon == null) {
-            appIcon = getActivity().getPackageManager().getDefaultActivityIcon();
+            appIcon = activity.getPackageManager().getDefaultActivityIcon();
         }
 
         if (pkg == null && mPackages != null) {
             pkg = mPackages[0];
         }
-        AppHeader.createAppHeader(this, appIcon, title, pkg, uid,
-                mDrainType != DrainType.APP ? android.R.color.white : 0);
+        if (!FeatureFactory.getFactory(activity)
+                .getDashboardFeatureProvider(activity).isEnabled()) {
+            AppHeader.createAppHeader(this, appIcon, title, pkg, uid,
+                    mDrainType != DrainType.APP ? android.R.color.white : 0);
+        } else {
+            final PreferenceScreen screen = getPreferenceScreen();
+            final Preference appHeaderPref =
+                    findPreference(AppHeaderController.PREF_KEY_APP_HEADER);
+            if (appHeaderPref != null) {
+                return;
+            }
+            final Preference pref = FeatureFactory.getFactory(activity)
+                    .getApplicationFeatureProvider(activity)
+                    .newAppHeaderController(this, null /* appHeader */)
+                    .setIcon(appIcon)
+                    .setLabel(title)
+                    .setPackageName(pkg)
+                    .setUid(uid)
+                    .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO,
+                            AppHeaderController.ActionType.ACTION_NONE)
+                    .done(getPrefContext());
+            screen.addPreference(pref);
+        }
     }
 
     public void onClick(View v) {
diff --git a/src/com/android/settings/gestures/GestureSettings.java b/src/com/android/settings/gestures/GestureSettings.java
index 6fc7abe..c68d922 100644
--- a/src/com/android/settings/gestures/GestureSettings.java
+++ b/src/com/android/settings/gestures/GestureSettings.java
@@ -34,9 +34,9 @@
 import com.android.internal.hardware.AmbientDisplayConfiguration;
 import com.android.internal.logging.MetricsProto.MetricsEvent;
 import com.android.settings.R;
+import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
-import com.android.settings.SettingsPreferenceFragment;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -53,11 +53,11 @@
     private static final String PREF_KEY_DOUBLE_TAP_POWER = "gesture_double_tap_power";
     private static final String PREF_KEY_DOUBLE_TWIST = "gesture_double_twist";
     private static final String PREF_KEY_PICK_UP = "gesture_pick_up";
-    private static final String PREF_KEY_SWIPE_DOWN_FINGERPRINT = "gesture_swipe_down_fingerprint";
     private static final String PREF_KEY_DOUBLE_TAP_SCREEN = "gesture_double_tap_screen";
     private static final String DEBUG_DOZE_COMPONENT = "debug.doze.component";
 
     private List<GesturePreference> mPreferences;
+    private SwipeToNotificationPreferenceController mSwipeToNotificationPreferenceController;
 
     private AmbientDisplayConfiguration mAmbientConfig;
 
@@ -66,6 +66,8 @@
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.gesture_settings);
         Context context = getActivity();
+        mSwipeToNotificationPreferenceController =
+                new SwipeToNotificationPreferenceController(context);
         mPreferences = new ArrayList();
 
         // Double tap power for camera
@@ -93,11 +95,7 @@
         }
 
         // Fingerprint slide for notifications
-        if (isSystemUINavigationAvailable(context)) {
-            addPreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT, isSystemUINavigationEnabled(context));
-        } else {
-            removePreference(PREF_KEY_SWIPE_DOWN_FINGERPRINT);
-        }
+        mSwipeToNotificationPreferenceController.displayPreference(getPreferenceScreen());
 
         // Double twist for camera mode
         if (isDoubleTwistAvailable(context)) {
@@ -112,7 +110,7 @@
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
-                             Bundle savedInstanceState) {
+            Bundle savedInstanceState) {
         View view = super.onCreateView(inflater, container, savedInstanceState);
         RecyclerView listview = getListView();
         listview.addOnScrollListener(new RecyclerView.OnScrollListener() {
@@ -137,6 +135,13 @@
     }
 
     @Override
+    public void onResume() {
+        super.onResume();
+        mSwipeToNotificationPreferenceController.updateState(
+                findPreference(mSwipeToNotificationPreferenceController.getPreferenceKey()));
+    }
+
+    @Override
     public void onStart() {
         super.onStart();
         for (GesturePreference preference : mPreferences) {
@@ -163,9 +168,6 @@
             Secure.putInt(getContentResolver(), Secure.DOZE_PULSE_ON_PICK_UP, enabled ? 1 : 0);
         } else if (PREF_KEY_DOUBLE_TAP_SCREEN.equals(key)) {
             Secure.putInt(getContentResolver(), Secure.DOZE_PULSE_ON_DOUBLE_TAP, enabled ? 1 : 0);
-        } else if (PREF_KEY_SWIPE_DOWN_FINGERPRINT.equals(key)) {
-            Secure.putInt(getContentResolver(),
-                    Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, enabled ? 1 : 0);
         } else if (PREF_KEY_DOUBLE_TWIST.equals(key)) {
             Secure.putInt(getContentResolver(),
                     Secure.CAMERA_DOUBLE_TWIST_TO_FLIP_ENABLED, enabled ? 1 : 0);
@@ -188,16 +190,6 @@
                 com.android.internal.R.bool.config_cameraDoubleTapPowerGestureEnabled);
     }
 
-    private static boolean isSystemUINavigationAvailable(Context context) {
-        return context.getResources().getBoolean(
-                com.android.internal.R.bool.config_supportSystemNavigationKeys);
-    }
-
-    private static boolean isSystemUINavigationEnabled(Context context) {
-        return Secure.getInt(context.getContentResolver(), Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 0)
-                == 1;
-    }
-
     private static boolean isDoubleTwistAvailable(Context context) {
         return hasSensor(context, R.string.gesture_double_twist_sensor_name,
                 R.string.gesture_double_twist_sensor_vendor);
@@ -227,42 +219,41 @@
     }
 
     public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-        new BaseSearchIndexProvider() {
-            @Override
-            public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
-                     boolean enabled) {
-                ArrayList<SearchIndexableResource> result =
-                        new ArrayList<SearchIndexableResource>();
+            new BaseSearchIndexProvider() {
+                @Override
+                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
+                        boolean enabled) {
+                    ArrayList<SearchIndexableResource> result =
+                            new ArrayList<SearchIndexableResource>();
 
-                SearchIndexableResource sir = new SearchIndexableResource(context);
-                sir.xmlResId = R.xml.gesture_settings;
-                result.add(sir);
+                    SearchIndexableResource sir = new SearchIndexableResource(context);
+                    sir.xmlResId = R.xml.gesture_settings;
+                    result.add(sir);
 
-                return result;
-            }
+                    return result;
+                }
 
-            @Override
-            public List<String> getNonIndexableKeys(Context context) {
-                ArrayList<String> result = new ArrayList<String>();
-                AmbientDisplayConfiguration ambientConfig
-                        = new AmbientDisplayConfiguration(context);
-                if (!isCameraDoubleTapPowerGestureAvailable(context.getResources())) {
-                    result.add(PREF_KEY_DOUBLE_TAP_POWER);
+                @Override
+                public List<String> getNonIndexableKeys(Context context) {
+                    ArrayList<String> result = new ArrayList<String>();
+                    AmbientDisplayConfiguration ambientConfig
+                            = new AmbientDisplayConfiguration(context);
+                    if (!isCameraDoubleTapPowerGestureAvailable(context.getResources())) {
+                        result.add(PREF_KEY_DOUBLE_TAP_POWER);
+                    }
+                    if (!ambientConfig.pulseOnPickupAvailable()) {
+                        result.add(PREF_KEY_PICK_UP);
+                    }
+                    if (!ambientConfig.pulseOnDoubleTapAvailable()) {
+                        result.add(PREF_KEY_DOUBLE_TAP_SCREEN);
+                    }
+                    new SwipeToNotificationPreferenceController(context)
+                            .updateNonIndexableKeys(result);
+                    if (!isDoubleTwistAvailable(context)) {
+                        result.add(PREF_KEY_DOUBLE_TWIST);
+                    }
+                    return result;
                 }
-                if (!ambientConfig.pulseOnPickupAvailable()) {
-                    result.add(PREF_KEY_PICK_UP);
-                }
-                if (!ambientConfig.pulseOnDoubleTapAvailable()) {
-                    result.add(PREF_KEY_DOUBLE_TAP_SCREEN);
-                }
-                if (!isSystemUINavigationAvailable(context)) {
-                    result.add(PREF_KEY_SWIPE_DOWN_FINGERPRINT);
-                }
-                if (!isDoubleTwistAvailable(context)) {
-                    result.add(PREF_KEY_DOUBLE_TWIST);
-                }
-                return result;
-            }
-        };
+            };
 
 }
diff --git a/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
new file mode 100644
index 0000000..353eed8
--- /dev/null
+++ b/src/com/android/settings/gestures/SwipeToNotificationPreferenceController.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2016 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.gestures;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.TwoStatePreference;
+
+import com.android.settings.core.PreferenceController;
+
+public class SwipeToNotificationPreferenceController extends PreferenceController
+        implements Preference.OnPreferenceChangeListener {
+
+    private static final String PREF_KEY_SWIPE_DOWN_FINGERPRINT = "gesture_swipe_down_fingerprint";
+
+    public SwipeToNotificationPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return PREF_KEY_SWIPE_DOWN_FINGERPRINT;
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+        if (preference != null && preference instanceof TwoStatePreference) {
+            ((TwoStatePreference) preference).setChecked(isSystemUINavigationEnabled());
+        }
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return mContext.getResources().getBoolean(
+                com.android.internal.R.bool.config_supportSystemNavigationKeys);
+    }
+
+    private boolean isSystemUINavigationEnabled() {
+        return Settings.Secure.getInt(mContext.getContentResolver(),
+                Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, 0)
+                == 1;
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        Settings.Secure.putInt(mContext.getContentResolver(),
+                Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED, (boolean) newValue ? 1 : 0);
+        return true;
+    }
+}
diff --git a/src/com/android/settings/network/AirplaneModePreferenceController.java b/src/com/android/settings/network/AirplaneModePreferenceController.java
index bd1918f..a25c5f8 100644
--- a/src/com/android/settings/network/AirplaneModePreferenceController.java
+++ b/src/com/android/settings/network/AirplaneModePreferenceController.java
@@ -87,7 +87,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return !mPackageManager.hasSystemFeature(PackageManager.FEATURE_TELEVISION);
     }
 
diff --git a/src/com/android/settings/network/MobileNetworkPreferenceController.java b/src/com/android/settings/network/MobileNetworkPreferenceController.java
index 14dcf9e..588d80c 100644
--- a/src/com/android/settings/network/MobileNetworkPreferenceController.java
+++ b/src/com/android/settings/network/MobileNetworkPreferenceController.java
@@ -45,7 +45,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return !mIsSecondaryUser
                 && !Utils.isWifiOnly(mContext)
                 && !hasBaseUserRestriction(mContext, DISALLOW_CONFIG_MOBILE_NETWORKS, myUserId());
diff --git a/src/com/android/settings/network/MobilePlanPreferenceController.java b/src/com/android/settings/network/MobilePlanPreferenceController.java
index 8dfff15..42b2bea 100644
--- a/src/com/android/settings/network/MobilePlanPreferenceController.java
+++ b/src/com/android/settings/network/MobilePlanPreferenceController.java
@@ -111,7 +111,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         final boolean isPrefAllowedOnDevice = mContext.getResources().getBoolean(
                 com.android.settings.R.bool.config_show_mobile_plan);
         final boolean isPrefAllowedForUser = !mIsSecondaryUser
diff --git a/src/com/android/settings/network/NetworkResetPreferenceController.java b/src/com/android/settings/network/NetworkResetPreferenceController.java
index b313cc0..2842139 100644
--- a/src/com/android/settings/network/NetworkResetPreferenceController.java
+++ b/src/com/android/settings/network/NetworkResetPreferenceController.java
@@ -37,7 +37,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return !RestrictedLockUtils.hasBaseUserRestriction(mContext,
                 UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId());
     }
diff --git a/src/com/android/settings/network/ProxyPreferenceController.java b/src/com/android/settings/network/ProxyPreferenceController.java
index 5feb5d0..54b8ca9 100644
--- a/src/com/android/settings/network/ProxyPreferenceController.java
+++ b/src/com/android/settings/network/ProxyPreferenceController.java
@@ -36,7 +36,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         // proxy UI disabled until we have better app support
         return false;
     }
diff --git a/src/com/android/settings/network/TetherPreferenceController.java b/src/com/android/settings/network/TetherPreferenceController.java
index 96f037b..f6ef678 100644
--- a/src/com/android/settings/network/TetherPreferenceController.java
+++ b/src/com/android/settings/network/TetherPreferenceController.java
@@ -67,7 +67,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         final boolean isBlocked =
                 (!mConnectivityManager.isTetheringSupported() && !mAdminDisallowedTetherConfig)
                         || hasBaseUserRestriction(mContext, DISALLOW_CONFIG_TETHERING,
diff --git a/src/com/android/settings/network/VpnPreferenceController.java b/src/com/android/settings/network/VpnPreferenceController.java
index 0703ed3..146b400 100644
--- a/src/com/android/settings/network/VpnPreferenceController.java
+++ b/src/com/android/settings/network/VpnPreferenceController.java
@@ -58,9 +58,8 @@
     }
 
     @Override
-    protected boolean isAvailable() {
-        // TODO: http://b/23693383
-        return mIsSecondaryUser || RestrictedLockUtils.hasBaseUserRestriction(mContext,
+    public boolean isAvailable() {
+        return !RestrictedLockUtils.hasBaseUserRestriction(mContext,
                 UserManager.DISALLOW_CONFIG_VPN, UserHandle.myUserId());
     }
 
diff --git a/src/com/android/settings/network/WifiCallingPreferenceController.java b/src/com/android/settings/network/WifiCallingPreferenceController.java
index 61ab92e..5036c46 100644
--- a/src/com/android/settings/network/WifiCallingPreferenceController.java
+++ b/src/com/android/settings/network/WifiCallingPreferenceController.java
@@ -50,7 +50,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return ImsManager.isWfcEnabledByPlatform(mContext)
                 && ImsManager.isWfcProvisionedOnDevice(mContext);
     }
diff --git a/src/com/android/settings/nfc/NfcPreferenceController.java b/src/com/android/settings/nfc/NfcPreferenceController.java
index b7cd702..6303d5b 100644
--- a/src/com/android/settings/nfc/NfcPreferenceController.java
+++ b/src/com/android/settings/nfc/NfcPreferenceController.java
@@ -101,7 +101,7 @@
     }
 
     @Override
-    protected boolean isAvailable() {
+    public boolean isAvailable() {
         return mNfcAdapter != null;
     }
 
diff --git a/src/com/android/settings/notification/AppNotificationSettings.java b/src/com/android/settings/notification/AppNotificationSettings.java
index c09557f..8e47af5 100644
--- a/src/com/android/settings/notification/AppNotificationSettings.java
+++ b/src/com/android/settings/notification/AppNotificationSettings.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.notification;
 
+import android.app.Activity;
 import android.app.Notification;
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
@@ -24,6 +25,7 @@
 import android.content.pm.ApplicationInfo;
 import android.content.pm.ResolveInfo;
 import android.os.Bundle;
+import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceCategory;
 import android.util.ArrayMap;
 import android.util.Log;
@@ -32,12 +34,14 @@
 import com.android.settings.AppHeader;
 import com.android.settings.R;
 import com.android.settings.Utils;
+import com.android.settings.applications.AppHeaderController;
 import com.android.settings.applications.AppInfoBase;
+import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.notification.NotificationBackend.AppRow;
+import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.RestrictedPreference;
 import com.android.settingslib.RestrictedSwitchPreference;
 
-
 import java.util.List;
 
 /** These settings are per app, so should not be returned in global search results. */
@@ -50,15 +54,20 @@
                 .addCategory(Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES);
 
     private static final String KEY_CHANNELS = "channels";
+
+    private DashboardFeatureProvider mDashboardFeatureProvider;
     private PreferenceCategory mChannels;
-    List<NotificationChannel> mChannelList;
+    private List<NotificationChannel> mChannelList;
+
 
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
         if (mAppRow == null) return;
-        AppHeader.createAppHeader(this, mAppRow.icon, mAppRow.label, mAppRow.pkg, mAppRow.uid,
-                mAppRow.settingsIntent);
+        if (!mDashboardFeatureProvider.isEnabled()) {
+            AppHeader.createAppHeader(this, mAppRow.icon, mAppRow.label, mAppRow.pkg, mAppRow.uid,
+                    mAppRow.settingsIntent);
+        }
     }
 
     @Override
@@ -69,8 +78,12 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        final Activity activity = getActivity();
+        mDashboardFeatureProvider =
+                FeatureFactory.getFactory(activity).getDashboardFeatureProvider(activity);
 
         addPreferencesFromResource(R.xml.app_notification_settings);
+
         mImportance = (ImportanceSeekBarPreference) findPreference(KEY_IMPORTANCE);
         mPriority =
                 (RestrictedSwitchPreference) getPreferenceScreen().findPreference(KEY_BYPASS_DND);
@@ -89,7 +102,7 @@
             mChannelList = mBackend.getChannels(mPkg, mUid).getList();
 
             setupImportancePrefs(mAppRow.systemApp, mAppRow.appImportance, mAppRow.banned,
-                    NotificationManager.IMPORTANCE_MAX);
+                    NotificationManager.IMPORTANCE_HIGH);
             setupPriorityPref(mAppRow.appBypassDnd);
             setupVisOverridePref(mAppRow.appVisOverride);
 
@@ -118,6 +131,20 @@
             }
             updateDependents(mAppRow.appImportance);
         }
+        if (mDashboardFeatureProvider.isEnabled()) {
+            final Preference pref = FeatureFactory.getFactory(activity)
+                    .getApplicationFeatureProvider(activity)
+                    .newAppHeaderController(this /* fragment */, null /* appHeader */)
+                    .setIcon(mAppRow.icon)
+                    .setLabel(mAppRow.label)
+                    .setPackageName(mAppRow.pkg)
+                    .setUid(mAppRow.uid)
+                    .setAppNotifPrefIntent(mAppRow.settingsIntent)
+                    .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO,
+                            AppHeaderController.ActionType.ACTION_NOTIF_PREFERENCE)
+                    .done(getPrefContext());
+            getPreferenceScreen().addPreference(pref);
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/notification/ChannelNotificationSettings.java b/src/com/android/settings/notification/ChannelNotificationSettings.java
index d323545..7f384a5 100644
--- a/src/com/android/settings/notification/ChannelNotificationSettings.java
+++ b/src/com/android/settings/notification/ChannelNotificationSettings.java
@@ -16,13 +16,8 @@
 
 package com.android.settings.notification;
 
-import com.android.internal.logging.MetricsProto.MetricsEvent;
-import com.android.settings.AppHeader;
-import com.android.settings.R;
-import com.android.settings.RingtonePreference;
-import com.android.settingslib.RestrictedLockUtils;
-import com.android.settingslib.RestrictedSwitchPreference;
-
+import android.app.Activity;
+import android.app.NotificationChannel;
 import android.app.NotificationManager;
 import android.content.Intent;
 import android.net.Uri;
@@ -30,6 +25,17 @@
 import android.provider.Settings;
 import android.service.notification.NotificationListenerService.Ranking;
 import android.support.v7.preference.Preference;
+import android.view.View;
+
+import com.android.internal.logging.MetricsProto.MetricsEvent;
+import com.android.settings.AppHeader;
+import com.android.settings.R;
+import com.android.settings.RingtonePreference;
+import com.android.settings.applications.AppHeaderController;
+import com.android.settings.dashboard.DashboardFeatureProvider;
+import com.android.settings.overlay.FeatureFactory;
+import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedSwitchPreference;
 
 public class ChannelNotificationSettings extends NotificationSettingsBase {
     protected static final String KEY_LIGHTS = "lights";
@@ -39,14 +45,18 @@
     protected RestrictedSwitchPreference mLights;
     protected RestrictedSwitchPreference mVibrate;
     protected DefaultNotificationTonePreference mRingtone;
+
+    private DashboardFeatureProvider mDashboardFeatureProvider;
     private int mMaxImportance;
 
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
         if (mAppRow == null || mChannel == null) return;
-        AppHeader.createAppHeader(
-                this, mAppRow.icon, mChannel.getName(), mAppRow.pkg, mAppRow.uid);
+        if (!mDashboardFeatureProvider.isEnabled()) {
+            AppHeader.createAppHeader(
+                    this, mAppRow.icon, mChannel.getName(), mAppRow.pkg, mAppRow.uid);
+        }
     }
 
     @Override
@@ -57,6 +67,9 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        final Activity activity = getActivity();
+        mDashboardFeatureProvider =
+                FeatureFactory.getFactory(activity).getDashboardFeatureProvider(activity);
         addPreferencesFromResource(R.xml.channel_notification_settings);
 
         mImportance = (ImportanceSeekBarPreference) findPreference(KEY_IMPORTANCE);
@@ -83,11 +96,25 @@
             setupVibrate();
             setupRingtone();
             mMaxImportance = mAppRow.appImportance == NotificationManager.IMPORTANCE_UNSPECIFIED
-                    ? NotificationManager.IMPORTANCE_MAX : mAppRow.appImportance;
+                    ? NotificationManager.IMPORTANCE_HIGH : mAppRow.appImportance;
             setupImportancePrefs(false, mChannel.getImportance(),
                     mChannel.getImportance() == NotificationManager.IMPORTANCE_NONE,
                     mMaxImportance);
         }
+        if (mDashboardFeatureProvider.isEnabled()) {
+            final Preference pref = FeatureFactory.getFactory(activity)
+                    .getApplicationFeatureProvider(activity)
+                    .newAppHeaderController(this /* fragment */, null /* appHeader */)
+                    .setIcon(mAppRow.icon)
+                    .setLabel(mAppRow.label)
+                    .setSummary(mChannel.getName())
+                    .setPackageName(mAppRow.pkg)
+                    .setUid(mAppRow.uid)
+                    .setButtonActions(AppHeaderController.ActionType.ACTION_APP_INFO,
+                            AppHeaderController.ActionType.ACTION_NONE)
+                    .done(getPrefContext());
+            getPreferenceScreen().addPreference(pref);
+        }
     }
 
     @Override
@@ -116,6 +143,7 @@
             public boolean onPreferenceChange(Preference preference, Object newValue) {
                 final boolean lights = (Boolean) newValue;
                 mChannel.setLights(lights);
+                mChannel.lockFields(NotificationChannel.USER_LOCKED_LIGHTS);
                 mBackend.updateChannel(mPkg, mUid, mChannel);
                 return true;
             }
@@ -130,6 +158,7 @@
             public boolean onPreferenceChange(Preference preference, Object newValue) {
                 final boolean vibrate = (Boolean) newValue;
                 mChannel.setVibration(vibrate);
+                mChannel.lockFields(NotificationChannel.USER_LOCKED_VIBRATION);
                 mBackend.updateChannel(mPkg, mUid, mChannel);
                 return true;
             }
@@ -137,13 +166,14 @@
     }
 
     private void setupRingtone() {
-        mRingtone.setRingtone(mChannel.getDefaultRingtone());
+        mRingtone.setRingtone(mChannel.getRingtone());
         mRingtone.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
             @Override
             public boolean onPreferenceChange(Preference preference, Object newValue) {
                 Uri ringtone = Uri.parse((String) newValue);
                 mRingtone.setRingtone(ringtone);
-                mChannel.setDefaultRingtone(ringtone);
+                mChannel.setRingtone(ringtone);
+                mChannel.lockFields(NotificationChannel.USER_LOCKED_RINGTONE);
                 mBackend.updateChannel(mPkg, mUid, mChannel);
                 return false;
             }
diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java
index 3f53ec9..1f322d0 100644
--- a/src/com/android/settings/notification/ConfigureNotificationSettings.java
+++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java
@@ -1,4 +1,4 @@
-/**
+/*
  * Copyright (C) 2015 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -16,54 +16,23 @@
 
 package com.android.settings.notification;
 
-import android.app.admin.DevicePolicyManager;
-import android.content.ContentResolver;
 import android.content.Context;
-import android.database.ContentObserver;
-import android.net.Uri;
 import android.os.Bundle;
-import android.os.Handler;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.Settings;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.Preference.OnPreferenceChangeListener;
-import android.support.v7.preference.TwoStatePreference;
-import android.util.Log;
+
 import com.android.internal.logging.MetricsProto.MetricsEvent;
-import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.R;
-import com.android.settings.RestrictedListPreference.RestrictedItem;
-import com.android.settings.SettingsPreferenceFragment;
-import com.android.settings.Utils;
-import com.android.settingslib.RestrictedLockUtils;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.gestures.SwipeToNotificationPreferenceController;
+import com.android.settings.overlay.FeatureFactory;
 
 import java.util.ArrayList;
+import java.util.List;
 
-import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS;
-import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS;
-import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
-
-public class ConfigureNotificationSettings extends SettingsPreferenceFragment {
+public class ConfigureNotificationSettings extends DashboardFragment {
     private static final String TAG = "ConfigNotiSettings";
 
-    private static final String KEY_NOTIFICATION_PULSE = "notification_pulse";
-    private static final String KEY_LOCK_SCREEN_NOTIFICATIONS = "lock_screen_notifications";
-    private static final String KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS =
-            "lock_screen_notifications_profile";
-
-    private final SettingsObserver mSettingsObserver = new SettingsObserver();
-
-    private Context mContext;
-
-    private TwoStatePreference mNotificationPulse;
-    private RestrictedDropDownPreference mLockscreen;
-    private RestrictedDropDownPreference mLockscreenProfile;
-    private boolean mSecure;
-    private boolean mSecureProfile;
-    private int mLockscreenSelectedValue;
-    private int mLockscreenSelectedValueProfile;
-    private int mProfileChallengeUserId;
+    private LockScreenNotificationPreferenceController mLockScreenNotificationController;
 
     @Override
     public int getMetricsCategory() {
@@ -71,310 +40,43 @@
     }
 
     @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        mContext = getActivity();
-        mProfileChallengeUserId = Utils.getManagedProfileId(
-                UserManager.get(mContext), UserHandle.myUserId());
-
-        final LockPatternUtils utils = new LockPatternUtils(getActivity());
-        final boolean isUnified =
-                !utils.isSeparateProfileChallengeEnabled(mProfileChallengeUserId);
-
-        mSecure = utils.isSecure(UserHandle.myUserId());
-        mSecureProfile = (mProfileChallengeUserId != UserHandle.USER_NULL)
-                && (utils.isSecure(mProfileChallengeUserId) || (isUnified && mSecure));
-
-        addPreferencesFromResource(R.xml.configure_notification_settings);
-
-        initPulse();
-        initLockscreenNotifications();
-
-        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
-            addPreferencesFromResource(R.xml.configure_notification_settings_profile);
-            initLockscreenNotificationsForProfile();
-        }
-
+    protected String getCategoryKey() {
+        return "";
     }
 
     @Override
-    public void onResume() {
-        super.onResume();
-        mSettingsObserver.register(true);
+    protected String getLogTag() {
+        return TAG;
     }
 
     @Override
-    public void onPause() {
-        super.onPause();
-        mSettingsObserver.register(false);
+    protected int getPreferenceScreenResId() {
+        return R.xml.configure_notification_settings;
     }
 
-    // === Pulse notification light ===
-
-    private void initPulse() {
-        mNotificationPulse =
-                (TwoStatePreference) getPreferenceScreen().findPreference(KEY_NOTIFICATION_PULSE);
-        if (mNotificationPulse == null) {
-            Log.i(TAG, "Preference not found: " + KEY_NOTIFICATION_PULSE);
-            return;
-        }
-        if (!getResources()
-                .getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed)) {
-            getPreferenceScreen().removePreference(mNotificationPulse);
-        } else {
-            updatePulse();
-            mNotificationPulse.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-                @Override
-                public boolean onPreferenceChange(Preference preference, Object newValue) {
-                    final boolean val = (Boolean)newValue;
-                    return Settings.System.putInt(getContentResolver(),
-                            Settings.System.NOTIFICATION_LIGHT_PULSE,
-                            val ? 1 : 0);
-                }
-            });
-        }
+    @Override
+    protected List<PreferenceController> getPreferenceControllers(Context context) {
+        final List<PreferenceController> controllers = new ArrayList<>();
+        final PulseNotificationPreferenceController pulseController =
+                new PulseNotificationPreferenceController(context);
+        mLockScreenNotificationController = new LockScreenNotificationPreferenceController(context);
+        getLifecycle().addObserver(pulseController);
+        getLifecycle().addObserver(mLockScreenNotificationController);
+        controllers.add(new SwipeToNotificationPreferenceController(context));
+        controllers.add(pulseController);
+        controllers.add(mLockScreenNotificationController);
+        return controllers;
     }
 
-    private void updatePulse() {
-        if (mNotificationPulse == null) {
-            return;
-        }
-        try {
-            mNotificationPulse.setChecked(Settings.System.getInt(getContentResolver(),
-                    Settings.System.NOTIFICATION_LIGHT_PULSE) == 1);
-        } catch (Settings.SettingNotFoundException snfe) {
-            Log.e(TAG, Settings.System.NOTIFICATION_LIGHT_PULSE + " not found");
-        }
-    }
-
-    private void initLockscreenNotifications() {
-        mLockscreen = (RestrictedDropDownPreference) getPreferenceScreen().findPreference(
-                KEY_LOCK_SCREEN_NOTIFICATIONS);
-        if (mLockscreen == null) {
-            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_NOTIFICATIONS);
-            return;
-        }
-
-        ArrayList<CharSequence> entries = new ArrayList<>();
-        ArrayList<CharSequence> values = new ArrayList<>();
-        entries.add(getString(R.string.lock_screen_notifications_summary_disable));
-        values.add(Integer.toString(R.string.lock_screen_notifications_summary_disable));
-
-        String summaryShowEntry = getString(R.string.lock_screen_notifications_summary_show);
-        String summaryShowEntryValue = Integer.toString(
-                R.string.lock_screen_notifications_summary_show);
-        entries.add(summaryShowEntry);
-        values.add(summaryShowEntryValue);
-        setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
-                KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
-
-        if (mSecure) {
-            String summaryHideEntry = getString(R.string.lock_screen_notifications_summary_hide);
-            String summaryHideEntryValue = Integer.toString(
-                    R.string.lock_screen_notifications_summary_hide);
-            entries.add(summaryHideEntry);
-            values.add(summaryHideEntryValue);
-            setRestrictedIfNotificationFeaturesDisabled(summaryHideEntry, summaryHideEntryValue,
-                    KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
-        }
-
-        mLockscreen.setEntries(entries.toArray(new CharSequence[entries.size()]));
-        mLockscreen.setEntryValues(values.toArray(new CharSequence[values.size()]));
-        updateLockscreenNotifications();
-        if (mLockscreen.getEntries().length > 1) {
-            mLockscreen.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-                @Override
-                public boolean onPreferenceChange(Preference preference, Object newValue) {
-                    final int val = Integer.parseInt((String) newValue);
-                    if (val == mLockscreenSelectedValue) {
-                        return false;
-                    }
-                    final boolean enabled =
-                            val != R.string.lock_screen_notifications_summary_disable;
-                    final boolean show = val == R.string.lock_screen_notifications_summary_show;
-                    Settings.Secure.putInt(getContentResolver(),
-                            Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, show ? 1 : 0);
-                    Settings.Secure.putInt(getContentResolver(),
-                            Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, enabled ? 1 : 0);
-                    mLockscreenSelectedValue = val;
-                    return true;
-                }
-            });
-        } else {
-            // There is one or less option for the user, disable the drop down.
-            mLockscreen.setEnabled(false);
-        }
-    }
-
-    // === Lockscreen (public / private) notifications ===
-    private void initLockscreenNotificationsForProfile() {
-        mLockscreenProfile = (RestrictedDropDownPreference) getPreferenceScreen()
-                .findPreference(KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
-        if (mLockscreenProfile == null) {
-            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
-            return;
-        }
-        ArrayList<CharSequence> entries = new ArrayList<>();
-        ArrayList<CharSequence> values = new ArrayList<>();
-        entries.add(getString(R.string.lock_screen_notifications_summary_disable_profile));
-        values.add(Integer.toString(R.string.lock_screen_notifications_summary_disable_profile));
-
-        String summaryShowEntry = getString(
-                R.string.lock_screen_notifications_summary_show_profile);
-        String summaryShowEntryValue = Integer.toString(
-                R.string.lock_screen_notifications_summary_show_profile);
-        entries.add(summaryShowEntry);
-        values.add(summaryShowEntryValue);
-        setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
-                KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
-
-        if (mSecureProfile) {
-            String summaryHideEntry = getString(
-                    R.string.lock_screen_notifications_summary_hide_profile);
-            String summaryHideEntryValue = Integer.toString(
-                    R.string.lock_screen_notifications_summary_hide_profile);
-            entries.add(summaryHideEntry);
-            values.add(summaryHideEntryValue);
-            setRestrictedIfNotificationFeaturesDisabled(summaryHideEntry, summaryHideEntryValue,
-                    KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
-        }
-
-        mLockscreenProfile.setOnPreClickListener(
-                (Preference p) -> Utils.startQuietModeDialogIfNecessary(mContext,
-                        UserManager.get(mContext),
-                        mProfileChallengeUserId)
-        );
-
-        mLockscreenProfile.setEntries(entries.toArray(new CharSequence[entries.size()]));
-        mLockscreenProfile.setEntryValues(values.toArray(new CharSequence[values.size()]));
-        updateLockscreenNotificationsForProfile();
-        if (mLockscreenProfile.getEntries().length > 1) {
-            mLockscreenProfile.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-                @Override
-                public boolean onPreferenceChange(Preference preference, Object newValue) {
-                    final int val = Integer.parseInt((String) newValue);
-                    if (val == mLockscreenSelectedValueProfile) {
-                        return false;
-                    }
-                    final boolean enabled =
-                            val != R.string.lock_screen_notifications_summary_disable_profile;
-                    final boolean show =
-                            val == R.string.lock_screen_notifications_summary_show_profile;
-                    Settings.Secure.putIntForUser(getContentResolver(),
-                            Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
-                            show ? 1 : 0, mProfileChallengeUserId);
-                    Settings.Secure.putIntForUser(getContentResolver(),
-                            Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
-                            enabled ? 1 : 0, mProfileChallengeUserId);
-                    mLockscreenSelectedValueProfile = val;
-                    return true;
-                }
-            });
-        } else {
-            // There is one or less option for the user, disable the drop down.
-            mLockscreenProfile.setEnabled(false);
-        }
-    }
-
-    private void setRestrictedIfNotificationFeaturesDisabled(CharSequence entry,
-            CharSequence entryValue, int keyguardNotificationFeatures) {
-        EnforcedAdmin admin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
-                mContext, keyguardNotificationFeatures, UserHandle.myUserId());
-        if (admin != null && mLockscreen != null) {
-            RestrictedDropDownPreference.RestrictedItem item =
-                    new RestrictedDropDownPreference.RestrictedItem(entry, entryValue, admin);
-            mLockscreen.addRestrictedItem(item);
-        }
-        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
-            EnforcedAdmin profileAdmin = RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
-                    mContext, keyguardNotificationFeatures, mProfileChallengeUserId);
-            if (profileAdmin != null && mLockscreenProfile != null) {
-                RestrictedDropDownPreference.RestrictedItem item =
-                        new RestrictedDropDownPreference.RestrictedItem(
-                                entry, entryValue, profileAdmin);
-                mLockscreenProfile.addRestrictedItem(item);
-            }
-        }
-    }
-
-    private void updateLockscreenNotifications() {
-        if (mLockscreen == null) {
-            return;
-        }
-        final boolean enabled = getLockscreenNotificationsEnabled(UserHandle.myUserId());
-        final boolean allowPrivate = !mSecure
-                || getLockscreenAllowPrivateNotifications(UserHandle.myUserId());
-        mLockscreenSelectedValue = !enabled ? R.string.lock_screen_notifications_summary_disable :
-                allowPrivate ? R.string.lock_screen_notifications_summary_show :
-                R.string.lock_screen_notifications_summary_hide;
-        mLockscreen.setValue(Integer.toString(mLockscreenSelectedValue));
-    }
-
-    private void updateLockscreenNotificationsForProfile() {
-        if (mProfileChallengeUserId == UserHandle.USER_NULL) {
-            return;
-        }
-        if (mLockscreenProfile == null) {
-            return;
-        }
-        final boolean enabled = getLockscreenNotificationsEnabled(mProfileChallengeUserId);
-        final boolean allowPrivate = !mSecureProfile
-                || getLockscreenAllowPrivateNotifications(mProfileChallengeUserId);
-        mLockscreenSelectedValueProfile = !enabled
-                ? R.string.lock_screen_notifications_summary_disable_profile
-                        : (allowPrivate ? R.string.lock_screen_notifications_summary_show_profile
-                                : R.string.lock_screen_notifications_summary_hide_profile);
-        mLockscreenProfile.setValue(Integer.toString(mLockscreenSelectedValueProfile));
-    }
-
-    private boolean getLockscreenNotificationsEnabled(int userId) {
-        return Settings.Secure.getIntForUser(getContentResolver(),
-                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 0, userId) != 0;
-    }
-
-    private boolean getLockscreenAllowPrivateNotifications(int userId) {
-        return Settings.Secure.getIntForUser(getContentResolver(),
-                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, userId) != 0;
-    }
-
-
-    // === Callbacks ===
-
-    private final class SettingsObserver extends ContentObserver {
-        private final Uri NOTIFICATION_LIGHT_PULSE_URI =
-                Settings.System.getUriFor(Settings.System.NOTIFICATION_LIGHT_PULSE);
-        private final Uri LOCK_SCREEN_PRIVATE_URI =
-                Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
-        private final Uri LOCK_SCREEN_SHOW_URI =
-                Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS);
-
-        public SettingsObserver() {
-            super(new Handler());
-        }
-
-        public void register(boolean register) {
-            final ContentResolver cr = getContentResolver();
-            if (register) {
-                cr.registerContentObserver(NOTIFICATION_LIGHT_PULSE_URI, false, this);
-                cr.registerContentObserver(LOCK_SCREEN_PRIVATE_URI, false, this);
-                cr.registerContentObserver(LOCK_SCREEN_SHOW_URI, false, this);
-            } else {
-                cr.unregisterContentObserver(this);
-            }
-        }
-
-        @Override
-        public void onChange(boolean selfChange, Uri uri) {
-            super.onChange(selfChange, uri);
-            if (NOTIFICATION_LIGHT_PULSE_URI.equals(uri)) {
-                updatePulse();
-            }
-            if (LOCK_SCREEN_PRIVATE_URI.equals(uri) || LOCK_SCREEN_SHOW_URI.equals(uri)) {
-                updateLockscreenNotifications();
-                if (mProfileChallengeUserId != UserHandle.USER_NULL) {
-                    updateLockscreenNotificationsForProfile();
-                }
-            }
+    @Override
+    public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+        super.onCreatePreferences(savedInstanceState, rootKey);
+        final Context context = getContext();
+        if (!FeatureFactory.getFactory(context).getDashboardFeatureProvider(context).isEnabled()) {
+            final String prefKey = getPreferenceController(
+                    SwipeToNotificationPreferenceController.class)
+                    .getPreferenceKey();
+            removePreference(prefKey);
         }
     }
 }
diff --git a/src/com/android/settings/notification/ImportanceSeekBarPreference.java b/src/com/android/settings/notification/ImportanceSeekBarPreference.java
index 0617df9..568dc1c 100644
--- a/src/com/android/settings/notification/ImportanceSeekBarPreference.java
+++ b/src/com/android/settings/notification/ImportanceSeekBarPreference.java
@@ -19,6 +19,7 @@
 import com.android.settings.R;
 import com.android.settings.SeekBarPreference;
 
+import android.app.NotificationManager;
 import android.content.Context;
 import android.content.res.ColorStateList;
 import android.content.res.TypedArray;
@@ -119,12 +120,10 @@
     private void applyAuto(ImageView autoButton) {
         mAutoOn = !mAutoOn;
         if (!mAutoOn) {
-            setProgress(NotificationListenerService.Ranking.IMPORTANCE_DEFAULT);
-            mCallback.onImportanceChanged(
-                    NotificationListenerService.Ranking.IMPORTANCE_DEFAULT, true);
+            setProgress(NotificationManager.IMPORTANCE_DEFAULT);
+            mCallback.onImportanceChanged(NotificationManager.IMPORTANCE_DEFAULT, true);
         } else {
-            mCallback.onImportanceChanged(
-                    NotificationListenerService.Ranking.IMPORTANCE_UNSPECIFIED, true);
+            mCallback.onImportanceChanged(NotificationManager.IMPORTANCE_UNSPECIFIED, true);
         }
         applyAutoUi(autoButton);
     }
@@ -140,9 +139,8 @@
         mSeekBar.setAlpha(alpha);
 
         if (mAutoOn) {
-            setProgress(NotificationListenerService.Ranking.IMPORTANCE_DEFAULT);
-            mSummary = getProgressSummary(
-                    NotificationListenerService.Ranking.IMPORTANCE_UNSPECIFIED);
+            setProgress(NotificationManager.IMPORTANCE_DEFAULT);
+            mSummary = getProgressSummary(NotificationManager.IMPORTANCE_UNSPECIFIED);
         }
         mSummaryTextView.setText(mSummary);
     }
@@ -168,18 +166,17 @@
 
     private String getProgressSummary(int progress) {
         switch (progress) {
-            case NotificationListenerService.Ranking.IMPORTANCE_NONE:
+            case NotificationManager.IMPORTANCE_NONE:
                 return getContext().getString(R.string.notification_importance_blocked);
-            case NotificationListenerService.Ranking.IMPORTANCE_MIN:
+            case NotificationManager.IMPORTANCE_MIN:
                 return getContext().getString(R.string.notification_importance_min);
-            case NotificationListenerService.Ranking.IMPORTANCE_LOW:
+            case NotificationManager.IMPORTANCE_LOW:
                 return getContext().getString(R.string.notification_importance_low);
-            case NotificationListenerService.Ranking.IMPORTANCE_DEFAULT:
+            case NotificationManager.IMPORTANCE_DEFAULT:
                 return getContext().getString(R.string.notification_importance_default);
-            case NotificationListenerService.Ranking.IMPORTANCE_HIGH:
+            case NotificationManager.IMPORTANCE_HIGH:
+            case NotificationManager.IMPORTANCE_MAX:
                 return getContext().getString(R.string.notification_importance_high);
-            case NotificationListenerService.Ranking.IMPORTANCE_MAX:
-                return getContext().getString(R.string.notification_importance_max);
             default:
                 return getContext().getString(R.string.notification_importance_unspecified);
         }
diff --git a/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
new file mode 100644
index 0000000..15f8c9f
--- /dev/null
+++ b/src/com/android/settings/notification/LockScreenNotificationPreferenceController.java
@@ -0,0 +1,346 @@
+/*
+ * Copyright (C) 2016 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.notification;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.util.Log;
+
+import com.android.internal.widget.LockPatternUtils;
+import com.android.settings.R;
+import com.android.settings.Utils;
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnPause;
+import com.android.settings.core.lifecycle.events.OnResume;
+import com.android.settingslib.RestrictedLockUtils;
+
+import java.util.ArrayList;
+
+import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS;
+import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS;
+
+public class LockScreenNotificationPreferenceController extends PreferenceController implements
+        Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {
+
+    private static final String TAG = "LockScreenNotifPref";
+    private static final String KEY_LOCK_SCREEN_NOTIFICATIONS = "lock_screen_notifications";
+    private static final String KEY_LOCK_SCREEN_PROFILE_HEADER =
+            "lock_screen_notifications_profile_header";
+    private static final String KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS =
+            "lock_screen_notifications_profile";
+
+    private RestrictedDropDownPreference mLockscreen;
+    private RestrictedDropDownPreference mLockscreenProfile;
+
+    private final int mProfileChallengeUserId;
+    private final boolean mSecure;
+    private final boolean mSecureProfile;
+
+    private SettingObserver mSettingObserver;
+    private int mLockscreenSelectedValue;
+    private int mLockscreenSelectedValueProfile;
+
+    public LockScreenNotificationPreferenceController(Context context) {
+        super(context);
+        mProfileChallengeUserId = Utils.getManagedProfileId(
+                UserManager.get(context), UserHandle.myUserId());
+        final LockPatternUtils utils = new LockPatternUtils(context);
+        final boolean isUnified =
+                !utils.isSeparateProfileChallengeEnabled(mProfileChallengeUserId);
+        mSecure = utils.isSecure(UserHandle.myUserId());
+        mSecureProfile = (mProfileChallengeUserId != UserHandle.USER_NULL)
+                && (utils.isSecure(mProfileChallengeUserId) || (isUnified && mSecure));
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mLockscreen =
+                (RestrictedDropDownPreference) screen.findPreference(KEY_LOCK_SCREEN_NOTIFICATIONS);
+        if (mLockscreen == null) {
+            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_NOTIFICATIONS);
+            return;
+        }
+        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
+            mLockscreenProfile = (RestrictedDropDownPreference) screen.findPreference(
+                    KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
+        } else {
+            removePreference(screen, KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
+            removePreference(screen, KEY_LOCK_SCREEN_PROFILE_HEADER);
+        }
+        mSettingObserver = new SettingObserver();
+        initLockScreenNotificationPrefDisplay();
+        initLockscreenNotificationPrefForProfile();
+    }
+
+    private void initLockScreenNotificationPrefDisplay() {
+        ArrayList<CharSequence> entries = new ArrayList<>();
+        ArrayList<CharSequence> values = new ArrayList<>();
+        entries.add(mContext.getString(R.string.lock_screen_notifications_summary_disable));
+        values.add(Integer.toString(R.string.lock_screen_notifications_summary_disable));
+
+        String summaryShowEntry =
+                mContext.getString(R.string.lock_screen_notifications_summary_show);
+        String summaryShowEntryValue =
+                Integer.toString(R.string.lock_screen_notifications_summary_show);
+        entries.add(summaryShowEntry);
+        values.add(summaryShowEntryValue);
+        setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
+                KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
+
+        if (mSecure) {
+            String summaryHideEntry =
+                    mContext.getString(R.string.lock_screen_notifications_summary_hide);
+            String summaryHideEntryValue =
+                    Integer.toString(R.string.lock_screen_notifications_summary_hide);
+            entries.add(summaryHideEntry);
+            values.add(summaryHideEntryValue);
+            setRestrictedIfNotificationFeaturesDisabled(summaryHideEntry, summaryHideEntryValue,
+                    KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
+        }
+
+        mLockscreen.setEntries(entries.toArray(new CharSequence[entries.size()]));
+        mLockscreen.setEntryValues(values.toArray(new CharSequence[values.size()]));
+        updateLockscreenNotifications();
+
+        if (mLockscreen.getEntries().length > 1) {
+            mLockscreen.setOnPreferenceChangeListener(this);
+        } else {
+            // There is one or less option for the user, disable the drop down.
+            mLockscreen.setEnabled(false);
+        }
+    }
+
+    private void initLockscreenNotificationPrefForProfile() {
+        if (mLockscreenProfile == null) {
+            Log.i(TAG, "Preference not found: " + KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS);
+            return;
+        }
+        ArrayList<CharSequence> entries = new ArrayList<>();
+        ArrayList<CharSequence> values = new ArrayList<>();
+        entries.add(mContext.getString(R.string.lock_screen_notifications_summary_disable_profile));
+        values.add(Integer.toString(R.string.lock_screen_notifications_summary_disable_profile));
+
+        String summaryShowEntry = mContext.getString(
+                R.string.lock_screen_notifications_summary_show_profile);
+        String summaryShowEntryValue = Integer.toString(
+                R.string.lock_screen_notifications_summary_show_profile);
+        entries.add(summaryShowEntry);
+        values.add(summaryShowEntryValue);
+        setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
+                KEYGUARD_DISABLE_SECURE_NOTIFICATIONS | KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS);
+
+        if (mSecureProfile) {
+            String summaryHideEntry = mContext.getString(
+                    R.string.lock_screen_notifications_summary_hide_profile);
+            String summaryHideEntryValue = Integer.toString(
+                    R.string.lock_screen_notifications_summary_hide_profile);
+            entries.add(summaryHideEntry);
+            values.add(summaryHideEntryValue);
+            setRestrictedIfNotificationFeaturesDisabled(summaryHideEntry, summaryHideEntryValue,
+                    KEYGUARD_DISABLE_SECURE_NOTIFICATIONS);
+        }
+        mLockscreenProfile.setOnPreClickListener(
+                (Preference p) -> Utils.startQuietModeDialogIfNecessary(mContext,
+                        UserManager.get(mContext), mProfileChallengeUserId)
+        );
+
+        mLockscreenProfile.setEntries(entries.toArray(new CharSequence[entries.size()]));
+        mLockscreenProfile.setEntryValues(values.toArray(new CharSequence[values.size()]));
+        updateLockscreenNotificationsForProfile();
+        if (mLockscreenProfile.getEntries().length > 1) {
+            mLockscreenProfile.setOnPreferenceChangeListener(this);
+        } else {
+            // There is one or less option for the user, disable the drop down.
+            mLockscreenProfile.setEnabled(false);
+        }
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return null;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return false;
+    }
+
+    @Override
+    public void onResume() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver(), true /* register */);
+        }
+    }
+
+    @Override
+    public void onPause() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver(), false /* register */);
+        }
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        switch (preference.getKey()) {
+            case KEY_LOCK_SCREEN_PROFILE_NOTIFICATIONS: {
+                final int val = Integer.parseInt((String) newValue);
+                if (val == mLockscreenSelectedValueProfile) {
+                    return false;
+                }
+                final boolean enabled =
+                        val != R.string.lock_screen_notifications_summary_disable_profile;
+                final boolean show =
+                        val == R.string.lock_screen_notifications_summary_show_profile;
+                Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                        Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,
+                        show ? 1 : 0, mProfileChallengeUserId);
+                Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                        Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,
+                        enabled ? 1 : 0, mProfileChallengeUserId);
+                mLockscreenSelectedValueProfile = val;
+                return true;
+            }
+            case KEY_LOCK_SCREEN_NOTIFICATIONS: {
+                final int val = Integer.parseInt((String) newValue);
+                if (val == mLockscreenSelectedValue) {
+                    return false;
+                }
+                final boolean enabled =
+                        val != R.string.lock_screen_notifications_summary_disable;
+                final boolean show = val == R.string.lock_screen_notifications_summary_show;
+                Settings.Secure.putInt(mContext.getContentResolver(),
+                        Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, show ? 1 : 0);
+                Settings.Secure.putInt(mContext.getContentResolver(),
+                        Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, enabled ? 1 : 0);
+                mLockscreenSelectedValue = val;
+                return true;
+            }
+            default:
+                return false;
+        }
+    }
+
+    private void setRestrictedIfNotificationFeaturesDisabled(CharSequence entry,
+            CharSequence entryValue, int keyguardNotificationFeatures) {
+        RestrictedLockUtils.EnforcedAdmin admin =
+                RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
+                        mContext, keyguardNotificationFeatures, UserHandle.myUserId());
+        if (admin != null && mLockscreen != null) {
+            RestrictedDropDownPreference.RestrictedItem item =
+                    new RestrictedDropDownPreference.RestrictedItem(entry, entryValue, admin);
+            mLockscreen.addRestrictedItem(item);
+        }
+        if (mProfileChallengeUserId != UserHandle.USER_NULL) {
+            RestrictedLockUtils.EnforcedAdmin profileAdmin =
+                    RestrictedLockUtils.checkIfKeyguardFeaturesDisabled(
+                            mContext, keyguardNotificationFeatures, mProfileChallengeUserId);
+            if (profileAdmin != null && mLockscreenProfile != null) {
+                RestrictedDropDownPreference.RestrictedItem item =
+                        new RestrictedDropDownPreference.RestrictedItem(
+                                entry, entryValue, profileAdmin);
+                mLockscreenProfile.addRestrictedItem(item);
+            }
+        }
+    }
+
+    private void updateLockscreenNotifications() {
+        if (mLockscreen == null) {
+            return;
+        }
+        final boolean enabled = getLockscreenNotificationsEnabled(UserHandle.myUserId());
+        final boolean allowPrivate = !mSecure
+                || getLockscreenAllowPrivateNotifications(UserHandle.myUserId());
+        mLockscreenSelectedValue = !enabled ? R.string.lock_screen_notifications_summary_disable :
+                allowPrivate ? R.string.lock_screen_notifications_summary_show :
+                        R.string.lock_screen_notifications_summary_hide;
+        mLockscreen.setValue(Integer.toString(mLockscreenSelectedValue));
+    }
+
+    private void updateLockscreenNotificationsForProfile() {
+        if (mProfileChallengeUserId == UserHandle.USER_NULL) {
+            return;
+        }
+        if (mLockscreenProfile == null) {
+            return;
+        }
+        final boolean enabled = getLockscreenNotificationsEnabled(mProfileChallengeUserId);
+        final boolean allowPrivate = !mSecureProfile
+                || getLockscreenAllowPrivateNotifications(mProfileChallengeUserId);
+        mLockscreenSelectedValueProfile = !enabled
+                ? R.string.lock_screen_notifications_summary_disable_profile
+                : (allowPrivate ? R.string.lock_screen_notifications_summary_show_profile
+                        : R.string.lock_screen_notifications_summary_hide_profile);
+        mLockscreenProfile.setValue(Integer.toString(mLockscreenSelectedValueProfile));
+    }
+
+    private boolean getLockscreenNotificationsEnabled(int userId) {
+        return Settings.Secure.getIntForUser(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS, 0, userId) != 0;
+    }
+
+    private boolean getLockscreenAllowPrivateNotifications(int userId) {
+        return Settings.Secure.getIntForUser(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, userId) != 0;
+    }
+
+    class SettingObserver extends ContentObserver {
+
+        private final Uri LOCK_SCREEN_PRIVATE_URI =
+                Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS);
+        private final Uri LOCK_SCREEN_SHOW_URI =
+                Settings.Secure.getUriFor(Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS);
+
+        public SettingObserver() {
+            super(new Handler());
+        }
+
+        public void register(ContentResolver cr, boolean register) {
+            if (register) {
+                cr.registerContentObserver(LOCK_SCREEN_PRIVATE_URI, false, this);
+                cr.registerContentObserver(LOCK_SCREEN_SHOW_URI, false, this);
+            } else {
+                cr.unregisterContentObserver(this);
+            }
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            super.onChange(selfChange, uri);
+            if (LOCK_SCREEN_PRIVATE_URI.equals(uri) || LOCK_SCREEN_SHOW_URI.equals(uri)) {
+                updateLockscreenNotifications();
+                if (mProfileChallengeUserId != UserHandle.USER_NULL) {
+                    updateLockscreenNotificationsForProfile();
+                }
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/notification/NotificationBackend.java b/src/com/android/settings/notification/NotificationBackend.java
index 32eacc6..5d69203 100644
--- a/src/com/android/settings/notification/NotificationBackend.java
+++ b/src/com/android/settings/notification/NotificationBackend.java
@@ -18,6 +18,7 @@
 import android.app.INotificationManager;
 import android.app.Notification;
 import android.app.NotificationChannel;
+import android.app.NotificationManager;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
@@ -139,7 +140,7 @@
             return sINM.getImportance(pkg, uid);
         } catch (Exception e) {
             Log.w(TAG, "Error calling NoMan", e);
-            return NotificationListenerService.Ranking.IMPORTANCE_UNSPECIFIED;
+            return NotificationManager.IMPORTANCE_UNSPECIFIED;
         }
     }
 
diff --git a/src/com/android/settings/notification/NotificationSettingsBase.java b/src/com/android/settings/notification/NotificationSettingsBase.java
index 0925833..5d6f598 100644
--- a/src/com/android/settings/notification/NotificationSettingsBase.java
+++ b/src/com/android/settings/notification/NotificationSettingsBase.java
@@ -178,16 +178,18 @@
             setVisible(mSilent, false);
             mImportance.setDisabledByAdmin(mSuspendedAppsAdmin);
             mImportance.setMinimumProgress(
-                    notBlockable ? Ranking.IMPORTANCE_MIN : Ranking.IMPORTANCE_NONE);
+                    notBlockable ? NotificationManager.IMPORTANCE_MIN
+                            : NotificationManager.IMPORTANCE_NONE);
             mImportance.setMax(maxImportance);
             mImportance.setProgress(Math.min(importance, maxImportance));
-            mImportance.setAutoOn(importance == Ranking.IMPORTANCE_UNSPECIFIED);
+            mImportance.setAutoOn(importance == NotificationManager.IMPORTANCE_UNSPECIFIED);
             mImportance.setCallback(new ImportanceSeekBarPreference.Callback() {
                 @Override
                 public void onImportanceChanged(int progress, boolean fromUser) {
                     if (fromUser) {
                         if (mChannel != null) {
                             mChannel.setImportance(progress);
+                            mChannel.lockFields(NotificationChannel.USER_LOCKED_IMPORTANCE);
                             mBackend.updateChannel(mPkg, mUid, mChannel);
                         } else {
                             mBackend.setImportance(mPkg, mUid, progress);
@@ -209,10 +211,11 @@
                                     Object newValue) {
                                 final boolean blocked = (Boolean) newValue;
                                 final int importance = blocked
-                                        ? Ranking.IMPORTANCE_NONE
-                                        : Ranking.IMPORTANCE_UNSPECIFIED;
+                                        ? NotificationManager.IMPORTANCE_NONE
+                                        : NotificationManager.IMPORTANCE_UNSPECIFIED;
                                 if (mChannel != null) {
                                     mChannel.setImportance(importance);
+                                    mChannel.lockFields(NotificationChannel.USER_LOCKED_IMPORTANCE);
                                     mBackend.updateChannel(mPkg, mUid, mChannel);
                                 } else {
                                     mBackend.setImportance(mPkgInfo.packageName, mUid,
@@ -226,9 +229,10 @@
             // app silenced; cannot un-silence a channel
             if (maxImportance == NotificationManager.IMPORTANCE_LOW) {
                 setVisible(mSilent, false);
-                updateDependents(banned ? Ranking.IMPORTANCE_NONE : Ranking.IMPORTANCE_LOW);
+                updateDependents(banned ? NotificationManager.IMPORTANCE_NONE
+                        : NotificationManager.IMPORTANCE_LOW);
             } else {
-                mSilent.setChecked(importance == Ranking.IMPORTANCE_LOW);
+                mSilent.setChecked(importance == NotificationManager.IMPORTANCE_LOW);
                 mSilent.setOnPreferenceChangeListener(
                         new Preference.OnPreferenceChangeListener() {
                             @Override
@@ -236,10 +240,11 @@
                                     Object newValue) {
                                 final boolean silenced = (Boolean) newValue;
                                 final int importance = silenced
-                                        ? Ranking.IMPORTANCE_LOW
-                                        : Ranking.IMPORTANCE_UNSPECIFIED;
+                                        ? NotificationManager.IMPORTANCE_LOW
+                                        : NotificationManager.IMPORTANCE_UNSPECIFIED;
                                 if (mChannel != null) {
                                     mChannel.setImportance(importance);
+                                    mChannel.lockFields(NotificationChannel.USER_LOCKED_IMPORTANCE);
                                     mBackend.updateChannel(mPkg, mUid, mChannel);
                                 } else {
                                     mBackend.setImportance(mPkgInfo.packageName, mUid,
@@ -249,7 +254,7 @@
                                 return true;
                             }
                         });
-                updateDependents(banned ? Ranking.IMPORTANCE_NONE : importance);
+                updateDependents(banned ? NotificationManager.IMPORTANCE_NONE : importance);
             }
         }
     }
@@ -263,6 +268,7 @@
                 final boolean bypassZenMode = (Boolean) newValue;
                 if (mChannel != null) {
                     mChannel.setBypassDnd(bypassZenMode);
+                    mChannel.lockFields(NotificationChannel.USER_LOCKED_PRIORITY);
                     mBackend.updateChannel(mPkg, mUid, mChannel);
                     return true;
                 } else {
@@ -280,7 +286,8 @@
         if (getLockscreenNotificationsEnabled() && getLockscreenAllowPrivateNotifications()) {
             final String summaryShowEntry =
                     getString(R.string.lock_screen_notifications_summary_show);
-            final String summaryShowEntryValue = Integer.toString(Ranking.VISIBILITY_NO_OVERRIDE);
+            final String summaryShowEntryValue =
+                    Integer.toString(NotificationManager.VISIBILITY_NO_OVERRIDE);
             entries.add(summaryShowEntry);
             values.add(summaryShowEntryValue);
             setRestrictedIfNotificationFeaturesDisabled(summaryShowEntry, summaryShowEntryValue,
@@ -306,7 +313,8 @@
         }
         mVisibilityOverride.setSummary("%s");
 
-        mVisibilityOverride.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+        mVisibilityOverride.setOnPreferenceChangeListener(
+                new Preference.OnPreferenceChangeListener() {
             @Override
             public boolean onPreferenceChange(Preference preference, Object newValue) {
                 int sensitive = Integer.parseInt((String) newValue);
@@ -315,6 +323,7 @@
                 }
                 if (mChannel != null) {
                     mChannel.setLockscreenVisibility(sensitive);
+                    mChannel.lockFields(NotificationChannel.USER_LOCKED_VISIBILITY);
                     mBackend.updateChannel(mPkg, mUid, mChannel);
                 } else {
                     mBackend.setVisibilityOverride(mPkgInfo.packageName, mUid, sensitive);
@@ -367,14 +376,15 @@
 
     protected void updateDependents(int importance) {
         if (getPreferenceScreen().findPreference(mBlock.getKey()) != null) {
-            setVisible(mSilent, checkCanBeVisible(Ranking.IMPORTANCE_MIN, importance));
-            mSilent.setChecked(importance == Ranking.IMPORTANCE_LOW);
+            setVisible(mSilent, checkCanBeVisible(NotificationManager.IMPORTANCE_MIN, importance));
+            mSilent.setChecked(importance == NotificationManager.IMPORTANCE_LOW);
         }
-        setVisible(mPriority, checkCanBeVisible(Ranking.IMPORTANCE_DEFAULT, importance)
-                || (checkCanBeVisible(Ranking.IMPORTANCE_LOW, importance)
+        setVisible(mPriority, checkCanBeVisible(NotificationManager.IMPORTANCE_DEFAULT, importance)
+                || (checkCanBeVisible(NotificationManager.IMPORTANCE_LOW, importance)
                 && mDndVisualEffectsSuppressed));
         setVisible(mVisibilityOverride,
-                checkCanBeVisible(Ranking.IMPORTANCE_MIN, importance) && isLockScreenSecure());
+                checkCanBeVisible(NotificationManager.IMPORTANCE_MIN, importance)
+                        && isLockScreenSecure());
     }
 
     protected void setVisible(Preference p, boolean visible) {
@@ -388,7 +398,7 @@
     }
 
     protected boolean checkCanBeVisible(int minImportanceVisible, int importance) {
-        if (importance == Ranking.IMPORTANCE_UNSPECIFIED) {
+        if (importance == NotificationManager.IMPORTANCE_UNSPECIFIED) {
             return true;
         }
         return importance >= minImportanceVisible;
diff --git a/src/com/android/settings/notification/PulseNotificationPreferenceController.java b/src/com/android/settings/notification/PulseNotificationPreferenceController.java
new file mode 100644
index 0000000..de365f1
--- /dev/null
+++ b/src/com/android/settings/notification/PulseNotificationPreferenceController.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2016 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.notification;
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.TwoStatePreference;
+import android.util.Log;
+
+import com.android.settings.core.PreferenceController;
+import com.android.settings.core.lifecycle.LifecycleObserver;
+import com.android.settings.core.lifecycle.events.OnPause;
+import com.android.settings.core.lifecycle.events.OnResume;
+
+import static android.provider.Settings.System.NOTIFICATION_LIGHT_PULSE;
+
+public class PulseNotificationPreferenceController extends PreferenceController implements
+        Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {
+
+    private static final String TAG = "PulseNotifPrefContr";
+    private static final String KEY_NOTIFICATION_PULSE = "notification_pulse";
+    private SettingObserver mSettingObserver;
+
+    public PulseNotificationPreferenceController(Context context) {
+        super(context);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        Preference preference = screen.findPreference(KEY_NOTIFICATION_PULSE);
+        if (preference != null) {
+            mSettingObserver = new SettingObserver(preference);
+        }
+    }
+
+    @Override
+    public void onResume() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver(), true /* register */);
+        }
+    }
+
+    @Override
+    public void onPause() {
+        if (mSettingObserver != null) {
+            mSettingObserver.register(mContext.getContentResolver(), false /* register */);
+        }
+    }
+
+    @Override
+    public boolean handlePreferenceTreeClick(Preference preference) {
+        return false;
+    }
+
+    @Override
+    public String getPreferenceKey() {
+        return KEY_NOTIFICATION_PULSE;
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return mContext.getResources()
+                .getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed);
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        try {
+            final boolean checked = Settings.System.getInt(mContext.getContentResolver(),
+                    NOTIFICATION_LIGHT_PULSE) == 1;
+            ((TwoStatePreference) preference).setChecked(checked);
+        } catch (Settings.SettingNotFoundException snfe) {
+            Log.e(TAG, NOTIFICATION_LIGHT_PULSE + " not found");
+        }
+    }
+
+    @Override
+    public boolean onPreferenceChange(Preference preference, Object newValue) {
+        final boolean val = (Boolean) newValue;
+        return Settings.System.putInt(mContext.getContentResolver(),
+                NOTIFICATION_LIGHT_PULSE, val ? 1 : 0);
+    }
+
+    class SettingObserver extends ContentObserver {
+
+        private final Uri NOTIFICATION_LIGHT_PULSE_URI =
+                Settings.System.getUriFor(Settings.System.NOTIFICATION_LIGHT_PULSE);
+
+        private final Preference mPreference;
+
+        public SettingObserver(Preference preference) {
+            super(new Handler());
+            mPreference = preference;
+        }
+
+        public void register(ContentResolver cr, boolean register) {
+            if (register) {
+                cr.registerContentObserver(NOTIFICATION_LIGHT_PULSE_URI, false, this);
+            } else {
+                cr.unregisterContentObserver(this);
+            }
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            super.onChange(selfChange, uri);
+            if (NOTIFICATION_LIGHT_PULSE_URI.equals(uri)) {
+                updateState(mPreference);
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/overlay/FeatureFactory.java b/src/com/android/settings/overlay/FeatureFactory.java
index 35ec40f..515975b 100644
--- a/src/com/android/settings/overlay/FeatureFactory.java
+++ b/src/com/android/settings/overlay/FeatureFactory.java
@@ -21,6 +21,7 @@
 import android.util.Log;
 
 import com.android.settings.R;
+import com.android.settings.applications.ApplicationFeatureProvider;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
@@ -71,6 +72,8 @@
 
     public abstract DashboardFeatureProvider getDashboardFeatureProvider(Context context);
 
+    public abstract ApplicationFeatureProvider getApplicationFeatureProvider(Context context);
+
     public abstract LocaleFeatureProvider getLocaleFeatureProvider();
 
 
diff --git a/src/com/android/settings/overlay/FeatureFactoryImpl.java b/src/com/android/settings/overlay/FeatureFactoryImpl.java
index 976ee3c..934021d 100644
--- a/src/com/android/settings/overlay/FeatureFactoryImpl.java
+++ b/src/com/android/settings/overlay/FeatureFactoryImpl.java
@@ -19,6 +19,8 @@
 import android.content.Context;
 import android.support.annotation.Keep;
 
+import com.android.settings.applications.ApplicationFeatureProvider;
+import com.android.settings.applications.ApplicationFeatureProviderImpl;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.core.instrumentation.MetricsFeatureProviderImpl;
 import com.android.settings.dashboard.DashboardFeatureProvider;
@@ -33,6 +35,7 @@
 @Keep
 public final class FeatureFactoryImpl extends FeatureFactory {
 
+    private ApplicationFeatureProvider mApplicationFeatureProvider;
     private MetricsFeatureProvider mMetricsFeatureProvider;
     private DashboardFeatureProviderImpl mDashboardFeatureProvider;
     private LocaleFeatureProvider mLocaleFeatureProvider;
@@ -64,6 +67,14 @@
     }
 
     @Override
+    public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
+        if (mApplicationFeatureProvider == null) {
+            mApplicationFeatureProvider = new ApplicationFeatureProviderImpl(context);
+        }
+        return mApplicationFeatureProvider;
+    }
+
+    @Override
     public LocaleFeatureProvider getLocaleFeatureProvider() {
         if (mLocaleFeatureProvider == null) {
             mLocaleFeatureProvider = new LocaleFeatureProviderImpl();
diff --git a/src/com/android/settings/users/UserCapabilities.java b/src/com/android/settings/users/UserCapabilities.java
new file mode 100644
index 0000000..a92e3e2
--- /dev/null
+++ b/src/com/android/settings/users/UserCapabilities.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2016 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.users;
+
+import android.app.admin.DevicePolicyManager;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.provider.Settings;
+import com.android.settings.Utils;
+import com.android.settingslib.RestrictedLockUtils;
+
+public class UserCapabilities {
+    boolean mEnabled = true;
+    boolean mCanAddUser = true;
+    boolean mCanAddRestrictedProfile = true;
+    boolean mIsAdmin;
+    boolean mIsGuest;
+    boolean mCanAddGuest;
+    boolean mDisallowAddUser;
+    boolean mDisallowAddUserSetByAdmin;
+    RestrictedLockUtils.EnforcedAdmin mEnforcedAdmin;
+
+    private UserCapabilities() {}
+
+    public static UserCapabilities create(Context context) {
+        UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
+        UserCapabilities caps = new UserCapabilities();
+        if (!UserManager.supportsMultipleUsers() || Utils.isMonkeyRunning()) {
+            caps.mEnabled = false;
+            return caps;
+        }
+
+        final UserInfo myUserInfo = userManager.getUserInfo(UserHandle.myUserId());
+        caps.mIsGuest = myUserInfo.isGuest();
+        caps.mIsAdmin = myUserInfo.isAdmin();
+        DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
+                Context.DEVICE_POLICY_SERVICE);
+        // No restricted profiles for tablets with a device owner, or phones.
+        if (dpm.isDeviceManaged() || Utils.isVoiceCapable(context)) {
+            caps.mCanAddRestrictedProfile = false;
+        }
+        caps.updateAddUserCapabilities(context);
+        return caps;
+    }
+
+    public void updateAddUserCapabilities(Context context) {
+        mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(context,
+                UserManager.DISALLOW_ADD_USER, UserHandle.myUserId());
+        final boolean hasBaseUserRestriction = RestrictedLockUtils.hasBaseUserRestriction(
+                context, UserManager.DISALLOW_ADD_USER, UserHandle.myUserId());
+        mDisallowAddUserSetByAdmin =
+                mEnforcedAdmin != null && !hasBaseUserRestriction;
+        mDisallowAddUser =
+                (mEnforcedAdmin != null || hasBaseUserRestriction);
+        mCanAddUser = true;
+        if (!mIsAdmin || UserManager.getMaxSupportedUsers() < 2
+                || !UserManager.supportsMultipleUsers()
+                || mDisallowAddUser) {
+            mCanAddUser = false;
+        }
+
+        final boolean canAddUsersWhenLocked = mIsAdmin || Settings.Global.getInt(
+                context.getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1;
+        mCanAddGuest = !mIsGuest && !mDisallowAddUser && canAddUsersWhenLocked;
+    }
+
+    public boolean isAdmin() {
+        return mIsAdmin;
+    }
+
+    public boolean disallowAddUser() {
+        return mDisallowAddUser;
+    }
+
+    public boolean disallowAddUserSetByAdmin() {
+        return mDisallowAddUserSetByAdmin;
+    }
+
+    public RestrictedLockUtils.EnforcedAdmin getEnforcedAdmin() {
+        return mEnforcedAdmin;
+    }
+
+
+    @Override
+    public String toString() {
+        return "UserCapabilities{" +
+                "mEnabled=" + mEnabled +
+                ", mCanAddUser=" + mCanAddUser +
+                ", mCanAddRestrictedProfile=" + mCanAddRestrictedProfile +
+                ", mIsAdmin=" + mIsAdmin +
+                ", mIsGuest=" + mIsGuest +
+                ", mCanAddGuest=" + mCanAddGuest +
+                ", mDisallowAddUser=" + mDisallowAddUser +
+                ", mEnforcedAdmin=" + mEnforcedAdmin +
+                '}';
+    }
+}
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index ca455b8..8cd039f 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -63,6 +63,8 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.Utils;
+import com.android.settings.accounts.AddUserWhenLockedPreferenceController;
+import com.android.settings.accounts.EmergencyInfoPreferenceController;
 import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
@@ -88,7 +90,6 @@
  */
 public class UserSettings extends SettingsPreferenceFragment
         implements OnPreferenceClickListener, OnClickListener, DialogInterface.OnDismissListener,
-        Preference.OnPreferenceChangeListener,
         EditUserInfoController.OnContentChangedCallback, Indexable {
 
     private static final String TAG = "UserSettings";
@@ -136,7 +137,6 @@
     private UserPreference mMePreference;
     private DimmableIconPreference mAddUser;
     private PreferenceGroup mLockScreenSettings;
-    private RestrictedSwitchPreference mAddUserWhenLocked;
     private Preference mEmergencyInfoPreference;
     private int mRemovingUserId = -1;
     private int mAddedUserId = 0;
@@ -150,6 +150,8 @@
 
     private EditUserInfoController mEditUserInfoController =
             new EditUserInfoController();
+    private EmergencyInfoPreferenceController mEnergencyInfoController;
+    private AddUserWhenLockedPreferenceController mAddUserWhenLockedController;
 
     // A place to cache the generated default avatar
     private Drawable mDefaultIconDrawable;
@@ -234,8 +236,9 @@
             }
         }
         mLockScreenSettings = (PreferenceGroup) findPreference("lock_screen_settings");
-        mAddUserWhenLocked = (RestrictedSwitchPreference) findPreference("add_users_when_locked");
         mEmergencyInfoPreference = findPreference(KEY_EMERGENCY_INFO);
+        mEnergencyInfoController = new EmergencyInfoPreferenceController(context);
+        mAddUserWhenLockedController = new AddUserWhenLockedPreferenceController(context);
         setHasOptionsMenu(true);
         IntentFilter filter = new IntentFilter(Intent.ACTION_USER_REMOVED);
         filter.addAction(Intent.ACTION_USER_INFO_CHANGED);
@@ -887,15 +890,10 @@
                         mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
             }
         }
-        if (mUserCaps.mIsAdmin &&
-                (!mUserCaps.mDisallowAddUser || mUserCaps.mDisallowAddUserSetByAdmin)) {
+
+        if (mAddUserWhenLockedController.isAvailable()) {
             mLockScreenSettings.setOrder(Preference.DEFAULT_ORDER);
             preferenceScreen.addPreference(mLockScreenSettings);
-            mAddUserWhenLocked.setChecked(Settings.Global.getInt(getContentResolver(),
-                    Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1);
-            mAddUserWhenLocked.setOnPreferenceChangeListener(this);
-            mAddUserWhenLocked.setDisabledByAdmin(
-                    mUserCaps.mDisallowAddUser ? mUserCaps.mEnforcedAdmin : null);
         }
 
         if (emergencyInfoActivityPresent(getContext())) {
@@ -983,10 +981,8 @@
             } else {
                 onAddUserClicked(USER_TYPE_USER);
             }
-        } else if (pref == mEmergencyInfoPreference) {
-            Intent intent = new Intent(ACTION_EDIT_EMERGENCY_INFO);
-            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
-            startActivity(intent);
+        } else {
+            mEnergencyInfoController.handlePreferenceTreeClick(pref);
         }
         return false;
     }
@@ -1032,18 +1028,6 @@
     }
 
     @Override
-    public boolean onPreferenceChange(Preference preference, Object newValue) {
-        if (preference == mAddUserWhenLocked) {
-            Boolean value = (Boolean) newValue;
-            Settings.Global.putInt(getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED,
-                    value != null && value ? 1 : 0);
-            return true;
-        }
-
-        return false;
-    }
-
-    @Override
     public int getHelpResource() {
         return R.string.help_url_users;
     }
@@ -1058,76 +1042,6 @@
         mMePreference.setTitle(label);
     }
 
-    private static class UserCapabilities {
-        boolean mEnabled = true;
-        boolean mCanAddUser = true;
-        boolean mCanAddRestrictedProfile = true;
-        boolean mIsAdmin;
-        boolean mIsGuest;
-        boolean mCanAddGuest;
-        boolean mDisallowAddUser;
-        boolean mDisallowAddUserSetByAdmin;
-        EnforcedAdmin mEnforcedAdmin;
-
-        private UserCapabilities() {}
-
-        public static UserCapabilities create(Context context) {
-            UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
-            UserCapabilities caps = new UserCapabilities();
-            if (!UserManager.supportsMultipleUsers() || Utils.isMonkeyRunning()) {
-                caps.mEnabled = false;
-                return caps;
-            }
-
-            final UserInfo myUserInfo = userManager.getUserInfo(UserHandle.myUserId());
-            caps.mIsGuest = myUserInfo.isGuest();
-            caps.mIsAdmin = myUserInfo.isAdmin();
-            DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(
-                    Context.DEVICE_POLICY_SERVICE);
-            // No restricted profiles for tablets with a device owner, or phones.
-            if (dpm.isDeviceManaged() || Utils.isVoiceCapable(context)) {
-                caps.mCanAddRestrictedProfile = false;
-            }
-            caps.updateAddUserCapabilities(context);
-            return caps;
-        }
-
-        public void updateAddUserCapabilities(Context context) {
-            mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(context,
-                    UserManager.DISALLOW_ADD_USER, UserHandle.myUserId());
-            final boolean hasBaseUserRestriction = RestrictedLockUtils.hasBaseUserRestriction(
-                    context, UserManager.DISALLOW_ADD_USER, UserHandle.myUserId());
-            mDisallowAddUserSetByAdmin =
-                    mEnforcedAdmin != null && !hasBaseUserRestriction;
-            mDisallowAddUser =
-                    (mEnforcedAdmin != null || hasBaseUserRestriction);
-            mCanAddUser = true;
-            if (!mIsAdmin || UserManager.getMaxSupportedUsers() < 2
-                    || !UserManager.supportsMultipleUsers()
-                    || mDisallowAddUser) {
-                mCanAddUser = false;
-            }
-
-            final boolean canAddUsersWhenLocked = mIsAdmin || Settings.Global.getInt(
-                    context.getContentResolver(), Settings.Global.ADD_USERS_WHEN_LOCKED, 0) == 1;
-            mCanAddGuest = !mIsGuest && !mDisallowAddUser && canAddUsersWhenLocked;
-        }
-
-        @Override
-        public String toString() {
-            return "UserCapabilities{" +
-                    "mEnabled=" + mEnabled +
-                    ", mCanAddUser=" + mCanAddUser +
-                    ", mCanAddRestrictedProfile=" + mCanAddRestrictedProfile +
-                    ", mIsAdmin=" + mIsAdmin +
-                    ", mIsGuest=" + mIsGuest +
-                    ", mCanAddGuest=" + mCanAddGuest +
-                    ", mDisallowAddUser=" + mDisallowAddUser +
-                    ", mEnforcedAdmin=" + mEnforcedAdmin +
-                    '}';
-        }
-    }
-
     private static class SummaryProvider implements SummaryLoader.SummaryProvider {
 
         private final Context mContext;
diff --git a/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapper.java b/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapper.java
new file mode 100644
index 0000000..2569b6b
--- /dev/null
+++ b/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapper.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2016 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.utils;
+
+import android.annotation.StyleRes;
+import android.content.Context;
+import android.view.ContextThemeWrapper;
+
+/**
+ * {@link ContextThemeWrapper} that provides a local classloader. This guarantees we have a
+ * valid {@link ClassLoader} when base context is from an external app.
+ */
+public class LocalClassLoaderContextThemeWrapper extends ContextThemeWrapper {
+
+    private Class mLocalClass;
+
+    public LocalClassLoaderContextThemeWrapper(Class clazz, Context base,
+            @StyleRes int themeResId) {
+        super(base, themeResId);
+        mLocalClass = clazz;
+    }
+
+    @Override
+    public ClassLoader getClassLoader() {
+        return mLocalClass.getClassLoader();
+    }
+}
diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java
index 4a02197..d70d6ba 100644
--- a/src/com/android/settings/wifi/WifiEnabler.java
+++ b/src/com/android/settings/wifi/WifiEnabler.java
@@ -231,8 +231,13 @@
         if (mayDisableTethering(isChecked)) {
             mWifiManager.setWifiApEnabled(null, false);
         }
-        mMetricsFeatureProvider.action(mContext,
-                isChecked ? MetricsEvent.ACTION_WIFI_ON : MetricsEvent.ACTION_WIFI_OFF);
+        if (isChecked) {
+            mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_WIFI_ON);
+        } else {
+            // Log if user was connected at the time of switching off.
+            mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_WIFI_OFF,
+                    mConnected.get());
+        }
         if (!mWifiManager.setWifiEnabled(isChecked)) {
             // Error
             mSwitchBar.setEnabled(true);
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index dacd481..bdb3779 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -483,12 +483,13 @@
         }
         switch (item.getItemId()) {
             case MENU_ID_CONNECT: {
-                if (mSelectedAccessPoint.isSaved()) {
-                    connect(mSelectedAccessPoint.getConfig());
+                boolean isSavedNetwork = mSelectedAccessPoint.isSaved();
+                if (isSavedNetwork) {
+                    connect(mSelectedAccessPoint.getConfig(), isSavedNetwork);
                 } else if (mSelectedAccessPoint.getSecurity() == AccessPoint.SECURITY_NONE) {
                     /** Bypass dialog for unsecured networks */
                     mSelectedAccessPoint.generateOpenNetworkConfig();
-                    connect(mSelectedAccessPoint.getConfig());
+                    connect(mSelectedAccessPoint.getConfig(), isSavedNetwork);
                 } else {
                     showDialog(mSelectedAccessPoint, WifiConfigUiBase.MODE_CONNECT);
                 }
@@ -521,7 +522,7 @@
             if (mSelectedAccessPoint.getSecurity() == AccessPoint.SECURITY_NONE &&
                     !mSelectedAccessPoint.isSaved() && !mSelectedAccessPoint.isActive()) {
                 mSelectedAccessPoint.generateOpenNetworkConfig();
-                connect(mSelectedAccessPoint.getConfig());
+                connect(mSelectedAccessPoint.getConfig(), false /* isSavedNetwork */);
             } else if (mSelectedAccessPoint.isSaved()) {
                 showDialog(mSelectedAccessPoint, WifiConfigUiBase.MODE_VIEW);
             } else {
@@ -831,14 +832,14 @@
         if (config == null) {
             if (mSelectedAccessPoint != null
                     && mSelectedAccessPoint.isSaved()) {
-                connect(mSelectedAccessPoint.getConfig());
+                connect(mSelectedAccessPoint.getConfig(), true /* isSavedNetwork */);
             }
         } else if (configController.getMode() == WifiConfigUiBase.MODE_MODIFY) {
             mWifiManager.save(config, mSaveListener);
         } else {
             mWifiManager.save(config, mSaveListener);
             if (mSelectedAccessPoint != null) { // Not an "Add network"
-                connect(config);
+                connect(config, false /* isSavedNetwork */);
             }
         }
 
@@ -868,13 +869,17 @@
         changeNextButtonState(false);
     }
 
-    protected void connect(final WifiConfiguration config) {
-        mMetricsFeatureProvider.action(getActivity(), MetricsEvent.ACTION_WIFI_CONNECT);
+    protected void connect(final WifiConfiguration config, boolean isSavedNetwork) {
+        // Log subtype if configuration is a saved network.
+        mMetricsFeatureProvider.action(getActivity(), MetricsEvent.ACTION_WIFI_CONNECT,
+                isSavedNetwork);
         mWifiManager.connect(config, mConnectListener);
     }
 
-    protected void connect(final int networkId) {
-        mMetricsFeatureProvider.action(getActivity(), MetricsEvent.ACTION_WIFI_CONNECT);
+    protected void connect(final int networkId, boolean isSavedNetwork) {
+        // Log subtype if configuration is a saved network.
+        mMetricsFeatureProvider.action(getActivity(), MetricsEvent.ACTION_WIFI_CONNECT,
+                isSavedNetwork);
         mWifiManager.connect(networkId, mConnectListener);
     }
 
diff --git a/src/com/android/settings/wifi/WifiSettingsForSetupWizard.java b/src/com/android/settings/wifi/WifiSettingsForSetupWizard.java
index 2f35478..68f28ee 100644
--- a/src/com/android/settings/wifi/WifiSettingsForSetupWizard.java
+++ b/src/com/android/settings/wifi/WifiSettingsForSetupWizard.java
@@ -130,17 +130,17 @@
     }
 
     @Override
-    protected void connect(final WifiConfiguration config) {
+    protected void connect(final WifiConfiguration config, boolean isSavedNetwork) {
         WifiSetupActivity activity = (WifiSetupActivity) getActivity();
         activity.networkSelected();
-        super.connect(config);
+        super.connect(config, isSavedNetwork);
     }
 
     @Override
-    protected void connect(final int networkId) {
+    protected void connect(final int networkId, boolean isSavedNetwork) {
         WifiSetupActivity activity = (WifiSetupActivity) getActivity();
         activity.networkSelected();
-        super.connect(networkId);
+        super.connect(networkId, isSavedNetwork);
     }
 
     @Override
diff --git a/tests/app/src/com/android/settings/tests/DashboardAdapterTest.java b/tests/app/src/com/android/settings/tests/DashboardAdapterTest.java
new file mode 100644
index 0000000..4b8e6cf
--- /dev/null
+++ b/tests/app/src/com/android/settings/tests/DashboardAdapterTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2016 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.tests;
+
+import android.app.Instrumentation;
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Settings;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.filters.SmallTest;
+import android.support.test.runner.AndroidJUnit4;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import com.android.settings.R;
+
+import static android.support.test.espresso.Espresso.onView;
+import static android.support.test.espresso.action.ViewActions.click;
+import static android.support.test.espresso.assertion.ViewAssertions.matches;
+import static android.support.test.espresso.matcher.ViewMatchers.*;
+import static android.support.test.espresso.matcher.ViewMatchers.Visibility.VISIBLE;
+import static org.hamcrest.core.AllOf.allOf;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+public class DashboardAdapterTest {
+    @Before
+    public void SetUp() {
+        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+        instrumentation.startActivitySync(new Intent(Settings
+                .ACTION_SETTINGS));
+    }
+
+    @Test
+    public void testTileConsistency_ToggleSuggestionsAndOpenBluetooth_shouldInBluetooth()
+            throws Exception{
+        final Context context = InstrumentationRegistry.getTargetContext();
+
+        onView(allOf(withText(context.getString(R.string.suggestions_title)),
+                withEffectiveVisibility(VISIBLE))).perform(click());
+        onView(allOf(withText(context.getString(R.string.bluetooth_settings)),
+                withEffectiveVisibility(VISIBLE))).perform(click());
+
+        // It should go to Bluetooth sub page, not other page or crash
+        onView(allOf(withText(context.getString(R.string.bluetooth_settings)),
+                withEffectiveVisibility(VISIBLE))).check(matches(isDisplayed()));
+
+    }
+}
diff --git a/tests/unit/src/com/android/settings/DeviceInfoSettingsTest.java b/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java
similarity index 79%
rename from tests/unit/src/com/android/settings/DeviceInfoSettingsTest.java
rename to tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java
index cec3f74..c66c2b4 100644
--- a/tests/unit/src/com/android/settings/DeviceInfoSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java
@@ -18,19 +18,23 @@
 
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.SmallTest;
-
 import com.android.settingslib.DeviceInfoUtils;
+import org.junit.runner.RunWith;
+import org.junit.Test;
+import org.robolectric.annotation.Config;
 
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class DeviceInfoSettingsTest extends AndroidTestCase {
 
-    @SmallTest
+    @Test
     public void testGetFormattedKernelVersion() throws Exception {
         if ("Unavailable".equals(DeviceInfoUtils.getFormattedKernelVersion())) {
             fail("formatKernelVersion can't cope with this device's /proc/version");
         }
     }
 
-    @SmallTest
+    @Test
     public void testFormatKernelVersion() throws Exception {
         assertEquals("Unavailable", DeviceInfoUtils.formatKernelVersion(""));
         assertEquals("2.6.38.8-gg784\n" +
@@ -53,5 +57,12 @@
                 DeviceInfoUtils.formatKernelVersion("Linux version " +
                         "2.6.38.8-a-b-jellybean+ (x@y) " +
                         "(gcc version 4.4.3 (GCC) ) #1 PREEMPT Tue Aug 28 22:10:46 CDT 2012"));
+        assertEquals("3.18.31-g3ce5faa-dirty\n" +
+                        "x@y #5\n" +
+                        "Fri Oct 28 14:38:13 PDT 2016",
+                DeviceInfoUtils.formatKernelVersion("Linux version " +
+                        "3.18.31-g3ce5faa-dirty (x@y) (Android clang " +
+                        "version 3.8.275480 (based on LLVM 3.8.275480)) " +
+                        "#5 SMP PREEMPT Fri Oct 28 14:38:13 PDT 2016"));
     }
 }
diff --git a/tests/robotests/src/com/android/settings/DisplaySettingsTest.java b/tests/robotests/src/com/android/settings/DisplaySettingsTest.java
index 5af8544..ac499eb 100644
--- a/tests/robotests/src/com/android/settings/DisplaySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/DisplaySettingsTest.java
@@ -18,16 +18,13 @@
 
 import android.app.Activity;
 import android.provider.Settings.System;
-
 import com.android.settings.dashboard.SummaryLoader;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
@@ -36,7 +33,7 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class DisplaySettingsTest {
 
diff --git a/tests/robotests/src/com/android/settings/SettingsDialogFragmentTest.java b/tests/robotests/src/com/android/settings/SettingsDialogFragmentTest.java
index da23d5f..86b613c 100644
--- a/tests/robotests/src/com/android/settings/SettingsDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/SettingsDialogFragmentTest.java
@@ -17,13 +17,11 @@
 
 import android.app.Dialog;
 import android.app.Fragment;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static org.junit.Assert.fail;
@@ -31,7 +29,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class SettingsDialogFragmentTest {
 
diff --git a/tests/robotests/src/com/android/settings/SettingsRobolectricTestRunner.java b/tests/robotests/src/com/android/settings/SettingsRobolectricTestRunner.java
new file mode 100644
index 0000000..1a7647d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/SettingsRobolectricTestRunner.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2016 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;
+
+import java.util.List;
+import org.junit.runners.model.InitializationError;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.manifest.AndroidManifest;
+import org.robolectric.res.Fs;
+import org.robolectric.res.ResourcePath;
+
+/**
+ * Custom test runner for the testing of BluetoothPairingDialogs. This is needed because the
+ * default behavior for robolectric is just to grab the resource directory in the target package.
+ * We want to override this to add several spanning different projects.
+ */
+public class SettingsRobolectricTestRunner extends RobolectricTestRunner {
+
+    /**
+     * We don't actually want to change this behavior, so we just call super.
+     */
+    public SettingsRobolectricTestRunner(Class<?> testClass) throws InitializationError {
+        super(testClass);
+    }
+
+    /**
+     * We are going to create our own custom manifest so that we can add multiple resource
+     * paths to it. This lets us access resources in both Settings and SettingsLib in our tests.
+     */
+    @Override
+    protected AndroidManifest getAppManifest(Config config) {
+        // Using the manifest file's relative path, we can figure out the application directory.
+        final String appRoot = "packages/apps/Settings";
+        final String manifestPath = appRoot + "/AndroidManifest.xml";
+        final String resDir = appRoot + "/res";
+        final String assetsDir = appRoot + "/assets";
+
+        // By adding any resources from libraries we need to the AndroidManifest, we can access
+        // them from within the parallel universe's resource loader.
+        final AndroidManifest manifest = new AndroidManifest(Fs.fileFromPath(manifestPath),
+                Fs.fileFromPath(resDir), Fs.fileFromPath(assetsDir)) {
+            @Override
+            public List<ResourcePath> getIncludedResourcePaths() {
+                List<ResourcePath> paths = super.getIncludedResourcePaths();
+                paths.add(new ResourcePath(
+                        getPackageName(),
+                        Fs.fileFromPath("./packages/apps/Settings/res"),
+                        null));
+                paths.add(new ResourcePath(
+                        getPackageName(),
+                        Fs.fileFromPath("./frameworks/base/packages/SettingsLib/res"),
+                        null));
+                return paths;
+            }
+        };
+
+        // Set the package name to the renamed one
+        manifest.setPackageName("com.android.settings");
+        return manifest;
+    }
+}
\ No newline at end of file
diff --git a/tests/robotests/src/com/android/settings/SummaryPreferenceTest.java b/tests/robotests/src/com/android/settings/SummaryPreferenceTest.java
index e55f069..e8440dd 100644
--- a/tests/robotests/src/com/android/settings/SummaryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/SummaryPreferenceTest.java
@@ -22,18 +22,16 @@
 import android.view.View;
 import android.widget.LinearLayout;
 import android.widget.TextView;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
 import static junit.framework.Assert.assertEquals;
 import static junit.framework.Assert.assertTrue;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class SummaryPreferenceTest {
 
diff --git a/tests/robotests/src/com/android/settings/UtilsTest.java b/tests/robotests/src/com/android/settings/UtilsTest.java
index e486d31..dacd303 100644
--- a/tests/robotests/src/com/android/settings/UtilsTest.java
+++ b/tests/robotests/src/com/android/settings/UtilsTest.java
@@ -1,9 +1,5 @@
 package com.android.settings;
 
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
 import android.content.Context;
 import android.net.ConnectivityManager;
 import android.net.LinkAddress;
@@ -16,11 +12,14 @@
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
-@RunWith(RobolectricTestRunner.class)
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class UtilsTest {
 
diff --git a/tests/robotests/src/com/android/settings/accounts/AddUserWhenLockedPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/AddUserWhenLockedPreferenceControllerTest.java
new file mode 100644
index 0000000..f49bb5f
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accounts/AddUserWhenLockedPreferenceControllerTest.java
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2016 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.accounts;
+
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+import android.provider.Settings.Global;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import com.android.settingslib.RestrictedSwitchPreference;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Answers.RETURNS_DEEP_STUBS;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class AddUserWhenLockedPreferenceControllerTest {
+
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private UserInfo mUserInfo;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private UserManager mUserManager;
+
+    private Context mContext;
+    private AddUserWhenLockedPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowApplication shadowContext = ShadowApplication.getInstance();
+        shadowContext.setSystemService(Context.USER_SERVICE, mUserManager);
+        mContext = shadowContext.getApplicationContext();
+        mController = new AddUserWhenLockedPreferenceController(mContext);
+    }
+
+    @Test
+    public void displayPref_NotAdmin_shouldNotDisplay() {
+        when(mUserManager.getUserInfo(anyInt())).thenReturn(mUserInfo);
+        when(mUserInfo.isAdmin()).thenReturn(false);
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void updateState_preferenceSetCheckedWhenSettingIsOn() {
+        final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
+        Global.putInt(mContext.getContentResolver(), Global.ADD_USERS_WHEN_LOCKED, 1);
+
+        mController.updateState(preference);
+
+        verify(preference).setChecked(true);
+    }
+
+    @Test
+    public void updateState_preferenceSetUncheckedWhenSettingIsOff() {
+        final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
+        Global.putInt(mContext.getContentResolver(), Global.ADD_USERS_WHEN_LOCKED, 0);
+
+        mController.updateState(preference);
+
+        verify(preference).setChecked(false);
+    }
+
+    @Test
+    public void onPreferenceChange_SettingIsOnWhenPreferenceChecked() {
+        final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
+        preference.setChecked(true);
+
+        mController.onPreferenceChange(preference, Boolean.TRUE);
+
+        assertThat(Global.getInt(mContext.getContentResolver(), Global.ADD_USERS_WHEN_LOCKED, 0))
+                .isEqualTo(1);
+    }
+
+    @Test
+    public void onPreferenceChange_SettingIsOffWhenPreferenceNotChecked() {
+        final RestrictedSwitchPreference preference = mock(RestrictedSwitchPreference.class);
+        preference.setChecked(false);
+
+        mController.onPreferenceChange(preference, Boolean.FALSE);
+
+        assertThat(Global.getInt(mContext.getContentResolver(), Global.ADD_USERS_WHEN_LOCKED, 0))
+                .isEqualTo(0);
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/accounts/AutoSyncDataPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/AutoSyncDataPreferenceControllerTest.java
new file mode 100644
index 0000000..7fb6fd7
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accounts/AutoSyncDataPreferenceControllerTest.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2016 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.accounts;
+
+import android.app.Fragment;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v14.preference.SwitchPreference;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Answers.RETURNS_DEEP_STUBS;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class AutoSyncDataPreferenceControllerTest {
+
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private UserManager mUserManager;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private Fragment mFragment;
+
+    private Context mContext;
+    private AutoSyncDataPreferenceController mController;
+    private AutoSyncDataPreferenceController.ConfirmAutoSyncChangeFragment mConfirmSyncFragment;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowApplication shadowContext = ShadowApplication.getInstance();
+        shadowContext.setSystemService(Context.USER_SERVICE, mUserManager);
+        mContext = shadowContext.getApplicationContext();
+        mController = new AutoSyncDataPreferenceController(mContext, mFragment);
+        mConfirmSyncFragment = new AutoSyncDataPreferenceController.ConfirmAutoSyncChangeFragment();
+        mConfirmSyncFragment.setTargetFragment(mFragment, 0);
+    }
+
+    @Test
+    public void displayPref_managedProfile_shouldNotDisplay() {
+        when(mUserManager.isManagedProfile()).thenReturn(true);
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void displayPref_linkedUser_shouldDisplay() {
+        when(mUserManager.isManagedProfile()).thenReturn(false);
+        when(mUserManager.isLinkedUser()).thenReturn(true);
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void displayPref_oneProfile_shouldDisplay() {
+        List<UserInfo> infos = new ArrayList<>();
+        infos.add(new UserInfo(1, "user 1", 0));
+        when(mUserManager.isManagedProfile()).thenReturn(false);
+        when(mUserManager.isLinkedUser()).thenReturn(false);
+        when(mUserManager.getProfiles(anyInt())).thenReturn(infos);
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void displayPref_moreThanOneProfile_shouldNotDisplay() {
+        List<UserInfo> infos = new ArrayList<>();
+        infos.add(new UserInfo(1, "user 1", 0));
+        infos.add(new UserInfo(2, "user 2", 0));
+        when(mUserManager.isManagedProfile()).thenReturn(false);
+        when(mUserManager.isLinkedUser()).thenReturn(false);
+        when(mUserManager.getProfiles(anyInt())).thenReturn(infos);
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void autoSyncData_shouldNotBeSetOnCancel() {
+        final ShadowApplication application = ShadowApplication.getInstance();
+        final Context context = application.getApplicationContext();
+        final SwitchPreference preference = new SwitchPreference(context);
+        preference.setChecked(false);
+        mController = new AutoSyncDataPreferenceController(context, mFragment);
+        mConfirmSyncFragment.mPreference = preference;
+        mConfirmSyncFragment.mEnabling = true;
+
+        mConfirmSyncFragment.onClick(null, DialogInterface.BUTTON_NEGATIVE);
+        assertThat(preference.isChecked()).isFalse();
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/accounts/AutoSyncPersonalDataPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/AutoSyncPersonalDataPreferenceControllerTest.java
new file mode 100644
index 0000000..54ee658
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accounts/AutoSyncPersonalDataPreferenceControllerTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2016 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.accounts;
+
+import android.app.Fragment;
+import android.content.Context;
+import android.content.pm.UserInfo;
+import android.os.UserManager;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.search.SearchIndexableRaw;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static org.mockito.Answers.RETURNS_DEEP_STUBS;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class AutoSyncPersonalDataPreferenceControllerTest {
+
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private UserManager mUserManager;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private Fragment mFragment;
+
+    private Context mContext;
+    private AutoSyncPersonalDataPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        ShadowApplication shadowContext = ShadowApplication.getInstance();
+        shadowContext.setSystemService(Context.USER_SERVICE, mUserManager);
+        mContext = shadowContext.getApplicationContext();
+        mController = new AutoSyncPersonalDataPreferenceController(mContext, mFragment);
+    }
+
+    @Test
+    public void displayPref_managedProfile_shouldNotDisplay() {
+        when(mUserManager.isManagedProfile()).thenReturn(true);
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void displayPref_linkedUser_shouldNotDisplay() {
+        when(mUserManager.isManagedProfile()).thenReturn(false);
+        when(mUserManager.isLinkedUser()).thenReturn(true);
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void displayPref_oneProfile_shouldNotDisplay() {
+        List<UserInfo> infos = new ArrayList<>();
+        infos.add(new UserInfo(1, "user 1", 0));
+        when(mUserManager.isManagedProfile()).thenReturn(false);
+        when(mUserManager.isLinkedUser()).thenReturn(false);
+        when(mUserManager.getProfiles(anyInt())).thenReturn(infos);
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void displayPref_prefAvaiable_shouldDisplay() {
+        List<UserInfo> infos = new ArrayList<>();
+        infos.add(new UserInfo(1, "user 1", 0));
+        infos.add(new UserInfo(2, "user 2", 0));
+        when(mUserManager.isManagedProfile()).thenReturn(false);
+        when(mUserManager.isLinkedUser()).thenReturn(false);
+        when(mUserManager.getProfiles(anyInt())).thenReturn(infos);
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/accounts/EmergencyInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/accounts/EmergencyInfoPreferenceControllerTest.java
new file mode 100644
index 0000000..128c211
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accounts/EmergencyInfoPreferenceControllerTest.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2016 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.accounts;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.search.SearchIndexableRaw;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Answers.RETURNS_DEEP_STUBS;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class EmergencyInfoPreferenceControllerTest {
+
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+
+    private EmergencyInfoPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mController = new EmergencyInfoPreferenceController(mContext);
+    }
+
+    @Test
+    public void updateRawDataToIndex_prefUnavaiable_shouldNotUpdate() {
+        final List<SearchIndexableRaw> data = new ArrayList<>();
+        when(mContext.getPackageManager().queryIntentActivities(
+                any(Intent.class), anyInt()))
+                .thenReturn(null);
+
+        mController.updateRawDataToIndex(data);
+
+        assertThat(data).isEmpty();
+    }
+
+    @Test
+    public void updateRawDataToIndex_prefAvaiable_shouldUpdate() {
+        final List<SearchIndexableRaw> data = new ArrayList<>();
+        final List<ResolveInfo> infos = new ArrayList<>();
+        infos.add(new ResolveInfo());
+        when(mContext.getPackageManager().queryIntentActivities(
+                any(Intent.class), anyInt()))
+                .thenReturn(infos);
+
+        mController.updateRawDataToIndex(data);
+
+        assertThat(data).isNotEmpty();
+    }
+
+    @Test
+    public void displayPref_prefUnAvaiable_shouldNotDisplay() {
+        when(mContext.getPackageManager().queryIntentActivities(
+                any(Intent.class), anyInt()))
+                .thenReturn(null);
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void displayPref_prefAvaiable_shouldDisplay() {
+        final List<SearchIndexableRaw> data = new ArrayList<>();
+        final List<ResolveInfo> infos = new ArrayList<>();
+        infos.add(new ResolveInfo());
+        when(mContext.getPackageManager().queryIntentActivities(
+                any(Intent.class), anyInt()))
+                .thenReturn(infos);
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void handlePreferenceTreeClick_shouldStartActivity() {
+        final ShadowApplication application = ShadowApplication.getInstance();
+        final Context context = application.getApplicationContext();
+        final Preference preference = new Preference(context);
+        preference.setKey("emergency_info");
+        mController = new EmergencyInfoPreferenceController(context);
+
+        mController.handlePreferenceTreeClick(preference);
+
+        assertThat(application.getNextStartedActivity().getAction())
+                .isEqualTo("android.settings.EDIT_EMERGENGY_INFO");
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
index d0c5889..7da30ed 100644
--- a/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/AdvancedAppSettingsTest.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 
 import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.testutils.FakeFeatureFactory;
 
@@ -28,14 +29,13 @@
 import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class AdvancedAppSettingsTest {
 
diff --git a/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java b/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java
new file mode 100644
index 0000000..229ba45
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/AppHeaderControllerTest.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2016 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.applications;
+
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.ResolveInfo;
+import android.os.UserHandle;
+import android.support.v7.preference.Preference;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.TextView;
+
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settingslib.applications.ApplicationsState;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyInt;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class AppHeaderControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private ApplicationsState.AppEntry mAppEntry;
+    @Mock
+    private Fragment mFragment;
+    @Mock
+    private View mAppHeader;
+
+    private Context mShadowContext;
+    private LayoutInflater mLayoutInflater;
+    private PackageInfo mInfo;
+    private AppHeaderController mController;
+
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mShadowContext = ShadowApplication.getInstance().getApplicationContext();
+        mLayoutInflater = LayoutInflater.from(mShadowContext);
+        mInfo = new PackageInfo();
+        mInfo.versionName = "1234";
+    }
+
+    @Test
+    public void testBuildView_constructedWithoutView_shouldCreateNewView() {
+        mController = new AppHeaderController(mShadowContext, mFragment, null);
+        View view = mController.done();
+
+        assertThat(view).isNotNull();
+    }
+
+    @Test
+    public void testBuildView_withContext_shouldBuildPreference() {
+        mController = new AppHeaderController(mShadowContext, mFragment, null);
+        Preference preference = mController.done(mShadowContext);
+
+        assertThat(preference instanceof LayoutPreference).isTrue();
+    }
+
+    @Test
+    public void testBuildView_constructedWithView_shouldReturnSameView() {
+        View inputView = mLayoutInflater.inflate(R.layout.app_details, null /* root */);
+        mController = new AppHeaderController(mShadowContext, mFragment, inputView);
+        View view = mController.done();
+
+        assertThat(view).isSameAs(inputView);
+    }
+
+    @Test
+    public void bindViews_shouldBindAllData() {
+        final String testString = "test";
+        final View appHeader = mLayoutInflater.inflate(R.layout.app_details, null /* root */);
+        final TextView label = (TextView) appHeader.findViewById(android.R.id.title);
+        final TextView version = (TextView) appHeader.findViewById(android.R.id.summary);
+
+        mController = new AppHeaderController(mShadowContext, mFragment, appHeader);
+        mController.setLabel(testString);
+        mController.setSummary(testString);
+        mController.setIcon(mShadowContext.getDrawable(R.drawable.ic_add));
+        mController.done();
+
+        assertThat(label.getText()).isEqualTo(testString);
+        assertThat(version.getText()).isEqualTo(testString);
+    }
+
+    @Test
+    public void bindButton_hasAppPref_shouldShowButton() {
+        final ResolveInfo info = new ResolveInfo();
+        info.activityInfo = new ActivityInfo();
+        info.activityInfo.packageName = "123";
+        info.activityInfo.name = "321";
+        final View appLinks = mLayoutInflater
+                .inflate(R.layout.app_details, null /* root */);
+        when(mContext.getPackageManager().resolveActivity(any(Intent.class), anyInt()))
+                .thenReturn(info);
+
+        mController = new AppHeaderController(mContext, mFragment, appLinks);
+        mController.setButtonActions(
+                AppHeaderController.ActionType.ACTION_APP_PREFERENCE,
+                AppHeaderController.ActionType.ACTION_NONE);
+        mController.done();
+
+        assertThat(appLinks.findViewById(R.id.left_button).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        assertThat(appLinks.findViewById(R.id.right_button).getVisibility())
+                .isEqualTo(View.GONE);
+        try {
+            appLinks.findViewById(R.id.left_button).performClick();
+        } catch (Exception e) {
+            // Ignore exception because the launching intent is fake.
+        }
+        verify(mFragment).startActivity(any(Intent.class));
+    }
+
+    @Test
+    public void bindButton_noAppPref_shouldNotShowButton() {
+        final View appLinks = mLayoutInflater
+                .inflate(R.layout.app_details, null /* root */);
+        when(mContext.getPackageManager().resolveActivity(any(Intent.class), anyInt()))
+                .thenReturn(null);
+
+        mController = new AppHeaderController(mContext, mFragment, appLinks);
+        mController.setButtonActions(
+                AppHeaderController.ActionType.ACTION_APP_PREFERENCE,
+                AppHeaderController.ActionType.ACTION_NONE);
+        mController.done();
+
+        assertThat(appLinks.findViewById(R.id.left_button).getVisibility())
+                .isEqualTo(View.GONE);
+        assertThat(appLinks.findViewById(R.id.right_button).getVisibility())
+                .isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void bindButton_noStoreLink_shouldNotShowButton() {
+        final View appLinks = mLayoutInflater
+                .inflate(R.layout.app_details, null /* root */);
+        when(mContext.getPackageManager().resolveActivity(any(Intent.class), anyInt()))
+                .thenReturn(null);
+
+        mController = new AppHeaderController(mContext, mFragment, appLinks);
+        mController.setButtonActions(
+                AppHeaderController.ActionType.ACTION_STORE_DEEP_LINK,
+                AppHeaderController.ActionType.ACTION_NONE);
+        mController.done();
+
+        assertThat(appLinks.findViewById(R.id.left_button).getVisibility())
+                .isEqualTo(View.GONE);
+        assertThat(appLinks.findViewById(R.id.right_button).getVisibility())
+                .isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void bindButton_noAppInfo_shouldNotShowButton() {
+        final View appLinks = mLayoutInflater
+                .inflate(R.layout.app_details, null /* root */);
+
+        mController = new AppHeaderController(mContext, mFragment, appLinks);
+        mController.setPackageName(null)
+                .setButtonActions(
+                        AppHeaderController.ActionType.ACTION_APP_INFO,
+                        AppHeaderController.ActionType.ACTION_NONE);
+        mController.done();
+
+        assertThat(appLinks.findViewById(R.id.left_button).getVisibility())
+                .isEqualTo(View.GONE);
+        assertThat(appLinks.findViewById(R.id.right_button).getVisibility())
+                .isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void bindButton_hasAppInfo_shouldShowButton() {
+        final View appLinks = mLayoutInflater
+                .inflate(R.layout.app_details, null /* root */);
+        when(mFragment.getActivity()).thenReturn(mock(Activity.class));
+
+        mController = new AppHeaderController(mContext, mFragment, appLinks);
+        mController.setPackageName("123")
+                .setUid(UserHandle.USER_SYSTEM)
+                .setButtonActions(
+                        AppHeaderController.ActionType.ACTION_APP_INFO,
+                        AppHeaderController.ActionType.ACTION_NOTIF_PREFERENCE);
+        mController.done();
+
+        assertThat(appLinks.findViewById(R.id.left_button).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        assertThat(appLinks.findViewById(R.id.right_button).getVisibility())
+                .isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void bindButton_hasAppNotifIntent_shouldShowButton() {
+        final View appLinks = mLayoutInflater
+                .inflate(R.layout.app_details, null /* root */);
+
+        mController = new AppHeaderController(mContext, mFragment, appLinks);
+        mController.setAppNotifPrefIntent(new Intent())
+                .setButtonActions(
+                        AppHeaderController.ActionType.ACTION_NOTIF_PREFERENCE,
+                        AppHeaderController.ActionType.ACTION_NONE);
+        mController.done();
+
+        assertThat(appLinks.findViewById(R.id.left_button).getVisibility())
+                .isEqualTo(View.VISIBLE);
+        assertThat(appLinks.findViewById(R.id.right_button).getVisibility())
+                .isEqualTo(View.GONE);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/AppInfoWithHeaderTest.java b/tests/robotests/src/com/android/settings/applications/AppInfoWithHeaderTest.java
new file mode 100644
index 0000000..744bc0f
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/applications/AppInfoWithHeaderTest.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2016 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.applications;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.support.v7.preference.PreferenceManager;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.FakeFeatureFactory;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class AppInfoWithHeaderTest {
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+
+    private FakeFeatureFactory mFactory;
+    private TestFragment mAppInfoWithHeader;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        FakeFeatureFactory.setupForTest(mContext);
+
+        mFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
+
+        mAppInfoWithHeader = new TestFragment();
+    }
+
+    @Test
+    public void testAppHeaderIsAdded() {
+        when(mFactory.dashboardFeatureProvider.isEnabled()).thenReturn(true);
+        when(mFactory.applicationFeatureProvider.newAppHeaderController(mAppInfoWithHeader, null))
+                .thenReturn(new AppHeaderController(
+                        ShadowApplication.getInstance().getApplicationContext(),
+                        mAppInfoWithHeader,
+                        null));
+        mAppInfoWithHeader.onActivityCreated(null);
+
+        verify(mAppInfoWithHeader.mScreen).addPreference(any(LayoutPreference.class));
+    }
+
+    public static class TestFragment extends AppInfoWithHeader {
+
+        PreferenceManager mManager;
+        PreferenceScreen mScreen;
+
+        public TestFragment() {
+            mPm = mock(PackageManager.class);
+            mManager = mock(PreferenceManager.class);
+            mScreen = mock(PreferenceScreen.class);
+            mPackageInfo = new PackageInfo();
+            mPackageInfo.applicationInfo = new ApplicationInfo();
+
+            when(mManager.getContext())
+                    .thenReturn(ShadowApplication.getInstance().getApplicationContext());
+        }
+
+        @Override
+        public int getMetricsCategory() {
+            return 0;
+        }
+
+        @Override
+        protected boolean refreshUi() {
+            return false;
+        }
+
+        @Override
+        protected AlertDialog createDialog(int id, int errorCode) {
+            return null;
+        }
+
+        @Override
+        public PreferenceScreen getPreferenceScreen() {
+            return mScreen;
+        }
+
+        @Override
+        public PreferenceManager getPreferenceManager() {
+            return mManager;
+        }
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDialogTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDialogTest.java
new file mode 100644
index 0000000..035d29e
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothPairingDialogTest.java
@@ -0,0 +1,340 @@
+/*
+ * Copyright (C) 2016 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.bluetooth;
+
+import android.app.AlertDialog;
+import android.text.SpannableStringBuilder;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.CheckBox;
+import android.widget.TextView;
+import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.util.FragmentTestUtil;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.fail;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class BluetoothPairingDialogTest {
+
+    private static final String FILLER = "text that goes in a view";
+    private static final String FAKE_DEVICE_NAME = "Fake Bluetooth Device";
+
+    @Mock
+    private BluetoothPairingController controller;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    @Test
+    public void dialogUpdatesControllerWithUserInput() {
+        // set the correct dialog type
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // we don't care about these for this test
+        when(controller.getDeviceVariantMessageId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+        when(controller.getDeviceVariantMessageHintId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // build fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // test that controller is updated on text change
+        frag.afterTextChanged(new SpannableStringBuilder(FILLER));
+        verify(controller, times(1)).updateUserInput(any());
+    }
+
+    @Test
+    public void dialogEnablesSubmitButtonOnValidationFromController() {
+        // set the correct dialog type
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // we don't care about these for this test
+        when(controller.getDeviceVariantMessageId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+        when(controller.getDeviceVariantMessageHintId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // force the controller to say that any passkey is valid
+        when(controller.isPasskeyValid(any())).thenReturn(true);
+
+        // build fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // test that the positive button is enabled when passkey is valid
+        frag.afterTextChanged(new SpannableStringBuilder(FILLER));
+        View button = frag.getmDialog().getButton(AlertDialog.BUTTON_POSITIVE);
+        assertThat(button).isNotNull();
+        assertThat(button.getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void dialogDoesNotAskForPairCodeOnConsentVariant() {
+        // set the dialog variant to confirmation/consent
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // check that the input field used by the entry dialog fragment does not exist
+        View view = frag.getmDialog().findViewById(R.id.text);
+        assertThat(view).isNull();
+    }
+
+    @Test
+    public void dialogAsksForPairCodeOnUserEntryVariant() {
+        // set the dialog variant to user entry
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // we don't care about these for this test
+        when(controller.getDeviceVariantMessageId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+        when(controller.getDeviceVariantMessageHintId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // check that the pin/passkey input field is visible to the user
+        View view = frag.getmDialog().findViewById(R.id.text);
+        assertThat(view.getVisibility()).isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void dialogDisplaysPairCodeOnDisplayPasskeyVariant() {
+        // set the dialog variant to display passkey
+        when(controller.getDialogType())
+                .thenReturn(BluetoothPairingController.DISPLAY_PASSKEY_DIALOG);
+
+        // ensure that the controller returns good values to indicate a passkey needs to be shown
+        when(controller.isDisplayPairingKeyVariant()).thenReturn(true);
+        when(controller.hasPairingContent()).thenReturn(true);
+        when(controller.getPairingContent()).thenReturn(FILLER);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // get the relevant views
+        View messagePairing = frag.getmDialog().findViewById(R.id.pairing_code_message);
+        TextView pairingViewContent =
+                (TextView) frag.getmDialog().findViewById(R.id.pairing_subhead);
+        View pairingViewCaption = frag.getmDialog().findViewById(R.id.pairing_caption);
+
+        // check that the relevant views are visible and that the passkey is shown
+        assertThat(messagePairing.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(pairingViewCaption.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(pairingViewContent.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(TextUtils.equals(FILLER, pairingViewContent.getText())).isTrue();
+    }
+
+    @Test(expected = IllegalStateException.class)
+    public void dialogThrowsExceptionIfNoControllerSet() {
+        // instantiate a fragment
+        BluetoothPairingDialogFragment frag = new BluetoothPairingDialogFragment();
+
+        // this should throw an error
+        FragmentTestUtil.startFragment(frag);
+        fail("Starting the fragment with no controller set should have thrown an exception.");
+    }
+
+    @Test
+    public void dialogCallsHookOnPositiveButtonPress() {
+        // set the dialog variant to confirmation/consent
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
+
+        // we don't care what this does, just that it is called
+        doNothing().when(controller).onDialogPositiveClick(any());
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // click the button and verify that the controller hook was called
+        frag.onClick(frag.getmDialog(), AlertDialog.BUTTON_POSITIVE);
+        verify(controller, times(1)).onDialogPositiveClick(any());
+    }
+
+    @Test
+    public void dialogCallsHookOnNegativeButtonPress() {
+        // set the dialog variant to confirmation/consent
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
+
+        // we don't care what this does, just that it is called
+        doNothing().when(controller).onDialogNegativeClick(any());
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // click the button and verify that the controller hook was called
+        frag.onClick(frag.getmDialog(), AlertDialog.BUTTON_NEGATIVE);
+        verify(controller, times(1)).onDialogNegativeClick(any());
+    }
+
+    @Test(expected = IllegalStateException.class)
+    public void dialogDoesNotAllowSwappingController() {
+        // instantiate a fragment
+        BluetoothPairingDialogFragment frag = new BluetoothPairingDialogFragment();
+        frag.setPairingController(controller);
+
+        // this should throw an error
+        frag.setPairingController(controller);
+        fail("Setting the controller multiple times should throw an exception.");
+    }
+
+    @Test
+    public void dialogPositiveButtonDisabledWhenUserInputInvalid() {
+        // set the correct dialog type
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // we don't care about these for this test
+        when(controller.getDeviceVariantMessageId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+        when(controller.getDeviceVariantMessageHintId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // force the controller to say that any passkey is valid
+        when(controller.isPasskeyValid(any())).thenReturn(false);
+
+        // build fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // test that the positive button is enabled when passkey is valid
+        frag.afterTextChanged(new SpannableStringBuilder(FILLER));
+        View button = frag.getmDialog().getButton(AlertDialog.BUTTON_POSITIVE);
+        assertThat(button).isNotNull();
+        assertThat(button.isEnabled()).isFalse();
+    }
+
+    @Test
+    public void dialogShowsContactSharingCheckboxWhenBluetoothProfileNotReady() {
+        // set the dialog variant to confirmation/consent
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
+
+        // set a fake device name and pretend the profile has not been set up for it
+        when(controller.getDeviceName()).thenReturn(FAKE_DEVICE_NAME);
+        when(controller.isProfileReady()).thenReturn(false);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // verify that the checkbox is visible and that the device name is correct
+        CheckBox sharingCheckbox = (CheckBox) frag.getmDialog()
+                .findViewById(R.id.phonebook_sharing_message_confirm_pin);
+        assertThat(sharingCheckbox.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(sharingCheckbox.getText().toString().contains(FAKE_DEVICE_NAME)).isTrue();
+    }
+
+    @Test
+    public void dialogHidesContactSharingCheckboxWhenBluetoothProfileIsReady() {
+        // set the dialog variant to confirmation/consent
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
+
+        // set a fake device name and pretend the profile has been set up for it
+        when(controller.getDeviceName()).thenReturn(FAKE_DEVICE_NAME);
+        when(controller.isProfileReady()).thenReturn(true);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // verify that the checkbox is gone
+        CheckBox sharingCheckbox = (CheckBox) frag.getmDialog()
+                .findViewById(R.id.phonebook_sharing_message_confirm_pin);
+        assertThat(sharingCheckbox.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    @Test
+    public void dialogShowsMessageOnPinEntryView() {
+        // set the correct dialog type
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // Set the message id to something specific to verify later
+        when(controller.getDeviceVariantMessageId()).thenReturn(R.string.cancel);
+        when(controller.getDeviceVariantMessageHintId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // verify message is what we expect it to be and is visible
+        TextView message = (TextView) frag.getmDialog().findViewById(R.id.message_below_pin);
+        assertThat(message.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(TextUtils.equals(frag.getString(R.string.cancel), message.getText())).isTrue();
+    }
+
+    @Test
+    public void dialogShowsMessageHintOnPinEntryView() {
+        // set the correct dialog type
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // Set the message id hint to something specific to verify later
+        when(controller.getDeviceVariantMessageHintId()).thenReturn(R.string.cancel);
+        when(controller.getDeviceVariantMessageId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // verify message is what we expect it to be and is visible
+        TextView hint = (TextView) frag.getmDialog().findViewById(R.id.pin_values_hint);
+        assertThat(hint.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(TextUtils.equals(frag.getString(R.string.cancel), hint.getText())).isTrue();
+    }
+
+    @Test
+    public void dialogHidesMessageAndHintWhenNotProvidedOnPinEntryView() {
+        // set the correct dialog type
+        when(controller.getDialogType()).thenReturn(BluetoothPairingController.USER_ENTRY_DIALOG);
+
+        // Set the id's to what is returned when it is not provided
+        when(controller.getDeviceVariantMessageHintId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+        when(controller.getDeviceVariantMessageId())
+                .thenReturn(BluetoothPairingController.INVALID_DIALOG_TYPE);
+
+        // build the fragment
+        BluetoothPairingDialogFragment frag = makeFragment();
+
+        // verify message is what we expect it to be and is visible
+        TextView hint = (TextView) frag.getmDialog().findViewById(R.id.pin_values_hint);
+        assertThat(hint.getVisibility()).isEqualTo(View.GONE);
+        TextView message = (TextView) frag.getmDialog().findViewById(R.id.message_below_pin);
+        assertThat(message.getVisibility()).isEqualTo(View.GONE);
+    }
+
+    private BluetoothPairingDialogFragment makeFragment() {
+        BluetoothPairingDialogFragment frag = new BluetoothPairingDialogFragment();
+        frag.setPairingController(controller);
+        FragmentTestUtil.startFragment(frag);
+        assertThat(frag.getmDialog()).isNotNull();
+        return frag;
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/conditional/ConditionAdapterUtilsTest.java b/tests/robotests/src/com/android/settings/conditional/ConditionAdapterUtilsTest.java
new file mode 100644
index 0000000..dde291d
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/conditional/ConditionAdapterUtilsTest.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2016 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.conditional;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.LinearLayout;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settings.dashboard.DashboardAdapter;
+import com.android.settings.dashboard.conditional.Condition;
+import com.android.settings.dashboard.conditional.ConditionAdapterUtils;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import com.android.settings.R;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class ConditionAdapterUtilsTest{
+    @Mock
+    private Condition mCondition;
+    private DashboardAdapter.DashboardItemHolder mViewHolder;
+    private Context mContext;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext = RuntimeEnvironment.application;
+        final CharSequence[] actions = new CharSequence[2];
+        when(mCondition.getActions()).thenReturn(actions);
+
+        final View view = LayoutInflater.from(mContext).inflate(R.layout.condition_card, new
+                LinearLayout(mContext), true);
+        mViewHolder = new DashboardAdapter.DashboardItemHolder(view);
+    }
+
+    @Test
+    public void testBindView_isExpanded_returnVisible() {
+        ConditionAdapterUtils.bindViews(mCondition, mViewHolder, true, null, null);
+        assertThat(mViewHolder.itemView.findViewById(R.id.detail_group).getVisibility())
+                .isEqualTo(View.VISIBLE);
+    }
+
+    @Test
+    public void testBindView_isNotExpanded_returnGone() {
+        ConditionAdapterUtils.bindViews(mCondition, mViewHolder, false, null, null);
+        assertThat(mViewHolder.itemView.findViewById(R.id.detail_group).getVisibility())
+                .isEqualTo(View.GONE);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java
index e6570e1..d53a27b 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragmentTest.java
@@ -16,23 +16,21 @@
 package com.android.settings.connecteddevice;
 
 import android.content.Context;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.drawer.CategoryKey;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class ConnectedDeviceDashboardFragmentTest {
 
diff --git a/tests/robotests/src/com/android/settings/core/PreferenceControllerTest.java b/tests/robotests/src/com/android/settings/core/PreferenceControllerTest.java
index 9a526b1..aaab183 100644
--- a/tests/robotests/src/com/android/settings/core/PreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/core/PreferenceControllerTest.java
@@ -18,15 +18,13 @@
 import android.content.Context;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static org.mockito.Matchers.any;
@@ -34,7 +32,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class PreferenceControllerTest {
 
@@ -102,7 +100,7 @@
         }
 
         @Override
-        protected boolean isAvailable() {
+        public boolean isAvailable() {
             return isAvailable;
         }
 
diff --git a/tests/robotests/src/com/android/settings/core/instrumentation/InstrumentedDialogFragmentTest.java b/tests/robotests/src/com/android/settings/core/instrumentation/InstrumentedDialogFragmentTest.java
index 14b3bb4..0abac1d 100644
--- a/tests/robotests/src/com/android/settings/core/instrumentation/InstrumentedDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/core/instrumentation/InstrumentedDialogFragmentTest.java
@@ -16,18 +16,16 @@
 package com.android.settings.core.instrumentation;
 
 import android.os.Bundle;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class InstrumentedDialogFragmentTest {
 
diff --git a/tests/robotests/src/com/android/settings/core/instrumentation/MetricsFeatureProviderTest.java b/tests/robotests/src/com/android/settings/core/instrumentation/MetricsFeatureProviderTest.java
index 22be988..41a2a71 100644
--- a/tests/robotests/src/com/android/settings/core/instrumentation/MetricsFeatureProviderTest.java
+++ b/tests/robotests/src/com/android/settings/core/instrumentation/MetricsFeatureProviderTest.java
@@ -16,22 +16,20 @@
 package com.android.settings.core.instrumentation;
 
 import android.content.Context;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.overlay.FeatureFactory;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class MetricsFeatureProviderTest {
 
diff --git a/tests/robotests/src/com/android/settings/core/instrumentation/SharedPreferenceLoggerTest.java b/tests/robotests/src/com/android/settings/core/instrumentation/SharedPreferenceLoggerTest.java
index a3e0e45..dad6fa9 100644
--- a/tests/robotests/src/com/android/settings/core/instrumentation/SharedPreferenceLoggerTest.java
+++ b/tests/robotests/src/com/android/settings/core/instrumentation/SharedPreferenceLoggerTest.java
@@ -17,16 +17,14 @@
 
 import android.content.Context;
 import android.content.SharedPreferences;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.overlay.FeatureFactory;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
@@ -36,7 +34,7 @@
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class SharedPreferenceLoggerTest {
 
diff --git a/tests/robotests/src/com/android/settings/core/instrumentation/VisibilityLoggerMixinTest.java b/tests/robotests/src/com/android/settings/core/instrumentation/VisibilityLoggerMixinTest.java
index 3fa8c94..56fa786 100644
--- a/tests/robotests/src/com/android/settings/core/instrumentation/VisibilityLoggerMixinTest.java
+++ b/tests/robotests/src/com/android/settings/core/instrumentation/VisibilityLoggerMixinTest.java
@@ -16,15 +16,13 @@
 package com.android.settings.core.instrumentation;
 
 import android.content.Context;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.android.settings.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN;
@@ -36,7 +34,7 @@
 import static org.mockito.Mockito.verify;
 
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class VisibilityLoggerMixinTest {
 
diff --git a/tests/robotests/src/com/android/settings/core/lifecycle/LifecycleTest.java b/tests/robotests/src/com/android/settings/core/lifecycle/LifecycleTest.java
index bc7b129..6aae543 100644
--- a/tests/robotests/src/com/android/settings/core/lifecycle/LifecycleTest.java
+++ b/tests/robotests/src/com/android/settings/core/lifecycle/LifecycleTest.java
@@ -16,7 +16,7 @@
 package com.android.settings.core.lifecycle;
 
 import android.content.Context;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.core.lifecycle.events.OnAttach;
 import com.android.settings.core.lifecycle.events.OnDestroy;
@@ -24,18 +24,16 @@
 import com.android.settings.core.lifecycle.events.OnResume;
 import com.android.settings.core.lifecycle.events.OnStart;
 import com.android.settings.core.lifecycle.events.OnStop;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.Robolectric;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.util.ActivityController;
 import org.robolectric.util.FragmentController;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class LifecycleTest {
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
index 52c2103..abea565 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardDataTest.java
@@ -196,6 +196,31 @@
         testDiffUtil(mDashboardDataWithOneConditions, mDashboardDataWithNoItems, testResultData);
     }
 
+    @Test
+    public void testPayload_ItemConditionCard_returnNotNull() {
+        final DashboardData.ItemsDataDiffCallback callback = new DashboardData
+                .ItemsDataDiffCallback(
+                mDashboardDataWithOneConditions.getItemList(),
+                mDashboardDataWithOneConditions.getItemList());
+
+        // Item in position 0 is condition card, which payload should not be null
+        assertThat(callback.getChangePayload(0, 0)).isNotEqualTo(null);
+    }
+
+    @Test
+    public void testPayload_ItemNotConditionCard_returnNull() {
+        final DashboardData.ItemsDataDiffCallback callback = new DashboardData
+                .ItemsDataDiffCallback(
+                mDashboardDataWithOneConditions.getItemList(),
+                mDashboardDataWithOneConditions.getItemList());
+
+        // Only item in position 0 is condition card, so others' payload should be null
+        for (int i = 1; i < mDashboardDataWithOneConditions.getItemList().size(); i++) {
+            assertThat(callback.getChangePayload(i, i)).isEqualTo(null);
+        }
+
+    }
+
     /**
      * Test when using the
      * {@link com.android.settings.dashboard.DashboardData.ItemsDataDiffCallback}
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardDividerDecorationTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardDividerDecorationTest.java
index adfa608..e829eb2 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardDividerDecorationTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardDividerDecorationTest.java
@@ -24,18 +24,16 @@
 import android.support.v7.preference.PreferenceGroupAdapter;
 import android.support.v7.widget.RecyclerView;
 import android.view.View;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.testutils.FakeFeatureFactory;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static org.mockito.Matchers.any;
@@ -43,7 +41,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class DashboardDividerDecorationTest {
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
new file mode 100644
index 0000000..deae989
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2016 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.dashboard;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.drawable.Icon;
+import android.os.Bundle;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.support.v7.preference.Preference;
+
+import com.android.settings.SettingsActivity;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import com.android.settingslib.drawer.Tile;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.ArrayList;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class DashboardFeatureProviderImplTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private UserManager mUserManager;
+
+    private DashboardFeatureProviderImpl mImpl;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mImpl = new DashboardFeatureProviderImpl(mActivity);
+    }
+
+    @Test
+    public void bindPreference_shouldBindAllData() {
+        final Preference preference = new Preference(
+                ShadowApplication.getInstance().getApplicationContext());
+        final Tile tile = new Tile();
+        tile.title = "title";
+        tile.summary = "summary";
+        tile.icon = Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565));
+        tile.metaData = new Bundle();
+        tile.metaData.putString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS, "HI");
+        tile.priority = 10;
+        mImpl.bindPreferenceToTile(mActivity, preference, tile, "123");
+
+        assertThat(preference.getTitle()).isEqualTo(tile.title);
+        assertThat(preference.getSummary()).isEqualTo(tile.summary);
+        assertThat(preference.getIcon()).isNotNull();
+        assertThat(preference.getFragment())
+                .isEqualTo(tile.metaData.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS));
+        assertThat(preference.getOrder()).isEqualTo(-tile.priority);
+    }
+
+    @Test
+    public void bindPreference_noFragmentMetadata_shouldBindIntent() {
+        final Preference preference = new Preference(
+                ShadowApplication.getInstance().getApplicationContext());
+        final Tile tile = new Tile();
+        tile.metaData = new Bundle();
+        tile.priority = 10;
+        tile.intent = new Intent();
+        mImpl.bindPreferenceToTile(mActivity, preference, tile, "123");
+
+        assertThat(preference.getFragment()).isNull();
+        assertThat(preference.getOnPreferenceClickListener()).isNotNull();
+        assertThat(preference.getOrder()).isEqualTo(-tile.priority);
+    }
+
+    @Test
+    public void bindPreference_noFragmentMetadata_shouldBindToProfileSelector() {
+        final Preference preference = new Preference(
+                ShadowApplication.getInstance().getApplicationContext());
+        final Tile tile = new Tile();
+        tile.metaData = new Bundle();
+        tile.userHandle = new ArrayList<>();
+        tile.userHandle.add(mock(UserHandle.class));
+        tile.userHandle.add(mock(UserHandle.class));
+        tile.intent = new Intent();
+
+        when(mActivity.getApplicationContext().getSystemService(Context.USER_SERVICE))
+                .thenReturn(mUserManager);
+
+        mImpl.bindPreferenceToTile(mActivity, preference, tile, "123");
+        preference.getOnPreferenceClickListener().onPreferenceClick(null);
+
+        verify(mActivity).getFragmentManager();
+    }
+
+    @Test
+    public void bindPreference_withNullKeyNullPriority_shouldGenerateKeyAndPriority() {
+        final Preference preference = new Preference(
+                ShadowApplication.getInstance().getApplicationContext());
+        final Tile tile = new Tile();
+        tile.intent = new Intent();
+        tile.intent.setComponent(new ComponentName("pkg", "class"));
+        mImpl.bindPreferenceToTile(mActivity, preference, tile, null /* key */);
+
+        assertThat(preference.getKey()).isNotNull();
+        assertThat(preference.getOrder()).isEqualTo(Preference.DEFAULT_ORDER);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
index 8fc290e..7c49749 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
@@ -16,14 +16,12 @@
 package com.android.settings.dashboard;
 
 import android.content.Context;
-import android.content.Intent;
-import android.graphics.Bitmap;
-import android.graphics.drawable.Icon;
 import android.os.Bundle;
 import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceManager;
 import android.support.v7.preference.PreferenceScreen;
 
-import com.android.settings.SettingsActivity;
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.overlay.FeatureFactory;
@@ -38,13 +36,15 @@
 import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
 import java.util.ArrayList;
 import java.util.List;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyString;
@@ -54,7 +54,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class DashboardFragmentTest {
 
@@ -104,14 +104,14 @@
         mTestFragment.onCreatePreferences(new Bundle(), "rootKey");
 
         verify(mDisclosureMixin).addPreference(any(PreferenceScreen.class),
-                any(DashboardTilePreference.class));
+                any(Preference.class));
     }
 
     @Test
     public void displayTilesAsPreference_shouldNotAddTilesWithoutIntent() {
         mTestFragment.onCreatePreferences(new Bundle(), "rootKey");
 
-        verify(mTestFragment.mScreen, never()).addPreference(any(DashboardTilePreference.class));
+        verify(mTestFragment.mScreen, never()).addPreference(any(Preference.class));
     }
 
     @Test
@@ -119,43 +119,22 @@
         mDashboardCategory.tiles = null;
         mTestFragment.onCreatePreferences(new Bundle(), "rootKey");
 
-        verify(mTestFragment.mScreen, never()).addPreference(any(DashboardTilePreference.class));
+        verify(mTestFragment.mScreen, never()).addPreference(any(Preference.class));
     }
 
     @Test
-    public void bindPreference_shouldBindAllData() {
-        final Preference preference = new Preference(
-                ShadowApplication.getInstance().getApplicationContext());
-        final Tile tile = new Tile();
-        tile.title = "title";
-        tile.summary = "summary";
-        tile.icon = Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565));
-        tile.metaData = new Bundle();
-        tile.metaData.putString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS, "HI");
-        tile.priority = 10;
-        mTestFragment.bindPreferenceToTile(mContext, preference, tile, "123");
+    public void updateState_skipUnavailablePrefs() {
+        List<PreferenceController> preferenceControllers = mTestFragment.mControllers;
+        preferenceControllers.add(mock(PreferenceController.class));
+        preferenceControllers.add(mock(PreferenceController.class));
+        when(preferenceControllers.get(0).isAvailable()).thenReturn(false);
+        when(preferenceControllers.get(1).isAvailable()).thenReturn(true);
 
-        assertThat(preference.getTitle()).isEqualTo(tile.title);
-        assertThat(preference.getSummary()).isEqualTo(tile.summary);
-        assertThat(preference.getIcon()).isNotNull();
-        assertThat(preference.getFragment())
-                .isEqualTo(tile.metaData.getString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS));
-        assertThat(preference.getOrder()).isEqualTo(-tile.priority);
-    }
+        mTestFragment.onAttach(ShadowApplication.getInstance().getApplicationContext());
+        mTestFragment.onResume();
 
-    @Test
-    public void bindPreference_noFragmentMetadata_shouldBindIntent() {
-        final Preference preference = new Preference(
-                ShadowApplication.getInstance().getApplicationContext());
-        final Tile tile = new Tile();
-        tile.metaData = new Bundle();
-        tile.priority = 10;
-        tile.intent = new Intent();
-        mTestFragment.bindPreferenceToTile(mContext, preference, tile, "123");
-
-        assertThat(preference.getFragment()).isNull();
-        assertThat(preference.getIntent()).isNotNull();
-        assertThat(preference.getOrder()).isEqualTo(-tile.priority);
+        verify(mTestFragment.mControllers.get(0), never()).getPreferenceKey();
+        verify(mTestFragment.mControllers.get(1)).getPreferenceKey();
     }
 
     public static class TestPreferenceController extends PreferenceController {
@@ -170,7 +149,7 @@
         }
 
         @Override
-        protected boolean isAvailable() {
+        public boolean isAvailable() {
             return false;
         }
 
@@ -187,12 +166,19 @@
 
     public static class TestFragment extends DashboardFragment {
 
+        private final PreferenceManager mPreferenceManager;
         private final Context mContext;
-        public PreferenceScreen mScreen;
+        private final List<PreferenceController> mControllers;
+
+        public final PreferenceScreen mScreen;
 
         public TestFragment(Context context) {
             mContext = context;
+            mPreferenceManager = mock(PreferenceManager.class);
             mScreen = mock(PreferenceScreen.class);
+            mControllers = new ArrayList<>();
+
+            when(mPreferenceManager.getContext()).thenReturn(mContext);
         }
 
         @Override
@@ -227,7 +213,12 @@
 
         @Override
         protected List<PreferenceController> getPreferenceControllers(Context context) {
-            return null;
+            return mControllers;
+        }
+
+        @Override
+        public PreferenceManager getPreferenceManager() {
+            return mPreferenceManager;
         }
     }
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java b/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java
index be02596..ab94f35 100644
--- a/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/ProgressiveDisclosureTest.java
@@ -20,23 +20,20 @@
 import android.support.v14.preference.PreferenceFragment;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.testutils.FakeFeatureFactory;
-
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
-import java.util.List;
-
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyInt;
@@ -46,7 +43,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class ProgressiveDisclosureTest {
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/conditional/ConditionTest.java b/tests/robotests/src/com/android/settings/dashboard/conditional/ConditionTest.java
index 5c0c02a..f8797aa 100644
--- a/tests/robotests/src/com/android/settings/dashboard/conditional/ConditionTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/conditional/ConditionTest.java
@@ -17,17 +17,15 @@
 
 import android.content.Context;
 import android.graphics.drawable.Icon;
-
 import com.android.internal.logging.MetricsProto;
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -35,7 +33,7 @@
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.verify;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class ConditionTest {
 
diff --git a/tests/robotests/src/com/android/settings/dashboard/conditional/DashboardTilePreferenceTest.java b/tests/robotests/src/com/android/settings/dashboard/conditional/DashboardTilePreferenceTest.java
deleted file mode 100644
index 470eb43..0000000
--- a/tests/robotests/src/com/android/settings/dashboard/conditional/DashboardTilePreferenceTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Copyright (C) 2016 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.dashboard.conditional;
-
-
-import android.content.Context;
-import android.support.v7.preference.PreferenceViewHolder;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.LinearLayout;
-
-import com.android.settings.TestConfig;
-import com.android.settings.dashboard.DashboardTilePreference;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowApplication;
-
-import static com.google.common.truth.Truth.assertThat;
-
-@RunWith(RobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class DashboardTilePreferenceTest {
-
-    private ShadowApplication mShadowApplication;
-    private Context mContext;
-    private PreferenceViewHolder mHolder;
-    private DashboardTilePreference mPreference;
-
-    @Before
-    public void setUp() {
-        mShadowApplication = ShadowApplication.getInstance();
-        mContext = mShadowApplication.getApplicationContext();
-        mPreference = new DashboardTilePreference(mContext);
-
-        LayoutInflater inflater = LayoutInflater.from(mContext);
-        final View view = inflater.inflate(mPreference.getLayoutResource(),
-                new LinearLayout(mContext), false);
-
-        mHolder = new PreferenceViewHolder(view);
-    }
-
-    @Test
-    public void setHasDivider_shouldShowDivider() {
-        mPreference.setDividerAllowedAbove(true);
-        mPreference.setDividerAllowedBelow(true);
-        mPreference.onBindViewHolder(mHolder);
-
-        assertThat(mHolder.isDividerAllowedAbove()).isTrue();
-        assertThat(mHolder.isDividerAllowedBelow()).isTrue();
-    }
-
-    @Test
-    public void setHasNoDivider_shouldHideDivider() {
-        mPreference.setDividerAllowedAbove(false);
-        mPreference.setDividerAllowedBelow(false);
-        mPreference.onBindViewHolder(mHolder);
-
-        assertThat(mHolder.isDividerAllowedAbove()).isFalse();
-        assertThat(mHolder.isDividerAllowedBelow()).isFalse();
-    }
-}
diff --git a/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java b/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java
index 9ebb580..eec4324 100644
--- a/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/BillingCycleSettingsTest.java
@@ -20,15 +20,13 @@
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.support.v7.preference.PreferenceManager;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
 
@@ -39,7 +37,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class BillingCycleSettingsTest {
 
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageInfoControllerTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageInfoControllerTest.java
index 368d0a1..003f4d3 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageInfoControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageInfoControllerTest.java
@@ -2,17 +2,17 @@
 
 import android.net.NetworkPolicy;
 import android.net.NetworkTemplate;
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settingslib.net.DataUsageController.DataUsageInfo;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class DataUsageInfoControllerTest {
     private DataUsageInfoController mInfoController;
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java
index e9f4446..e8a2ee4 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryTest.java
@@ -18,13 +18,13 @@
 
 import android.content.Context;
 import android.net.ConnectivityManager;
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
@@ -32,7 +32,7 @@
 import static org.mockito.Matchers.anyInt;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class DataUsageSummaryTest {
     @Mock private ConnectivityManager mManager;
diff --git a/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessTest.java b/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessTest.java
index a04861d..c7b8dee 100644
--- a/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/UnrestrictedDataAccessTest.java
@@ -17,21 +17,19 @@
 
 import android.content.pm.ApplicationInfo;
 import android.os.Process;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settingslib.applications.ApplicationsState;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class UnrestrictedDataAccessTest {
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
new file mode 100644
index 0000000..e3a4ba3
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/deviceinfo/BuildNumberPreferenceControllerTest.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2016 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.deviceinfo;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.content.Context;
+import android.os.Build;
+import android.os.UserManager;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.settings.DevelopmentSettings;
+import com.android.settings.TestConfig;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Answers.RETURNS_DEEP_STUBS;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class BuildNumberPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Activity mActivity;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Fragment mFragment;
+    @Mock(answer = RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+    @Mock
+    private UserManager mUserManager;
+
+    private Preference mPreference;
+    private BuildNumberPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mActivity.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
+        mController = new BuildNumberPreferenceController(mContext, mActivity, mFragment);
+
+        mPreference = new Preference(ShadowApplication.getInstance().getApplicationContext());
+        mPreference.setKey(mController.getPreferenceKey());
+    }
+
+    @Test
+    public void displayPref_shouldAlwaysDisplay() {
+        mController.displayPreference(mScreen);
+
+        verify(mScreen.findPreference(mController.getPreferenceKey())).setSummary(Build.DISPLAY);
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void handlePrefTreeClick_onlyHandleBuildNumberPref() {
+        assertThat(mController.handlePreferenceTreeClick(mock(Preference.class))).isFalse();
+    }
+
+    @Test
+    public void handlePrefTreeClick_notAdminUser_doNothing() {
+        when(mUserManager.isAdminUser()).thenReturn(false);
+
+        assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
+    }
+
+    @Test
+    public void handlePrefTreeClick_deviceNotProvisioned_doNothing() {
+        when(mUserManager.isAdminUser()).thenReturn(true);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.Global.putInt(context.getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 0);
+
+        mController = new BuildNumberPreferenceController(context, mActivity, mFragment);
+
+        assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
+    }
+
+    @Test
+    public void handlePrefTreeClick_userHasRestrction_doNothing() {
+        when(mUserManager.isAdminUser()).thenReturn(true);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.Global.putInt(context.getContentResolver(),
+                Settings.Global.DEVICE_PROVISIONED, 1);
+        when(mUserManager.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES))
+                .thenReturn(true);
+
+        mController = new BuildNumberPreferenceController(context, mActivity, mFragment);
+
+        assertThat(mController.handlePreferenceTreeClick(mPreference)).isFalse();
+    }
+
+    @Test
+    public void onActivityResult_notConfirmPasswordRequest_doNothing() {
+        final boolean activityResultHandled = mController.onActivityResult(
+                BuildNumberPreferenceController.REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF + 1,
+                Activity.RESULT_OK,
+                null);
+
+        assertThat(activityResultHandled).isFalse();
+        verify(mContext, never())
+                .getSharedPreferences(DevelopmentSettings.PREF_FILE, Context.MODE_PRIVATE);
+    }
+
+    @Test
+    public void onActivityResult_confirmPasswordRequestFailed_doNotEnableDevPref() {
+        final boolean activityResultHandled = mController.onActivityResult(
+                BuildNumberPreferenceController.REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF,
+                Activity.RESULT_CANCELED,
+                null);
+
+        assertThat(activityResultHandled).isTrue();
+        verify(mContext, never())
+                .getSharedPreferences(DevelopmentSettings.PREF_FILE, Context.MODE_PRIVATE);
+    }
+
+    @Test
+    public void onActivityResult_confirmPasswordRequestCompleted_enableDevPref() {
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+
+        mController = new BuildNumberPreferenceController(context, mActivity, mFragment);
+
+        final boolean activityResultHandled = mController.onActivityResult(
+                BuildNumberPreferenceController.REQUEST_CONFIRM_PASSWORD_FOR_DEV_PREF,
+                Activity.RESULT_OK,
+                null);
+
+        assertThat(activityResultHandled).isTrue();
+        assertThat(context.getSharedPreferences(DevelopmentSettings.PREF_FILE,
+                Context.MODE_PRIVATE).getBoolean(DevelopmentSettings.PREF_SHOW, false))
+                .isTrue();
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/ManageStoragePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/ManageStoragePreferenceControllerTest.java
index d2c169e..12b3218 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/ManageStoragePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/ManageStoragePreferenceControllerTest.java
@@ -19,21 +19,18 @@
 import android.content.Context;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
+import java.util.ArrayList;
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Answers.RETURNS_DEEP_STUBS;
 import static org.mockito.Matchers.any;
@@ -41,7 +38,7 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class ManageStoragePreferenceControllerTest {
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/SystemUpdatePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/SystemUpdatePreferenceControllerTest.java
index 70cf454..9ca218c 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/SystemUpdatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/SystemUpdatePreferenceControllerTest.java
@@ -19,28 +19,25 @@
 import android.os.UserManager;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceScreen;
-
 import com.android.settings.R;
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
+import java.util.ArrayList;
+import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import static com.google.common.truth.Truth.assertThat;
 import static org.mockito.Answers.RETURNS_DEEP_STUBS;
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class SystemUpdatePreferenceControllerTest {
 
diff --git a/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java
new file mode 100644
index 0000000..e2b4473
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/gestures/SwipeToNotificationPreferenceControllerTest.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2016 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.gestures;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.TwoStatePreference;
+
+import com.android.settings.TestConfig;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static android.provider.Settings.Secure.SYSTEM_NAVIGATION_KEYS_ENABLED;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class SwipeToNotificationPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+
+    private SwipeToNotificationPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mController = new SwipeToNotificationPreferenceController(mContext);
+    }
+
+    @Test
+    public void display_configIsTrue_shouldDisplay() {
+        when(mContext.getResources().
+                getBoolean(com.android.internal.R.bool.config_supportSystemNavigationKeys))
+                .thenReturn(true);
+        mController.displayPreference(mScreen);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void display_configIsFalse_shouldNotDisplay() {
+        when(mContext.getResources().
+                getBoolean(com.android.internal.R.bool.config_supportSystemNavigationKeys))
+                .thenReturn(false);
+        when(mScreen.findPreference(mController.getPreferenceKey()))
+                .thenReturn(mock(Preference.class));
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void updateState_preferenceSetCheckedWhenSettingIsOn() {
+        final TwoStatePreference preference = mock(TwoStatePreference.class);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.System.putInt(context.getContentResolver(), SYSTEM_NAVIGATION_KEYS_ENABLED, 1);
+
+        mController = new SwipeToNotificationPreferenceController(context);
+        mController.updateState(preference);
+
+        verify(preference).setChecked(true);
+    }
+
+    @Test
+    public void updateState_preferenceSetUncheckedWhenSettingIsOff() {
+        final TwoStatePreference preference = mock(TwoStatePreference.class);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.System.putInt(context.getContentResolver(), SYSTEM_NAVIGATION_KEYS_ENABLED, 0);
+
+        mController = new SwipeToNotificationPreferenceController(context);
+        mController.updateState(preference);
+
+        verify(preference).setChecked(false);
+    }
+
+}
diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
index 0adfea8..d3d6836 100644
--- a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
@@ -19,16 +19,14 @@
 import android.net.ConnectivityManager;
 import android.os.UserHandle;
 import android.os.UserManager;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.google.common.truth.Truth.assertThat;
@@ -36,7 +34,7 @@
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.when;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class MobileNetworkPreferenceControllerTest {
 
diff --git a/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
index 386fbc6..6dd9c75 100644
--- a/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/network/NetworkDashboardFragmentTest.java
@@ -16,23 +16,21 @@
 package com.android.settings.network;
 
 import android.content.Context;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.drawer.CategoryKey;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class NetworkDashboardFragmentTest {
 
diff --git a/tests/robotests/src/com/android/settings/notification/PulseNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/PulseNotificationPreferenceControllerTest.java
new file mode 100644
index 0000000..4eb33e9
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/notification/PulseNotificationPreferenceControllerTest.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2016 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.notification;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+import android.support.v7.preference.TwoStatePreference;
+
+import com.android.settings.TestConfig;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadows.ShadowApplication;
+
+import static android.provider.Settings.System.NOTIFICATION_LIGHT_PULSE;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@RunWith(RobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class PulseNotificationPreferenceControllerTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mContext;
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private PreferenceScreen mScreen;
+
+    private PulseNotificationPreferenceController mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mController = new PulseNotificationPreferenceController(mContext);
+    }
+
+    @Test
+    public void display_configIsTrue_shouldDisplay() {
+        when(mContext.getResources().
+                getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed))
+                .thenReturn(true);
+        mController.displayPreference(mScreen);
+
+        verify(mScreen, never()).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void display_configIsFalse_shouldNotDisplay() {
+        when(mContext.getResources().
+                getBoolean(com.android.internal.R.bool.config_intrusiveNotificationLed))
+                .thenReturn(false);
+        when(mScreen.findPreference(mController.getPreferenceKey()))
+                .thenReturn(mock(Preference.class));
+
+        mController.displayPreference(mScreen);
+
+        verify(mScreen).removePreference(any(Preference.class));
+    }
+
+    @Test
+    public void updateState_preferenceSetCheckedWhenSettingIsOn() {
+        final TwoStatePreference preference = mock(TwoStatePreference.class);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.System.putInt(context.getContentResolver(), NOTIFICATION_LIGHT_PULSE, 1);
+
+        mController = new PulseNotificationPreferenceController(context);
+        mController.updateState(preference);
+
+        verify(preference).setChecked(true);
+    }
+
+    @Test
+    public void updateState_preferenceSetUncheckedWhenSettingIsOff() {
+        final TwoStatePreference preference = mock(TwoStatePreference.class);
+        final Context context = ShadowApplication.getInstance().getApplicationContext();
+        Settings.System.putInt(context.getContentResolver(), NOTIFICATION_LIGHT_PULSE, 0);
+
+        mController = new PulseNotificationPreferenceController(context);
+        mController.updateState(preference);
+
+        verify(preference).setChecked(false);
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/password/SetNewPasswordControllerTest.java b/tests/robotests/src/com/android/settings/password/SetNewPasswordControllerTest.java
index 61dbe08..2921b30 100644
--- a/tests/robotests/src/com/android/settings/password/SetNewPasswordControllerTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetNewPasswordControllerTest.java
@@ -16,6 +16,22 @@
 
 package com.android.settings.password;
 
+import android.app.admin.DevicePolicyManager;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.hardware.fingerprint.FingerprintManager;
+import android.os.Bundle;
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+
 import static android.content.pm.PackageManager.FEATURE_FINGERPRINT;
 import static com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment.HIDE_DISABLED_PREFS;
 import static com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY;
@@ -29,28 +45,10 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.app.admin.DevicePolicyManager;
-import android.content.ComponentName;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.hardware.fingerprint.FingerprintManager;
-import android.os.Bundle;
-
-import com.android.settings.TestConfig;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-
 /**
  * Tests for {@link SetNewPasswordController}.
  */
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public final class SetNewPasswordControllerTest {
     private static final int CURRENT_UID = 101;
diff --git a/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java
index eb8b43b..65a8805 100644
--- a/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java
@@ -18,20 +18,17 @@
 
 
 import android.app.Activity;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.dashboard.SummaryLoader;
 import com.android.settings.testutils.FakeFeatureFactory;
-
 import com.google.common.truth.Truth;
-
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
 import static com.android.settings.system.SystemDashboardFragment.SUMMARY_PROVIDER_FACTORY;
@@ -40,7 +37,7 @@
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class SystemDashboardFragmentTest {
 
diff --git a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
index d872f7c..8241352 100644
--- a/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
+++ b/tests/robotests/src/com/android/settings/testutils/FakeFeatureFactory.java
@@ -17,6 +17,7 @@
 
 import android.content.Context;
 
+import com.android.settings.applications.ApplicationFeatureProvider;
 import com.android.settings.core.instrumentation.MetricsFeatureProvider;
 import com.android.settings.dashboard.DashboardFeatureProvider;
 import com.android.settings.fuelgauge.PowerUsageFeatureProvider;
@@ -39,6 +40,7 @@
     public final PowerUsageFeatureProvider powerUsageFeatureProvider;
     public final DashboardFeatureProvider dashboardFeatureProvider;
     public final LocaleFeatureProvider localeFeatureProvider;
+    public final ApplicationFeatureProvider applicationFeatureProvider;
 
     /**
      * Call this in {@code @Before} method of the test class to use fake factory.
@@ -66,6 +68,7 @@
         powerUsageFeatureProvider = mock(PowerUsageFeatureProvider.class);
         dashboardFeatureProvider = mock(DashboardFeatureProvider.class);
         localeFeatureProvider = mock(LocaleFeatureProvider.class);
+        applicationFeatureProvider = mock(ApplicationFeatureProvider.class);
     }
 
     @Override
@@ -89,6 +92,11 @@
     }
 
     @Override
+    public ApplicationFeatureProvider getApplicationFeatureProvider(Context context) {
+        return applicationFeatureProvider;
+    }
+
+    @Override
     public LocaleFeatureProvider getLocaleFeatureProvider() {
         return localeFeatureProvider;
     }
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java
index c6ed2fa..03991e6 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowTextUtils.java
@@ -21,11 +21,10 @@
 import android.provider.Settings;
 import android.text.TextUtils;
 import android.view.View;
+import java.util.Locale;
 import org.robolectric.annotation.Implementation;
 import org.robolectric.annotation.Implements;
 
-import java.util.Locale;
-
 /**
  * Important: The current robolectric doesn't support API 24, so I copy the code
  * from API 24 here to make it compatible. Once robolectric is upgraded to 24,
diff --git a/tests/robotests/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java b/tests/robotests/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java
new file mode 100644
index 0000000..eb5be8f
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2016 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.utils;
+
+import android.content.Context;
+
+import com.android.settings.SettingsRobolectricTestRunner;
+import com.android.settings.TestConfig;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Answers;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.annotation.Config;
+
+import static com.google.common.truth.Truth.assertThat;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class LocalClassLoaderContextThemeWrapperTest {
+
+    @Mock(answer = Answers.RETURNS_DEEP_STUBS)
+    private Context mBaseContext;
+    private LocalClassLoaderContextThemeWrapper mContextThemeWrapper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+    }
+
+    @Test
+    public void getClassLoader_shouldUseLocalClassLoader() {
+        mContextThemeWrapper = new LocalClassLoaderContextThemeWrapper(
+                LocalClassLoaderContextThemeWrapperTest.class, mBaseContext, 0);
+
+        assertThat(mContextThemeWrapper.getClassLoader()).isSameAs(
+                LocalClassLoaderContextThemeWrapperTest.class.getClassLoader());
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/utils/ThreadUtilsTest.java b/tests/robotests/src/com/android/settings/utils/ThreadUtilsTest.java
index 6a804d0..4267ed1 100644
--- a/tests/robotests/src/com/android/settings/utils/ThreadUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/utils/ThreadUtilsTest.java
@@ -17,14 +17,13 @@
 
 
 import com.android.settings.TestConfig;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 
-import static org.junit.Assert.fail;
 import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.fail;
 
 @RunWith(RobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
diff --git a/tests/robotests/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java b/tests/robotests/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java
index cce0f32..da7b092 100644
--- a/tests/robotests/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java
+++ b/tests/robotests/src/com/android/settings/widget/RtlCompatibleViewPagerTest.java
@@ -21,22 +21,19 @@
 import android.text.TextUtils;
 import android.view.View;
 import android.view.ViewGroup;
-
+import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import com.android.settings.testutils.shadow.ShadowTextUtils;
-
+import java.util.Locale;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.robolectric.RobolectricTestRunner;
 import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowApplication;
 
-import java.util.Locale;
-
 import static com.google.common.truth.Truth.assertThat;
 
-@RunWith(RobolectricTestRunner.class)
+@RunWith(SettingsRobolectricTestRunner.class)
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public class RtlCompatibleViewPagerTest {