Index: wp-includes/media.php
===================================================================
--- wp-includes/media.php	(revision 23494)
+++ wp-includes/media.php	(working copy)
@@ -1083,6 +1083,9 @@
 	if ( ! apply_filters( 'load_default_embeds', true ) )
 		return;
 	wp_embed_register_handler( 'googlevideo', '#http://video\.google\.([A-Za-z.]{2,5})/videoplay\?docid=([\d-]+)(.*?)#i', 'wp_embed_handler_googlevideo' );
+	wp_embed_register_handler( 'googlemaps', '#https?://maps.google.com/(maps)?.+#i', 'wp_embed_handler_googlemaps' );
+	wp_embed_register_handler( 'googledocs', '#https?://docs.google.com/(document|spreadsheet|presentation)/.*#i', 'wp_embed_handler_googledrive' );
+
 }
 
 /**
@@ -1110,6 +1113,62 @@
 }
 
 /**
+ * The Google Maps embed handler callback. Google Maps does not support oEmbed.
+ *
+ * @see WP_Embed::register_handler()
+ * @see WP_Embed::shortcode()
+ *
+ * @param array $matches The regex matches from the provided regex when calling {@link wp_embed_register_handler()}.
+ * @param array $attr Embed attributes.
+ * @param string $url The original URL that was matched by the regex.
+ * @param array $rawattr The original unmodified attributes.
+ * @return string The embed HTML.
+ */
+function wp_embed_handler_googlemaps( $matches, $attr, $url, $rawattr ) {
+	if ( !empty($rawattr['width']) && !empty($rawattr['height']) ) {
+		$width  = (int) $rawattr['width'];
+		$height = (int) $rawattr['height'];
+	} else {
+		list( $width, $height ) = wp_expand_dimensions( 425, 326, $attr['width'], $attr['height'] );
+	}
+	return apply_filters( 'embed_googlemaps', "<iframe width='{$width}' height='{$height}' frameborder='0' scrolling='no' marginheight='0' marginwidth='0' src='{$url}&output=embed'></iframe>" );
+}
+
+/**
+ * The Google Drive embed handler callback. Google Drive does not support oEmbed.
+ * Handles documents, spreadsheets, and presentations from Google Drive.
+ *
+ * @see WP_Embed::register_handler()
+ * @see WP_Embed::shortcode()
+ *
+ * @param array $matches The regex matches from the provided regex when calling {@link wp_embed_register_handler()}.
+ * @param array $attr Embed attributes.
+ * @param string $url The original URL that was matched by the regex.
+ * @param array $rawattr The original unmodified attributes.
+ * @return string The embed HTML.
+ */
+function wp_embed_handler_googledrive( $matches, $attr, $url, $rawattr ) {
+	if ( !empty($rawattr['width']) && !empty($rawattr['height']) ) {
+		$width  = (int) $rawattr['width'];
+		$height = (int) $rawattr['height'];
+	} else {
+		list( $width, $height ) = wp_expand_dimensions( 425, 344, $attr['width'], $attr['height'] );
+	}
+	
+	$extra = '';
+	if ( $matches[1] == 'spreadsheet' ) {
+		$url .= '&widget=true';
+	} elseif ( $matches[1] == 'document' ) {
+		$url .= '?embedded=true';
+	} elseif ( $matches[1] == 'presentation' ) {
+		$url = str_replace( '/pub', '/embed', $url);
+		$extra = 'allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"';
+	}
+
+	return apply_filters( 'embed_googledrive', "<iframe width='{$width}' height='{$height}' frameborder='0' src='{$url}' {$extra}></iframe>" );
+}
+
+/**
  * Converts a shorthand byte value to an integer byte value.
  *
  * @since 2.3.0
