Commit graph

2036 commits

Author SHA1 Message Date
jenkins-bot
eb88d78c3a Merge "Refactor magic word implementations out of Parser.php" 2020-04-22 08:34:54 +00:00
jenkins-bot
f898b49c98 Merge "docs: Hook interface doc comment review" 2020-04-21 06:41:19 +00:00
jenkins-bot
cc89a81451 Merge "Automatically generated hook interfaces" 2020-04-21 00:07:41 +00:00
apaskulin
c44488f725 docs: Hook interface doc comment review
Edited doc comments for hook interfaces to improve
consistency and add type hints.

Bug: T246855
Change-Id: I38fa802463cd6f39bf5946dbbeb1b3ebaea604b2
2020-04-21 09:10:08 +10:00
DannyS712
4721717527 Replace uses and hard deprecate Article:: and WikiPage::getRevision
Bug: T250532
Bug: T239975
Change-Id: Ic8f2baa0ac805d5196a7107bdc7a1abb36eba139
2020-04-20 23:06:48 +00:00
jenkins-bot
ad4c3e47cc Merge "Replace uses and hard deprecate Revision::newFromTitle" 2020-04-20 15:29:28 +00:00
jenkins-bot
8655ac0358 Merge "Deprecate ParserOptions::getTidy() and ParserOptions::setTidy()" 2020-04-20 06:19:41 +00:00
C. Scott Ananian
85e1525862 Deprecate ParserOptions::getTidy() and ParserOptions::setTidy()
These options no longer have any effect.

Bug: T198214
Change-Id: Icc3eaed7ab8a3070c4339b272d580328ba40912d
2020-04-19 22:53:39 -07:00
Tim Starling
f5aaf75ad1 Automatically generated hook interfaces
Add hook interfaces which were generated by a script which parses
hooks.txt and identifies caller namespaces and directories.

Hook interfaces are mostly placed in a Hook/ subdirectory
relative to the caller location. When there are callers in multiple
directories, a "primary" caller was manually selected. The exceptions to
this are:

* The source root, maintenance and tests, which use includes/Hook. Test
  hooks need to be autoloadable in a non-test request so that
  implementing test interfaces in a generic handler will not fail.
* resources uses includes/resourceloader/Hook
* The following third-level subdirectories had their hooks placed in
  the parent ../Hook:
    * includes/filerepo/file
    * includes/search/searchwidgets
    * includes/specials/forms
    * includes/specials/helpers
    * includes/specials/pagers

Parameters marked as legacy references in hooks.txt are passed
by value in the interfaces.

Bug: T240307
Change-Id: I6efe2e7dd1f0c6a3d0f4d100a4c34e41f8428720
2020-04-20 13:31:05 +10:00
DannyS712
0f826d1f73 Replace uses and hard deprecate Revision::newFromTitle
Also fixed a use of ::newFromId in benchmarkParse and Parser

Bug: T249183
Change-Id: I3219a72f1085836205dc497e2236b52db24d7c16
2020-04-18 04:47:10 +00:00
C. Scott Ananian
b328aa3311 Add ParserBeforePreprocess hook
This will allow us to deprecate the ParserBeforeStrip and ParserAfterStrip
hooks by covering the one case where ParserBeforeStrip is called but
ParserBeforeInternalParse is not.

Bug: T250450
Change-Id: Ia298fecba77e97fc30dc30a09ac69a4239767d8c
2020-04-17 17:20:22 -04:00
C. Scott Ananian
95350d3dcf Deprecate ParserBeforeTidy hook
Untidy parser output should not be exposed outside mediawiki core.
Callers should use ParserAfterTidy instead.

Code search:
https://codesearch.wmflabs.org/deployed/?q=ParserBeforeTidy&i=nope&files=&repos=
https://codesearch.wmflabs.org/search/?q=ParserBeforeTidy&i=nope&files=&repos=

Depends-On: Ia6bd94fc937a9bff77843e6734e88ba8991d04ec
Change-Id: I4a0aae7b17fb522a5e4f90edad3a0b7137b270a6
2020-04-17 17:20:20 -04:00
C. Scott Ananian
afb5b38e15 Correct capitalization of BeforeParserFetchTemplateAndTitle hook
We deprecate the incorrect capitalization and add a new hook with the
correct capitalization.  There are very few users of this hook, and none
in WMF-deployed code.

WMF-deployed code search:
https://codesearch.wmflabs.org/deployed/?q=BeforeParserFetchTemplateAndtitle&i=nope&files=&repos=

Everything code search:
https://codesearch.wmflabs.org/search/?q=BeforeParserFetchTemplateAndtitle&i=nope&files=&repos=

It would be tempting to remove this hook entirely, but it seems to
serve a valuable purpose in allowing page and template fetches at a
specific "old" timestamp.  (Extension:Memento and Extension:TimeTravel
don't seem to have implemented this feature, however.)

Change-Id: I501b0ee35b81fee424d45084088a6ed63c3dfd54
2020-04-17 17:19:44 -04:00
C. Scott Ananian
d8bb54a965 Deprecate infrequently-used parser-related hooks
The following parser-related hooks have no users in deployed code:
- InternalParseBeforeSanitize
- ParserFetchTemplate
- ParserSectionCreate
- ParserPreSaveTransformComplete
- BeforeParserrenderImageGallery

Code search in WMF-deployed code:
https://codesearch.wmflabs.org/deployed/?q=%5Cb%28InternalParseBeforeSanitize%7CParserFetchTemplate%7CParserSectionCreate%7CParserPreSaveTransformComplete%7CBeforeParserrenderImageGallery%29%5Cb&i=nope&files=&repos=

Code search in all code:
https://codesearch.wmflabs.org/search/?q=%5Cb%28InternalParseBeforeSanitize%7CParserFetchTemplate%7CParserSectionCreate%7CParserPreSaveTransformComplete%7CBeforeParserrenderImageGallery%29%5Cb&i=nope&files=&repos=

Removing as many infrequently-used hooks as possible will aid our
transition from the legacy parser to alternative parsers.

Bug: T236809
Change-Id: I3a09fbe6436232ae0b417ad61b19f8df6d0485e0
2020-04-17 17:18:01 -04:00
C. Scott Ananian
7a2331706f Deprecate Parser::firstCallInit()
Originally we created a Parser object on every request, and so care
was taken to make Parser construction lightweight.  In particular,
all potentially costly initialization was moved into a separate
Parser::firstCallInit() method.  Starting with 1.32, parser construction
has instead been done lazily, via the ParserFactory registered with
MediaWikiServices.  The extra complexity associated with the old manual
lazy initialization of Parser is therefore no longer needed.

Deprecate Parser::firstCallInit() as part of a general plan to refactor
the Parser class to allow subclasses and alternate parser implementations.
Add some tests to assert that parsers are being created lazily, and are
not being created when they are not needed.

Bug: T250444
Change-Id: Iffd2b38a2f848dad88010d243250b37506b2c715
2020-04-17 12:49:34 -04:00
C. Scott Ananian
8546e633b1 Make Parser::$mVariables private
This was overlooked in a5afda55bf, probably
because casual inspection of
 https://codesearch.wmflabs.org/deployed/?q=mVariables&i=nope&files=&repos=
made it look like extensions/AbuseFilter was using Parser::$mVariables.

But AbuseFilterParser (and AbuseFilterCachingParser) is its own thing, not
a subclass of Parser, and the (re)use of the $mVariables name for the
property is just coincidence.

Change-Id: I4debb11c804b2ef4f1b727d521f38f35de691708
2020-04-17 12:49:34 -04:00
DannyS712
84ef6d8315 Add RevisionRecord alternatives to Parser and ParserOptions methods
The following Parser methods were deprecated in favor of new methods:
- ::fetchCurrentRevisionOfTitle (use fetchCurrentRevisionRecordOfTitle)
- ::statelessFetchRevision (use statelessFetchRevisionRecord)
- ::getRevisionObject (use getRevisionRecordObject)

The following ParserOptions methods were likewise deprecated:
- ::getCurrentRevisionCallback (use getCurrentRevisionRecordCallback)
- ::setCurrentRevisionCallback (use setCurrentRevisionRecordCallback)

To ensure backwards compatibility with calling the ParserOptions
CurrentRevisionCallback methods, while allowing extensions to call
the CurrentRevisionRecordCallback methods without worrying about if
other extensions also deployed have been updated, both
::getCurrentRevisionCallback and ::getCurrentRevisionRecordCallback,
if the respective option is still set to the default, check if the
other option is set and, if it is, convert the other option rather
than returning thed default.

It's not pretty, but it works, and will be hard deprecated shortly
and removed in 1.36.

Bug: T249384
Change-Id: I66cbcb963a96cc49c75ca72faa7e439ae6d6614d
2020-04-17 16:29:09 +00:00
C. Scott Ananian
a2cb76937d Hard deprecate Parser::OutputType and Parser::Options
These were deprecated earlier.

Code search: https://codesearch.wmflabs.org/deployed/?q=-%3E%28OutputType%7COptions%29%5C%28&i=nope&files=&repos=

Depends-On: I548a710cdfa0eedb5a28b4e0196839995f5de568
Depends-On: I08b0788461fae5fa48818aa2eda01c866499b30e
Depends-On: I70e0ecb201d5ffdc3ccb75caf552a1dee4ad9e60
Depends-On: Ieea168b47e1a0f5b67d0e2db8503281e0f4743c8
Change-Id: I7e1902158e5bfa1a2466e2e30e13cb396228eab7
2020-04-16 16:37:02 -04:00
C. Scott Ananian
7dd65ba43d Deprecate old-style accessor/mutation methods of Parser
Parser::Options(), Parser::OutputType(), and Parser::Title() have been
deprecated.  All of these had incomplete replacements with either a
::get* method or a ::set* method (and in the case of Title, both).
Add the missing getters or setters where required.

Only Parser::Title() has been hard deprecated.  Replacing the other
uses in deployed code requires the newly-added Parser::getOutputType()
or Parser::setOptions() methods, so we can't replace those methods in
our deployed code after this patch has been merged.

Code search:
https://codesearch.wmflabs.org/deployed/?q=-%3E%28OutputType%7CTitle%7COptions%29%5C%28&i=nope&files=&repos=

Bug: T236809
Change-Id: I0b4d5f170216597afb259cedbb13b8028d284715
2020-04-16 16:37:02 -04:00
C. Scott Ananian
0eaaceea3e Hard-deprecate direct calls to Parser::__construct()
These were deprecated in 1.34, but let's put in some hard deprecation
warnings for 1.35 since this class is certainly going to be refactored
in the future to allow both the legacy parser and Parsoid to extend
Parser as a base class.  Access via the ParserFactory will be fine,
but cut down on the number of different ways Parsers can be constructed
and initialized.

Code search:
https://codesearch.wmflabs.org/deployed/?q=new%20Parser%5C%28&i=nope&files=&repos=
https://codesearch.wmflabs.org/deployed/?q=getMockBuilder%5C%28%20Parser%3A%3A&i=nope&files=&repos=
https://codesearch.wmflabs.org/deployed/?q=new%20Parser%3B&i=nope&files=&repos=

Bug: T236811
Depends-On: Ib3be450c55e1793b027d9b4dae692ba5891b0328
Depends-On: I9d16513f8bd449a43b0a0afbd73651a5c0afa588
Depends-On: I74efda708470efeb82f8f80346ec1ee7e9fd8f2b
Depends-On: I777475d0ab0144e53240173f501d6c8da35d33fb
Change-Id: If36283ec0b78b188b61f658639105d1ed7653e0a
2020-04-16 16:34:34 -04:00
jenkins-bot
b75d059690 Merge "Deprecate $wgParserConf" 2020-04-16 20:32:36 +00:00
jenkins-bot
ff4134cb9f Merge "Parser: Add type hints for objects, arrays and callables" 2020-04-16 20:21:15 +00:00
jenkins-bot
15814387e6 Merge "Remove ParserDiffTest" 2020-04-16 20:07:43 +00:00
C. Scott Ananian
a286a59e86 Deprecate $wgParserConf
This setting has been effectively constant since 2008.  In modern code
we should be using a ParserFactory instead to customize Parser creation
and not calling the Parser constructor directly (T236811).

Because the ParserFactory is cached, which freezes the current value of
the content language and other options, we need to reset the ParserFactory
object when running parser tests (T248977).  Thanks to
Peter Ovchyn <peter.ovchyn@speedandfunction.com> for first uncovering this
issue and suggesting a fix in I4203bf7719a8555a09b72cdb5b1ae7a6e1505acf.

Code search:
https://codesearch.wmflabs.org/deployed/?q=wgParserConf&i=nope&files=&repos=
https://codesearch.wmflabs.org/deployed/?q=ParserConf&i=nope&files=&repos=

Bug: T248977
Bug: T236811
Depends-On: I97d58750c91b06eeca5d810509becdf53a39cc95
Depends-On: Idf59cd54146d31c1c32883f4318e6a0bf60e1a8a
Change-Id: I787f22ea9bf59a049b13631ba6974866a1300988
2020-04-16 15:57:37 -04:00
jenkins-bot
3e29dd85ed Merge "doxygen: Changed Doxygen tags causing warnings during documentation generation" 2020-04-16 18:45:56 +00:00
C. Scott Ananian
37dc40c5df Remove ParserDiffTest
This class was last used in ~2008 as @tstarling was developing the
original wikitext Parser.  It has since code-rotted and wouldn't work
as a drop in for the Parser class any more anyway.  We'll probably
(re)invent something similar when we eventually switch Message
rendering from the legacy parser to Parsoid, but this existing code
isn't a good starting point for that; we'll need to tackle T236812
(splitting Parser into a base class) first.

Last meaningful change to ParserDiffTest:
350b498b9f

Code search:
https://codesearch.wmflabs.org/search/?q=ParserDiffTest&i=nope&files=&repos=

Bug: T236811
Change-Id: I98f1ef8ad296791a810bd8b10343f8640fd23c5e
2020-04-16 14:40:05 -04:00
jenkins-bot
048fb62c66 Merge "Upgrade phan to 0.10.2" 2020-04-16 14:43:06 +00:00
Daimona Eaytoy
dbb23e3952 Upgrade phan to 0.10.2
Amongst other things, this version of phan bundles taint-check, which is
however disabled in the config file because there are lots of issues to
be fixed.

Upgrading phan alone now means that we can have a clean baseline for the taint-check upgrade.

Bug: T248630
Change-Id: I8ab7ef9a9e73952098664176aad6c2b3b88095ee
2020-04-16 00:28:13 +00:00
jenkins-bot
fc34187473 Merge "ParserCache::get use WikiPage only as argument" 2020-04-15 19:13:23 +00:00
Holger Knust
471d2371ab doxygen: Changed Doxygen tags causing warnings during documentation generation
Updated Doxygen markup in several .php files triggering warnings when mwdocgen.php is executed. Removed
obsolete settings MSCGEN_PATH and TCL_SUBST from Doxyfile. The former would generate a warning in 1.8.16
while TCL support was removed in 1.8.18. Since TCL_SUBST was blank anyway, it was removed prior to getting
to .18 in production. Increased DOT_GRAPH_MAX_NODES from 50 to 200 since Doxygen complained about it being
too low for API and Maintenance.

Bug: T248706
Change-Id: I9c67f0807d1b43089d351263d4f591dee5501f36
2020-04-14 03:25:19 +00:00
C. Scott Ananian
83a22b7fcd Remove codepaths which ran parser in 'untidy' mode
Disabling tidy has been deprecated since 1.33.  This cleans up the code
paths which still used untidy output.

Bug: T198214
Change-Id: I821ef3b8f59b272d983583d407b2f0794fe1e791
2020-04-13 21:34:04 +00:00
ArtBaltai
13ae7b807f ParserCache::get use WikiPage only as argument
ParserCache work only with WikiPage,remove Article and Page interfaces
Rename WikiPage property names and type hintings

Bug: T248719
Change-Id: I08afded432b059f94538be574a4789e18e89bf03
2020-04-12 03:49:48 +03:00
Fomafix
99104944e8 Parser: Add type hints for objects, arrays and callables
Also
* remove unneeded reference &$user in getUserSig.
* add missing false in Doxygen tags.

Change-Id: Icc3860cda66918f56d9014d6c19c4be47d4b5464
2020-04-11 15:49:06 +02:00
C. Scott Ananian
0a53c9725a Refactor magic word implementations out of Parser.php
This allows them to be more easily reused by other Parser implementations
(ie, Parsoid), and helps keep Parser.php compact.

Bug: T236813
Change-Id: I68fb1e786374e445b7df047934c532d7e10b8e94
2020-04-10 14:43:40 -04:00
C. Scott Ananian
8c18f2b41c Add a wfDeprecated to an overlooked code path where parser output is not tidy
We formally deprecated running the parser with tidy disabled in 1.33, but
I missed a hard-deprecation on this code path.

Be careful not to spam the logs with deprecation warnings triggered by
(deprecated) API requests, though.

Change-Id: I10f64e76ec0c5aee8b26fc00bc11ebb0e39f961b
2020-04-02 11:53:53 -04:00
jenkins-bot
baabeb458f Merge "Deprecate most public fields of Parser; make private those unused outside core" 2020-04-01 15:11:07 +00:00
C. Scott Ananian
8a1c656150 Hard deprecate ParserCache::singleton(), deprecated in 1.30
Code search:
https://codesearch.wmflabs.org/search/?q=ParserCache%5Cs*%3A%3A%5Cs*singleton&i=fosho&files=&repos=

Bug: T249032
Change-Id: I22308bb2530a4aaa6a29e42d50fd679b932a6e9f
2020-04-01 10:31:38 -04:00
C. Scott Ananian
a5afda55bf Deprecate most public fields of Parser; make private those unused outside core
Fields which have at least one user outside of mediawiki-core (as reported
by the 'everything' search in codesearch.wmflabs.org) have been deprecated;
those which have no users have been immediately made private.

Code search url for the fields made private:
https://codesearch.wmflabs.org/search/?q=-%3E%28mFunctionSynonyms%7CmFunctionTagHooks%7CmStripList%7CmVarCache%7CmImageParams%7CmImageParamsMagicArray%7CmSubstWords%7CmConf%7CmExtLinkBracketedRegex%7CmUrlProtocols%7CmAutonumber%7CmLinkHolders%7CmDefaultSort%7CmTplRedirCache%7CmForceTocPosition%7CmTplDomCache%7CmOutputType%7CmLangLinkLanguages%7CcurrentRevisionCache%7CmProfiler%7CmLinkRenderer%29&i=nope&files=&repos=

Bug: T248889
Change-Id: I28e88e574ec9f99231bd590e9a87fbc1c4349fa1
2020-03-31 11:47:34 -04:00
C. Scott Ananian
3a7ecc11b4 Prepare to deprecate public fields of Parser
This is preparatory work for I28e88e574ec9f99231bd590e9a87fbc1c4349fa1
which simply splits comma-separated lists into individual lines and
does minor documentation tweaks, so that the main body of the follow-up
patch is easier to review.

Bug: T248889
Change-Id: I196d047ce694fe0e8447bd96455c7fb1b75247e4
2020-03-31 11:47:34 -04:00
C. Scott Ananian
baca583042 Make private some Parser constants
These have no users outside Parser.php.

Code search url for the constants made private:
https://codesearch.wmflabs.org/search/?q=%28EXT_LINK_ADDR%7CEXT_IMAGE_REGEX%7CSPACE_NOT_NL%29&i=nope&files=&repos=

Bug: T248889
Change-Id: I46f19c4386c2f2e8cbdb8979db628493127c1925
2020-03-31 11:47:34 -04:00
C. Scott Ananian
9d12c89378 Remove Parser::$mRevIdForTs
Nothing appears to use Parser::$mRevIdForTs, it's not even initialized.
Remove this unnecessary field.

Code search:
https://codesearch.wmflabs.org/search/?q=mRevIdForTs&i=nope&files=&repos=

Bug: T248889
Change-Id: Ic023cde7e8b1101978c674d0694ab5d4cb9ee900
2020-03-30 23:41:08 +00:00
C. Scott Ananian
a6b1cdac97 Remove Parser::$mIncludeCount
Nothing appears to use Parser::$mIncludeCount, not even the parser itself.
Remove this unnecessary field.

Code search:
https://codesearch.wmflabs.org/search/?q=mIncludeCount&i=nope&files=&repos=

Bug: T248889
Change-Id: I15892c5bfdc6a1f2763824f4a9e5cfbc90e48b54
2020-03-30 21:46:23 +00:00
C. Scott Ananian
f35fcb811a Remove Parser::$mDefaultStripList
The reset state of the Parser $mStripList was made a public field,
presumably so it could be customized by extensions?  But nobody seems
to have ever used this.  Remove this unnecessary extension point.

Code search:
https://codesearch.wmflabs.org/search/?q=mDefaultStripList&i=nope&files=&repos=

Bug: T248889
Change-Id: I10fa521f62e6b9696ab6b96bcf7eb05091b35022
2020-03-30 21:45:28 +00:00
C. Scott Ananian
a3c9621ad0 Deprecate unusual uses of the ParserGetVariableValueSwitch hook
Ensure that the value returned is always also added to the cache, since
we (eventually) want to remove the hook's access to
$parser->mVarCache.  Also don't allow monkeying with the value passed
as $magicWordId, even though it's a reference.

Code search:
https://codesearch.wmflabs.org/deployed/?q=ParserGetVariableValueSwitch&i=nope&files=&repos=

Bug: T236813
Depends-On: Ia12faefada7e4cf04f1a6b12b3ed1703bf28e437
Depends-On: Ia9e2e00c6b7d0e62cbe80c3b124165b691b1ff3d
Depends-On: I1e48fa47b8723958d543a69aaf9b62b872200dc5
Depends-On: If9a0885a8664c22473ade712364c2dd0a5c04e0b
Change-Id: I3d6b281f8e4e0bf68eefbf9767047527b4573b79
2020-03-27 08:59:21 -04:00
C. Scott Ananian
063445581c Always cache magic word expansions
The existing magic word API (including hooks) gives implementers direct
access to $parser->mVarCache and full control of caching.  Simplify the
implementation (prior to moving the magic word implementations out of
Parser.php) by always caching built-in magic words in $parser->mVarCache.

The cases which were skipping the cache don't vary anyway.

This behavior change is split from the rest of the refactoring in
I68fb1e786374e445b7df047934c532d7e10b8e94 to allow it to be deployed
separately, just in case there was some strange reason this would
cause regressions in practice.

Bug: T236813
Change-Id: I34a0d9a37e41c854c801d546427fc8cd0fe39dc4
2020-03-27 08:58:39 -04:00
C. Scott Ananian
99f6b82995 Deprecate the ParserGetVariableValueVarCache hook
We don't want to expose the internal caching mechanism of the parser.
There are no uses in deployed WMF code:

https://codesearch.wmflabs.org/deployed/?q=ParserGetVariableValueVarCache&i=nope&files=&repos=

Bug: T236813
Change-Id: I1b0a5cf7d32be86a45d7231940360e2bfce7275f
2020-03-26 18:47:30 -04:00
C. Scott Ananian
37022ad343 Remove Parser::getDefaultPreprocessorClass(), deprecated in 1.34
Code search:
https://codesearch.wmflabs.org/search/?q=getDefaultPreprocessorClass&i=nope&files=&repos=

Bug: T204945
Change-Id: Ie7c0d8d9b61088efce9719878b3abcc9ed9ebc80
2020-03-26 16:10:34 -04:00
C. Scott Ananian
5468ab66ba Deprecate Parser::enableOOUI()
All existing uses in our codebase are to OutputPage::enableOOUI.

Further, the implementation here in Parser::enableOOUI calls
OutputPage::setupOOUI() without arguments, which means that the skin
and the page directionality are not initialized correctly.
(OutputPage::enableOOUI() does this correctly).  So even if anyone
*was* using Parser::enableOOUI... they shouldn't be.

Use $parser->getOutput()->enableOOUI() instead.

This was originally added in 2d50e28975 to
enable OOUI to be used from parser tags (T101666), but the current patches
for this (eg I29e876c768819413bf31499f067d545732e591b0) can just use
$parser->getOutput()->enableOOUI() instead.

Code search:
https://codesearch.wmflabs.org/search/?q=enableOOUI&i=nope&files=&repos=

Bug: T236809
Change-Id: I71be19c1d735fef5b781c68ef7ba47cafc37595d
2020-03-26 16:09:05 -04:00
Petr Pchelko
1e4beb3107 Hard deprecate Revision::newKnownCurrent
Bug: T246284
Change-Id: Iba93fdeb0a88e6fa4068f03367b23a1f670257c6
2020-03-18 11:52:44 -07:00
Brian Wolff
b186b20d9f Allow users to set tabindex="0" on elements
Important for keyboard focusability of elements in order to ensure for 
example users with motoric impairments to reach those elements.
This patch does not allow setting tabindex="-1" or tabindex > 0.
tabindex > 1 seems like a terrible idea to allow users to do.
I don't see any valid reason for tabindex="-1" in wikitext, so
lets not allow that for now either.

Bug: T247910
Change-Id: I5065b2deeb14bdb3682dd176b87f254ac6f2cf88
2020-03-18 01:17:30 +00:00