Get rid of the hack that turns unicode into hexadecimal codes for
browsers that don't support unicode, and prevent their edits entirely.
And instead of relying on $wgBrowserBlacklist, use a hidden HTML form
field - if the contents are mangled and don't match the original, then
reject the edit.
Bug: T67297
Change-Id: I20c2e396d7dfd6a3b23b94b218f94a847522576b
Convert newlines and tabs to spaces (which can be unencoded),
and consolidate runs of multiple spaces into a single space.
Also remove any leading and trailing spaces that might result
(most files end in a newline, for example).
Bug: T175318
Change-Id: Ic66c6acb37079cae84dd80ab2d5f2c829cf2df96
When a URL (data: or otherwise) contains quotes, don't wrap it in
double quotes (") but in single quotes ('). This then allows
us to unencode double quotes (") in the data URI embedding of SVGs.
Bug: T175318
Change-Id: I3e7eab64e1c3e82066014fb594f82d786983ce90
Defaults come from either the backend or the saved queries, and that can
also change during the session. Allow the system to update itself properly
over whether defaults are empty at any given state, and hide/show the
proper button at the correct state.
Bug: T172387
Change-Id: I173c72a391886b41e899ac64621b504c5eb55b0c
It was already supported for only=scripts and only=styles, but
not yet for general modules loaded as 'combined'.
This is especially useful for general modules that are private/embedded,
as this allows us to skip the loader.implement() boilerplate.
Bug: T176159
Change-Id: I83e9f74dad75867c10ebd0a94b87c31e4adbb57f
Apparently that is intentional and documented. Huh. Whoops.
This reverts commit 0f1cc3bb6e.
Also add test cases for this bizarre function.
Change-Id: I0311f7c85cd575f2a66d50589ec364072be486fb
For this, we also need to check for saved query visibility on the
saved query model initialization, because since the model starts
its life all-empty, if the saved query is also all-empty, it will
not trigger any item updates on the main model.
Bonus: Actually check whether defaults are empty; there was a
typo and problem with the original test.
Bug: T172387
Change-Id: Ibc536b577e4c3abcc04fa229f9978b651b2f9e61
The underlying logic is in mw.loader#execute and mw.loader#runScript,
but currently untested.
Adding tests in prep for refactoring this code.
Change-Id: I77ffb5f23443e24ca1d86f36ddf434673e9c1538
The same behavior was implemented by Xml::listDropDown(),
Article::confirmDelete() and HTMLFormField::getOptions().
A new function Xml::listDropDownOptions() is added and
all three are changed to use it.
Additionally:
* Xml::listDropDown() now uses XmlSelect internally to generate the
dropdown HTML.
* Xml::listDropDownOptionsOoui() is introduced to handle converting
the existing format to the OOUI format, which was previously
duplicated in Article::confirmDelete() and HTMLFormField::getOptionsOOUI().
* This change allows HTMLForm 'select' fields (HTMLSelectField) to
support nested options (optgroups) in OOUI mode. This is a
prerequisite for T117781.
Bug: T117781
Change-Id: I0a088f61eb32ec59677113583c7ecdcbc3fd2af0
SiteStatsTest::testJobsCountGetCached() is somewhat flaky in that if it
runs after a test that adds a page (thereby producing htmlCacheUpdate
and recentChangesUpdate jobs) but doesn't have the CI framework reset
the `page` tables (which has the side effect of clearing all such jobs),
it will fail.
This change manually clears those jobs so it doesn't depend on test
ordering.
Change-Id: I1277e633c81b29bda7564fa12d23f13ded7298c7
* in links (T103714)
* in indicators (T104196)
This change removes the automatic Sanitizer::decodeCharReferences from
Sanitizer::escapeId and Sanitizer::escapeIdInternal. Where decoding of
HTML entities are wanted an explicit call to
Sanitizer::decodeCharReferences is added.
Explicit decode HTML entities in non local autocomments. (T104311)
Bug: T103714
Bug: T104196
Bug: T104311
Change-Id: I88e8e2077e6f5eec2b232391f7818370894a62dc
* An open <dt> (;) should be closed when we encounter a new <dd> (:)
char even if it is on a new line that has other nested lists inside.
* Tidy was hiding this PHP parser bug by closing a <dt> and opening
a <dd> when given this HTML: "<dl><dt>a<ul><li>b</li></ul></dt></dl>"
It generates "<dl><dt>a</dt><dd><ul><li>b</li></ul></dd></dl>"
However, a HTML5 parser like RemexHTML, domino (used by Parsoid),
or browsers don't do this fixup.
* So, what I thought was a bug in RemexHTML turned out to be a bug
in the PHP parser that was being hidden by the use of Tidy.
* Added a regression test.
Bug: T175099
Change-Id: I6d5b225b82cecf9a43f23837ed8ec359b31aadad
ParserTestRunner::addArticle() set a dummy $wgParser to ease test
running. However if doEditContent() fails, it would abort and never
restore $wgParser.
Make sure the restoration is done even on exception.
I caught that one while running parser tests with Scribunto and Cite. My
setup lacked a luastandalone which causes Scribunto to throw an
exception. When the Cite tests are run, the MessageCache parser ended up
using $wgParser = ParserTestMockParser;
Change-Id: I33a0a5c1f40f197405d40b7925cc043342e6757e