Hard-deprecate Content::preSaveTransform.

Use ContentTransformer::preSaveTransform instead.
Extensions defining  a content model should override ContentHandler::preSaveTransform.

Bug: T287156
Change-Id: I2a8c60470366fd95d056e0dfa8144f209bb7117e
This commit is contained in:
Roman Stolar 2021-08-19 13:17:21 +03:00
parent 7a957145ad
commit 642afef215
8 changed files with 12 additions and 103 deletions

View file

@ -411,6 +411,9 @@ because of Phabricator reports.
* Content::preloadTransform was hard-deprecated since 1.37,
use ContentTransformer::preloadTransform instead. Extensions defining
a content model should override ContentHandler::preloadTransform.
* Content::preSaveTransform was hard-deprecated since 1.37,
use ContentTransformer::preSaveTransform instead. Extensions defining
a content model should override ContentHandler::preSaveTransform.
* …
=== Deprecations in 1.37 ===

View file

@ -389,7 +389,8 @@ abstract class AbstractContent implements Content {
/**
* @since 1.21
* @deprecated since 1.37. Use ContentTransformer::preSaveTransform instead.
* @deprecated since 1.37. Hard-deprecated since 1.37.
* Use ContentTransformer::preSaveTransform instead.
* Extensions defining a content model should override ContentHandler::preSaveTransform.
*
* @param Title $title
@ -400,6 +401,7 @@ abstract class AbstractContent implements Content {
* @see Content::preSaveTransform
*/
public function preSaveTransform( Title $title, User $user, ParserOptions $popts ) {
wfDeprecated( __METHOD__, '1.37' );
$pstParams = new PreSaveTransformParamsValue( $title, $user, $popts );
return $this->getContentHandler()->preSaveTransform(
$this,

View file

@ -387,8 +387,8 @@ interface Content {
* object if no transformations apply).
*
* @since 1.21
* @deprecated since 1.37 Use ContentTransformer::preSaveTransform and override ContentHandler::preSaveTransform.
*
* @deprecated since 1.37. Hard-deprecated since 1.37. Use ContentTransformer::preSaveTransform
* and override ContentHandler::preSaveTransform.
* @param Title $title
* @param User $user
* @param ParserOptions $parserOptions

View file

@ -1624,7 +1624,8 @@ abstract class ContentHandler {
return MWDebug::detectDeprecatedOverride(
$content,
AbstractContent::class,
$method
$method,
'1.37'
);
}

View file

@ -43,19 +43,6 @@ class FallbackContentTest extends MediaWikiLangTestCase {
$this->assertStringNotContainsString( '(unsupported-content-model)', $html );
}
/**
* @covers FallbackContent::preSaveTransform
*/
public function testPreSaveTransform() {
$title = Title::newFromText( 'Test' );
$user = $this->getTestUser()->getUser();
$content = $this->newContent( 'Horkyporky ~~~' );
$options = ParserOptions::newFromAnon();
$this->assertSame( $content, $content->preSaveTransform( $title, $user, $options ) );
}
/**
* @covers FallbackContent::getRedirectTarget
*/

View file

@ -8,51 +8,6 @@
*/
class JsonContentTest extends MediaWikiLangTestCase {
public function provideDataToEncode() {
return [
[
// Round-trip empty array
'[]',
'[]',
],
[
// Round-trip empty object
'{}',
'{}',
],
[
// Round-trip empty array/object (nested)
'{ "foo": {}, "bar": [] }',
"{\n \"foo\": {},\n \"bar\": []\n}",
],
[
'{ "foo": "bar" }',
"{\n \"foo\": \"bar\"\n}",
],
[
'{ "foo": 1000 }',
"{\n \"foo\": 1000\n}",
],
[
'{ "foo": 1000, "0": "bar" }',
"{\n \"foo\": 1000,\n \"0\": \"bar\"\n}",
],
];
}
/**
* @dataProvider provideDataToEncode
*/
public function testPreSaveTransform( $input, $transformed ) {
$obj = new JsonContent( $input );
$newObj = $obj->preSaveTransform(
$this->createMock( Title::class ),
$this->createMock( User::class ),
$this->createMock( ParserOptions::class )
);
$this->assertTrue( $newObj->equals( new JsonContent( $transformed ) ) );
}
public function provideDataAndParserText() {
return [
[

View file

@ -1,7 +1,5 @@
<?php
use MediaWiki\MediaWikiServices;
/**
* @group ContentHandler
* @group Database
@ -93,44 +91,6 @@ class TextContentTest extends MediaWikiLangTestCase {
// TODO: assert more properties
}
public static function dataPreSaveTransform() {
return [
[
# 0: no signature resolution
'hello this is ~~~',
'hello this is ~~~',
],
[
# 1: rtrim
" Foo \n ",
' Foo',
],
[
# 2: newline normalization
"LF\n\nCRLF\r\n\r\nCR\r\rEND",
"LF\n\nCRLF\n\nCR\n\nEND",
],
];
}
/**
* @dataProvider dataPreSaveTransform
* @covers TextContent::preSaveTransform
*/
public function testPreSaveTransform( $text, $expected ) {
$options = ParserOptions::newFromUserAndLang( $this->context->getUser(),
MediaWikiServices::getInstance()->getContentLanguage() );
$content = $this->newContent( $text );
$content = $content->preSaveTransform(
$this->context->getTitle(),
$this->context->getUser(),
$options
);
$this->assertEquals( $expected, $content->getText() );
}
public static function dataGetRedirectTarget() {
return [
[ '#REDIRECT [[Test]]',

View file

@ -369,10 +369,11 @@ just a test"
}
/**
* @covers WikitextContent::preSaveTransform
* @covers WikitextContent::fillParserOutput
*/
public function testHadSignature() {
$this->hideDeprecated( 'AbstractContent::preSaveTransform' );
$titleObj = Title::newFromText( __CLASS__ );
$content = new WikitextContent( '~~~~' );