diff --git a/admin/tool/brickfield/classes/local/htmlchecker/common/brickfield_accessibility_color_test.php b/admin/tool/brickfield/classes/local/htmlchecker/common/brickfield_accessibility_color_test.php index a392d1106e427..3d9a49bc23fb8 100644 --- a/admin/tool/brickfield/classes/local/htmlchecker/common/brickfield_accessibility_color_test.php +++ b/admin/tool/brickfield/classes/local/htmlchecker/common/brickfield_accessibility_color_test.php @@ -392,13 +392,13 @@ public function get_fontsize(string $fontsize): int { $pos3 = stripos($fontsize, 'px'); if ($pos1 !== false) { $rem = substr($fontsize, 0, -3); - $newfontsize = $newfontsize * $rem; + $newfontsize = is_numeric($rem) ? $newfontsize * $rem : $newfontsize; } else if ($pos2 !== false) { $em = substr($fontsize, 0, -2); - $newfontsize = $newfontsize * $em; + $newfontsize = is_numeric($em) ? $newfontsize * $em : $newfontsize; } else if ($pos3 !== false) { $px = substr($fontsize, 0, -2); - $newfontsize = 0.75 * $px; + $newfontsize = is_numeric($px) ? 0.75 * $px : $newfontsize; } else if (in_array($fontsize, array_keys($this->fontsizenames))) { $newfontsize = $this->fontsizenames[$fontsize]; } else { diff --git a/admin/tool/brickfield/tests/local/htmlchecker/common/checks/css_text_has_contrast_test.php b/admin/tool/brickfield/tests/local/htmlchecker/common/checks/css_text_has_contrast_test.php index f19f09bb14782..55bae46495be2 100644 --- a/admin/tool/brickfield/tests/local/htmlchecker/common/checks/css_text_has_contrast_test.php +++ b/admin/tool/brickfield/tests/local/htmlchecker/common/checks/css_text_has_contrast_test.php @@ -226,6 +226,18 @@ class css_text_has_contrast_test extends all_checks { This is contrasty enough.

EOD; + /** @var string HTML with calculated size colour values. */ + private $calculatedfail = <<

+ This is not contrasty enough.

+EOD; + + /** @var string HTML with calculated size colour values. */ + private $calculatedpass = <<

+ This is contrasty enough.

+EOD; + /** * Test for the area assign intro */ @@ -347,4 +359,20 @@ public function test_check_for_largerbold_pass() { $results = $this->get_checker_results($this->largerboldpass); $this->assertEmpty($results); } + + /** + * Test for calculated (12pt) text with insufficient contrast of 4.49. + */ + public function test_check_for_calculated_fail() { + $results = $this->get_checker_results($this->calculatedfail); + $this->assertTrue($results[0]->element->tagName == 'p'); + } + + /** + * Test for calculated (12pt) text with sufficient contrast of 4.81. + */ + public function test_check_for_calculated_pass() { + $results = $this->get_checker_results($this->calculatedpass); + $this->assertEmpty($results); + } }