Make WordPress Core

Changeset 61415


Ignore:
Timestamp:
12/29/2025 11:32:17 AM (6 weeks ago)
Author:
jonsurrell
Message:

Scripts: Remove non-HTML5 script support.

Remove the following behaviors that are obsolete in HTML5:

  • CDATA wrappers around SCRIPT tag contents.
  • Conversion of boolean attributes to strings (attribute async="async" becomes async).

HTML5 was released in 2008 and data suggests virtually all WordPress sites are served as HTML5. See #59883 for more details.

Developed in https://github.com/WordPress/wordpress-develop/pull/10660.

Props jonsurrell, westonruter, azaozz, soyebsalar01, dmsnell.
Fixes #64442. See #59883.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/script-loader.php

    r61414 r61415  
    22112211        if ( ! empty( $wp_scripts->print_code ) ) {
    22122212            echo "\n<script>\n";
    2213             echo "/* <![CDATA[ */\n"; // Not needed in HTML 5.
    22142213            echo $wp_scripts->print_code;
    22152214            echo sprintf( "\n//# sourceURL=%s\n", rawurlencode( 'js-inline-concat-' . $concat ) );
    2216             echo "/* ]]> */\n";
    22172215            echo "</script>\n";
    22182216        }
     
    28722870 */
    28732871function wp_sanitize_script_attributes( $attributes ) {
    2874     $html5_script_support = is_admin() || current_theme_supports( 'html5', 'script' );
    2875     $attributes_string    = '';
     2872    $attributes_string = '';
    28762873
    28772874    /*
     
    28822879        if ( is_bool( $attribute_value ) ) {
    28832880            if ( $attribute_value ) {
    2884                 $attributes_string .= $html5_script_support ? ' ' . esc_attr( $attribute_name ) : sprintf( ' %1$s="%2$s"', esc_attr( $attribute_name ), esc_attr( $attribute_name ) );
     2881                $attributes_string .= ' ' . esc_attr( $attribute_name );
    28852882            }
    28862883        } else {
     
    29452942 */
    29462943function wp_get_inline_script_tag( $data, $attributes = array() ) {
    2947     /*
    2948      * XHTML extracts the contents of the SCRIPT element and then the XML parser
    2949      * decodes character references and other syntax elements. This can lead to
    2950      * misinterpretation of the script contents or invalid XHTML documents.
    2951      *
    2952      * Wrapping the contents in a CDATA section instructs the XML parser not to
    2953      * transform the contents of the SCRIPT element before passing them to the
    2954      * JavaScript engine.
    2955      *
    2956      * Example:
    2957      *
    2958      *     <script>console.log('&hellip;');</script>
    2959      *
    2960      *     In an HTML document this would print "&hellip;" to the console,
    2961      *     but in an XHTML document it would print "…" to the console.
    2962      *
    2963      *     <script>console.log('An image is <img> in HTML');</script>
    2964      *
    2965      *     In an HTML document this would print "An image is <img> in HTML",
    2966      *     but it's an invalid XHTML document because it interprets the `<img>`
    2967      *     as an empty tag missing its closing `/`.
    2968      *
    2969      * @see https://www.w3.org/TR/xhtml1/#h-4.8
    2970      */
    2971     if (
    2972         ( ! current_theme_supports( 'html5', 'script' ) && ! is_admin() )
    2973         && (
    2974             ! isset( $attributes['type'] ) ||
    2975             'module' === $attributes['type'] ||
    2976             str_contains( $attributes['type'], 'javascript' ) ||
    2977             str_contains( $attributes['type'], 'ecmascript' ) ||
    2978             str_contains( $attributes['type'], 'jscript' ) ||
    2979             str_contains( $attributes['type'], 'livescript' )
    2980         )
    2981     ) {
    2982         /*
    2983          * If the string `]]>` exists within the JavaScript it would break
    2984          * out of any wrapping CDATA section added here, so to start, it's
    2985          * necessary to escape that sequence which requires splitting the
    2986          * content into two CDATA sections wherever it's found.
    2987          *
    2988          * Note: it's only necessary to escape the closing `]]>` because
    2989          * an additional `<![CDATA[` leaves the contents unchanged.
    2990          */
    2991         $data = str_replace( ']]>', ']]]]><![CDATA[>', $data );
    2992 
    2993         // Wrap the entire escaped script inside a CDATA section.
    2994         $data = sprintf( "/* <![CDATA[ */\n%s\n/* ]]> */", $data );
    2995     }
    2996 
    29972944    $data = "\n" . trim( $data, "\n\r " ) . "\n";
    29982945
  • trunk/tests/phpunit/tests/dependencies/scripts.php

    r61411 r61415  
    4949        $this->wp_scripts_print_translations_output  = <<<JS
    5050<script id='__HANDLE__-js-translations'>
    51 /* <![CDATA[ */
    5251( function( domain, translations ) {
    5352    var localeData = translations.locale_data[ domain ] || translations.locale_data.messages;
     
    5655} )( "__DOMAIN__", __JSON_TRANSLATIONS__ );
    5756//# sourceURL=__HANDLE__-js-translations
    58 /* ]]> */
    5957</script>
    6058JS;
     
    239237            )
    240238        );
    241         $expected .= "<script src='http://example.org/ds-i1-1.js' id='ds-i1-1-js' {$strategy}='{$strategy}' data-wp-strategy='{$strategy}'></script>\n";
    242         $expected .= "<script src='http://example.org/ds-i1-2.js' id='ds-i1-2-js' {$strategy}='{$strategy}' data-wp-strategy='{$strategy}'></script>\n";
    243         $expected .= "<script src='http://example.org/ds-i1-3.js' id='ds-i1-3-js' {$strategy}='{$strategy}' data-wp-strategy='{$strategy}'></script>\n";
     239        $expected .= "<script src='http://example.org/ds-i1-1.js' id='ds-i1-1-js' {$strategy} data-wp-strategy='{$strategy}'></script>\n";
     240        $expected .= "<script src='http://example.org/ds-i1-2.js' id='ds-i1-2-js' {$strategy} data-wp-strategy='{$strategy}'></script>\n";
     241        $expected .= "<script src='http://example.org/ds-i1-3.js' id='ds-i1-3-js' {$strategy} data-wp-strategy='{$strategy}'></script>\n";
    244242        $expected .= wp_get_inline_script_tag(
    245243            "console.log('before last');\n//# sourceURL=ms-i1-1-js-before",
     
    248246            )
    249247        );
    250         $expected .= "<script src='http://example.org/ms-i1-1.js' id='ms-i1-1-js' {$strategy}='{$strategy}' data-wp-strategy='{$strategy}'></script>\n";
     248        $expected .= "<script src='http://example.org/ms-i1-1.js' id='ms-i1-1-js' {$strategy} data-wp-strategy='{$strategy}'></script>\n";
    251249
    252250        $this->assertEqualHTML( $expected, $output, '<body>', 'Inline scripts in the "before" position, that are attached to a deferred main script, are failing to print/execute.' );
     
    267265        wp_enqueue_script( 'main-script-a1', '/main-script-a1.js', array(), null, array( 'strategy' => 'async' ) );
    268266        $output   = get_echo( 'wp_print_scripts' );
    269         $expected = "<script src='/main-script-a1.js' id='main-script-a1-js' async='async' data-wp-strategy='async'></script>\n";
     267        $expected = "<script src='/main-script-a1.js' id='main-script-a1-js' async data-wp-strategy='async'></script>\n";
    270268        $this->assertEqualHTML( $expected, $output, '<body>', 'Scripts enqueued with an async loading strategy are failing to have the async attribute applied to the script handle when being printed.' );
    271269    }
     
    290288        $output    = get_echo( 'wp_print_scripts' );
    291289        $expected  = "<script id='dependency-script-a2-js' src='/dependency-script-a2.js'></script>\n";
    292         $expected .= "<script src='/main-script-a2.js' id='main-script-a2-js' {$strategy}='{$strategy}' data-wp-strategy='{$strategy}'></script>";
     290        $expected .= "<script src='/main-script-a2.js' id='main-script-a2-js' {$strategy} data-wp-strategy='{$strategy}'></script>";
    293291        $this->assertEqualHTML( $expected, $output, '<body>', 'Dependents of a blocking dependency are free to have any strategy.' );
    294292    }
     
    332330     */
    333331    public function test_delayed_dependent_with_blocking_dependency_not_enqueued( $strategy ) {
    334         $this->add_html5_script_theme_support();
    335332        wp_enqueue_script( 'main-script-a4', '/main-script-a4.js', array(), null, compact( 'strategy' ) );
    336333        // This dependent is registered but not enqueued, so it should not factor into the eligible loading strategy.
     
    564561                'expected_markup' => <<<HTML
    565562<script id="blocking-not-async-without-dependency-js-before">
    566 /* <![CDATA[ */
    567563scriptEventLog.push( "blocking-not-async-without-dependency: before inline" )
    568564//# sourceURL=blocking-not-async-without-dependency-js-before
    569 /* ]]> */
    570565</script>
    571566<script src='https://example.com/external.js?script_event_log=blocking-not-async-without-dependency%3A+script' id='blocking-not-async-without-dependency-js'></script>
    572567<script id="blocking-not-async-without-dependency-js-after">
    573 /* <![CDATA[ */
    574568scriptEventLog.push( "blocking-not-async-without-dependency: after inline" )
    575569//# sourceURL=blocking-not-async-without-dependency-js-after
    576 /* ]]> */
    577570</script>
    578571<script id="async-with-blocking-dependency-js-before">
    579 /* <![CDATA[ */
    580572scriptEventLog.push( "async-with-blocking-dependency: before inline" )
    581573//# sourceURL=async-with-blocking-dependency-js-before
    582 /* ]]> */
    583574</script>
    584575<script src='https://example.com/external.js?script_event_log=async-with-blocking-dependency%3A+script' id='async-with-blocking-dependency-js' data-wp-strategy='async'></script>
    585576<script id="async-with-blocking-dependency-js-after">
    586 /* <![CDATA[ */
    587577scriptEventLog.push( "async-with-blocking-dependency: after inline" )
    588578//# sourceURL=async-with-blocking-dependency-js-after
    589 /* ]]> */
    590579</script>
    591580HTML
     
    613602                'expected_markup' => <<<HTML
    614603<script id="async-no-dependency-js-before">
    615 /* <![CDATA[ */
    616604scriptEventLog.push( "async-no-dependency: before inline" )
    617605//# sourceURL=async-no-dependency-js-before
    618 /* ]]> */
    619606</script>
    620607<script src='https://example.com/external.js?script_event_log=async-no-dependency%3A+script' id='async-no-dependency-js' data-wp-strategy='async'></script>
    621608<script id="async-no-dependency-js-after">
    622 /* <![CDATA[ */
    623609scriptEventLog.push( "async-no-dependency: after inline" )
    624610//# sourceURL=async-no-dependency-js-after
    625 /* ]]> */
    626611</script>
    627612<script id="async-one-async-dependency-js-before">
    628 /* <![CDATA[ */
    629613scriptEventLog.push( "async-one-async-dependency: before inline" )
    630614//# sourceURL=async-one-async-dependency-js-before
    631 /* ]]> */
    632615</script>
    633616<script src='https://example.com/external.js?script_event_log=async-one-async-dependency%3A+script' id='async-one-async-dependency-js' data-wp-strategy='async'></script>
    634617<script id="async-one-async-dependency-js-after">
    635 /* <![CDATA[ */
    636618scriptEventLog.push( "async-one-async-dependency: after inline" )
    637619//# sourceURL=async-one-async-dependency-js-after
    638 /* ]]> */
    639620</script>
    640621<script id="async-two-async-dependencies-js-before">
    641 /* <![CDATA[ */
    642622scriptEventLog.push( "async-two-async-dependencies: before inline" )
    643623//# sourceURL=async-two-async-dependencies-js-before
    644 /* ]]> */
    645624</script>
    646625<script src='https://example.com/external.js?script_event_log=async-two-async-dependencies%3A+script' id='async-two-async-dependencies-js' data-wp-strategy='async'></script>
    647626<script id="async-two-async-dependencies-js-after">
    648 /* <![CDATA[ */
    649627scriptEventLog.push( "async-two-async-dependencies: after inline" )
    650628//# sourceURL=async-two-async-dependencies-js-after
    651 /* ]]> */
    652629</script>
    653630HTML
     
    667644                'expected_markup' => <<<HTML
    668645<script id="async-with-blocking-dependent-js-before">
    669 /* <![CDATA[ */
    670646scriptEventLog.push( "async-with-blocking-dependent: before inline" )
    671647//# sourceURL=async-with-blocking-dependent-js-before
    672 /* ]]> */
    673648</script>
    674649<script src='https://example.com/external.js?script_event_log=async-with-blocking-dependent%3A+script' id='async-with-blocking-dependent-js' data-wp-strategy='async'></script>
    675650<script id="async-with-blocking-dependent-js-after">
    676 /* <![CDATA[ */
    677651scriptEventLog.push( "async-with-blocking-dependent: after inline" )
    678652//# sourceURL=async-with-blocking-dependent-js-after
    679 /* ]]> */
    680653</script>
    681654<script id="blocking-dependent-of-async-js-before">
    682 /* <![CDATA[ */
    683655scriptEventLog.push( "blocking-dependent-of-async: before inline" )
    684656//# sourceURL=blocking-dependent-of-async-js-before
    685 /* ]]> */
    686657</script>
    687658<script src='https://example.com/external.js?script_event_log=blocking-dependent-of-async%3A+script' id='blocking-dependent-of-async-js'></script>
    688659<script id="blocking-dependent-of-async-js-after">
    689 /* <![CDATA[ */
    690660scriptEventLog.push( "blocking-dependent-of-async: after inline" )
    691661//# sourceURL=blocking-dependent-of-async-js-after
    692 /* ]]> */
    693662</script>
    694663HTML
     
    708677                'expected_markup' => <<<HTML
    709678<script id="async-with-defer-dependent-js-before">
    710 /* <![CDATA[ */
    711679scriptEventLog.push( "async-with-defer-dependent: before inline" )
    712680//# sourceURL=async-with-defer-dependent-js-before
    713 /* ]]> */
    714681</script>
    715682<script src='https://example.com/external.js?script_event_log=async-with-defer-dependent%3A+script' id='async-with-defer-dependent-js' data-wp-strategy='async'></script>
    716683<script id="async-with-defer-dependent-js-after">
    717 /* <![CDATA[ */
    718684scriptEventLog.push( "async-with-defer-dependent: after inline" )
    719685//# sourceURL=async-with-defer-dependent-js-after
    720 /* ]]> */
    721686</script>
    722687<script id="defer-dependent-of-async-js-before">
    723 /* <![CDATA[ */
    724688scriptEventLog.push( "defer-dependent-of-async: before inline" )
    725689//# sourceURL=defer-dependent-of-async-js-before
    726 /* ]]> */
    727690</script>
    728691<script src='https://example.com/external.js?script_event_log=defer-dependent-of-async%3A+script' id='defer-dependent-of-async-js' data-wp-strategy='defer'></script>
    729692<script id="defer-dependent-of-async-js-after">
    730 /* <![CDATA[ */
    731693scriptEventLog.push( "defer-dependent-of-async: after inline" )
    732694//# sourceURL=defer-dependent-of-async-js-after
    733 /* ]]> */
    734695</script>
    735696HTML
     
    752713                'expected_markup' => <<<HTML
    753714<script id="blocking-bundle-of-none-js-before">
    754 /* <![CDATA[ */
    755715scriptEventLog.push( "blocking-bundle-of-none: before inline" )
    756716//# sourceURL=blocking-bundle-of-none-js-before
    757 /* ]]> */
    758717</script>
    759718<script id="blocking-bundle-of-none-js-after">
    760 /* <![CDATA[ */
    761719scriptEventLog.push( "blocking-bundle-of-none: after inline" )
    762720//# sourceURL=blocking-bundle-of-none-js-after
    763 /* ]]> */
    764721</script>
    765722<script id="defer-dependent-of-blocking-bundle-of-none-js-before">
    766 /* <![CDATA[ */
    767723scriptEventLog.push( "defer-dependent-of-blocking-bundle-of-none: before inline" )
    768724//# sourceURL=defer-dependent-of-blocking-bundle-of-none-js-before
    769 /* ]]> */
    770725</script>
    771726<script src='https://example.com/external.js?script_event_log=defer-dependent-of-blocking-bundle-of-none%3A+script' id='defer-dependent-of-blocking-bundle-of-none-js' data-wp-strategy='defer'></script>
    772727<script id="defer-dependent-of-blocking-bundle-of-none-js-after">
    773 /* <![CDATA[ */
    774728scriptEventLog.push( "defer-dependent-of-blocking-bundle-of-none: after inline" )
    775729//# sourceURL=defer-dependent-of-blocking-bundle-of-none-js-after
    776 /* ]]> */
    777730</script>
    778731HTML
     
    798751                'expected_markup' => <<<HTML
    799752<script id="blocking-bundle-member-one-js-before">
    800 /* <![CDATA[ */
    801753scriptEventLog.push( "blocking-bundle-member-one: before inline" )
    802754//# sourceURL=blocking-bundle-member-one-js-before
    803 /* ]]> */
    804755</script>
    805756<script src='https://example.com/external.js?script_event_log=blocking-bundle-member-one%3A+script' id='blocking-bundle-member-one-js'></script>
    806757<script id="blocking-bundle-member-one-js-after">
    807 /* <![CDATA[ */
    808758scriptEventLog.push( "blocking-bundle-member-one: after inline" )
    809759//# sourceURL=blocking-bundle-member-one-js-after
    810 /* ]]> */
    811760</script>
    812761<script id="blocking-bundle-member-two-js-before">
    813 /* <![CDATA[ */
    814762scriptEventLog.push( "blocking-bundle-member-two: before inline" )
    815763//# sourceURL=blocking-bundle-member-two-js-before
    816 /* ]]> */
    817764</script>
    818765<script src='https://example.com/external.js?script_event_log=blocking-bundle-member-two%3A+script' id='blocking-bundle-member-two-js'></script>
    819766<script id="blocking-bundle-member-two-js-after">
    820 /* <![CDATA[ */
    821767scriptEventLog.push( "blocking-bundle-member-two: after inline" )
    822768//# sourceURL=blocking-bundle-member-two-js-after
    823 /* ]]> */
    824769</script>
    825770<script id="defer-dependent-of-blocking-bundle-of-two-js-before">
    826 /* <![CDATA[ */
    827771scriptEventLog.push( "defer-dependent-of-blocking-bundle-of-two: before inline" )
    828772//# sourceURL=defer-dependent-of-blocking-bundle-of-two-js-before
    829 /* ]]> */
    830773</script>
    831774<script src='https://example.com/external.js?script_event_log=defer-dependent-of-blocking-bundle-of-two%3A+script' id='defer-dependent-of-blocking-bundle-of-two-js' data-wp-strategy='defer'></script>
    832775<script id="defer-dependent-of-blocking-bundle-of-two-js-after">
    833 /* <![CDATA[ */
    834776scriptEventLog.push( "defer-dependent-of-blocking-bundle-of-two: after inline" )
    835777//# sourceURL=defer-dependent-of-blocking-bundle-of-two-js-after
    836 /* ]]> */
    837778</script>
    838779HTML
     
    857798                'expected_markup' => <<<HTML
    858799<script id="defer-bundle-of-none-js-before">
    859 /* <![CDATA[ */
    860800scriptEventLog.push( "defer-bundle-of-none: before inline" )
    861801//# sourceURL=defer-bundle-of-none-js-before
    862 /* ]]> */
    863802</script>
    864803<script id="defer-bundle-of-none-js-after">
    865 /* <![CDATA[ */
    866804scriptEventLog.push( "defer-bundle-of-none: after inline" )
    867805//# sourceURL=defer-bundle-of-none-js-after
    868 /* ]]> */
    869806</script>
    870807<script id="defer-dependent-of-defer-bundle-of-none-js-before">
    871 /* <![CDATA[ */
    872808scriptEventLog.push( "defer-dependent-of-defer-bundle-of-none: before inline" )
    873809//# sourceURL=defer-dependent-of-defer-bundle-of-none-js-before
    874 /* ]]> */
    875810</script>
    876811<script src='https://example.com/external.js?script_event_log=defer-dependent-of-defer-bundle-of-none%3A+script' id='defer-dependent-of-defer-bundle-of-none-js' data-wp-strategy='defer'></script>
    877812<script id="defer-dependent-of-defer-bundle-of-none-js-after">
    878 /* <![CDATA[ */
    879813scriptEventLog.push( "defer-dependent-of-defer-bundle-of-none: after inline" )
    880814//# sourceURL=defer-dependent-of-defer-bundle-of-none-js-after
    881 /* ]]> */
    882815</script>
    883816HTML
     
    900833                'expected_markup' => <<<HTML
    901834<script id="blocking-dependency-with-defer-following-dependency-js-before">
    902 /* <![CDATA[ */
    903835scriptEventLog.push( "blocking-dependency-with-defer-following-dependency: before inline" )
    904836//# sourceURL=blocking-dependency-with-defer-following-dependency-js-before
    905 /* ]]> */
    906837</script>
    907838<script src='https://example.com/external.js?script_event_log=blocking-dependency-with-defer-following-dependency%3A+script' id='blocking-dependency-with-defer-following-dependency-js'></script>
    908839<script id="blocking-dependency-with-defer-following-dependency-js-after">
    909 /* <![CDATA[ */
    910840scriptEventLog.push( "blocking-dependency-with-defer-following-dependency: after inline" )
    911841//# sourceURL=blocking-dependency-with-defer-following-dependency-js-after
    912 /* ]]> */
    913842</script>
    914843<script id="defer-dependency-with-blocking-preceding-dependency-js-before">
    915 /* <![CDATA[ */
    916844scriptEventLog.push( "defer-dependency-with-blocking-preceding-dependency: before inline" )
    917845//# sourceURL=defer-dependency-with-blocking-preceding-dependency-js-before
    918 /* ]]> */
    919846</script>
    920847<script src='https://example.com/external.js?script_event_log=defer-dependency-with-blocking-preceding-dependency%3A+script' id='defer-dependency-with-blocking-preceding-dependency-js' data-wp-strategy='defer'></script>
    921848<script id="defer-dependency-with-blocking-preceding-dependency-js-after">
    922 /* <![CDATA[ */
    923849scriptEventLog.push( "defer-dependency-with-blocking-preceding-dependency: after inline" )
    924850//# sourceURL=defer-dependency-with-blocking-preceding-dependency-js-after
    925 /* ]]> */
    926851</script>
    927852<script id="defer-dependent-of-blocking-and-defer-dependencies-js-before">
    928 /* <![CDATA[ */
    929853scriptEventLog.push( "defer-dependent-of-blocking-and-defer-dependencies: before inline" )
    930854//# sourceURL=defer-dependent-of-blocking-and-defer-dependencies-js-before
    931 /* ]]> */
    932855</script>
    933856<script src='https://example.com/external.js?script_event_log=defer-dependent-of-blocking-and-defer-dependencies%3A+script' id='defer-dependent-of-blocking-and-defer-dependencies-js' data-wp-strategy='defer'></script>
    934857<script id="defer-dependent-of-blocking-and-defer-dependencies-js-after">
    935 /* <![CDATA[ */
    936858scriptEventLog.push( "defer-dependent-of-blocking-and-defer-dependencies: after inline" )
    937859//# sourceURL=defer-dependent-of-blocking-and-defer-dependencies-js-after
    938 /* ]]> */
    939860</script>
    940861HTML
     
    957878                'expected_markup' => <<<HTML
    958879<script id="defer-dependency-with-blocking-following-dependency-js-before">
    959 /* <![CDATA[ */
    960880scriptEventLog.push( "defer-dependency-with-blocking-following-dependency: before inline" )
    961881//# sourceURL=defer-dependency-with-blocking-following-dependency-js-before
    962 /* ]]> */
    963882</script>
    964883<script src='https://example.com/external.js?script_event_log=defer-dependency-with-blocking-following-dependency%3A+script' id='defer-dependency-with-blocking-following-dependency-js' data-wp-strategy='defer'></script>
    965884<script id="defer-dependency-with-blocking-following-dependency-js-after">
    966 /* <![CDATA[ */
    967885scriptEventLog.push( "defer-dependency-with-blocking-following-dependency: after inline" )
    968886//# sourceURL=defer-dependency-with-blocking-following-dependency-js-after
    969 /* ]]> */
    970887</script>
    971888<script id="blocking-dependency-with-defer-preceding-dependency-js-before">
    972 /* <![CDATA[ */
    973889scriptEventLog.push( "blocking-dependency-with-defer-preceding-dependency: before inline" )
    974890//# sourceURL=blocking-dependency-with-defer-preceding-dependency-js-before
    975 /* ]]> */
    976891</script>
    977892<script src='https://example.com/external.js?script_event_log=blocking-dependency-with-defer-preceding-dependency%3A+script' id='blocking-dependency-with-defer-preceding-dependency-js'></script>
    978893<script id="blocking-dependency-with-defer-preceding-dependency-js-after">
    979 /* <![CDATA[ */
    980894scriptEventLog.push( "blocking-dependency-with-defer-preceding-dependency: after inline" )
    981895//# sourceURL=blocking-dependency-with-defer-preceding-dependency-js-after
    982 /* ]]> */
    983896</script>
    984897<script id="defer-dependent-of-defer-and-blocking-dependencies-js-before">
    985 /* <![CDATA[ */
    986898scriptEventLog.push( "defer-dependent-of-defer-and-blocking-dependencies: before inline" )
    987899//# sourceURL=defer-dependent-of-defer-and-blocking-dependencies-js-before
    988 /* ]]> */
    989900</script>
    990901<script src='https://example.com/external.js?script_event_log=defer-dependent-of-defer-and-blocking-dependencies%3A+script' id='defer-dependent-of-defer-and-blocking-dependencies-js' data-wp-strategy='defer'></script>
    991902<script id="defer-dependent-of-defer-and-blocking-dependencies-js-after">
    992 /* <![CDATA[ */
    993903scriptEventLog.push( "defer-dependent-of-defer-and-blocking-dependencies: after inline" )
    994904//# sourceURL=defer-dependent-of-defer-and-blocking-dependencies-js-after
    995 /* ]]> */
    996905</script>
    997906HTML
     
    1011920                'expected_markup' => <<<HTML
    1012921<script id="defer-with-async-dependent-js-before">
    1013 /* <![CDATA[ */
    1014922scriptEventLog.push( "defer-with-async-dependent: before inline" )
    1015923//# sourceURL=defer-with-async-dependent-js-before
    1016 /* ]]> */
    1017924</script>
    1018925<script src='https://example.com/external.js?script_event_log=defer-with-async-dependent%3A+script' id='defer-with-async-dependent-js' data-wp-strategy='defer'></script>
    1019926<script id="defer-with-async-dependent-js-after">
    1020 /* <![CDATA[ */
    1021927scriptEventLog.push( "defer-with-async-dependent: after inline" )
    1022928//# sourceURL=defer-with-async-dependent-js-after
    1023 /* ]]> */
    1024929</script>
    1025930<script id="async-dependent-of-defer-js-before">
    1026 /* <![CDATA[ */
    1027931scriptEventLog.push( "async-dependent-of-defer: before inline" )
    1028932//# sourceURL=async-dependent-of-defer-js-before
    1029 /* ]]> */
    1030933</script>
    1031934<script src='https://example.com/external.js?script_event_log=async-dependent-of-defer%3A+script' id='async-dependent-of-defer-js' data-wp-strategy='async'></script>
    1032935<script id="async-dependent-of-defer-js-after">
    1033 /* <![CDATA[ */
    1034936scriptEventLog.push( "async-dependent-of-defer: after inline" )
    1035937//# sourceURL=async-dependent-of-defer-js-after
    1036 /* ]]> */
    1037938</script>
    1038939HTML
     
    1048949                'expected_markup' => <<<HTML
    1049950<script id="defer-with-before-inline-js-before">
    1050 /* <![CDATA[ */
    1051951scriptEventLog.push( "defer-with-before-inline: before inline" )
    1052952//# sourceURL=defer-with-before-inline-js-before
    1053 /* ]]> */
    1054 </script>
    1055 <script src='https://example.com/external.js?script_event_log=defer-with-before-inline%3A+script' id='defer-with-before-inline-js' defer='defer' data-wp-strategy='defer'></script>
     953</script>
     954<script src='https://example.com/external.js?script_event_log=defer-with-before-inline%3A+script' id='defer-with-before-inline-js' defer data-wp-strategy='defer'></script>
    1056955HTML
    1057956                ,
     
    1067966<script src='https://example.com/external.js?script_event_log=defer-with-after-inline%3A+script' id='defer-with-after-inline-js' data-wp-strategy='defer'></script>
    1068967<script id="defer-with-after-inline-js-after">
    1069 /* <![CDATA[ */
    1070968scriptEventLog.push( "defer-with-after-inline: after inline" )
    1071969//# sourceURL=defer-with-after-inline-js-after
    1072 /* ]]> */
    1073970</script>
    1074971HTML
     
    1086983                },
    1087984                'expected_markup' => <<<HTML
    1088 <script src='http://$wp_tests_domain/wp-includes/js/jquery/jquery.js' id='jquery-core-js' defer='defer' data-wp-strategy='defer'></script>
    1089 <script src='http://$wp_tests_domain/wp-includes/js/jquery/jquery-migrate.js' id='jquery-migrate-js' defer='defer' data-wp-strategy='defer'></script>
    1090 <script src='https://example.com/theme-functions.js' id='theme-functions-js' defer='defer' data-wp-strategy='defer'></script>
     985<script src='http://$wp_tests_domain/wp-includes/js/jquery/jquery.js' id='jquery-core-js' defer data-wp-strategy='defer'></script>
     986<script src='http://$wp_tests_domain/wp-includes/js/jquery/jquery-migrate.js' id='jquery-migrate-js' defer data-wp-strategy='defer'></script>
     987<script src='https://example.com/theme-functions.js' id='theme-functions-js' defer data-wp-strategy='defer'></script>
    1091988HTML
    1092989                ,
     
    11151012<script src='https://example.com/external.js?script_event_log=outer-bundle-leaf-member%3A+script' id='outer-bundle-leaf-member-js'></script>
    11161013<script id="defer-dependent-of-nested-aliases-js-before">
    1117 /* <![CDATA[ */
    11181014scriptEventLog.push( "defer-dependent-of-nested-aliases: before inline" )
    11191015//# sourceURL=defer-dependent-of-nested-aliases-js-before
    1120 /* ]]> */
    11211016</script>
    11221017<script src='https://example.com/external.js?script_event_log=defer-dependent-of-nested-aliases%3A+script' id='defer-dependent-of-nested-aliases-js' data-wp-strategy='defer'></script>
    11231018<script id="defer-dependent-of-nested-aliases-js-after">
    1124 /* <![CDATA[ */
    11251019scriptEventLog.push( "defer-dependent-of-nested-aliases: after inline" )
    11261020//# sourceURL=defer-dependent-of-nested-aliases-js-after
    1127 /* ]]> */
    11281021</script>
    11291022HTML
     
    11441037                },
    11451038                'expected_markup' => <<<HTML
    1146 <script src='https://example.com/external.js?script_event_log=async1%3A+script' id='async1-js' defer='defer' data-wp-strategy='async'></script>
    1147 <script src='https://example.com/external.js?script_event_log=async2%3A+script' id='async2-js' defer='defer' data-wp-strategy='async'></script>
    1148 <script src='https://example.com/external.js?script_event_log=defer-dependent-of-async-aliases%3A+script' id='defer-dependent-of-async-aliases-js' defer='defer' data-wp-strategy='defer'></script>
     1039<script src='https://example.com/external.js?script_event_log=async1%3A+script' id='async1-js' defer data-wp-strategy='async'></script>
     1040<script src='https://example.com/external.js?script_event_log=async2%3A+script' id='async2-js' defer data-wp-strategy='async'></script>
     1041<script src='https://example.com/external.js?script_event_log=defer-dependent-of-async-aliases%3A+script' id='defer-dependent-of-async-aliases-js' defer data-wp-strategy='defer'></script>
    11491042HTML
    11501043                ,
     
    11821075     */
    11831076    public function test_loading_strategy_with_defer_having_no_dependents_nor_dependencies() {
    1184         $this->add_html5_script_theme_support();
    11851077        wp_enqueue_script( 'main-script-d1', 'http://example.com/main-script-d1.js', array(), null, array( 'strategy' => 'defer' ) );
    11861078        $output   = get_echo( 'wp_print_scripts' );
     
    11991091     */
    12001092    public function test_loading_strategy_with_defer_dependent_and_varied_dependencies() {
    1201         $this->add_html5_script_theme_support();
    12021093        wp_enqueue_script( 'dependency-script-d2-1', 'http://example.com/dependency-script-d2-1.js', array(), null, array( 'strategy' => 'defer' ) );
    12031094        wp_enqueue_script( 'dependency-script-d2-2', 'http://example.com/dependency-script-d2-2.js', array(), null );
     
    12191110     */
    12201111    public function test_loading_strategy_with_all_defer_dependencies() {
    1221         $this->add_html5_script_theme_support();
    12221112        wp_enqueue_script( 'main-script-d3', 'http://example.com/main-script-d3.js', array(), null, array( 'strategy' => 'defer' ) );
    12231113        wp_enqueue_script( 'dependent-script-d3-1', 'http://example.com/dependent-script-d3-1.js', array( 'main-script-d3' ), null, array( 'strategy' => 'defer' ) );
     
    12771167        // Note: All of these scripts have fetchpriority=high because the leaf dependent script has that fetch priority.
    12781168        $output    = get_echo( 'wp_print_scripts' );
    1279         $expected  = "<script src='/main-script-d4.js'        id='main-script-d4-js'        defer='defer' data-wp-strategy='defer' fetchpriority='high' data-wp-fetchpriority='auto'></script>\n";
    1280         $expected .= "<script src='/dependent-script-d4-1.js' id='dependent-script-d4-1-js' defer='defer' data-wp-strategy='defer' fetchpriority='high' data-wp-fetchpriority='auto'></script>\n";
    1281         $expected .= "<script src='/dependent-script-d4-2.js' id='dependent-script-d4-2-js' defer='defer' data-wp-strategy='async' fetchpriority='high' data-wp-fetchpriority='low'></script>\n";
    1282         $expected .= "<script src='/dependent-script-d4-3.js' id='dependent-script-d4-3-js' defer='defer' data-wp-strategy='defer' fetchpriority='high'></script>\n";
     1169        $expected  = "<script src='/main-script-d4.js'        id='main-script-d4-js'        defer data-wp-strategy='defer' fetchpriority='high' data-wp-fetchpriority='auto'></script>\n";
     1170        $expected .= "<script src='/dependent-script-d4-1.js' id='dependent-script-d4-1-js' defer data-wp-strategy='defer' fetchpriority='high' data-wp-fetchpriority='auto'></script>\n";
     1171        $expected .= "<script src='/dependent-script-d4-2.js' id='dependent-script-d4-2-js' defer data-wp-strategy='async' fetchpriority='high' data-wp-fetchpriority='low'></script>\n";
     1172        $expected .= "<script src='/dependent-script-d4-3.js' id='dependent-script-d4-3-js' defer data-wp-strategy='defer' fetchpriority='high'></script>\n";
    12831173
    12841174        $this->assertEqualHTML( $expected, $output, '<body>', 'Scripts registered as defer but that have dependents that are async are expected to have said dependents deferred.' );
     
    15301420        $actual = $this->normalize_markup_for_snapshot( get_echo( array( $wp_scripts, 'print_scripts' ) ) );
    15311421        $this->assertEqualHTML(
    1532             '<script src="/wp-includes/js/comment-reply.js" id="comment-reply-js" async="async" data-wp-strategy="async" fetchpriority="low"></script>',
     1422            '<script src="/wp-includes/js/comment-reply.js" id="comment-reply-js" async data-wp-strategy="async" fetchpriority="low"></script>',
    15331423            $actual,
    15341424            '<body>',
     
    15671457        $this->assertEqualHTML(
    15681458            sprintf(
    1569                 '<script src="%s" id="comment-reply-js" async="async" data-wp-strategy="async" fetchpriority="low"></script>',
     1459                '<script src="%s" id="comment-reply-js" async data-wp-strategy="async" fetchpriority="low"></script>',
    15701460                includes_url( 'js/comment-reply.js' )
    15711461            ),
     
    19171807
    19181808        $expected  = "<script src='/wp-admin/load-scripts.php?c=0&amp;load%5Bchunk_0%5D=one-concat-dep,two-concat-dep,three-concat-dep&amp;ver={$wp_version}'></script>\n";
    1919         $expected .= "<script src='/main-script.js' id='main-defer-script-js' defer='defer' data-wp-strategy='defer'></script>\n";
     1809        $expected .= "<script src='/main-script.js' id='main-defer-script-js' defer data-wp-strategy='defer'></script>\n";
    19201810
    19211811        $this->assertEqualHTML( $expected, $print_scripts, '<body>', 'Scripts are being incorrectly concatenated when a main script is registered with a "defer" loading strategy. Deferred scripts should not be part of the script concat loading query.' );
     
    19481838
    19491839        $expected  = "<script src='/wp-admin/load-scripts.php?c=0&amp;load%5Bchunk_0%5D=one-concat-dep-1,two-concat-dep-1,three-concat-dep-1&amp;ver={$wp_version}'></script>\n";
    1950         $expected .= "<script src='/main-script.js' id='main-async-script-1-js' async='async' data-wp-strategy='async'></script>\n";
     1840        $expected .= "<script src='/main-script.js' id='main-async-script-1-js' async data-wp-strategy='async'></script>\n";
    19511841
    19521842        $this->assertEqualHTML( $expected, $print_scripts, '<body>', 'Scripts are being incorrectly concatenated when a main script is registered with an "async" loading strategy. Async scripts should not be part of the script concat loading query.' );
     
    19831873
    19841874        $expected  = "<script src='/wp-admin/load-scripts.php?c=0&amp;load%5Bchunk_0%5D=one-concat-dep-2,two-concat-dep-2,three-concat-dep-2,four-concat-dep-2,five-concat-dep-2,six-concat-dep-2&amp;ver={$wp_version}'></script>\n";
    1985         $expected .= "<script src='/main-script.js' id='deferred-script-2-js' defer='defer' data-wp-strategy='defer'></script>\n";
     1875        $expected .= "<script src='/main-script.js' id='deferred-script-2-js' defer data-wp-strategy='defer'></script>\n";
    19861876
    19871877        $this->assertEqualHTML( $expected, $print_scripts, '<body>', 'Scripts are being incorrectly concatenated when a main script is registered as deferred after other blocking scripts are registered. Deferred scripts should not be part of the script concat loader query string. ' );
     
    19931883    public function test_wp_enqueue_script_with_html5_support_does_not_contain_type_attribute() {
    19941884        global $wp_version;
    1995 
    1996         $this->add_html5_script_theme_support();
    19971885
    19981886        $GLOBALS['wp_scripts']                  = new WP_Scripts();
     
    20811969        wp_enqueue_script( 'test-only-data', 'example.com', array(), null );
    20821970        wp_script_add_data( 'test-only-data', 'data', 'testing' );
    2083         $expected  = "<script id='test-only-data-js-extra'>\n/* <![CDATA[ */\ntesting\n//# sourceURL=test-only-data-js-extra\n/* ]]> */\n</script>\n";
     1971        $expected  = "<script id='test-only-data-js-extra'>\ntesting\n//# sourceURL=test-only-data-js-extra\n</script>\n";
    20841972        $expected .= "<script src='http://example.com' id='test-only-data-js'></script>\n";
    20851973
     
    23192207        $expected  = <<<HTML
    23202208<script id='test-example-js-before'>
    2321 /* <![CDATA[ */
    23222209console.log("before");
    23232210//# sourceURL=test-example-js-before
    2324 /* ]]> */
    23252211</script>
    23262212HTML;
     
    23402226        $expected .= <<<HTML
    23412227<script id='test-example-js-after'>
    2342 /* <![CDATA[ */
    23432228console.log("after");
    23442229//# sourceURL=test-example-js-after
    2345 /* ]]> */
    23462230</script>
    23472231HTML;
     
    23582242        wp_add_inline_script( 'test-example', 'console.log("after");' );
    23592243
    2360         $expected  = "<script id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n/* ]]> */\n</script>\n";
     2244        $expected  = "<script id='test-example-js-before'>\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n</script>\n";
    23612245        $expected .= "<script src='http://example.com' id='test-example-js'></script>\n";
    2362         $expected .= "<script id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n//# sourceURL=test-example-js-after\n/* ]]> */\n</script>\n";
     2246        $expected .= "<script id='test-example-js-after'>\nconsole.log(\"after\");\n//# sourceURL=test-example-js-after\n</script>\n";
    23632247
    23642248        $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
     
    23732257        wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
    23742258
    2375         $expected = "<script id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n/* ]]> */\n</script>\n";
     2259        $expected = "<script id='test-example-js-before'>\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n</script>\n";
    23762260
    23772261        $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
     
    23862270        wp_add_inline_script( 'test-example', 'console.log("after");' );
    23872271
    2388         $expected = "<script id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n//# sourceURL=test-example-js-after\n/* ]]> */\n</script>\n";
     2272        $expected = "<script id='test-example-js-after'>\nconsole.log(\"after\");\n//# sourceURL=test-example-js-after\n</script>\n";
    23892273
    23902274        $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
     
    24002284        wp_add_inline_script( 'test-example', 'console.log("after");' );
    24012285
    2402         $expected  = "<script id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n/* ]]> */\n</script>\n";
    2403         $expected .= "<script id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n//# sourceURL=test-example-js-after\n/* ]]> */\n</script>\n";
     2286        $expected  = "<script id='test-example-js-before'>\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n</script>\n";
     2287        $expected .= "<script id='test-example-js-after'>\nconsole.log(\"after\");\n//# sourceURL=test-example-js-after\n</script>\n";
    24042288
    24052289        $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
     
    24162300        wp_add_inline_script( 'test-example', 'console.log("after");' );
    24172301
    2418         $expected  = "<script id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n/* ]]> */\n</script>\n";
     2302        $expected  = "<script id='test-example-js-before'>\nconsole.log(\"before\");\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n</script>\n";
    24192303        $expected .= "<script src='http://example.com' id='test-example-js'></script>\n";
    2420         $expected .= "<script id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\nconsole.log(\"after\");\n//# sourceURL=test-example-js-after\n/* ]]> */\n</script>\n";
     2304        $expected .= "<script id='test-example-js-after'>\nconsole.log(\"after\");\nconsole.log(\"after\");\n//# sourceURL=test-example-js-after\n</script>\n";
    24212305
    24222306        $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
     
    24322316        wp_add_inline_script( 'test-example', 'console.log("after");' );
    24332317
    2434         $expected  = "<script id='test-example-js-extra'>\n/* <![CDATA[ */\nvar testExample = {\"foo\":\"bar\"};\n//# sourceURL=test-example-js-extra\n/* ]]> */\n</script>\n";
    2435         $expected .= "<script id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n/* ]]> */\n</script>\n";
     2318        $expected  = "<script id='test-example-js-extra'>\nvar testExample = {\"foo\":\"bar\"};\n//# sourceURL=test-example-js-extra\n</script>\n";
     2319        $expected .= "<script id='test-example-js-before'>\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n</script>\n";
    24362320        $expected .= "<script src='http://example.com' id='test-example-js'></script>\n";
    2437         $expected .= "<script id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n//# sourceURL=test-example-js-after\n/* ]]> */\n</script>\n";
     2321        $expected .= "<script id='test-example-js-after'>\nconsole.log(\"after\");\n//# sourceURL=test-example-js-after\n</script>\n";
    24382322
    24392323        $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) );
     
    24562340        wp_add_inline_script( 'two', 'console.log("before two");', 'before' );
    24572341
    2458         $expected  = "<script id='one-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before one\");\n//# sourceURL=one-js-before\n/* ]]> */\n</script>\n";
     2342        $expected  = "<script id='one-js-before'>\nconsole.log(\"before one\");\n//# sourceURL=one-js-before\n</script>\n";
    24592343        $expected .= "<script src='{$this->default_scripts_dir}one.js?ver={$wp_version}' id='one-js'></script>\n";
    2460         $expected .= "<script id='two-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before two\");\n//# sourceURL=two-js-before\n/* ]]> */\n</script>\n";
     2344        $expected .= "<script id='two-js-before'>\nconsole.log(\"before two\");\n//# sourceURL=two-js-before\n</script>\n";
    24612345        $expected .= "<script src='{$this->default_scripts_dir}two.js?ver={$wp_version}' id='two-js'></script>\n";
    24622346        $expected .= "<script src='{$this->default_scripts_dir}three.js?ver={$wp_version}' id='three-js'></script>\n";
     
    24802364        wp_add_inline_script( 'one', 'console.log("before one");', 'before' );
    24812365
    2482         $expected  = "<script id='one-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before one\");\n//# sourceURL=one-js-before\n/* ]]> */\n</script>\n";
     2366        $expected  = "<script id='one-js-before'>\nconsole.log(\"before one\");\n//# sourceURL=one-js-before\n</script>\n";
    24832367        $expected .= "<script src='{$this->default_scripts_dir}one.js?ver={$wp_version}' id='one-js'></script>\n";
    24842368        $expected .= "<script src='{$this->default_scripts_dir}two.js?ver={$wp_version}' id='two-js'></script>\n";
     
    25072391        $expected  = "<script src='/wp-admin/load-scripts.php?c=0&amp;load%5Bchunk_0%5D=one&amp;ver={$wp_version}'></script>\n";
    25082392        $expected .= "<script src='{$this->default_scripts_dir}two.js?ver={$wp_version}' id='two-js'></script>\n";
    2509         $expected .= "<script id='two-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after two\");\n//# sourceURL=two-js-after\n/* ]]> */\n</script>\n";
     2393        $expected .= "<script id='two-js-after'>\nconsole.log(\"after two\");\n//# sourceURL=two-js-after\n</script>\n";
    25102394        $expected .= "<script src='{$this->default_scripts_dir}three.js?ver={$wp_version}' id='three-js'></script>\n";
    2511         $expected .= "<script id='three-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after three\");\n//# sourceURL=three-js-after\n/* ]]> */\n</script>\n";
     2395        $expected .= "<script id='three-js-after'>\nconsole.log(\"after three\");\n//# sourceURL=three-js-after\n</script>\n";
    25122396        $expected .= "<script src='{$this->default_scripts_dir}four.js?ver={$wp_version}' id='four-js'></script>\n";
    25132397
     
    25552439        $expected  = "<script src='/wp-admin/load-scripts.php?c=0&amp;load%5Bchunk_0%5D=jquery-core,jquery-migrate&amp;ver={$wp_version}'></script>\n";
    25562440        $expected .= "<script src='http://example.com' id='test-example-js'></script>\n";
    2557         $expected .= "<script id='test-example-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n//# sourceURL=test-example-js-after\n/* ]]> */\n</script>\n";
     2441        $expected .= "<script id='test-example-js-after'>\nconsole.log(\"after\");\n//# sourceURL=test-example-js-after\n</script>\n";
    25582442
    25592443        wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
     
    26032487
    26042488        $expected  = "<script src='/wp-admin/load-scripts.php?c=0&amp;load%5Bchunk_0%5D=jquery-core,jquery-migrate&amp;ver={$wp_version}'></script>\n";
    2605         $expected .= "<script id='test-example-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n/* ]]> */\n</script>\n";
     2489        $expected .= "<script id='test-example-js-before'>\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n</script>\n";
    26062490        $expected .= "<script src='http://example.com' id='test-example-js'></script>\n";
    26072491
     
    26292513        $expected  = "<script src='/wp-admin/load-scripts.php?c=0&amp;load%5Bchunk_0%5D=jquery-core,jquery-migrate,wp-dom-ready,wp-hooks&amp;ver={$wp_version}'></script>\n";
    26302514        $expected .= "<script id='test-example-js-before'>\n";
    2631         $expected .= "/* <![CDATA[ */\nconsole.log(\"before\");\n//# sourceURL=test-example-js-before\n/* ]]> */\n";
     2515        $expected .= "console.log(\"before\");\n//# sourceURL=test-example-js-before\n";
    26322516        $expected .= "</script>\n";
    26332517        $expected .= "<script src='http://example.com' id='test-example-js'></script>\n";
    26342518        $expected .= "<script src='/wp-includes/js/dist/i18n.min.js' id='wp-i18n-js'></script>\n";
    26352519        $expected .= "<script id='wp-i18n-js-after'>\n";
    2636         $expected .= "/* <![CDATA[ */\n";
    26372520        $expected .= "wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );\n";
    26382521        $expected .= "//# sourceURL=wp-i18n-js-after\n";
    2639         $expected .= "/* ]]> */\n";
    26402522        $expected .= "</script>\n";
    26412523        $expected .= "<script src='/wp-includes/js/dist/a11y.min.js' id='wp-a11y-js'></script>\n";
    26422524        $expected .= "<script src='http://example2.com' id='test-example2-js'></script>\n";
    2643         $expected .= "<script id='test-example2-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after\");\n//# sourceURL=test-example2-js-after\n/* ]]> */\n</script>\n";
     2525        $expected .= "<script id='test-example2-js-after'>\nconsole.log(\"after\");\n//# sourceURL=test-example2-js-after\n</script>\n";
    26442526        wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null );
    26452527        wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
     
    26962578
    26972579        $expected  = "<script id='customize-dependency-js-after'>\n";
    2698         $expected .= "/* <![CDATA[ */\n";
    26992580        $expected .= "tryCustomizeDependency()\n";
    27002581        $expected .= "//# sourceURL=customize-dependency-js-after\n";
    2701         $expected .= "/* ]]> */\n";
    27022582        $expected .= "</script>\n";
    27032583        $this->assertEqualHTMLScriptTagById( $expected, $print_scripts );
     
    27202600
    27212601        $expected  = "<script src='/wp-includes/js/script.js?ver={$wp_version}' id='one-js'></script>\n";
    2722         $expected .= "<script id='one-js-after'>\n/* <![CDATA[ */\nconsole.log(\"after one\");\n//# sourceURL=one-js-after\n/* ]]> */\n</script>\n";
     2602        $expected .= "<script id='one-js-after'>\nconsole.log(\"after one\");\n//# sourceURL=one-js-after\n</script>\n";
    27232603        $expected .= "<script src='/wp-includes/js/script2.js?ver={$wp_version}' id='two-js'></script>\n";
    27242604        $expected .= "<script src='/wp-includes/js/script3.js?ver={$wp_version}' id='three-js'></script>\n";
     
    27442624
    27452625        $expected  = "<script src='/wp-admin/load-scripts.php?c=0&amp;load%5Bchunk_0%5D=one,two&amp;ver={$wp_version}'></script>\n";
    2746         $expected .= "<script id='three-js-before'>\n/* <![CDATA[ */\nconsole.log(\"before three\");\n//# sourceURL=three-js-before\n/* ]]> */\n</script>\n";
     2626        $expected .= "<script id='three-js-before'>\nconsole.log(\"before three\");\n//# sourceURL=three-js-before\n</script>\n";
    27472627        $expected .= "<script src='/wp-includes/js/script3.js?ver={$wp_version}' id='three-js'></script>\n";
    27482628        $expected .= "<script src='/wp-includes/js/script4.js?ver={$wp_version}' id='four-js'></script>\n";
     
    27652645                'delayed'        => false,
    27662646                'expected_data'  => "/*before foo 1*/\n//# sourceURL=foo-js-before",
    2767                 'expected_tag'   => "<script id='foo-js-before'>\n/* <![CDATA[ */\n/*before foo 1*/\n//# sourceURL=foo-js-before\n/* ]]> */\n</script>\n",
     2647                'expected_tag'   => "<script id='foo-js-before'>\n/*before foo 1*/\n//# sourceURL=foo-js-before\n</script>\n",
    27682648            ),
    27692649            'after-blocking'  => array(
     
    27752655                'delayed'        => false,
    27762656                'expected_data'  => "/*after foo 1*/\n/*after foo 2*/\n//# sourceURL=foo-js-after",
    2777                 'expected_tag'   => "<script id='foo-js-after'>\n/* <![CDATA[ */\n/*after foo 1*/\n/*after foo 2*/\n//# sourceURL=foo-js-after\n/* ]]> */\n</script>\n",
     2657                'expected_tag'   => "<script id='foo-js-after'>\n/*after foo 1*/\n/*after foo 2*/\n//# sourceURL=foo-js-after\n</script>\n",
    27782658            ),
    27792659            'before-delayed'  => array(
     
    27842664                'delayed'        => true,
    27852665                'expected_data'  => "/*before foo 1*/\n//# sourceURL=foo-js-before",
    2786                 'expected_tag'   => "<script id='foo-js-before'>\n/* <![CDATA[ */\n/*before foo 1*/\n//# sourceURL=foo-js-before\n/* ]]> */\n</script>\n",
     2666                'expected_tag'   => "<script id='foo-js-before'>\n/*before foo 1*/\n//# sourceURL=foo-js-before\n</script>\n",
    27872667            ),
    27882668            'after-delayed'   => array(
     
    27942674                'delayed'        => true,
    27952675                'expected_data'  => "/*after foo 1*/\n/*after foo 2*/\n//# sourceURL=foo-js-after",
    2796                 'expected_tag'   => "<script id='foo-js-after'>\n/* <![CDATA[ */\n/*after foo 1*/\n/*after foo 2*/\n//# sourceURL=foo-js-after\n/* ]]> */\n</script>\n",
     2676                'expected_tag'   => "<script id='foo-js-after'>\n/*after foo 1*/\n/*after foo 2*/\n//# sourceURL=foo-js-after\n</script>\n",
    27972677            ),
    27982678        );
     
    35033383        wp_localize_script( 'test-example', 'testExample', $l10n_data );
    35043384
    3505         $expected  = "<script id='test-example-js-extra'>\n/* <![CDATA[ */\nvar testExample = {$expected};\n//# sourceURL=test-example-js-extra\n/* ]]> */\n</script>\n";
     3385        $expected  = "<script id='test-example-js-extra'>\nvar testExample = {$expected};\n//# sourceURL=test-example-js-extra\n</script>\n";
    35063386        $expected .= "<script src='http://example.com' id='test-example-js'></script>\n";
    35073387
     
    36043484
    36053485        $this->assertStringContainsString( $strategy, $actual );
    3606     }
    3607 
    3608     /**
    3609      * Adds html5 script theme support.
    3610      */
    3611     protected function add_html5_script_theme_support() {
    3612         add_theme_support( 'html5', array( 'script' ) );
    36133486    }
    36143487
     
    37633636                },
    37643637                'expected_header'    => '
    3765                     <script src="https://example.com/script-a.js" id="script-a-js" defer="defer" data-wp-strategy="defer"></script>
     3638                    <script src="https://example.com/script-a.js" id="script-a-js" defer data-wp-strategy="defer"></script>
    37663639                ',
    37673640                'expected_footer'    => '
    3768                     <script src="https://example.com/script-b.js" id="script-b-js" defer="defer" data-wp-strategy="defer"></script>
     3641                    <script src="https://example.com/script-b.js" id="script-b-js" defer data-wp-strategy="defer"></script>
    37693642                ',
    37703643                'expected_in_footer' => array(
     
    38133686                },
    38143687                'expected_header'    => '
    3815                     <script src="https://example.com/script-a.js" id="script-a-js" defer="defer" data-wp-strategy="defer"></script>
    3816                     <script src="https://example.com/script-b.js" id="script-b-js" defer="defer" data-wp-strategy="defer"></script>
     3688                    <script src="https://example.com/script-a.js" id="script-a-js" defer data-wp-strategy="defer"></script>
     3689                    <script src="https://example.com/script-b.js" id="script-b-js" defer data-wp-strategy="defer"></script>
    38173690                ',
    38183691                'expected_footer'    => '
    3819                     <script src="https://example.com/script-c.js" id="script-c-js" defer="defer" data-wp-strategy="defer"></script>
    3820                     <script src="https://example.com/script-d.js" id="script-d-js" defer="defer" data-wp-strategy="defer"></script>
     3692                    <script src="https://example.com/script-c.js" id="script-c-js" defer data-wp-strategy="defer"></script>
     3693                    <script src="https://example.com/script-d.js" id="script-d-js" defer data-wp-strategy="defer"></script>
    38213694                ',
    38223695                'expected_in_footer' => array(
     
    38613734                'expected_footer'    => '
    38623735                    <script src="https://example.com/script-a.js" id="script-a-js" data-wp-strategy="defer"></script>
    3863                     <script src="https://example.com/script-b.js" id="script-b-js" defer="defer" data-wp-strategy="defer"></script>
     3736                    <script src="https://example.com/script-b.js" id="script-b-js" defer data-wp-strategy="defer"></script>
    38643737                    <script src="https://example.com/script-c.js" id="script-c-js"></script>
    3865                     <script src="https://example.com/script-d.js" id="script-d-js" defer="defer" data-wp-strategy="defer"></script>
     3738                    <script src="https://example.com/script-d.js" id="script-d-js" defer data-wp-strategy="defer"></script>
    38663739                ',
    38673740                'expected_in_footer' => array(
     
    39083781                'expected_header'    => '
    39093782                    <script src="https://example.com/script-a.js" id="script-a-js" data-wp-strategy="defer"></script>
    3910                     <script src="https://example.com/script-b.js" id="script-b-js" defer="defer" data-wp-strategy="defer"></script>
     3783                    <script src="https://example.com/script-b.js" id="script-b-js" defer data-wp-strategy="defer"></script>
    39113784                ',
    39123785                'expected_footer'    => '
    39133786                    <script src="https://example.com/script-c.js" id="script-c-js"></script>
    3914                     <script src="https://example.com/script-d.js" id="script-d-js" defer="defer" data-wp-strategy="defer"></script>
     3787                    <script src="https://example.com/script-d.js" id="script-d-js" defer data-wp-strategy="defer"></script>
    39153788                ',
    39163789                'expected_in_footer' => array(
     
    40773950     */
    40783951    public function test_source_url_encoding() {
    4079         $this->add_html5_script_theme_support();
    4080 
    40813952        $handle = '# test/</script> #';
    40823953
     
    41113982    public function test_source_url_with_concat() {
    41123983        global $wp_scripts, $concatenate_scripts, $wp_version;
    4113         $this->add_html5_script_theme_support();
    41143984
    41153985        $concatenate_scripts = true;
     
    41283998        $expected = <<<HTML
    41293999<script>
    4130 /* <![CDATA[ */
    41314000var one = {"key":"val"};var two = {"key":"val"};
    41324001//# sourceURL=js-inline-concat-one%2Ctwo
    4133 /* ]]> */
    41344002</script>
    41354003<script src="/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=one,two&ver={$wp_version}"></script>
     
    41484016    public function test_print_translations_no_display_no_sourceurl() {
    41494017        global $wp_scripts;
    4150         $this->add_html5_script_theme_support();
    41514018
    41524019        wp_register_script( 'wp-i18n', '/wp-includes/js/dist/wp-i18n.js', array(), null );
  • trunk/tests/phpunit/tests/dependencies/wpInlineScriptTag.php

    r61411 r61415  
    3535
    3636    public function get_inline_script_tag_type_set() {
    37         add_theme_support( 'html5', array( 'script' ) );
    38 
    39         $this->assertSame(
    40             '<script type="application/javascript" nomodule>' . "\n{$this->event_handler}\n</script>\n",
    41             wp_get_inline_script_tag(
    42                 $this->event_handler,
    43                 array(
    44                     'type'     => 'application/javascript',
    45                     'async'    => false,
    46                     'nomodule' => true,
    47                 )
    48             )
    49         );
    50 
    51         remove_theme_support( 'html5' );
    52 
    5337        $this->assertSame(
    5438            '<script type="application/javascript" nomodule>' . "\n{$this->event_handler}\n</script>\n",
     
    6549
    6650    public function test_get_inline_script_tag_type_not_set() {
    67         add_theme_support( 'html5', array( 'script' ) );
    68 
    6951        $this->assertSame(
    7052            "<script nomodule>\n{$this->event_handler}\n</script>\n",
     
    7759            )
    7860        );
    79 
    80         remove_theme_support( 'html5' );
    8161    }
    8262
    8363    public function test_get_inline_script_tag_unescaped_src() {
    84         add_theme_support( 'html5', array( 'script' ) );
    85 
    8664        $this->assertSame(
    8765            "<script>\n{$this->event_handler}\n</script>\n",
    8866            wp_get_inline_script_tag( $this->event_handler )
    8967        );
    90 
    91         remove_theme_support( 'html5' );
    9268    }
    9369
     
    10278            }
    10379        );
    104 
    105         add_theme_support( 'html5', array( 'script' ) );
    10680
    10781        $attributes = array(
     
    12094            )
    12195        );
    122 
    123         remove_theme_support( 'html5' );
    124 
    125         $this->assertSame(
    126             wp_get_inline_script_tag( $this->event_handler, $attributes ),
    127             get_echo(
    128                 'wp_print_inline_script_tag',
    129                 array(
    130                     $this->event_handler,
    131                     $attributes,
    132                 )
    133             )
    134         );
    135     }
    136 
    137     /**
    138      * Tests that CDATA wrapper duplication is handled.
    139      *
    140      * @ticket 58664
    141      */
    142     public function test_get_inline_script_tag_with_duplicated_cdata_wrappers() {
    143         remove_theme_support( 'html5' );
    144 
    145         $this->assertSame(
    146             "<script>\n/* <![CDATA[ */\n/* <![CDATA[ */ console.log( 'Hello World!' ); /* ]]]]><![CDATA[> */\n/* ]]> */\n</script>\n",
    147             wp_get_inline_script_tag( "/* <![CDATA[ */ console.log( 'Hello World!' ); /* ]]> */" )
    148         );
    149     }
    150 
    151     public function data_provider_to_test_cdata_wrapper_omitted_for_non_javascript_scripts() {
    152         return array(
    153             'no-type'     => array(
    154                 'type'           => null,
    155                 'data'           => 'alert("hello")',
    156                 'expected_cdata' => true,
    157             ),
    158             'js-type'     => array(
    159                 'type'           => 'text/javascript',
    160                 'data'           => 'alert("hello")',
    161                 'expected_cdata' => true,
    162             ),
    163             'js-alt-type' => array(
    164                 'type'           => 'application/javascript',
    165                 'data'           => 'alert("hello")',
    166                 'expected_cdata' => true,
    167             ),
    168             'module'      => array(
    169                 'type'           => 'module',
    170                 'data'           => 'alert("hello")',
    171                 'expected_cdata' => true,
    172             ),
    173             'importmap'   => array(
    174                 'type'           => 'importmap',
    175                 'data'           => '{"imports":{"bar":"http:\/\/localhost:10023\/bar.js?ver=6.5-alpha-57321"}}',
    176                 'expected_cdata' => false,
    177             ),
    178             'html'        => array(
    179                 'type'           => 'text/html',
    180                 'data'           => '<div>template code</div>',
    181                 'expected_cdata' => false,
    182             ),
    183             'json'        => array(
    184                 'type'           => 'application/json',
    185                 'data'           => '{}',
    186                 'expected_cdata' => false,
    187             ),
    188             'ld'          => array(
    189                 'type'           => 'application/ld+json',
    190                 'data'           => '{}',
    191                 'expected_cdata' => false,
    192             ),
    193             'specrules'   => array(
    194                 'type'           => 'speculationrules',
    195                 'data'           => '{}',
    196                 'expected_cdata' => false,
    197             ),
    198         );
    199     }
    200 
    201     /**
    202      * Tests that CDATA wrapper is not added for non-JavaScript scripts.
    203      *
    204      * @ticket 60320
    205      *
    206      * @dataProvider data_provider_to_test_cdata_wrapper_omitted_for_non_javascript_scripts
    207      */
    208     public function test_cdata_wrapper_omitted_for_non_javascript_scripts( $type, $data, $expected_cdata ) {
    209         remove_theme_support( 'html5' );
    210 
    211         $attrs = array();
    212         if ( $type ) {
    213             $attrs['type'] = $type;
    214         }
    215         $script = wp_get_inline_script_tag( $data, $attrs );
    216         $this->assertSame( $expected_cdata, str_contains( $script, '/* <![CDATA[ */' ) );
    217         $this->assertSame( $expected_cdata, str_contains( $script, '/* ]]> */' ) );
    218         $this->assertStringContainsString( $data, $script );
    21996    }
    22097}
  • trunk/tests/phpunit/tests/dependencies/wpSanitizeScriptAttributes.php

    r61395 r61415  
    1111
    1212    public function test_sanitize_script_attributes_type_set() {
    13         add_theme_support( 'html5', array( 'script' ) );
    14 
    1513        $this->assertSame(
    1614            ' type="application/javascript" src="https://DOMAIN.TLD/PATH/FILE.js" nomodule',
     
    2422            )
    2523        );
    26 
    27         remove_theme_support( 'html5' );
    28 
    29         $this->assertSame(
    30             ' src="https://DOMAIN.TLD/PATH/FILE.js" type="application/javascript" nomodule="nomodule"',
    31             wp_sanitize_script_attributes(
    32                 array(
    33                     'src'      => 'https://DOMAIN.TLD/PATH/FILE.js',
    34                     'type'     => 'application/javascript',
    35                     'async'    => false,
    36                     'nomodule' => true,
    37                 )
    38             )
    39         );
    4024    }
    4125
    4226    public function test_sanitize_script_attributes_type_not_set() {
    43         add_theme_support( 'html5', array( 'script' ) );
    44 
    4527        $this->assertSame(
    4628            ' src="https://DOMAIN.TLD/PATH/FILE.js" nomodule',
    47             wp_sanitize_script_attributes(
    48                 array(
    49                     'src'      => 'https://DOMAIN.TLD/PATH/FILE.js',
    50                     'async'    => false,
    51                     'nomodule' => true,
    52                 )
    53             )
    54         );
    55 
    56         remove_theme_support( 'html5' );
    57 
    58         $this->assertSame(
    59             ' src="https://DOMAIN.TLD/PATH/FILE.js" nomodule="nomodule"',
    6029            wp_sanitize_script_attributes(
    6130                array(
     
    7039
    7140    public function test_sanitize_script_attributes_no_attributes() {
    72         add_theme_support( 'html5', array( 'script' ) );
    73 
    7441        $this->assertSame(
    7542            '',
    7643            wp_sanitize_script_attributes( array() )
    7744        );
    78 
    79         remove_theme_support( 'html5' );
    8045    }
    8146
    8247    public function test_sanitize_script_attributes_relative_src() {
    83         add_theme_support( 'html5', array( 'script' ) );
    84 
    8548        $this->assertSame(
    8649            ' src="PATH/FILE.js" nomodule',
     
    9356            )
    9457        );
    95 
    96         remove_theme_support( 'html5' );
    9758    }
    9859
    9960
    10061    public function test_sanitize_script_attributes_only_false_boolean_attributes() {
    101         add_theme_support( 'html5', array( 'script' ) );
    102 
    10362        $this->assertSame(
    10463            '',
     
    11069            )
    11170        );
    112 
    113         remove_theme_support( 'html5' );
    11471    }
    11572
    11673    public function test_sanitize_script_attributes_only_true_boolean_attributes() {
    117         add_theme_support( 'html5', array( 'script' ) );
    118 
    11974        $this->assertSame(
    12075            ' async nomodule',
     
    12681            )
    12782        );
    128 
    129         remove_theme_support( 'html5' );
    13083    }
    13184}
Note: See TracChangeset for help on using the changeset viewer.