diff --git a/src/com/android/settings/DataUsageAppDetail.java b/src/com/android/settings/DataUsageAppDetail.java
index cee54ee..0d15dac 100644
--- a/src/com/android/settings/DataUsageAppDetail.java
+++ b/src/com/android/settings/DataUsageAppDetail.java
@@ -17,7 +17,7 @@
 package com.android.settings;
 
 import static android.net.NetworkPolicyManager.POLICY_NONE;
-import static android.net.NetworkPolicyManager.POLICY_REJECT_PAID_BACKGROUND;
+import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;
 import static android.net.TrafficStats.TEMPLATE_MOBILE_ALL;
 import static com.android.settings.DataUsageSummary.getHistoryBounds;
 
@@ -76,8 +76,6 @@
     private LinearLayout mSwitches;
 
     private DataUsageChartView mChart;
-
-    private int mUidPolicy;
     private NetworkStatsHistory mHistory;
 
     @Override
@@ -185,7 +183,7 @@
             }
 
             // update policy checkbox
-            final boolean restrictBackground = (mUidPolicy & POLICY_REJECT_PAID_BACKGROUND) != 0;
+            final boolean restrictBackground = (uidPolicy & POLICY_REJECT_METERED_BACKGROUND) != 0;
             mRestrictBackground.setChecked(restrictBackground);
 
             // kick preference views so they rebind from changes above
@@ -210,7 +208,7 @@
         if (LOGD) Log.d(TAG, "setRestrictBackground()");
         try {
             mPolicyService.setUidPolicy(
-                    mUid, restrictBackground ? POLICY_REJECT_PAID_BACKGROUND : POLICY_NONE);
+                    mUid, restrictBackground ? POLICY_REJECT_METERED_BACKGROUND : POLICY_NONE);
         } catch (RemoteException e) {
             throw new RuntimeException("unable to save policy", e);
         }
@@ -269,7 +267,7 @@
 
     /**
      * Dialog to request user confirmation before setting
-     * {@link #POLICY_REJECT_PAID_BACKGROUND}.
+     * {@link #POLICY_REJECT_METERED_BACKGROUND}.
      */
     public static class ConfirmRestrictFragment extends DialogFragment {
         public static void show(DataUsageAppDetail parent) {
diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index eafd22b..087525c 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -18,7 +18,6 @@
 
 import static android.net.NetworkPolicy.LIMIT_DISABLED;
 import static android.net.NetworkPolicyManager.ACTION_DATA_USAGE_LIMIT;
-import static android.net.NetworkPolicyManager.ACTION_DATA_USAGE_WARNING;
 import static android.net.NetworkPolicyManager.EXTRA_NETWORK_TEMPLATE;
 import static android.net.NetworkPolicyManager.computeLastCycleBoundary;
 import static android.net.NetworkPolicyManager.computeNextCycleBoundary;
