Skip to content

Commit 49721aa

Browse files
committed
Only consider enqueued dependents when calculating highest fetchpriority
1 parent a7299e4 commit 49721aa

File tree

2 files changed

+36
-11
lines changed

2 files changed

+36
-11
lines changed

src/wp-includes/class-wp-script-modules.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -461,9 +461,9 @@ private function print_script_module( string $id ) {
461461
'id' => $id . '-js-module',
462462
);
463463

464-
$script_module = $this->registered[ $id ];
465-
$dependents = $this->get_recursive_dependents( $id );
466-
$fetchpriority = $this->get_highest_fetchpriority( array_merge( array( $id ), $dependents ) );
464+
$script_module = $this->registered[ $id ];
465+
$queued_dependents = array_intersect( $this->queue, $this->get_recursive_dependents( $id ) );
466+
$fetchpriority = $this->get_highest_fetchpriority( array_merge( array( $id ), $queued_dependents ) );
467467
if ( 'auto' !== $fetchpriority ) {
468468
$attributes['fetchpriority'] = $fetchpriority;
469469
}

tests/phpunit/tests/script-modules/wpScriptModules.php

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1553,24 +1553,46 @@ public function test_set_fetchpriority_with_invalid_value() {
15531553
*/
15541554
public function data_provider_to_test_fetchpriority_bumping(): array {
15551555
return array(
1556-
'enqueue_bajo' => array(
1556+
'enqueue_bajo' => array(
15571557
'enqueues' => array( 'bajo' ),
1558+
'expected' => array(
1559+
'preload_links' => array(),
1560+
'script_tags' => array(
1561+
'bajo' => array(
1562+
'url' => '/bajo.js',
1563+
'fetchpriority' => 'low', // Priority of 'low' not 'high' because the 'auto' dependent was not enqueued.
1564+
'in_footer' => false,
1565+
),
1566+
),
1567+
'import_map' => array(
1568+
'dyno' => '/dyno.js',
1569+
),
1570+
),
1571+
),
1572+
'enqueue_bajo_and_auto' => array(
1573+
'enqueues' => array( 'bajo', 'auto' ),
15581574
'expected' => array(
15591575
'preload_links' => array(),
15601576
'script_tags' => array(
15611577
'bajo' => array(
15621578
'url' => '/bajo.js',
1563-
'fetchpriority' => 'high',
1579+
'fetchpriority' => 'auto',
15641580
'in_footer' => false,
15651581
'data-wp-fetchpriority' => 'low',
15661582
),
1583+
'auto' => array(
1584+
'url' => '/auto.js',
1585+
'fetchpriority' => 'auto',
1586+
'in_footer' => false,
1587+
),
15671588
),
15681589
'import_map' => array(
15691590
'dyno' => '/dyno.js',
1591+
'bajo' => '/bajo.js',
15701592
),
15711593
),
15721594
),
1573-
'enqueue_auto' => array(
1595+
'enqueue_auto' => array(
15741596
'enqueues' => array( 'auto' ),
15751597
'expected' => array(
15761598
'preload_links' => array(
@@ -1582,10 +1604,9 @@ public function data_provider_to_test_fetchpriority_bumping(): array {
15821604
),
15831605
'script_tags' => array(
15841606
'auto' => array(
1585-
'url' => '/auto.js',
1586-
'fetchpriority' => 'high',
1587-
'in_footer' => false,
1588-
'data-wp-fetchpriority' => 'auto',
1607+
'url' => '/auto.js',
1608+
'fetchpriority' => 'auto', // Priority of 'auto' not 'high' because the 'alto' dependent was not enqueued.
1609+
'in_footer' => false,
15891610
),
15901611
),
15911612
'import_map' => array(
@@ -1594,7 +1615,7 @@ public function data_provider_to_test_fetchpriority_bumping(): array {
15941615
),
15951616
),
15961617
),
1597-
'enqueue_alto' => array(
1618+
'enqueue_alto' => array(
15981619
'enqueues' => array( 'alto' ),
15991620
'expected' => array(
16001621
'preload_links' => array(
@@ -1833,6 +1854,10 @@ public function test_default_script_modules() {
18331854
* Tests expected priority is used when a dependent is registered but not enqueued.
18341855
*
18351856
* @ticket 64429
1857+
*
1858+
* @covers ::wp_default_script_modules
1859+
* @covers WP_Script_Modules::print_enqueued_script_modules
1860+
* @covers WP_Script_Modules::get_highest_fetchpriority
18361861
*/
18371862
public function test_priority_of_dependency_for_non_enqueued_dependent() {
18381863
wp_default_script_modules();

0 commit comments

Comments
 (0)