OSDN Git Service

Update layout and strings for DO Disclosures
authorBartosz Fabianowski <bartfab@google.com>
Wed, 8 Mar 2017 13:01:26 +0000 (14:01 +0100)
committerBartosz Fabianowski <bartfab@google.com>
Wed, 8 Mar 2017 18:07:29 +0000 (19:07 +0100)
This CL updates the DO Disclosures page (aka "Enterprise Privacy")
to incorporate UI layout and string changes proposed since
implementation began. There are no logic changes.

Test: make RunSettingsRoboTests
Bug: 32692748

Change-Id: I6ae972e77bd90eb9c61d6a516046a6eb09981ad3

34 files changed:
AndroidManifest.xml
res/values/strings.xml
res/xml/enterprise_privacy_settings.xml
res/xml/security_settings_misc.xml
src/com/android/settings/enterprise/AdminActionPreferenceControllerBase.java
src/com/android/settings/enterprise/AdminGrantedCameraPermissionPreferenceController.java
src/com/android/settings/enterprise/AdminGrantedLocationPermissionsPreferenceController.java
src/com/android/settings/enterprise/AdminGrantedMicrophonePermissionPreferenceController.java
src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBase.java
src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceController.java
src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceController.java
src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceController.java
src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceController.java
src/com/android/settings/enterprise/FailedPasswordWipeManagedProfilePreferenceController.java
src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerBase.java
src/com/android/settings/enterprise/FailedPasswordWipePrimaryUserPreferenceController.java
src/com/android/settings/enterprise/ImePreferenceController.java
src/com/android/settings/enterprise/InstalledPackagesPreferenceController.java
tests/robotests/src/com/android/settings/enterprise/AdminActionPreferenceControllerTestBase.java
tests/robotests/src/com/android/settings/enterprise/AdminGrantedCameraPermissionPreferenceControllerTest.java
tests/robotests/src/com/android/settings/enterprise/AdminGrantedLocationPermissionsPreferenceControllerTest.java
tests/robotests/src/com/android/settings/enterprise/AdminGrantedMicrophonePermissionPreferenceControllerTest.java
tests/robotests/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerBaseTest.java
tests/robotests/src/com/android/settings/enterprise/AdminGrantedPermissionsPreferenceControllerTestBase.java
tests/robotests/src/com/android/settings/enterprise/CaCertsCurrentUserPreferenceControllerTest.java
tests/robotests/src/com/android/settings/enterprise/CaCertsManagedProfilePreferenceControllerTest.java
tests/robotests/src/com/android/settings/enterprise/EnterpriseInstalledPackagesPreferenceControllerTest.java
tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsPreferenceControllerTest.java
tests/robotests/src/com/android/settings/enterprise/FailedPasswordWipeManagedProfilePreferenceControllerTest.java
tests/robotests/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerBaseTest.java
tests/robotests/src/com/android/settings/enterprise/FailedPasswordWipePreferenceControllerTestBase.java
tests/robotests/src/com/android/settings/enterprise/FailedPasswordWipePrimaryUserPreferenceControllerTest.java
tests/robotests/src/com/android/settings/enterprise/ImePreferenceControllerTest.java
tests/robotests/src/com/android/settings/enterprise/InstalledPackagesPreferenceControllerTest.java

index b3db932..ef419e2 100644 (file)
         </activity>
 
         <activity android:name="Settings$EnterprisePrivacySettingsActivity"
-            android:label="@string/enterprise_privacy_settings_title"
-            android:icon="@drawable/ic_settings_about"
-            android:taskAffinity="com.android.settings"
-            android:parentActivityName="Settings">
+                android:label="@string/enterprise_privacy_settings_title"
+                android:taskAffinity="com.android.settings"
+                android:parentActivityName="Settings$SecuritySettingsActivity">
             <intent-filter>
                 <action android:name="android.settings.ENTERPRISE_PRIVACY_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-            <intent-filter android:priority="-1">
-                <action android:name="com.android.settings.action.SETTINGS" />
-            </intent-filter>
-            <meta-data android:name="com.android.settings.category"
-                android:value="com.android.settings.category.ia.system" />
             <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                 android:value="com.android.settings.enterprise.EnterprisePrivacySettings" />
         </activity>
index 7716a4e..fd027bb 100644 (file)
 
     <!-- Enterprise Privacy --> <skip />
 
-    <!-- Title of setting on main settings screen. This will take the user to a screen with information about his/her privacy on a managed device. Shown on enterprise-managed devices only. -->
-    <string name="enterprise_privacy_settings">Privacy</string>
+    <!-- Title of setting on security settings screen. This will take the user to a screen with information about admin powers and their impact on the user's privacy on a managed device. Shown on enterprise-managed devices only. -->
+    <string name="enterprise_privacy_settings">Device management</string>
+    <!-- Summary for Enterprise Privacy settings, explaining what the user can expect to find under it [CHAR LIMIT=NONE]-->
+    <string name="enterprise_privacy_settings_summary">View all settings applied by your admin</string>
     <!-- Enterprise Privacy settings activity title -->
-    <string name="enterprise_privacy_settings_title">Privacy</string>
-    <!-- Enterprise Privacy settings activity header, summarizing the powers that the admin has. [CHAR LIMIT=NONE] -->
-    <string name="enterprise_privacy_header">To provide access to your work data, your organization may change settings and install software on your device, which could cause some of your personal content to be visible to your admin. Contact your organization\'s admin for more details.</string>
-    <!-- Title for the 'What types of information can your organization see?' preference category. [CHAR LIMIT=60] -->
-    <string name="enterprise_privacy_exposure_category">What types of information can your organization see?</string>
-    <!-- Title for the 'What changes affect what your organization can see?' preference category. [CHAR LIMIT=60] -->
-    <string name="enterprise_privacy_exposure_changes_category">What changes affect what your organization can see?</string>
-    <!-- Title for the 'What actions may impact your access to this device?' preference category. [CHAR LIMIT=60] -->
-    <string name="enterprise_privacy_device_access_category">What actions may impact your access to this device?</string>
+    <string name="enterprise_privacy_settings_title">Device management</string>
+    <!-- Enterprise Privacy settings activity footer, summarizing the powers that the admin has. [CHAR LIMIT=NONE] -->
+    <string name="enterprise_privacy_footer">To provide access to your work data, your organization may change settings and install software on your device. \n\nFor more details, contact your organization\'s admin.</string>
+    <!-- Title for the 'Types of information your organization can see' preference category. [CHAR LIMIT=60] -->
+    <string name="enterprise_privacy_exposure_category">Types of information your organization can see</string>
+    <!-- Title for the 'Changes made by your organization’s admin' preference category. [CHAR LIMIT=60] -->
+    <string name="enterprise_privacy_exposure_changes_category">Changes made by your organization\'s admin</string>
+    <!-- Title for the 'Your access to this device' preference category. [CHAR LIMIT=60] -->
+    <string name="enterprise_privacy_device_access_category">Your access to this device</string>
     <!-- Label explaining that the admin can see data associated with his/her work account. [CHAR LIMIT=NONE] -->
     <string name="enterprise_privacy_enterprise_data">Data associated with your work account, such as email and calendar</string>
-    <!-- Label explaining that the admin can see all apps installed on the device. [CHAR LIMIT=NONE] -->
-    <string name="enterprise_privacy_number_installed_packages_default">List of all apps on your device</string>
-    <!-- Label explaining that the admin can see all apps installed on the device. [CHAR LIMIT=NONE] -->
-    <plurals name="enterprise_privacy_number_installed_packages">
-        <item quantity="one">List of all <xliff:g id="count">%d</xliff:g> app on your device</item>
-        <item quantity="other">List of all <xliff:g id="count">%d</xliff:g> apps on your device</item>
+    <!-- Label explaining that the admin can see apps installed on the device. [CHAR LIMIT=NONE] -->
+    <string name="enterprise_privacy_installed_packages">List of apps on your device</string>
+    <!-- Summary indicating the number of apps that a label (e.g. installed apps or apps granted a particular permission) refers to. [CHAR LIMIT=NONE] -->
+    <plurals name="enterprise_privacy_number_packages">
+        <item quantity="one"><xliff:g id="count">%d</xliff:g> app</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> apps</item>
+    </plurals>
+    <!-- Summary indicating the number of apps that a label (e.g. installed apps or apps granted a particular permission) refers to. [CHAR LIMIT=NONE] -->
+    <plurals name="enterprise_privacy_number_packages_actionable">
+        <item quantity="one"><xliff:g id="count">%d</xliff:g> app. Tap to view.</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> apps. Tap to view.</item>
     </plurals>
     <!-- Label explaining that the admin can see app usage statistics. [CHAR LIMIT=NONE] -->
-    <string name="enterprise_privacy_usage_stats">Usage (time spent and amount of data used) of each app on your device</string>
+    <string name="enterprise_privacy_usage_stats">Time and data spent in each app on your device</string>
     <!-- Label explaining that the admin can retrieve network logs on the device. [CHAR LIMIT=NONE] -->
-    <string name="enterprise_privacy_network_logs">Traffic logs on your device</string>
+    <string name="enterprise_privacy_network_logs">Network traffic logs on your device</string>
     <!-- Label explaining that the admin can request bug reports on the device. [CHAR LIMIT=NONE] -->
-    <string name="enterprise_privacy_bug_reports">Your most recent bug report</string>
+    <string name="enterprise_privacy_bug_reports">Most recent bug report</string>
     <!-- Label explaining that the admin can retrieve security on from the device. [CHAR LIMIT=NONE] -->
-    <string name="enterprise_privacy_security_logs">Your most recent security log</string>
-    <!-- Label indicating that the date at which the admin last took a particular action was "never" (i.e. the admin never took the action so far). -->
-    <string name="enterprise_privacy_never">Never</string>
-    <!-- Label indicating how many apps were installed on the device by the admin. [CHAR LIMIT=NONE] -->
-    <plurals name="enterprise_privacy_number_enterprise_installed_packages">
-        <item quantity="one"><xliff:g id="count">%d</xliff:g> app installed by your admin</item>
-        <item quantity="other"><xliff:g id="count">%d</xliff:g> apps installed by your admin</item>
-    </plurals>
-    <!-- Label indicating how many apps were granted permission to access the device's location by the admin. [CHAR LIMIT=NONE] -->
-    <plurals name="enterprise_privacy_number_location_access_packages">
-        <item quantity="one"><xliff:g id="count">%d</xliff:g> app allowed access to your location by your admin</item>
-        <item quantity="other"><xliff:g id="count">%d</xliff:g> apps allowed access to your location by your admin</item>
-    </plurals>
-    <!-- Label indicating how many apps were granted permission to access the microphone by the admin. [CHAR LIMIT=NONE] -->
-    <plurals name="enterprise_privacy_number_microphone_access_packages">
-        <item quantity="one"><xliff:g id="count">%d</xliff:g> app allowed access to your microphone by your admin</item>
-        <item quantity="other"><xliff:g id="count">%d</xliff:g> apps allowed access to your microphone by your admin</item>
-    </plurals>
-    <!-- Label indicating how many apps were granted permission to access the camera by the admin. [CHAR LIMIT=NONE] -->
-    <plurals name="enterprise_privacy_number_camera_access_packages">
-        <item quantity="one"><xliff:g id="count">%d</xliff:g> app allowed access to your camera by your admin</item>
-        <item quantity="other"><xliff:g id="count">%d</xliff:g> apps allowed access to your camera by your admin</item>
-    </plurals>
-    <!-- Label indicating how many apps were set as default defaults for common actions (e.g. open browser, send e-mail) by the admin. [CHAR LIMIT=NONE] -->
-    <plurals name="enterprise_privacy_number_enterprise_set_default_apps">
-        <item quantity="one"><xliff:g id="count">%d</xliff:g> default app set by your admin</item>
-        <item quantity="other"><xliff:g id="count">%d</xliff:g> default apps set by your admin</item>
-    </plurals>
+    <string name="enterprise_privacy_security_logs">Most recent security log</string>
+    <!-- Label indicating that the the admin never took a given action so far (e.g. did not retrieve security logs or request bug reports). -->
+    <string name="enterprise_privacy_none">None</string>
+    <!-- Label indicating that the admin installed one or more apps on the device. -->
+    <string name="enterprise_privacy_enterprise_installed_packages">Apps installed</string>
+    <!-- Label indicating that the admin granted one or more apps access to the device's location. [CHAR LIMIT=NONE] -->
+    <string name="enterprise_privacy_location_access">Apps allowed to access your location</string>
+    <!-- Label indicating that the admin granted one or more apps access to the microphone. [CHAR LIMIT=NONE] -->
+    <string name="enterprise_privacy_microphone_access">Apps allowed to access your microphone</string>
+    <!-- Label indicating that the admin granted one or more apps access to the camera. [CHAR LIMIT=NONE] -->
+    <string name="enterprise_privacy_camera_access">Apps allowed to access your camera</string>
+    <!-- Label indicating that the admin set one or more apps as defaults for common actions (e.g. open browser, send e-mail). [CHAR LIMIT=NONE] -->
+    <string name="enterprise_privacy_enterprise_set_default_apps">Default apps set</string>
     <!-- Label explaining that the current input method was set by the admin. [CHAR LIMIT=NONE] -->
-    <string name="enterprise_privacy_input_method">Default keyboard set to <xliff:g id="app_label" example="Example Keyboard">%s</xliff:g> by your admin</string>
+    <string name="enterprise_privacy_input_method">Default keyboard</string>
+    <!-- Summary indicating the input method set by the admin. [CHAR LIMIT=NONE] -->
+    <string name="enterprise_privacy_input_method_name">Set to <xliff:g id="app_label" example="Example Keyboard">%s</xliff:g></string>
     <!-- Label explaining that an always-on VPN was set by the admin for the entire device. [CHAR LIMIT=NONE] -->
     <string name="enterprise_privacy_always_on_vpn_device">Always-on VPN turned on</string>
     <!-- Label explaining that an always-on VPN was set by the admin in the personal profile. [CHAR LIMIT=NONE] -->
     <string name="enterprise_privacy_global_http_proxy">Global HTTP proxy set</string>
     <!-- Label explaining that the admin installed trusted CA certificates for the current user. [CHAR LIMIT=NONE] -->
     <plurals name="enterprise_privacy_ca_certs_user">
-        <item quantity="one"><xliff:g id="count">%d</xliff:g> trusted CA certificate installed</item>
-        <item quantity="other"><xliff:g id="count">%d</xliff:g> trusted CA certificates installed</item>
+        <item quantity="one">Trusted CA Certificate installed</item>
+        <item quantity="other">Trusted CA Certificates installed</item>
     </plurals>
     <!-- Label explaining that the admin installed trusted CA certificates for the personal profile. [CHAR LIMIT=NONE] -->
     <plurals name="enterprise_privacy_ca_certs_personal">
-        <item quantity="one"><xliff:g id="count">%d</xliff:g> trusted CA certificate installed in the personal profile</item>
-        <item quantity="other"><xliff:g id="count">%d</xliff:g> trusted CA certificates installed in the personal profile</item>
+        <item quantity="one">Trusted CA Certificate installed in the personal profile</item>
+        <item quantity="other">Trusted CA Certificates installed in the personal profile</item>
+    </plurals>
+    <!-- Summary indicating the number of trusted CA certificates installed by the admin. [CHAR LIMIT=NONE] -->
+    <plurals name="enterprise_privacy_number_ca_certs">
+        <item quantity="one"><xliff:g id="count">%d</xliff:g> certificate</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> certificates</item>
+    </plurals>
+    <!-- Summary indicating the number of trusted CA certificates installed by the admin. [CHAR LIMIT=NONE] -->
+    <plurals name="enterprise_privacy_number_ca_certs_actionable">
+        <item quantity="one"><xliff:g id="count">%d</xliff:g> certificate. Tap to view.</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> certificates. Tap to view.</item>
     </plurals>
     <!-- Label explaining that the admin installed trusted CA certificates for the work profile. [CHAR LIMIT=NONE] -->
     <plurals name="enterprise_privacy_ca_certs_work">
-        <item quantity="one"><xliff:g id="count">%d</xliff:g> trusted CA certificate installed in the work profile</item>
-        <item quantity="other"><xliff:g id="count">%d</xliff:g> trusted CA certificates installed in the work profile</item>
+        <item quantity="one">Trusted CA Certificate installed in the work profile</item>
+        <item quantity="other">Trusted CA Certificates installed in the work profile</item>
     </plurals>
     <!-- Label explaining that the admin can lock the device and change the user's password. [CHAR LIMIT=NONE] -->
-    <string name="enterprise_privacy_lock_device">Admin can lock device and reset password</string>
+    <string name="enterprise_privacy_lock_device">Admin can lock the device and reset password</string>
     <!-- Label explaining that the admin can wipe the device remotely. [CHAR LIMIT=NONE] -->
     <string name="enterprise_privacy_wipe_device">Admin can delete all device data</string>
-    <!-- Label explaining that the admin configured the device to wipe itself when the password is mistyped this many times. [CHAR LIMIT=NONE] -->
-    <plurals name="enterprise_privacy_failed_password_wipe_device">
-        <item quantity="one">Admin set maximum password attempts to <xliff:g id="count">%d</xliff:g> before deleting all device data</item>
-        <item quantity="other">Admin set maximum password attempts to <xliff:g id="count">%d</xliff:g> before deleting all device data</item>
-    </plurals>
-    <!-- Label explaining that the admin configured the work profile to wipe itself when the password is mistyped this many times. [CHAR LIMIT=NONE] -->
-    <plurals name="enterprise_privacy_failed_password_wipe_work">
-        <item quantity="one">Admin set maximum password attempts to <xliff:g id="count">%d</xliff:g> before deleting work profile data</item>
-        <item quantity="other">Admin set maximum password attempts to <xliff:g id="count">%d</xliff:g> before deleting work profile data</item>
+    <!-- Label explaining that the admin configured the device to wipe itself when the password is mistyped too many times. [CHAR LIMIT=NONE] -->
+    <string name="enterprise_privacy_failed_password_wipe_device">Failed password attempts before deleting all device data</string>
+    <!-- Label explaining that the admin configured the work profile to wipe itself when the password is mistyped too many times. [CHAR LIMIT=NONE] -->
+    <string name="enterprise_privacy_failed_password_wipe_work">Failed password attempts before deleting work profile data</string>
+    <!-- Summary indicating the number of mistyped passwords after which the device or work profile wipes itself. [CHAR LIMIT=NONE] -->
+    <plurals name="enterprise_privacy_number_failed_password_wipe">
+        <item quantity="one"><xliff:g id="count">%d</xliff:g> attempt</item>
+        <item quantity="other"><xliff:g id="count">%d</xliff:g> attempts</item>
     </plurals>
     <!-- Message indicating that the device is enterprise-managed by a Device Owner [CHAR LIMIT=NONE] -->
-    <string name="do_disclosure_generic">This device is managed.</string>
+    <string name="do_disclosure_generic">This device is managed by your organization.</string>
     <!-- Message indicating that the device is enterprise-managed by a Device Owner [CHAR LIMIT=NONE] -->
     <string name="do_disclosure_with_name">This device is managed by <xliff:g id="organization_name" example="Foo, Inc.">%s</xliff:g>.</string>
     <!-- Message indicating that the device is enterprise-managed: Space that separates the main text and the "learn more" link that follows it. [CHAR LIMIT=NONE] -->
index 436c227..f08b9f2 100644 (file)
         android:key="enterprise_privacy_settings"
         android:title="@string/enterprise_privacy_settings_title">
 
-    <!-- Header -->
-    <Preference android:key="enterprise_privacy_header"
-            android:summary="@string/enterprise_privacy_header"
-            android:selectable="false"/>
-
     <PreferenceCategory android:title="@string/enterprise_privacy_exposure_category">
         <com.android.settings.DividerPreference
                 android:key="enterprise_data"
                 android:layout_height="wrap_content"
                 android:title="@string/enterprise_privacy_enterprise_data"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
-                android:key="number_installed_packages"
-                android:title="@string/enterprise_privacy_number_installed_packages_default"
-                settings:allowDividerBelow="true"
+                android:key="installed_packages"
+                android:title="@string/enterprise_privacy_installed_packages"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="usage_stats"
                 android:title="@string/enterprise_privacy_usage_stats"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="network_logs"
                 android:title="@string/enterprise_privacy_network_logs"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="bug_reports"
                 android:title="@string/enterprise_privacy_bug_reports"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="security_logs"
                 android:title="@string/enterprise_privacy_security_logs"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
     </PreferenceCategory>
 
     <PreferenceCategory android:title="@string/enterprise_privacy_exposure_changes_category">
         <com.android.settings.DividerPreference
                 android:key="number_enterprise_installed_packages"
-                settings:allowDividerBelow="true"
+                android:title="@string/enterprise_privacy_enterprise_installed_packages"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="enterprise_privacy_number_location_access_packages"
-                settings:allowDividerBelow="true"
+                android:title="@string/enterprise_privacy_location_access"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="enterprise_privacy_number_microphone_access_packages"
-                settings:allowDividerBelow="true"
+                android:title="@string/enterprise_privacy_microphone_access"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="enterprise_privacy_number_camera_access_packages"
-                settings:allowDividerBelow="true"
+                android:title="@string/enterprise_privacy_camera_access"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="number_enterprise_set_default_apps"
-                settings:allowDividerBelow="true"
+                android:title="@string/enterprise_privacy_enterprise_set_default_apps"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="always_on_vpn_primary_user"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="always_on_vpn_managed_profile"
                 android:title="@string/enterprise_privacy_always_on_vpn_work"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="input_method"
-                settings:allowDividerBelow="true"
+                android:title="@string/enterprise_privacy_input_method"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="global_http_proxy"
                 android:title="@string/enterprise_privacy_global_http_proxy"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="ca_certs_current_user"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="ca_certs_managed_profile"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
     </PreferenceCategory>
 
         <com.android.settings.DividerPreference
                 android:key="lock_device"
                 android:title="@string/enterprise_privacy_lock_device"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="wipe_device"
                 android:title="@string/enterprise_privacy_wipe_device"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="failed_password_wipe_primary_user"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
         <com.android.settings.DividerPreference
                 android:key="failed_password_wipe_managed_profile"
-                settings:allowDividerBelow="true"
                 settings:multiLine="true"/>
     </PreferenceCategory>
+
+    <com.android.settings.widget.FooterPreference
+            android:title="@string/enterprise_privacy_footer"
+            android:selectable="false"/>
 </PreferenceScreen>
index 04272df..155f21a 100644 (file)
                 android:persistent="false"
                 android:fragment="com.android.settings.DeviceAdminSettings"/>
 
+        <Preference android:key="enterprise_privacy"
+                android:title="@string/enterprise_privacy_settings"
+                android:summary="@string/enterprise_privacy_settings_summary"
+                android:persistent="false"
+                android:fragment="com.android.settings.enterprise.EnterprisePrivacySettings"/>
+
     </PreferenceCategory>
 
     <Preference android:key="sim_lock_settings"
index 6b72573..f6bd4c1 100644 (file)
@@ -40,7 +40,7 @@ public abstract class AdminActionPreferenceControllerBase extends PreferenceCont
     public void updateState(Preference preference) {
         final Date timestamp = getAdminActionTimestamp();
         preference.setSummary(timestamp == null ?
-                mContext.getString(R.string.enterprise_privacy_never) :
+                mContext.getString(R.string.enterprise_privacy_none) :
                 DateUtils.formatDateTime(mContext, timestamp.getTime(),
                         DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE));
     }
index a2137ff..35648c8 100644 (file)
@@ -17,8 +17,6 @@ package com.android.settings.enterprise;
 import android.Manifest;
 import android.content.Context;
 
-import com.android.settings.R;
-
 public class AdminGrantedCameraPermissionPreferenceController extends
         AdminGrantedPermissionsPreferenceControllerBase {
 
@@ -26,8 +24,7 @@ public class AdminGrantedCameraPermissionPreferenceController extends
             = "enterprise_privacy_number_camera_access_packages";
 
     public AdminGrantedCameraPermissionPreferenceController(Context context) {
-        super(context, new String[] {Manifest.permission.CAMERA},
-                R.plurals.enterprise_privacy_number_camera_access_packages);
+        super(context, new String[] {Manifest.permission.CAMERA});
     }
 
     @Override
index 0453b53..f570558 100644 (file)
@@ -17,8 +17,6 @@ package com.android.settings.enterprise;
 import android.Manifest;
 import android.content.Context;
 
-import com.android.settings.R;
-
 public class AdminGrantedLocationPermissionsPreferenceController extends
         AdminGrantedPermissionsPreferenceControllerBase {
 
@@ -27,8 +25,7 @@ public class AdminGrantedLocationPermissionsPreferenceController extends
 
     public AdminGrantedLocationPermissionsPreferenceController(Context context) {
         super(context, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,
-                Manifest.permission.ACCESS_FINE_LOCATION},
-                R.plurals.enterprise_privacy_number_location_access_packages);
+                Manifest.permission.ACCESS_FINE_LOCATION});
     }
 
     @Override
index 3adde92..842235d 100644 (file)
@@ -17,8 +17,6 @@ package com.android.settings.enterprise;
 import android.Manifest;
 import android.content.Context;
 
-import com.android.settings.R;
-
 public class AdminGrantedMicrophonePermissionPreferenceController extends
         AdminGrantedPermissionsPreferenceControllerBase {
 
@@ -26,8 +24,7 @@ public class AdminGrantedMicrophonePermissionPreferenceController extends
             = "enterprise_privacy_number_microphone_access_packages";
 
     public AdminGrantedMicrophonePermissionPreferenceController(Context context) {
-        super(context, new String[] {Manifest.permission.RECORD_AUDIO},
-                R.plurals.enterprise_privacy_number_microphone_access_packages);
+        super(context, new String[] {Manifest.permission.RECORD_AUDIO});
     }
 
     @Override
index 2ca5451..2b972a5 100644 (file)
@@ -18,6 +18,7 @@ import android.content.Context;
 import android.content.res.Resources;
 import android.support.v7.preference.Preference;
 
+import com.android.settings.R;
 import com.android.settings.applications.ApplicationFeatureProvider;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.overlay.FeatureFactory;
@@ -25,14 +26,11 @@ import com.android.settings.overlay.FeatureFactory;
 public abstract class AdminGrantedPermissionsPreferenceControllerBase extends PreferenceController {
 
     private final String[] mPermissions;
-    private final int mStringResourceId;
     private final ApplicationFeatureProvider mFeatureProvider;
 
-    public AdminGrantedPermissionsPreferenceControllerBase(Context context, String[] permissions,
-            int stringResourceId) {
+    public AdminGrantedPermissionsPreferenceControllerBase(Context context, String[] permissions) {
         super(context);
         mPermissions = permissions;
-        mStringResourceId = stringResourceId;
         mFeatureProvider = FeatureFactory.getFactory(context)
                 .getApplicationFeatureProvider(context);
     }
@@ -45,8 +43,8 @@ public abstract class AdminGrantedPermissionsPreferenceControllerBase extends Pr
                         preference.setVisible(false);
                     } else {
                         preference.setVisible(true);
-                        preference.setTitle(mContext.getResources().getQuantityString(
-                                mStringResourceId, num, num));
+                        preference.setSummary(mContext.getResources().getQuantityString(
+                                R.plurals.enterprise_privacy_number_packages, num, num));
                     }
                 });
     }
index 94b944a..c8ea551 100644 (file)
@@ -41,8 +41,10 @@ public class CaCertsCurrentUserPreferenceController extends PreferenceController
             return;
         }
         preference.setTitle(mContext.getResources().getQuantityString(
-                mFeatureProvider.isInCompMode() ? R.plurals.enterprise_privacy_ca_certs_personal
-                        : R.plurals.enterprise_privacy_ca_certs_user, certs, certs));
+                mFeatureProvider.isInCompMode() ? R.plurals.enterprise_privacy_ca_certs_personal :
+                        R.plurals.enterprise_privacy_ca_certs_user, certs));
+        preference.setSummary(mContext.getResources().getQuantityString(
+                R.plurals.enterprise_privacy_number_ca_certs, certs, certs));
         preference.setVisible(true);
     }
 
index 8de5e60..33224ae 100644 (file)
@@ -41,7 +41,9 @@ public class CaCertsManagedProfilePreferenceController extends PreferenceControl
             return;
         }
         preference.setTitle(mContext.getResources().getQuantityString(
-                R.plurals.enterprise_privacy_ca_certs_work, certs, certs));
+                R.plurals.enterprise_privacy_ca_certs_work, certs));
+        preference.setSummary(mContext.getResources().getQuantityString(
+                R.plurals.enterprise_privacy_number_ca_certs, certs, certs));
         preference.setVisible(true);
     }
 
index 1fbb04a..9b4be3a 100644 (file)
@@ -44,9 +44,8 @@ public class EnterpriseInstalledPackagesPreferenceController extends PreferenceC
                         preference.setVisible(false);
                     } else {
                         preference.setVisible(true);
-                        preference.setTitle(mContext.getResources().getQuantityString(
-                                R.plurals.enterprise_privacy_number_enterprise_installed_packages,
-                                num, num));
+                        preference.setSummary(mContext.getResources().getQuantityString(
+                                R.plurals.enterprise_privacy_number_packages, num, num));
                     }
                 });
     }
index 23627cd..08a72e3 100644 (file)
@@ -68,9 +68,8 @@ public class EnterpriseSetDefaultAppsPreferenceController extends PreferenceCont
             preference.setVisible(false);
         } else {
             preference.setVisible(true);
-            preference.setTitle(mContext.getResources().getQuantityString(
-                    R.plurals.enterprise_privacy_number_enterprise_set_default_apps,
-                    num, num));
+            preference.setSummary(mContext.getResources().getQuantityString(
+                    R.plurals.enterprise_privacy_number_packages, num, num));
         }
     }
 
index 2eac0a9..5a0e7c8 100644 (file)
@@ -15,8 +15,6 @@ package com.android.settings.enterprise;
 
 import android.content.Context;
 
-import com.android.settings.R;
-
 public class FailedPasswordWipeManagedProfilePreferenceController
         extends FailedPasswordWipePreferenceControllerBase {
 
@@ -24,7 +22,7 @@ public class FailedPasswordWipeManagedProfilePreferenceController
             = "failed_password_wipe_managed_profile";
 
     public FailedPasswordWipeManagedProfilePreferenceController(Context context) {
-        super(context, R.plurals.enterprise_privacy_failed_password_wipe_work);
+        super(context);
     }
 
     @Override
index 7cdd8da..ee4aecf 100644 (file)
@@ -18,17 +18,16 @@ import android.content.Context;
 import android.content.res.Resources;
 import android.support.v7.preference.Preference;
 
+import com.android.settings.R;
 import com.android.settings.core.PreferenceController;
 import com.android.settings.overlay.FeatureFactory;
 
 public abstract class FailedPasswordWipePreferenceControllerBase extends PreferenceController {
 
-    private final int mStringResourceId;
     protected final EnterprisePrivacyFeatureProvider mFeatureProvider;
 
-    public FailedPasswordWipePreferenceControllerBase(Context context, int stringResourceId) {
+    public FailedPasswordWipePreferenceControllerBase(Context context) {
         super(context);
-        mStringResourceId = stringResourceId;
         mFeatureProvider = FeatureFactory.getFactory(context)
                 .getEnterprisePrivacyFeatureProvider(context);
     }
@@ -42,8 +41,9 @@ public abstract class FailedPasswordWipePreferenceControllerBase extends Prefere
             preference.setVisible(false);
         } else {
             preference.setVisible(true);
-            preference.setTitle(mContext.getResources().getQuantityString(
-                    mStringResourceId, failedPasswordsBeforeWipe, failedPasswordsBeforeWipe));
+            preference.setSummary(mContext.getResources().getQuantityString(
+                    R.plurals.enterprise_privacy_number_failed_password_wipe,
+                    failedPasswordsBeforeWipe, failedPasswordsBeforeWipe));
         }
     }
 
index 91bdf9b..44c6383 100644 (file)
@@ -15,8 +15,6 @@ package com.android.settings.enterprise;
 
 import android.content.Context;
 
-import com.android.settings.R;
-
 public class FailedPasswordWipePrimaryUserPreferenceController
         extends FailedPasswordWipePreferenceControllerBase {
 
@@ -24,7 +22,7 @@ public class FailedPasswordWipePrimaryUserPreferenceController
             = "failed_password_wipe_primary_user";
 
     public FailedPasswordWipePrimaryUserPreferenceController(Context context) {
-        super(context, R.plurals.enterprise_privacy_failed_password_wipe_device);
+        super(context);
     }
 
     @Override
index 18dfac7..3c0cc26 100644 (file)
@@ -40,8 +40,8 @@ public class ImePreferenceController extends PreferenceController {
             preference.setVisible(false);
             return;
         }
-        preference.setTitle(mContext.getResources().getString(
-            R.string.enterprise_privacy_input_method, ownerSetIme));
+        preference.setSummary(mContext.getResources().getString(
+            R.string.enterprise_privacy_input_method_name, ownerSetIme));
         preference.setVisible(true);
     }
 
index 91ac4c2..4252429 100644 (file)
@@ -24,7 +24,7 @@ import com.android.settings.overlay.FeatureFactory;
 
 public class InstalledPackagesPreferenceController extends PreferenceController {
 
-    private static final String KEY_NUMBER_INSTALLED_PACKAGES = "number_installed_packages";
+    private static final String KEY_INSTALLED_PACKAGES = "installed_packages";
     private final ApplicationFeatureProvider mFeatureProvider;
 
     public InstalledPackagesPreferenceController(Context context) {
@@ -38,8 +38,12 @@ public class InstalledPackagesPreferenceController extends PreferenceController
         mFeatureProvider.calculateNumberOfInstalledApps(
                 ApplicationFeatureProvider.IGNORE_INSTALL_REASON,
                 (num) -> {
-                    preference.setTitle(mContext.getResources().getQuantityString(
-                            R.plurals.enterprise_privacy_number_installed_packages, num, num));
+                    if (num == 0) {
+                        preference.setSummary("");
+                    } else {
+                        preference.setSummary(mContext.getResources().getQuantityString(
+                                R.plurals.enterprise_privacy_number_packages, num, num));
+                    }
                 });
     }
 
@@ -50,6 +54,6 @@ public class InstalledPackagesPreferenceController extends PreferenceController
 
     @Override
     public String getPreferenceKey() {
-        return KEY_NUMBER_INSTALLED_PACKAGES;
+        return KEY_INSTALLED_PACKAGES;
     }
 }
index 59043ed..e9b9d86 100644 (file)
@@ -59,12 +59,12 @@ public abstract class AdminActionPreferenceControllerTestBase {
     @Test
     public void testUpdateState() {
         final Preference preference = new Preference(mContext, null, 0, 0);
-        when(mContext.getString(R.string.enterprise_privacy_never)).thenReturn("Never");
+        when(mContext.getString(R.string.enterprise_privacy_none)).thenReturn("None");
         Settings.System.putString(mContext.getContentResolver(), Settings.System.TIME_12_24, "24");
 
         setDate(null);
         mController.updateState(preference);
-        assertThat(preference.getSummary()).isEqualTo("Never");
+        assertThat(preference.getSummary()).isEqualTo("None");
 
         final Date date = new GregorianCalendar(2011 /* year */, 10 /* month */, 9 /* dayOfMonth */,
                 8 /* hourOfDay */, 7 /* minute */, 6 /* second */).getTime();
index de24885..6efccfc 100644 (file)
@@ -18,7 +18,6 @@ package com.android.settings.enterprise;
 
 import android.Manifest;
 
-import com.android.settings.R;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import org.junit.runner.RunWith;
@@ -34,8 +33,7 @@ public final class AdminGrantedCameraPermissionPreferenceControllerTest extends
 
     public AdminGrantedCameraPermissionPreferenceControllerTest() {
         super("enterprise_privacy_number_camera_access_packages",
-                new String[] {Manifest.permission.CAMERA},
-                R.plurals.enterprise_privacy_number_camera_access_packages);
+                new String[] {Manifest.permission.CAMERA});
     }
 
     @Override
index 1c6f91d..a23ad8b 100644 (file)
@@ -18,7 +18,6 @@ package com.android.settings.enterprise;
 
 import android.Manifest;
 
-import com.android.settings.R;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import org.junit.runner.RunWith;
@@ -35,8 +34,7 @@ public final class AdminGrantedLocationPermissionsPreferenceControllerTest exten
     public AdminGrantedLocationPermissionsPreferenceControllerTest() {
         super("enterprise_privacy_number_location_access_packages",
                 new String[] {Manifest.permission.ACCESS_COARSE_LOCATION,
-                        Manifest.permission.ACCESS_FINE_LOCATION},
-                R.plurals.enterprise_privacy_number_location_access_packages);
+                        Manifest.permission.ACCESS_FINE_LOCATION});
     }
 
     @Override
index bcaf63f..39a715f 100644 (file)
@@ -18,7 +18,6 @@ package com.android.settings.enterprise;
 
 import android.Manifest;
 
-import com.android.settings.R;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 import org.junit.runner.RunWith;
@@ -34,8 +33,7 @@ public final class AdminGrantedMicrophonePermissionPreferenceControllerTest exte
 
     public AdminGrantedMicrophonePermissionPreferenceControllerTest() {
         super("enterprise_privacy_number_microphone_access_packages",
-                new String[] {Manifest.permission.RECORD_AUDIO},
-                R.plurals.enterprise_privacy_number_microphone_access_packages);
+                new String[] {Manifest.permission.RECORD_AUDIO});
     }
 
     @Override
index 2bebbf0..1f52b0e 100644 (file)
@@ -30,7 +30,7 @@ public final class AdminGrantedPermissionsPreferenceControllerBaseTest extends
         AdminGrantedPermissionsPreferenceControllerTestBase {
 
     public AdminGrantedPermissionsPreferenceControllerBaseTest() {
-        super(null, new String[] {"some.permission"}, 123 /* resourceStringId */);
+        super(null, new String[] {"some.permission"});
     }
 
     @Override
@@ -43,8 +43,7 @@ public final class AdminGrantedPermissionsPreferenceControllerBaseTest extends
             AdminGrantedPermissionsPreferenceControllerBase {
 
         AdminGrantedPermissionsPreferenceControllerBaseTestable() {
-            super(AdminGrantedPermissionsPreferenceControllerBaseTest.this.mContext, mPermissions,
-                    mStringResourceId);
+            super(AdminGrantedPermissionsPreferenceControllerBaseTest.this.mContext, mPermissions);
         }
 
         @Override
index 68ded37..821fb34 100644 (file)
@@ -20,6 +20,7 @@ import android.content.Context;
 import android.content.res.Resources;
 import android.support.v7.preference.Preference;
 
+import com.android.settings.R;
 import com.android.settings.applications.ApplicationFeatureProvider;
 import com.android.settings.testutils.FakeFeatureFactory;
 
@@ -44,7 +45,6 @@ public abstract class AdminGrantedPermissionsPreferenceControllerTestBase {
 
     protected final String mKey;
     protected final String[] mPermissions;
-    protected final int mStringResourceId;
 
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     protected Context mContext;
@@ -52,11 +52,9 @@ public abstract class AdminGrantedPermissionsPreferenceControllerTestBase {
 
     protected AdminGrantedPermissionsPreferenceControllerBase mController;
 
-    public AdminGrantedPermissionsPreferenceControllerTestBase(String key, String[] permissions,
-            int stringResourceId) {
+    public AdminGrantedPermissionsPreferenceControllerTestBase(String key, String[] permissions) {
         mKey = key;
         mPermissions = permissions;
-        mStringResourceId = stringResourceId;
     }
 
     @Before
@@ -83,10 +81,10 @@ public abstract class AdminGrantedPermissionsPreferenceControllerTestBase {
         preference.setVisible(false);
 
         setNumberOfPackagesWithAdminGrantedPermissions(20);
-        when(mContext.getResources().getQuantityString(mStringResourceId, 20, 20))
-                .thenReturn("20 packages");
+        when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_number_packages,
+                20, 20)).thenReturn("20 packages");
         mController.updateState(preference);
-        assertThat(preference.getTitle()).isEqualTo("20 packages");
+        assertThat(preference.getSummary()).isEqualTo("20 packages");
         assertThat(preference.isVisible()).isTrue();
 
         setNumberOfPackagesWithAdminGrantedPermissions(0);
index 364b538..3cd63bb 100644 (file)
@@ -43,8 +43,12 @@ import static org.mockito.Mockito.when;
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public final class CaCertsCurrentUserPreferenceControllerTest {
 
-    private final String INSTALLED_CERTS_USER = "10 certs installed";
-    private final String INSTALLED_CERTS_PERSONAL = "10 certs installed in personal profile";
+    private final String INSTALLED_CERTS_USER_1 = "cert installed";
+    private final String INSTALLED_CERTS_USER_10 = "certs installed";
+    private final String INSTALLED_CERTS_PERSONAL_1 = "cert installed in personal profile";
+    private final String INSTALLED_CERTS_PERSONAL_10 = "certs installed in personal profile";
+    private final String NUMBER_INSTALLED_CERTS_1 = "1 cert";
+    private final String NUMBER_INSTALLED_CERTS_10 = "10 certs";
 
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private Context mContext;
@@ -58,12 +62,21 @@ public final class CaCertsCurrentUserPreferenceControllerTest {
         FakeFeatureFactory.setupForTest(mContext);
         mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
         mController = new CaCertsCurrentUserPreferenceController(mContext);
+
+        when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_ca_certs_user,
+                1)).thenReturn(INSTALLED_CERTS_USER_1);
+        when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_ca_certs_user,
+                10)).thenReturn(INSTALLED_CERTS_USER_10);
         when(mContext.getResources().getQuantityString(
-                R.plurals.enterprise_privacy_ca_certs_user, 10, 10))
-                        .thenReturn(INSTALLED_CERTS_USER);
+                R.plurals.enterprise_privacy_ca_certs_personal, 1))
+                .thenReturn(INSTALLED_CERTS_PERSONAL_1);
         when(mContext.getResources().getQuantityString(
-                R.plurals.enterprise_privacy_ca_certs_personal, 10, 10))
-                        .thenReturn(INSTALLED_CERTS_PERSONAL);
+                R.plurals.enterprise_privacy_ca_certs_personal, 10))
+                .thenReturn(INSTALLED_CERTS_PERSONAL_10);
+        when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_number_ca_certs,
+                1, 1)).thenReturn(NUMBER_INSTALLED_CERTS_1);
+        when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_number_ca_certs,
+                10, 10)).thenReturn(NUMBER_INSTALLED_CERTS_10);
     }
 
     @Test
@@ -79,10 +92,19 @@ public final class CaCertsCurrentUserPreferenceControllerTest {
         assertThat(preference.isVisible()).isFalse();
 
         when(mFeatureFactory.enterprisePrivacyFeatureProvider
+                .getNumberOfOwnerInstalledCaCertsInCurrentUser()).thenReturn(1);
+        mController.updateState(preference);
+        assertThat(preference.isVisible()).isTrue();
+        assertThat(preference.getTitle()).isEqualTo(INSTALLED_CERTS_USER_1);
+        assertThat(preference.getSummary()).isEqualTo(NUMBER_INSTALLED_CERTS_1);
+
+        preference.setVisible(false);
+        when(mFeatureFactory.enterprisePrivacyFeatureProvider
                 .getNumberOfOwnerInstalledCaCertsInCurrentUser()).thenReturn(10);
         mController.updateState(preference);
         assertThat(preference.isVisible()).isTrue();
-        assertThat(preference.getTitle()).isEqualTo(INSTALLED_CERTS_USER);
+        assertThat(preference.getTitle()).isEqualTo(INSTALLED_CERTS_USER_10);
+        assertThat(preference.getSummary()).isEqualTo(NUMBER_INSTALLED_CERTS_10);
 
         when(mFeatureFactory.enterprisePrivacyFeatureProvider.isInCompMode()).thenReturn(true);
 
@@ -92,10 +114,19 @@ public final class CaCertsCurrentUserPreferenceControllerTest {
         assertThat(preference.isVisible()).isFalse();
 
         when(mFeatureFactory.enterprisePrivacyFeatureProvider
+                .getNumberOfOwnerInstalledCaCertsInCurrentUser()).thenReturn(1);
+        mController.updateState(preference);
+        assertThat(preference.isVisible()).isTrue();
+        assertThat(preference.getTitle()).isEqualTo(INSTALLED_CERTS_PERSONAL_1);
+        assertThat(preference.getSummary()).isEqualTo(NUMBER_INSTALLED_CERTS_1);
+
+        preference.setVisible(false);
+        when(mFeatureFactory.enterprisePrivacyFeatureProvider
                 .getNumberOfOwnerInstalledCaCertsInCurrentUser()).thenReturn(10);
         mController.updateState(preference);
         assertThat(preference.isVisible()).isTrue();
-        assertThat(preference.getTitle()).isEqualTo(INSTALLED_CERTS_PERSONAL);
+        assertThat(preference.getTitle()).isEqualTo(INSTALLED_CERTS_PERSONAL_10);
+        assertThat(preference.getSummary()).isEqualTo(NUMBER_INSTALLED_CERTS_10);
     }
 
     @Test
index ff741e1..c66128b 100644 (file)
@@ -43,7 +43,10 @@ import static org.mockito.Mockito.when;
 @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
 public final class CaCertsManagedProfilePreferenceControllerTest {
 
-    private final String INSTALLED_CERTS = "10 certs installed";
+    private final String INSTALLED_CERTS_1 = "cert installed";
+    private final String INSTALLED_CERTS_10 = "certs installed";
+    private final String NUMBER_INSTALLED_CERTS_1 = "1 cert";
+    private final String NUMBER_INSTALLED_CERTS_10 = "10 certs";
 
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private Context mContext;
@@ -57,8 +60,15 @@ public final class CaCertsManagedProfilePreferenceControllerTest {
         FakeFeatureFactory.setupForTest(mContext);
         mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
         mController = new CaCertsManagedProfilePreferenceController(mContext);
-        when(mContext.getResources().getQuantityString(
-                R.plurals.enterprise_privacy_ca_certs_work, 10, 10)).thenReturn(INSTALLED_CERTS);
+
+        when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_ca_certs_work,
+                1)).thenReturn(INSTALLED_CERTS_1);
+        when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_ca_certs_work,
+                10)).thenReturn(INSTALLED_CERTS_10);
+        when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_number_ca_certs,
+                1, 1)).thenReturn(NUMBER_INSTALLED_CERTS_1);
+        when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_number_ca_certs,
+                10, 10)).thenReturn(NUMBER_INSTALLED_CERTS_10);
     }
 
     @Test
@@ -72,10 +82,19 @@ public final class CaCertsManagedProfilePreferenceControllerTest {
         assertThat(preference.isVisible()).isFalse();
 
         when(mFeatureFactory.enterprisePrivacyFeatureProvider
+                .getNumberOfOwnerInstalledCaCertsInManagedProfile()).thenReturn(1);
+        mController.updateState(preference);
+        assertThat(preference.isVisible()).isTrue();
+        assertThat(preference.getTitle()).isEqualTo(INSTALLED_CERTS_1);
+        assertThat(preference.getSummary()).isEqualTo(NUMBER_INSTALLED_CERTS_1);
+
+        preference.setVisible(false);
+        when(mFeatureFactory.enterprisePrivacyFeatureProvider
                 .getNumberOfOwnerInstalledCaCertsInManagedProfile()).thenReturn(10);
         mController.updateState(preference);
         assertThat(preference.isVisible()).isTrue();
-        assertThat(preference.getTitle()).isEqualTo(INSTALLED_CERTS);
+        assertThat(preference.getTitle()).isEqualTo(INSTALLED_CERTS_10);
+        assertThat(preference.getSummary()).isEqualTo(NUMBER_INSTALLED_CERTS_10);
     }
 
     @Test
index b55b512..46c29b2 100644 (file)
@@ -86,11 +86,10 @@ public final class EnterpriseInstalledPackagesPreferenceControllerTest {
         assertThat(preference.isVisible()).isFalse();
 
         setNumberOfEnterpriseInstalledPackages(20);
-        when(mContext.getResources().getQuantityString(
-                R.plurals.enterprise_privacy_number_enterprise_installed_packages, 20, 20))
-                .thenReturn("20 packages");
+        when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_number_packages,
+                20, 20)).thenReturn("20 packages");
         mController.updateState(preference);
-        assertThat(preference.getTitle()).isEqualTo("20 packages");
+        assertThat(preference.getSummary()).isEqualTo("20 packages");
         assertThat(preference.isVisible()).isTrue();
     }
 
index 84520a5..093ce20 100644 (file)
@@ -118,11 +118,10 @@ public final class EnterpriseSetDefaultAppsPreferenceControllerTest {
                 ContactsContract.Contacts.CONTENT_TYPE)}, 32);
         setEnterpriseSetDefaultApps(new Intent[] {new Intent(Intent.ACTION_DIAL),
                 new Intent(Intent.ACTION_CALL)}, 64);
-        when(mContext.getResources().getQuantityString(
-                R.plurals.enterprise_privacy_number_enterprise_set_default_apps, 127, 127))
-                .thenReturn("127 apps");
+        when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_number_packages,
+                127, 127)).thenReturn("127 apps");
         mController.updateState(preference);
-        assertThat(preference.getTitle()).isEqualTo("127 apps");
+        assertThat(preference.getSummary()).isEqualTo("127 apps");
         assertThat(preference.isVisible()).isTrue();
     }
 
index 29952a7..c9981f9 100644 (file)
@@ -18,7 +18,6 @@ package com.android.settings.enterprise;
 
 import android.content.Context;
 
-import com.android.settings.R;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 
@@ -38,8 +37,7 @@ public final class FailedPasswordWipeManagedProfilePreferenceControllerTest exte
     private int mMaximumFailedPasswordsBeforeWipe = 0;
 
     public FailedPasswordWipeManagedProfilePreferenceControllerTest() {
-        super("failed_password_wipe_managed_profile",
-                R.plurals.enterprise_privacy_failed_password_wipe_work);
+        super("failed_password_wipe_managed_profile");
     }
 
     @Override
index 97d0d6d..1c7b448 100644 (file)
@@ -33,7 +33,7 @@ public final class FailedPasswordWipePreferenceControllerBaseTest extends
     private int mMaximumFailedPasswordsBeforeWipe = 0;
 
     public FailedPasswordWipePreferenceControllerBaseTest() {
-        super(null, 123 /* stringResourceId */);
+        super(null);
     }
 
     @Override
@@ -50,7 +50,7 @@ public final class FailedPasswordWipePreferenceControllerBaseTest extends
     private class FailedPasswordWipePreferenceControllerBaseTestable extends
             FailedPasswordWipePreferenceControllerBase {
         FailedPasswordWipePreferenceControllerBaseTestable() {
-            super(FailedPasswordWipePreferenceControllerBaseTest.this.mContext, mStringResourceId);
+            super(FailedPasswordWipePreferenceControllerBaseTest.this.mContext);
         }
 
         @Override
index 5a74fa5..aa189e2 100644 (file)
@@ -20,6 +20,7 @@ import android.content.Context;
 import android.content.res.Resources;
 import android.support.v7.preference.Preference;
 
+import com.android.settings.R;
 import com.android.settings.testutils.FakeFeatureFactory;
 
 import org.junit.Before;
@@ -37,7 +38,6 @@ import static org.mockito.Mockito.when;
 public abstract class FailedPasswordWipePreferenceControllerTestBase {
 
     protected final String mKey;
-    protected final int mStringResourceId;
 
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     protected Context mContext;
@@ -45,9 +45,8 @@ public abstract class FailedPasswordWipePreferenceControllerTestBase {
 
     protected FailedPasswordWipePreferenceControllerBase mController;
 
-    public FailedPasswordWipePreferenceControllerTestBase(String key, int stringResourceId) {
+    public FailedPasswordWipePreferenceControllerTestBase(String key) {
         mKey = key;
-        mStringResourceId = stringResourceId;
     }
 
     @Before
@@ -65,11 +64,11 @@ public abstract class FailedPasswordWipePreferenceControllerTestBase {
         preference.setVisible(false);
 
         setMaximumFailedPasswordsBeforeWipe(10);
-        when(mContext.getResources().getQuantityString(mStringResourceId, 10, 10))
+        when(mContext.getResources().getQuantityString(
+                R.plurals.enterprise_privacy_number_failed_password_wipe, 10, 10))
                 .thenReturn("10 attempts");
         mController.updateState(preference);
-        assertThat(preference.getTitle()).isEqualTo("10 attempts");
-        assertThat(preference.isVisible()).isTrue();
+        assertThat(preference.getSummary()).isEqualTo("10 attempts");
 
         setMaximumFailedPasswordsBeforeWipe(0);
         mController.updateState(preference);
index ea6d977..65c9828 100644 (file)
@@ -18,7 +18,6 @@ package com.android.settings.enterprise;
 
 import android.content.Context;
 
-import com.android.settings.R;
 import com.android.settings.SettingsRobolectricTestRunner;
 import com.android.settings.TestConfig;
 
@@ -38,8 +37,7 @@ public final class FailedPasswordWipePrimaryUserPreferenceControllerTest extends
     private int mMaximumFailedPasswordsBeforeWipe = 0;
 
     public FailedPasswordWipePrimaryUserPreferenceControllerTest() {
-        super("failed_password_wipe_primary_user",
-                R.plurals.enterprise_privacy_failed_password_wipe_device);
+        super("failed_password_wipe_primary_user");
     }
 
     @Override
index 232a872..547746c 100644 (file)
@@ -44,7 +44,7 @@ import static org.mockito.Mockito.when;
 public final class ImePreferenceControllerTest {
 
     private final String DEFAULT_IME_LABEL = "Test IME";
-    private final String DEFAULT_IME_TEXT = "IME set to Test IME";
+    private final String DEFAULT_IME_TEXT = "Set to Test IME";
 
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private Context mContext;
@@ -58,7 +58,7 @@ public final class ImePreferenceControllerTest {
         FakeFeatureFactory.setupForTest(mContext);
         mFeatureFactory = (FakeFeatureFactory) FakeFeatureFactory.getFactory(mContext);
         mController = new ImePreferenceController(mContext);
-        when(mContext.getResources().getString(R.string.enterprise_privacy_input_method,
+        when(mContext.getResources().getString(R.string.enterprise_privacy_input_method_name,
                 DEFAULT_IME_LABEL)).thenReturn(DEFAULT_IME_TEXT);
     }
 
@@ -76,7 +76,7 @@ public final class ImePreferenceControllerTest {
             .thenReturn(DEFAULT_IME_LABEL);
         mController.updateState(preference);
         assertThat(preference.isVisible()).isTrue();
-        assertThat(preference.getTitle()).isEqualTo(DEFAULT_IME_TEXT);
+        assertThat(preference.getSummary()).isEqualTo(DEFAULT_IME_TEXT);
     }
 
     @Test
index bf2c4ca..60ceed6 100644 (file)
@@ -64,22 +64,30 @@ public final class InstalledPackagesPreferenceControllerTest {
         mController = new InstalledPackagesPreferenceController(mContext);
     }
 
-    @Test
-    public void testUpdateState() {
-        final Preference preference = new Preference(mContext, null, 0, 0);
+    private void setNumberOfInstalledPackages(int number) {
         doAnswer(new Answer() {
             public Object answer(InvocationOnMock invocation) {
                 ((ApplicationFeatureProvider.NumberOfAppsCallback)
-                        invocation.getArguments()[1]).onNumberOfAppsResult(20);
+                        invocation.getArguments()[1]).onNumberOfAppsResult(number);
                 return null;
             }}).when(mFeatureFactory.applicationFeatureProvider)
                     .calculateNumberOfInstalledApps(
                             eq(ApplicationFeatureProvider.IGNORE_INSTALL_REASON), anyObject());
-        when(mContext.getResources().getQuantityString(
-                R.plurals.enterprise_privacy_number_installed_packages, 20, 20))
-                .thenReturn("20 packages");
+    }
+
+    @Test
+    public void testUpdateState() {
+        final Preference preference = new Preference(mContext, null, 0, 0);
+
+        setNumberOfInstalledPackages(0);
+        mController.updateState(preference);
+        assertThat(preference.getSummary()).isEqualTo("");
+
+        setNumberOfInstalledPackages(20);
+        when(mContext.getResources().getQuantityString(R.plurals.enterprise_privacy_number_packages,
+                20, 20)).thenReturn("20 packages");
         mController.updateState(preference);
-        assertThat(preference.getTitle()).isEqualTo("20 packages");
+        assertThat(preference.getSummary()).isEqualTo("20 packages");
     }
 
     @Test
@@ -95,6 +103,6 @@ public final class InstalledPackagesPreferenceControllerTest {
 
     @Test
     public void testGetPreferenceKey() {
-        assertThat(mController.getPreferenceKey()).isEqualTo("number_installed_packages");
+        assertThat(mController.getPreferenceKey()).isEqualTo("installed_packages");
     }
 }