private function filter_eligible_strategies( $handle, $eligible = null, $checked = array() ) {
if ( null === $eligible ) {
$eligible = $this->delayed_strategies;
}
if ( isset( $checked[ $handle ] ) ) {
return $eligible;
}
$checked[ $handle ] = true;
if ( ! isset( $this->registered[ $handle ] ) ) {
return $eligible;
}
if ( ! $this->query( $handle, 'enqueued' ) ) {
return $eligible;
}
$is_alias = (bool) ! $this->registered[ $handle ]->src;
$intended_strategy = $this->get_data( $handle, 'strategy' );
if ( ! $is_alias && empty( $intended_strategy ) ) {
return array();
}
if ( $this->has_inline_script( $handle, 'after' ) ) {
return array();
}
if ( 'defer' === $intended_strategy ) {
$eligible = array( 'defer' );
}
$dependents = $this->get_dependents( $handle );
foreach ( $dependents as $dependent ) {
if ( empty( $eligible ) ) {
return array();
}
$eligible = $this->filter_eligible_strategies( $dependent, $eligible, $checked );
}
return $eligible;
}