jenkins-bot has submitted this change and it was merged.
Change subject: Exclude duplicate srcset urls
......................................................................
Exclude duplicate srcset urls
Bug: T135550
Change-Id: I956dc155426739d60052a0dc77dafdf0414d5bd7
---
M includes/Html.php
M includes/media/MediaTransformOutput.php
M tests/parser/parserTests.txt
M tests/phpunit/includes/HtmlTest.php
4 files changed, 42 insertions(+), 4 deletions(-)
Approvals:
Bartosz Dziewoński: Looks good to me, approved
jenkins-bot: Verified
diff --git a/includes/Html.php b/includes/Html.php
index e5128d1..a5567fc 100644
--- a/includes/Html.php
+++ b/includes/Html.php
@@ -1020,9 +1020,21 @@
static function srcSet( array $urls ) {
$candidates = [];
foreach ( $urls as $density => $url ) {
- // Cast density to float to strip 'x'.
- $candidates[] = $url . ' ' . (float)$density . 'x';
+ // Cast density to float to strip 'x', then back to
string to serve
+ // as array index.
+ $density = (string)(float)$density;
+ $candidates[$density] = $url;
}
+
+ // Remove duplicates that are the same as a smaller value
+ ksort( $candidates, SORT_NUMERIC );
+ $candidates = array_unique( $candidates );
+
+ // Append density info to the url
+ foreach ( $candidates as $density => $url ) {
+ $candidates[$density] = $url . ' ' . $density . 'x';
+ }
+
return implode( ", ", $candidates );
}
}
diff --git a/includes/media/MediaTransformOutput.php
b/includes/media/MediaTransformOutput.php
index 9176b54..b3a555a 100644
--- a/includes/media/MediaTransformOutput.php
+++ b/includes/media/MediaTransformOutput.php
@@ -421,8 +421,10 @@
}
// Additional densities for responsive images, if specified.
- if ( !empty( $this->responsiveUrls ) ) {
- $attribs['srcset'] = Html::srcSet(
$this->responsiveUrls );
+ // If any of these urls is the same as src url, it'll be
excluded.
+ $responsiveUrls = array_diff( $this->responsiveUrls, [
$this->url ] );
+ if ( !empty( $responsiveUrls ) ) {
+ $attribs['srcset'] = Html::srcSet( $responsiveUrls );
}
Hooks::run( 'ThumbnailBeforeProduceHTML', [ $this, &$attribs,
&$linkAttribs ] );
diff --git a/tests/parser/parserTests.txt b/tests/parser/parserTests.txt
index dd50607..4c853b1 100644
--- a/tests/parser/parserTests.txt
+++ b/tests/parser/parserTests.txt
@@ -27080,3 +27080,17 @@
<li>b</li>
</ul>
!! end
+
+!! test
+Thumbnail output
+!! wikitext
+[[File:Thumb.png|thumb]]
+!! html/php+tidy
+<div class="thumb tright">
+<div class="thumbinner" style="width:137px;"><a href="/wiki/File:Thumb.png"
class="image"><img alt="Thumb.png"
src="http://example.com/images/e/ea/Thumb.png" width="135" height="135"
class="thumbimage" /></a>
+<div class="thumbcaption">
+<div class="magnify"><a href="/wiki/File:Thumb.png" class="internal"
title="Enlarge"></a></div>
+</div>
+</div>
+</div>
+!! end
diff --git a/tests/phpunit/includes/HtmlTest.php
b/tests/phpunit/includes/HtmlTest.php
index 4721793..e44db83 100644
--- a/tests/phpunit/includes/HtmlTest.php
+++ b/tests/phpunit/includes/HtmlTest.php
@@ -738,6 +738,16 @@
'1x.png 1x, 1_5x.png 1.5x, 2x.png 2x',
'pixel depth keys may omit a trailing "x"'
],
+ [
+ [ '1' => 'small.png', '1.5' => 'large.png',
'2' => 'large.png' ],
+ 'small.png 1x, large.png 1.5x',
+ 'omit larger duplicates'
+ ],
+ [
+ [ '1' => 'small.png', '2' => 'large.png',
'1.5' => 'large.png' ],
+ 'small.png 1x, large.png 1.5x',
+ 'omit larger duplicates in irregular order'
+ ],
];
}
--
To view, visit https://gerrit.wikimedia.org/r/299533
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I956dc155426739d60052a0dc77dafdf0414d5bd7
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/core
Gerrit-Branch: master
Gerrit-Owner: Matthias Mullie <[email protected]>
Gerrit-Reviewer: Aaron Schulz <[email protected]>
Gerrit-Reviewer: Bartosz Dziewoński <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits