Changeset 61415
- Timestamp:
- 12/29/2025 11:32:17 AM (6 weeks ago)
- Location:
- trunk
- Files:
-
- 4 edited
-
src/wp-includes/script-loader.php (modified) (4 diffs)
-
tests/phpunit/tests/dependencies/scripts.php (modified) (64 diffs)
-
tests/phpunit/tests/dependencies/wpInlineScriptTag.php (modified) (5 diffs)
-
tests/phpunit/tests/dependencies/wpSanitizeScriptAttributes.php (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/script-loader.php
r61414 r61415 2211 2211 if ( ! empty( $wp_scripts->print_code ) ) { 2212 2212 echo "\n<script>\n"; 2213 echo "/* <![CDATA[ */\n"; // Not needed in HTML 5.2214 2213 echo $wp_scripts->print_code; 2215 2214 echo sprintf( "\n//# sourceURL=%s\n", rawurlencode( 'js-inline-concat-' . $concat ) ); 2216 echo "/* ]]> */\n";2217 2215 echo "</script>\n"; 2218 2216 } … … 2872 2870 */ 2873 2871 function wp_sanitize_script_attributes( $attributes ) { 2874 $html5_script_support = is_admin() || current_theme_supports( 'html5', 'script' ); 2875 $attributes_string = ''; 2872 $attributes_string = ''; 2876 2873 2877 2874 /* … … 2882 2879 if ( is_bool( $attribute_value ) ) { 2883 2880 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 ); 2885 2882 } 2886 2883 } else { … … 2945 2942 */ 2946 2943 function wp_get_inline_script_tag( $data, $attributes = array() ) { 2947 /*2948 * XHTML extracts the contents of the SCRIPT element and then the XML parser2949 * decodes character references and other syntax elements. This can lead to2950 * misinterpretation of the script contents or invalid XHTML documents.2951 *2952 * Wrapping the contents in a CDATA section instructs the XML parser not to2953 * transform the contents of the SCRIPT element before passing them to the2954 * JavaScript engine.2955 *2956 * Example:2957 *2958 * <script>console.log('…');</script>2959 *2960 * In an HTML document this would print "…" 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.82970 */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 break2984 * out of any wrapping CDATA section added here, so to start, it's2985 * necessary to escape that sequence which requires splitting the2986 * content into two CDATA sections wherever it's found.2987 *2988 * Note: it's only necessary to escape the closing `]]>` because2989 * 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 2997 2944 $data = "\n" . trim( $data, "\n\r " ) . "\n"; 2998 2945 -
trunk/tests/phpunit/tests/dependencies/scripts.php
r61411 r61415 49 49 $this->wp_scripts_print_translations_output = <<<JS 50 50 <script id='__HANDLE__-js-translations'> 51 /* <![CDATA[ */52 51 ( function( domain, translations ) { 53 52 var localeData = translations.locale_data[ domain ] || translations.locale_data.messages; … … 56 55 } )( "__DOMAIN__", __JSON_TRANSLATIONS__ ); 57 56 //# sourceURL=__HANDLE__-js-translations 58 /* ]]> */59 57 </script> 60 58 JS; … … 239 237 ) 240 238 ); 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"; 244 242 $expected .= wp_get_inline_script_tag( 245 243 "console.log('before last');\n//# sourceURL=ms-i1-1-js-before", … … 248 246 ) 249 247 ); 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"; 251 249 252 250 $this->assertEqualHTML( $expected, $output, '<body>', 'Inline scripts in the "before" position, that are attached to a deferred main script, are failing to print/execute.' ); … … 267 265 wp_enqueue_script( 'main-script-a1', '/main-script-a1.js', array(), null, array( 'strategy' => 'async' ) ); 268 266 $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"; 270 268 $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.' ); 271 269 } … … 290 288 $output = get_echo( 'wp_print_scripts' ); 291 289 $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>"; 293 291 $this->assertEqualHTML( $expected, $output, '<body>', 'Dependents of a blocking dependency are free to have any strategy.' ); 294 292 } … … 332 330 */ 333 331 public function test_delayed_dependent_with_blocking_dependency_not_enqueued( $strategy ) { 334 $this->add_html5_script_theme_support();335 332 wp_enqueue_script( 'main-script-a4', '/main-script-a4.js', array(), null, compact( 'strategy' ) ); 336 333 // This dependent is registered but not enqueued, so it should not factor into the eligible loading strategy. … … 564 561 'expected_markup' => <<<HTML 565 562 <script id="blocking-not-async-without-dependency-js-before"> 566 /* <![CDATA[ */567 563 scriptEventLog.push( "blocking-not-async-without-dependency: before inline" ) 568 564 //# sourceURL=blocking-not-async-without-dependency-js-before 569 /* ]]> */570 565 </script> 571 566 <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> 572 567 <script id="blocking-not-async-without-dependency-js-after"> 573 /* <![CDATA[ */574 568 scriptEventLog.push( "blocking-not-async-without-dependency: after inline" ) 575 569 //# sourceURL=blocking-not-async-without-dependency-js-after 576 /* ]]> */577 570 </script> 578 571 <script id="async-with-blocking-dependency-js-before"> 579 /* <![CDATA[ */580 572 scriptEventLog.push( "async-with-blocking-dependency: before inline" ) 581 573 //# sourceURL=async-with-blocking-dependency-js-before 582 /* ]]> */583 574 </script> 584 575 <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> 585 576 <script id="async-with-blocking-dependency-js-after"> 586 /* <![CDATA[ */587 577 scriptEventLog.push( "async-with-blocking-dependency: after inline" ) 588 578 //# sourceURL=async-with-blocking-dependency-js-after 589 /* ]]> */590 579 </script> 591 580 HTML … … 613 602 'expected_markup' => <<<HTML 614 603 <script id="async-no-dependency-js-before"> 615 /* <![CDATA[ */616 604 scriptEventLog.push( "async-no-dependency: before inline" ) 617 605 //# sourceURL=async-no-dependency-js-before 618 /* ]]> */619 606 </script> 620 607 <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> 621 608 <script id="async-no-dependency-js-after"> 622 /* <![CDATA[ */623 609 scriptEventLog.push( "async-no-dependency: after inline" ) 624 610 //# sourceURL=async-no-dependency-js-after 625 /* ]]> */626 611 </script> 627 612 <script id="async-one-async-dependency-js-before"> 628 /* <![CDATA[ */629 613 scriptEventLog.push( "async-one-async-dependency: before inline" ) 630 614 //# sourceURL=async-one-async-dependency-js-before 631 /* ]]> */632 615 </script> 633 616 <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> 634 617 <script id="async-one-async-dependency-js-after"> 635 /* <![CDATA[ */636 618 scriptEventLog.push( "async-one-async-dependency: after inline" ) 637 619 //# sourceURL=async-one-async-dependency-js-after 638 /* ]]> */639 620 </script> 640 621 <script id="async-two-async-dependencies-js-before"> 641 /* <![CDATA[ */642 622 scriptEventLog.push( "async-two-async-dependencies: before inline" ) 643 623 //# sourceURL=async-two-async-dependencies-js-before 644 /* ]]> */645 624 </script> 646 625 <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> 647 626 <script id="async-two-async-dependencies-js-after"> 648 /* <![CDATA[ */649 627 scriptEventLog.push( "async-two-async-dependencies: after inline" ) 650 628 //# sourceURL=async-two-async-dependencies-js-after 651 /* ]]> */652 629 </script> 653 630 HTML … … 667 644 'expected_markup' => <<<HTML 668 645 <script id="async-with-blocking-dependent-js-before"> 669 /* <![CDATA[ */670 646 scriptEventLog.push( "async-with-blocking-dependent: before inline" ) 671 647 //# sourceURL=async-with-blocking-dependent-js-before 672 /* ]]> */673 648 </script> 674 649 <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> 675 650 <script id="async-with-blocking-dependent-js-after"> 676 /* <![CDATA[ */677 651 scriptEventLog.push( "async-with-blocking-dependent: after inline" ) 678 652 //# sourceURL=async-with-blocking-dependent-js-after 679 /* ]]> */680 653 </script> 681 654 <script id="blocking-dependent-of-async-js-before"> 682 /* <![CDATA[ */683 655 scriptEventLog.push( "blocking-dependent-of-async: before inline" ) 684 656 //# sourceURL=blocking-dependent-of-async-js-before 685 /* ]]> */686 657 </script> 687 658 <script src='https://example.com/external.js?script_event_log=blocking-dependent-of-async%3A+script' id='blocking-dependent-of-async-js'></script> 688 659 <script id="blocking-dependent-of-async-js-after"> 689 /* <![CDATA[ */690 660 scriptEventLog.push( "blocking-dependent-of-async: after inline" ) 691 661 //# sourceURL=blocking-dependent-of-async-js-after 692 /* ]]> */693 662 </script> 694 663 HTML … … 708 677 'expected_markup' => <<<HTML 709 678 <script id="async-with-defer-dependent-js-before"> 710 /* <![CDATA[ */711 679 scriptEventLog.push( "async-with-defer-dependent: before inline" ) 712 680 //# sourceURL=async-with-defer-dependent-js-before 713 /* ]]> */714 681 </script> 715 682 <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> 716 683 <script id="async-with-defer-dependent-js-after"> 717 /* <![CDATA[ */718 684 scriptEventLog.push( "async-with-defer-dependent: after inline" ) 719 685 //# sourceURL=async-with-defer-dependent-js-after 720 /* ]]> */721 686 </script> 722 687 <script id="defer-dependent-of-async-js-before"> 723 /* <![CDATA[ */724 688 scriptEventLog.push( "defer-dependent-of-async: before inline" ) 725 689 //# sourceURL=defer-dependent-of-async-js-before 726 /* ]]> */727 690 </script> 728 691 <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> 729 692 <script id="defer-dependent-of-async-js-after"> 730 /* <![CDATA[ */731 693 scriptEventLog.push( "defer-dependent-of-async: after inline" ) 732 694 //# sourceURL=defer-dependent-of-async-js-after 733 /* ]]> */734 695 </script> 735 696 HTML … … 752 713 'expected_markup' => <<<HTML 753 714 <script id="blocking-bundle-of-none-js-before"> 754 /* <![CDATA[ */755 715 scriptEventLog.push( "blocking-bundle-of-none: before inline" ) 756 716 //# sourceURL=blocking-bundle-of-none-js-before 757 /* ]]> */758 717 </script> 759 718 <script id="blocking-bundle-of-none-js-after"> 760 /* <![CDATA[ */761 719 scriptEventLog.push( "blocking-bundle-of-none: after inline" ) 762 720 //# sourceURL=blocking-bundle-of-none-js-after 763 /* ]]> */764 721 </script> 765 722 <script id="defer-dependent-of-blocking-bundle-of-none-js-before"> 766 /* <![CDATA[ */767 723 scriptEventLog.push( "defer-dependent-of-blocking-bundle-of-none: before inline" ) 768 724 //# sourceURL=defer-dependent-of-blocking-bundle-of-none-js-before 769 /* ]]> */770 725 </script> 771 726 <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> 772 727 <script id="defer-dependent-of-blocking-bundle-of-none-js-after"> 773 /* <![CDATA[ */774 728 scriptEventLog.push( "defer-dependent-of-blocking-bundle-of-none: after inline" ) 775 729 //# sourceURL=defer-dependent-of-blocking-bundle-of-none-js-after 776 /* ]]> */777 730 </script> 778 731 HTML … … 798 751 'expected_markup' => <<<HTML 799 752 <script id="blocking-bundle-member-one-js-before"> 800 /* <![CDATA[ */801 753 scriptEventLog.push( "blocking-bundle-member-one: before inline" ) 802 754 //# sourceURL=blocking-bundle-member-one-js-before 803 /* ]]> */804 755 </script> 805 756 <script src='https://example.com/external.js?script_event_log=blocking-bundle-member-one%3A+script' id='blocking-bundle-member-one-js'></script> 806 757 <script id="blocking-bundle-member-one-js-after"> 807 /* <![CDATA[ */808 758 scriptEventLog.push( "blocking-bundle-member-one: after inline" ) 809 759 //# sourceURL=blocking-bundle-member-one-js-after 810 /* ]]> */811 760 </script> 812 761 <script id="blocking-bundle-member-two-js-before"> 813 /* <![CDATA[ */814 762 scriptEventLog.push( "blocking-bundle-member-two: before inline" ) 815 763 //# sourceURL=blocking-bundle-member-two-js-before 816 /* ]]> */817 764 </script> 818 765 <script src='https://example.com/external.js?script_event_log=blocking-bundle-member-two%3A+script' id='blocking-bundle-member-two-js'></script> 819 766 <script id="blocking-bundle-member-two-js-after"> 820 /* <![CDATA[ */821 767 scriptEventLog.push( "blocking-bundle-member-two: after inline" ) 822 768 //# sourceURL=blocking-bundle-member-two-js-after 823 /* ]]> */824 769 </script> 825 770 <script id="defer-dependent-of-blocking-bundle-of-two-js-before"> 826 /* <![CDATA[ */827 771 scriptEventLog.push( "defer-dependent-of-blocking-bundle-of-two: before inline" ) 828 772 //# sourceURL=defer-dependent-of-blocking-bundle-of-two-js-before 829 /* ]]> */830 773 </script> 831 774 <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> 832 775 <script id="defer-dependent-of-blocking-bundle-of-two-js-after"> 833 /* <![CDATA[ */834 776 scriptEventLog.push( "defer-dependent-of-blocking-bundle-of-two: after inline" ) 835 777 //# sourceURL=defer-dependent-of-blocking-bundle-of-two-js-after 836 /* ]]> */837 778 </script> 838 779 HTML … … 857 798 'expected_markup' => <<<HTML 858 799 <script id="defer-bundle-of-none-js-before"> 859 /* <![CDATA[ */860 800 scriptEventLog.push( "defer-bundle-of-none: before inline" ) 861 801 //# sourceURL=defer-bundle-of-none-js-before 862 /* ]]> */863 802 </script> 864 803 <script id="defer-bundle-of-none-js-after"> 865 /* <![CDATA[ */866 804 scriptEventLog.push( "defer-bundle-of-none: after inline" ) 867 805 //# sourceURL=defer-bundle-of-none-js-after 868 /* ]]> */869 806 </script> 870 807 <script id="defer-dependent-of-defer-bundle-of-none-js-before"> 871 /* <![CDATA[ */872 808 scriptEventLog.push( "defer-dependent-of-defer-bundle-of-none: before inline" ) 873 809 //# sourceURL=defer-dependent-of-defer-bundle-of-none-js-before 874 /* ]]> */875 810 </script> 876 811 <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> 877 812 <script id="defer-dependent-of-defer-bundle-of-none-js-after"> 878 /* <![CDATA[ */879 813 scriptEventLog.push( "defer-dependent-of-defer-bundle-of-none: after inline" ) 880 814 //# sourceURL=defer-dependent-of-defer-bundle-of-none-js-after 881 /* ]]> */882 815 </script> 883 816 HTML … … 900 833 'expected_markup' => <<<HTML 901 834 <script id="blocking-dependency-with-defer-following-dependency-js-before"> 902 /* <![CDATA[ */903 835 scriptEventLog.push( "blocking-dependency-with-defer-following-dependency: before inline" ) 904 836 //# sourceURL=blocking-dependency-with-defer-following-dependency-js-before 905 /* ]]> */906 837 </script> 907 838 <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> 908 839 <script id="blocking-dependency-with-defer-following-dependency-js-after"> 909 /* <![CDATA[ */910 840 scriptEventLog.push( "blocking-dependency-with-defer-following-dependency: after inline" ) 911 841 //# sourceURL=blocking-dependency-with-defer-following-dependency-js-after 912 /* ]]> */913 842 </script> 914 843 <script id="defer-dependency-with-blocking-preceding-dependency-js-before"> 915 /* <![CDATA[ */916 844 scriptEventLog.push( "defer-dependency-with-blocking-preceding-dependency: before inline" ) 917 845 //# sourceURL=defer-dependency-with-blocking-preceding-dependency-js-before 918 /* ]]> */919 846 </script> 920 847 <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> 921 848 <script id="defer-dependency-with-blocking-preceding-dependency-js-after"> 922 /* <![CDATA[ */923 849 scriptEventLog.push( "defer-dependency-with-blocking-preceding-dependency: after inline" ) 924 850 //# sourceURL=defer-dependency-with-blocking-preceding-dependency-js-after 925 /* ]]> */926 851 </script> 927 852 <script id="defer-dependent-of-blocking-and-defer-dependencies-js-before"> 928 /* <![CDATA[ */929 853 scriptEventLog.push( "defer-dependent-of-blocking-and-defer-dependencies: before inline" ) 930 854 //# sourceURL=defer-dependent-of-blocking-and-defer-dependencies-js-before 931 /* ]]> */932 855 </script> 933 856 <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> 934 857 <script id="defer-dependent-of-blocking-and-defer-dependencies-js-after"> 935 /* <![CDATA[ */936 858 scriptEventLog.push( "defer-dependent-of-blocking-and-defer-dependencies: after inline" ) 937 859 //# sourceURL=defer-dependent-of-blocking-and-defer-dependencies-js-after 938 /* ]]> */939 860 </script> 940 861 HTML … … 957 878 'expected_markup' => <<<HTML 958 879 <script id="defer-dependency-with-blocking-following-dependency-js-before"> 959 /* <![CDATA[ */960 880 scriptEventLog.push( "defer-dependency-with-blocking-following-dependency: before inline" ) 961 881 //# sourceURL=defer-dependency-with-blocking-following-dependency-js-before 962 /* ]]> */963 882 </script> 964 883 <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> 965 884 <script id="defer-dependency-with-blocking-following-dependency-js-after"> 966 /* <![CDATA[ */967 885 scriptEventLog.push( "defer-dependency-with-blocking-following-dependency: after inline" ) 968 886 //# sourceURL=defer-dependency-with-blocking-following-dependency-js-after 969 /* ]]> */970 887 </script> 971 888 <script id="blocking-dependency-with-defer-preceding-dependency-js-before"> 972 /* <![CDATA[ */973 889 scriptEventLog.push( "blocking-dependency-with-defer-preceding-dependency: before inline" ) 974 890 //# sourceURL=blocking-dependency-with-defer-preceding-dependency-js-before 975 /* ]]> */976 891 </script> 977 892 <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> 978 893 <script id="blocking-dependency-with-defer-preceding-dependency-js-after"> 979 /* <![CDATA[ */980 894 scriptEventLog.push( "blocking-dependency-with-defer-preceding-dependency: after inline" ) 981 895 //# sourceURL=blocking-dependency-with-defer-preceding-dependency-js-after 982 /* ]]> */983 896 </script> 984 897 <script id="defer-dependent-of-defer-and-blocking-dependencies-js-before"> 985 /* <![CDATA[ */986 898 scriptEventLog.push( "defer-dependent-of-defer-and-blocking-dependencies: before inline" ) 987 899 //# sourceURL=defer-dependent-of-defer-and-blocking-dependencies-js-before 988 /* ]]> */989 900 </script> 990 901 <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> 991 902 <script id="defer-dependent-of-defer-and-blocking-dependencies-js-after"> 992 /* <![CDATA[ */993 903 scriptEventLog.push( "defer-dependent-of-defer-and-blocking-dependencies: after inline" ) 994 904 //# sourceURL=defer-dependent-of-defer-and-blocking-dependencies-js-after 995 /* ]]> */996 905 </script> 997 906 HTML … … 1011 920 'expected_markup' => <<<HTML 1012 921 <script id="defer-with-async-dependent-js-before"> 1013 /* <![CDATA[ */1014 922 scriptEventLog.push( "defer-with-async-dependent: before inline" ) 1015 923 //# sourceURL=defer-with-async-dependent-js-before 1016 /* ]]> */1017 924 </script> 1018 925 <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> 1019 926 <script id="defer-with-async-dependent-js-after"> 1020 /* <![CDATA[ */1021 927 scriptEventLog.push( "defer-with-async-dependent: after inline" ) 1022 928 //# sourceURL=defer-with-async-dependent-js-after 1023 /* ]]> */1024 929 </script> 1025 930 <script id="async-dependent-of-defer-js-before"> 1026 /* <![CDATA[ */1027 931 scriptEventLog.push( "async-dependent-of-defer: before inline" ) 1028 932 //# sourceURL=async-dependent-of-defer-js-before 1029 /* ]]> */1030 933 </script> 1031 934 <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> 1032 935 <script id="async-dependent-of-defer-js-after"> 1033 /* <![CDATA[ */1034 936 scriptEventLog.push( "async-dependent-of-defer: after inline" ) 1035 937 //# sourceURL=async-dependent-of-defer-js-after 1036 /* ]]> */1037 938 </script> 1038 939 HTML … … 1048 949 'expected_markup' => <<<HTML 1049 950 <script id="defer-with-before-inline-js-before"> 1050 /* <![CDATA[ */1051 951 scriptEventLog.push( "defer-with-before-inline: before inline" ) 1052 952 //# 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> 1056 955 HTML 1057 956 , … … 1067 966 <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> 1068 967 <script id="defer-with-after-inline-js-after"> 1069 /* <![CDATA[ */1070 968 scriptEventLog.push( "defer-with-after-inline: after inline" ) 1071 969 //# sourceURL=defer-with-after-inline-js-after 1072 /* ]]> */1073 970 </script> 1074 971 HTML … … 1086 983 }, 1087 984 '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> 1091 988 HTML 1092 989 , … … 1115 1012 <script src='https://example.com/external.js?script_event_log=outer-bundle-leaf-member%3A+script' id='outer-bundle-leaf-member-js'></script> 1116 1013 <script id="defer-dependent-of-nested-aliases-js-before"> 1117 /* <![CDATA[ */1118 1014 scriptEventLog.push( "defer-dependent-of-nested-aliases: before inline" ) 1119 1015 //# sourceURL=defer-dependent-of-nested-aliases-js-before 1120 /* ]]> */1121 1016 </script> 1122 1017 <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> 1123 1018 <script id="defer-dependent-of-nested-aliases-js-after"> 1124 /* <![CDATA[ */1125 1019 scriptEventLog.push( "defer-dependent-of-nested-aliases: after inline" ) 1126 1020 //# sourceURL=defer-dependent-of-nested-aliases-js-after 1127 /* ]]> */1128 1021 </script> 1129 1022 HTML … … 1144 1037 }, 1145 1038 '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> 1149 1042 HTML 1150 1043 , … … 1182 1075 */ 1183 1076 public function test_loading_strategy_with_defer_having_no_dependents_nor_dependencies() { 1184 $this->add_html5_script_theme_support();1185 1077 wp_enqueue_script( 'main-script-d1', 'http://example.com/main-script-d1.js', array(), null, array( 'strategy' => 'defer' ) ); 1186 1078 $output = get_echo( 'wp_print_scripts' ); … … 1199 1091 */ 1200 1092 public function test_loading_strategy_with_defer_dependent_and_varied_dependencies() { 1201 $this->add_html5_script_theme_support();1202 1093 wp_enqueue_script( 'dependency-script-d2-1', 'http://example.com/dependency-script-d2-1.js', array(), null, array( 'strategy' => 'defer' ) ); 1203 1094 wp_enqueue_script( 'dependency-script-d2-2', 'http://example.com/dependency-script-d2-2.js', array(), null ); … … 1219 1110 */ 1220 1111 public function test_loading_strategy_with_all_defer_dependencies() { 1221 $this->add_html5_script_theme_support();1222 1112 wp_enqueue_script( 'main-script-d3', 'http://example.com/main-script-d3.js', array(), null, array( 'strategy' => 'defer' ) ); 1223 1113 wp_enqueue_script( 'dependent-script-d3-1', 'http://example.com/dependent-script-d3-1.js', array( 'main-script-d3' ), null, array( 'strategy' => 'defer' ) ); … … 1277 1167 // Note: All of these scripts have fetchpriority=high because the leaf dependent script has that fetch priority. 1278 1168 $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"; 1283 1173 1284 1174 $this->assertEqualHTML( $expected, $output, '<body>', 'Scripts registered as defer but that have dependents that are async are expected to have said dependents deferred.' ); … … 1530 1420 $actual = $this->normalize_markup_for_snapshot( get_echo( array( $wp_scripts, 'print_scripts' ) ) ); 1531 1421 $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>', 1533 1423 $actual, 1534 1424 '<body>', … … 1567 1457 $this->assertEqualHTML( 1568 1458 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>', 1570 1460 includes_url( 'js/comment-reply.js' ) 1571 1461 ), … … 1917 1807 1918 1808 $expected = "<script src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=one-concat-dep,two-concat-dep,three-concat-dep&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"; 1920 1810 1921 1811 $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.' ); … … 1948 1838 1949 1839 $expected = "<script src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=one-concat-dep-1,two-concat-dep-1,three-concat-dep-1&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"; 1951 1841 1952 1842 $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.' ); … … 1983 1873 1984 1874 $expected = "<script src='/wp-admin/load-scripts.php?c=0&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&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"; 1986 1876 1987 1877 $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. ' ); … … 1993 1883 public function test_wp_enqueue_script_with_html5_support_does_not_contain_type_attribute() { 1994 1884 global $wp_version; 1995 1996 $this->add_html5_script_theme_support();1997 1885 1998 1886 $GLOBALS['wp_scripts'] = new WP_Scripts(); … … 2081 1969 wp_enqueue_script( 'test-only-data', 'example.com', array(), null ); 2082 1970 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"; 2084 1972 $expected .= "<script src='http://example.com' id='test-only-data-js'></script>\n"; 2085 1973 … … 2319 2207 $expected = <<<HTML 2320 2208 <script id='test-example-js-before'> 2321 /* <![CDATA[ */2322 2209 console.log("before"); 2323 2210 //# sourceURL=test-example-js-before 2324 /* ]]> */2325 2211 </script> 2326 2212 HTML; … … 2340 2226 $expected .= <<<HTML 2341 2227 <script id='test-example-js-after'> 2342 /* <![CDATA[ */2343 2228 console.log("after"); 2344 2229 //# sourceURL=test-example-js-after 2345 /* ]]> */2346 2230 </script> 2347 2231 HTML; … … 2358 2242 wp_add_inline_script( 'test-example', 'console.log("after");' ); 2359 2243 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"; 2361 2245 $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"; 2363 2247 2364 2248 $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) ); … … 2373 2257 wp_add_inline_script( 'test-example', 'console.log("before");', 'before' ); 2374 2258 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"; 2376 2260 2377 2261 $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) ); … … 2386 2270 wp_add_inline_script( 'test-example', 'console.log("after");' ); 2387 2271 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"; 2389 2273 2390 2274 $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) ); … … 2400 2284 wp_add_inline_script( 'test-example', 'console.log("after");' ); 2401 2285 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"; 2404 2288 2405 2289 $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) ); … … 2416 2300 wp_add_inline_script( 'test-example', 'console.log("after");' ); 2417 2301 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"; 2419 2303 $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"; 2421 2305 2422 2306 $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) ); … … 2432 2316 wp_add_inline_script( 'test-example', 'console.log("after");' ); 2433 2317 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"; 2436 2320 $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"; 2438 2322 2439 2323 $this->assertEqualHTML( $expected, get_echo( 'wp_print_scripts' ) ); … … 2456 2340 wp_add_inline_script( 'two', 'console.log("before two");', 'before' ); 2457 2341 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"; 2459 2343 $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"; 2461 2345 $expected .= "<script src='{$this->default_scripts_dir}two.js?ver={$wp_version}' id='two-js'></script>\n"; 2462 2346 $expected .= "<script src='{$this->default_scripts_dir}three.js?ver={$wp_version}' id='three-js'></script>\n"; … … 2480 2364 wp_add_inline_script( 'one', 'console.log("before one");', 'before' ); 2481 2365 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"; 2483 2367 $expected .= "<script src='{$this->default_scripts_dir}one.js?ver={$wp_version}' id='one-js'></script>\n"; 2484 2368 $expected .= "<script src='{$this->default_scripts_dir}two.js?ver={$wp_version}' id='two-js'></script>\n"; … … 2507 2391 $expected = "<script src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=one&ver={$wp_version}'></script>\n"; 2508 2392 $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"; 2510 2394 $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"; 2512 2396 $expected .= "<script src='{$this->default_scripts_dir}four.js?ver={$wp_version}' id='four-js'></script>\n"; 2513 2397 … … 2555 2439 $expected = "<script src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate&ver={$wp_version}'></script>\n"; 2556 2440 $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"; 2558 2442 2559 2443 wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null ); … … 2603 2487 2604 2488 $expected = "<script src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate&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"; 2606 2490 $expected .= "<script src='http://example.com' id='test-example-js'></script>\n"; 2607 2491 … … 2629 2513 $expected = "<script src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=jquery-core,jquery-migrate,wp-dom-ready,wp-hooks&ver={$wp_version}'></script>\n"; 2630 2514 $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"; 2632 2516 $expected .= "</script>\n"; 2633 2517 $expected .= "<script src='http://example.com' id='test-example-js'></script>\n"; 2634 2518 $expected .= "<script src='/wp-includes/js/dist/i18n.min.js' id='wp-i18n-js'></script>\n"; 2635 2519 $expected .= "<script id='wp-i18n-js-after'>\n"; 2636 $expected .= "/* <![CDATA[ */\n";2637 2520 $expected .= "wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );\n"; 2638 2521 $expected .= "//# sourceURL=wp-i18n-js-after\n"; 2639 $expected .= "/* ]]> */\n";2640 2522 $expected .= "</script>\n"; 2641 2523 $expected .= "<script src='/wp-includes/js/dist/a11y.min.js' id='wp-a11y-js'></script>\n"; 2642 2524 $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"; 2644 2526 wp_enqueue_script( 'test-example', 'http://example.com', array( 'jquery' ), null ); 2645 2527 wp_add_inline_script( 'test-example', 'console.log("before");', 'before' ); … … 2696 2578 2697 2579 $expected = "<script id='customize-dependency-js-after'>\n"; 2698 $expected .= "/* <![CDATA[ */\n";2699 2580 $expected .= "tryCustomizeDependency()\n"; 2700 2581 $expected .= "//# sourceURL=customize-dependency-js-after\n"; 2701 $expected .= "/* ]]> */\n";2702 2582 $expected .= "</script>\n"; 2703 2583 $this->assertEqualHTMLScriptTagById( $expected, $print_scripts ); … … 2720 2600 2721 2601 $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"; 2723 2603 $expected .= "<script src='/wp-includes/js/script2.js?ver={$wp_version}' id='two-js'></script>\n"; 2724 2604 $expected .= "<script src='/wp-includes/js/script3.js?ver={$wp_version}' id='three-js'></script>\n"; … … 2744 2624 2745 2625 $expected = "<script src='/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=one,two&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"; 2747 2627 $expected .= "<script src='/wp-includes/js/script3.js?ver={$wp_version}' id='three-js'></script>\n"; 2748 2628 $expected .= "<script src='/wp-includes/js/script4.js?ver={$wp_version}' id='four-js'></script>\n"; … … 2765 2645 'delayed' => false, 2766 2646 '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", 2768 2648 ), 2769 2649 'after-blocking' => array( … … 2775 2655 'delayed' => false, 2776 2656 '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", 2778 2658 ), 2779 2659 'before-delayed' => array( … … 2784 2664 'delayed' => true, 2785 2665 '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", 2787 2667 ), 2788 2668 'after-delayed' => array( … … 2794 2674 'delayed' => true, 2795 2675 '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", 2797 2677 ), 2798 2678 ); … … 3503 3383 wp_localize_script( 'test-example', 'testExample', $l10n_data ); 3504 3384 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"; 3506 3386 $expected .= "<script src='http://example.com' id='test-example-js'></script>\n"; 3507 3387 … … 3604 3484 3605 3485 $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' ) );3613 3486 } 3614 3487 … … 3763 3636 }, 3764 3637 '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> 3766 3639 ', 3767 3640 '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> 3769 3642 ', 3770 3643 'expected_in_footer' => array( … … 3813 3686 }, 3814 3687 '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> 3817 3690 ', 3818 3691 '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> 3821 3694 ', 3822 3695 'expected_in_footer' => array( … … 3861 3734 'expected_footer' => ' 3862 3735 <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> 3864 3737 <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> 3866 3739 ', 3867 3740 'expected_in_footer' => array( … … 3908 3781 'expected_header' => ' 3909 3782 <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> 3911 3784 ', 3912 3785 'expected_footer' => ' 3913 3786 <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> 3915 3788 ', 3916 3789 'expected_in_footer' => array( … … 4077 3950 */ 4078 3951 public function test_source_url_encoding() { 4079 $this->add_html5_script_theme_support();4080 4081 3952 $handle = '# test/</script> #'; 4082 3953 … … 4111 3982 public function test_source_url_with_concat() { 4112 3983 global $wp_scripts, $concatenate_scripts, $wp_version; 4113 $this->add_html5_script_theme_support();4114 3984 4115 3985 $concatenate_scripts = true; … … 4128 3998 $expected = <<<HTML 4129 3999 <script> 4130 /* <![CDATA[ */4131 4000 var one = {"key":"val"};var two = {"key":"val"}; 4132 4001 //# sourceURL=js-inline-concat-one%2Ctwo 4133 /* ]]> */4134 4002 </script> 4135 4003 <script src="/wp-admin/load-scripts.php?c=0&load%5Bchunk_0%5D=one,two&ver={$wp_version}"></script> … … 4148 4016 public function test_print_translations_no_display_no_sourceurl() { 4149 4017 global $wp_scripts; 4150 $this->add_html5_script_theme_support();4151 4018 4152 4019 wp_register_script( 'wp-i18n', '/wp-includes/js/dist/wp-i18n.js', array(), null ); -
trunk/tests/phpunit/tests/dependencies/wpInlineScriptTag.php
r61411 r61415 35 35 36 36 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 53 37 $this->assertSame( 54 38 '<script type="application/javascript" nomodule>' . "\n{$this->event_handler}\n</script>\n", … … 65 49 66 50 public function test_get_inline_script_tag_type_not_set() { 67 add_theme_support( 'html5', array( 'script' ) );68 69 51 $this->assertSame( 70 52 "<script nomodule>\n{$this->event_handler}\n</script>\n", … … 77 59 ) 78 60 ); 79 80 remove_theme_support( 'html5' );81 61 } 82 62 83 63 public function test_get_inline_script_tag_unescaped_src() { 84 add_theme_support( 'html5', array( 'script' ) );85 86 64 $this->assertSame( 87 65 "<script>\n{$this->event_handler}\n</script>\n", 88 66 wp_get_inline_script_tag( $this->event_handler ) 89 67 ); 90 91 remove_theme_support( 'html5' );92 68 } 93 69 … … 102 78 } 103 79 ); 104 105 add_theme_support( 'html5', array( 'script' ) );106 80 107 81 $attributes = array( … … 120 94 ) 121 95 ); 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 58664141 */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 60320205 *206 * @dataProvider data_provider_to_test_cdata_wrapper_omitted_for_non_javascript_scripts207 */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 );219 96 } 220 97 } -
trunk/tests/phpunit/tests/dependencies/wpSanitizeScriptAttributes.php
r61395 r61415 11 11 12 12 public function test_sanitize_script_attributes_type_set() { 13 add_theme_support( 'html5', array( 'script' ) );14 15 13 $this->assertSame( 16 14 ' type="application/javascript" src="https://DOMAIN.TLD/PATH/FILE.js" nomodule', … … 24 22 ) 25 23 ); 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 );40 24 } 41 25 42 26 public function test_sanitize_script_attributes_type_not_set() { 43 add_theme_support( 'html5', array( 'script' ) );44 45 27 $this->assertSame( 46 28 ' 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"',60 29 wp_sanitize_script_attributes( 61 30 array( … … 70 39 71 40 public function test_sanitize_script_attributes_no_attributes() { 72 add_theme_support( 'html5', array( 'script' ) );73 74 41 $this->assertSame( 75 42 '', 76 43 wp_sanitize_script_attributes( array() ) 77 44 ); 78 79 remove_theme_support( 'html5' );80 45 } 81 46 82 47 public function test_sanitize_script_attributes_relative_src() { 83 add_theme_support( 'html5', array( 'script' ) );84 85 48 $this->assertSame( 86 49 ' src="PATH/FILE.js" nomodule', … … 93 56 ) 94 57 ); 95 96 remove_theme_support( 'html5' );97 58 } 98 59 99 60 100 61 public function test_sanitize_script_attributes_only_false_boolean_attributes() { 101 add_theme_support( 'html5', array( 'script' ) );102 103 62 $this->assertSame( 104 63 '', … … 110 69 ) 111 70 ); 112 113 remove_theme_support( 'html5' );114 71 } 115 72 116 73 public function test_sanitize_script_attributes_only_true_boolean_attributes() { 117 add_theme_support( 'html5', array( 'script' ) );118 119 74 $this->assertSame( 120 75 ' async nomodule', … … 126 81 ) 127 82 ); 128 129 remove_theme_support( 'html5' );130 83 } 131 84 }
Note: See TracChangeset
for help on using the changeset viewer.