diff --git a/res/values/strings.xml b/res/values/strings.xml
index 86a6195..b91a3fc 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -5991,6 +5991,12 @@
     <!-- [CHAR LIMIT=105] Zen mode settings: No notification light summary -->
     <string name="zen_mode_lights_summary">Prevent notifications silenced by Do Not Disturb from causing the light to pulse</string>
 
+    <!-- [CHAR LIMIT=40] Zen mode settings: Don't turn the screen on option -->
+    <string name="zen_mode_screen_on">Never turn on the screen</string>
+
+    <!-- [CHAR LIMIT=130] Zen mode settings: Don't turn the screen on summary -->
+    <string name="zen_mode_screen_on_summary">If the screen is off, prevent notifications silenced by Do Not Disturb from turning it on</string>
+
     <!-- [CHAR LIMIT=NONE] Content description for per-app notification
          settings button -->
     <string name="notification_app_settings_button">Notification settings</string>
diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml
index 57fdc36..ea4750e 100644
--- a/res/xml/development_prefs.xml
+++ b/res/xml/development_prefs.xml
@@ -369,6 +369,11 @@
             android:key="force_resizable_activities"
             android:title="@string/force_resizable_activities"
             android:summary="@string/force_resizable_activities_summary"/>
+
+        <SwitchPreference
+                android:key="enable_freeform_support"
+                android:title="@string/enable_freeform_support"
+                android:summary="@string/enable_freeform_support_summary"/>
      </PreferenceCategory>
 
 </PreferenceScreen>
diff --git a/res/xml/zen_mode_visual_interruptions_settings.xml b/res/xml/zen_mode_visual_interruptions_settings.xml
index 8131650..8f67e08 100644
--- a/res/xml/zen_mode_visual_interruptions_settings.xml
+++ b/res/xml/zen_mode_visual_interruptions_settings.xml
@@ -28,4 +28,9 @@
                       android:summary="@string/zen_mode_lights_summary"
                       android:persistent="false" />
 
+    <SwitchPreference android:key="screen_on"
+                      android:title="@string/zen_mode_screen_on"
+                      android:summary="@string/zen_mode_screen_on_summary"
+                      android:persistent="false" />
+
 </PreferenceScreen>
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 80596ba..ac6a319 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -1262,8 +1262,7 @@
 
     private void updateForceResizableOptions() {
         updateSwitchPreference(mForceResizable, Settings.Global.getInt(getContentResolver(),
-                Settings.Global.DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES,
-                Build.IS_DEBUGGABLE ? 1 : 0) != 0);
+                Settings.Global.DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES, 0) != 0);
     }
 
     private void writeForceResizableOptions() {
diff --git a/src/com/android/settings/notification/ZenModeVisualInterruptionSettings.java b/src/com/android/settings/notification/ZenModeVisualInterruptionSettings.java
index ba1b378..46e0cfe 100644
--- a/src/com/android/settings/notification/ZenModeVisualInterruptionSettings.java
+++ b/src/com/android/settings/notification/ZenModeVisualInterruptionSettings.java
@@ -38,9 +38,11 @@
 
     private static final String KEY_PEEK = "peek";
     private static final String KEY_LIGHTS = "lights";
+    private static final String KEY_SCREEN_ON = "screen_on";
 
     private SwitchPreference mPeek;
     private SwitchPreference mLights;
+    private SwitchPreference mScreenOn;
 
     private boolean mDisableListeners;
     private NotificationManager.Policy mPolicy;
@@ -78,6 +80,19 @@
                 return true;
             }
         });
+
+        mScreenOn = (SwitchPreference) root.findPreference(KEY_SCREEN_ON);
+        mScreenOn.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+            @Override
+            public boolean onPreferenceChange(Preference preference, Object newValue) {
+                if (mDisableListeners) return true;
+                final boolean val = (Boolean) newValue;
+                MetricsLogger.action(mContext, MetricsLogger.ACTION_ZEN_ALLOW_SCREEN_ON, val);
+                if (DEBUG) Log.d(TAG, "onPrefChange suppressScreenOn=" + val);
+                savePolicy(getNewSuppressedEffects(val, Policy.SUPPRESSED_EFFECT_SCREEN_ON));
+                return true;
+            }
+        });
     }
 
     @Override
@@ -100,6 +115,7 @@
         mDisableListeners = true;
         mPeek.setChecked(isEffectSuppressed(Policy.SUPPRESSED_EFFECT_PEEK));
         mLights.setChecked(isEffectSuppressed(Policy.SUPPRESSED_EFFECT_LIGHTS));
+        mScreenOn.setChecked(isEffectSuppressed(Policy.SUPPRESSED_EFFECT_SCREEN_ON));
         mDisableListeners = false;
     }
 
