Index: src/wp-admin/includes/class-wp-list-table.php
===================================================================
--- src/wp-admin/includes/class-wp-list-table.php	(revision 29253)
+++ src/wp-admin/includes/class-wp-list-table.php	(working copy)
@@ -273,11 +273,11 @@
 		if ( ! empty( $_REQUEST['detached'] ) )
 			echo '<input type="hidden" name="detached" value="' . esc_attr( $_REQUEST['detached'] ) . '" />';
 ?>
-<p class="search-box">
+<div class="media-toolbar-primary">
 	<label class="screen-reader-text" for="<?php echo $input_id ?>"><?php echo $text; ?>:</label>
-	<input type="search" id="<?php echo $input_id ?>" name="s" value="<?php _admin_search_query(); ?>" />
+	<input type="search" id="<?php echo $input_id ?>" name="s" placeholder="<?php _e( 'Search' ); ?>" value="<?php _admin_search_query(); ?>" />
 	<?php submit_button( $text, 'button', false, false, array('id' => 'search-submit') ); ?>
-</p>
+</div>
 <?php
 	}
 
@@ -369,6 +369,7 @@
 		if ( empty( $this->_actions ) )
 			return;
 
+		echo "<div class='bulk-select'>";
 		echo "<select name='action$two'>\n";
 		echo "<option value='-1' selected='selected'>" . __( 'Bulk Actions' ) . "</option>\n";
 
@@ -381,7 +382,7 @@
 		echo "</select>\n";
 
 		submit_button( __( 'Apply' ), 'action', false, false, array( 'id' => "doaction$two" ) );
-		echo "\n";
+		echo "</div>\n";
 	}
 
 	/**
@@ -592,7 +593,7 @@
 	 * @since 3.1.0
 	 * @access protected
 	 */
-	protected function pagination( $which ) {
+	protected function pagination() {
 		if ( empty( $this->_pagination_args ) ) {
 			return;
 		}
@@ -635,15 +636,11 @@
 			'&lsaquo;'
 		);
 
-		if ( 'bottom' == $which ) {
-			$html_current_page = $current;
-		} else {
-			$html_current_page = sprintf( "<input class='current-page' title='%s' type='text' name='paged' value='%s' size='%d' />",
-				esc_attr__( 'Current page' ),
-				$current,
-				strlen( $total_pages )
-			);
-		}
+		$html_current_page = sprintf( "<input class='current-page' title='%s' type='text' name='paged' value='%s' size='%d' />",
+			esc_attr__( 'Current page' ),
+			$current,
+			strlen( $total_pages )
+		);
 		$html_total_pages = sprintf( "<span class='total-pages'>%s</span>", number_format_i18n( $total_pages ) );
 		$page_links[] = '<span class="paging-input">' . sprintf( _x( '%1$s of %2$s', 'paging' ), $html_current_page, $html_total_pages ) . '</span>';
 
@@ -672,7 +669,7 @@
 		} else {
 			$page_class = ' no-pages';
 		}
-		$this->_pagination = "<div class='tablenav-pages{$page_class}'>$output</div>";
+		$this->_pagination = "<div class='alignright tablenav-pages{$page_class}'>$output</div>";
 
 		echo $this->_pagination;
 	}
@@ -846,7 +843,7 @@
 	public function display() {
 		$singular = $this->_args['singular'];
 
-		$this->display_tablenav( 'top' );
+		$this->display_tablenav();
 
 ?>
 <table class="wp-list-table <?php echo implode( ' ', $this->get_table_classes() ); ?>">
@@ -870,7 +867,6 @@
 	</tbody>
 </table>
 <?php
-		$this->display_tablenav( 'bottom' );
 	}
 
 	/**
@@ -891,22 +887,24 @@
 	 * @since 3.1.0
 	 * @access protected
 	 */
-	protected function display_tablenav( $which ) {
-		if ( 'top' == $which )
-			wp_nonce_field( 'bulk-' . $this->_args['plural'] );
-?>
-	<div class="tablenav <?php echo esc_attr( $which ); ?>">
+	protected function display_tablenav() {
+		wp_nonce_field( 'bulk-' . $this->_args['plural'] );
 
-		<div class="alignleft actions bulkactions">
-			<?php $this->bulk_actions(); ?>
-		</div>
-<?php
-		$this->extra_tablenav( $which );
-		$this->pagination( $which );
+ 		$mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode'];
+
+		$this->pagination();
 ?>
+<div class="media-toolbar">
 
-		<br class="clear" />
+	<div class="media-toolbar-secondary">
+		<?php $this->view_switcher( $mode ); ?>
+		<?php $this->extra_tablenav(); ?>
+		<?php $this->bulk_actions(); ?>
 	</div>
+
+	<?php $this->search_box( __( 'Search Media' ), 'media' ); ?>
+
+</div>
 <?php
 	}
 
@@ -916,7 +914,7 @@
 	 * @since 3.1.0
 	 * @access protected
 	 */
-	protected function extra_tablenav( $which ) {}
+	protected function extra_tablenav() {}
 
 	/**
 	 * Generate the <tbody> part of the table
Index: src/wp-admin/includes/class-wp-media-list-table.php
===================================================================
--- src/wp-admin/includes/class-wp-media-list-table.php	(revision 29253)
+++ src/wp-admin/includes/class-wp-media-list-table.php	(working copy)
@@ -85,11 +85,11 @@
 		return $actions;
 	}
 
-	protected function extra_tablenav( $which ) {
-?>
-		<div class="alignleft actions">
-<?php
-		if ( 'top' == $which && !is_singular() && !$this->detached && !$this->is_trash ) {
+	protected function extra_tablenav() {
+
+		echo '<div class="filters">';
+
+		if ( !is_singular() && !$this->detached && !$this->is_trash ) {
 			$this->months_dropdown( 'attachment' );
 
 			/** This action is documented in wp-admin/includes/class-wp-posts-list-table.php */
@@ -101,9 +101,10 @@
 			submit_button( __( 'Scan for lost attachments' ), 'secondary', 'find_detached', false );
 		} elseif ( $this->is_trash && current_user_can( 'edit_others_posts' ) ) {
 			submit_button( __( 'Empty Trash' ), 'apply', 'delete_all', false );
-		} ?>
-		</div>
-<?php
+		}
+
+		echo '</div>';
+
 	}
 
 	public function current_action() {
@@ -127,12 +128,10 @@
 		_e( 'No media attachments found.' );
 	}
 
-	protected function pagination( $which ) {
+	protected function pagination() {
 		global $mode;
 
-		parent::pagination( $which );
-
-		$this->view_switcher( $mode );
+		parent::pagination();
 	}
 
 	/**
Index: src/wp-admin/upload.php
===================================================================
--- src/wp-admin/upload.php	(revision 29253)
+++ src/wp-admin/upload.php	(working copy)
@@ -200,6 +200,7 @@
 $parent_file = 'upload.php';
 
 wp_enqueue_script( 'media' );
+wp_enqueue_style( 'media-views' );
 
 add_screen_option( 'per_page', array('label' => _x( 'Media items', 'items per page (screen options)' )) );
 
@@ -288,10 +289,8 @@
 
 <?php $wp_list_table->views(); ?>
 
-<form id="posts-filter" action="" method="get">
+<form id="posts-filter" class="<?php echo $mode; ?>-view" action="" method="get">
 
-<?php $wp_list_table->search_box( __( 'Search Media' ), 'media' ); ?>
-
 <?php $wp_list_table->display(); ?>
 
 <div id="ajax-response"></div>
Index: src/wp-includes/css/media-views.css
===================================================================
--- src/wp-includes/css/media-views.css	(revision 29253)
+++ src/wp-includes/css/media-views.css	(working copy)
@@ -19,12 +19,6 @@
 	line-height: 16px;
 }
 
-.media-frame select,
-.wp-admin .media-frame select {
-	line-height: 28px;
-	margin-top: 3px;
-}
-
 .media-frame a {
 	border-bottom: none;
 	color: #21759b;
@@ -218,6 +212,12 @@
 	height: 100%;
 }
 
+.wp-admin .media-toolbar select {
+	height: 32px;
+	line-height: 30px;
+	margin-top: 1px;
+}
+
 .media-toolbar-primary > .media-button,
 .media-toolbar-primary > .media-button-group {
 	margin-left: 10px;
@@ -628,8 +628,7 @@
 	max-height: 100%;
 }
 
-.media-frame-content .crop-content .upload-errors
-{
+.media-frame-content .crop-content .upload-errors {
 	position: absolute;
 	width: 300px;
 	top: 50%;
@@ -657,7 +656,6 @@
  * Attachment Browser Filters
  */
 .media-frame select.attachment-filters {
-	margin-top: 11px;
 	margin-right: 10px;
 }
 
@@ -2625,12 +2623,8 @@
 	margin-top: 0;
 }
 
-.media-grid-view .media-toolbar select {
-	margin-top: 1px;
-	font-size: inherit;
-}
-
-.media-grid-view .attachments-browser .bulk-select {
+.media-toolbar .filters,
+.media-toolbar .bulk-select {
 	display: inline-block;
 }
 
@@ -2639,7 +2633,7 @@
  *
  * This should be OOCSS'd so both use a shared selector.
  */
-.media-grid-view .attachments-browser .media-toolbar {
+.media-toolbar {
 	background: #fff;
 	-webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
 	box-shadow: 0 1px 1px 0 rgba(0,0,0,.1);
@@ -2657,7 +2651,15 @@
 	border: none;
 }
 
-.media-grid-view input[type="search"] {
+.list-view .media-toolbar {
+	margin-top: 0;
+}
+
+.list-view .media-toolbar-primary {
+	padding-top: 10px;
+}
+
+.media-toolbar input[type="search"] {
 	margin: 1px;
 	padding: 3px 5px;
 	position: absolute;
@@ -2667,9 +2669,21 @@
 	font-weight: 300;
 	line-height: 1.5;
 	width: 280px;
+	-webkit-border-radius: 3px;
+	   -moz-border-radius: 3px;
+			border-radius: 3px;
 }
 
-.media-grid-view .view-switch {
+.wp-core-ui .media-toolbar .button {
+	height: 32px;
+	line-height: 30px;
+}
+
+.list-view .media-toolbar input[type="search"] {
+	position: static;
+}
+
+.media-toolbar .view-switch {
 	display: inline-block;
 	float: none;
 	vertical-align: middle;
@@ -2677,8 +2691,9 @@
 	margin: 0 20px 0 0;
 }
 
-.media-grid-view select {
+.media-toolbar select {
 	margin: 0 10px 0 0;
+	font-size: inherit;
 }
 
 .media-grid-view .spinner {
