diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6c04af2..dc01c24 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -191,6 +191,8 @@
                 android:value="com.android.settings.wifi.WifiSettings" />
             <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
                 android:resource="@id/wifi_settings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                android:value="true" />
         </activity>
 
         <!-- Keep compatibility with old shortcuts. -->
@@ -217,6 +219,8 @@
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                android:value="true" />
         </activity>
 
         <activity android:name=".wifi.WifiSetupActivity"
@@ -230,6 +234,8 @@
                 <action android:name="com.android.net.wifi.SETUP_WIFI_NETWORK" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                android:value="true" />
         </activity>
 
         <activity android:name="Settings$AdvancedWifiSettingsActivity"
@@ -250,6 +256,8 @@
                 android:value="com.android.settings.wifi.AdvancedWifiSettings" />
             <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
                 android:resource="@id/wifi_settings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                android:value="true" />
         </activity>
 
         <activity android:name="Settings$SavedAccessPointsSettingsActivity"
@@ -269,6 +277,8 @@
                 android:value="com.android.settings.wifi.SavedAccessPointsSettings" />
             <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
                 android:resource="@id/wifi_settings" />
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                android:value="true" />
         </activity>
 
         <activity android:name=".wifi.WifiInfo"
@@ -322,6 +332,8 @@
                 <action android:name="android.net.conn.PROMPT_UNVALIDATED" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
+            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+                android:value="true" />
         </activity>
 
         <!-- Suspect activity alias: targetActivity is Settings itself, does not define a name. Remove? -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ae8c8e4..52beac2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4224,7 +4224,7 @@
     <!-- [CHAR LIMIT=NONE] Label for process stats, text for stats type -->
     <string name="process_stats_type_cached">Cached</string>
     <!-- [CHAR LIMIT=NONE] Label for process stats, duration of time the stats are over -->
-    <string name="process_stats_memory_status">Memory is 
+    <string name="process_stats_memory_status">Memory is
         <xliff:g id="memstate">%1$s</xliff:g></string>
     <!-- [CHAR LIMIT=NONE] Label OS "process" app -->
     <string name="process_stats_os_label">Android OS</string>
@@ -5856,7 +5856,7 @@
     <string name="keywords_keyboard_and_ime">text correction correct sound vibrate auto language gesture suggest suggestion theme offensive word type emoji international</string>
     <string name="keywords_reset_apps">reset preferences default</string>
     <string name="keywords_emergency_app">emergency ice app default</string>
-    <string name="keywords_default_dialer_app">dialer default</string>
+    <string name="keywords_default_phone_app">phone dialer default</string>
     <string name="keywords_all_apps">apps download applications system</string>
     <string name="keywords_app_permissions">apps permissions security</string>
     <string name="keywords_default_apps">apps default</string>
@@ -6570,8 +6570,8 @@
     <!-- Summary for No Default Browser settings [CHAR LIMIT=45] -->
     <string name="default_browser_title_none">No default Browser</string>
 
-    <!--  Title for Default Dialer settings [CHAR LIMIT=30] -->
-    <string name="default_dialer_title">Dialer app</string>
+    <!--  Title for Default Phone app settings [CHAR LIMIT=30] -->
+    <string name="default_phone_title">Phone app</string>
 
     <!-- Label of default app for current setting [CHAR LIMIT=40] -->
     <string name="default_app">(Default)</string>
diff --git a/res/xml/default_apps.xml b/res/xml/default_apps.xml
index 301c248..7fc32fd 100644
--- a/res/xml/default_apps.xml
+++ b/res/xml/default_apps.xml
@@ -25,10 +25,10 @@
             android:summary="@string/default_browser_title_none"
             />
 
-    <com.android.settings.applications.DefaultDialerPreference
-            android:key="default_dialer"
-            android:title="@string/default_dialer_title"
-            settings:keywords="@string/keywords_default_dialer_app"
+    <com.android.settings.applications.DefaultPhonePreference
+            android:key="default_phone_app"
+            android:title="@string/default_phone_title"
+            settings:keywords="@string/keywords_default_phone_app"
             />
 
     <com.android.settings.applications.DefaultEmergencyPreference
diff --git a/src/com/android/settings/applications/DefaultDialerPreference.java b/src/com/android/settings/applications/DefaultPhonePreference.java
similarity index 94%
rename from src/com/android/settings/applications/DefaultDialerPreference.java
rename to src/com/android/settings/applications/DefaultPhonePreference.java
index 705e4ef1..657391f 100644
--- a/src/com/android/settings/applications/DefaultDialerPreference.java
+++ b/src/com/android/settings/applications/DefaultPhonePreference.java
@@ -28,9 +28,9 @@
 import java.util.List;
 import java.util.Objects;
 
-public class DefaultDialerPreference extends AppListPreference {
+public class DefaultPhonePreference extends AppListPreference {
 
-    public DefaultDialerPreference(Context context, AttributeSet attrs) {
+    public DefaultPhonePreference(Context context, AttributeSet attrs) {
         super(context, attrs);
 
         if (isAvailable(context)) {
diff --git a/src/com/android/settings/applications/ManageDefaultApps.java b/src/com/android/settings/applications/ManageDefaultApps.java
index 751ddca..4437654 100644
--- a/src/com/android/settings/applications/ManageDefaultApps.java
+++ b/src/com/android/settings/applications/ManageDefaultApps.java
@@ -49,7 +49,7 @@
     private static final String TAG = ManageDefaultApps.class.getSimpleName();
 
     private static final String KEY_DEFAULT_BROWSER = "default_browser";
-    private static final String KEY_DEFAULT_DIALER = "default_dialer";
+    private static final String KEY_DEFAULT_PHONE_APP = "default_phone_app";
     private static final String KEY_DEFAULT_EMERGENCY_APP = "default_emergency_app";
     private static final String KEY_SMS_APPLICATION = "default_sms_app";
 
@@ -97,8 +97,8 @@
             removePreference(KEY_SMS_APPLICATION);
         }
 
-        if (!DefaultDialerPreference.isAvailable(getActivity())) {
-            removePreference(KEY_DEFAULT_DIALER);
+        if (!DefaultPhonePreference.isAvailable(getActivity())) {
+            removePreference(KEY_DEFAULT_PHONE_APP);
         }
 
         if (!DefaultEmergencyPreference.isAvailable(getActivity())) {
