Make WordPress Core


Ignore:
Timestamp:
08/28/2025 07:54:21 AM (14 months ago)
Author:
jonsurrell
Message:

Script Loader: Add sourceURL to inline scripts and styles.

Improve the source locations referenced by developer tooling in supporting browsers. Inline source locations are named like inline:handle-js-after and appear in the developer tools "sources" panel.

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

Props jonsurrell, swissspidy, alshakero, westonruter.
Fixes #63887.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/dependencies/styles.php

    r58932 r60685  
    151151                $expected .= "<style id='handle-inline-css' type='text/css'>\n";
    152152                $expected .= "$style\n";
     153                $expected .= "/*# sourceURL=inline:handle-inline-css */\n";
    153154                $expected .= "</style>\n";
    154155
    … …  
    180181                $expected .= "<style id='handle-inline-css' type='text/css'>\n";
    181182                $expected .= "$style\n";
     183                $expected .= "/*# sourceURL=inline:handle-inline-css */\n";
    182184                $expected .= "</style>\n";
    183185
    … …  
    275277                $expected .= "$style1\n";
    276278                $expected .= "$style2\n";
     279                $expected .= "/*# sourceURL=inline:handle-inline-css */\n";
    277280                $expected .= "</style>\n";
    278281
    … …  
    293296        public function test_plugin_doing_inline_styles_wrong() {
    294297
    295                 $style  = "<style id='handle-inline-css' type='text/css'>\n";
    296                 $style .= ".thing {\n";
     298                $style  = ".thing {\n";
    297299                $style .= "\tbackground: red;\n";
    298                 $style .= "}\n";
    299                 $style .= '</style>';
     300                $style .= '}';
    300301
    301302                $expected  = "<link rel='stylesheet' id='handle-css' href='http://example.com?ver=1' type='text/css' media='all' />\n";
     303                $expected .= "<style id='handle-inline-css' type='text/css'>\n";
    302304                $expected .= "$style\n";
     305                $expected .= "/*# sourceURL=inline:handle-inline-css */\n";
     306                $expected .= "</style>\n";
    303307
    304308                wp_enqueue_style( 'handle', 'http://example.com', array(), 1 );
    305309
    306                 wp_add_inline_style( 'handle', $style );
     310                wp_add_inline_style( 'handle', "<style>{$style}</style>" );
    307311
    308312                $this->assertSame( $expected, get_echo( 'wp_print_styles' ) );
    … …  
    333337<style id='handle-inline-css' type='text/css'>
    334338a { color: blue; }
     339/*# sourceURL=inline:handle-inline-css */
    335340</style>
    336341<![endif]-->
    … …  
    364369                $expected .= "<style id='handle-three-inline-css' type='text/css'>\n";
    365370                $expected .= "$style\n";
     371                $expected .= "/*# sourceURL=inline:handle-three-inline-css */\n";
    366372                $expected .= "</style>\n";
    367373
    … …  
    633639                $this->assertSame( $GLOBALS['wp_styles']->registered['test-handle']->src, $url );
    634640        }
     641
     642        /**
     643         * @ticket 63887
     644         */
     645        public function test_source_url_encoding() {
     646                $handle = '# test/</style> #';
     647                wp_enqueue_style( $handle, '/example.css', array(), '0.0' );
     648                wp_add_inline_style( $handle, 'custom-el { content: "ok"; }' );
     649
     650                $expected = <<<HTML
     651<link rel='stylesheet' href="/example.css?ver=0.0" id="# test/</style> #-css" media="all" type="text/css">
     652<style id="# test/</style> #-inline-css" type="text/css">
     653custom-el { content: "ok"; }
     654/*# sourceURL=inline:%23%20test%2F%3C%2Fstyle%3E%20%23-inline-css */
     655</style>
     656
     657HTML;
     658
     659                $this->assertEqualHTML( $expected, get_echo( 'wp_print_styles' ) );
     660        }
    635661}
Note: See TracChangeset for help on using the changeset viewer.