Index: wp-includes/js/plupload/wp-plupload.dev.js
===================================================================
--- wp-includes/js/plupload/wp-plupload.dev.js	(revision 21383)
+++ wp-includes/js/plupload/wp-plupload.dev.js	(working copy)
@@ -113,7 +113,13 @@
 			});
 		}( this.dropzone, this.supports.dragdrop ));
 
-		this.browser.on( 'mouseenter', this.refresh );
+		if ( this.browser ) {
+			this.browser.on( 'mouseenter', this.refresh );
+		} else {
+			this.uploader.disableBrowse( true );
+			// If HTML5 mode, hide the auto-created file container.
+			$('#' + this.uploader.id + '_html5_container').hide();
+		}
 
 		this.uploader.bind( 'UploadProgress', this.progress );
 
Index: wp-includes/class-wp-customize-control.php
===================================================================
--- wp-includes/class-wp-customize-control.php	(revision 21383)
+++ wp-includes/class-wp-customize-control.php	(working copy)
@@ -321,8 +321,23 @@
 
 		$this->add_tab( 'upload-new', __('Upload New'), array( $this, 'tab_upload_new' ) );
 		$this->add_tab( 'uploaded',   __('Uploaded'),   array( $this, 'tab_uploaded' ) );
+
+		// Early priority to occur before $this->manager->prepare_controls();
+		add_action( 'customize_controls_init', array( $this, 'prepare_control' ), 5 );
 	}
 
+	/**
+	 * Prepares the control.
+	 *
+	 * If no tabs exist, removes the control from the manager.
+	 *
+	 * @since 3.4.2
+	 */
+	public function prepare_control() {
+		if ( ! $this->tabs )
+			$this->manager->remove_control( $this->id );
+	}
+
 	public function to_json() {
 		parent::to_json();
 		$this->json['statuses'] = $this->statuses;
@@ -455,6 +470,20 @@
 }
 
 class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control {
+	/**
+	 * The processed default headers.
+	 * @since 3.4.2
+	 * @var array
+	 */
+	protected $default_headers;
+
+	/**
+	 * The uploaded headers.
+	 * @since 3.4.2
+	 * @var array
+	 */
+	protected $uploaded_headers;
+
 	public function __construct( $manager ) {
 		parent::__construct( $manager, 'header_image', array(
 			'label'    => __( 'Header Image' ),
@@ -474,9 +503,34 @@
 			)
 		) );
 
-		$this->add_tab( 'default',  __('Default'),  array( $this, 'tab_default_headers' ) );
+		// Remove the upload tab.
+		$this->remove_tab( 'upload-new' );
 	}
 
+	/**
+	 * Prepares the control.
+	 *
+	 * If no tabs exist, removes the control from the manager.
+	 *
+	 * @since 3.4.2
+	 */
+	public function prepare_control() {
+		global $custom_image_header;
+
+		// Process default headers and uploaded headers.
+		$custom_image_header->process_default_headers();
+		$this->default_headers = $custom_image_header->default_headers;
+		$this->uploaded_headers = get_uploaded_header_images();
+
+		if ( $this->default_headers )
+			$this->add_tab( 'default',  __('Default'),  array( $this, 'tab_default_headers' ) );
+
+		if ( ! $this->uploaded_headers )
+			$this->remove_tab( 'uploaded' );
+
+		return parent::prepare_control();
+	}
+
 	public function print_header_image( $choice, $header ) {
 		$header['url']           = set_url_scheme( $header['url'] );
 		$header['thumbnail_url'] = set_url_scheme( $header['thumbnail_url'] );
@@ -498,19 +552,14 @@
 	}
 
 	public function tab_uploaded() {
-		$headers = get_uploaded_header_images();
-
 		?><div class="uploaded-target"></div><?php
 
-		foreach ( $headers as $choice => $header )
+		foreach ( $this->uploaded_headers as $choice => $header )
 			$this->print_header_image( $choice, $header );
 	}
 
 	public function tab_default_headers() {
-		global $custom_image_header;
-		$custom_image_header->process_default_headers();
-
-		foreach ( $custom_image_header->default_headers as $choice => $header )
+		foreach ( $this->default_headers as $choice => $header )
 			$this->print_header_image( $choice, $header );
 	}
 }
\ No newline at end of file
Index: wp-admin/js/customize-controls.dev.js
===================================================================
--- wp-admin/js/customize-controls.dev.js	(revision 21383)
+++ wp-admin/js/customize-controls.dev.js	(working copy)
@@ -220,10 +220,6 @@
 				};
 			});
 
-			// Select a tab
-			this.selected = this.tabs[ panels.first().data('customizeTab') ];
-			this.selected.both.addClass('library-selected');
-
 			// Bind tab switch events
 			this.library.children('ul').on( 'click', 'li', function( event ) {
 				var id  = $(this).data('customizeTab'),
@@ -255,6 +251,18 @@
 					this.tabs.uploaded.both.addClass('hidden');
 			}
 
+			// Select a tab
+			panels.each( function() {
+				var tab = control.tabs[ $(this).data('customizeTab') ];
+
+				// Select the first visible tab.
+				if ( ! tab.link.hasClass('hidden') ) {
+					control.selected = tab;
+					tab.both.addClass('library-selected');
+					return false;
+				}
+			});
+
 			this.dropdownInit();
 		},
 		success: function( attachment ) {
