diff --git a/res/values/array.xml b/res/values/array.xml
index 245c09b..5a360f2 100644
--- a/res/values/array.xml
+++ b/res/values/array.xml
@@ -39,6 +39,19 @@
         <item>@string/sip_ask_me_each_time</item>
     </string-array>
 
+    <string-array translatable="true" name="wifi_calling_choice_entries">
+        <item>@string/wifi_calling_choice_entry_always_use</item>
+        <item>@string/wifi_calling_choice_entry_ask_every_time</item>
+        <item>@string/wifi_calling_choice_entry_never_use</item>
+    </string-array>
+
+    <!-- android.telephony.TelephonyManager.WifiCallingChoices -->
+    <string-array name="wifi_calling_choice_values">
+        <item>@string/wifi_calling_choices_always_use</item>
+        <item>@string/wifi_calling_choices_never_use</item>
+        <item>@string/wifi_calling_choices_ask_every_time</item>
+    </string-array>
+
     <string-array translatable="false" name="phone_type_values">
         <item>@string/pstn_phone</item>
         <item>@string/internet_phone</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8e92006..40b8198 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1149,6 +1149,27 @@
     <!-- Item of the Internet call (Wi-Fi only) option dialog: for routing all outgoing calls via SIP. [CHAR LIMIT=NONE] -->
     <string name="sip_call_options_wifi_only_entry_1">For all calls</string>
 
+    <!-- Start of Wi-Fi calling related strings. -->
+
+    <!-- Title of the Wi-Fi settings section [CHAR LIMIT=NONE] -->
+    <string name="wifi_settings">Wi-Fi call settings</string>
+    <!-- Title of option allowing user to pick when to make Wi-Fi calls [CHAR LIMIT=NONE] -->
+    <string name="when_to_make_wifi_calls_title">When to make Wi-Fi calls</string>
+    <!-- Item of Wi-Fi settings: For always using Wi-Fi to make calls. [CHAR LIMIT=NONE] -->
+    <string name="wifi_calling_choice_entry_always_use">Always use Wi-Fi to make calls</string>
+    <!-- Item of Wi-Fi settings: For never using Wi-Fi to make calls. [CHAR LIMIT=NONE] -->
+    <string name="wifi_calling_choice_entry_never_use">Never use Wi-Fi to make calls</string>
+    <!-- Item of Wi-Fi settings: For asking each time whether to use Wi-Fi. [CHAR LIMIT=NONE] -->
+    <string name="wifi_calling_choice_entry_ask_every_time">Always ask</string>
+
+    <!-- Keep values in sync with android.telephony.TelephonyManager.WifiCallingChoices -->
+    <!-- android.telephony.TelephonyManager.WifiCallingChoices.ALWAYS_USE -->
+    <string translatable="false" name="wifi_calling_choices_always_use">0</string>
+    <!-- android.telephony.TelephonyManager.WifiCallingChoices.NEVER_USE -->
+    <string translatable="false" name="wifi_calling_choices_never_use">1</string>
+    <!-- android.telephony.TelephonyManager.WifiCallingChoices.ASK_EVERY_TIME -->
+    <string translatable="false" name="wifi_calling_choices_ask_every_time">2</string>
+
     <!-- Title of the dialog to select the phone type for the outgoing call. [CHAR LIMIT=NONE] -->
     <string name ="pick_outgoing_call_phone_type">Place call</string>
 
diff --git a/res/xml/wifi_settings_category.xml b/res/xml/wifi_settings_category.xml
new file mode 100644
index 0000000..91041fd
--- /dev/null
+++ b/res/xml/wifi_settings_category.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2013 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:phone="http://schemas.android.com/apk/res/com.android.phone">
+    <PreferenceCategory
+            android:key="wifi_settings_category_key"
+            android:title="@string/wifi_settings"
+            android:persistent="false">
+
+        <ListPreference
+                android:key="when_to_make_wifi_calls_key"
+                android:title="@string/when_to_make_wifi_calls_title"
+                android:persistent="true"
+                android:entries="@array/wifi_calling_choice_entries"
+                android:entryValues="@array/wifi_calling_choice_values"/>
+
+    </PreferenceCategory>
+</PreferenceScreen>
diff --git a/src/com/android/phone/CallFeaturesSetting.java b/src/com/android/phone/CallFeaturesSetting.java
index 5cc3aa3..11dc35c 100644
--- a/src/com/android/phone/CallFeaturesSetting.java
+++ b/src/com/android/phone/CallFeaturesSetting.java
@@ -52,12 +52,9 @@
 import android.provider.ContactsContract.CommonDataKinds;
 import android.provider.MediaStore;
 import android.provider.Settings;
-import android.provider.Settings.SettingNotFoundException;
 import android.telephony.PhoneNumberUtils;
-import android.text.Spannable;
-import android.text.SpannableString;
+import android.telephony.TelephonyManager;
 import android.text.TextUtils;
-import android.text.style.TypefaceSpan;
 import android.util.Log;
 import android.view.MenuItem;
 import android.view.WindowManager;
@@ -194,6 +191,9 @@
     private static final String SIP_SETTINGS_CATEGORY_KEY =
             "sip_settings_category_key";
 
+    private static final String WHEN_TO_MAKE_WIFI_CALLS_KEY =
+            "when_to_make_wifi_calls_key";
+
     private Intent mContactListIntent;
 
     /** Event for Async voicemail change call */
@@ -273,6 +273,7 @@
     private ListPreference mButtonDTMF;
     private ListPreference mButtonTTY;
     private ListPreference mButtonSipCallOptions;
+    private ListPreference mWifiCallOptionsPreference;
     private ListPreference mVoicemailProviders;
     private PreferenceScreen mVoicemailSettings;
     private Preference mVoicemailNotificationRingtone;
@@ -591,6 +592,8 @@
             }
         } else if (preference == mButtonSipCallOptions) {
             handleSipCallOptionsChange(objValue);
+        } else if (preference == mWifiCallOptionsPreference) {
+            handleWifiCallSettingsChange(objValue);
         }
         // always let the preference setting proceed.
         return true;
@@ -1638,6 +1641,7 @@
         updateVoiceNumberField();
         mVMProviderSettingsForced = false;
         createSipCallSettings();
+        createWifiCallSettings();
 
         mRingtoneLookupRunnable = new Runnable() {
             @Override
@@ -1736,6 +1740,38 @@
         }
     }
 
+    private void createWifiCallSettings() {
+        addPreferencesFromResource(R.xml.wifi_settings_category);
+        mWifiCallOptionsPreference = (ListPreference) findPreference(WHEN_TO_MAKE_WIFI_CALLS_KEY);
+        mWifiCallOptionsPreference.setOnPreferenceChangeListener(this);
+        mWifiCallOptionsPreference.setValueIndex(
+                mWifiCallOptionsPreference.findIndexOfValue(
+                        getWhenToMakeWifiCalls()));
+        mWifiCallOptionsPreference.setSummary(mWifiCallOptionsPreference.getEntry());
+    }
+
+    /**
+     * @see android.telephony.TelephonyManager.WifiCallingChoices
+     */
+    private String getWhenToMakeWifiCalls() {
+        int setting;
+        try {
+            setting = Settings.System.getInt(mPhone.getContext().getContentResolver(),
+                    Settings.System.WHEN_TO_MAKE_WIFI_CALLS);
+        } catch (Settings.SettingNotFoundException e) {
+            setting = TelephonyManager.WifiCallingChoices.NEVER_USE;
+        }
+        return Integer.toString(setting);
+    }
+
+    /**
+     * @see android.telephony.TelephonyManager.WifiCallingChoices
+     */
+    public void setWhenToMakeWifiCalls(String value) {
+        Settings.System.putInt(mPhone.getContext().getContentResolver(),
+               Settings.System.WHEN_TO_MAKE_WIFI_CALLS, Integer.valueOf(value));
+    }
+
     // Gets the call options for SIP depending on whether SIP is allowed only
     // on Wi-Fi only; also make the other options preference invisible.
     private ListPreference getSipCallOptionPreference() {
@@ -1893,6 +1929,14 @@
         mButtonSipCallOptions.setSummary(mButtonSipCallOptions.getEntry());
     }
 
+    private void handleWifiCallSettingsChange(Object objValue) {
+        String option = objValue.toString();
+        setWhenToMakeWifiCalls(option);
+        mWifiCallOptionsPreference.setValueIndex(
+                mWifiCallOptionsPreference.findIndexOfValue(option));
+        mWifiCallOptionsPreference.setSummary(mWifiCallOptionsPreference.getEntry());
+    }
+
     private void updatePreferredTtyModeSummary(int TtyMode) {
         String [] txts = getResources().getStringArray(R.array.tty_mode_entries);
         switch(TtyMode) {
