Hard deprecate Preprocessor_DOM
The Preprocessor_DOM implementation doesn't interact well with PHP memory profiling, and has some limitations not present in the Preprocessor_Hash implementation (see T216664). There is no reason to keep around two versions of the preprocessor: it just complicates on-going wikitext feature development. Hard deprecate use of Preprocessor_DOM, so we can remove the redundant code in a future release. Bug: T204945 Depends-On: Id38c9360e4d02b570996dbf7a660f964f02f1a2c Change-Id: Ica5d1ad5b1e677542962fc36d582a793f941155e
This commit is contained in:
parent
61544d6eb2
commit
53fe91ded5
10 changed files with 23 additions and 12 deletions
|
|
@ -265,6 +265,9 @@ because of Phabricator reports.
|
|||
* ResourceLoaderContext::getConfig and ResourceLoaderContext::getLogger have
|
||||
been deprecated. Inside ResourceLoaderModule subclasses, use the local methods
|
||||
instead. Elsewhere, use the methods from the ResourceLoader class.
|
||||
* The Preprocessor_DOM implementation has been deprecated. It will be
|
||||
removed in a future release. Use the Preprocessor_Hash implementation
|
||||
instead.
|
||||
|
||||
=== Other changes in 1.34 ===
|
||||
* …
|
||||
|
|
|
|||
|
|
@ -4153,6 +4153,9 @@ $wgInvalidRedirectTargets = [ 'Filepath', 'Mypage', 'Mytalk', 'Redirect' ];
|
|||
* If this parameter is not given, it uses Preprocessor_DOM if the
|
||||
* DOM module is available, otherwise it uses Preprocessor_Hash.
|
||||
*
|
||||
* The Preprocessor_DOM class is deprecated, and will be removed in a future
|
||||
* release.
|
||||
*
|
||||
* The entire associative array will be passed through to the constructor as
|
||||
* the first parameter. Note that only Setup.php can use this variable --
|
||||
* the configuration will change at runtime via Parser member functions, so
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
/**
|
||||
* Expansion frame with custom arguments
|
||||
* @deprecated since 1.34, use PPCustomFrame_Hash
|
||||
* @ingroup Parser
|
||||
*/
|
||||
// phpcs:ignore Squiz.Classes.ValidClassName.NotCamelCaps
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
/**
|
||||
* An expansion frame, used as a context to expand the result of preprocessToObj()
|
||||
* @deprecated since 1.34, use PPFrame_Hash
|
||||
* @ingroup Parser
|
||||
*/
|
||||
// phpcs:ignore Squiz.Classes.ValidClassName.NotCamelCaps
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
*/
|
||||
|
||||
/**
|
||||
* @deprecated since 1.34, use PPNode_Hash_{Tree,Text,Array,Attr}
|
||||
* @ingroup Parser
|
||||
*/
|
||||
// phpcs:ignore Squiz.Classes.ValidClassName.NotCamelCaps
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
/**
|
||||
* Expansion frame with template arguments
|
||||
* @deprecated since 1.34, use PPTemplateFrame_Hash
|
||||
* @ingroup Parser
|
||||
*/
|
||||
// phpcs:ignore Squiz.Classes.ValidClassName.NotCamelCaps
|
||||
|
|
|
|||
|
|
@ -421,21 +421,10 @@ class Parser {
|
|||
* Which class should we use for the preprocessor if not otherwise specified?
|
||||
*
|
||||
* @since 1.34
|
||||
* @deprecated since 1.34, removing configurability of preprocessor
|
||||
* @return string
|
||||
*/
|
||||
public static function getDefaultPreprocessorClass() {
|
||||
if ( wfIsHHVM() ) {
|
||||
# Under HHVM Preprocessor_Hash is much faster than Preprocessor_DOM
|
||||
return Preprocessor_Hash::class;
|
||||
}
|
||||
if ( extension_loaded( 'domxml' ) ) {
|
||||
# PECL extension that conflicts with the core DOM extension (T15770)
|
||||
wfDebug( "Warning: you have the obsolete domxml extension for PHP. Please remove it!\n" );
|
||||
return Preprocessor_Hash::class;
|
||||
}
|
||||
if ( extension_loaded( 'dom' ) ) {
|
||||
return Preprocessor_DOM::class;
|
||||
}
|
||||
return Preprocessor_Hash::class;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
*
|
||||
* @file
|
||||
* @ingroup Parser
|
||||
* @deprecated since 1.34, use Preprocessor_Hash
|
||||
*/
|
||||
|
||||
/**
|
||||
|
|
@ -37,6 +38,7 @@ class Preprocessor_DOM extends Preprocessor {
|
|||
const CACHE_PREFIX = 'preprocess-xml';
|
||||
|
||||
public function __construct( $parser ) {
|
||||
wfDeprecated( __METHOD__, '1.34' ); // T204945
|
||||
$this->parser = $parser;
|
||||
$mem = ini_get( 'memory_limit' );
|
||||
$this->memoryLimit = false;
|
||||
|
|
|
|||
|
|
@ -797,6 +797,13 @@ class ParserTestRunner {
|
|||
|
||||
$class = $wgParserConf['class'];
|
||||
$parser = new $class( [ 'preprocessorClass' => $preprocessor ] + $wgParserConf );
|
||||
if ( $preprocessor ) {
|
||||
# Suppress deprecation warning for Preprocessor_DOM while testing
|
||||
Wikimedia\suppressWarnings();
|
||||
wfDeprecated( 'Preprocessor_DOM::__construct' );
|
||||
Wikimedia\restoreWarnings();
|
||||
$parser->getPreprocessor();
|
||||
}
|
||||
ParserTestParserHook::setup( $parser );
|
||||
|
||||
return $parser;
|
||||
|
|
|
|||
|
|
@ -48,6 +48,9 @@ class PreprocessorTest extends MediaWikiTestCase {
|
|||
$this->mOptions = ParserOptions::newFromUserAndLang( new User,
|
||||
MediaWikiServices::getInstance()->getContentLanguage() );
|
||||
|
||||
# Suppress deprecation warning for Preprocessor_DOM while testing
|
||||
$this->hideDeprecated( 'Preprocessor_DOM::__construct' );
|
||||
|
||||
$this->mPreprocessors = [];
|
||||
foreach ( self::$classNames as $className ) {
|
||||
$this->mPreprocessors[$className] = new $className( $this );
|
||||
|
|
|
|||
Loading…
Reference in a new issue