diff --git a/src/com/android/browser/mdm/DoNotTrackRestriction.java b/src/com/android/browser/mdm/DoNotTrackRestriction.java
index 2f4a540..c1e5605 100644
--- a/src/com/android/browser/mdm/DoNotTrackRestriction.java
+++ b/src/com/android/browser/mdm/DoNotTrackRestriction.java
@@ -30,10 +30,14 @@
 
 package com.android.browser.mdm;
 
+import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.preference.Preference;
 
-public class DoNotTrackRestriction extends Restriction {
+import com.android.browser.BrowserSettings;
+import com.android.browser.PreferenceKeys;
+
+public class DoNotTrackRestriction extends Restriction implements PreferenceKeys {
 
     private final static String TAG = "DoNotTrackRestriction";
 
@@ -60,6 +64,7 @@
 
     @Override
     public void enforce(Bundle restrictions) {
+        SharedPreferences.Editor editor = BrowserSettings.getInstance().getPreferences().edit();
         // Possible states
         //   DNT_enabled  DNT_value  |  menu-item-enabled      check-box-value
         //   -----------------------------------------------------------------
@@ -72,6 +77,9 @@
         if (dntEnabled) {
             mDntValue = restrictions.getBoolean(DO_NOT_TRACK_VALUE, true); // default to true
 
+            editor.putBoolean(PREF_DO_NOT_TRACK, mDntValue);
+            editor.apply();
+
             // enable the restriction : controls enable of the menu item
             // Log.i(TAG, "DNT Restriction enabled. new val [" + mDntValue + "]");
             enable(true);
diff --git a/src/com/android/browser/preferences/GeneralPreferencesFragment.java b/src/com/android/browser/preferences/GeneralPreferencesFragment.java
index e9c62ac..f3128e2 100644
--- a/src/com/android/browser/preferences/GeneralPreferencesFragment.java
+++ b/src/com/android/browser/preferences/GeneralPreferencesFragment.java
@@ -48,7 +48,6 @@
 import com.android.browser.UrlUtils;
 import com.android.browser.homepages.HomeProvider;
 import com.android.browser.mdm.AutoFillRestriction;
-import com.android.browser.mdm.DoNotTrackRestriction;
 import com.android.browser.mdm.SearchEngineRestriction;
 
 public class GeneralPreferencesFragment extends SWEPreferenceFragment
@@ -106,8 +105,6 @@
         }
 
         // Register Preference objects with their MDM restriction handlers
-        DoNotTrackRestriction.getInstance().
-                registerPreference(findPreference(PreferenceKeys.PREF_DO_NOT_TRACK));
         AutoFillRestriction.getInstance().
                 registerPreference(findPreference(PreferenceKeys.PREF_AUTOFILL_ENABLED));
 
@@ -120,7 +117,6 @@
         super.onDestroy();
 
         // Un-register Preference objects from their MDM restriction handlers
-        DoNotTrackRestriction.getInstance().registerPreference(null);
         AutoFillRestriction.getInstance().registerPreference(null);
     }
 
diff --git a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
index 68c5607..7e02de0 100644
--- a/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
+++ b/src/com/android/browser/preferences/PrivacySecurityPreferencesFragment.java
@@ -18,6 +18,7 @@
 
 import com.android.browser.PreferenceKeys;
 import com.android.browser.R;
+import com.android.browser.mdm.DoNotTrackRestriction;
 
 import android.app.ActionBar;
 import android.app.Activity;
@@ -71,6 +72,18 @@
 
         readAndShowPermission("accept_third_cookies",
                 PermissionsServiceFactory.PermissionType.THIRDPARTYCOOKIES);
+
+        // Register Preference objects with their MDM restriction handlers
+        DoNotTrackRestriction.getInstance().
+                registerPreference(findPreference(PreferenceKeys.PREF_DO_NOT_TRACK));
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+
+        // Un-register Preference objects from their MDM restriction handlers
+        DoNotTrackRestriction.getInstance().registerPreference(null);
     }
 
     @Override
