From: Bartosz DziewoƄski Date: Tue, 15 Jan 2019 19:28:30 +0000 (+0100) Subject: resourceloader: Avoid toplevel `` under `<g>` in ResourceLoaderImage X-Git-Tag: 1.34.0-rc.0~3077^2 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=d6043347c3683ba6664c083be85798235583f6ed resourceloader: Avoid toplevel `<title>` under `<g>` in ResourceLoaderImage While it shouldn't be causing any rendering problems, doing so is semantically incorrect. Bug: T213507 Change-Id: Ic86cd2bf3028eb24ad60db7ffa9498dd86edd4a5 --- diff --git a/includes/resourceloader/ResourceLoaderImage.php b/includes/resourceloader/ResourceLoaderImage.php index ef116283fc..b15efae809 100644 --- a/includes/resourceloader/ResourceLoaderImage.php +++ b/includes/resourceloader/ResourceLoaderImage.php @@ -295,9 +295,20 @@ class ResourceLoaderImage { $dom = new DOMDocument; $dom->loadXML( file_get_contents( $this->getPath( $context ) ) ); $root = $dom->documentElement; + $titleNode = null; $wrapper = $dom->createElement( 'g' ); + // Reattach all direct children of the `<svg>` root node to the `<g>` wrapper while ( $root->firstChild ) { - $wrapper->appendChild( $root->firstChild ); + $node = $root->firstChild; + if ( !$titleNode && $node->nodeType === XML_ELEMENT_NODE && $node->tagName === 'title' ) { + // Remember the first encountered `<title>` node + $titleNode = $node; + } + $wrapper->appendChild( $node ); + } + if ( $titleNode ) { + // Reattach the `<title>` node to the `<svg>` root node rather than the `<g>` wrapper + $root->appendChild( $titleNode ); } $root->appendChild( $wrapper ); $wrapper->setAttribute( 'fill', $variantConf['color'] ); diff --git a/tests/phpunit/data/resourceloader/def.svg b/tests/phpunit/data/resourceloader/def.svg index 6ad791744e..cedb19dde8 100644 --- a/tests/phpunit/data/resourceloader/def.svg +++ b/tests/phpunit/data/resourceloader/def.svg @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> + <title>remove diff --git a/tests/phpunit/data/resourceloader/def_variantize.svg b/tests/phpunit/data/resourceloader/def_variantize.svg index bcbe87120e..009d805bc0 100644 --- a/tests/phpunit/data/resourceloader/def_variantize.svg +++ b/tests/phpunit/data/resourceloader/def_variantize.svg @@ -1,5 +1,6 @@ - +remove +