4 years agoMerge "Warn if stateful ParserOutput transforms are used"
jenkins-bot [Fri, 2 Feb 2018 02:45:27 +0000 (02:45 +0000)]
Merge "Warn if stateful ParserOutput transforms are used"

4 years agoMerge "benchmarks: Fix divide by zero in Benchmarker"
jenkins-bot [Fri, 2 Feb 2018 02:31:24 +0000 (02:31 +0000)]
Merge "benchmarks: Fix divide by zero in Benchmarker"

4 years agobenchmarks: Fix divide by zero in Benchmarker
Brad Jorsch [Thu, 1 Feb 2018 21:26:09 +0000 (16:26 -0500)]
benchmarks: Fix divide by zero in Benchmarker

Follows-up 593442683dc471c0.

Bug: T186269
Change-Id: I011a8614e0acf489daf5bd9dcb932e920b995092

4 years agoMerge "qunit: Test `before` and `after` hooks in QUnit testrunner"
jenkins-bot [Fri, 2 Feb 2018 01:27:33 +0000 (01:27 +0000)]
Merge "qunit: Test `before` and `after` hooks in QUnit testrunner"

4 years agoMerge "qunit: Refactor and simplify testrunner to fix nested modules"
jenkins-bot [Fri, 2 Feb 2018 01:24:12 +0000 (01:24 +0000)]
Merge "qunit: Refactor and simplify testrunner to fix nested modules"

4 years agoMerge "Added letter Kra (ĸ) to special characters toolbar"
jenkins-bot [Fri, 2 Feb 2018 01:18:41 +0000 (01:18 +0000)]
Merge "Added letter Kra (ĸ) to special characters toolbar"

4 years agoAdded letter Kra (ĸ) to special characters toolbar
navisk13 [Tue, 30 Jan 2018 13:11:50 +0000 (18:41 +0530)]
Added letter Kra (ĸ) to special characters toolbar

Added 'Kra' to latin extended collection in the file /resources/src/mediawiki.language/specialcharacters.json

Bug: T185918
Change-Id: Ibc739297e5a1b8d109202477e1314cc3a0d6d5b4

4 years agoAdd 'unwrap' ParserOutput post-cache transform
Brad Jorsch [Fri, 22 Dec 2017 18:32:49 +0000 (13:32 -0500)]
Add 'unwrap' ParserOutput post-cache transform

And deprecate passing false for ParserOptions::setWrapOutputClass().

There are three cases for the Parser wrapper: the default
mw-parser-output, a custom wrapper, or no wrapper. As things currently
stand, we have to fragment the parser cache on each of these options,
which uses a nontrival amount of storage space (T167784).

Ideally we'd do all the wrapping as a post-cache transform, but
TemplateStyles needs to know the wrapper in use in order to properly
prefix its CSS rules (that's why we added the wrapper in the first
place). So, second best option is to make *un*wrapping be a post-cache
transform and make "custom wrapper" be uncacheable.

This patch does the first bit (unwrapping as a post-cache transform),
and a followup will do the second part once the deprecation process is

Bug: T181846
Change-Id: Iba16e78c41be992467101e7d83e9c3134765b101

4 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Thu, 1 Feb 2018 20:56:02 +0000 (21:56 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I3eb13a00f4f315cc23b29602a8ef1206f26065dc

4 years agoMerge "Add ability to proxy thumbnail requests to a service"
jenkins-bot [Thu, 1 Feb 2018 17:43:10 +0000 (17:43 +0000)]
Merge "Add ability to proxy thumbnail requests to a service"

4 years agoMerge "Hygiene: Use “OOUI” as unified name in build and code documentation"
jenkins-bot [Thu, 1 Feb 2018 17:41:53 +0000 (17:41 +0000)]
Merge "Hygiene: Use “OOUI” as unified name in build and code documentation"

4 years agoMerge "Bump composer/spdx-licenses to 1.3.0"
jenkins-bot [Thu, 1 Feb 2018 16:01:35 +0000 (16:01 +0000)]
Merge "Bump composer/spdx-licenses to 1.3.0"

4 years agoMerge "Fix jump-to-nav element overlap on RCFilters"
jenkins-bot [Thu, 1 Feb 2018 15:33:24 +0000 (15:33 +0000)]
Merge "Fix jump-to-nav element overlap on RCFilters"

4 years agoAdd missing PHPDoc block to DifferenceEngine::getParserOutput
Thiemo Mättig [Thu, 1 Feb 2018 11:48:29 +0000 (12:48 +0100)]
Add missing PHPDoc block to DifferenceEngine::getParserOutput

Bug: T186163
Change-Id: Ifde6f8e458d90b1ec250dc4d587cd428717fe509

4 years agoqunit: Test `before` and `after` hooks in QUnit testrunner
Aleksey Bekh-Ivanov (WMDE) [Wed, 2 Aug 2017 14:21:56 +0000 (16:21 +0200)]
qunit: Test `before` and `after` hooks in QUnit testrunner

Change-Id: Ib5b5d29e860d37dbec675e5d24c31b57c5e64102

4 years agoAdd ability to proxy thumbnail requests to a service
Gilles Dubuc [Mon, 20 Nov 2017 06:57:29 +0000 (07:57 +0100)]
Add ability to proxy thumbnail requests to a service

Bug: T169144
Change-Id: I4af09a8b75e7158d6ff15f97e8f067b66ac33d5c

4 years agoFix invocation of MWHttpRequest::factory with one argument.
Stanislav Malyshev [Thu, 1 Feb 2018 07:05:20 +0000 (23:05 -0800)]
Fix invocation of MWHttpRequest::factory with one argument.

Change-Id: Ib96c2888a6fd91ca80c162a80d283f650d6fa4b9

4 years agoBump composer/spdx-licenses to 1.3.0
Kunal Mehta [Thu, 1 Feb 2018 07:01:02 +0000 (23:01 -0800)]
Bump composer/spdx-licenses to 1.3.0


Change-Id: I41be6cecc1b322796ed448f664eb58642d7511ff

4 years agoHygiene: Use “OOUI” as unified name in build and code documentation
Volker E [Wed, 17 Jan 2018 07:04:01 +0000 (23:04 -0800)]
Hygiene: Use “OOUI” as unified name in build and code documentation

Bug: T182360
Change-Id: I981c574003fa505fe133be6da405e73330c4e9a1

4 years agoqunit: Refactor and simplify testrunner to fix nested modules
Timo Tijhof [Wed, 31 Jan 2018 21:05:09 +0000 (13:05 -0800)]
qunit: Refactor and simplify testrunner to fix nested modules

Follows-up 5a4938140643dc5c1539e882454f51b2742dae.

* Merge the three QUnit.module extensions into one.
* Change makeSafeEnv() to use Object.create() instead of creating
  a simplified objects so that other properties are still accessible.

The 'testrunner-nested > Dummy' test now actually runs,
previously it was lost.

Change-Id: Id4aeb93582f8cc73b0dffe768a7864002ec85deb

4 years agoskins: Deprecate QuickTemplate::setRef()
Timo Tijhof [Fri, 26 Jan 2018 18:16:13 +0000 (10:16 -0800)]
skins: Deprecate QuickTemplate::setRef()

Removed all use from core. It was only used in a handful of other
repos, most of which have been updated already.

Bug: T140664
Change-Id: I6b1ea3221022597ca38a5cd40eee040d34d1abb8

4 years agoMerge "Localisation updates from https://translatewiki.net."
L10n-bot [Wed, 31 Jan 2018 20:55:05 +0000 (20:55 +0000)]
Merge "Localisation updates from https://translatewiki.net."

4 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Wed, 31 Jan 2018 20:54:53 +0000 (21:54 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I6a6aa5aefc1fcc048d16bc4f509efdbfd6006ddc

4 years agoMerge "tests: Add @group and @covers to wfArrayFilterTest"
jenkins-bot [Wed, 31 Jan 2018 20:53:36 +0000 (20:53 +0000)]
Merge "tests: Add @group and @covers to wfArrayFilterTest"

4 years agotests: Add @group and @covers to wfArrayFilterTest
Timo Tijhof [Wed, 31 Jan 2018 20:14:02 +0000 (12:14 -0800)]
tests: Add @group and @covers to wfArrayFilterTest

Change-Id: I6565ad21b6d6e78d876f730596e213555143c3fc

4 years agoMerge "Rewrite pref cleanup script"
jenkins-bot [Wed, 31 Jan 2018 18:47:59 +0000 (18:47 +0000)]
Merge "Rewrite pref cleanup script"

4 years agoMerge "jquery.textSelection: Remove code supporting IE 6 selection APIs"
jenkins-bot [Wed, 31 Jan 2018 15:53:51 +0000 (15:53 +0000)]
Merge "jquery.textSelection: Remove code supporting IE 6 selection APIs"

4 years agoMerge "jquery.textSelection: Remove final remnants of WikiEditor iframe support"
jenkins-bot [Wed, 31 Jan 2018 15:53:28 +0000 (15:53 +0000)]
Merge "jquery.textSelection: Remove final remnants of WikiEditor iframe support"

4 years agoMerge "Move @group and @covers tags in tests close to class"
jenkins-bot [Wed, 31 Jan 2018 14:51:26 +0000 (14:51 +0000)]
Merge "Move @group and @covers tags in tests close to class"

4 years agoMerge "resourceloader: Add minified version of mw.loader.implement() wrapper"
jenkins-bot [Wed, 31 Jan 2018 13:40:37 +0000 (13:40 +0000)]
Merge "resourceloader: Add minified version of mw.loader.implement() wrapper"

4 years agojquery.textSelection: Remove code supporting IE 6 selection APIs
Bartosz Dziewoński [Wed, 31 Jan 2018 05:44:53 +0000 (06:44 +0100)]
jquery.textSelection: Remove code supporting IE 6 selection APIs

Removing all the code that uses the document.selection and
document.body.createTextRange() APIs, or that only runs if
these APIs are present (workarounds for old IE bugs).

These APIs were supported by Internet Explorer up to version 9
and by Opera up to version 10.5. More recent versions of both
browsers only support the standard selection APIs.

Bug: T186005
Change-Id: I32dc5a16b03cf1c2ea44f6c7361447607ccc7e62

4 years agojquery.textSelection: Remove final remnants of WikiEditor iframe support
Bartosz Dziewoński [Wed, 31 Jan 2018 05:37:54 +0000 (06:37 +0100)]
jquery.textSelection: Remove final remnants of WikiEditor iframe support

After WikiEditor's experimental iframe mode was removed in
952d6b9d8fc1d4ac606b6f8d0a3341ba7ec27e02, the code here was mostly
removed in 62b4198859e4ac7cf41775dc8bc943272e3ddfc3, but this little
stub remained to support CodeEditor (it piggy-backed on that feature
to support textSelection() overrides). That was also cleaned up
afterwards in 37228b257896e0a36816a61543ed5809e8ad6596, but everyone
forgot about this little remnant.

This code was not doing anything, as nothing sets the 'context.$iframe'
property anymore, in any extension.

Change-Id: I0ffe2405df7d6aaecc51b06ba6c7fea5fd8380b4

4 years agoMerge "rdbms: make affectedRows() work more consistently"
jenkins-bot [Wed, 31 Jan 2018 04:48:32 +0000 (04:48 +0000)]
Merge "rdbms: make affectedRows() work more consistently"

4 years agoMerge "rdbms: avoid pointless "SHOW SLAVE STATUS" calls in masterPosWait()"
jenkins-bot [Wed, 31 Jan 2018 04:43:38 +0000 (04:43 +0000)]
Merge "rdbms: avoid pointless "SHOW SLAVE STATUS" calls in masterPosWait()"

4 years agordbms: make affectedRows() work more consistently
Aaron Schulz [Sun, 28 Jan 2018 14:10:39 +0000 (06:10 -0800)]
rdbms: make affectedRows() work more consistently

* Update replace()/upsert() to combine the affected row
  count for the non-native case
* Also make replace() atomic in the non-native case,
  similar to how upsert() already works

Change-Id: I6c9bcba54eca6bcf4a93a9b230aaedf7f36aa877

4 years agoMerge "Revert "Remove workaround for comparing database domain IDs.""
jenkins-bot [Wed, 31 Jan 2018 03:13:46 +0000 (03:13 +0000)]
Merge "Revert "Remove workaround for comparing database domain IDs.""

4 years agordbms: avoid pointless "SHOW SLAVE STATUS" calls in masterPosWait()
Aaron Schulz [Tue, 30 Jan 2018 12:39:36 +0000 (04:39 -0800)]
rdbms: avoid pointless "SHOW SLAVE STATUS" calls in masterPosWait()

This code branch is not useful in the GTID case

Change-Id: Ia112c9b4b9c1f1297cc4eaac7f4a5a1ca882f02e

4 years agoMerge "rdbms: clean up non-native Database::replace() code"
jenkins-bot [Tue, 30 Jan 2018 23:53:30 +0000 (23:53 +0000)]
Merge "rdbms: clean up non-native Database::replace() code"

4 years agoMerge "Fix $wgSharedDB with sqlite"
jenkins-bot [Tue, 30 Jan 2018 22:20:53 +0000 (22:20 +0000)]
Merge "Fix $wgSharedDB with sqlite"

4 years agoMerge "Fix issue when modifying groups in Special:Userrights"
jenkins-bot [Tue, 30 Jan 2018 21:00:56 +0000 (21:00 +0000)]
Merge "Fix issue when modifying groups in Special:Userrights"

4 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Tue, 30 Jan 2018 20:57:21 +0000 (21:57 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: Ibfb41f389c5b2c511d9372a423e2caa5cc844b37

4 years agoFix issue when modifying groups in Special:Userrights
Ryan Schmidt [Sun, 23 Jul 2017 04:19:49 +0000 (21:19 -0700)]
Fix issue when modifying groups in Special:Userrights

If a user has permission to remove a group but not add it, they cannot
manipulate other groups on a user who currently has the un-addable
group. An error is shown that the expiry is invalid and prevents the
save. To fix this, add a hidden input that is hardcoded to the existing
expiration (either 'existing' if it is a temporary assignment, or
'infinite' if the assignment does not expire), so that the validation
succeeds. Validation of this input is already taken care of in
execute(), so it is not possible for a user to extend an expiration this
way if they do not have the necessary privileges to do so.

Bug: T171345
Change-Id: I9268c05d6c491eab45147f8a9941ad4d4e1f563f

4 years agoRewrite pref cleanup script
Chad Horohoe [Tue, 25 Jul 2017 20:32:31 +0000 (13:32 -0700)]
Rewrite pref cleanup script

- Keep the current hidden pref cleanup stuff, that's not harmful
  and marginally useful
- Drop preferences we dunno wtf they're about. Cuz they're probably
  deprecated or otherwise unused
- Normalize preferences into accepted value ranges. This part is kinda
  hard and I haven't figured it out, so slap a TODO

More to come, stay tuned!

Change-Id: I70047adba0034136d107ce7534294cc6fa3c1860

4 years agoFix $wgSharedDB with sqlite
Ryan Schmidt [Tue, 2 Jan 2018 17:56:32 +0000 (11:56 -0600)]
Fix $wgSharedDB with sqlite

At the time of the constructor, tableAliases will always be an empty
array. As such, the ATTACH command is never run for shared dbs, and we
get query errors when later trying to reference them. This changes it so
that the shared db is attached whenever the table aliases are finally

Since table aliases may be set multiple times, the list of already
attached dbs was moved into class scope so that subsequent calls to set
the aliases do not result in query errors.

Bug: T181962
Change-Id: Ia654e996f54077bc3749b884a528e121ab25a2d2

4 years agoMerge "parser: Replace Sanitizer::armorLinksCallback() with a closure"
jenkins-bot [Tue, 30 Jan 2018 20:02:16 +0000 (20:02 +0000)]
Merge "parser: Replace Sanitizer::armorLinksCallback() with a closure"

4 years agoparser: Replace Sanitizer::armorLinksCallback() with a closure
Max Semenik [Mon, 13 Nov 2017 23:48:03 +0000 (15:48 -0800)]
parser: Replace Sanitizer::armorLinksCallback() with a closure

Used only once, small enough. Perfect candidate to not be exposed
even as a private function.

Change-Id: Ic020a596f709cb4f69c48ffe8138f9023a5c4062

4 years agoMerge "mw.Feedback: If the message is posted remotely, link the title correctly"
jenkins-bot [Tue, 30 Jan 2018 19:51:00 +0000 (19:51 +0000)]
Merge "mw.Feedback: If the message is posted remotely, link the title correctly"

4 years agoMerge "postEdit: Show a different success messsage on publish vs. save wikis"
jenkins-bot [Tue, 30 Jan 2018 19:44:06 +0000 (19:44 +0000)]
Merge "postEdit: Show a different success messsage on publish vs. save wikis"

4 years agoMerge "objectcache: add some WANObjectCache comments to set() and delete()"
jenkins-bot [Tue, 30 Jan 2018 19:35:13 +0000 (19:35 +0000)]
Merge "objectcache: add some WANObjectCache comments to set() and delete()"

4 years agopostEdit: Show a different success messsage on publish vs. save wikis
James D. Forrester [Tue, 18 Apr 2017 15:59:08 +0000 (08:59 -0700)]
postEdit: Show a different success messsage on publish vs. save wikis

Bug: T183901
Change-Id: I065f733bd8b27bda68023cd1b718e257fd135aa2

4 years agoresourceloader: Move FILTER_NOMIN annotation to the beginning of output
Bartosz Dziewoński [Tue, 30 Jan 2018 11:12:46 +0000 (12:12 +0100)]
resourceloader: Move FILTER_NOMIN annotation to the beginning of output

This allows ResourceLoader::filter() to handle this case slightly
faster, since it searches for this annotation from the beginning.
In practice this is a negligible performance optimization, but let's
set a good example for the future.

Also tweak the comments and whitespace:
* Move comment about the FILTER_NOMIN from doc comment to code comment,
  it's an implementation detail and not meant for public documentation
* Remove duplicated documentation from the parent class
* Change whitespace to be identical in both cases

Change-Id: I624914ff28d903027ba58710708ccc3c66af9e24

4 years agoRevert "Remove workaround for comparing database domain IDs."
Addshore [Tue, 30 Jan 2018 17:22:50 +0000 (17:22 +0000)]
Revert "Remove workaround for comparing database domain IDs."

This seems to have broken stuff, see failing tests on:

Could not insert main page: RevisionStore for  cannot
be used with a DB connection for jenkins_u0_mw

This reverts commit d2a4d614fce09cdf9dfc137f8507b504e09c0ccc.

Bug: T186017
Change-Id: Ic3de8e856d7d6b224b02816f2c5a1aa0648cd184

4 years agoMerge "SpecialExpandTemplates: Remove leftover 'mw-ui-input-inline' class"
jenkins-bot [Tue, 30 Jan 2018 17:43:13 +0000 (17:43 +0000)]
Merge "SpecialExpandTemplates: Remove leftover 'mw-ui-input-inline' class"

4 years agoMerge "Remove unused method parameters from TestBagOStuff"
jenkins-bot [Tue, 30 Jan 2018 16:24:55 +0000 (16:24 +0000)]
Merge "Remove unused method parameters from TestBagOStuff"

4 years agoRemove unused method parameters from TestBagOStuff
Thiemo Mättig [Wed, 10 Jan 2018 13:32:56 +0000 (14:32 +0100)]
Remove unused method parameters from TestBagOStuff

This is a test mock exclusively used in tests. All code I'm removing here
is unused and neither needed nor covered by any test.

Change-Id: Ifd010c49973460f6fbb2cd83f8fd63488f5fd291

4 years agoSpecialExpandTemplates: Remove leftover 'mw-ui-input-inline' class
Bartosz Dziewoński [Tue, 30 Jan 2018 14:29:44 +0000 (15:29 +0100)]
SpecialExpandTemplates: Remove leftover 'mw-ui-input-inline' class

mediawiki.ui is not loaded on this page anymore after the OOUI
conversion. However, if some extension etc. were to load it, this
field (page title) would have the styles applies unexpectedly,
and it looks rather silly with them (very narrow).

Change-Id: I5cfe71897f435a514c6971b3a0ff7521e422324c

4 years agojquery.textSelection: Remove outdated FIXME comments
Bartosz Dziewoński [Tue, 30 Jan 2018 09:26:15 +0000 (10:26 +0100)]
jquery.textSelection: Remove outdated FIXME comments

These are from 2010 or earlier; they blame to 32377424b94 / rSVN72349,
which is a huge SVN branch merge and I'm not going to dig past that.

To be honest I don't really understand them (perhaps some context has
been lost over the years), but their main point is "we may not need
these functions", to which I say we definitely need them because
they've been a public API for over 7 years now.

Change-Id: I43a5453003e8d64d00323eb973629a96b6b386ab

4 years agoMerge "Remove workaround for comparing database domain IDs."
jenkins-bot [Tue, 30 Jan 2018 05:55:38 +0000 (05:55 +0000)]
Merge "Remove workaround for comparing database domain IDs."

4 years agoRemove workaround for comparing database domain IDs.
daniel [Tue, 30 Jan 2018 03:43:11 +0000 (19:43 -0800)]
Remove workaround for comparing database domain IDs.

Change-Id: I240d68eddec871794ed98b7ce67773114ee73ff7

4 years agordbms: clean up non-native Database::replace() code
Aaron Schulz [Sun, 14 Jan 2018 03:57:51 +0000 (19:57 -0800)]
rdbms: clean up non-native Database::replace() code

* Make sure all unique keys specified have all their values
  provided to avoid large bogus DELETEs. Do not ignore them
  in such cases either, as that would cause inconsistencies
  between the native and non-native case. Use an exception.
* Make ChangeTags caller clearer that the list of indexes
  is not a list of fields for a single index. Also, avoid
  mentioning indexes for values not defined in the new
  records, as this causes errors or inconsistencies with
  the native vs non-native case.
* This also fixes the "Undefined index: ts_log_id" error
  when running unit tests on postgres.

Change-Id: I30263df22066bd6d4836202b1bcad5d1aa1e7383

4 years agoMerge "cleanupTitles: Don't add 'Broken/' prefix if the title is valid without it"
jenkins-bot [Tue, 30 Jan 2018 02:21:49 +0000 (02:21 +0000)]
Merge "cleanupTitles: Don't add 'Broken/' prefix if the title is valid without it"

4 years agoMerge "Use ::class to resolve class names in includes files"
jenkins-bot [Tue, 30 Jan 2018 02:16:28 +0000 (02:16 +0000)]
Merge "Use ::class to resolve class names in includes files"

4 years agoMerge ".mailmap: Fix my name to use the form used elsewhere"
jenkins-bot [Tue, 30 Jan 2018 02:09:02 +0000 (02:09 +0000)]
Merge ".mailmap: Fix my name to use the form used elsewhere"

4 years agoMerge "Make DatabaseMysqlBase::insertSelect() safer to use"
jenkins-bot [Tue, 30 Jan 2018 01:57:26 +0000 (01:57 +0000)]
Merge "Make DatabaseMysqlBase::insertSelect() safer to use"

4 years agoMerge "Hide link to ApiSandbox in ApiSandbox"
jenkins-bot [Tue, 30 Jan 2018 01:57:21 +0000 (01:57 +0000)]
Merge "Hide link to ApiSandbox in ApiSandbox"

4 years agoobjectcache: add some WANObjectCache comments to set() and delete()
Aaron Schulz [Tue, 30 Jan 2018 01:29:20 +0000 (17:29 -0800)]
objectcache: add some WANObjectCache comments to set() and delete()

Change-Id: I527f1244c5c7cece888ace25e7a01653cf2b9542

4 years agoresourceloader: Add minified version of mw.loader.implement() wrapper
Timo Tijhof [Mon, 29 Jan 2018 23:30:23 +0000 (15:30 -0800)]
resourceloader: Add minified version of mw.loader.implement() wrapper

Follows-up b7eb243d92, which changed minification to be per-module,
but had as result that the little implement() wrapper is not always
minified, e.g. when outputting modules that have minification disabled
(such as 'user.tokens' and 'user.options').

Rather than introducing some complex minification cache for the
wrapper (with a find and replace for the variable content), simply
add a hardcoded minified version of the wrapper.

Change-Id: Iccf0d3408beab4387031cc55689394ff67e1e64b

4 years agoresourceloader: Disable minify for embedded 'user.options' module
Timo Tijhof [Mon, 29 Jan 2018 23:14:19 +0000 (15:14 -0800)]
resourceloader: Disable minify for embedded 'user.options' module

Follows-up 6fa489392815 (T84960), which disabled minification
for 'user.tokens'.

In 2014 'user.tokens' module was changed to change tokens on every page view,
even for the same user within a short period of time. This led to a huge
minify-cache growth, and we subsequently disabled caching for its minification

Since then, we have also done:
* Disable minification for 'user.tokens' more generally, given
  that it's just a simple JSON blob and we already pass down the 'debug' mode
  flag down to the creation of that blob, so there's virtually nothing to left
  to minify.
* Disable minification for mw.config.set(). Config values are exported by
  ResourceLoaderClientHtml and not part of any module. Given that since 2015
  we minify per-module and not per-response (b7eb243d92) that means config
  data naturally doesn't go through minification, which is good, because
  just like for 'user.tokens', the config data is JSON which is already created
  without whitespace. Minification would be pointless.

However, 'user.options' is still being minified and cached, and makes up about
25% of the 'resourceloader:minify-js.*' keys in APC on Wikimedia servers.

Unlike 'user.tokens', the minify cache for 'user.options' does actually get
used by subsequent page views from the same user (unless preferences changed).

However, it isn't useful because it's plain JSON and already compressed enough.
Besides, the blob is so small that it's not worth the overhead of cache-checking.
If we would want to minify it, I'd recommend we re-minify each view without cache.

Change-Id: Ic0ffb0e23df9b40e2c1283c89bd876a5c0555951

4 years agoMerge "Revert "selenium: add new message banner test to user spec""
jenkins-bot [Mon, 29 Jan 2018 20:55:23 +0000 (20:55 +0000)]
Merge "Revert "selenium: add new message banner test to user spec""

4 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Mon, 29 Jan 2018 20:54:35 +0000 (21:54 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: Ia30ac7ea1fbab5248058c09f793c583f73dc27c7

4 years agoRevert "selenium: add new message banner test to user spec"
Jdlrobson [Mon, 29 Jan 2018 19:47:07 +0000 (19:47 +0000)]
Revert "selenium: add new message banner test to user spec"

This reverts commit 6ca3e221d1b907f55462394f910f283bb3627cc9.
This is breaking CI for the Minerva skin and Echo as Echo changes how
this interaction works. When the browser test tries to locate the
div.usermessage it has moved so fails.

This test needs to be rewritten to take this into account.

On a side note, given usermessage is generated by all skins (and not
in core) there is a big argument to be made that this shouldn't be in
core but in the individual skins. MinervaNeue the mobile skin notably
does not use this class so this test would always fail on a mediawiki
instance which only uses the Minerva skin.

Bug: T185928
Change-Id: I43b6cf328aaf4a4fded0bb9746716c4cc9d8f364

4 years agoMerge "benchmarks: Add benchmarkSanitizer.php"
jenkins-bot [Mon, 29 Jan 2018 19:14:10 +0000 (19:14 +0000)]
Merge "benchmarks: Add benchmarkSanitizer.php"

4 years agoMerge "benchmarks: Add rate per second and standard deviation to output"
jenkins-bot [Mon, 29 Jan 2018 19:14:07 +0000 (19:14 +0000)]
Merge "benchmarks: Add rate per second and standard deviation to output"

4 years agoRCFilters: replace usages of deprecated getSelectedItem
Stephane Bisson [Mon, 29 Jan 2018 16:59:55 +0000 (11:59 -0500)]
RCFilters: replace usages of deprecated getSelectedItem

Use findSelectedItem instead.

Change-Id: Id13a1a94a2808910f3a2f2e434551229016ac865

4 years ago.mailmap: Fix my name to use the form used elsewhere
James D. Forrester [Mon, 29 Jan 2018 15:57:02 +0000 (07:57 -0800)]
.mailmap: Fix my name to use the form used elsewhere

Change-Id: I0468a185d19cade3f2c51947190111a66cccc129

4 years agoMerge "API: Allow to pass whitespaces in MultiValue"
jenkins-bot [Mon, 29 Jan 2018 15:31:43 +0000 (15:31 +0000)]
Merge "API: Allow to pass whitespaces in MultiValue"

4 years agoHide link to ApiSandbox in ApiSandbox
Brad Jorsch [Mon, 29 Jan 2018 14:31:16 +0000 (09:31 -0500)]
Hide link to ApiSandbox in ApiSandbox

It's a bit redundant. Wrap the paragraph with the link in an appropriate
CSS class, and add a rule to mediawiki.special.apisandbox.css to hide it
when inside ApiSandbox.

Bug: T185855
Change-Id: I118e535420e3395268fe99aa0f69f2b032340d53

4 years agoMerge "benchmarks: Simplify benchmarkLruHash.php by using a --method option"
jenkins-bot [Mon, 29 Jan 2018 12:53:22 +0000 (12:53 +0000)]
Merge "benchmarks: Simplify benchmarkLruHash.php by using a --method option"

4 years agoMerge "selenium: add new message banner test to user spec"
jenkins-bot [Mon, 29 Jan 2018 11:53:46 +0000 (11:53 +0000)]
Merge "selenium: add new message banner test to user spec"

4 years agobenchmarks: Add benchmarkSanitizer.php
Timo Tijhof [Sat, 27 Jan 2018 17:46:12 +0000 (09:46 -0800)]
benchmarks: Add benchmarkSanitizer.php

Covering the following common methods:

* validateEmail (input=valid, input=invalid)
* encodeAttribute (input=simple, input=special)
* safeEncodeAttribute (input=simple, input=special)
* removeHTMLtags (input=small, input=large)
* stripAllTags (input=small, input=large)

Change-Id: I3c645e960607ab247bd30324a2e70eb5fbcc5d6e

4 years agobenchmarks: Add rate per second and standard deviation to output
Timo Tijhof [Sun, 28 Jan 2018 21:46:32 +0000 (13:46 -0800)]
benchmarks: Add rate per second and standard deviation to output

* Convert to using RunningStat to ensure mostly constant memory
  usage, instead of storing each result.
* Remove 'median' (no longer possible with this setup).
* Remove 'min' from output.

Change-Id: I6efbc500181eb502c1800165870eee81dbc418a7

4 years agobenchmarks: Simplify benchmarkLruHash.php by using a --method option
Timo Tijhof [Sat, 27 Jan 2018 17:06:12 +0000 (09:06 -0800)]
benchmarks: Simplify benchmarkLruHash.php by using a --method option

Easier to extend.

Change-Id: Ib9c6b3d10caad7de138d8bafd2f0e6e9bbe6a8cc

4 years agoAPI: Allow to pass whitespaces in MultiValue
Fomafix [Sun, 21 Jan 2018 20:58:59 +0000 (21:58 +0100)]
API: Allow to pass whitespaces in MultiValue

This allows to response with an invalidreason instead silently ignore
the parameter.

Example request: api.php?format=json&action=query&titles=%20

Response before this change:
  "batchcomplete": ""

Response with this change:
  "batchcomplete": "",
  "query": {
    "pages": {
      "-1": {
        "title": " ",
        "invalidreason": "The requested page title is empty or contains only the name of a namespace.",
        "invalid": ""

Bug: T185846
Change-Id: I6fdaf32792a0e6e37b08176f975c10607093351b

4 years agoImprove MediaWiki's lock file error message when uploading files
Zoranzoki21 [Sun, 28 Jan 2018 13:56:02 +0000 (13:56 +0000)]
Improve MediaWiki's lock file error message when uploading files

Bug: T181453
Change-Id: I1e78d5eadd19c5cf203b8f4bbc8ab6d533307a15

4 years agoMove @group and @covers tags in tests close to class
Umherirrender [Sun, 28 Jan 2018 12:30:07 +0000 (13:30 +0100)]
Move @group and @covers tags in tests close to class

For @group and @covers tags there should be no newline between the
comment and the class

Change-Id: I7277df13a332cf4d74ffdd8748e3fbdc259610dc

4 years agoUpdate CREDITS file to include new contributors
Alangi Derick [Fri, 19 Jan 2018 12:33:36 +0000 (13:33 +0100)]
Update CREDITS file to include new contributors

Ran the updateCredits.php script to include new contributors of
MW and its extensions into the CREDITS file after a while. Keeping
the contributor list updated is useful.

Change-Id: I491c35285b562e1792715b83c674b8f1173add77

4 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Sat, 27 Jan 2018 21:04:00 +0000 (22:04 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I2839c3d3bdb2b229e2cb8226af32964cfc2669ab

4 years agoUse ::class to resolve class names in includes files
Umherirrender [Sat, 13 Jan 2018 00:02:09 +0000 (01:02 +0100)]
Use ::class to resolve class names in includes files

This helps to find renamed or misspelled classes earlier.
Phan will check the class names

Change-Id: I07a925c2a9404b0865e8a8703864ded9d14aa769

4 years agoMerge "benchmarks: Improve readme and convert to Markdown"
jenkins-bot [Sat, 27 Jan 2018 13:20:47 +0000 (13:20 +0000)]
Merge "benchmarks: Improve readme and convert to Markdown"

4 years agoRemove deprecated PreparedEdit properties
addshore [Sat, 27 Jan 2018 00:57:13 +0000 (16:57 -0800)]
Remove deprecated PreparedEdit properties

The following properties of PreparedEdit were deprecated in
1.21 and have been removed:
  * PreparedEdit->newText
  * PreparedEdit->oldText
  * PreparedEdit->pst

These have no use left in core or extensions.

Change-Id: Ic48c817aaf3fbb6d5f33678fcb4843180f0bc9fb

4 years agobenchmarks: Improve readme and convert to Markdown
Timo Tijhof [Sat, 27 Jan 2018 00:31:54 +0000 (16:31 -0800)]
benchmarks: Improve readme and convert to Markdown

* Add sections.
* Rename to *.md.
* Document that taskset is Linux-specific.

Change-Id: If6c5e54eda4dd1d6ea02445efa73e356dbc49016

4 years agoRemove "Created on" from file header comments
Umherirrender [Fri, 12 Jan 2018 21:03:53 +0000 (22:03 +0100)]
Remove "Created on" from file header comments

It is the job of git and svn to provide this information/metadata.
The form was different, some with short, some with long month name
some with leading zero at the day, some without.
The year is also present in the Copyright clause

Change-Id: If006907b82b9e45f13cfa2e45d41107a95570e1a

4 years agoUse ::class to resolve class names in tests
Umherirrender [Sat, 13 Jan 2018 00:02:09 +0000 (01:02 +0100)]
Use ::class to resolve class names in tests

This helps to find renamed or misspelled classes earlier.
Phan will check the class names

Change-Id: Ie541a7baae10ab6f5c13f95ac2ff6598b8f8950c

4 years agoLocalisation updates from https://translatewiki.net.
Translation updater bot [Fri, 26 Jan 2018 21:15:50 +0000 (22:15 +0100)]
Localisation updates from https://translatewiki.net.

Change-Id: I3c040bc4add0a8c325afa5d8403e8ce3f5842060

4 years agoMerge "rdbms: Simplify Database::factory()"
jenkins-bot [Fri, 26 Jan 2018 19:38:07 +0000 (19:38 +0000)]
Merge "rdbms: Simplify Database::factory()"

4 years agoMerge "Gallery: Use Parser::parseWidthParam() for gallery dimensions"
jenkins-bot [Fri, 26 Jan 2018 18:17:55 +0000 (18:17 +0000)]
Merge "Gallery: Use Parser::parseWidthParam() for gallery dimensions"

4 years agoMerge "Revert and fix "Revert "EditPage: Show EditFilterMergedContent hook errors...
jenkins-bot [Fri, 26 Jan 2018 18:01:45 +0000 (18:01 +0000)]
Merge "Revert and fix "Revert "EditPage: Show EditFilterMergedContent hook errors in an errorbox"""

4 years agoMerge "Improve 1-letter variable names in MutableContext and implementations"
jenkins-bot [Fri, 26 Jan 2018 17:49:40 +0000 (17:49 +0000)]
Merge "Improve 1-letter variable names in MutableContext and implementations"

4 years agoRevert and fix "Revert "EditPage: Show EditFilterMergedContent hook errors in an...
Brad Jorsch [Fri, 26 Jan 2018 17:12:28 +0000 (09:12 -0800)]
Revert and fix "Revert "EditPage: Show EditFilterMergedContent hook errors in an errorbox""

Instead of making a one-line fix to fix the issue in T149473, the change
was reverted.

This reverts commit 022f26e9fd3ae865331f3bb1b3eec63e212240c9.
This reverts commit 12f170502cfef525344ae69caef6240eaafbf63f.

Bug: T149473
Bug: T185638
Change-Id: Ib44ba2a6d2405309ad91bcc4d6440d05b67379da

4 years agoMake DatabaseMysqlBase::insertSelect() safer to use
Brad Jorsch [Fri, 26 Jan 2018 06:02:22 +0000 (22:02 -0800)]
Make DatabaseMysqlBase::insertSelect() safer to use

Certain server configurations, including the current MariaDB defaults,
make INSERT SELECT unsafe for replication in MySQL/MariaDB. When the
server configuration is not known to be safe, force the use of the
non-native implementation. Note this only has effect in CLI mode, as
non-CLI mode already forces the non-native implementation since

Also, native INSERT SELECT won't be safe with any statement-based
replication method if the order of rows in the SELECT is not
deterministic. Add a warning to the method's documentation pointing this

Change-Id: I9173f6559809bd01830bd0a9f443c7269cc58ce2