Index: class-wp-plugin-install-list-table.php
===================================================================
--- class-wp-plugin-install-list-table.php	(revision 33112)
+++ class-wp-plugin-install-list-table.php	(working copy)
@@ -163,11 +163,14 @@
 			case 'favorites':
 				$user = isset( $_GET['user'] ) ? wp_unslash( $_GET['user'] ) : get_user_option( 'wporg_favorites' );
 				update_user_meta( get_current_user_id(), 'wporg_favorites', $user );
-				if ( $user )
+				if ( $user ) {
 					$args['user'] = $user;
-				else
+					$search = isset( $_GET['search'] ) ? wp_unslash( $_GET['search'] ) : false; 
+					if ($search) 
+					$args['s'] = $search; 
+				} else {
 					$args = false;
-
+				}
 				add_action( 'install_plugins_favorites', 'install_plugins_favorites_form', 9, 0 );
 				break;
 
@@ -190,6 +193,11 @@
 
 		if ( !$args )
 			return;
+			
+		if ( isset( $args['s'] ) ){ 
+			$per_page_limit = $args['per_page']; 
+			$args['per_page'] = -1; 
+		}
 
 		$api = plugins_api( 'query_plugins', $args );
 
@@ -199,7 +207,22 @@
 		}
 
 		$this->items = $api->plugins;
+		
+		if( isset( $args['s'] )){ 
+			$args['per_page'] = $per_page_limit; 
+			
+                        foreach ($this->items as $key => $item){  
+                                if (stripos($item->name, $args['s']) === false){  
+                                        unset ($this->items[ $key ]);  
+                                        $api->info['results']--;  
+                                }  
+                        }  
 
+                        if ( isset( $args['page']) ){  
+                                $this->items = array_slice( $this->items, min( ( $args['page'] * $args['per_page'] ) - $args['per_page'], sizeof ($this->items) ) );  
+                        }  
+                }  
+
 		if ( $this->orderby ) {
 			uasort( $this->items, array( $this, 'order_callback' ) );
 		}
