Make WordPress Core

Changeset 61415


Ignore:
Timestamp:
12/29/2025 11:32:17 AM (10 months 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.