Index: src/wp-includes/class-wp-customize-manager.php
===================================================================
--- src/wp-includes/class-wp-customize-manager.php	(revision 41772)
+++ src/wp-includes/class-wp-customize-manager.php	(working copy)
@@ -4454,8 +4454,46 @@
 			'section'    => 'title_tagline',
 		) );
 
+		// Theme feature for enabling and disabling the site title
+		if ( current_theme_supports( 'custom-title-tagline', 'display-title' ) ) {
+			$this->add_setting( 'header_display_title', array(
+				'default'    => get_option( 'header_display_title' ) || get_option( 'blogname' ),
+				'type'       => 'option',
+				'capability' => 'manage_options',
+				'transport'         => 'postMessage',
+				'sanitize_callback' => 'absint',
+
+
+			) );
+
+			$this->add_control( 'header_display_title', array(
+				'label'    => __( 'Display Site Title' ),
+				'section'  => 'title_tagline',
+				'settings' => 'header_display_title',
+				'type'     => 'checkbox',
+			) );
+		}
+
+		// Theme feature for enabling and disabling the site tagline
+		if ( current_theme_supports( 'custom-title-tagline', 'display-tagline' ) ) {
+			$this->add_setting( 'header_display_tagline', array(
+				'default'    => get_option( 'header_display_tagline' ) || get_option( 'blogdescrption' ),
+				'type'       => 'option',
+				'capability' => 'manage_options',
+				'transport'         => 'postMessage',
+				'sanitize_callback' => 'absint',
+			) );
+
+			$this->add_control( 'header_display_tagline', array(
+				'label'    => __( 'Display Site Tagline' ),
+				'section'  => 'title_tagline',
+				'settings' => 'header_display_tagline',
+				'type'     => 'checkbox',
+			) );
+		}
+
 		// Add a setting to hide header text if the theme doesn't support custom headers.
-		if ( ! current_theme_supports( 'custom-header', 'header-text' ) ) {
+		if ( ! current_theme_supports( 'custom-header', 'header-text' ) && ! current_theme_supports( 'custom-title-tagline' ) ) {
 			$this->add_setting( 'header_text', array(
 				'theme_supports'    => array( 'custom-logo', 'header-text' ),
 				'default'           => 1,
Index: src/wp-includes/general-template.php
===================================================================
--- src/wp-includes/general-template.php	(revision 41772)
+++ src/wp-includes/general-template.php	(working copy)
@@ -4253,3 +4253,51 @@
 
 	return $settings;
 }
+
+if ( 0 )  {
+/**
+ * TEMPORARY - this needs a better solution
+ * Used to demonstrate https://core.trac.wordpress.org/ticket/37516 only
+ * apply_filters( 'bloginfo', $output, $show );
+ */
+function filter_bloginfo_header_text( $output, $show ) {
+	if ( 'name' === $show )
+		return ( get_option( 'header_text_title') ? $output : '' );
+	elseif ( 'description' === $show )
+		return ( get_option( 'header_text_tagline' ) ? $output : '' );
+
+
+	return $output;
+}
+
+function add_filter_bloginfo_header_text( $header_name ) {
+	add_filter( 'bloginfo', 'filter_bloginfo_header_text', 10, 2 );
+}
+
+add_action( 'get_header', 'add_filter_bloginfo_header_text' );
+
+function filter_register_blogname_partials( WP_Customize_Manager $wp_customize ) {
+
+    if ( ! isset( $wp_customize->selective_refresh ) ) {
+        return;
+    }
+
+    $wp_customize->selective_refresh->add_partial( 'header_text_title', array(
+        'selector' => '.site-title a',
+        'settings' => array( 'blogname', 'header_text_title' ),
+        'render_callback' => function() {
+            return filter_bloginfo_header_text( get_bloginfo( 'name' ), 'name' );
+        },
+    ) );
+
+    $wp_customize->selective_refresh->add_partial( 'header_text_tagline', array(
+        'selector' => '.site-description',
+        'settings' => array( 'blogdescription', 'header_text_tagline' ),
+        'render_callback' => function() {
+        	return filter_bloginfo_header_text( get_bloginfo( 'description' ), 'description' );
+        }
+    ) );
+}
+add_action( 'customize_register', 'filter_register_blogname_partials' );
+
+}
\ No newline at end of file
Index: src/wp-includes/theme.php
===================================================================
--- src/wp-includes/theme.php	(revision 41772)
+++ src/wp-includes/theme.php	(working copy)
@@ -2419,6 +2419,22 @@
 
 				return false;
 			}
+
+			break;
+
+		case 'custom-title-tagline' :
+			if ( ! is_array( $args ) )
+				$args = array( 0 => array() );
+
+			$defaults = array(
+				'display-title'          => true,
+				'display-tagline'        => true,
+			);
+
+			$args[0] = wp_parse_args( array_intersect_key( $args[0], $defaults ), $defaults );
+
+			break;
+
 	}
 
 	$_wp_theme_features[ $feature ] = $args;
@@ -3151,3 +3167,4 @@
 		clean_post_cache( $post_id );
 	}
 }
+
