diff --git a/lib/csslib.php b/lib/csslib.php index 19a7088d494..db8083e5371 100644 --- a/lib/csslib.php +++ b/lib/csslib.php @@ -203,9 +203,9 @@ function css_chunk_by_selector_count($css, $importurl, $maxselectors = 4095, $bu } } - // Let's count the number of selectors, but only if we are not in a rule as they - // can contain commas too. - if (!$inrule && $char === ',') { + // Let's count the number of selectors, but only if we are not in a rule, or in + // the definition of a media query, as they can contain commas too. + if (!$mediacoming && !$inrule && $char === ',') { $selectorcount++; } diff --git a/lib/tests/csslib_test.php b/lib/tests/csslib_test.php index 7b0aedbaed0..6dc25013d07 100644 --- a/lib/tests/csslib_test.php +++ b/lib/tests/csslib_test.php @@ -1176,6 +1176,12 @@ CSS; $this->assertCount(1, $chunks); $this->assertSame('@media (min-width: 980px) { .a,.b{} }', $chunks[0]); + // Test media queries, with commas. + $css = '.a{} @media (min-width: 700px), handheld and (orientation: landscape) { .b{} }'; + $chunks = css_chunk_by_selector_count($css, 'styles.php?type=test', 2); + $this->assertCount(1, $chunks); + $this->assertSame($css, $chunks[0]); + // Test special rules. $css = 'a,b{ background-image: linear-gradient(to bottom, #ffffff, #cccccc);}d,e{}'; $chunks = css_chunk_by_selector_count($css, 'styles.php?type=test', 2);