Index: wp-admin/includes/media.php
===================================================================
--- wp-admin/includes/media.php	(revision 20422)
+++ wp-admin/includes/media.php	(working copy)
@@ -65,7 +65,7 @@
 	global $redir_tab;
 	$tabs = media_upload_tabs();
 
-	if ( wp_is_mobile() ) {
+	if ( ! _device_can_upload() ) {
 		unset($tabs['type']);
 		$default = 'type_url';
 	} else {
@@ -598,7 +598,7 @@
 		return wp_iframe( 'media_upload_type_url_form', $type, $errors, $id );
 	}
 
-	if ( wp_is_mobile() )
+	if ( ! _device_can_upload() )
 		return wp_iframe( 'media_upload_type_url_form', 'image', $errors, $id );
 	else
 		return wp_iframe( 'media_upload_type_form', 'image', $errors, $id );
@@ -1306,7 +1306,7 @@
 function media_upload_form( $errors = null ) {
 	global $type, $tab, $pagenow, $is_IE, $is_opera;
 
-	if ( wp_is_mobile() )
+	if ( ! _device_can_upload() )
 		return;
 
 	$upload_action_url = admin_url('async-upload.php');
@@ -1438,7 +1438,7 @@
  * @param unknown_type $id
  */
 function media_upload_type_form($type = 'file', $errors = null, $id = null) {
-	if ( wp_is_mobile() )
+	if ( ! _device_can_upload() )
 		return;
 
 	media_upload_header();
Index: wp-admin/media-new.php
===================================================================
--- wp-admin/media-new.php	(revision 20422)
+++ wp-admin/media-new.php	(working copy)
@@ -10,7 +10,7 @@
 /** Administration bootstrap */
 require_once('./admin.php');
 
-if ( wp_is_mobile() ) // cannot upload files from mobile devices
+if ( ! _device_can_upload() ) // cannot upload files from some mobile devices
 	return;
 
 require_once('./media-upload.php');
Index: wp-admin/media.php
===================================================================
--- wp-admin/media.php	(revision 20422)
+++ wp-admin/media.php	(working copy)
@@ -106,7 +106,7 @@
 <h2>
 <?php
 echo esc_html( $title );
-if ( current_user_can( 'upload_files' ) && ! wp_is_mobile() ) { ?>
+if ( current_user_can( 'upload_files' ) && _device_can_upload() ) { ?>
 	<a href="media-new.php" class="add-new-h2"><?php echo esc_html_x('Add New', 'file'); ?></a>
 <?php } ?>
 </h2>
Index: wp-admin/menu.php
===================================================================
--- wp-admin/menu.php	(revision 20422)
+++ wp-admin/menu.php	(working copy)
@@ -56,7 +56,7 @@
 $menu[10] = array( __('Media'), 'upload_files', 'upload.php', '', 'menu-top menu-icon-media', 'menu-media', 'div' );
 	$submenu['upload.php'][5] = array( __('Library'), 'upload_files', 'upload.php');
 	/* translators: add new file */
-	if ( ! wp_is_mobile() )
+	if ( _device_can_upload() )
 		$submenu['upload.php'][10] = array( _x('Add New', 'file'), 'upload_files', 'media-new.php');
 
 $menu[15] = array( __('Links'), 'manage_links', 'link-manager.php', '', 'menu-top menu-icon-links', 'menu-links', 'div' );
Index: wp-admin/upload.php
===================================================================
--- wp-admin/upload.php	(revision 20422)
+++ wp-admin/upload.php	(working copy)
@@ -179,7 +179,7 @@
 <h2>
 <?php
 echo esc_html( $title );
-if ( current_user_can( 'upload_files' ) && ! wp_is_mobile() ) { ?>
+if ( current_user_can( 'upload_files' ) && _device_can_upload() ) { ?>
 	<a href="media-new.php" class="add-new-h2"><?php echo esc_html_x('Add New', 'file'); ?></a><?php
 }
 if ( ! empty( $_REQUEST['s'] ) )
Index: wp-includes/admin-bar.php
===================================================================
--- wp-includes/admin-bar.php	(revision 20422)
+++ wp-includes/admin-bar.php	(working copy)
@@ -489,7 +489,7 @@
 		unset( $cpts['post'] );
 	}
 
-	if ( current_user_can( 'upload_files' ) && ! wp_is_mobile() )
+	if ( current_user_can( 'upload_files' ) && _device_can_upload() )
 		$actions[ 'media-new.php' ] = array( _x( 'Media', 'add new from admin bar' ), 'new-media' );
 
 	if ( current_user_can( 'manage_links' ) )
Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 20422)
+++ wp-includes/functions.php	(working copy)
@@ -3673,3 +3673,17 @@
 	return $clean;
 }
 
+/**
+ * Test if the current device has the capability to upload files.
+ *
+ * @since 3.4.0
+ * @access private
+ *
+ * @return bool true|false
+ */
+function _device_can_upload() {
+	global $is_iphone;
+
+	return ( ! $is_iphone );
+}
+
Index: wp-includes/vars.php
===================================================================
--- wp-includes/vars.php	(revision 20422)
+++ wp-includes/vars.php	(working copy)
@@ -73,7 +73,7 @@
 	}
 }
 
-if ( $is_safari && stripos($_SERVER['HTTP_USER_AGENT'], 'mobile') !== false )
+if ( $is_safari && ( stripos($_SERVER['HTTP_USER_AGENT'], 'iPhone') !== false || stripos($_SERVER['HTTP_USER_AGENT'], 'iPad') !== false ) )
 	$is_iphone = true;
 
 $is_IE = ( $is_macIE || $is_winIE );
