Merge "Find graceful description when missing disk." into pi-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7ba4715..2b850e8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -9078,13 +9078,13 @@
     <!-- Data usage remaining string [CHAR LIMIT=30] -->
     <string name="data_used"><xliff:g name="bytes" example="2 GB">^1</xliff:g> used</string>
 
-    <!-- Data usage remaining string [CHAR LIMIT=30] -->
+    <!-- Data usage remaining string [CHAR LIMIT=13] -->
     <string name="data_used_formatted"><xliff:g name="value" example="500">^1</xliff:g> <xliff:g name="units" example="GB">^2</xliff:g> used</string>
 
-    <!-- Data usage over limit string [CHAR LIMIT=30] -->
+    <!-- Data usage over limit string [CHAR LIMIT=13] -->
     <string name="data_overusage"><xliff:g name="bytes" example="2 GB">^1</xliff:g> over</string>
 
-    <!-- Optional part of data usage showing the remaining amount [CHAR LIMIT=30] -->
+    <!-- Optional part of data usage showing the remaining amount [CHAR LIMIT=13] -->
     <string name="data_remaining"><xliff:g name="bytes" example="2 GB">^1</xliff:g> left</string>
 
     <!-- Informational text about time left in billing cycle [CHAR LIMIT=60] -->
diff --git a/res/xml/security_dashboard_settings.xml b/res/xml/security_dashboard_settings.xml
index 858cbaf..7519cef 100644
--- a/res/xml/security_dashboard_settings.xml
+++ b/res/xml/security_dashboard_settings.xml
@@ -41,7 +41,7 @@
         <com.android.settings.widget.GearPreference
             android:key="unlock_set_or_change"
             android:title="@string/unlock_set_unlock_launch_picker_title"
-            android:summary="@string/unlock_set_unlock_mode_none"
+            android:summary="@string/summary_placeholder"
             settings:keywords="@string/keywords_lockscreen" />
 
         <Preference
diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml
index 704d553..c079807 100644
--- a/res/xml/sound_settings.xml
+++ b/res/xml/sound_settings.xml
@@ -20,7 +20,7 @@
     android:title="@string/sound_settings"
     android:key="sound_settings"
     settings:keywords="@string/keywords_sounds"
-    settings:initialExpandedChildrenCount="8">
+    settings:initialExpandedChildrenCount="9">
 
     <!-- Media volume -->
     <com.android.settings.notification.VolumeSeekBarPreference
diff --git a/res/xml/zen_mode_block_settings.xml b/res/xml/zen_mode_block_settings.xml
index 63dbd47..cccc63c 100644
--- a/res/xml/zen_mode_block_settings.xml
+++ b/res/xml/zen_mode_block_settings.xml
@@ -24,15 +24,15 @@
        android:title="@string/zen_mode_block_effects_screen_off"
        android:key="zen_mode_block_screen_off">
 
-       <CheckBoxPreference
+       <com.android.settings.widget.DisabledCheckBoxPreference
            android:key="zen_effect_intent"
            android:title="@string/zen_mode_block_effect_intent" />
 
-       <CheckBoxPreference
+       <com.android.settings.widget.DisabledCheckBoxPreference
            android:key="zen_effect_light"
            android:title="@string/zen_mode_block_effect_light" />
 
-       <CheckBoxPreference
+       <com.android.settings.widget.DisabledCheckBoxPreference
            android:key="zen_effect_ambient"
            android:title="@string/zen_mode_block_effect_ambient" />
 
@@ -40,19 +40,19 @@
     <PreferenceCategory
         android:title="@string/zen_mode_block_effects_screen_on"
         android:key="zen_mode_block_screen_on">
-       <CheckBoxPreference
+       <com.android.settings.widget.DisabledCheckBoxPreference
            android:key="zen_effect_badge"
            android:title="@string/zen_mode_block_effect_badge" />
 
-        <CheckBoxPreference
+        <com.android.settings.widget.DisabledCheckBoxPreference
             android:key="zen_effect_status"
             android:title="@string/zen_mode_block_effect_status" />
 
-        <CheckBoxPreference
+        <com.android.settings.widget.DisabledCheckBoxPreference
             android:key="zen_effect_peek"
             android:title="@string/zen_mode_block_effect_peek" />
 
-       <CheckBoxPreference
+       <com.android.settings.widget.DisabledCheckBoxPreference
            android:key="zen_effect_list"
            android:title="@string/zen_mode_block_effect_list" />
    </PreferenceCategory>
diff --git a/res/xml/zen_mode_settings.xml b/res/xml/zen_mode_settings.xml
index 385e8ff..717b6c5 100644
--- a/res/xml/zen_mode_settings.xml
+++ b/res/xml/zen_mode_settings.xml
@@ -25,7 +25,8 @@
     <!-- sound vibration -->
     <com.android.settings.widget.DisabledCheckBoxPreference
         android:key="zen_effect_sound"
-        android:title="@string/zen_mode_block_effect_sound" />
+        android:title="@string/zen_mode_block_effect_sound"
+        android:enabled="false"/>
 
     <!-- What to block (effects) -->
     <Preference
diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java
index b172198..d9410b2 100644
--- a/src/com/android/settings/accounts/AccountPreferenceController.java
+++ b/src/com/android/settings/accounts/AccountPreferenceController.java
@@ -40,6 +40,7 @@
 import android.support.v7.preference.Preference.OnPreferenceClickListener;
 import android.support.v7.preference.PreferenceGroup;
 import android.support.v7.preference.PreferenceScreen;
+import android.text.BidiFormatter;
 import android.util.ArrayMap;
 import android.util.Log;
 import android.util.SparseArray;
@@ -313,7 +314,7 @@
         preferenceGroup.setOrder(mAccountProfileOrder++);
         if (isSingleProfile()) {
             preferenceGroup.setTitle(context.getString(R.string.account_for_section_header,
-                userInfo.name));
+                    BidiFormatter.getInstance().unicodeWrap(userInfo.name)));
             preferenceGroup.setContentDescription(
                 mContext.getString(R.string.account_settings));
         } else if (userInfo.isManagedProfile()) {
diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreference.java b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
index c8d2cef..e5e83eb 100644
--- a/src/com/android/settings/datausage/DataUsageSummaryPreference.java
+++ b/src/com/android/settings/datausage/DataUsageSummaryPreference.java
@@ -187,7 +187,7 @@
             updateCarrierInfo(carrierInfo);
             if (mLaunchIntent != null) {
                 launchButton.setOnClickListener((view) -> {
-                    getContext().sendBroadcast(mLaunchIntent);
+                    getContext().startActivity(mLaunchIntent);
                 });
                 launchButton.setVisibility(View.VISIBLE);
             } else {
diff --git a/src/com/android/settings/fuelgauge/BatteryUtils.java b/src/com/android/settings/fuelgauge/BatteryUtils.java
index c8a5d47..639c1fb 100644
--- a/src/com/android/settings/fuelgauge/BatteryUtils.java
+++ b/src/com/android/settings/fuelgauge/BatteryUtils.java
@@ -416,6 +416,11 @@
         mAppOpsManager.setMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, uid, packageName, mode);
     }
 
+    public boolean isForceAppStandbyEnabled(int uid, String packageName) {
+        return mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, uid,
+                packageName) == AppOpsManager.MODE_IGNORED;
+    }
+
     public void initBatteryStatsHelper(BatteryStatsHelper statsHelper, Bundle bundle,
             UserManager userManager) {
         statsHelper.create(bundle);
diff --git a/src/com/android/settings/fuelgauge/RestrictedAppDetails.java b/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
index e75112c..96fafb3 100644
--- a/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
+++ b/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
@@ -133,7 +133,8 @@
             try {
                 final ApplicationInfo applicationInfo = mPackageManager.getApplicationInfoAsUser(
                         appInfo.packageName, 0 /* flags */, UserHandle.getUserId(appInfo.uid));
-                checkBoxPreference.setChecked(true);
+                checkBoxPreference.setChecked(
+                        mBatteryUtils.isForceAppStandbyEnabled(appInfo.uid, appInfo.packageName));
                 checkBoxPreference.setTitle(mPackageManager.getApplicationLabel(applicationInfo));
                 checkBoxPreference.setIcon(
                         Utils.getBadgedIcon(mIconDrawableFactory, mPackageManager,
diff --git a/src/com/android/settings/notification/ZenModeVisEffectPreferenceController.java b/src/com/android/settings/notification/ZenModeVisEffectPreferenceController.java
index 23723c5..67fd822 100644
--- a/src/com/android/settings/notification/ZenModeVisEffectPreferenceController.java
+++ b/src/com/android/settings/notification/ZenModeVisEffectPreferenceController.java
@@ -24,6 +24,7 @@
 
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settings.widget.DisabledCheckBoxPreference;
 
 public class ZenModeVisEffectPreferenceController
         extends AbstractZenModePreferenceController
@@ -78,9 +79,9 @@
         if (parentSuppressed) {
             ((CheckBoxPreference) preference).setChecked(parentSuppressed);
             onPreferenceChange(preference, parentSuppressed);
-            preference.setEnabled(false);
+            ((DisabledCheckBoxPreference) preference).enableCheckbox(false);
         } else {
-            preference.setEnabled(true);
+            ((DisabledCheckBoxPreference) preference).enableCheckbox(true);
             ((CheckBoxPreference) preference).setChecked(suppressed);
         }
     }
diff --git a/src/com/android/settings/slices/SettingsSliceProvider.java b/src/com/android/settings/slices/SettingsSliceProvider.java
index ab2cb82..70e9d76 100644
--- a/src/com/android/settings/slices/SettingsSliceProvider.java
+++ b/src/com/android/settings/slices/SettingsSliceProvider.java
@@ -24,6 +24,7 @@
 import android.graphics.drawable.Icon;
 import android.net.Uri;
 import android.net.wifi.WifiManager;
+import android.provider.Settings;
 import android.provider.SettingsSlicesContract;
 import android.support.annotation.VisibleForTesting;
 import android.support.v4.graphics.drawable.IconCompat;
@@ -290,13 +291,14 @@
                         .addEndItem(new SliceAction(getBroadcastIntent(ACTION_WIFI_CHANGED),
                                 null, finalWifiEnabled))
                         .setPrimaryAction(
-                                new SliceAction(getIntent(Intent.ACTION_MAIN),
+                                new SliceAction(getIntent(Settings.ACTION_WIFI_SETTINGS),
                                         (IconCompat) null, null)))
                 .build();
     }
 
     private PendingIntent getIntent(String action) {
         Intent intent = new Intent(action);
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         PendingIntent pi = PendingIntent.getActivity(getContext(), 0, intent, 0);
         return pi;
     }
diff --git a/src/com/android/settings/widget/DisabledCheckBoxPreference.java b/src/com/android/settings/widget/DisabledCheckBoxPreference.java
index 482cff3..e441e21 100644
--- a/src/com/android/settings/widget/DisabledCheckBoxPreference.java
+++ b/src/com/android/settings/widget/DisabledCheckBoxPreference.java
@@ -17,46 +17,85 @@
 package com.android.settings.widget;
 
 import android.content.Context;
+import android.content.res.TypedArray;
+import android.support.v7.preference.CheckBoxPreference;
+import android.support.v7.preference.PreferenceViewHolder;
 import android.util.AttributeSet;
 import android.view.View;
 
-import android.support.v7.preference.CheckBoxPreference;
-import android.support.v7.preference.PreferenceViewHolder;
-
 /**
- * A CheckboxPreference with a disabled checkbox. Differs from CheckboxPreference.setDisabled()
- * in that the text is not dimmed.
+ * A CheckboxPreference that can disable its checkbox separate from its text.
+ * Differs from CheckboxPreference.setDisabled() in that the text is not dimmed.
  */
 public class DisabledCheckBoxPreference extends CheckBoxPreference {
+    private PreferenceViewHolder mViewHolder;
+    private View mCheckBox;
+    private boolean mEnabledCheckBox;
 
-    public DisabledCheckBoxPreference(Context context, AttributeSet attrs,
-            int defStyleAttr, int defStyleRes) {
+    public DisabledCheckBoxPreference(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
         super(context, attrs, defStyleAttr, defStyleRes);
+        setupDisabledCheckBoxPreference(context, attrs, defStyleAttr, defStyleRes);
     }
 
     public DisabledCheckBoxPreference(Context context, AttributeSet attrs, int defStyleAttr) {
         super(context, attrs, defStyleAttr);
+        setupDisabledCheckBoxPreference(context, attrs, defStyleAttr, 0);
     }
 
     public DisabledCheckBoxPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
+        setupDisabledCheckBoxPreference(context, attrs, 0, 0);
     }
 
     public DisabledCheckBoxPreference(Context context) {
         super(context);
+        setupDisabledCheckBoxPreference(context, null, 0, 0);
+    }
+
+    private void setupDisabledCheckBoxPreference(Context context, AttributeSet attrs,
+            int defStyleAttr, int defStyleRes) {
+        final TypedArray a = context.obtainStyledAttributes(
+                attrs, com.android.internal.R.styleable.Preference, defStyleAttr, defStyleRes);
+        for (int i = a.getIndexCount() - 1; i >= 0; i--) {
+            int attr = a.getIndex(i);
+            switch (attr) {
+                case com.android.internal.R.styleable.Preference_enabled:
+                    mEnabledCheckBox = a.getBoolean(attr, true);
+                    break;
+            }
+        }
+        a.recycle();
+
+        // Always tell super class this preference is enabled.
+        // We manually enable/disable checkbox using enableCheckBox.
+        super.setEnabled(true);
+        enableCheckbox(mEnabledCheckBox);
+    }
+
+    public void enableCheckbox(boolean enabled) {
+        mEnabledCheckBox = enabled;
+        if (mViewHolder != null && mCheckBox != null) {
+            mCheckBox.setEnabled(mEnabledCheckBox);
+            mViewHolder.itemView.setEnabled(mEnabledCheckBox);
+        }
     }
 
     @Override
     public void onBindViewHolder(PreferenceViewHolder holder) {
         super.onBindViewHolder(holder);
+        mViewHolder = holder;
+        mCheckBox = holder.findViewById(android.R.id.checkbox);
 
-        View view = holder.findViewById(android.R.id.checkbox);
-        view.setEnabled(false);
-        holder.itemView.setEnabled(false);
+        enableCheckbox(mEnabledCheckBox);
     }
 
     @Override
     protected void performClick(View view) {
-        // Do nothing
+        // only perform clicks if the checkbox is enabled
+        if (mEnabledCheckBox) {
+            super.performClick(view);
+        }
     }
+
 }
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
index a5a1c45..876f5d1 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageSummaryPreferenceTest.java
@@ -26,6 +26,7 @@
 import android.net.NetworkTemplate;
 import android.os.Bundle;
 import android.support.v7.preference.PreferenceViewHolder;
+import android.telephony.SubscriptionManager;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.Button;
@@ -401,6 +402,31 @@
     }
 
     @Test
+    public void testSetAppIntent_toMdpApp_intentCorrect() {
+        final Activity activity = Robolectric.setupActivity(Activity.class);
+        final Intent intent = new Intent(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
+        intent.setPackage("test-owner.example.com");
+        intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, 42);
+
+        mSummaryPreference.setUsageInfo(mCycleEnd, mUpdateTime, DUMMY_CARRIER, 0 /* numPlans */,
+                intent);
+
+        bindViewHolder();
+        assertThat(mLaunchButton.getVisibility()).isEqualTo(View.VISIBLE);
+        assertThat(mLaunchButton.getText())
+                .isEqualTo(mContext.getString(R.string.launch_mdp_app_text));
+
+        mLaunchButton.callOnClick();
+        ShadowActivity shadowActivity = Shadows.shadowOf(activity);
+        Intent startedIntent = shadowActivity.getNextStartedActivity();
+        assertThat(startedIntent.getAction())
+                .isEqualTo(SubscriptionManager.ACTION_MANAGE_SUBSCRIPTION_PLANS);
+        assertThat(startedIntent.getPackage()).isEqualTo("test-owner.example.com");
+        assertThat(startedIntent.getIntExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, -1))
+                .isEqualTo(42);
+    }
+
+    @Test
     public void testSetWifiMode_withUsageInfo_dataUsageShown() {
         final int daysLeft = 3;
         final long cycleEnd = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(daysLeft)
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
index 772bb8d..dc34016 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
@@ -565,6 +565,22 @@
     }
 
     @Test
+    public void testIsForceAppStandbyEnabled_enabled_returnTrue() {
+        when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID,
+                PACKAGE_NAME)).thenReturn(AppOpsManager.MODE_IGNORED);
+
+        assertThat(mBatteryUtils.isForceAppStandbyEnabled(UID, PACKAGE_NAME)).isTrue();
+    }
+
+    @Test
+    public void testIsForceAppStandbyEnabled_disabled_returnFalse() {
+        when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID,
+                PACKAGE_NAME)).thenReturn(AppOpsManager.MODE_ALLOWED);
+
+        assertThat(mBatteryUtils.isForceAppStandbyEnabled(UID, PACKAGE_NAME)).isFalse();
+    }
+
+    @Test
     public void testIsAppHeavilyUsed_usageMoreThanThreshold_returnTrue() {
         assertThat(mBatteryUtils.isAppHeavilyUsed(mBatteryStatsHelper, mUserManager, UID,
                 10 /* threshold */ )).isTrue();
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/RestrictedAppDetailsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/RestrictedAppDetailsTest.java
index 94a6903..0fad0a7 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/RestrictedAppDetailsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/RestrictedAppDetailsTest.java
@@ -28,10 +28,12 @@
 import android.content.pm.PackageManager;
 import android.os.Bundle;
 import android.os.UserHandle;
+import android.support.v7.preference.CheckBoxPreference;
 import android.support.v7.preference.Preference;
 import android.support.v7.preference.PreferenceCategory;
 import android.support.v7.preference.PreferenceManager;
 import android.util.IconDrawableFactory;
+import android.widget.CheckBox;
 
 import com.android.settings.SettingsActivity;
 import com.android.settings.core.InstrumentedPreferenceFragment;
@@ -93,7 +95,7 @@
         mRestrictedAppDetails.mAppInfos = new ArrayList<>();
         mRestrictedAppDetails.mAppInfos.add(mAppInfo);
         mRestrictedAppDetails.mRestrictedAppListGroup = spy(new PreferenceCategory(mContext));
-        mRestrictedAppDetails.mBatteryUtils = new BatteryUtils(mContext);
+        mRestrictedAppDetails.mBatteryUtils = spy(new BatteryUtils(mContext));
         doReturn(mPreferenceManager).when(
                 mRestrictedAppDetails.mRestrictedAppListGroup).getPreferenceManager();
     }
@@ -103,13 +105,16 @@
         doReturn(mApplicationInfo).when(mPackageManager)
                 .getApplicationInfoAsUser(PACKAGE_NAME, 0, USER_ID);
         doReturn(APP_NAME).when(mPackageManager).getApplicationLabel(mApplicationInfo);
+        doReturn(true).when(mRestrictedAppDetails.mBatteryUtils).isForceAppStandbyEnabled(UID,
+                PACKAGE_NAME);
 
         mRestrictedAppDetails.refreshUi();
 
         assertThat(mRestrictedAppDetails.mRestrictedAppListGroup.getPreferenceCount()).isEqualTo(1);
-        final Preference preference = mRestrictedAppDetails.mRestrictedAppListGroup.getPreference(
-                0);
+        final CheckBoxPreference preference =
+                (CheckBoxPreference) mRestrictedAppDetails.mRestrictedAppListGroup.getPreference(0);
         assertThat(preference.getTitle()).isEqualTo(APP_NAME);
+        assertThat(preference.isChecked()).isTrue();
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/notification/ZenModeVisEffectPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/ZenModeVisEffectPreferenceControllerTest.java
index 6ca04ba..29ced0b 100644
--- a/tests/robotests/src/com/android/settings/notification/ZenModeVisEffectPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/notification/ZenModeVisEffectPreferenceControllerTest.java
@@ -42,6 +42,7 @@
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settings.widget.DisabledCheckBoxPreference;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -58,7 +59,7 @@
     @Mock
     private ZenModeBackend mBackend;
     @Mock
-    private CheckBoxPreference mockPref;
+    private DisabledCheckBoxPreference mockPref;
     private Context mContext;
     private FakeFeatureFactory mFeatureFactory;
     @Mock
@@ -114,7 +115,7 @@
         mController.updateState(mockPref);
 
         verify(mockPref).setChecked(false);
-        verify(mockPref).setEnabled(true);
+        verify(mockPref).enableCheckbox(true);
     }
 
     @Test
@@ -123,7 +124,7 @@
         mController.updateState(mockPref);
 
         verify(mockPref).setChecked(true);
-        verify(mockPref).setEnabled(true);
+        verify(mockPref).enableCheckbox(true);
     }
 
     @Test
@@ -138,7 +139,7 @@
         mController.updateState(mockPref);
 
         verify(mockPref).setChecked(true);
-        verify(mockPref).setEnabled(false);
+        verify(mockPref).enableCheckbox(false);
         verify(mBackend, times(1)).saveVisualEffectsPolicy(SUPPRESSED_EFFECT_PEEK, true);
     }
 
@@ -154,7 +155,7 @@
         mController.updateState(mockPref);
 
         verify(mockPref).setChecked(false);
-        verify(mockPref).setEnabled(true);
+        verify(mockPref).enableCheckbox(true);
         verify(mBackend, never()).saveVisualEffectsPolicy(SUPPRESSED_EFFECT_PEEK, true);
     }
 
diff --git a/tests/robotests/src/com/android/settings/widget/DisabledCheckBoxPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/DisabledCheckBoxPreferenceTest.java
index 5ab7013..ff10833 100644
--- a/tests/robotests/src/com/android/settings/widget/DisabledCheckBoxPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/widget/DisabledCheckBoxPreferenceTest.java
@@ -21,6 +21,7 @@
 import static org.mockito.Matchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
 import android.content.Context;
@@ -70,14 +71,28 @@
     }
 
     @Test
-    public void checkboxOnClick_doesNothing() {
+    public void checkboxOnClick_checkboxDisabled() {
         Preference.OnPreferenceClickListener onClick =
                 mock(Preference.OnPreferenceClickListener.class);
         mPref.setOnPreferenceClickListener(onClick);
         inflatePreference();
 
+        mPref.enableCheckbox(false);
         mPref.performClick(mRootView);
 
         verify(onClick, never()).onPreferenceClick(any());
     }
+
+    @Test
+    public void checkboxOnClick_checkboxEnabled() {
+        Preference.OnPreferenceClickListener onClick =
+                mock(Preference.OnPreferenceClickListener.class);
+        mPref.setOnPreferenceClickListener(onClick);
+        inflatePreference();
+
+        mPref.enableCheckbox(true);
+        mPref.performClick(mRootView);
+
+        verify(onClick, times(1)).onPreferenceClick(any());
+    }
 }