Merge "Introduce MemoryUsagePreferenceController"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 68e41bb..bc63d14 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -219,6 +219,12 @@
android:theme="@style/Theme.Settings.NoActionBar">
</activity>
+ <activity android:name=".search.SearchResultTrampoline"
+ android:theme="@android:style/Theme.NoDisplay"
+ android:excludeFromRecents="true"
+ android:exported="true">
+ </activity>
+
<!-- Top-level settings -->
<activity android:name="Settings$WifiSettingsActivity"
@@ -1321,6 +1327,7 @@
</activity>
<activity android:name="SetFullBackupPassword"
+ android:label="@string/local_backup_password_title"
android:exported="false">
</activity>
@@ -1588,7 +1595,14 @@
<activity android:name=".fingerprint.FingerprintEnrollFindSensor" android:exported="false"/>
<activity android:name=".fingerprint.FingerprintEnrollEnrolling" android:exported="false"/>
<activity android:name=".fingerprint.FingerprintEnrollFinish" android:exported="false"/>
- <activity android:name=".fingerprint.FingerprintEnrollIntroduction" android:exported="false" />
+ <activity android:name=".fingerprint.FingerprintEnrollIntroduction"
+ android:exported="true"
+ android:theme="@style/GlifTheme.Light">
+ <intent-filter>
+ <action android:name="android.settings.FINGERPRINT_ENROLL" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ </activity>
<activity android:name=".fingerprint.SetupFingerprintEnrollFindSensor" android:exported="false"/>
<activity android:name=".fingerprint.SetupFingerprintEnrollEnrolling" android:exported="false"/>
diff --git a/res/layout/dialog_hardware_info.xml b/res/layout/dialog_hardware_info.xml
index f9d52b8..9431961 100644
--- a/res/layout/dialog_hardware_info.xml
+++ b/res/layout/dialog_hardware_info.xml
@@ -40,6 +40,20 @@
android:textAppearance="@android:style/TextAppearance.Material.Body2" />
<TextView
+ android:id="@+id/serial_number_label"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:textAppearance="@android:style/TextAppearance.Material.Body1"
+ android:textColor="?android:attr/textColorSecondary"
+ android:text="@string/status_serial_number" />
+ <TextView
+ android:id="@+id/serial_number_value"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:paddingBottom="24dp"
+ android:textAppearance="@android:style/TextAppearance.Material.Body2" />
+
+ <TextView
android:id="@+id/hardware_rev_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/res/layout/search_panel.xml b/res/layout/search_panel.xml
index 48a1d4c..42fbefb 100644
--- a/res/layout/search_panel.xml
+++ b/res/layout/search_panel.xml
@@ -76,7 +76,7 @@
android:id="@+id/no_results_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:paddingTop="96dp"
+ android:paddingTop="35dp"
android:orientation="vertical"
android:visibility="gone">
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b6b860d..ad64069 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2368,8 +2368,15 @@
<string name="display_settings">Display</string>
<!-- Sound & display settings screen, accelerometer-based rotation check box label -->
<string name="accelerometer_title">Auto-rotate screen</string>
- <!-- Display settings screen, vivid (or vibrant or saturated) color mode switch label [CHAR LIMIT=30] -->
- <string name="color_mode_title">Vivid colors</string>
+ <!-- Display settings screen, Color mode settings title [CHAR LIMIT=30] -->
+ <string name="color_mode_title">Colors</string>
+ <!-- Display settings screen, Color mode option for "natural(sRGB) color" [CHAR LIMIT=45] -->
+ <string name="color_mode_option_natural">Natural</string>
+ <!-- Display settings screen, Color mode option for "Boosted(sRGB + 10%) color" [CHAR LIMIT=45] -->
+ <string name="color_mode_option_boosted">Boosted</string>
+ <!-- Display settings screen, Color mode option for "Saturated color" [CHAR LIMIT=45] -->
+ <string name="color_mode_option_saturated">Saturated</string>
+
<!-- Sound & display settings screen, accelerometer-based rotation summary text when check box is selected -->
<string name="accelerometer_summary_on" product="tablet">Switch orientation automatically when rotating tablet</string>
<!-- Sound & display settings screen, accelerometer-based rotation summary text when check box is selected -->
@@ -2619,6 +2626,8 @@
<string name="security_patch">Android security patch level</string>
<!-- About phone screen, status item label [CHAR LIMIT=40] -->
<string name="model_info">Model</string>
+ <!-- About phone screen, status item summary [CHAR LIMIT=40] -->
+ <string name="model_summary">Model: %1$s</string>
<!-- About phone screen, dialog title for showing hardware information such as model, serial number, etc.[CHAR LIMIT=60] -->
<string name="hardware_info">Model & hardware</string>
<!-- Label for device's hardware revision value [CHAR LIMIT=40] -->
diff --git a/res/xml/accessibility_shortcut_service_settings.xml b/res/xml/accessibility_shortcut_service_settings.xml
new file mode 100644
index 0000000..573939a
--- /dev/null
+++ b/res/xml/accessibility_shortcut_service_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/accessibility_shortcut_service_title" />
diff --git a/res/xml/app_data_usage.xml b/res/xml/app_data_usage.xml
index 26a339a..3e94135 100644
--- a/res/xml/app_data_usage.xml
+++ b/res/xml/app_data_usage.xml
@@ -14,8 +14,9 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/data_usage_summary_title">
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/data_usage_app_summary_title">
<com.android.settings.datausage.SpinnerPreference
android:key="cycle" />
diff --git a/res/xml/app_storage_settings.xml b/res/xml/app_storage_settings.xml
index f3f2f75..ba18b1f 100644
--- a/res/xml/app_storage_settings.xml
+++ b/res/xml/app_storage_settings.xml
@@ -14,9 +14,10 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:settings="http://schemas.android.com/apk/res-auto"
- android:title="@string/application_info_label">
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:title="@string/storage_label">
<com.android.settings.widget.ActionButtonPreference
android:key="header_view" />
diff --git a/res/xml/billing_cycle.xml b/res/xml/billing_cycle.xml
index 8c77ad6..7b61979 100644
--- a/res/xml/billing_cycle.xml
+++ b/res/xml/billing_cycle.xml
@@ -14,8 +14,9 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/data_usage_summary_title">
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/billing_cycle">
<Preference
android:key="billing_cycle"
diff --git a/res/xml/bluetooth_device_details_fragment.xml b/res/xml/bluetooth_device_details_fragment.xml
index 5a8609c..c8f5c1b 100644
--- a/res/xml/bluetooth_device_details_fragment.xml
+++ b/res/xml/bluetooth_device_details_fragment.xml
@@ -16,7 +16,7 @@
-->
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/bluetooth_device_advanced_title">
+ android:title="@string/device_details_title">
<com.android.settings.applications.LayoutPreference
android:key="bluetooth_device_header"
diff --git a/res/xml/bluetooth_pairing_detail.xml b/res/xml/bluetooth_pairing_detail.xml
index 30eaf09..e60da75 100644
--- a/res/xml/bluetooth_pairing_detail.xml
+++ b/res/xml/bluetooth_pairing_detail.xml
@@ -16,7 +16,7 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/bluetooth_settings">
+ android:title="@string/bluetooth_pairing_pref_title">
<Preference
android:key="device_name"/>
diff --git a/res/xml/current_dream_settings.xml b/res/xml/current_dream_settings.xml
new file mode 100644
index 0000000..d95e830
--- /dev/null
+++ b/res/xml/current_dream_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/screensaver_settings_current" />
diff --git a/res/xml/data_usage_list.xml b/res/xml/data_usage_list.xml
index 64df9c3..41fbff8 100644
--- a/res/xml/data_usage_list.xml
+++ b/res/xml/data_usage_list.xml
@@ -14,8 +14,7 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/data_usage_summary_title">
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:key="usage_amount">
diff --git a/res/xml/data_usage_metered_prefs.xml b/res/xml/data_usage_metered_prefs.xml
index aca87fb..ef0faf2 100644
--- a/res/xml/data_usage_metered_prefs.xml
+++ b/res/xml/data_usage_metered_prefs.xml
@@ -15,7 +15,7 @@
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/display_settings">
+ android:title="@string/network_restrictions">
<PreferenceCategory
android:key="mobile"
diff --git a/res/xml/default_assist_settings.xml b/res/xml/default_assist_settings.xml
new file mode 100644
index 0000000..e1f5900
--- /dev/null
+++ b/res/xml/default_assist_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/default_assist_title" />
diff --git a/res/xml/default_autofill_settings.xml b/res/xml/default_autofill_settings.xml
new file mode 100644
index 0000000..ecf0877
--- /dev/null
+++ b/res/xml/default_autofill_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/autofill_app" />
diff --git a/res/xml/default_browser_settings.xml b/res/xml/default_browser_settings.xml
new file mode 100644
index 0000000..a319a7c
--- /dev/null
+++ b/res/xml/default_browser_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/default_browser_title" />
diff --git a/res/xml/default_emergency_settings.xml b/res/xml/default_emergency_settings.xml
new file mode 100644
index 0000000..db418eb
--- /dev/null
+++ b/res/xml/default_emergency_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/default_emergency_app" />
diff --git a/res/xml/default_home_settings.xml b/res/xml/default_home_settings.xml
new file mode 100644
index 0000000..136f8cc
--- /dev/null
+++ b/res/xml/default_home_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/home_app" />
diff --git a/res/xml/default_phone_settings.xml b/res/xml/default_phone_settings.xml
new file mode 100644
index 0000000..1ae3ab1
--- /dev/null
+++ b/res/xml/default_phone_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/default_phone_title" />
diff --git a/res/xml/default_sms_settings.xml b/res/xml/default_sms_settings.xml
new file mode 100644
index 0000000..0a8bcc3
--- /dev/null
+++ b/res/xml/default_sms_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/sms_application_title" />
diff --git a/res/xml/default_voice_settings.xml b/res/xml/default_voice_settings.xml
new file mode 100644
index 0000000..f75b5ed
--- /dev/null
+++ b/res/xml/default_voice_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/voice_input_settings_title" />
diff --git a/res/xml/development_tile_settings.xml b/res/xml/development_tile_settings.xml
new file mode 100644
index 0000000..f0f71c0
--- /dev/null
+++ b/res/xml/development_tile_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/quick_settings_developer_tiles" />
diff --git a/res/xml/device_info_settings_v2.xml b/res/xml/device_info_settings_v2.xml
index 4f66b4c..0553f1e 100644
--- a/res/xml/device_info_settings_v2.xml
+++ b/res/xml/device_info_settings_v2.xml
@@ -36,7 +36,7 @@
<!-- Model & hardware -->
<Preference
- android:key="model_and_hardware"
+ android:key="device_model"
android:title="@string/hardware_info"
android:summary="@string/summary_placeholder"/>
diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml
index 27ef869..87d3e5e 100644
--- a/res/xml/display_settings.xml
+++ b/res/xml/display_settings.xml
@@ -64,9 +64,11 @@
android:key="auto_rotate"
android:title="@string/accelerometer_title" />
- <SwitchPreference
+ <Preference
android:key="color_mode"
- android:title="@string/color_mode_title" />
+ android:title="@string/color_mode_title"
+ android:fragment="com.android.settings.display.ColorModePreferenceFragment"
+ settings:keywords="@string/keywords_color_mode" />
<Preference
android:key="font_size"
diff --git a/res/xml/feature_flags_settings.xml b/res/xml/feature_flags_settings.xml
new file mode 100644
index 0000000..db652ff
--- /dev/null
+++ b/res/xml/feature_flags_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/feature_flags_dashboard_title" />
diff --git a/res/xml/inactive_apps.xml b/res/xml/inactive_apps.xml
index 27fda55..6f93bdb 100644
--- a/res/xml/inactive_apps.xml
+++ b/res/xml/inactive_apps.xml
@@ -4,9 +4,9 @@
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.
@@ -14,7 +14,9 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/inactive_apps_title">
</PreferenceScreen>
diff --git a/res/xml/installed_app_launch_settings.xml b/res/xml/installed_app_launch_settings.xml
index ac77be1..a2a0ca4 100644
--- a/res/xml/installed_app_launch_settings.xml
+++ b/res/xml/installed_app_launch_settings.xml
@@ -14,8 +14,9 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/application_info_label">
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/launch_by_default">
<PreferenceCategory android:key="app_launch_domain_links"
android:title="@string/app_launch_domain_links_title">
diff --git a/res/xml/manage_assist.xml b/res/xml/manage_assist.xml
index a96fb6b..120309a 100644
--- a/res/xml/manage_assist.xml
+++ b/res/xml/manage_assist.xml
@@ -22,7 +22,7 @@
<com.android.settings.widget.GearPreference
android:key="default_assist"
android:title="@string/default_assist_title"
- android:summary="@string/app_list_preference_none"
+ android:summary="@string/summary_placeholder"
android:fragment="com.android.settings.applications.assist.DefaultAssistPicker"/>
<Preference
diff --git a/res/xml/manage_domain_url_settings.xml b/res/xml/manage_domain_url_settings.xml
new file mode 100644
index 0000000..e4e4e47
--- /dev/null
+++ b/res/xml/manage_domain_url_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/domain_urls_title" />
diff --git a/res/xml/nfc_payment_settings.xml b/res/xml/nfc_payment_settings.xml
index 9b47dda..9a5185c 100644
--- a/res/xml/nfc_payment_settings.xml
+++ b/res/xml/nfc_payment_settings.xml
@@ -14,5 +14,7 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/nfc_payment_settings_title">
</PreferenceScreen>
diff --git a/res/xml/notification_access_settings.xml b/res/xml/notification_access_settings.xml
new file mode 100644
index 0000000..1300140
--- /dev/null
+++ b/res/xml/notification_access_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/manage_notification_access_title" />
diff --git a/res/xml/picture_in_picture_settings.xml b/res/xml/picture_in_picture_settings.xml
new file mode 100644
index 0000000..b7091df
--- /dev/null
+++ b/res/xml/picture_in_picture_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/picture_in_picture_title" />
diff --git a/res/xml/premium_sms_settings.xml b/res/xml/premium_sms_settings.xml
new file mode 100644
index 0000000..7bcf11e
--- /dev/null
+++ b/res/xml/premium_sms_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/premium_sms_access" />
diff --git a/res/xml/process_stats_ui.xml b/res/xml/process_stats_ui.xml
index ba9066e..84dccab 100644
--- a/res/xml/process_stats_ui.xml
+++ b/res/xml/process_stats_ui.xml
@@ -16,7 +16,7 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/app_memory_use">
+ android:title="@string/memory_usage_apps">
<PreferenceCategory
android:key="app_list"
diff --git a/res/xml/tether_prefs.xml b/res/xml/tether_prefs.xml
index 1378bba..ce22ad7 100644
--- a/res/xml/tether_prefs.xml
+++ b/res/xml/tether_prefs.xml
@@ -14,8 +14,10 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:settings="http://schemas.android.com/apk/res-auto">
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:title="@string/tether_settings_title_all">
<com.android.settings.widget.MasterSwitchPreference
android:key="wifi_tether"
diff --git a/res/xml/unrestricted_data_access_settings.xml b/res/xml/unrestricted_data_access_settings.xml
new file mode 100644
index 0000000..da8ff0c
--- /dev/null
+++ b/res/xml/unrestricted_data_access_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/unrestricted_data_saver" />
diff --git a/res/xml/vpn_app_management.xml b/res/xml/vpn_app_management.xml
index c044a58..2cf1498 100644
--- a/res/xml/vpn_app_management.xml
+++ b/res/xml/vpn_app_management.xml
@@ -15,8 +15,7 @@
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
- android:title="@string/vpn_title">
+ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<Preference
android:key="version"
diff --git a/res/xml/vr_display_settings.xml b/res/xml/vr_display_settings.xml
new file mode 100644
index 0000000..d04435a
--- /dev/null
+++ b/res/xml/vr_display_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/display_vr_pref_title" />
diff --git a/res/xml/vr_listeners_settings.xml b/res/xml/vr_listeners_settings.xml
new file mode 100644
index 0000000..1954596
--- /dev/null
+++ b/res/xml/vr_listeners_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/vr_listeners_title" />
diff --git a/res/xml/webview_app_settings.xml b/res/xml/webview_app_settings.xml
new file mode 100644
index 0000000..c7a611a
--- /dev/null
+++ b/res/xml/webview_app_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/select_webview_provider_title" />
diff --git a/res/xml/when_to_dream_settings.xml b/res/xml/when_to_dream_settings.xml
new file mode 100644
index 0000000..7b91a34
--- /dev/null
+++ b/res/xml/when_to_dream_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/screensaver_settings_when_to_dream" />
diff --git a/res/xml/wifi_display_settings.xml b/res/xml/wifi_display_settings.xml
index 81fb701..2be31d2 100644
--- a/res/xml/wifi_display_settings.xml
+++ b/res/xml/wifi_display_settings.xml
@@ -15,6 +15,6 @@
-->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
- android:title="@string/wifi_saved_access_points_titlebar">
+ android:title="@string/wifi_display_settings_title">
</PreferenceScreen>
diff --git a/res/xml/wifi_p2p_settings.xml b/res/xml/wifi_p2p_settings.xml
index 0bdc1cf..405d081 100644
--- a/res/xml/wifi_p2p_settings.xml
+++ b/res/xml/wifi_p2p_settings.xml
@@ -14,7 +14,9 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/wifi_p2p_settings_title">
<Preference
android:key="p2p_this_device"
android:selectable="false" />
diff --git a/res/xml/wifi_tether_settings.xml b/res/xml/wifi_tether_settings.xml
index feed268..d6b8a25 100644
--- a/res/xml/wifi_tether_settings.xml
+++ b/res/xml/wifi_tether_settings.xml
@@ -15,7 +15,9 @@
limitations under the License.
-->
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/wifi_hotspot_checkbox_text">
<com.android.settings.widget.ValidatedEditTextPreference
android:key="wifi_tether_network_name"
diff --git a/res/xml/zen_access_settings.xml b/res/xml/zen_access_settings.xml
new file mode 100644
index 0000000..35cfdb8
--- /dev/null
+++ b/res/xml/zen_access_settings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright (C) 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:title="@string/manage_zen_access_title" />
diff --git a/src/com/android/settings/DeviceAdminSettings.java b/src/com/android/settings/DeviceAdminSettings.java
index 4ae900a..00f4d9c 100644
--- a/src/com/android/settings/DeviceAdminSettings.java
+++ b/src/com/android/settings/DeviceAdminSettings.java
@@ -49,6 +49,7 @@
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.instrumentation.Instrumentable;
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
@@ -136,6 +137,9 @@
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
Utils.forceCustomPadding(getListView(), true /* additive padding */);
+ if (InstrumentedPreferenceFragment.usePreferenceScreenTitle()) {
+ getActivity().setTitle(R.string.manage_device_admin);
+ }
}
@Override
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
index 41eb6c6..630b67e 100644
--- a/src/com/android/settings/DeviceInfoSettings.java
+++ b/src/com/android/settings/DeviceInfoSettings.java
@@ -49,10 +49,11 @@
public class DeviceInfoSettings extends DashboardFragment implements Indexable {
+ public static final String DEVICE_INFO_V2_FEATURE_FLAG = "device_info_v2";
+
private static final String LOG_TAG = "DeviceInfoSettings";
private static final String KEY_LEGAL_CONTAINER = "legal_container";
- private static final String DEVICE_INFO_V2_FEATURE_FLAG = "device_info_v2";
@Override
public int getMetricsCategory() {
@@ -127,7 +128,7 @@
// SIM status
- // Model & hardware
+ controllers.add(new DeviceModelPreferenceController(context, fragment));
// IMEI
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index 2c97018..bac0a61 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -21,6 +21,7 @@
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.AuthenticatorDescription;
+import android.annotation.StringRes;
import android.app.Activity;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -91,6 +92,12 @@
}
};
+ @Override
+ @StringRes
+ protected int getTitle() {
+ return R.string.master_clear_title;
+ }
+
/**
* Keyguard validation is run using the standard {@link ConfirmLockPattern}
* component as a subactivity
diff --git a/src/com/android/settings/OwnerInfoSettings.java b/src/com/android/settings/OwnerInfoSettings.java
index 18cfb8e..3128dfe 100644
--- a/src/com/android/settings/OwnerInfoSettings.java
+++ b/src/com/android/settings/OwnerInfoSettings.java
@@ -67,6 +67,7 @@
mOwnerInfo = (EditText) mView.findViewById(R.id.owner_info_edit_text);
if (!TextUtils.isEmpty(info)) {
mOwnerInfo.setText(info);
+ mOwnerInfo.setSelection(info.length());
}
}
diff --git a/src/com/android/settings/ResetNetwork.java b/src/com/android/settings/ResetNetwork.java
index 1529e77..b5b8a18 100644
--- a/src/com/android/settings/ResetNetwork.java
+++ b/src/com/android/settings/ResetNetwork.java
@@ -16,6 +16,7 @@
package com.android.settings;
+import android.annotation.StringRes;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
@@ -63,6 +64,12 @@
private Spinner mSubscriptionSpinner;
private Button mInitiateButton;
+ @Override
+ @StringRes
+ protected int getTitle() {
+ return R.string.reset_network_title;
+ }
+
/**
* Keyguard validation is run using the standard {@link ConfirmLockPattern}
* component as a subactivity
diff --git a/src/com/android/settings/ScreenPinningSettings.java b/src/com/android/settings/ScreenPinningSettings.java
index 5209cc7..68050b1 100644
--- a/src/com/android/settings/ScreenPinningSettings.java
+++ b/src/com/android/settings/ScreenPinningSettings.java
@@ -65,6 +65,9 @@
super.onActivityCreated(savedInstanceState);
final SettingsActivity activity = (SettingsActivity) getActivity();
+ if (usePreferenceScreenTitle()) {
+ activity.setTitle(R.string.screen_pinning_title);
+ }
mLockPatternUtils = new LockPatternUtils(activity);
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 822a60d..26a9ecb 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -834,6 +834,8 @@
private static class SecuritySearchIndexProvider extends BaseSearchIndexProvider {
+ // TODO (b/68001777) Refactor indexing to include all XML and block other settings.
+
@Override
public List<SearchIndexableResource> getXmlResourcesToIndex(
Context context, boolean enabled) {
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 1202d13..7203e24 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -55,6 +55,7 @@
import com.android.settings.Settings.WifiSettingsActivity;
import com.android.settings.applications.manageapplications.ManageApplications;
import com.android.settings.backup.BackupSettingsActivity;
+import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.gateway.SettingsGateway;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.core.instrumentation.SharedPreferencesLogger;
@@ -209,8 +210,12 @@
@Override
public boolean onPreferenceStartFragment(PreferenceFragment caller, Preference pref) {
- startPreferencePanel(caller, pref.getFragment(), pref.getExtras(), -1, pref.getTitle(),
- null, 0);
+ if (InstrumentedPreferenceFragment.usePreferenceScreenTitle()) {
+ startPreferencePanel(caller, pref.getFragment(), pref.getExtras(), -1, null, null, 0);
+ } else {
+ startPreferencePanel(caller, pref.getFragment(), pref.getExtras(), -1, pref.getTitle(),
+ null, 0);
+ }
return true;
}
@@ -629,7 +634,7 @@
if (titleRes < 0) {
if (titleText != null) {
title = titleText.toString();
- } else {
+ } else if (!InstrumentedPreferenceFragment.usePreferenceScreenTitle()) {
// There not much we can do in that case
title = "";
}
diff --git a/src/com/android/settings/TrustedCredentialsSettings.java b/src/com/android/settings/TrustedCredentialsSettings.java
index 587e814..12524b9 100644
--- a/src/com/android/settings/TrustedCredentialsSettings.java
+++ b/src/com/android/settings/TrustedCredentialsSettings.java
@@ -20,6 +20,7 @@
import static android.widget.LinearLayout.LayoutParams.WRAP_CONTENT;
import android.animation.LayoutTransition;
+import android.annotation.StringRes;
import android.annotation.UiThread;
import android.app.Activity;
import android.app.KeyguardManager;
@@ -91,6 +92,12 @@
private static final int REQUEST_CONFIRM_CREDENTIALS = 1;
@Override
+ @StringRes
+ protected int getTitle() {
+ return R.string.trusted_credentials;
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsEvent.TRUSTED_CREDENTIALS;
}
diff --git a/src/com/android/settings/UserCredentialsSettings.java b/src/com/android/settings/UserCredentialsSettings.java
index 6cf1ae0..f34b7a7 100644
--- a/src/com/android/settings/UserCredentialsSettings.java
+++ b/src/com/android/settings/UserCredentialsSettings.java
@@ -18,6 +18,7 @@
import android.annotation.LayoutRes;
import android.annotation.Nullable;
+import android.annotation.StringRes;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
@@ -84,6 +85,12 @@
}
}
+ @Override
+ @StringRes
+ protected int getTitle() {
+ return R.string.user_credentials;
+ }
+
protected void announceRemoval(String alias) {
if (!isAdded()) {
return;
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 8a832a9..b108c62 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -25,7 +25,6 @@
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.AppGlobals;
-import android.app.AppOpsManager;
import android.app.Dialog;
import android.app.Fragment;
import android.app.IActivityManager;
@@ -103,9 +102,6 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
-import android.view.animation.Animation;
-import android.view.animation.Animation.AnimationListener;
-import android.view.animation.AnimationUtils;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TabWidget;
@@ -114,8 +110,8 @@
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.UserIcons;
import com.android.internal.widget.LockPatternUtils;
-import com.android.settings.wrapper.FingerprintManagerWrapper;
import com.android.settings.wrapper.DevicePolicyManagerWrapper;
+import com.android.settings.wrapper.FingerprintManagerWrapper;
import java.io.IOException;
import java.io.InputStream;
@@ -242,12 +238,6 @@
return telephony != null && telephony.isVoiceCapable();
}
- public static boolean isWifiOnly(Context context) {
- ConnectivityManager cm = (ConnectivityManager)context.getSystemService(
- Context.CONNECTIVITY_SERVICE);
- return (cm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE) == false);
- }
-
/**
* Returns the WIFI IP Addresses, if any, taking into account IPv4 and IPv6 style addresses.
* @param context the application context
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index fd48c39..0fbf5fa 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -20,6 +20,7 @@
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
+import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
@@ -118,6 +119,7 @@
static final String EXTRA_PREFERENCE_KEY = "preference_key";
static final String EXTRA_CHECKED = "checked";
static final String EXTRA_TITLE = "title";
+ static final String EXTRA_RESOLVE_INFO = "resolve_info";
static final String EXTRA_SUMMARY = "summary";
static final String EXTRA_SETTINGS_TITLE = "settings_title";
static final String EXTRA_COMPONENT_NAME = "component_name";
@@ -464,23 +466,23 @@
}
for (int i = 0, count = installedServices.size(); i < count; ++i) {
- AccessibilityServiceInfo info = installedServices.get(i);
+ final AccessibilityServiceInfo info = installedServices.get(i);
+ final ResolveInfo resolveInfo = info.getResolveInfo();
RestrictedPreference preference =
new RestrictedPreference(downloadedServicesCategory.getContext());
- String title = info.getResolveInfo().loadLabel(getPackageManager()).toString();
+ final String title = resolveInfo.loadLabel(getPackageManager()).toString();
Drawable icon;
- if (info.getResolveInfo().getIconResource() == 0) {
+ if (resolveInfo.getIconResource() == 0) {
icon = ContextCompat.getDrawable(getContext(), R.mipmap.ic_accessibility_generic);
} else {
- icon = info.getResolveInfo().loadIcon(getPackageManager());
+ icon = resolveInfo.loadIcon(getPackageManager());
}
- ServiceInfo serviceInfo = info.getResolveInfo().serviceInfo;
+ ServiceInfo serviceInfo = resolveInfo.serviceInfo;
String packageName = serviceInfo.packageName;
ComponentName componentName = new ComponentName(packageName, serviceInfo.name);
- String componentNameKey = componentName.flattenToString();
preference.setKey(componentName.flattenToString());
@@ -520,6 +522,9 @@
extras.putString(EXTRA_PREFERENCE_KEY, preference.getKey());
extras.putBoolean(EXTRA_CHECKED, serviceEnabled);
extras.putString(EXTRA_TITLE, title);
+ if (usePreferenceScreenTitle()) {
+ extras.putParcelable(EXTRA_RESOLVE_INFO, resolveInfo);
+ }
String description = info.loadDescription(getPackageManager());
if (TextUtils.isEmpty(description)) {
diff --git a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
index 4e95cad..0f6bdd7 100644
--- a/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java
@@ -24,7 +24,6 @@
import android.provider.Settings;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
-import android.text.TextUtils;
import android.view.accessibility.AccessibilityManager;
import android.widget.Switch;
@@ -60,7 +59,9 @@
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.accessibility_shortcut_settings);
+ if (!usePreferenceScreenTitle()) {
+ addPreferencesFromResource(R.xml.accessibility_shortcut_settings);
+ }
mServicePreference = findPreference(SHORTCUT_SERVICE_KEY);
mOnLockScreenSwitchPreference = (SwitchPreference) findPreference(ON_LOCK_SCREEN_KEY);
mOnLockScreenSwitchPreference.setOnPreferenceChangeListener((Preference p, Object o) -> {
@@ -80,6 +81,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.accessibility_shortcut_settings;
+ }
+
+ @Override
protected void onInstallSwitchBarToggleSwitch() {
super.onInstallSwitchBarToggleSwitch();
mSwitchBar.addOnSwitchChangeListener((Switch switchView, boolean enabled) -> {
diff --git a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
index f66a5e2..5b0e76d 100644
--- a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
+++ b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
@@ -34,6 +34,7 @@
import android.view.accessibility.AccessibilityManager;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.settings.R;
import com.android.settings.applications.defaultapps.DefaultAppInfo;
import com.android.settings.applications.defaultapps.DefaultAppPickerFragment;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -54,6 +55,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.accessibility_shortcut_service_settings;
+ }
+
+ @Override
protected List<? extends DefaultAppInfo> getCandidates() {
final Context context = getContext();
final AccessibilityManager accessibilityManager = context
diff --git a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java
index 16df03e..5fa38e1 100644
--- a/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleAutoclickPreferenceFragment.java
@@ -110,10 +110,17 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.accessibility_autoclick_settings;
+ }
+
+ @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.accessibility_autoclick_settings);
+ if (!usePreferenceScreenTitle()) {
+ addPreferencesFromResource(R.xml.accessibility_autoclick_settings);
+ }
int delay = Settings.Secure.getInt(
getContentResolver(), Settings.Secure.ACCESSIBILITY_AUTOCLICK_DELAY,
@@ -153,7 +160,9 @@
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- setTitle(getString(R.string.accessibility_autoclick_preference_title));
+ if (!usePreferenceScreenTitle()) {
+ setTitle(getString(R.string.accessibility_autoclick_preference_title));
+ }
}
@Override
diff --git a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java
index 64d38af..6ee7217 100644
--- a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java
@@ -50,7 +50,9 @@
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.accessibility_daltonizer_settings);
+ if (!usePreferenceScreenTitle()) {
+ addPreferencesFromResource(R.xml.accessibility_daltonizer_settings);
+ }
mType = (ListPreference) findPreference("type");
@@ -62,6 +64,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.accessibility_daltonizer_settings;
+ }
+
+ @Override
protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
Settings.Secure.putInt(getContentResolver(), ENABLED, enabled ? 1 : 0);
}
@@ -80,7 +87,9 @@
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- setTitle(getString(R.string.accessibility_display_daltonizer_preference_title));
+ if (!usePreferenceScreenTitle()) {
+ setTitle(getString(R.string.accessibility_display_daltonizer_preference_title));
+ }
}
@Override
diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
index f66fb4d..213e585 100644
--- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
@@ -17,6 +17,7 @@
package com.android.settings.accessibility;
import android.content.Intent;
+import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
@@ -49,9 +50,14 @@
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(
- getActivity());
- setPreferenceScreen(preferenceScreen);
+ final int resId = getPreferenceScreenResId();
+ if (usePreferenceScreenTitle() && resId > 0) {
+ addPreferencesFromResource(resId);
+ } else {
+ PreferenceScreen preferenceScreen = getPreferenceManager().createPreferenceScreen(
+ getActivity());
+ setPreferenceScreen(preferenceScreen);
+ }
}
@Override
@@ -98,6 +104,13 @@
// Implement this to reset a checked listener.
}
+ /**
+ * Get the res id for static preference xml for this fragment.
+ */
+ protected int getPreferenceScreenResId() {
+ return -1;
+ }
+
private void installActionBarToggleSwitch() {
mSwitchBar.show();
onInstallSwitchBarToggleSwitch();
@@ -124,7 +137,11 @@
}
// Title.
- if (arguments.containsKey(AccessibilitySettings.EXTRA_TITLE)) {
+ if (usePreferenceScreenTitle()
+ && arguments.containsKey(AccessibilitySettings.EXTRA_RESOLVE_INFO)) {
+ ResolveInfo info = arguments.getParcelable(AccessibilitySettings.EXTRA_RESOLVE_INFO);
+ getActivity().setTitle(info.loadLabel(getPackageManager()).toString());
+ } else if (arguments.containsKey(AccessibilitySettings.EXTRA_TITLE)) {
setTitle(arguments.getString(AccessibilitySettings.EXTRA_TITLE));
}
diff --git a/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java
index c200d17..dbd269a 100644
--- a/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java
+++ b/src/com/android/settings/accessibility/ToggleFontSizePreferenceFragment.java
@@ -17,6 +17,7 @@
package com.android.settings.accessibility;
import android.annotation.Nullable;
+import android.annotation.StringRes;
import android.content.ContentResolver;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -55,6 +56,12 @@
}
@Override
+ @StringRes
+ protected int getTitle() {
+ return R.string.title_font_size;
+ }
+
+ @Override
protected Configuration createConfig(Configuration origConfig, int index) {
// Populate the sample layouts.
final Configuration config = new Configuration(origConfig);
diff --git a/src/com/android/settings/applications/BackgroundCheckSummary.java b/src/com/android/settings/applications/BackgroundCheckSummary.java
index dd5c89c..1b8a787 100644
--- a/src/com/android/settings/applications/BackgroundCheckSummary.java
+++ b/src/com/android/settings/applications/BackgroundCheckSummary.java
@@ -16,6 +16,7 @@
package com.android.settings.applications;
+import android.annotation.StringRes;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.preference.PreferenceFrameLayout;
@@ -57,4 +58,11 @@
return rootView;
}
+
+ @Override
+ @StringRes
+ protected int getTitle() {
+ return R.string.background_check_pref;
+ }
+
}
diff --git a/src/com/android/settings/applications/ConvertToFbe.java b/src/com/android/settings/applications/ConvertToFbe.java
index c5e6d77..192cd14 100644
--- a/src/com/android/settings/applications/ConvertToFbe.java
+++ b/src/com/android/settings/applications/ConvertToFbe.java
@@ -15,6 +15,7 @@
*/
package com.android.settings.applications;
+import android.annotation.Nullable;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
@@ -28,6 +29,7 @@
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.core.InstrumentedFragment;
+import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.password.ChooseLockSettingsHelper;
/* Class to prompt for conversion of userdata to file based encryption
@@ -45,6 +47,14 @@
}
@Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (InstrumentedPreferenceFragment.usePreferenceScreenTitle()) {
+ getActivity().setTitle(R.string.convert_to_file_encryption);
+ }
+ }
+
+ @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.convert_fbe, null);
diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java
index ccd91fd..8b8f9cf 100755
--- a/src/com/android/settings/applications/InstalledAppDetails.java
+++ b/src/com/android/settings/applications/InstalledAppDetails.java
@@ -348,7 +348,7 @@
enabled = false;
mActionButtons.setButton1Visible(false);
}
- mActionButtons.setButton1Text(R.string.uninstall_text);
+ mActionButtons.setButton1Text(R.string.uninstall_text).setButton1Positive(false);
return enabled;
}
@@ -930,11 +930,11 @@
}
}
- private void startAppInfoFragment(Class<?> fragment, CharSequence title) {
+ private void startAppInfoFragment(Class<?> fragment, int title) {
startAppInfoFragment(fragment, title, this, mAppEntry);
}
- public static void startAppInfoFragment(Class<?> fragment, CharSequence title,
+ public static void startAppInfoFragment(Class<?> fragment, int title,
SettingsPreferenceFragment caller, AppEntry appEntry) {
// start new fragment to display extended information
Bundle args = new Bundle();
@@ -942,7 +942,7 @@
args.putInt(ARG_PACKAGE_UID, appEntry.info.uid);
SettingsActivity sa = (SettingsActivity) caller.getActivity();
- sa.startPreferencePanel(caller, fragment.getName(), args, -1, title, caller,
+ sa.startPreferencePanel(caller, fragment.getName(), args, title, null, caller,
SUB_INFO_FRAGMENT);
}
@@ -1018,19 +1018,18 @@
@Override
public boolean onPreferenceClick(Preference preference) {
if (preference == mStoragePreference) {
- startAppInfoFragment(AppStorageSettings.class, mStoragePreference.getTitle());
+ startAppInfoFragment(AppStorageSettings.class, R.string.storage_settings);
} else if (preference == mNotificationPreference) {
- startAppInfoFragment(AppNotificationSettings.class,
- getString(R.string.app_notifications_title));
+ startAppInfoFragment(AppNotificationSettings.class, R.string.app_notifications_title);
} else if (preference == mPermissionsPreference) {
startManagePermissionsActivity();
} else if (preference == mLaunchPreference) {
- startAppInfoFragment(AppLaunchSettings.class, mLaunchPreference.getTitle());
+ startAppInfoFragment(AppLaunchSettings.class, R.string.launch_by_default);
} else if (preference == mMemoryPreference) {
ProcessStatsBase.launchMemoryDetail((SettingsActivity) getActivity(),
mStatsManager.getMemInfo(), mStats, false);
} else if (preference == mDataPreference) {
- startAppInfoFragment(AppDataUsage.class, getString(R.string.app_data_usage));
+ startAppInfoFragment(AppDataUsage.class, R.string.app_data_usage);
} else if (preference == mBatteryPreference) {
if (isBatteryStatsAvailable()) {
BatteryEntry entry = new BatteryEntry(getContext(), null, mUserManager, mSipper);
@@ -1109,8 +1108,7 @@
pref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
- startAppInfoFragment(DrawOverlayDetails.class,
- getString(R.string.draw_overlay));
+ startAppInfoFragment(DrawOverlayDetails.class, R.string.draw_overlay);
return true;
}
});
@@ -1123,8 +1121,7 @@
pref.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
- startAppInfoFragment(WriteSettingsDetails.class,
- getString(R.string.write_settings));
+ startAppInfoFragment(WriteSettingsDetails.class, R.string.write_settings);
return true;
}
});
@@ -1154,7 +1151,7 @@
@Override
public boolean onPreferenceClick(Preference preference) {
startAppInfoFragment(ExternalSourcesDetails.class,
- getString(R.string.install_other_apps));
+ R.string.install_other_apps);
return true;
}
});
diff --git a/src/com/android/settings/applications/ManageDomainUrls.java b/src/com/android/settings/applications/ManageDomainUrls.java
index b9e251c..ce919e1 100644
--- a/src/com/android/settings/applications/ManageDomainUrls.java
+++ b/src/com/android/settings/applications/ManageDomainUrls.java
@@ -63,7 +63,11 @@
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setAnimationAllowed(true);
- setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+ if (usePreferenceScreenTitle()) {
+ addPreferencesFromResource(R.xml.manage_domain_url_settings);
+ } else {
+ setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+ }
mApplicationsState = ApplicationsState.getInstance(
(Application) getContext().getApplicationContext());
mSession = mApplicationsState.newSession(this, getLifecycle());
diff --git a/src/com/android/settings/applications/PictureInPictureSettings.java b/src/com/android/settings/applications/PictureInPictureSettings.java
index 5569a4e..9b8a897 100644
--- a/src/com/android/settings/applications/PictureInPictureSettings.java
+++ b/src/com/android/settings/applications/PictureInPictureSettings.java
@@ -147,7 +147,9 @@
mPackageManager = new PackageManagerWrapper(mContext.getPackageManager());
mUserManager = new UserManagerWrapper(mContext.getSystemService(UserManager.class));
mIconDrawableFactory = IconDrawableFactory.newInstance(mContext);
- setPreferenceScreen(getPreferenceManager().createPreferenceScreen(mContext));
+ if (!usePreferenceScreenTitle()) {
+ setPreferenceScreen(getPreferenceManager().createPreferenceScreen(mContext));
+ }
}
@Override
@@ -199,6 +201,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.picture_in_picture_settings;
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsEvent.SETTINGS_MANAGE_PICTURE_IN_PICTURE;
}
diff --git a/src/com/android/settings/applications/PremiumSmsAccess.java b/src/com/android/settings/applications/PremiumSmsAccess.java
index 70bc17c..94945a9 100644
--- a/src/com/android/settings/applications/PremiumSmsAccess.java
+++ b/src/com/android/settings/applications/PremiumSmsAccess.java
@@ -81,6 +81,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.premium_sms_settings;
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.PREMIUM_SMS_ACCESS;
}
@@ -119,8 +124,14 @@
if (apps == null) return;
setEmptyText(R.string.premium_sms_none);
setLoading(false, true);
- final PreferenceScreen screen = getPreferenceManager().createPreferenceScreen(
- getPrefContext());
+ final PreferenceScreen screen;
+ if (usePreferenceScreenTitle()) {
+ screen = getPreferenceScreen();
+ screen.removeAll();
+ } else {
+ screen = getPreferenceManager().createPreferenceScreen(getPrefContext());
+ }
+
screen.setOrderingAsAdded(true);
for (int i = 0; i < apps.size(); i++) {
@@ -137,7 +148,9 @@
screen.addPreference(summary);
}
- setPreferenceScreen(screen);
+ if (!usePreferenceScreenTitle()) {
+ setPreferenceScreen(screen);
+ }
}
private void update() {
diff --git a/src/com/android/settings/applications/RunningServices.java b/src/com/android/settings/applications/RunningServices.java
index 634fefd..c79b704 100644
--- a/src/com/android/settings/applications/RunningServices.java
+++ b/src/com/android/settings/applications/RunningServices.java
@@ -15,6 +15,7 @@
*/
package com.android.settings.applications;
+import android.annotation.StringRes;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -109,6 +110,12 @@
}
@Override
+ @StringRes
+ protected int getTitle() {
+ return R.string.runningservices_settings_title;
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsEvent.RUNNING_SERVICES;
}
diff --git a/src/com/android/settings/applications/VrListenerSettings.java b/src/com/android/settings/applications/VrListenerSettings.java
index 99340b1..e40e3f9 100644
--- a/src/com/android/settings/applications/VrListenerSettings.java
+++ b/src/com/android/settings/applications/VrListenerSettings.java
@@ -58,6 +58,11 @@
return super.setEnabled(service, title, enable);
}
+ @Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.vr_listeners_settings;
+ }
+
@VisibleForTesting
void logSpecialPermissionChange(boolean enable, String packageName) {
int logCategory = enable ? MetricsEvent.APP_SPECIAL_PERMISSION_VRHELPER_ALLOW
diff --git a/src/com/android/settings/applications/assist/DefaultAssistPicker.java b/src/com/android/settings/applications/assist/DefaultAssistPicker.java
index 07bc809..01ca25a 100644
--- a/src/com/android/settings/applications/assist/DefaultAssistPicker.java
+++ b/src/com/android/settings/applications/assist/DefaultAssistPicker.java
@@ -65,6 +65,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.default_assist_settings;
+ }
+
+ @Override
protected List<DefaultAppInfo> getCandidates() {
mAvailableAssistants.clear();
addAssistServices();
diff --git a/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java b/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java
index 5adda23..7a5c13d 100644
--- a/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java
+++ b/src/com/android/settings/applications/assist/DefaultVoiceInputPicker.java
@@ -24,6 +24,7 @@
import com.android.internal.app.AssistUtils;
import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
import com.android.settings.applications.defaultapps.DefaultAppInfo;
import com.android.settings.applications.defaultapps.DefaultAppPickerFragment;
import com.android.settingslib.wrapper.PackageManagerWrapper;
@@ -55,6 +56,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.default_voice_settings;
+ }
+
+ @Override
protected List<VoiceInputDefaultAppInfo> getCandidates() {
final List<VoiceInputDefaultAppInfo> candidates = new ArrayList<>();
final Context context = getContext();
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java b/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java
index cc85f77..00dedf9 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultAutofillPicker.java
@@ -18,9 +18,7 @@
import android.Manifest;
import android.app.Activity;
-import android.app.Dialog;
import android.content.ComponentName;
-import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
@@ -30,7 +28,6 @@
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
-import android.os.Looper;
import android.provider.Settings;
import android.service.autofill.AutofillService;
import android.service.autofill.AutofillServiceInfo;
@@ -106,6 +103,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.default_autofill_settings;
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.DEFAULT_AUTOFILL_PICKER;
}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java b/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java
index fb9c3bf..2639c8d 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultBrowserPicker.java
@@ -21,6 +21,7 @@
import android.content.pm.ResolveInfo;
import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
import java.util.ArrayList;
import java.util.List;
@@ -31,6 +32,11 @@
public class DefaultBrowserPicker extends DefaultAppPickerFragment {
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.default_browser_settings;
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.DEFAULT_BROWSER_PICKER;
}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java b/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java
index 8f8c64e..bafd56f 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultEmergencyPicker.java
@@ -40,6 +40,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.default_emergency_settings;
+ }
+
+ @Override
protected List<DefaultAppInfo> getCandidates() {
final List<DefaultAppInfo> candidates = new ArrayList<>();
final List<ResolveInfo> infos = mPm.getPackageManager().queryIntentActivities(
diff --git a/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java b/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java
index 75f5292..63efc44 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultHomePicker.java
@@ -44,6 +44,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.default_home_settings;
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.DEFAULT_HOME_PICKER;
}
diff --git a/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java b/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java
index 9f6cc4d..6a1d919 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultPhonePicker.java
@@ -23,6 +23,7 @@
import android.text.TextUtils;
import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
import java.util.ArrayList;
import java.util.List;
@@ -44,6 +45,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.default_phone_settings;
+ }
+
+ @Override
protected List<DefaultAppInfo> getCandidates() {
final List<DefaultAppInfo> candidates = new ArrayList<>();
final List<String> dialerPackages =
diff --git a/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java b/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java
index 57159b3..4c6c9ce 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultSmsPicker.java
@@ -40,6 +40,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.default_sms_settings;
+ }
+
+ @Override
protected List<DefaultAppInfo> getCandidates() {
final Context context = getContext();
final Collection<SmsApplication.SmsApplicationData> smsApplications =
diff --git a/src/com/android/settings/applications/manageapplications/ManageApplications.java b/src/com/android/settings/applications/manageapplications/ManageApplications.java
index 3caa8ab..33762e4 100644
--- a/src/com/android/settings/applications/manageapplications/ManageApplications.java
+++ b/src/com/android/settings/applications/manageapplications/ManageApplications.java
@@ -223,10 +223,13 @@
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
- mApplicationsState = ApplicationsState.getInstance(getActivity().getApplication());
+ final Activity activity = getActivity();
+ mApplicationsState = ApplicationsState.getInstance(activity.getApplication());
- Intent intent = getActivity().getIntent();
+ Intent intent = activity.getIntent();
Bundle args = getArguments();
+ int screenTitle = intent.getIntExtra(
+ SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.notifications_label);
String className = args != null ? args.getString(EXTRA_CLASSNAME) : null;
if (className == null) {
className = intent.getComponent().getClassName();
@@ -235,6 +238,7 @@
|| this instanceof NotificationApps) {
mListType = LIST_TYPE_NOTIFICATION;
mNotifBackend = new NotificationBackend();
+ screenTitle = R.string.app_notifications_title;
} else if (className.equals(StorageUseActivity.class.getName())) {
if (args != null && args.containsKey(EXTRA_VOLUME_UUID)) {
mVolumeUuid = args.getString(EXTRA_VOLUME_UUID);
@@ -247,16 +251,21 @@
mSortOrder = R.id.sort_order_size;
} else if (className.equals(UsageAccessSettingsActivity.class.getName())) {
mListType = LIST_TYPE_USAGE_ACCESS;
+ screenTitle = R.string.usage_access;
} else if (className.equals(HighPowerApplicationsActivity.class.getName())) {
mListType = LIST_TYPE_HIGH_POWER;
// Default to showing system.
mShowSystem = true;
+ screenTitle = R.string.high_power_apps;
} else if (className.equals(OverlaySettingsActivity.class.getName())) {
mListType = LIST_TYPE_OVERLAY;
+ screenTitle = R.string.system_alert_window_settings;
} else if (className.equals(WriteSettingsActivity.class.getName())) {
mListType = LIST_TYPE_WRITE_SETTINGS;
+ screenTitle = R.string.write_settings;
} else if (className.equals(ManageExternalSourcesActivity.class.getName())) {
mListType = LIST_TYPE_MANAGE_SOURCES;
+ screenTitle = R.string.install_other_apps;
} else if (className.equals(GamesStorageActivity.class.getName())) {
mListType = LIST_TYPE_GAMES;
mSortOrder = R.id.sort_order_size;
@@ -280,9 +289,13 @@
mShowSystem = savedInstanceState.getBoolean(EXTRA_SHOW_SYSTEM, mShowSystem);
}
- mInvalidSizeStr = getActivity().getText(R.string.invalid_size_value);
+ mInvalidSizeStr = activity.getText(R.string.invalid_size_value);
- mResetAppsHelper = new ResetAppsHelper(getActivity());
+ mResetAppsHelper = new ResetAppsHelper(activity);
+
+ if (usePreferenceScreenTitle() && screenTitle > 0) {
+ activity.setTitle(screenTitle);
+ }
}
@Override
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsButtonsController.java b/src/com/android/settings/bluetooth/BluetoothDetailsButtonsController.java
index fe1727a..5cd8171 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsButtonsController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsButtonsController.java
@@ -33,7 +33,7 @@
private static final String KEY_ACTION_BUTTONS = "action_buttons";
private boolean mIsConnected;
- private boolean mButton1Initialized;
+ private boolean mConnectButtonInitialized;
private ActionButtonPreference mActionButtons;
public BluetoothDetailsButtonsController(Context context, PreferenceFragment fragment,
@@ -51,34 +51,34 @@
@Override
protected void init(PreferenceScreen screen) {
mActionButtons = ((ActionButtonPreference) screen.findPreference(getPreferenceKey()))
- .setButton2Text(R.string.forget)
- .setButton2OnClickListener((view) -> onForgetButtonPressed())
- .setButton2Positive(false)
- .setButton2Enabled(true);
+ .setButton1Text(R.string.forget)
+ .setButton1OnClickListener((view) -> onForgetButtonPressed())
+ .setButton1Positive(false)
+ .setButton1Enabled(true);
}
@Override
protected void refresh() {
- mActionButtons.setButton1Enabled(!mCachedDevice.isBusy());
+ mActionButtons.setButton2Enabled(!mCachedDevice.isBusy());
boolean previouslyConnected = mIsConnected;
mIsConnected = mCachedDevice.isConnected();
if (mIsConnected) {
- if (!mButton1Initialized || !previouslyConnected) {
+ if (!mConnectButtonInitialized || !previouslyConnected) {
mActionButtons
- .setButton1Text(R.string.bluetooth_device_context_disconnect)
- .setButton1OnClickListener(view -> mCachedDevice.disconnect())
- .setButton1Positive(false);
- mButton1Initialized = true;
+ .setButton2Text(R.string.bluetooth_device_context_disconnect)
+ .setButton2OnClickListener(view -> mCachedDevice.disconnect())
+ .setButton2Positive(false);
+ mConnectButtonInitialized = true;
}
} else {
- if (!mButton1Initialized || previouslyConnected) {
+ if (!mConnectButtonInitialized || previouslyConnected) {
mActionButtons
- .setButton1Text(R.string.bluetooth_device_context_connect)
- .setButton1OnClickListener(
+ .setButton2Text(R.string.bluetooth_device_context_connect)
+ .setButton2OnClickListener(
view -> mCachedDevice.connect(true /* connectAllProfiles */))
- .setButton1Positive(true);
- mButton1Initialized = true;
+ .setButton2Positive(true);
+ mConnectButtonInitialized = true;
}
}
}
diff --git a/src/com/android/settings/core/InstrumentedPreferenceFragment.java b/src/com/android/settings/core/InstrumentedPreferenceFragment.java
index a5d0715..9ab1a01 100644
--- a/src/com/android/settings/core/InstrumentedPreferenceFragment.java
+++ b/src/com/android/settings/core/InstrumentedPreferenceFragment.java
@@ -16,8 +16,15 @@
package com.android.settings.core;
+import android.annotation.Nullable;
+import android.annotation.StringRes;
import android.content.Context;
import android.os.Bundle;
+import android.support.annotation.XmlRes;
+import android.support.v7.preference.PreferenceScreen;
+import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
+import android.util.Log;
import com.android.settings.core.instrumentation.Instrumentable;
import com.android.settings.core.instrumentation.MetricsFeatureProvider;
@@ -32,6 +39,9 @@
public abstract class InstrumentedPreferenceFragment extends ObservablePreferenceFragment
implements Instrumentable {
+ private static final String TAG = "InstrumentedPrefFrag";
+ private static final String FEATURE_FLAG_USE_PREFERENCE_SCREEN_TITLE =
+ "settings_use_preference_screen_title";
protected MetricsFeatureProvider mMetricsFeatureProvider;
// metrics placeholder value. Only use this for development.
@@ -47,6 +57,17 @@
}
@Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (usePreferenceScreenTitle()) {
+ final int title = getTitle();
+ if (title != -1) {
+ getActivity().setTitle(title);
+ }
+ }
+ }
+
+ @Override
public void onAttach(Context context) {
super.onAttach(context);
mMetricsFeatureProvider = FeatureFactory.getFactory(context).getMetricsFeatureProvider();
@@ -62,6 +83,16 @@
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
}
+ @Override
+ public void addPreferencesFromResource(@XmlRes int preferencesResId) {
+ super.addPreferencesFromResource(preferencesResId);
+ updateActivityTitleWithScreenTitle(getPreferenceScreen());
+ }
+
+ public static boolean usePreferenceScreenTitle() {
+ return FeatureFlagUtils.isEnabled(FEATURE_FLAG_USE_PREFERENCE_SCREEN_TITLE);
+ }
+
protected final Context getPrefContext() {
return getPreferenceManager().getContext();
}
@@ -69,4 +100,27 @@
protected final VisibilityLoggerMixin getVisibilityLogger() {
return mVisibilityLoggerMixin;
}
+
+ /**
+ * Return the resource id of the title to be used for the fragment. This is for preference
+ * fragments that do not have an explicit preference screen xml, and hence the title need to be
+ * specified separately. Do not use this method if the title is already specified in the
+ * preference screen.
+ */
+ @StringRes
+ protected int getTitle() {
+ return -1;
+ }
+
+ private void updateActivityTitleWithScreenTitle(PreferenceScreen screen) {
+ if (usePreferenceScreenTitle() && screen != null) {
+ final CharSequence title = screen.getTitle();
+ if (!TextUtils.isEmpty(title)) {
+ getActivity().setTitle(title);
+ } else {
+ Log.w(TAG, "Screen title missing for fragment " + this.getClass().getName());
+ }
+ }
+ }
+
}
diff --git a/src/com/android/settings/datausage/DataPlanUsageSummary.java b/src/com/android/settings/datausage/DataPlanUsageSummary.java
index 1905deb..912db0a 100644
--- a/src/com/android/settings/datausage/DataPlanUsageSummary.java
+++ b/src/com/android/settings/datausage/DataPlanUsageSummary.java
@@ -27,7 +27,6 @@
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.UserManager;
-import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.Preference;
@@ -44,14 +43,12 @@
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.dashboard.SummaryLoader;
-import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.Indexable;
import com.android.settingslib.NetworkPolicyEditor;
import com.android.settingslib.net.DataUsageController;
import java.util.ArrayList;
import java.util.List;
-public class DataPlanUsageSummary extends DataUsageBase implements Indexable {
+public class DataPlanUsageSummary extends DataUsageBase {
public static final String KEY_DATA_PLAN_USAGE = "data_plan_usage";
@@ -353,50 +350,5 @@
public static final SummaryLoader.SummaryProviderFactory SUMMARY_PROVIDER_FACTORY
= SummaryProvider::new;
-
- /**
- * For search
- */
- public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
- new BaseSearchIndexProvider() {
-
- @Override
- public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
- boolean enabled) {
- List<SearchIndexableResource> resources = new ArrayList<>();
- SearchIndexableResource resource = new SearchIndexableResource(context);
- resource.xmlResId = R.xml.data_usage;
- resources.add(resource);
-
- resource = new SearchIndexableResource(context);
- resource.xmlResId = R.xml.data_plan_usage_cell_data_preference_screen;
- resources.add(resource);
-
- resource = new SearchIndexableResource(context);
- resource.xmlResId = R.xml.data_usage_wifi;
- resources.add(resource);
-
- return resources;
- }
-
- @Override
- public List<String> getNonIndexableKeys(Context context) {
- List<String> keys = super.getNonIndexableKeys(context);
-
- if (!DataUsageUtils.hasMobileData(context)) {
- keys.add(KEY_MOBILE_USAGE_TITLE);
- keys.add(KEY_MOBILE_DATA_USAGE_TOGGLE);
- }
-
- if (!DataUsageUtils.hasWifiRadio(context)) {
- keys.add(KEY_WIFI_DATA_USAGE);
- keys.add(KEY_NETWORK_RESTRICTIONS);
- }
-
- keys.add(KEY_WIFI_USAGE_TITLE);
-
- return keys;
- }
- };
}
diff --git a/src/com/android/settings/datausage/DataUsagePreference.java b/src/com/android/settings/datausage/DataUsagePreference.java
index 63f6054..35cfbbc 100644
--- a/src/com/android/settings/datausage/DataUsagePreference.java
+++ b/src/com/android/settings/datausage/DataUsagePreference.java
@@ -16,23 +16,36 @@
import android.content.Context;
import android.content.Intent;
+import android.content.res.TypedArray;
import android.net.NetworkTemplate;
import android.os.Bundle;
+import android.support.v4.content.res.TypedArrayUtils;
import android.support.v7.preference.Preference;
import android.text.format.Formatter;
import android.util.AttributeSet;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.Utils;
+import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settingslib.net.DataUsageController;
public class DataUsagePreference extends Preference implements TemplatePreference {
private NetworkTemplate mTemplate;
private int mSubId;
+ private int mTitleRes;
public DataUsagePreference(Context context, AttributeSet attrs) {
super(context, attrs);
+ if (InstrumentedPreferenceFragment.usePreferenceScreenTitle()) {
+ final TypedArray a = context.obtainStyledAttributes(
+ attrs, new int[] { com.android.internal.R.attr.title },
+ TypedArrayUtils.getAttr(
+ context, android.support.v7.preference.R.attr.preferenceStyle,
+ android.R.attr.preferenceStyle), 0);
+ mTitleRes = a.getResourceId(0, 0);
+ a.recycle();
+ }
}
@Override
@@ -52,6 +65,11 @@
Bundle args = new Bundle();
args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE, mTemplate);
args.putInt(DataUsageList.EXTRA_SUB_ID, mSubId);
+ if (mTitleRes > 0) {
+ return Utils.onBuildStartFragmentIntent(getContext(), DataUsageList.class.getName(),
+ args, getContext().getPackageName(), mTitleRes, null, false,
+ MetricsProto.MetricsEvent.VIEW_UNKNOWN);
+ }
return Utils.onBuildStartFragmentIntent(getContext(), DataUsageList.class.getName(), args,
getContext().getPackageName(), 0, getTitle(), false,
MetricsProto.MetricsEvent.VIEW_UNKNOWN);
diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccess.java b/src/com/android/settings/datausage/UnrestrictedDataAccess.java
index c60b841..8fad986 100644
--- a/src/com/android/settings/datausage/UnrestrictedDataAccess.java
+++ b/src/com/android/settings/datausage/UnrestrictedDataAccess.java
@@ -59,7 +59,11 @@
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setAnimationAllowed(true);
- setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+ if (usePreferenceScreenTitle()) {
+ addPreferencesFromResource(R.xml.unrestricted_data_access_settings);
+ } else {
+ setPreferenceScreen(getPreferenceManager().createPreferenceScreen(getContext()));
+ }
mApplicationsState = ApplicationsState.getInstance(
(Application) getContext().getApplicationContext());
mDataSaverBackend = new DataSaverBackend(getContext());
@@ -267,7 +271,7 @@
if (mState.isDataSaverBlacklisted) {
// app is blacklisted, launch App Data Usage screen
InstalledAppDetails.startAppInfoFragment(AppDataUsage.class,
- getContext().getString(R.string.app_data_usage),
+ R.string.app_data_usage,
UnrestrictedDataAccess.this,
mEntry);
} else {
diff --git a/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java b/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java
index 8a9568a..d4bd59b 100644
--- a/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java
+++ b/src/com/android/settings/datetime/AutoTimeZonePreferenceController.java
@@ -21,8 +21,8 @@
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
public class AutoTimeZonePreferenceController extends AbstractPreferenceController
diff --git a/src/com/android/settings/datetime/ZonePicker.java b/src/com/android/settings/datetime/ZonePicker.java
index 2d58dd8..00a77df 100644
--- a/src/com/android/settings/datetime/ZonePicker.java
+++ b/src/com/android/settings/datetime/ZonePicker.java
@@ -34,6 +34,7 @@
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
+import com.android.settings.core.InstrumentedPreferenceFragment;
import com.android.settings.core.instrumentation.Instrumentable;
import com.android.settings.core.instrumentation.VisibilityLoggerMixin;
import com.android.settingslib.datetime.ZoneGetter;
@@ -164,6 +165,9 @@
// Sets the adapter
setSorting(true);
setHasOptionsMenu(true);
+ if (InstrumentedPreferenceFragment.usePreferenceScreenTitle()) {
+ activity.setTitle(R.string.date_time_set_timezone);
+ }
}
@Override
diff --git a/src/com/android/settings/development/CameraHalHdrplusPreferenceController.java b/src/com/android/settings/development/CameraHalHdrplusPreferenceController.java
index 39b6db2..a5390cc 100644
--- a/src/com/android/settings/development/CameraHalHdrplusPreferenceController.java
+++ b/src/com/android/settings/development/CameraHalHdrplusPreferenceController.java
@@ -104,6 +104,6 @@
}
private boolean isHalHdrplusEnabled() {
- return SystemProperties.getBoolean(PROPERTY_CAMERA_HAL_HDRPLUS, false);
+ return SystemProperties.getBoolean(PROPERTY_CAMERA_HAL_HDRPLUS, true);
}
}
diff --git a/src/com/android/settings/development/CameraHalHdrPlusPreferenceControllerV2.java b/src/com/android/settings/development/CameraHalHdrplusPreferenceControllerV2.java
similarity index 95%
rename from src/com/android/settings/development/CameraHalHdrPlusPreferenceControllerV2.java
rename to src/com/android/settings/development/CameraHalHdrplusPreferenceControllerV2.java
index cb03bfc..b8828fe 100644
--- a/src/com/android/settings/development/CameraHalHdrPlusPreferenceControllerV2.java
+++ b/src/com/android/settings/development/CameraHalHdrplusPreferenceControllerV2.java
@@ -29,7 +29,7 @@
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.development.DeveloperOptionsPreferenceController;
-public class CameraHalHdrPlusPreferenceControllerV2 extends
+public class CameraHalHdrplusPreferenceControllerV2 extends
DeveloperOptionsPreferenceController implements
Preference.OnPreferenceChangeListener, PreferenceControllerMixin {
@@ -45,7 +45,7 @@
private SwitchPreference mPreference;
- public CameraHalHdrPlusPreferenceControllerV2(Context context) {
+ public CameraHalHdrplusPreferenceControllerV2(Context context) {
super(context);
}
@@ -95,6 +95,6 @@
}
private boolean isHalHdrplusEnabled() {
- return SystemProperties.getBoolean(PROPERTY_CAMERA_HAL_HDRPLUS, false /* default */);
+ return SystemProperties.getBoolean(PROPERTY_CAMERA_HAL_HDRPLUS, true /* default */);
}
}
diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
index 8a1b649..83f395f 100644
--- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
+++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
@@ -377,7 +377,7 @@
controllers.add(new LogPersistPreferenceControllerV2(context, fragment, lifecycle));
controllers.add(new ConnectivityMonitorPreferenceControllerV2(context));
controllers.add(new CameraLaserSensorPreferenceControllerV2(context));
- controllers.add(new CameraHalHdrPlusPreferenceControllerV2(context));
+ controllers.add(new CameraHalHdrplusPreferenceControllerV2(context));
controllers.add(new WifiDisplayCertificationPreferenceController(context));
controllers.add(new WifiVerboseLoggingPreferenceController(context));
controllers.add(new WifiAggressiveHandoverPreferenceController(context));
diff --git a/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java b/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java
index 998e431..c482d87 100644
--- a/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java
+++ b/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java
@@ -42,7 +42,7 @@
@Override
protected int getPreferenceScreenResId() {
- return R.xml.placeholder_prefs;
+ return R.xml.feature_flags_settings;
}
@Override
diff --git a/src/com/android/settings/development/qstile/DevelopmentTileConfigFragment.java b/src/com/android/settings/development/qstile/DevelopmentTileConfigFragment.java
index c822de0..ca4181e 100644
--- a/src/com/android/settings/development/qstile/DevelopmentTileConfigFragment.java
+++ b/src/com/android/settings/development/qstile/DevelopmentTileConfigFragment.java
@@ -29,7 +29,6 @@
public class DevelopmentTileConfigFragment extends DashboardFragment {
private static final String TAG = "DevelopmentTileConfig";
-
@Override
protected String getLogTag() {
return TAG;
@@ -37,7 +36,7 @@
@Override
protected int getPreferenceScreenResId() {
- return R.xml.placeholder_prefs;
+ return R.xml.development_tile_settings;
}
@Override
diff --git a/src/com/android/settings/deviceinfo/BasebandVersionPreferenceController.java b/src/com/android/settings/deviceinfo/BasebandVersionPreferenceController.java
index 018a068..90d4c11 100644
--- a/src/com/android/settings/deviceinfo/BasebandVersionPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/BasebandVersionPreferenceController.java
@@ -20,8 +20,8 @@
import android.support.v7.preference.Preference;
import com.android.settings.R;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
public class BasebandVersionPreferenceController extends AbstractPreferenceController implements
diff --git a/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java b/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java
index f1dc415..e7fab5a 100644
--- a/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/DeviceModelPreferenceController.java
@@ -21,7 +21,10 @@
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
+import com.android.settings.DeviceInfoSettings;
+import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.DeviceInfoUtils;
import com.android.settingslib.core.AbstractPreferenceController;
@@ -48,7 +51,12 @@
super.displayPreference(screen);
final Preference pref = screen.findPreference(KEY_DEVICE_MODEL);
if (pref != null) {
- pref.setSummary(getDeviceModel());
+ if (FeatureFlagUtils.isEnabled(DeviceInfoSettings.DEVICE_INFO_V2_FEATURE_FLAG)) {
+ pref.setSummary(mContext.getResources().getString(R.string.model_summary,
+ getDeviceModel()));
+ } else {
+ pref.setSummary(getDeviceModel());
+ }
}
}
diff --git a/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java b/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java
index 60082c7..3d825b9 100644
--- a/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java
+++ b/src/com/android/settings/deviceinfo/HardwareInfoDialogFragment.java
@@ -18,15 +18,18 @@
import android.app.AlertDialog;
import android.app.Dialog;
+import android.os.Build;
import android.os.Bundle;
import android.os.SystemProperties;
import android.support.annotation.VisibleForTesting;
import android.text.TextUtils;
+import android.util.FeatureFlagUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.DeviceInfoSettings;
import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -54,6 +57,15 @@
// Model
setText(content, R.id.model_label, R.id.model_value,
DeviceModelPreferenceController.getDeviceModel());
+
+ // Serial number
+ if (FeatureFlagUtils.isEnabled(DeviceInfoSettings.DEVICE_INFO_V2_FEATURE_FLAG)) {
+ setText(content, R.id.serial_number_label, R.id.serial_number_value, getSerialNumber());
+ } else {
+ content.findViewById(R.id.serial_number_label).setVisibility(View.GONE);
+ content.findViewById(R.id.serial_number_value).setVisibility(View.GONE);
+ }
+
// Hardware rev
setText(content, R.id.hardware_rev_label, R.id.hardware_rev_value,
SystemProperties.get("ro.boot.hardware.revision"));
@@ -77,4 +89,9 @@
valueView.setVisibility(View.GONE);
}
}
+
+ @VisibleForTesting
+ String getSerialNumber() {
+ return Build.getSerial();
+ }
}
diff --git a/src/com/android/settings/deviceinfo/ImeiInfoPreferenceController.java b/src/com/android/settings/deviceinfo/ImeiInfoPreferenceController.java
index 8db70c7..f564734 100644
--- a/src/com/android/settings/deviceinfo/ImeiInfoPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/ImeiInfoPreferenceController.java
@@ -17,13 +17,11 @@
package com.android.settings.deviceinfo;
import android.content.Context;
-import android.os.UserManager;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController;
-public class ImeiInfoPreferenceController extends AbstractPreferenceController
+public class ImeiInfoPreferenceController extends AbstractSimStatusImeiInfoPreferenceController
implements PreferenceControllerMixin {
private static final String KEY_IMEI_INFO = "imei_info";
@@ -33,12 +31,6 @@
}
@Override
- public boolean isAvailable() {
- return ((UserManager) mContext.getSystemService(Context.USER_SERVICE)).isAdminUser()
- && !Utils.isWifiOnly(mContext);
- }
-
- @Override
public String getPreferenceKey() {
return KEY_IMEI_INFO;
}
diff --git a/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java b/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java
index 31b905e..e466bbf 100644
--- a/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/SerialNumberPreferenceController.java
@@ -24,7 +24,10 @@
/**
* Preference controller for displaying device serial number. Wraps {@link Build#getSerial()}.
+ *
+ * deprecated because this preference is no longer used in About Phone V2
*/
+@Deprecated
public class SerialNumberPreferenceController extends
AbstractSerialNumberPreferenceController implements
PreferenceControllerMixin {
diff --git a/src/com/android/settings/deviceinfo/SimStatusPreferenceController.java b/src/com/android/settings/deviceinfo/SimStatusPreferenceController.java
index 9dfc95b..99441b5 100644
--- a/src/com/android/settings/deviceinfo/SimStatusPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/SimStatusPreferenceController.java
@@ -17,13 +17,11 @@
package com.android.settings.deviceinfo;
import android.content.Context;
-import android.os.UserManager;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.deviceinfo.AbstractSimStatusImeiInfoPreferenceController;
-public class SimStatusPreferenceController extends AbstractPreferenceController
+public class SimStatusPreferenceController extends AbstractSimStatusImeiInfoPreferenceController
implements PreferenceControllerMixin {
private static final String KEY_SIM_STATUS = "sim_status";
@@ -33,12 +31,6 @@
}
@Override
- public boolean isAvailable() {
- return ((UserManager) mContext.getSystemService(Context.USER_SERVICE)).isAdminUser()
- && !Utils.isWifiOnly(mContext);
- }
-
- @Override
public String getPreferenceKey() {
return KEY_SIM_STATUS;
}
diff --git a/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java b/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
index 280098d..2fb538e 100644
--- a/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
+++ b/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceController.java
@@ -94,7 +94,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
AmbientDisplaySettings.class.getName(), KEY_ALWAYS_ON,
mContext.getString(R.string.ambient_display_screen_title));
diff --git a/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java b/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
index c1af133..68a21ce 100644
--- a/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
+++ b/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceController.java
@@ -13,6 +13,9 @@
*/
package com.android.settings.display;
+import static android.provider.Settings.Secure.DOZE_ENABLED;
+import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_AMBIENT_DISPLAY;
+
import android.content.Context;
import android.content.Intent;
import android.os.UserHandle;
@@ -30,9 +33,6 @@
import com.android.settings.search.ResultPayload;
import com.android.settingslib.core.AbstractPreferenceController;
-import static android.provider.Settings.Secure.DOZE_ENABLED;
-import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_AMBIENT_DISPLAY;
-
public class AmbientDisplayNotificationsPreferenceController extends
AbstractPreferenceController implements PreferenceControllerMixin,
Preference.OnPreferenceChangeListener {
@@ -86,7 +86,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
AmbientDisplaySettings.class.getName(), KEY_AMBIENT_DISPLAY_NOTIFICATIONS,
mContext.getString(R.string.ambient_display_screen_title));
diff --git a/src/com/android/settings/display/AutoBrightnessPreferenceController.java b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
index e74a1a0..f242022 100644
--- a/src/com/android/settings/display/AutoBrightnessPreferenceController.java
+++ b/src/com/android/settings/display/AutoBrightnessPreferenceController.java
@@ -73,7 +73,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
DisplaySettings.class.getName(), mAutoBrightnessKey,
mContext.getString(R.string.display_settings));
diff --git a/src/com/android/settings/display/ColorModePreferenceController.java b/src/com/android/settings/display/ColorModePreferenceController.java
index 2d669d0..2ab2ec9 100644
--- a/src/com/android/settings/display/ColorModePreferenceController.java
+++ b/src/com/android/settings/display/ColorModePreferenceController.java
@@ -18,36 +18,24 @@
import android.os.Parcel;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.os.SystemProperties;
-import android.support.v7.preference.Preference;
-import android.support.v7.preference.TwoStatePreference;
import android.util.Log;
+
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.core.AbstractPreferenceController;
public class ColorModePreferenceController extends AbstractPreferenceController implements
- PreferenceControllerMixin, Preference.OnPreferenceChangeListener {
+ PreferenceControllerMixin {
private static final String TAG = "ColorModePreference";
-
private static final String KEY_COLOR_MODE = "color_mode";
- @VisibleForTesting
- static final float COLOR_SATURATION_DEFAULT = 1.0f;
- @VisibleForTesting
- static final float COLOR_SATURATION_VIVID = 1.1f;
+ private static final int SURFACE_FLINGER_TRANSACTION_QUERY_WIDE_COLOR = 1024;
- private static final int SURFACE_FLINGER_TRANSACTION_SATURATION = 1022;
- @VisibleForTesting
- static final String PERSISTENT_PROPERTY_SATURATION = "persist.sys.sf.color_saturation";
-
- private final IBinder mSurfaceFlinger;
private final ConfigurationWrapper mConfigWrapper;
public ColorModePreferenceController(Context context) {
super(context);
- mSurfaceFlinger = ServiceManager.getService("SurfaceFlinger");
- mConfigWrapper = new ConfigurationWrapper(context);
+ mConfigWrapper = new ConfigurationWrapper();
}
@Override
@@ -56,64 +44,35 @@
}
@Override
- public void updateState(Preference preference) {
- TwoStatePreference colorMode = (TwoStatePreference) preference;
- colorMode.setChecked(getSaturationValue() > 1.0f);
- }
-
- @Override
public boolean isAvailable() {
return mConfigWrapper.isScreenWideColorGamut();
}
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- float saturation = (boolean) newValue
- ? COLOR_SATURATION_VIVID : COLOR_SATURATION_DEFAULT;
-
- SystemProperties.set(PERSISTENT_PROPERTY_SATURATION, Float.toString(saturation));
- applySaturation(saturation);
-
- return true;
- }
-
- /**
- * Propagates the provided saturation to the SurfaceFlinger.
- */
- private void applySaturation(float saturation) {
- if (mSurfaceFlinger != null) {
- final Parcel data = Parcel.obtain();
- data.writeInterfaceToken("android.ui.ISurfaceComposer");
- data.writeFloat(saturation);
- try {
- mSurfaceFlinger.transact(SURFACE_FLINGER_TRANSACTION_SATURATION, data, null, 0);
- } catch (RemoteException ex) {
- Log.e(TAG, "Failed to set saturation", ex);
- } finally {
- data.recycle();
- }
- }
- }
-
- private static float getSaturationValue() {
- try {
- return Float.parseFloat(SystemProperties.get(
- PERSISTENT_PROPERTY_SATURATION, Float.toString(COLOR_SATURATION_DEFAULT)));
- } catch (NumberFormatException e) {
- return COLOR_SATURATION_DEFAULT;
- }
- }
-
@VisibleForTesting
static class ConfigurationWrapper {
- private final Context mContext;
+ private final IBinder mSurfaceFlinger;
- ConfigurationWrapper(Context context) {
- mContext = context;
+ ConfigurationWrapper() {
+ mSurfaceFlinger = ServiceManager.getService("SurfaceFlinger");
}
boolean isScreenWideColorGamut() {
- return mContext.getResources().getConfiguration().isScreenWideColorGamut();
+ if (mSurfaceFlinger != null) {
+ final Parcel data = Parcel.obtain();
+ final Parcel reply = Parcel.obtain();
+ data.writeInterfaceToken("android.ui.ISurfaceComposer");
+ try {
+ mSurfaceFlinger.transact(SURFACE_FLINGER_TRANSACTION_QUERY_WIDE_COLOR,
+ data, reply, 0);
+ return reply.readBoolean();
+ } catch (RemoteException ex) {
+ Log.e(TAG, "Failed to query wide color support", ex);
+ } finally {
+ data.recycle();
+ reply.recycle();
+ }
+ }
+ return false;
}
}
}
diff --git a/src/com/android/settings/display/ColorModePreferenceFragment.java b/src/com/android/settings/display/ColorModePreferenceFragment.java
new file mode 100644
index 0000000..7c8b841
--- /dev/null
+++ b/src/com/android/settings/display/ColorModePreferenceFragment.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+package com.android.settings.display;
+
+import android.app.ActivityManager;
+import android.app.IActivityManager;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.os.IBinder;
+import android.os.Parcel;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.SystemProperties;
+import android.support.annotation.VisibleForTesting;
+import android.util.Log;
+
+import com.android.internal.logging.nano.MetricsProto;
+
+import com.android.settings.R;
+import com.android.settings.widget.RadioButtonPickerFragment;
+
+import java.util.Arrays;
+import java.util.List;
+
+@SuppressWarnings("WeakerAccess")
+public class ColorModePreferenceFragment extends RadioButtonPickerFragment {
+ private static final String TAG = "ColorModePreferenceFragment";
+
+ @VisibleForTesting
+ static final float COLOR_SATURATION_NATURAL = 1.0f;
+ @VisibleForTesting
+ static final float COLOR_SATURATION_BOOSTED = 1.1f;
+
+ private static final int SURFACE_FLINGER_TRANSACTION_SATURATION = 1022;
+ private static final int SURFACE_FLINGER_TRANSACTION_NATIVE_MODE = 1023;
+
+ @VisibleForTesting
+ static final String PERSISTENT_PROPERTY_SATURATION = "persist.sys.sf.color_saturation";
+ @VisibleForTesting
+ static final String PERSISTENT_PROPERTY_NATIVE_MODE = "persist.sys.sf.native_mode";
+
+ @VisibleForTesting
+ static final String KEY_COLOR_MODE_NATURAL = "color_mode_natural";
+ @VisibleForTesting
+ static final String KEY_COLOR_MODE_BOOSTED = "color_mode_boosted";
+ @VisibleForTesting
+ static final String KEY_COLOR_MODE_SATURATED = "color_mode_saturated";
+
+ private IBinder mSurfaceFlinger;
+ private IActivityManager mActivityManager;
+
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ mSurfaceFlinger = ServiceManager.getService("SurfaceFlinger");
+ mActivityManager = ActivityManager.getService();
+ }
+
+ @Override
+ protected List<? extends CandidateInfo> getCandidates() {
+ Context c = getContext();
+ return Arrays.asList(
+ new ColorModeCandidateInfo(c.getString(R.string.color_mode_option_natural),
+ KEY_COLOR_MODE_NATURAL),
+ new ColorModeCandidateInfo(c.getString(R.string.color_mode_option_boosted),
+ KEY_COLOR_MODE_BOOSTED),
+ new ColorModeCandidateInfo(c.getString(R.string.color_mode_option_saturated),
+ KEY_COLOR_MODE_SATURATED)
+ );
+ }
+
+ @Override
+ protected String getDefaultKey() {
+ if (isNativeModeEnabled()) {
+ return KEY_COLOR_MODE_SATURATED;
+ }
+ if (getSaturationValue() > COLOR_SATURATION_NATURAL) {
+ return KEY_COLOR_MODE_BOOSTED;
+ }
+ return KEY_COLOR_MODE_NATURAL;
+ }
+
+ @Override
+ protected boolean setDefaultKey(String key) {
+ switch (key) {
+ case KEY_COLOR_MODE_NATURAL:
+ applySaturation(COLOR_SATURATION_NATURAL);
+ setNativeMode(false);
+ break;
+ case KEY_COLOR_MODE_BOOSTED:
+ applySaturation(COLOR_SATURATION_BOOSTED);
+ setNativeMode(false);
+ break;
+ case KEY_COLOR_MODE_SATURATED:
+ applySaturation(COLOR_SATURATION_NATURAL);
+ setNativeMode(true);
+ break;
+ }
+
+ updateConfiguration();
+
+ return true;
+ }
+
+ @VisibleForTesting
+ void updateConfiguration() {
+ try {
+ mActivityManager.updateConfiguration(null);
+ } catch (RemoteException e) {
+ Log.d(TAG, "Could not update configuration", e);
+ }
+ }
+
+ @Override
+ public int getMetricsCategory() {
+ return MetricsProto.MetricsEvent.COLOR_MODE_SETTINGS;
+ }
+
+ /**
+ * Propagates the provided saturation to the SurfaceFlinger.
+ */
+ private void applySaturation(float saturation) {
+ SystemProperties.set(PERSISTENT_PROPERTY_SATURATION, Float.toString(saturation));
+ if (mSurfaceFlinger != null) {
+ final Parcel data = Parcel.obtain();
+ data.writeInterfaceToken("android.ui.ISurfaceComposer");
+ data.writeFloat(saturation);
+ try {
+ mSurfaceFlinger.transact(SURFACE_FLINGER_TRANSACTION_SATURATION, data, null, 0);
+ } catch (RemoteException ex) {
+ Log.e(TAG, "Failed to set saturation", ex);
+ } finally {
+ data.recycle();
+ }
+ }
+ }
+
+ private static float getSaturationValue() {
+ try {
+ return Float.parseFloat(SystemProperties.get(
+ PERSISTENT_PROPERTY_SATURATION, Float.toString(COLOR_SATURATION_NATURAL)));
+ } catch (NumberFormatException e) {
+ return COLOR_SATURATION_NATURAL;
+ }
+ }
+
+ /**
+ * Toggles native mode on/off in SurfaceFlinger.
+ */
+ private void setNativeMode(boolean enabled) {
+ SystemProperties.set(PERSISTENT_PROPERTY_NATIVE_MODE, enabled ? "1" : "0");
+ if (mSurfaceFlinger != null) {
+ final Parcel data = Parcel.obtain();
+ data.writeInterfaceToken("android.ui.ISurfaceComposer");
+ data.writeInt(enabled ? 1 : 0);
+ try {
+ mSurfaceFlinger.transact(SURFACE_FLINGER_TRANSACTION_NATIVE_MODE, data, null, 0);
+ } catch (RemoteException ex) {
+ Log.e(TAG, "Failed to set native mode", ex);
+ } finally {
+ data.recycle();
+ }
+ }
+ }
+
+ private static boolean isNativeModeEnabled() {
+ return SystemProperties.getBoolean(PERSISTENT_PROPERTY_NATIVE_MODE, false);
+ }
+
+ @VisibleForTesting
+ static class ColorModeCandidateInfo extends CandidateInfo {
+ private final CharSequence mLabel;
+ private final String mKey;
+
+ ColorModeCandidateInfo(CharSequence label, String key) {
+ super(true);
+ mLabel = label;
+ mKey = key;
+ }
+
+ @Override
+ public CharSequence loadLabel() {
+ return mLabel;
+ }
+
+ @Override
+ public Drawable loadIcon() {
+ return null;
+ }
+
+ @Override
+ public String getKey() {
+ return mKey;
+ }
+ }
+}
diff --git a/src/com/android/settings/display/ScreenZoomSettings.java b/src/com/android/settings/display/ScreenZoomSettings.java
index ec3999b..ab92155 100644
--- a/src/com/android/settings/display/ScreenZoomSettings.java
+++ b/src/com/android/settings/display/ScreenZoomSettings.java
@@ -17,6 +17,7 @@
package com.android.settings.display;
import android.annotation.Nullable;
+import android.annotation.StringRes;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
@@ -99,6 +100,12 @@
}
@Override
+ @StringRes
+ protected int getTitle() {
+ return R.string.screen_zoom_title;
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsEvent.DISPLAY_SCREEN_ZOOM;
}
diff --git a/src/com/android/settings/display/VrDisplayPreferencePicker.java b/src/com/android/settings/display/VrDisplayPreferencePicker.java
index bccdaa5..5487c46 100644
--- a/src/com/android/settings/display/VrDisplayPreferencePicker.java
+++ b/src/com/android/settings/display/VrDisplayPreferencePicker.java
@@ -33,6 +33,11 @@
static final String PREF_KEY_PREFIX = "vr_display_pref_";
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.vr_display_settings;
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.VR_DISPLAY_PREFERENCE;
}
diff --git a/src/com/android/settings/dream/CurrentDreamPicker.java b/src/com/android/settings/dream/CurrentDreamPicker.java
index da9bf9e..f0d520c 100644
--- a/src/com/android/settings/dream/CurrentDreamPicker.java
+++ b/src/com/android/settings/dream/CurrentDreamPicker.java
@@ -16,11 +16,11 @@
package com.android.settings.dream;
-
import android.content.ComponentName;
import android.content.Context;
import android.graphics.drawable.Drawable;
import com.android.internal.logging.nano.MetricsProto;
+import com.android.settings.R;
import com.android.settings.widget.RadioButtonPickerFragment;
import com.android.settingslib.dream.DreamBackend;
import com.android.settingslib.dream.DreamBackend.DreamInfo;
@@ -41,6 +41,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.current_dream_settings;
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.DREAM;
}
diff --git a/src/com/android/settings/dream/WhenToDreamPicker.java b/src/com/android/settings/dream/WhenToDreamPicker.java
index a55064d..7031bdf 100644
--- a/src/com/android/settings/dream/WhenToDreamPicker.java
+++ b/src/com/android/settings/dream/WhenToDreamPicker.java
@@ -38,6 +38,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.when_to_dream_settings;
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsProto.MetricsEvent.DREAM;
}
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
index e9a2250..d44f9f8 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
+++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
@@ -38,8 +38,10 @@
import android.util.TimeUtils;
import android.util.TypedValue;
import android.view.View;
+
import com.android.settings.R;
import com.android.settings.Utils;
+
import libcore.icu.LocaleData;
import java.util.ArrayList;
@@ -577,7 +579,7 @@
|| (aggrStates&(HistoryItem.STATE_WIFI_FULL_LOCK_FLAG
|HistoryItem.STATE_WIFI_MULTICAST_ON_FLAG
|HistoryItem.STATE_WIFI_SCAN_FLAG)) != 0;
- if (!com.android.settings.Utils.isWifiOnly(getContext())) {
+ if (!com.android.settingslib.Utils.isWifiOnly(getContext())) {
mHavePhoneSignal = true;
}
if (mHistEnd <= mHistStart) mHistEnd = mHistStart+1;
diff --git a/src/com/android/settings/fuelgauge/BatterySaverSettings.java b/src/com/android/settings/fuelgauge/BatterySaverSettings.java
index 88dab49..f00b952 100644
--- a/src/com/android/settings/fuelgauge/BatterySaverSettings.java
+++ b/src/com/android/settings/fuelgauge/BatterySaverSettings.java
@@ -25,6 +25,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.PowerManager;
+import android.provider.SearchIndexableResource;
import android.provider.Settings.Global;
import android.support.annotation.VisibleForTesting;
import android.util.Log;
@@ -38,10 +39,16 @@
import com.android.settings.dashboard.conditional.BatterySaverCondition;
import com.android.settings.dashboard.conditional.ConditionManager;
import com.android.settings.notification.SettingPref;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
import com.android.settings.widget.SwitchBar;
+import java.util.Arrays;
+import java.util.List;
+
public class BatterySaverSettings extends SettingsPreferenceFragment
- implements SwitchBar.OnSwitchChangeListener, BatterySaverReceiver.BatterySaverListener {
+ implements SwitchBar.OnSwitchChangeListener, BatterySaverReceiver.BatterySaverListener,
+ Indexable {
private static final String TAG = "BatterySaverSettings";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
private static final String KEY_TURN_ON_AUTOMATICALLY = "turn_on_automatically";
@@ -89,7 +96,7 @@
protected String getCaption(Resources res, int value) {
if (value > 0 && value < 100) {
return res.getString(R.string.battery_saver_turn_on_automatically_pct,
- Utils.formatPercentage(value));
+ Utils.formatPercentage(value));
}
return res.getString(R.string.battery_saver_turn_on_automatically_never);
}
@@ -219,4 +226,18 @@
}
}
}
+
+ /**
+ * For Search.
+ */
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.battery_saver_settings;
+ return Arrays.asList(sir);
+ }
+ };
}
diff --git a/src/com/android/settings/fuelgauge/FakeUid.java b/src/com/android/settings/fuelgauge/FakeUid.java
index 253dc02..2c3e3cf 100644
--- a/src/com/android/settings/fuelgauge/FakeUid.java
+++ b/src/com/android/settings/fuelgauge/FakeUid.java
@@ -154,6 +154,11 @@
}
@Override
+ public Timer getWifiScanTimer() {
+ return null;
+ }
+
+ @Override
public int getWifiScanBackgroundCount(int which) {
return 0;
}
@@ -169,6 +174,11 @@
}
@Override
+ public Timer getWifiScanBackgroundTimer() {
+ return null;
+ }
+
+ @Override
public long getWifiBatchedScanTime(int csphBin, long elapsedRealtimeUs, int which) {
return 0;
}
diff --git a/src/com/android/settings/gestures/AssistGestureSettingsPreferenceController.java b/src/com/android/settings/gestures/AssistGestureSettingsPreferenceController.java
index bf6ee8c..1ecba0d 100644
--- a/src/com/android/settings/gestures/AssistGestureSettingsPreferenceController.java
+++ b/src/com/android/settings/gestures/AssistGestureSettingsPreferenceController.java
@@ -162,7 +162,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
AssistGestureSettings.class.getName(), mAssistGesturePrefKey,
mContext.getString(R.string.display_settings));
diff --git a/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java b/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java
index bee9893..049ee18 100644
--- a/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java
+++ b/src/com/android/settings/gestures/DoubleTapPowerPreferenceController.java
@@ -89,7 +89,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
DoubleTapPowerSettings.class.getName(), mDoubleTapPowerKey,
mContext.getString(R.string.display_settings));
diff --git a/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java b/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java
index 9ec06ae..deffa97 100644
--- a/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java
+++ b/src/com/android/settings/gestures/DoubleTapScreenPreferenceController.java
@@ -89,7 +89,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
DoubleTapScreenSettings.class.getName(), mDoubleTapScreenPrefKey,
mContext.getString(R.string.display_settings));
diff --git a/src/com/android/settings/gestures/PickupGesturePreferenceController.java b/src/com/android/settings/gestures/PickupGesturePreferenceController.java
index e1b444c..314cbc3 100644
--- a/src/com/android/settings/gestures/PickupGesturePreferenceController.java
+++ b/src/com/android/settings/gestures/PickupGesturePreferenceController.java
@@ -95,7 +95,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
PickupGestureSettings.class.getName(), mPickUpPrefKey,
mContext.getString(R.string.display_settings));
diff --git a/src/com/android/settings/location/LocationPreferenceController.java b/src/com/android/settings/location/LocationPreferenceController.java
index 225100f..9b68848 100644
--- a/src/com/android/settings/location/LocationPreferenceController.java
+++ b/src/com/android/settings/location/LocationPreferenceController.java
@@ -127,7 +127,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
LocationSettings.class.getName(), KEY_LOCATION,
mContext.getString(R.string.location_settings_title));
diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java
index d66b310..39d5f6d 100644
--- a/src/com/android/settings/location/LocationSettings.java
+++ b/src/com/android/settings/location/LocationSettings.java
@@ -27,6 +27,7 @@
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
+import android.provider.SearchIndexableResource;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceCategory;
import android.support.v7.preference.PreferenceGroup;
@@ -40,6 +41,8 @@
import com.android.settings.Utils;
import com.android.settings.applications.InstalledAppDetails;
import com.android.settings.dashboard.SummaryLoader;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
import com.android.settings.widget.SwitchBar;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedPreference;
@@ -47,6 +50,7 @@
import com.android.settingslib.location.RecentLocationApps;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
@@ -77,7 +81,7 @@
* implementation.
*/
public class LocationSettings extends LocationSettingsBase
- implements SwitchBar.OnSwitchChangeListener {
+ implements SwitchBar.OnSwitchChangeListener, Indexable {
private static final String TAG = "LocationSettings";
@@ -455,4 +459,18 @@
return new SummaryProvider(activity, summaryLoader);
}
};
+
+ /**
+ * For Search.
+ */
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.location_settings;
+ return Arrays.asList(sir);
+ }
+ };
}
diff --git a/src/com/android/settings/location/ScanningSettings.java b/src/com/android/settings/location/ScanningSettings.java
index fd5a7fd..5c34b62 100644
--- a/src/com/android/settings/location/ScanningSettings.java
+++ b/src/com/android/settings/location/ScanningSettings.java
@@ -16,6 +16,8 @@
package com.android.settings.location;
+import android.content.Context;
+import android.provider.SearchIndexableResource;
import android.provider.Settings.Global;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
@@ -24,11 +26,16 @@
import com.android.internal.logging.nano.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 java.util.Arrays;
+import java.util.List;
/**
* A page that configures the background scanning settings for Wi-Fi and Bluetooth.
*/
-public class ScanningSettings extends SettingsPreferenceFragment {
+public class ScanningSettings extends SettingsPreferenceFragment implements Indexable {
private static final String KEY_WIFI_SCAN_ALWAYS_AVAILABLE = "wifi_always_scanning";
private static final String KEY_BLUETOOTH_SCAN_ALWAYS_AVAILABLE = "bluetooth_always_scanning";
@@ -56,13 +63,13 @@
private void initPreferences() {
final SwitchPreference wifiScanAlwaysAvailable =
- (SwitchPreference) findPreference(KEY_WIFI_SCAN_ALWAYS_AVAILABLE);
+ (SwitchPreference) findPreference(KEY_WIFI_SCAN_ALWAYS_AVAILABLE);
wifiScanAlwaysAvailable.setChecked(Global.getInt(getContentResolver(),
- Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1);
+ Global.WIFI_SCAN_ALWAYS_AVAILABLE, 0) == 1);
final SwitchPreference bleScanAlwaysAvailable =
- (SwitchPreference) findPreference(KEY_BLUETOOTH_SCAN_ALWAYS_AVAILABLE);
+ (SwitchPreference) findPreference(KEY_BLUETOOTH_SCAN_ALWAYS_AVAILABLE);
bleScanAlwaysAvailable.setChecked(Global.getInt(getContentResolver(),
- Global.BLE_SCAN_ALWAYS_AVAILABLE, 0) == 1);
+ Global.BLE_SCAN_ALWAYS_AVAILABLE, 0) == 1);
}
@Override
@@ -81,4 +88,18 @@
}
return true;
}
+
+ /**
+ * For Search.
+ */
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.location_scanning;
+ return Arrays.asList(sir);
+ }
+ };
}
diff --git a/src/com/android/settings/network/MobileNetworkPreferenceController.java b/src/com/android/settings/network/MobileNetworkPreferenceController.java
index 1199400..1670b0d 100644
--- a/src/com/android/settings/network/MobileNetworkPreferenceController.java
+++ b/src/com/android/settings/network/MobileNetworkPreferenceController.java
@@ -15,6 +15,9 @@
*/
package com.android.settings.network;
+import static android.os.UserHandle.myUserId;
+import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
+
import android.content.Context;
import android.os.UserManager;
import android.support.annotation.VisibleForTesting;
@@ -24,17 +27,14 @@
import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.wrapper.RestrictedLockUtilsWrapper;
+import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
import com.android.settingslib.core.lifecycle.events.OnResume;
-import static android.os.UserHandle.myUserId;
-import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
-
public class MobileNetworkPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin, LifecycleObserver, OnResume, OnPause {
diff --git a/src/com/android/settings/network/MobilePlanPreferenceController.java b/src/com/android/settings/network/MobilePlanPreferenceController.java
index d5ff924..6556113 100644
--- a/src/com/android/settings/network/MobilePlanPreferenceController.java
+++ b/src/com/android/settings/network/MobilePlanPreferenceController.java
@@ -15,6 +15,13 @@
*/
package com.android.settings.network;
+import static android.content.Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT;
+import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
+import static android.os.UserHandle.myUserId;
+import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
+
+import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction;
+
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
@@ -30,8 +37,8 @@
import android.util.Log;
import com.android.settings.R;
-import com.android.settings.Utils;
import com.android.settings.core.PreferenceControllerMixin;
+import com.android.settingslib.Utils;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnCreate;
@@ -39,12 +46,6 @@
import java.util.List;
-import static android.content.Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT;
-import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
-import static android.os.UserHandle.myUserId;
-import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
-import static com.android.settingslib.RestrictedLockUtils.hasBaseUserRestriction;
-
public class MobilePlanPreferenceController extends AbstractPreferenceController
implements PreferenceControllerMixin, LifecycleObserver, OnCreate, OnSaveInstanceState {
diff --git a/src/com/android/settings/nfc/AndroidBeam.java b/src/com/android/settings/nfc/AndroidBeam.java
index fe264f3..e40fc21 100644
--- a/src/com/android/settings/nfc/AndroidBeam.java
+++ b/src/com/android/settings/nfc/AndroidBeam.java
@@ -16,6 +16,7 @@
package com.android.settings.nfc;
+import android.annotation.StringRes;
import android.nfc.NfcAdapter;
import android.os.Bundle;
import android.os.UserHandle;
@@ -130,4 +131,10 @@
public int getMetricsCategory() {
return MetricsEvent.NFC_BEAM;
}
+
+ @Override
+ @StringRes
+ protected int getTitle() {
+ return R.string.android_beam_settings_title;
+ }
}
diff --git a/src/com/android/settings/nfc/PaymentSettings.java b/src/com/android/settings/nfc/PaymentSettings.java
index 10f1154..66d1103 100644
--- a/src/com/android/settings/nfc/PaymentSettings.java
+++ b/src/com/android/settings/nfc/PaymentSettings.java
@@ -58,8 +58,14 @@
mPaymentBackend = new PaymentBackend(getActivity());
setHasOptionsMenu(true);
- PreferenceManager manager = getPreferenceManager();
- PreferenceScreen screen = manager.createPreferenceScreen(getActivity());
+ final PreferenceScreen screen;
+ if (usePreferenceScreenTitle()) {
+ addPreferencesFromResource(R.xml.nfc_payment_settings);
+ screen = getPreferenceScreen();
+ } else {
+ PreferenceManager manager = getPreferenceManager();
+ screen = manager.createPreferenceScreen(getActivity());
+ }
List<PaymentBackend.PaymentAppInfo> appInfos = mPaymentBackend.getPaymentAppInfos();
if (appInfos != null && appInfos.size() > 0) {
@@ -71,7 +77,9 @@
mPaymentBackend);
screen.addPreference(foreground);
}
- setPreferenceScreen(screen);
+ if (!usePreferenceScreenTitle()) {
+ setPreferenceScreen(screen);
+ }
}
@Override
diff --git a/src/com/android/settings/notification/BadgingNotificationPreferenceController.java b/src/com/android/settings/notification/BadgingNotificationPreferenceController.java
index 94eccf9..18efd43 100644
--- a/src/com/android/settings/notification/BadgingNotificationPreferenceController.java
+++ b/src/com/android/settings/notification/BadgingNotificationPreferenceController.java
@@ -133,7 +133,7 @@
@Override
public ResultPayload getResultPayload() {
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(mContext,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(mContext,
ConfigureNotificationSettings.class.getName(), KEY_NOTIFICATION_BADGING,
mContext.getString(R.string.configure_notification_settings));
diff --git a/src/com/android/settings/notification/EmptyTextSettings.java b/src/com/android/settings/notification/EmptyTextSettings.java
index 3f8ccc6..2b5998e 100644
--- a/src/com/android/settings/notification/EmptyTextSettings.java
+++ b/src/com/android/settings/notification/EmptyTextSettings.java
@@ -32,6 +32,17 @@
private TextView mEmpty;
@Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+ super.onCreatePreferences(savedInstanceState, rootKey);
+ if (usePreferenceScreenTitle()) {
+ final int resId = getPreferenceScreenResId();
+ if (resId > 0) {
+ addPreferencesFromResource(resId);
+ }
+ }
+ }
+
+ @Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
mEmpty = new TextView(getContext());
@@ -47,4 +58,9 @@
protected void setEmptyText(int text) {
mEmpty.setText(text);
}
+
+ /**
+ * Get the res id for static preference xml for this fragment.
+ */
+ protected abstract int getPreferenceScreenResId();
}
diff --git a/src/com/android/settings/notification/NotificationAccessSettings.java b/src/com/android/settings/notification/NotificationAccessSettings.java
index 858482c..af89f49 100644
--- a/src/com/android/settings/notification/NotificationAccessSettings.java
+++ b/src/com/android/settings/notification/NotificationAccessSettings.java
@@ -16,7 +16,6 @@
package com.android.settings.notification;
-import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.Fragment;
@@ -38,11 +37,6 @@
private static final String TAG = NotificationAccessSettings.class.getSimpleName();
private static final Config CONFIG = getNotificationListenerConfig();
- @Override
- public void onCreate(Bundle icicle) {
- super.onCreate(icicle);
- }
-
private static Config getNotificationListenerConfig() {
final Config c = new Config();
c.tag = TAG;
@@ -100,6 +94,11 @@
mNm.setNotificationListenerAccessGranted(service, true);
}
+ @Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.notification_access_settings;
+ }
+
@VisibleForTesting
void logSpecialPermissionChange(boolean enable, String packageName) {
int logCategory = enable ? MetricsEvent.APP_SPECIAL_PERMISSION_NOTIVIEW_ALLOW
diff --git a/src/com/android/settings/notification/ZenAccessSettings.java b/src/com/android/settings/notification/ZenAccessSettings.java
index 238c11e..44052b1 100644
--- a/src/com/android/settings/notification/ZenAccessSettings.java
+++ b/src/com/android/settings/notification/ZenAccessSettings.java
@@ -21,9 +21,7 @@
import android.app.AlertDialog;
import android.app.AppGlobals;
import android.app.Dialog;
-import android.app.DialogFragment;
import android.app.NotificationManager;
-import android.content.ComponentName;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.ApplicationInfo;
@@ -38,7 +36,6 @@
import android.os.Handler;
import android.os.Looper;
import android.os.RemoteException;
-import android.provider.Settings;
import android.provider.Settings.Secure;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
@@ -48,7 +45,6 @@
import android.util.ArraySet;
import android.util.Log;
import android.view.View;
-import android.widget.Toast;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -80,7 +76,9 @@
mContext = getActivity();
mPkgMan = mContext.getPackageManager();
mNoMan = mContext.getSystemService(NotificationManager.class);
- setPreferenceScreen(getPreferenceManager().createPreferenceScreen(mContext));
+ if (!usePreferenceScreenTitle()) {
+ setPreferenceScreen(getPreferenceManager().createPreferenceScreen(mContext));
+ }
}
@Override
@@ -90,6 +88,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.zen_access_settings;
+ }
+
+ @Override
public void onResume() {
super.onResume();
if (!ActivityManager.isLowRamDeviceStatic()) {
diff --git a/src/com/android/settings/notification/ZenModeBehaviorSettings.java b/src/com/android/settings/notification/ZenModeBehaviorSettings.java
index 1b5e69f..d03b015 100644
--- a/src/com/android/settings/notification/ZenModeBehaviorSettings.java
+++ b/src/com/android/settings/notification/ZenModeBehaviorSettings.java
@@ -18,7 +18,9 @@
import android.app.NotificationManager;
import android.app.NotificationManager.Policy;
+import android.content.Context;
import android.os.Bundle;
+import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.service.notification.ZenModeConfig;
import android.support.v14.preference.SwitchPreference;
@@ -30,8 +32,13 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
-public class ZenModeBehaviorSettings extends ZenModeSettingsBase {
+import java.util.Arrays;
+import java.util.List;
+
+public class ZenModeBehaviorSettings extends ZenModeSettingsBase implements Indexable {
private static final String KEY_ALARMS = "zen_mode_alarms";
private static final String KEY_MEDIA = "zen_mode_media";
private static final String KEY_REMINDERS = "zen_mode_reminders";
@@ -303,4 +310,18 @@
NotificationManager.from(mContext).setNotificationPolicy(mPolicy);
}
+ /**
+ * For Search.
+ */
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.zen_mode_behavior_settings;
+ return Arrays.asList(sir);
+ }
+ };
+
}
diff --git a/src/com/android/settings/notification/ZenModeSettings.java b/src/com/android/settings/notification/ZenModeSettings.java
index f112c1b..7f9a7c3 100644
--- a/src/com/android/settings/notification/ZenModeSettings.java
+++ b/src/com/android/settings/notification/ZenModeSettings.java
@@ -29,6 +29,7 @@
import android.content.pm.ServiceInfo;
import android.content.res.Resources;
import android.os.Bundle;
+import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.service.notification.ConditionProviderService;
import android.service.notification.ZenModeConfig;
@@ -41,6 +42,8 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
import com.android.settings.utils.ManagedServiceSettings;
import com.android.settings.utils.ZenServiceListing;
import com.android.settingslib.TwoTargetPreference;
@@ -52,7 +55,7 @@
import java.util.Map;
import java.util.Map.Entry;
-public class ZenModeSettings extends ZenModeSettingsBase {
+public class ZenModeSettings extends ZenModeSettingsBase implements Indexable {
public static final String KEY_VISUAL_SETTINGS = "zen_mode_visual_interruptions_settings";
private static final String KEY_BEHAVIOR_SETTINGS = "zen_mode_behavior_settings";
@@ -499,4 +502,17 @@
return type + rule.getName().toString();
}
};
+ /**
+ * For Search.
+ */
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.zen_mode_settings;
+ return Arrays.asList(sir);
+ }
+ };
}
diff --git a/src/com/android/settings/notification/ZenModeVisualInterruptionSettings.java b/src/com/android/settings/notification/ZenModeVisualInterruptionSettings.java
index aa27848..474992c 100644
--- a/src/com/android/settings/notification/ZenModeVisualInterruptionSettings.java
+++ b/src/com/android/settings/notification/ZenModeVisualInterruptionSettings.java
@@ -18,7 +18,9 @@
import android.app.NotificationManager;
import android.app.NotificationManager.Policy;
+import android.content.Context;
import android.os.Bundle;
+import android.provider.SearchIndexableResource;
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
@@ -26,8 +28,13 @@
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settings.search.Indexable;
-public class ZenModeVisualInterruptionSettings extends ZenModeSettingsBase {
+import java.util.Arrays;
+import java.util.List;
+
+public class ZenModeVisualInterruptionSettings extends ZenModeSettingsBase implements Indexable {
private static final String KEY_SCREEN_OFF = "screenOff";
private static final String KEY_SCREEN_ON = "screenOn";
@@ -122,4 +129,18 @@
suppressedVisualEffects);
NotificationManager.from(mContext).setNotificationPolicy(mPolicy);
}
+
+ /**
+ * For Search.
+ */
+ public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider() {
+ @Override
+ public List<SearchIndexableResource> getXmlResourcesToIndex(
+ Context context, boolean enabled) {
+ final SearchIndexableResource sir = new SearchIndexableResource(context);
+ sir.xmlResId = R.xml.zen_mode_visual_interruptions_settings;
+ return Arrays.asList(sir);
+ }
+ };
}
diff --git a/src/com/android/settings/search/AccessibilityServiceResultLoader.java b/src/com/android/settings/search/AccessibilityServiceResultLoader.java
index 64cceb7..345ab30 100644
--- a/src/com/android/settings/search/AccessibilityServiceResultLoader.java
+++ b/src/com/android/settings/search/AccessibilityServiceResultLoader.java
@@ -102,7 +102,7 @@
}
final String componentName = new ComponentName(serviceInfo.packageName,
serviceInfo.name).flattenToString();
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(context,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(context,
AccessibilitySettings.class.getName(), componentName, screenTitle);
results.add(new SearchResult.Builder()
diff --git a/src/com/android/settings/search/DatabaseIndexingUtils.java b/src/com/android/settings/search/DatabaseIndexingUtils.java
index ce58256..8d63ea5 100644
--- a/src/com/android/settings/search/DatabaseIndexingUtils.java
+++ b/src/com/android/settings/search/DatabaseIndexingUtils.java
@@ -46,21 +46,28 @@
"SEARCH_INDEX_DATA_PROVIDER";
/**
- * Builds intent into a subsetting.
+ * Builds intent that launches the search destination as a sub-setting.
*/
- public static Intent buildSubsettingIntent(Context context, String className, String key,
+ public static Intent buildSearchResultPageIntent(Context context, String className, String key,
String screenTitle) {
+ return buildSearchResultPageIntent(context, className, key, screenTitle,
+ MetricsProto.MetricsEvent.DASHBOARD_SEARCH_RESULTS);
+ }
+
+ public static Intent buildSearchResultPageIntent(Context context, String className, String key,
+ String screenTitle, int sourceMetricsCategory) {
final Bundle args = new Bundle();
args.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key);
- return Utils.onBuildStartFragmentIntent(context,
- className, args, null, 0, screenTitle, false,
- MetricsProto.MetricsEvent.DASHBOARD_SEARCH_RESULTS);
+ final Intent searchDestination = Utils.onBuildStartFragmentIntent(context,
+ className, args, null, 0, screenTitle, false, sourceMetricsCategory);
+ searchDestination.putExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, key);
+ searchDestination.setClass(context, SearchResultTrampoline.class);
+ return searchDestination;
}
/**
* @param className which wil provide the map between from {@link Uri}s to
- * {@link PreferenceControllerMixin}
- * @param context
+ * {@link PreferenceControllerMixin}
* @return A map between {@link Uri}s and {@link PreferenceControllerMixin}s to get the payload
* types for Settings.
*/
@@ -85,7 +92,7 @@
List<AbstractPreferenceController> controllers =
provider.getPreferenceControllers(context);
- if (controllers == null ) {
+ if (controllers == null) {
return null;
}
@@ -106,7 +113,7 @@
/**
* @param uriMap Map between the {@link PreferenceControllerMixin} keys
* and the controllers themselves.
- * @param key The look-up key
+ * @param key The look-up key
* @return The Payload from the {@link PreferenceControllerMixin} specified by the key,
* if it exists. Otherwise null.
*/
diff --git a/src/com/android/settings/search/InputDeviceResultLoader.java b/src/com/android/settings/search/InputDeviceResultLoader.java
index 61e1ad1..e5e6553 100644
--- a/src/com/android/settings/search/InputDeviceResultLoader.java
+++ b/src/com/android/settings/search/InputDeviceResultLoader.java
@@ -107,7 +107,7 @@
: context.getString(R.string.keyboard_layout_default_label);
final String key = deviceName;
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(context,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(context,
PHYSICAL_KEYBOARD_FRAGMENT, key, screenTitle);
results.add(new SearchResult.Builder()
.setTitle(deviceName)
@@ -140,7 +140,7 @@
final ServiceInfo serviceInfo = info.getServiceInfo();
final String key = new ComponentName(serviceInfo.packageName, serviceInfo.name)
.flattenToString();
- final Intent intent = DatabaseIndexingUtils.buildSubsettingIntent(context,
+ final Intent intent = DatabaseIndexingUtils.buildSearchResultPageIntent(context,
VIRTUAL_KEYBOARD_FRAGMENT, key, screenTitle);
results.add(new SearchResult.Builder()
.setTitle(title)
diff --git a/src/com/android/settings/search/IntentSearchViewHolder.java b/src/com/android/settings/search/IntentSearchViewHolder.java
index 711d08e..8f6aa2c 100644
--- a/src/com/android/settings/search/IntentSearchViewHolder.java
+++ b/src/com/android/settings/search/IntentSearchViewHolder.java
@@ -20,6 +20,7 @@
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.UserHandle;
+import android.support.annotation.VisibleForTesting;
import android.util.Log;
import android.view.View;
@@ -34,6 +35,8 @@
public class IntentSearchViewHolder extends SearchViewHolder {
private static final String TAG = "IntentSearchViewHolder";
+ @VisibleForTesting
+ static final int REQUEST_CODE_NO_OP = 0;
public IntentSearchViewHolder(View view) {
super(view);
@@ -60,7 +63,7 @@
final PackageManager pm = fragment.getActivity().getPackageManager();
final List<ResolveInfo> info = pm.queryIntentActivities(intent, 0 /* flags */);
if (info != null && !info.isEmpty()) {
- fragment.startActivity(intent);
+ fragment.startActivityForResult(intent, REQUEST_CODE_NO_OP);
} else {
Log.e(TAG, "Cannot launch search result, title: "
+ result.title + ", " + intent);
diff --git a/src/com/android/settings/search/SearchFeatureProvider.java b/src/com/android/settings/search/SearchFeatureProvider.java
index 956808d..4df8203 100644
--- a/src/com/android/settings/search/SearchFeatureProvider.java
+++ b/src/com/android/settings/search/SearchFeatureProvider.java
@@ -16,6 +16,8 @@
*/
package com.android.settings.search;
+import android.annotation.NonNull;
+import android.content.ComponentName;
import android.content.Context;
import android.view.View;
@@ -33,6 +35,15 @@
boolean isEnabled(Context context);
/**
+ * Ensures the caller has necessary privilege to launch search result page.
+ *
+ * @throws IllegalArgumentException when caller is null
+ * @throws SecurityException when caller is not allowed to launch search result page
+ */
+ void verifyLaunchSearchResultPageCaller(Context context, @NonNull ComponentName caller)
+ throws SecurityException, IllegalArgumentException;
+
+ /**
* Returns a new loader to search in index database.
*/
DatabaseResultLoader getDatabaseSearchLoader(Context context, String query);
diff --git a/src/com/android/settings/search/SearchFeatureProviderImpl.java b/src/com/android/settings/search/SearchFeatureProviderImpl.java
index 420b847..8c4883e 100644
--- a/src/com/android/settings/search/SearchFeatureProviderImpl.java
+++ b/src/com/android/settings/search/SearchFeatureProviderImpl.java
@@ -17,6 +17,7 @@
package com.android.settings.search;
+import android.content.ComponentName;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
@@ -43,6 +44,18 @@
}
@Override
+ public void verifyLaunchSearchResultPageCaller(Context context, ComponentName caller) {
+ if (caller == null) {
+ throw new IllegalArgumentException("ExternalSettingsTrampoline intents "
+ + "must be called with startActivityForResult");
+ }
+ final String packageName = caller.getPackageName();
+ if (!TextUtils.equals(packageName, context.getPackageName())) {
+ throw new SecurityException("Only Settings app can launch search result page");
+ }
+ }
+
+ @Override
public DatabaseResultLoader getDatabaseSearchLoader(Context context, String query) {
return new DatabaseResultLoader(context, cleanQuery(query), getSiteMapManager());
}
diff --git a/src/com/android/settings/search/SearchIndexableResources.java b/src/com/android/settings/search/SearchIndexableResources.java
index 1774615..7252e2d 100644
--- a/src/com/android/settings/search/SearchIndexableResources.java
+++ b/src/com/android/settings/search/SearchIndexableResources.java
@@ -17,7 +17,6 @@
package com.android.settings.search;
import android.provider.SearchIndexableResource;
-import android.support.annotation.DrawableRes;
import android.support.annotation.VisibleForTesting;
import android.support.annotation.XmlRes;
import android.text.TextUtils;
@@ -27,7 +26,6 @@
import com.android.settings.DisplaySettings;
import com.android.settings.EncryptionAndCredential;
import com.android.settings.LegalSettings;
-import com.android.settings.R;
import com.android.settings.ScreenPinningSettings;
import com.android.settings.SecuritySettings;
import com.android.settings.accessibility.AccessibilitySettings;
@@ -42,7 +40,6 @@
import com.android.settings.backup.BackupSettingsFragment;
import com.android.settings.bluetooth.BluetoothSettings;
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
-import com.android.settings.datausage.DataPlanUsageSummary;
import com.android.settings.datausage.DataUsageMeteredSettings;
import com.android.settings.datausage.DataUsageSummary;
import com.android.settings.deletionhelper.AutomaticStorageManagerSettings;
@@ -104,23 +101,21 @@
public static final String SUBSETTING_TARGET_PACKAGE = "subsetting_target_package";
@XmlRes
- public static final int NO_DATA_RES_ID = 0;
+ public static final int NO_RES_ID = 0;
@VisibleForTesting
static final HashMap<String, SearchIndexableResource> sResMap = new HashMap<>();
@VisibleForTesting
- static void addIndex(Class<?> indexClass, @XmlRes int xmlResId,
- @DrawableRes int iconResId) {
- addIndex(indexClass, xmlResId, iconResId, null /* targetAction */);
+ static void addIndex(Class<?> indexClass) {
+ addIndex(indexClass, null /* targetAction */);
}
@VisibleForTesting
- static void addIndex(Class<?> indexClass, @XmlRes int xmlResId,
- @DrawableRes int iconResId, String targetAction) {
+ static void addIndex(Class<?> indexClass, String targetAction) {
String className = indexClass.getName();
- SearchIndexableResource resource =
- new SearchIndexableResource(0, xmlResId, className, iconResId);
+ SearchIndexableResource resource = new SearchIndexableResource(
+ 0 /* rank */, NO_RES_ID, className, NO_RES_ID);
if (!TextUtils.isEmpty(targetAction)) {
resource.intentAction = targetAction;
@@ -131,98 +126,73 @@
}
static {
- addIndex(WifiSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_wireless);
- addIndex(NetworkDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_wireless);
- addIndex(ConfigureWifiSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_wireless);
- addIndex(SavedAccessPointsWifiSettings.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_wireless);
- addIndex(BluetoothSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_bluetooth);
- addIndex(SimSettings.class, NO_DATA_RES_ID, R.drawable.ic_sim_sd);
- addIndex(DataPlanUsageSummary.class, NO_DATA_RES_ID, R.drawable.ic_settings_data_usage);
- addIndex(DataUsageSummary.class, NO_DATA_RES_ID, R.drawable.ic_settings_data_usage);
- addIndex(DataUsageMeteredSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_data_usage);
- addIndex(ScreenZoomSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display);
- addIndex(DisplaySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display,
- "android.settings.DISPLAY_SETTINGS");
- addIndex(AmbientDisplaySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display);
- addIndex(WallpaperTypeSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display);
- addIndex(ConfigureNotificationSettings.class,
- R.xml.configure_notification_settings, R.drawable.ic_settings_notifications);
- addIndex(AppAndNotificationDashboardFragment.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_applications);
- addIndex(SoundSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_sound,
- "android.settings.SOUND_SETTINGS");
- addIndex(ZenModeSettings.class,
- R.xml.zen_mode_settings, R.drawable.ic_settings_notifications);
- addIndex(ZenModeBehaviorSettings.class,
- R.xml.zen_mode_behavior_settings, R.drawable.ic_settings_notifications);
- addIndex(StorageSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_storage);
- addIndex(PowerUsageSummary.class,
- R.xml.power_usage_summary, R.drawable.ic_settings_battery);
- addIndex(PowerUsageAdvanced.class, NO_DATA_RES_ID, R.drawable.ic_settings_battery);
- addIndex(BatterySaverSettings.class,
- R.xml.battery_saver_settings, R.drawable.ic_settings_battery);
- addIndex(DefaultAppSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
- addIndex(ManageAssist.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
- addIndex(SpecialAccessSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_applications);
- addIndex(UserSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_multiuser);
- addIndex(AssistGestureSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
- addIndex(PickupGestureSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
- addIndex(DoubleTapScreenSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
- addIndex(DoubleTapPowerSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
- addIndex(DoubleTwistGestureSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
- addIndex(SwipeToNotificationSettings.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_gestures);
- addIndex(GestureSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_gestures);
- addIndex(LanguageAndInputSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
- addIndex(LocationSettings.class, R.xml.location_settings, R.drawable.ic_settings_location);
- addIndex(ScanningSettings.class, R.xml.location_scanning, R.drawable.ic_settings_location);
- addIndex(SecuritySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_security);
- addIndex(EncryptionAndCredential.class, NO_DATA_RES_ID, R.drawable.ic_settings_security);
- addIndex(ScreenPinningSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_security);
- addIndex(UserAndAccountDashboardFragment.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_accounts);
- addIndex(VirtualKeyboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
- addIndex(AvailableVirtualKeyboardFragment.class,
- NO_DATA_RES_ID, R.drawable.ic_settings_language);
- addIndex(PhysicalKeyboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
- addIndex(BackupSettingsActivity.class, NO_DATA_RES_ID, R.drawable.ic_settings_backup);
- addIndex(BackupSettingsFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_backup);
- addIndex(DateTimeSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_date_time);
- addIndex(AccessibilitySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_accessibility);
- addIndex(PrintSettingsFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_print);
- addIndex(DevelopmentSettingsDashboardFragment.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_development);
- addIndex(DeviceInfoSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
- addIndex(Status.class, NO_DATA_RES_ID, 0 /* icon */);
- addIndex(LegalSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
- addIndex(ZenModeVisualInterruptionSettings.class,
- R.xml.zen_mode_visual_interruptions_settings,
- R.drawable.ic_settings_notifications);
- addIndex(SystemDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
- addIndex(ResetDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_restore);
- addIndex(StorageDashboardFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_storage);
- addIndex(ConnectedDeviceDashboardFragment.class, NO_DATA_RES_ID,
- R.drawable.ic_devices_other);
- addIndex(EnterprisePrivacySettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_about);
- addIndex(PaymentSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_nfc_payment);
- addIndex(TextToSpeechSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_accessibility);
- addIndex(
- TtsEnginePreferenceFragment.class, NO_DATA_RES_ID, R.drawable.ic_settings_language);
- addIndex(LockscreenDashboardFragment.class, R.xml.security_lockscreen_settings,
- R.drawable.ic_settings_security);
- addIndex(MagnificationPreferenceFragment.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_accessibility);
- addIndex(AccessibilityShortcutPreferenceFragment.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_accessibility);
- addIndex(ChannelImportanceSettings.class, NO_DATA_RES_ID,
- R.drawable.ic_settings_notifications);
- addIndex(DreamSettings.class, NO_DATA_RES_ID, R.drawable.ic_settings_display);
- addIndex(SupportDashboardActivity.class, NO_DATA_RES_ID, R.drawable.ic_help);
- addIndex(
- AutomaticStorageManagerSettings.class,
- NO_DATA_RES_ID,
- R.drawable.ic_settings_storage);
+ addIndex(WifiSettings.class);
+ addIndex(NetworkDashboardFragment.class);
+ addIndex(ConfigureWifiSettings.class);
+ addIndex(SavedAccessPointsWifiSettings.class);
+ addIndex(BluetoothSettings.class);
+ addIndex(SimSettings.class);
+ addIndex(DataUsageSummary.class);
+ addIndex(DataUsageMeteredSettings.class);
+ addIndex(ScreenZoomSettings.class);
+ addIndex(DisplaySettings.class, "android.settings.DISPLAY_SETTINGS");
+ addIndex(AmbientDisplaySettings.class);
+ addIndex(WallpaperTypeSettings.class);
+ addIndex(AppAndNotificationDashboardFragment.class);
+ addIndex(SoundSettings.class, "android.settings.SOUND_SETTINGS");
+ addIndex(ZenModeSettings.class);
+ addIndex(StorageSettings.class);
+ addIndex(PowerUsageAdvanced.class);
+ addIndex(DefaultAppSettings.class);
+ addIndex(ManageAssist.class);
+ addIndex(SpecialAccessSettings.class);
+ addIndex(UserSettings.class);
+ addIndex(AssistGestureSettings.class);
+ addIndex(PickupGestureSettings.class);
+ addIndex(DoubleTapScreenSettings.class);
+ addIndex(DoubleTapPowerSettings.class);
+ addIndex(DoubleTwistGestureSettings.class);
+ addIndex(SwipeToNotificationSettings.class);
+ addIndex(GestureSettings.class);
+ addIndex(LanguageAndInputSettings.class);
+ addIndex(LocationSettings.class);
+ addIndex(ScanningSettings.class);
+ addIndex(SecuritySettings.class);
+ addIndex(EncryptionAndCredential.class);
+ addIndex(ScreenPinningSettings.class);
+ addIndex(UserAndAccountDashboardFragment.class);
+ addIndex(VirtualKeyboardFragment.class);
+ addIndex(AvailableVirtualKeyboardFragment.class);
+ addIndex(PhysicalKeyboardFragment.class);
+ addIndex(BackupSettingsActivity.class);
+ addIndex(BackupSettingsFragment.class);
+ addIndex(DateTimeSettings.class);
+ addIndex(AccessibilitySettings.class);
+ addIndex(PrintSettingsFragment.class);
+ addIndex(DevelopmentSettingsDashboardFragment.class);
+ addIndex(DeviceInfoSettings.class);
+ addIndex(Status.class);
+ addIndex(LegalSettings.class);
+ addIndex(SystemDashboardFragment.class);
+ addIndex(ResetDashboardFragment.class);
+ addIndex(StorageDashboardFragment.class);
+ addIndex(ConnectedDeviceDashboardFragment.class);
+ addIndex(EnterprisePrivacySettings.class);
+ addIndex(PaymentSettings.class);
+ addIndex(TextToSpeechSettings.class);
+ addIndex(TtsEnginePreferenceFragment.class);
+ addIndex(MagnificationPreferenceFragment.class);
+ addIndex(AccessibilityShortcutPreferenceFragment.class);
+ addIndex(ChannelImportanceSettings.class);
+ addIndex(DreamSettings.class);
+ addIndex(SupportDashboardActivity.class);
+ addIndex(AutomaticStorageManagerSettings.class);
+ addIndex(ConfigureNotificationSettings.class);
+ addIndex(PowerUsageSummary.class);
+ addIndex(BatterySaverSettings.class);
+ addIndex(LockscreenDashboardFragment.class);
+ addIndex(ZenModeBehaviorSettings.class);
+ addIndex(ZenModeVisualInterruptionSettings.class);
}
private SearchIndexableResources() {
diff --git a/src/com/android/settings/search/SearchResultTrampoline.java b/src/com/android/settings/search/SearchResultTrampoline.java
new file mode 100644
index 0000000..3bbe6bd
--- /dev/null
+++ b/src/com/android/settings/search/SearchResultTrampoline.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.search;
+
+import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+
+import com.android.settings.SettingsActivity;
+import com.android.settings.SubSettings;
+import com.android.settings.overlay.FeatureFactory;
+
+/**
+ * A trampoline activity that launches setting result page.
+ */
+public class SearchResultTrampoline extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // First make sure caller has privilege to launch a search result page.
+ FeatureFactory.getFactory(this)
+ .getSearchFeatureProvider()
+ .verifyLaunchSearchResultPageCaller(this, getCallingActivity());
+ // Didn't crash, proceed and launch the result as a subsetting.
+ final Intent intent = getIntent();
+
+ // Hack to take EXTRA_FRAGMENT_ARG_KEY from intent and set into
+ // EXTRA_SHOW_FRAGMENT_ARGUMENTS. This is necessary because intent could be from external
+ // caller and args may not persisted.
+ final String settingKey = intent.getStringExtra(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY);
+ final Bundle args = new Bundle();
+ args.putString(SettingsActivity.EXTRA_FRAGMENT_ARG_KEY, settingKey);
+ intent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, args);
+
+ // Reroute request to SubSetting.
+ intent.setClass(this /* context */, SubSettings.class)
+ .addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+ startActivity(intent);
+
+ // Done.
+ finish();
+ }
+
+}
diff --git a/src/com/android/settings/search/indexing/IndexData.java b/src/com/android/settings/search/indexing/IndexData.java
index 0e1fa2d..9dad3fe 100644
--- a/src/com/android/settings/search/indexing/IndexData.java
+++ b/src/com/android/settings/search/indexing/IndexData.java
@@ -273,7 +273,7 @@
|| TextUtils.equals(mIntentTargetPackage,
SearchIndexableResources.SUBSETTING_TARGET_PACKAGE)) {
// Action is null, we will launch it as a sub-setting
- intent = DatabaseIndexingUtils.buildSubsettingIntent(context, mClassName, mKey,
+ intent = DatabaseIndexingUtils.buildSearchResultPageIntent(context, mClassName, mKey,
mScreenTitle);
} else {
intent = new Intent(mIntentAction);
diff --git a/src/com/android/settings/search/indexing/IndexDataConverter.java b/src/com/android/settings/search/indexing/IndexDataConverter.java
index 487132b..2b875c3 100644
--- a/src/com/android/settings/search/indexing/IndexDataConverter.java
+++ b/src/com/android/settings/search/indexing/IndexDataConverter.java
@@ -19,6 +19,7 @@
import android.annotation.Nullable;
import android.content.Context;
+import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.provider.SearchIndexableData;
import android.provider.SearchIndexableResource;
@@ -29,7 +30,6 @@
import android.util.Xml;
import com.android.settings.core.PreferenceControllerMixin;
-
import com.android.settings.search.DatabaseIndexingUtils;
import com.android.settings.search.Indexable;
import com.android.settings.search.ResultPayload;
@@ -43,7 +43,6 @@
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import java.util.Set;
@@ -307,9 +306,11 @@
resourceIndexData.add(headerBuilder.build(mContext));
}
} catch (XmlPullParserException e) {
- throw new RuntimeException("Error parsing PreferenceScreen", e);
+ Log.w(LOG_TAG, "XML Error parsing PreferenceScreen: ", e);
} catch (IOException e) {
- throw new RuntimeException("Error parsing PreferenceScreen", e);
+ Log.w(LOG_TAG, "IO Error parsing PreferenceScreen: ", e);
+ } catch (Resources.NotFoundException e) {
+ Log.w(LOG_TAG, "Resoucre not found error parsing PreferenceScreen: ", e);
} finally {
if (parser != null) parser.close();
}
diff --git a/src/com/android/settings/webview/WebViewAppPicker.java b/src/com/android/settings/webview/WebViewAppPicker.java
index 536cd8b..0e9fc39 100644
--- a/src/com/android/settings/webview/WebViewAppPicker.java
+++ b/src/com/android/settings/webview/WebViewAppPicker.java
@@ -58,6 +58,11 @@
}
@Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.webview_app_settings;
+ }
+
+ @Override
protected List<DefaultAppInfo> getCandidates() {
final List<DefaultAppInfo> packageInfoList = new ArrayList<DefaultAppInfo>();
final Context context = getContext();
diff --git a/src/com/android/settings/widget/RadioButtonPickerFragment.java b/src/com/android/settings/widget/RadioButtonPickerFragment.java
index d736319..f1df0a5 100644
--- a/src/com/android/settings/widget/RadioButtonPickerFragment.java
+++ b/src/com/android/settings/widget/RadioButtonPickerFragment.java
@@ -17,9 +17,6 @@
package com.android.settings.widget;
import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.UserHandle;
@@ -70,7 +67,12 @@
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
super.onCreatePreferences(savedInstanceState, rootKey);
- addPreferencesFromResource(R.xml.placeholder_prefs);
+ final int resId = getPreferenceScreenResId();
+ if (usePreferenceScreenTitle() && resId > 0) {
+ addPreferencesFromResource(resId);
+ } else {
+ addPreferencesFromResource(R.xml.placeholder_prefs);
+ }
updateCandidates();
}
@@ -114,6 +116,13 @@
}
/**
+ * Get the res id for static preference xml for this fragment.
+ */
+ protected int getPreferenceScreenResId() {
+ return -1;
+ }
+
+ /**
* A chance for subclasses to bind additional things to the preference.
*/
@VisibleForTesting(otherwise = VisibleForTesting.PROTECTED)
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 9ff2c4f..8ee340a 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -60,7 +60,7 @@
import com.android.settings.ProxySelector;
import com.android.settings.R;
-import com.android.settings.Utils;
+import com.android.settingslib.Utils;
import com.android.settingslib.wifi.AccessPoint;
import java.net.Inet4Address;
diff --git a/tests/robotests/assets/grandfather_not_implementing_indexable b/tests/robotests/assets/grandfather_not_implementing_indexable
index d4a8d2d..091ba12 100644
--- a/tests/robotests/assets/grandfather_not_implementing_indexable
+++ b/tests/robotests/assets/grandfather_not_implementing_indexable
@@ -1,5 +1,4 @@
com.android.settings.location.LocationMode
-com.android.settings.notification.ZenModeVisualInterruptionSettings
com.android.settings.accessibility.ToggleScreenMagnificationPreferenceFragment
com.android.settings.deviceinfo.SimStatus
com.android.settings.deviceinfo.PrivateVolumeForget
@@ -23,18 +22,16 @@
com.android.settings.notification.ChannelNotificationSettings
com.android.settings.notification.ChannelGroupNotificationSettings
com.android.settings.datausage.AppDataUsage
+com.android.settings.datausage.DataPlanUsageSummary
com.android.settings.accessibility.FontSizePreferenceFragmentForSetupWizard
com.android.settings.applications.ManageDomainUrls
com.android.settings.applications.WriteSettingsDetails
-com.android.settings.location.LocationSettings
com.android.settings.applications.ProcessStatsSummary
com.android.settings.users.RestrictedProfileSettings
com.android.settings.accounts.ChooseAccountActivity
com.android.settings.accounts.ManagedProfileSettings
com.android.settings.accessibility.ToggleAutoclickPreferenceFragment
com.android.settings.applications.AppLaunchSettings
-com.android.settings.fuelgauge.BatterySaverSettings
-com.android.settings.location.ScanningSettings
com.android.settings.applications.ProcessStatsUi
com.android.settings.notification.ZenModeScheduleRuleSettings
com.android.settings.datausage.BillingCycleSettings
@@ -68,8 +65,6 @@
com.android.settings.applications.UsageAccessDetails
com.android.settings.applications.AppStorageSettings
com.android.settings.notification.NotificationAccessSettings
-com.android.settings.notification.ZenModeSettings
-com.android.settings.notification.ZenModeBehaviorSettings
com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment
com.android.settings.localepicker.LocaleListEditor
com.android.settings.applications.ExternalSourcesDetails
diff --git a/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java b/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java
index c5a1833..09ee15f 100644
--- a/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/DeviceInfoSettingsTest.java
@@ -17,26 +17,25 @@
package com.android.settings;
import static com.google.common.truth.Truth.assertThat;
+
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
import android.content.Context;
import android.os.Build;
-import android.os.UserManager;
import android.support.v7.preference.PreferenceScreen;
import com.android.settings.dashboard.SummaryLoader;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.XmlTestUtils;
+import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import com.android.settings.testutils.shadow.ShadowUtils;
import com.android.settingslib.DeviceInfoUtils;
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.RuntimeEnvironment;
@@ -48,17 +47,13 @@
@Config(
manifest = TestConfig.MANIFEST_PATH,
sdk = TestConfig.SDK_VERSION,
- shadows = ShadowUtils.class
+ shadows = {ShadowUtils.class, ShadowConnectivityManager.class}
)
public class DeviceInfoSettingsTest {
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private Context mContext;
@Mock
private PreferenceScreen mScreen;
@Mock
- private UserManager mUserManager;
- @Mock
private SummaryLoader mSummaryLoader;
private DeviceInfoSettings mSettings;
@@ -66,7 +61,6 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
mSettings = spy(new DeviceInfoSettings());
doReturn(mScreen).when(mSettings).getPreferenceScreen();
}
diff --git a/tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java b/tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java
index 93f364b..58a9577 100644
--- a/tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/InstalledAppDetailsTest.java
@@ -564,6 +564,21 @@
mAppDetail.mBatteryCallbacks);
}
+ @Test
+ public void initUninstallButtonForUserApp_shouldSetNegativeButton() {
+ final ApplicationInfo info = new ApplicationInfo();
+ info.flags = ApplicationInfo.FLAG_INSTALLED;
+ info.enabled = true;
+ final PackageInfo packageInfo = mock(PackageInfo.class);
+ packageInfo.applicationInfo = info;
+ ReflectionHelpers.setField(mAppDetail, "mUserManager", mUserManager);
+ ReflectionHelpers.setField(mAppDetail, "mPackageInfo", packageInfo);
+
+ mAppDetail.initUninstallButtonForUserApp();
+
+ verify(mAppDetail.mActionButtons).setButton1Positive(false);
+ }
+
@Implements(Utils.class)
public static class ShadowUtils {
@Implementation
diff --git a/tests/robotests/src/com/android/settings/applications/assist/AssistContextPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/assist/AssistContextPreferenceControllerTest.java
index 6c8ad9b..c71bc29 100644
--- a/tests/robotests/src/com/android/settings/applications/assist/AssistContextPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/assist/AssistContextPreferenceControllerTest.java
@@ -16,14 +16,21 @@
package com.android.settings.applications.assist;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
import android.support.v7.preference.PreferenceScreen;
import android.support.v7.preference.TwoStatePreference;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.core.lifecycle.Lifecycle;
import org.junit.Before;
@@ -35,13 +42,6 @@
import org.robolectric.annotation.Config;
import org.robolectric.util.ReflectionHelpers;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-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 AssistContextPreferenceControllerTest {
diff --git a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsButtonsControllerTest.java b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsButtonsControllerTest.java
index 464703b..7b0a3f23 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsButtonsControllerTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/BluetoothDetailsButtonsControllerTest.java
@@ -48,30 +48,30 @@
public class BluetoothDetailsButtonsControllerTest extends BluetoothDetailsControllerTestBase {
private BluetoothDetailsButtonsController mController;
private ActionButtonPreference mButtonsPref;
- private Button mLeftButton;
- private Button mRightButton;
+ private Button mConnectButton;
+ private Button mForgetButton;
@Override
public void setUp() {
super.setUp();
final View buttons = View.inflate(
RuntimeEnvironment.application, R.layout.two_action_buttons, null /* parent */);
- mLeftButton = buttons.findViewById(R.id.button1_positive);
- mRightButton = buttons.findViewById(R.id.button2_positive);
+ mConnectButton = buttons.findViewById(R.id.button2_positive);
+ mForgetButton = buttons.findViewById(R.id.button1_positive);
mController = new BluetoothDetailsButtonsController(mContext, mFragment, mCachedDevice,
mLifecycle);
mButtonsPref = ActionButtonPreferenceTest.createMock();
when(mButtonsPref.getKey()).thenReturn(mController.getPreferenceKey());
- when(mButtonsPref.setButton1OnClickListener(any(View.OnClickListener.class)))
- .thenAnswer(invocation -> {
- final Object[] args = invocation.getArguments();
- mLeftButton.setOnClickListener((View.OnClickListener) args[0]);
- return mButtonsPref;
- });
when(mButtonsPref.setButton2OnClickListener(any(View.OnClickListener.class)))
.thenAnswer(invocation -> {
final Object[] args = invocation.getArguments();
- mRightButton.setOnClickListener((View.OnClickListener) args[0]);
+ mConnectButton.setOnClickListener((View.OnClickListener) args[0]);
+ return mButtonsPref;
+ });
+ when(mButtonsPref.setButton1OnClickListener(any(View.OnClickListener.class)))
+ .thenAnswer(invocation -> {
+ final Object[] args = invocation.getArguments();
+ mForgetButton.setOnClickListener((View.OnClickListener) args[0]);
return mButtonsPref;
});
mScreen.addPreference(mButtonsPref);
@@ -83,14 +83,14 @@
public void connected() {
showScreen(mController);
- verify(mButtonsPref).setButton1Text(R.string.bluetooth_device_context_disconnect);
- verify(mButtonsPref).setButton2Text(R.string.forget);
+ verify(mButtonsPref).setButton2Text(R.string.bluetooth_device_context_disconnect);
+ verify(mButtonsPref).setButton1Text(R.string.forget);
}
@Test
public void clickOnDisconnect() {
showScreen(mController);
- mLeftButton.callOnClick();
+ mConnectButton.callOnClick();
verify(mCachedDevice).disconnect();
}
@@ -100,9 +100,9 @@
when(mCachedDevice.isConnected()).thenReturn(false);
showScreen(mController);
- verify(mButtonsPref).setButton1Text(R.string.bluetooth_device_context_connect);
+ verify(mButtonsPref).setButton2Text(R.string.bluetooth_device_context_connect);
- mLeftButton.callOnClick();
+ mConnectButton.callOnClick();
verify(mCachedDevice).connect(eq(true));
}
@@ -110,15 +110,15 @@
public void becomeDisconnected() {
showScreen(mController);
// By default we start out with the device connected.
- verify(mButtonsPref).setButton1Text(R.string.bluetooth_device_context_disconnect);
+ verify(mButtonsPref).setButton2Text(R.string.bluetooth_device_context_disconnect);
// Now make the device appear to have changed to disconnected.
when(mCachedDevice.isConnected()).thenReturn(false);
mController.onDeviceAttributesChanged();
- verify(mButtonsPref).setButton1Text(R.string.bluetooth_device_context_connect);
+ verify(mButtonsPref).setButton2Text(R.string.bluetooth_device_context_connect);
// Click the button and make sure that connect (not disconnect) gets called.
- mLeftButton.callOnClick();
+ mConnectButton.callOnClick();
verify(mCachedDevice).connect(eq(true));
}
@@ -128,16 +128,16 @@
when(mCachedDevice.isConnected()).thenReturn(false);
showScreen(mController);
- verify(mButtonsPref).setButton1Text(R.string.bluetooth_device_context_connect);
+ verify(mButtonsPref).setButton2Text(R.string.bluetooth_device_context_connect);
// Now make the device appear to have changed to connected.
when(mCachedDevice.isConnected()).thenReturn(true);
mController.onDeviceAttributesChanged();
- verify(mButtonsPref).setButton1Text(R.string.bluetooth_device_context_disconnect);
+ verify(mButtonsPref).setButton2Text(R.string.bluetooth_device_context_disconnect);
// Click the button and make sure that disconnnect (not connect) gets called.
- mLeftButton.callOnClick();
+ mConnectButton.callOnClick();
verify(mCachedDevice).disconnect();
}
@@ -148,7 +148,7 @@
when(mFragment.getFragmentManager()).thenReturn(fragmentManager);
FragmentTransaction ft = mock(FragmentTransaction.class);
when(fragmentManager.beginTransaction()).thenReturn(ft);
- mRightButton.callOnClick();
+ mForgetButton.callOnClick();
ArgumentCaptor<ForgetDeviceDialogFragment> dialogCaptor =
ArgumentCaptor.forClass(ForgetDeviceDialogFragment.class);
@@ -163,26 +163,26 @@
when(mCachedDevice.isBusy()).thenReturn(true);
showScreen(mController);
- verify(mButtonsPref).setButton1Text(R.string.bluetooth_device_context_disconnect);
- verify(mButtonsPref).setButton1Enabled(false);
- verify(mButtonsPref).setButton2Text(R.string.forget);
+ verify(mButtonsPref).setButton2Text(R.string.bluetooth_device_context_disconnect);
+ verify(mButtonsPref).setButton2Enabled(false);
+ verify(mButtonsPref).setButton1Text(R.string.forget);
// Now pretend the device became non-busy.
when(mCachedDevice.isBusy()).thenReturn(false);
mController.onDeviceAttributesChanged();
- verify(mButtonsPref).setButton1Enabled(true);
+ verify(mButtonsPref).setButton2Enabled(true);
}
@Test
public void becomesBusy() {
showScreen(mController);
- verify(mButtonsPref).setButton1Enabled(true);
+ verify(mButtonsPref).setButton2Enabled(true);
// Now pretend the device became busy.
when(mCachedDevice.isBusy()).thenReturn(true);
mController.onDeviceAttributesChanged();
- verify(mButtonsPref).setButton1Enabled(false);
+ verify(mButtonsPref).setButton2Enabled(false);
}
}
diff --git a/tests/robotests/src/com/android/settings/datausage/DataPlanUsageSummaryTest.java b/tests/robotests/src/com/android/settings/datausage/DataPlanUsageSummaryTest.java
index 72e0b10..748c317 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataPlanUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataPlanUsageSummaryTest.java
@@ -33,17 +33,13 @@
import com.android.settings.R;
import com.android.settings.TestConfig;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.testutils.XmlTestUtils;
-import com.android.settings.testutils.shadow.ShadowDataUsageUtils;
import com.android.settingslib.NetworkPolicyEditor;
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.RuntimeEnvironment;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
import org.robolectric.util.ReflectionHelpers;
@@ -128,53 +124,6 @@
assertThat(mDataUsageSummary.isMetered(mWifiConfiguration)).isFalse();
}
- @Test
- @Config(shadows = ShadowDataUsageUtils.class)
- public void testNonIndexableKeys_existInXmlLayout() {
- final Context context = RuntimeEnvironment.application;
- ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true;
- ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED = true;
- final List<String> niks = DataPlanUsageSummary.SEARCH_INDEX_DATA_PROVIDER
- .getNonIndexableKeys(context);
- final List<String> keys = new ArrayList<>();
-
- keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.data_usage_wifi));
- keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.data_usage));
- keys.addAll(XmlTestUtils.getKeysFromPreferenceXml(context,
- R.xml.data_plan_usage_cell_data_preference_screen));
-
- assertThat(keys).containsAllIn(niks);
- }
-
- @Test
- @Config(shadows = ShadowDataUsageUtils.class)
- public void testNonIndexableKeys_hasMobileData_hasWifi_allNonIndexableKeysAdded() {
- ShadowDataUsageUtils.IS_WIFI_SUPPORTED = false;
- ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED = false;
- List<String> keys = DataPlanUsageSummary.SEARCH_INDEX_DATA_PROVIDER
- .getNonIndexableKeys(mContext);
-
- // Mobile data keys
- assertThat(keys).contains(DataPlanUsageSummary.KEY_MOBILE_USAGE_TITLE);
- assertThat(keys).contains(DataPlanUsageSummary.KEY_MOBILE_DATA_USAGE_TOGGLE);
-
- // Wifi keys
- assertThat(keys).contains(DataPlanUsageSummary.KEY_WIFI_DATA_USAGE);
- assertThat(keys).contains(DataPlanUsageSummary.KEY_NETWORK_RESTRICTIONS);
- assertThat(keys).contains(DataPlanUsageSummary.KEY_WIFI_USAGE_TITLE);
- }
-
- @Test
- @Config(shadows = ShadowDataUsageUtils.class)
- public void testNonIndexableKeys_noMobile_noWifi_limitedNonIndexableKeys() {
- ShadowDataUsageUtils.IS_WIFI_SUPPORTED = true;
- ShadowDataUsageUtils.IS_MOBILE_DATA_SUPPORTED = true;
- List<String> keys = DataPlanUsageSummary.SEARCH_INDEX_DATA_PROVIDER
- .getNonIndexableKeys(mContext);
-
- assertThat(keys).containsExactly(DataPlanUsageSummary.KEY_WIFI_USAGE_TITLE);
- }
-
private void initTest() {
mDataUsageSummary = new DataPlanUsageSummary();
mPolicyEditor = mock(NetworkPolicyEditor.class);
diff --git a/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java
index 41bff93..5cbef72 100644
--- a/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/AutoTimeZonePreferenceControllerTest.java
@@ -16,35 +16,34 @@
package com.android.settings.datetime;
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.robolectric.shadow.api.Shadow.extract;
+
import android.content.Context;
import android.net.ConnectivityManager;
import android.provider.Settings;
import android.support.v7.preference.Preference;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import com.android.settings.testutils.shadow.ShadowConnectivityManager;
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 org.robolectric.shadows.ShadowApplication;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
+ shadows = ShadowConnectivityManager.class)
public class AutoTimeZonePreferenceControllerTest {
@Mock
- private Context mMockContext;
- @Mock
- private ConnectivityManager mCm;
- @Mock
private UpdateTimeAndDateCallback mCallback;
private Context mContext;
@@ -55,17 +54,17 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- ShadowApplication.getInstance().setSystemService(Context.CONNECTIVITY_SERVICE, mCm);
- mContext = ShadowApplication.getInstance().getApplicationContext();
+ mContext = RuntimeEnvironment.application;
mPreference = new Preference(mContext);
- when(mMockContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(mCm);
- when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(true);
+ ShadowConnectivityManager connectivityManager =
+ extract(mContext.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true);
}
@Test
public void isFromSUW_notAvailable() {
mController = new AutoTimeZonePreferenceController(
- mMockContext, null /* callback */, true /* isFromSUW */);
+ mContext, null /* callback */, true /* isFromSUW */);
assertThat(mController.isAvailable()).isFalse();
}
@@ -73,17 +72,19 @@
@Test
public void notFromSUW_isAvailable() {
mController = new AutoTimeZonePreferenceController(
- mMockContext, null /* callback */, false /* isFromSUW */);
+ mContext, null /* callback */, false /* isFromSUW */);
assertThat(mController.isAvailable()).isTrue();
}
@Test
public void isWifiOnly_notAvailable() {
- when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false);
+ ShadowConnectivityManager connectivityManager =
+ extract(mContext.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false);
mController = new AutoTimeZonePreferenceController(
- mMockContext, null /* callback */, false /* isFromSUW */);
+ mContext, null /* callback */, false /* isFromSUW */);
assertThat(mController.isAvailable()).isFalse();
}
@@ -91,17 +92,19 @@
@Test
public void isFromSUW_notEnable() {
mController = new AutoTimeZonePreferenceController(
- mMockContext, null /* callback */, true /* isFromSUW */);
+ mContext, null /* callback */, true /* isFromSUW */);
assertThat(mController.isEnabled()).isFalse();
}
@Test
public void isWifiOnly_notEnable() {
- when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false);
+ ShadowConnectivityManager connectivityManager =
+ extract(mContext.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false);
mController = new AutoTimeZonePreferenceController(
- mMockContext, null /* callback */, false /* isFromSUW */);
+ mContext, null /* callback */, false /* isFromSUW */);
assertThat(mController.isEnabled()).isFalse();
}
diff --git a/tests/robotests/src/com/android/settings/development/CameraHalHdrPlusPreferenceControllerV2Test.java b/tests/robotests/src/com/android/settings/development/CameraHalHdrplusPreferenceControllerV2Test.java
similarity index 75%
rename from tests/robotests/src/com/android/settings/development/CameraHalHdrPlusPreferenceControllerV2Test.java
rename to tests/robotests/src/com/android/settings/development/CameraHalHdrplusPreferenceControllerV2Test.java
index f28fd6e..e0e137c 100644
--- a/tests/robotests/src/com/android/settings/development/CameraHalHdrPlusPreferenceControllerV2Test.java
+++ b/tests/robotests/src/com/android/settings/development/CameraHalHdrplusPreferenceControllerV2Test.java
@@ -42,7 +42,7 @@
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
shadows = {SettingsShadowSystemProperties.class})
-public class CameraHalHdrPlusPreferenceControllerV2Test {
+public class CameraHalHdrplusPreferenceControllerV2Test {
@Mock
private PreferenceScreen mScreen;
@@ -50,7 +50,7 @@
private SwitchPreference mPreference;
private Context mContext;
- private CameraHalHdrPlusPreferenceControllerV2 mController;
+ private CameraHalHdrplusPreferenceControllerV2 mController;
static final String USERDEBUG_BUILD = "userdebug";
@@ -58,7 +58,7 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
- mController = new CameraHalHdrPlusPreferenceControllerV2(mContext);
+ mController = new CameraHalHdrplusPreferenceControllerV2(mContext);
when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
when(mPreference.getKey()).thenReturn(mController.getPreferenceKey());
mController.displayPreference(mScreen);
@@ -73,18 +73,18 @@
@Config(qualifiers = "mcc999")
public void isAvailable_withConfigNoShowAndUserDebugBuild_shouldReturnFalse() {
SettingsShadowSystemProperties.set(
- CameraHalHdrPlusPreferenceControllerV2.BUILD_TYPE, USERDEBUG_BUILD);
+ CameraHalHdrplusPreferenceControllerV2.BUILD_TYPE, USERDEBUG_BUILD);
assertThat(mController.isAvailable()).isFalse();
}
@Test
- public void updateState_cameraHalHdrPlusEnabled_shouldCheckedPreference() {
+ public void updateState_cameraHalHdrplusEnabled_shouldCheckedPreference() {
SettingsShadowSystemProperties.set(
- CameraHalHdrPlusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
- CameraHalHdrPlusPreferenceControllerV2.ENABLED);
+ CameraHalHdrplusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
+ CameraHalHdrplusPreferenceControllerV2.ENABLED);
SettingsShadowSystemProperties.set(
- CameraHalHdrPlusPreferenceControllerV2.BUILD_TYPE, USERDEBUG_BUILD);
+ CameraHalHdrplusPreferenceControllerV2.BUILD_TYPE, USERDEBUG_BUILD);
mController.updateState(mPreference);
@@ -92,12 +92,12 @@
}
@Test
- public void updateState_cameraHalHdrPlusEnabled_shouldUncheckedPreference() {
+ public void updateState_cameraHalHdrplusEnabled_shouldUncheckedPreference() {
SettingsShadowSystemProperties.set(
- CameraHalHdrPlusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
- CameraHalHdrPlusPreferenceControllerV2.DISABLED);
+ CameraHalHdrplusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
+ CameraHalHdrplusPreferenceControllerV2.DISABLED);
SettingsShadowSystemProperties.set(
- CameraHalHdrPlusPreferenceControllerV2.BUILD_TYPE, USERDEBUG_BUILD);
+ CameraHalHdrplusPreferenceControllerV2.BUILD_TYPE, USERDEBUG_BUILD);
mController.updateState(mPreference);
@@ -108,20 +108,20 @@
public void onPreferenceChange_preferenceChecked_shouldEnableCameraHalHdrplus() {
mController.onPreferenceChange(mPreference, true /* new value */);
- assertThat(CameraHalHdrPlusPreferenceControllerV2.ENABLED).isEqualTo(
+ assertThat(CameraHalHdrplusPreferenceControllerV2.ENABLED).isEqualTo(
SystemProperties.get(
- CameraHalHdrPlusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
- CameraHalHdrPlusPreferenceControllerV2.DISABLED));
+ CameraHalHdrplusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
+ CameraHalHdrplusPreferenceControllerV2.DISABLED));
}
@Test
public void handlePreferenceTreeClick_preferenceUnchecked_shouldDisableCameraHalHdrplus() {
mController.onPreferenceChange(mPreference, false /* new value */);
- assertThat(CameraHalHdrPlusPreferenceControllerV2.DISABLED).isEqualTo(
+ assertThat(CameraHalHdrplusPreferenceControllerV2.DISABLED).isEqualTo(
SystemProperties.get(
- CameraHalHdrPlusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
- CameraHalHdrPlusPreferenceControllerV2.DISABLED));
+ CameraHalHdrplusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
+ CameraHalHdrplusPreferenceControllerV2.DISABLED));
}
@Test
@@ -137,9 +137,9 @@
verify(mPreference).setEnabled(false);
verify(mPreference).setChecked(false);
- assertThat(CameraHalHdrPlusPreferenceControllerV2.DISABLED).isEqualTo(
+ assertThat(CameraHalHdrplusPreferenceControllerV2.DISABLED).isEqualTo(
SystemProperties.get(
- CameraHalHdrPlusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
- CameraHalHdrPlusPreferenceControllerV2.DISABLED));
+ CameraHalHdrplusPreferenceControllerV2.PROPERTY_CAMERA_HAL_HDRPLUS,
+ CameraHalHdrplusPreferenceControllerV2.DISABLED));
}
}
diff --git a/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagsDashboardTest.java b/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagsDashboardTest.java
index 92e92fc..0839a02 100644
--- a/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagsDashboardTest.java
+++ b/tests/robotests/src/com/android/settings/development/featureflags/FeatureFlagsDashboardTest.java
@@ -51,8 +51,8 @@
}
@Test
- public void shouldUsePlaceholderPreferenceLayout() {
+ public void shouldUseFeatureFlagPreferenceLayout() {
assertThat(mDashboard.getPreferenceScreenResId())
- .isEqualTo(R.xml.placeholder_prefs);
+ .isEqualTo(R.xml.feature_flags_settings);
}
}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/BasebandVersionPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/BasebandVersionPreferenceControllerTest.java
index 3bba438..a7d7355 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/BasebandVersionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/BasebandVersionPreferenceControllerTest.java
@@ -15,35 +15,33 @@
*/
package com.android.settings.deviceinfo;
-import android.content.Context;
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+import static org.robolectric.shadow.api.Shadow.extract;
+
import android.net.ConnectivityManager;
import android.support.v7.preference.Preference;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
+import com.android.settings.testutils.shadow.ShadowConnectivityManager;
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.RuntimeEnvironment;
import org.robolectric.annotation.Config;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION,
+ shadows = ShadowConnectivityManager.class)
public class BasebandVersionPreferenceControllerTest {
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private Context mContext;
- @Mock
- private ConnectivityManager mCm;
@Mock
private Preference mPreference;
@@ -52,19 +50,22 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- mController = new BasebandVersionPreferenceController(mContext);
- when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(mCm);
+ mController = new BasebandVersionPreferenceController(RuntimeEnvironment.application);
}
@Test
public void isAvailable_wifiOnly_shouldReturnFalse() {
- when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(false);
+ ShadowConnectivityManager connectivityManager =
+ extract(RuntimeEnvironment.application.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false);
assertThat(mController.isAvailable()).isFalse();
}
@Test
public void isAvailable_hasMobile_shouldReturnTrue() {
- when(mCm.isNetworkSupported(ConnectivityManager.TYPE_MOBILE)).thenReturn(true);
+ ShadowConnectivityManager connectivityManager =
+ extract(RuntimeEnvironment.application.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true);
assertThat(mController.isAvailable()).isTrue();
}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/HardwareInfoDialogFragmentTest.java b/tests/robotests/src/com/android/settings/deviceinfo/HardwareInfoDialogFragmentTest.java
index 8e8da51..15461cc2 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/HardwareInfoDialogFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/HardwareInfoDialogFragmentTest.java
@@ -16,13 +16,20 @@
package com.android.settings.deviceinfo;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
import android.app.Activity;
import android.os.SystemProperties;
import android.view.View;
import com.android.settings.R;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
@@ -30,12 +37,6 @@
import org.robolectric.Robolectric;
import org.robolectric.annotation.Config;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class HardwareInfoDialogFragmentTest {
@@ -53,6 +54,7 @@
SystemProperties.set("ro.boot.hardware.revision", TEST_HARDWARE_REV);
final HardwareInfoDialogFragment fragment = spy(HardwareInfoDialogFragment.newInstance());
+ doReturn("").when(fragment).getSerialNumber();
fragment.show(mActivity.getFragmentManager(), HardwareInfoDialogFragment.TAG);
verify(fragment).setText(
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/ImeiInfoPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/ImeiInfoPreferenceControllerTest.java
deleted file mode 100644
index 733ef48..0000000
--- a/tests/robotests/src/com/android/settings/deviceinfo/ImeiInfoPreferenceControllerTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.deviceinfo;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.os.UserManager;
-
-import com.android.settings.TestConfig;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-
-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;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class ImeiInfoPreferenceControllerTest {
- @Mock
- private Context mContext;
- @Mock
- private UserManager mUserManager;
- @Mock
- private ConnectivityManager mConnectivityManager;
-
- private ImeiInfoPreferenceController mController;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
- when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(
- mConnectivityManager);
- mController = new ImeiInfoPreferenceController(mContext);
- }
-
- @Test
- public void testIsAvailable_isAdminAndHasMobile_shouldReturnTrue() {
- when(mUserManager.isAdminUser()).thenReturn(true);
- when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
- .thenReturn(true);
-
- assertThat(mController.isAvailable()).isTrue();
- }
-
- @Test
- public void testIsAvailable_isAdminButNoMobile_shouldReturnFalse() {
- when(mUserManager.isAdminUser()).thenReturn(true);
- when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
- .thenReturn(false);
-
- assertThat(mController.isAvailable()).isFalse();
- }
-
- @Test
- public void testIsAvailable_isNotAdmin_shouldReturnFalse() {
- when(mUserManager.isAdminUser()).thenReturn(false);
-
- assertThat(mController.isAvailable()).isFalse();
- }
-}
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/SimStatusPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/SimStatusPreferenceControllerTest.java
deleted file mode 100644
index 6a3c05b..0000000
--- a/tests/robotests/src/com/android/settings/deviceinfo/SimStatusPreferenceControllerTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.deviceinfo;
-
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.net.ConnectivityManager;
-import android.os.UserManager;
-
-import com.android.settings.TestConfig;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-
-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;
-
-@RunWith(SettingsRobolectricTestRunner.class)
-@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
-public class SimStatusPreferenceControllerTest {
-
- @Mock
- private Context mContext;
- @Mock
- private UserManager mUserManager;
- @Mock
- private ConnectivityManager mConnectivityManager;
-
- private SimStatusPreferenceController mController;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
- when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).thenReturn(
- mConnectivityManager);
- mController = new SimStatusPreferenceController(mContext);
- }
-
- @Test
- public void testIsAvailable_isAdminAndHasMobile_shouldReturnTrue() {
- when(mUserManager.isAdminUser()).thenReturn(true);
- when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
- .thenReturn(true);
-
- assertThat(mController.isAvailable()).isTrue();
- }
-
- @Test
- public void testIsAvailable_isAdminButNoMobile_shouldReturnFalse() {
- when(mUserManager.isAdminUser()).thenReturn(true);
- when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
- .thenReturn(false);
-
- assertThat(mController.isAvailable()).isFalse();
- }
-
- @Test
- public void testIsAvailable_isNotAdmin_shouldReturnFalse() {
- when(mUserManager.isAdminUser()).thenReturn(false);
-
- assertThat(mController.isAvailable()).isFalse();
- }
-}
diff --git a/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java
index 3869807..dfe81db 100644
--- a/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AmbientDisplayAlwaysOnPreferenceControllerTest.java
@@ -17,7 +17,6 @@
package com.android.settings.display;
import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
diff --git a/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java
index 242a05d..e1ce694 100644
--- a/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AmbientDisplayNotificationsPreferenceControllerTest.java
@@ -17,9 +17,7 @@
package com.android.settings.display;
import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_AMBIENT_DISPLAY;
-
import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.eq;
@@ -33,11 +31,11 @@
import android.support.v14.preference.SwitchPreference;
import com.android.internal.hardware.AmbientDisplayConfiguration;
+import com.android.settings.TestConfig;
+import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.search.InlinePayload;
import com.android.settings.search.InlineSwitchPayload;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.TestConfig;
-import com.android.settings.core.instrumentation.MetricsFeatureProvider;
import com.android.settings.testutils.shadow.ShadowSecureSettings;
import org.junit.Before;
diff --git a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
index 02f46f2..b46441d 100644
--- a/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/display/AutoBrightnessPreferenceControllerTest.java
@@ -16,14 +16,20 @@
package com.android.settings.display;
+import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE;
+import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
+import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
+import static com.google.common.truth.Truth.assertThat;
+
import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
+
import com.android.settings.TestConfig;
import com.android.settings.search.InlinePayload;
import com.android.settings.search.InlineSwitchPayload;
import com.android.settings.search.ResultPayload;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
@@ -34,11 +40,6 @@
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
-import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE;
-import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC;
-import static android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL;
-import static com.google.common.truth.Truth.assertThat;
-
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class AutoBrightnessPreferenceControllerTest {
diff --git a/tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java
deleted file mode 100644
index 00d910e..0000000
--- a/tests/robotests/src/com/android/settings/display/ColorModePreferenceControllerTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2017 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.settings.display;
-
-import android.content.Context;
-import android.os.IBinder;
-import android.support.v14.preference.SwitchPreference;
-import android.support.v7.preference.PreferenceScreen;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.TestConfig;
-import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
-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.ReflectionHelpers;
-
-import static com.google.common.truth.Truth.assertThat;
-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 ColorModePreferenceControllerTest {
- @Mock
- private ColorModePreferenceController.ConfigurationWrapper mConfigWrapper;
- @Mock
- private SwitchPreference mPreference;
- @Mock
- private PreferenceScreen mScreen;
- @Mock
- private Context mContext;
- @Mock
- private IBinder mSurfaceFlinger;
-
- private ColorModePreferenceController mController;
-
- @Before
- public void setup() {
- MockitoAnnotations.initMocks(this);
- SettingsShadowSystemProperties.clear();
-
- mController = new ColorModePreferenceController(mContext);
- ReflectionHelpers.setField(mController, "mSurfaceFlinger", mSurfaceFlinger);
- ReflectionHelpers.setField(mController, "mConfigWrapper", mConfigWrapper);
-
- when(mConfigWrapper.isScreenWideColorGamut()).thenReturn(true);
-
- when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mPreference);
- when(mPreference.getKey()).thenReturn(mController.getPreferenceKey());
- }
-
- @Config(shadows = {SettingsShadowSystemProperties.class})
- @Test
- public void shouldCheckPreference() {
- SettingsShadowSystemProperties.set(
- ColorModePreferenceController.PERSISTENT_PROPERTY_SATURATION,
- Float.toString(ColorModePreferenceController.COLOR_SATURATION_VIVID));
-
- mController.updateState(mPreference);
-
- verify(mPreference).setChecked(true);
- }
-
- @Config(shadows = {SettingsShadowSystemProperties.class})
- @Test
- public void shouldUncheckPreference() {
- SettingsShadowSystemProperties.set(
- ColorModePreferenceController.PERSISTENT_PROPERTY_SATURATION,
- Float.toString(ColorModePreferenceController.COLOR_SATURATION_DEFAULT));
-
- mController.updateState(mPreference);
-
- verify(mPreference).setChecked(false);
- }
-
- @Config(shadows = {SettingsShadowSystemProperties.class})
- @Test
- public void shouldBoostSaturationOnCheck() {
- mController.onPreferenceChange(mPreference, true);
-
- String saturation = SettingsShadowSystemProperties
- .get(ColorModePreferenceController.PERSISTENT_PROPERTY_SATURATION);
- assertThat(saturation)
- .isEqualTo(Float.toString(ColorModePreferenceController.COLOR_SATURATION_VIVID));
- }
-
- @Config(shadows = {SettingsShadowSystemProperties.class})
- @Test
- public void shouldResetSaturationOnUncheck() {
- mController.onPreferenceChange(mPreference, false);
-
- String saturation = SettingsShadowSystemProperties
- .get(ColorModePreferenceController.PERSISTENT_PROPERTY_SATURATION);
- assertThat(saturation)
- .isEqualTo(Float.toString(ColorModePreferenceController.COLOR_SATURATION_DEFAULT));
- }
-}
diff --git a/tests/robotests/src/com/android/settings/display/ColorModePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/display/ColorModePreferenceFragmentTest.java
new file mode 100644
index 0000000..435f4f2
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/display/ColorModePreferenceFragmentTest.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.display;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+
+import android.app.IActivityManager;
+import android.content.res.Configuration;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import com.android.internal.logging.nano.MetricsProto;
+
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
+import com.android.settings.widget.RadioButtonPickerFragment;
+
+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 org.robolectric.util.ReflectionHelpers;
+
+import java.util.List;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class ColorModePreferenceFragmentTest {
+ @Mock
+ private IBinder mSurfaceFlinger;
+ @Mock
+ private IActivityManager mActivityManager;
+
+ private ColorModePreferenceFragment mFragment;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ SettingsShadowSystemProperties.clear();
+
+ mFragment = spy(new ColorModePreferenceFragment());
+ doReturn(RuntimeEnvironment.application).when(mFragment).getContext();
+ doNothing().when(mFragment).updateConfiguration();
+
+ ReflectionHelpers.setField(mFragment, "mSurfaceFlinger", mSurfaceFlinger);
+ ReflectionHelpers.setField(mFragment, "mActivityManager", mActivityManager);
+ }
+
+ @Test
+ public void verifyMetricsConstant() {
+ assertThat(mFragment.getMetricsCategory())
+ .isEqualTo(MetricsProto.MetricsEvent.COLOR_MODE_SETTINGS);
+ }
+
+ @Test
+ public void getCandidates() {
+ List<? extends RadioButtonPickerFragment.CandidateInfo> candidates =
+ mFragment.getCandidates();
+
+ assertThat(candidates.size()).isEqualTo(3);
+ assertThat(candidates.get(0).getKey())
+ .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL);
+ assertThat(candidates.get(1).getKey())
+ .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_BOOSTED);
+ assertThat(candidates.get(2).getKey())
+ .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED);
+ }
+
+ @Config(shadows = {SettingsShadowSystemProperties.class})
+ @Test
+ public void getKey_natural() {
+ SettingsShadowSystemProperties.set(
+ ColorModePreferenceFragment.PERSISTENT_PROPERTY_SATURATION,
+ Float.toString(ColorModePreferenceFragment.COLOR_SATURATION_NATURAL));
+ SettingsShadowSystemProperties.set(
+ ColorModePreferenceFragment.PERSISTENT_PROPERTY_NATIVE_MODE, "0");
+
+ assertThat(mFragment.getDefaultKey())
+ .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL);
+ }
+
+ @Config(shadows = {SettingsShadowSystemProperties.class})
+ @Test
+ public void getKey_boosted() {
+ SettingsShadowSystemProperties.set(
+ ColorModePreferenceFragment.PERSISTENT_PROPERTY_SATURATION,
+ Float.toString(ColorModePreferenceFragment.COLOR_SATURATION_BOOSTED));
+ SettingsShadowSystemProperties.set(
+ ColorModePreferenceFragment.PERSISTENT_PROPERTY_NATIVE_MODE, "0");
+
+ assertThat(mFragment.getDefaultKey())
+ .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_BOOSTED);
+ }
+
+ @Config(shadows = {SettingsShadowSystemProperties.class})
+ @Test
+ public void getKey_saturated() {
+ SettingsShadowSystemProperties.set(
+ ColorModePreferenceFragment.PERSISTENT_PROPERTY_NATIVE_MODE, "1");
+
+ assertThat(mFragment.getDefaultKey())
+ .isEqualTo(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED);
+ }
+
+ @Config(shadows = {SettingsShadowSystemProperties.class})
+ @Test
+ public void setKey_natural() {
+ mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_NATURAL);
+
+ String saturation = SettingsShadowSystemProperties
+ .get(ColorModePreferenceFragment.PERSISTENT_PROPERTY_SATURATION);
+ assertThat(saturation)
+ .isEqualTo(Float.toString(ColorModePreferenceFragment.COLOR_SATURATION_NATURAL));
+
+ String nativeMode = SettingsShadowSystemProperties
+ .get(ColorModePreferenceFragment.PERSISTENT_PROPERTY_NATIVE_MODE);
+ assertThat(nativeMode).isEqualTo("0");
+ }
+
+ @Config(shadows = {SettingsShadowSystemProperties.class})
+ @Test
+ public void setKey_boosted() {
+ mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_BOOSTED);
+
+ String saturation = SettingsShadowSystemProperties
+ .get(ColorModePreferenceFragment.PERSISTENT_PROPERTY_SATURATION);
+ assertThat(saturation)
+ .isEqualTo(Float.toString(ColorModePreferenceFragment.COLOR_SATURATION_BOOSTED));
+
+ String nativeMode = SettingsShadowSystemProperties
+ .get(ColorModePreferenceFragment.PERSISTENT_PROPERTY_NATIVE_MODE);
+ assertThat(nativeMode).isEqualTo("0");
+ }
+
+ @Config(shadows = {SettingsShadowSystemProperties.class})
+ @Test
+ public void setKey_saturated() {
+ mFragment.setDefaultKey(ColorModePreferenceFragment.KEY_COLOR_MODE_SATURATED);
+
+ String saturation = SettingsShadowSystemProperties
+ .get(ColorModePreferenceFragment.PERSISTENT_PROPERTY_SATURATION);
+ assertThat(saturation)
+ .isEqualTo(Float.toString(ColorModePreferenceFragment.COLOR_SATURATION_NATURAL));
+
+ String nativeMode = SettingsShadowSystemProperties
+ .get(ColorModePreferenceFragment.PERSISTENT_PROPERTY_NATIVE_MODE);
+ assertThat(nativeMode).isEqualTo("1");
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverSettingsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverSettingsTest.java
index 1e173a2..0e32f6b 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatterySaverSettingsTest.java
@@ -18,7 +18,9 @@
import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
+import android.provider.SearchIndexableResource;
+import com.android.settings.R;
import com.android.settings.TestConfig;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.widget.SwitchBar;
@@ -30,6 +32,8 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import java.util.List;
+
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class BatterySaverSettingsTest {
@@ -58,4 +62,13 @@
assertThat(mBatterySaverSettings.mSwitchBar.isEnabled()).isTrue();
}
+
+ @Test
+ public void searchProvider_shouldIndexDefaultXml() {
+ final List<SearchIndexableResource> sir = mBatterySaverSettings.SEARCH_INDEX_DATA_PROVIDER
+ .getXmlResourcesToIndex(mContext, true /* enabled */);
+
+ assertThat(sir).hasSize(1);
+ assertThat(sir.get(0).xmlResId).isEqualTo(R.xml.battery_saver_settings);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java
index 0c804b3..1f5ca20 100644
--- a/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/gestures/DoubleTapPowerPreferenceControllerTest.java
@@ -35,7 +35,6 @@
import com.android.settings.search.ResultPayload;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.testutils.shadow.SettingsShadowResources;
-import com.android.settings.testutils.shadow.SettingsShadowSystemProperties;
import com.android.settings.testutils.shadow.ShadowSecureSettings;
import org.junit.After;
diff --git a/tests/robotests/src/com/android/settings/location/LocationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/location/LocationPreferenceControllerTest.java
index 87691a5..355d6d0 100644
--- a/tests/robotests/src/com/android/settings/location/LocationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/location/LocationPreferenceControllerTest.java
@@ -16,7 +16,6 @@
package com.android.settings.location;
import static com.google.common.truth.Truth.assertThat;
-
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.verify;
@@ -34,11 +33,11 @@
import android.support.v7.preference.PreferenceScreen;
import com.android.settings.R;
+import com.android.settings.TestConfig;
import com.android.settings.search.InlineListPayload;
import com.android.settings.search.InlinePayload;
import com.android.settings.search.ResultPayload;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
-import com.android.settings.TestConfig;
import com.android.settings.testutils.shadow.ShadowSecureSettings;
import com.android.settingslib.core.lifecycle.Lifecycle;
diff --git a/tests/robotests/src/com/android/settings/location/ScanningSettingsTest.java b/tests/robotests/src/com/android/settings/location/ScanningSettingsTest.java
new file mode 100644
index 0000000..47b81bf
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/location/ScanningSettingsTest.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.location;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.provider.SearchIndexableResource;
+
+import com.android.settings.R;
+import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.List;
+
+@RunWith(SettingsRobolectricTestRunner.class)
+@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
+public class ScanningSettingsTest {
+
+ private Context mContext;
+ private ScanningSettings mSettings;
+
+
+ @Before
+ public void setUp() {
+ mContext = RuntimeEnvironment.application;
+ mSettings = new ScanningSettings();
+ }
+
+ @Test
+ public void searchProvider_shouldIndexDefaultXml() {
+ final List<SearchIndexableResource> sir = mSettings.SEARCH_INDEX_DATA_PROVIDER
+ .getXmlResourcesToIndex(mContext, true /* enabled */);
+
+ assertThat(sir).hasSize(1);
+ assertThat(sir.get(0).xmlResId).isEqualTo(R.xml.location_scanning);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
index 2c11e0c..1a66dcc 100644
--- a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
@@ -15,51 +15,48 @@
*/
package com.android.settings.network;
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.robolectric.shadow.api.Shadow.extract;
+
import android.content.Context;
import android.net.ConnectivityManager;
-import android.os.UserHandle;
import android.os.UserManager;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
+import com.android.settings.testutils.shadow.ShadowConnectivityManager;
import com.android.settings.testutils.shadow.ShadowRestrictedLockUtilsWrapper;
+import com.android.settings.testutils.shadow.ShadowUserManager;
import com.android.settingslib.core.lifecycle.Lifecycle;
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.RuntimeEnvironment;
import org.robolectric.annotation.Config;
-import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
@RunWith(SettingsRobolectricTestRunner.class)
@Config(
manifest = TestConfig.MANIFEST_PATH,
sdk = TestConfig.SDK_VERSION,
- shadows = ShadowRestrictedLockUtilsWrapper.class
+ shadows = {ShadowRestrictedLockUtilsWrapper.class, ShadowConnectivityManager.class,
+ ShadowUserManager.class}
)
public class MobileNetworkPreferenceControllerTest {
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Context mContext;
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private UserManager mUserManager;
- @Mock
- private ConnectivityManager mConnectivityManager;
@Mock
private TelephonyManager mTelephonyManager;
@Mock
@@ -71,21 +68,19 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
+ mContext = spy(RuntimeEnvironment.application);
mLifecycle = new Lifecycle();
- when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
- when(mContext.getSystemService(Context.CONNECTIVITY_SERVICE))
- .thenReturn(mConnectivityManager);
when(mContext.getSystemService(Context.TELEPHONY_SERVICE))
.thenReturn(mTelephonyManager);
}
@Test
public void secondaryUser_prefIsNotAvailable() {
- when(mUserManager.isAdminUser()).thenReturn(false);
- when(mUserManager.hasUserRestriction(anyString(), any(UserHandle.class)))
- .thenReturn(false);
- when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
- .thenReturn(true);
+ ShadowUserManager userManager = extract(mContext.getSystemService(UserManager.class));
+ userManager.setIsAdminUser(false);
+ ShadowConnectivityManager connectivityManager =
+ extract(mContext.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, true);
mController = new MobileNetworkPreferenceController(mContext);
assertThat(mController.isAvailable()).isFalse();
@@ -93,11 +88,11 @@
@Test
public void wifiOnly_prefIsNotAvailable() {
- when(mUserManager.isAdminUser()).thenReturn(true);
- when(mUserManager.hasUserRestriction(anyString(), any(UserHandle.class)))
- .thenReturn(false);
- when(mConnectivityManager.isNetworkSupported(ConnectivityManager.TYPE_MOBILE))
- .thenReturn(false);
+ ShadowUserManager userManager = extract(mContext.getSystemService(UserManager.class));
+ userManager.setIsAdminUser(true);
+ ShadowConnectivityManager connectivityManager =
+ extract(mContext.getSystemService(ConnectivityManager.class));
+ connectivityManager.setNetworkSupported(ConnectivityManager.TYPE_MOBILE, false);
mController = new MobileNetworkPreferenceController(mContext);
assertThat(mController.isAvailable()).isFalse();
@@ -142,5 +137,4 @@
// Carrier name should be set.
verify(mPreference).setSummary(testCarrierName);
}
-
}
diff --git a/tests/robotests/src/com/android/settings/notification/BadgingNotificationPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/BadgingNotificationPreferenceControllerTest.java
index c1a7d05..ac158b6 100644
--- a/tests/robotests/src/com/android/settings/notification/BadgingNotificationPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/BadgingNotificationPreferenceControllerTest.java
@@ -16,6 +16,14 @@
package com.android.settings.notification;
+import static android.provider.Settings.Secure.NOTIFICATION_BADGING;
+import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.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;
+
import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
@@ -38,16 +46,6 @@
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
-import static android.provider.Settings.Secure.NOTIFICATION_BADGING;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.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 BadgingNotificationPreferenceControllerTest {
diff --git a/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java b/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java
index 1135d7c..fa2c6b9 100644
--- a/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/notification/ZenModeSettingsTest.java
@@ -22,6 +22,7 @@
import android.app.NotificationManager;
import android.content.Context;
+import android.provider.SearchIndexableResource;
import android.provider.Settings;
import com.android.settings.R;
@@ -34,16 +35,20 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import java.util.List;
+
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class ZenModeSettingsTest {
private ZenModeSettings.SummaryBuilder mBuilder;
private Context mContext;
+ private ZenModeSettings mSettings;
@Before
public void setUp() {
mContext = RuntimeEnvironment.application.getApplicationContext();
+ mSettings = new ZenModeSettings();
mBuilder = new ZenModeSettings.SummaryBuilder(mContext);
}
@@ -72,4 +77,13 @@
&& result.indexOf(reminders) < result.indexOf(events));
}
+ @Test
+ public void searchProvider_shouldIndexDefaultXml() {
+ final List<SearchIndexableResource> sir = mSettings.SEARCH_INDEX_DATA_PROVIDER
+ .getXmlResourcesToIndex(mContext, true /* enabled */);
+
+ assertThat(sir).hasSize(1);
+ assertThat(sir.get(0).xmlResId).isEqualTo(R.xml.zen_mode_settings);
+ }
+
}
diff --git a/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtilsTest.java b/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtilsTest.java
index 3bfa936..126abb9 100644
--- a/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtilsTest.java
@@ -23,10 +23,10 @@
import android.util.ArrayMap;
import com.android.internal.hardware.AmbientDisplayConfiguration;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.TestConfig;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.deviceinfo.SystemUpdatePreferenceController;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
diff --git a/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java b/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java
index a3826f6..4ec080c 100644
--- a/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java
+++ b/tests/robotests/src/com/android/settings/search/IntentSearchViewHolderTest.java
@@ -221,7 +221,8 @@
assertThat(mHolder.summaryView.getText()).isEqualTo(SUMMARY);
assertThat(mHolder.summaryView.getVisibility()).isEqualTo(View.VISIBLE);
verify(mFragment).onSearchResultClicked(eq(mHolder), any(SearchResult.class));
- verify(mFragment).startActivity(result.payload.getIntent());
+ verify(mFragment).startActivityForResult(result.payload.getIntent(),
+ IntentSearchViewHolder.REQUEST_CODE_NO_OP);
}
@Test
@@ -237,7 +238,8 @@
assertThat(mHolder.summaryView.getText()).isEqualTo(SUMMARY);
assertThat(mHolder.summaryView.getVisibility()).isEqualTo(View.VISIBLE);
verify(mFragment).onSearchResultClicked(eq(mHolder), any(SearchResult.class));
- verify(mFragment, never()).startActivity(any(Intent.class));
+ verify(mFragment, never()).startActivityForResult(result.payload.getIntent(),
+ IntentSearchViewHolder.REQUEST_CODE_NO_OP);
}
private SearchResult getSearchResult(String title, String summary, Drawable icon) {
diff --git a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
index 30ffaf8..050d7aa 100644
--- a/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchFeatureProviderImplTest.java
@@ -17,8 +17,10 @@
package com.android.settings.search;
+import static com.google.common.truth.Truth.assertThat;
+
import android.app.Activity;
-import android.view.Menu;
+import android.content.ComponentName;
import com.android.settings.TestConfig;
import com.android.settings.dashboard.SiteMapManager;
@@ -27,23 +29,16 @@
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.Robolectric;
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 SearchFeatureProviderImplTest {
private SearchFeatureProviderImpl mProvider;
private Activity mActivity;
- @Mock(answer = Answers.RETURNS_DEEP_STUBS)
- private Menu menu;
-
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
@@ -76,4 +71,20 @@
assertThat(loader.mQuery).isEqualTo(query.trim());
}
+ @Test(expected = IllegalArgumentException.class)
+ public void verifyLaunchSearchResultPageCaller_nullCaller_shouldCrash() {
+ mProvider.verifyLaunchSearchResultPageCaller(mActivity, null /* caller */);
+ }
+
+ @Test(expected = SecurityException.class)
+ public void everifyLaunchSearchResultPageCaller_badCaller_shouldCrash() {
+ final ComponentName cn = new ComponentName("pkg", "class");
+ mProvider.verifyLaunchSearchResultPageCaller(mActivity, cn);
+ }
+
+ @Test
+ public void verifyLaunchSearchResultPageCaller_goodCaller_shouldNotCrash() {
+ final ComponentName cn = new ComponentName(mActivity.getPackageName(), "class");
+ mProvider.verifyLaunchSearchResultPageCaller(mActivity, cn);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java b/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
index 1ddff90..0e3ce50 100644
--- a/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
@@ -17,20 +17,16 @@
package com.android.settings.search;
import static android.provider.SearchIndexablesContract.COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE;
-import static com.android.settings.search.SearchIndexableResources.NO_DATA_RES_ID;
-
+import static com.android.settings.search.SearchIndexableResources.NO_RES_ID;
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.spy;
-import android.annotation.DrawableRes;
-import android.annotation.XmlRes;
import android.database.Cursor;
import android.provider.SearchIndexableResource;
-
import android.text.TextUtils;
-import com.android.settings.R;
-import com.android.settings.testutils.SettingsRobolectricTestRunner;
+
import com.android.settings.TestConfig;
+import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settings.wifi.WifiSettings;
import org.junit.After;
@@ -46,11 +42,6 @@
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class SearchIndexableResourcesTest {
- @XmlRes
- private static final int XML_RES_ID = R.xml.physical_keyboard_settings;
- @DrawableRes
- private static final int ICON_RES_ID = R.drawable.ic_settings_language;
-
Map<String, SearchIndexableResource> sResMapCopy;
@Before
@@ -72,14 +63,14 @@
assertThat(SearchIndexableResources.getResourceByName("java.lang.String")).isNull();
final int beforeCount = SearchIndexableResources.values().size();
- SearchIndexableResources.addIndex(java.lang.String.class, XML_RES_ID, ICON_RES_ID);
+ SearchIndexableResources.addIndex(java.lang.String.class);
final SearchIndexableResource index = SearchIndexableResources
.getResourceByName("java.lang.String");
assertThat(index).isNotNull();
assertThat(index.className).isEqualTo("java.lang.String");
- assertThat(index.xmlResId).isEqualTo(XML_RES_ID);
- assertThat(index.iconResId).isEqualTo(ICON_RES_ID);
+ assertThat(index.xmlResId).isEqualTo(NO_RES_ID);
+ assertThat(index.iconResId).isEqualTo(NO_RES_ID);
final int afterCount = SearchIndexableResources.values().size();
assertThat(afterCount).isEqualTo(beforeCount + 1);
}
@@ -91,20 +82,20 @@
assertThat(index).isNotNull();
assertThat(index.className).isEqualTo(WifiSettings.class.getName());
- assertThat(index.xmlResId).isEqualTo(NO_DATA_RES_ID);
- assertThat(index.iconResId).isEqualTo(R.drawable.ic_settings_wireless);
+ assertThat(index.xmlResId).isEqualTo(NO_RES_ID);
+ assertThat(index.iconResId).isEqualTo(NO_RES_ID);
}
@Test
public void testNonIndexableKeys_GetsKeyFromProvider() {
SearchIndexableResources.sResMap.clear();
- SearchIndexableResources.addIndex(FakeIndexProvider.class, 0, 0);
+ SearchIndexableResources.addIndex(FakeIndexProvider.class);
SettingsSearchIndexablesProvider provider = spy(new SettingsSearchIndexablesProvider());
Cursor cursor = provider.queryNonIndexableKeys(null);
boolean hasTestKey = false;
- while(cursor.moveToNext()) {
+ while (cursor.moveToNext()) {
String key = cursor.getString(COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE);
if (TextUtils.equals(key, FakeIndexProvider.KEY)) {
hasTestKey = true;
diff --git a/tests/robotests/src/com/android/settings/search/indexing/IndexDataConverterTest.java b/tests/robotests/src/com/android/settings/search/indexing/IndexDataConverterTest.java
index cac6f3a..1612036 100644
--- a/tests/robotests/src/com/android/settings/search/indexing/IndexDataConverterTest.java
+++ b/tests/robotests/src/com/android/settings/search/indexing/IndexDataConverterTest.java
@@ -334,6 +334,17 @@
assertThat(nonTitlePref.enabled).isTrue();
}
+ @Test
+ public void testResourceWithoutXml_shouldNotCrash() {
+ final SearchIndexableResource resource = getFakeResource(0);
+ final PreIndexData preIndexData = new PreIndexData();
+ preIndexData.dataToUpdate.add(resource);
+
+ List<IndexData> indexData = mConverter.convertPreIndexDataToIndexData(preIndexData);
+
+ assertThat(indexData).isEmpty();
+ }
+
private void assertDisplaySetting(IndexData row, String title, String summaryOn,
String summaryOff, String key) {
assertThat(row.normalizedTitle).isEqualTo(title);
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowConnectivityManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowConnectivityManager.java
index 4c05665..742fbf8 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowConnectivityManager.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowConnectivityManager.java
@@ -17,6 +17,7 @@
package com.android.settings.testutils.shadow;
import android.net.ConnectivityManager;
+import android.util.SparseBooleanArray;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
@@ -24,14 +25,14 @@
@Implements(ConnectivityManager.class)
public class ShadowConnectivityManager extends org.robolectric.shadows.ShadowConnectivityManager {
- private static boolean mIsNetworkSupported;
+ private final SparseBooleanArray mSupportedNetworkTypes = new SparseBooleanArray();
+
+ public void setNetworkSupported(int networkType, boolean supported) {
+ mSupportedNetworkTypes.put(networkType, supported);
+ }
@Implementation
public boolean isNetworkSupported(int networkType) {
- return mIsNetworkSupported;
- }
-
- public static void setIsNetworkSupported(boolean isNetworkSupported) {
- mIsNetworkSupported = isNetworkSupported;
+ return mSupportedNetworkTypes.get(networkType);
}
}
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
index 4d4fd62..888fa36 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUserManager.java
@@ -37,6 +37,16 @@
public class ShadowUserManager extends org.robolectric.shadows.ShadowUserManager {
private SparseArray<UserInfo> mUserInfos = new SparseArray<>();
+ private boolean mAdminUser;
+
+ public void setIsAdminUser(boolean isAdminUser) {
+ mAdminUser = isAdminUser;
+ }
+
+ @Implementation
+ public boolean isAdminUser() {
+ return mAdminUser;
+ }
public void setUserInfo(int userHandle, UserInfo userInfo) {
mUserInfos.put(userHandle, userInfo);
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java
index bfeb3c7..0691086 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowUtils.java
@@ -55,11 +55,6 @@
sIsDemoUser = false;
}
- @Implementation
- public static boolean isWifiOnly(Context context) {
- return true;
- }
-
public static void setIsDemoUser(boolean isDemoUser) {
sIsDemoUser = isDemoUser;
}