Forward-compatibility: allow output flags to be serialized in OutputFlags
This will allow a future patch to remove the specific properties for $mNoGallery, $mNewSection, etc and just use the $mFlags array, which will DRY out and shrink ParserOutput and its serialization code. This patch includes forward-compatibility data according to the process outlined in https://www.mediawiki.org/wiki/Manual:Parser_cache/Serialization_compatibility Bug: T292868 Change-Id: I52e0bc9e4ecdc5fc9580d0e13bd0322ffdc9abf1 (cherry picked from commit c13d69bfa0a192491d69c34df57383e2b80e05d0)
This commit is contained in:
parent
71c9afd57a
commit
7f75a56adc
22 changed files with 96 additions and 6 deletions
|
|
@ -3091,15 +3091,26 @@ class ParserOutput extends CacheTime implements ContentMetadataCollector {
|
|||
$this->mFileSearchOptions = $jsonData['FileSearchOptions'] ?? [];
|
||||
$this->mExternalLinks = $jsonData['ExternalLinks'] ?? [];
|
||||
$this->mInterwikiLinks = $jsonData['InterwikiLinks'] ?? [];
|
||||
$this->mNewSection = $jsonData['NewSection'] ?? false;
|
||||
$this->mHideNewSection = $jsonData['HideNewSection'] ?? false;
|
||||
$this->mNoGallery = $jsonData['NoGallery'] ?? false;
|
||||
$this->mHeadItems = $jsonData['HeadItems'] ?? [];
|
||||
$this->mModuleSet = array_fill_keys( $jsonData['Modules'] ?? [], true );
|
||||
$this->mModuleStyleSet = array_fill_keys( $jsonData['ModuleStyles'] ?? [], true );
|
||||
$this->mJsConfigVars = $jsonData['JsConfigVars'] ?? [];
|
||||
$this->mWarnings = $jsonData['Warnings'] ?? [];
|
||||
|
||||
// Set flags stored as properties
|
||||
$this->mFlags = $jsonData['Flags'] ?? [];
|
||||
$this->mNoGallery = $jsonData['NoGallery'] ?? false;
|
||||
$this->mEnableOOUI = $jsonData['EnableOOUI'] ?? false;
|
||||
$this->setIndexPolicy( $jsonData['IndexPolicy'] ?? '' );
|
||||
$this->mNewSection = $jsonData['NewSection'] ?? false;
|
||||
$this->mHideNewSection = $jsonData['HideNewSection'] ?? false;
|
||||
$this->mPreventClickjacking = $jsonData['PreventClickjacking'] ?? false;
|
||||
// Set all generic output flags (whether stored as properties or not)
|
||||
// (This is effectively a logical-OR if these are also serialized
|
||||
// above.)
|
||||
foreach ( $jsonData['OutputFlags'] ?? [] as $flag ) {
|
||||
$this->setOutputFlag( $flag );
|
||||
}
|
||||
|
||||
if ( isset( $jsonData['TOCData'] ) ) {
|
||||
$this->mTOCData = $jsonData['TOCData'];
|
||||
|
|
@ -3121,15 +3132,12 @@ class ParserOutput extends CacheTime implements ContentMetadataCollector {
|
|||
}
|
||||
$this->mProperties = self::detectAndDecodeBinary( $jsonData['Properties'] ?? [] );
|
||||
$this->mTimestamp = $jsonData['Timestamp'] ?? null;
|
||||
$this->mEnableOOUI = $jsonData['EnableOOUI'] ?? false;
|
||||
$this->setIndexPolicy( $jsonData['IndexPolicy'] ?? '' );
|
||||
$this->mExtensionData = $jsonData['ExtensionData'] ?? [];
|
||||
$this->mLimitReportData = $jsonData['LimitReportData'] ?? [];
|
||||
$this->mLimitReportJSData = $jsonData['LimitReportJSData'] ?? [];
|
||||
$this->mCacheMessage = $jsonData['CacheMessage'] ?? '';
|
||||
$this->mParseStartTime = []; // invalid after reloading
|
||||
$this->mTimeProfile = $jsonData['TimeProfile'] ?? [];
|
||||
$this->mPreventClickjacking = $jsonData['PreventClickjacking'] ?? false;
|
||||
$this->mExtraScriptSrcs = $jsonData['ExtraScriptSrcs'] ?? [];
|
||||
$this->mExtraDefaultSrcs = $jsonData['ExtraDefaultSrcs'] ?? [];
|
||||
$this->mExtraStyleSrcs = $jsonData['ExtraStyleSrcs'] ?? [];
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
{"ParseUsedOptions":[],"CacheExpiry":10,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\CacheTime","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":1234,"_type_":"MediaWiki\\Parser\\CacheTime","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"20010419042521","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\CacheTime","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\CacheTime","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"ParseUsedOptions":{"optA":true,"optX":true},"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\CacheTime","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":[],"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":null,"Properties":{"empty":"","\\x00":"\u0000","gzip":{"_type_":"string","_encoding_":"base64","_data_":"H4sIAAAAAAAAA8tIzcnJVyjPLycKCQkJLiAnykkBAIURSg0LAAAA"}},"Timestamp":null,"ExtensionData":[],"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":null,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":[],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"CacheTime","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":[],"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":null,"Properties":[],"Timestamp":null,"ExtensionData":[],"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":null,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":[],"ParseUsedOptions":[],"CacheExpiry":10,"CacheTime":"20010419042521","CacheRevisionId":42,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":[],"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":null,"Properties":[],"Timestamp":null,"ExtensionData":{"map":{"a":{"super_class_field":"super","sub_class_field":"sub","_type_":"MediaWiki\\Tests\\Json\\JsonDeserializableSubClass","_complex_":true},"b":{"r":2,"d":"2","_type_":"stdClass","_complex_":true},"_complex_":true},"_complex_":true},"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":null,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":[],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":[],"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":null,"Properties":[],"Timestamp":null,"ExtensionData":[],"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":null,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":[],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":[],"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":null,"Properties":[],"Timestamp":null,"ExtensionData":{"boolean":true,"number":42,"string":"string","array":[1,2,3],"map":{"key":"value"}},"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":null,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":[],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":[],"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":null,"Properties":{"boolean":1,"null":"","number":42,"string":"string","array":"Array","map":"Array"},"Timestamp":null,"ExtensionData":[],"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":null,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":[],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"Lorem Ipsum","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":[],"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":null,"Properties":[],"Timestamp":null,"ExtensionData":[],"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":null,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":[],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"Dummy","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":[],"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":null,"Properties":[],"Timestamp":null,"ExtensionData":[],"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":null,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":[],"ParseUsedOptions":{"optA":true,"optX":true},"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":[],"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":{"sections":{"_complex_":true},"extensionData":[],"_type_":"Wikimedia\\Parsoid\\Core\\TOCData","_complex_":true},"Properties":[],"Timestamp":null,"ExtensionData":[],"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":null,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":[],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":[],"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":null,"Properties":{"boolean":0,"null":"","number":0,"string":"","numstring":"0","array":"Array"},"Timestamp":null,"ExtensionData":[],"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":null,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":[],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":[],"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":null,"Properties":[],"Timestamp":null,"ExtensionData":[],"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":null,"SpeculativePageIdUsed":4242,"RevisionTimestampUsed":"19731129213309","RevisionUsedSha1Base36":"test_hash","WrapperDivClasses":{"test_wrapper":true},"OutputFlags":["mw-NoGallery"],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":{"Link3":1},"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":null,"Properties":[],"Timestamp":null,"ExtensionData":[],"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":["script1"],"ExtraDefaultSrcs":["default1"],"ExtraStyleSrcs":["style1"],"SpeculativeRevId":null,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":[],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"","LanguageLinks":["m:link1","mw:link2"],"Categories":{"category2":"1","category1":"2"},"Indicators":{"indicator1":"indicator1_value"},"TitleText":"title_text1","Links":{"0":{"Link1":42},"2":{"Link2":43}},"LinksSpecial":[],"Templates":{"10":{"Template1":42}},"TemplateIds":{"10":{"Template1":4242}},"Images":{"Image1":1},"FileSearchOptions":{"Image1":{"time":"19731129213309","sha1":"test_sha1"}},"ExternalLinks":{"https://test.org":1},"InterwikiLinks":{"enwiki":{"interwiki1":1,"interwiki2":1}},"ExistenceLinks":[],"HeadItems":{"tag1":"head_item1"},"Modules":["module1"],"ModuleStyles":["module_style1"],"JsConfigVars":{"key1":"value1"},"Warnings":{"warning1":1},"WarningMsgs":{"rawmessage":{"key":"rawmessage","params":{"0":"warning1","_complex_":true},"_type_":"Wikimedia\\Message\\MessageValue","_complex_":true},"_complex_":true},"TOCData":{"sections":{"0":{"hLevel":1,"line":"heading_1","number":"1.0","index":"T-1","anchor":"heading_1","linkAnchor":"#heading_1","_complex_":true},"1":{"tocLevel":1,"hLevel":2,"line":"heading_2","number":"2.0","index":"T-2","anchor":"heading_2","linkAnchor":"#heading_2","_complex_":true},"_complex_":true},"extensionData":[],"_type_":"Wikimedia\\Parsoid\\Core\\TOCData","_complex_":true},"Properties":[],"Timestamp":"20010419042521","ExtensionData":[],"LimitReportData":{"limit_report_key1":"value1"},"LimitReportJSData":{"limit_report_key1":"value1"},"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":42,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":["test","mw-EnableOOUI","mw-NoIndexPolicy","mw-NewSection","mw-HideNewSection"],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"","LanguageLinks":["m:link1","mw:link2"],"Categories":{"category2":"1","category1":"2"},"Indicators":{"indicator1":"indicator1_value"},"TitleText":"title_text1","Links":{"0":{"Link1":42},"2":{"Link2":43}},"LinksSpecial":[],"Templates":{"10":{"Template1":42}},"TemplateIds":{"10":{"Template1":4242}},"Images":{"Image1":1},"FileSearchOptions":{"Image1":{"time":"19731129213309","sha1":"test_sha1"}},"ExternalLinks":{"https://test.org":1},"InterwikiLinks":{"enwiki":{"interwiki1":1,"interwiki2":1}},"ExistenceLinks":[],"HeadItems":{"tag1":"head_item1"},"Modules":["module1"],"ModuleStyles":["module_style1"],"JsConfigVars":{"key1":"value1"},"Warnings":{"warning1":1},"WarningMsgs":{"rawmessage":{"key":"rawmessage","params":{"0":"warning1","_complex_":true},"_type_":"Wikimedia\\Message\\MessageValue","_complex_":true},"_complex_":true},"TOCData":{"sections":{"0":{"hLevel":1,"line":"heading_1","number":"1.0","index":"T-1","anchor":"heading_1","linkAnchor":"#heading_1","_complex_":true},"1":{"tocLevel":1,"hLevel":2,"line":"heading_2","number":"2.0","index":"T-2","anchor":"heading_2","linkAnchor":"#heading_2","_complex_":true},"_complex_":true},"extensionData":[],"_type_":"Wikimedia\\Parsoid\\Core\\TOCData","_complex_":true},"Properties":[],"Timestamp":"20010419042521","ExtensionData":[],"LimitReportData":{"limit_report_key1":"value1"},"LimitReportJSData":{"limit_report_key1":"value1"},"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":42,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":["vary-revision-id","mw-EnableOOUI","mw-NoIndexPolicy","mw-NewSection","mw-HideNewSection"],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -0,0 +1 @@
|
|||
{"Text":"","LanguageLinks":[],"Categories":[],"Indicators":[],"TitleText":"","Links":[],"LinksSpecial":[],"Templates":[],"TemplateIds":[],"Images":[],"FileSearchOptions":[],"ExternalLinks":[],"InterwikiLinks":[],"ExistenceLinks":[],"HeadItems":[],"Modules":[],"ModuleStyles":[],"JsConfigVars":[],"Warnings":[],"WarningMsgs":[],"TOCData":{"sections":{"0":{"hLevel":1,"line":"heading_1","number":"1.0","index":"T-1","anchor":"heading_1","linkAnchor":"#heading_1","_complex_":true},"1":{"tocLevel":1,"hLevel":2,"line":"heading_2","number":"2.0","index":"T-2","anchor":"heading_2","linkAnchor":"#heading_2","_complex_":true},"_complex_":true},"extensionData":[],"_type_":"Wikimedia\\Parsoid\\Core\\TOCData","_complex_":true},"Properties":[],"Timestamp":null,"ExtensionData":[],"LimitReportData":[],"LimitReportJSData":[],"CacheMessage":"","TimeProfile":[],"ParseStartTime":[],"ExtraScriptSrcs":[],"ExtraDefaultSrcs":[],"ExtraStyleSrcs":[],"SpeculativeRevId":null,"SpeculativePageIdUsed":null,"RevisionTimestampUsed":null,"RevisionUsedSha1Base36":null,"WrapperDivClasses":[],"OutputFlags":[],"ParseUsedOptions":[],"CacheExpiry":null,"CacheTime":"","CacheRevisionId":null,"_type_":"MediaWiki\\Parser\\ParserOutput","_complex_":true}
|
||||
|
|
@ -7,6 +7,7 @@ use MediaWiki\Debug\MWDebug;
|
|||
use MediaWiki\Json\JsonCodec;
|
||||
use MediaWiki\Parser\CacheTime;
|
||||
use MediaWiki\Parser\ParserOutput;
|
||||
use MediaWiki\Parser\ParserOutputFlags;
|
||||
use MediaWiki\Tests\Json\JsonDeserializableSubClass;
|
||||
use MediaWiki\Title\Title;
|
||||
use MediaWiki\Title\TitleValue;
|
||||
|
|
@ -314,6 +315,11 @@ abstract class ParserCacheSerializationTestCases {
|
|||
$parserOutputWithMetadataPost1_44 = clone $parserOutputWithMetadata;
|
||||
$parserOutputWithMetadataPost1_44->setLanguageLinks( [ 'm:link1', 'mw:link2' ] );
|
||||
|
||||
$parserOutputWithMetadataPost1_45 = clone $parserOutputWithMetadataPost1_44;
|
||||
// Non-standard output flags were deprecated in MW 1.45
|
||||
$parserOutputWithMetadataPost1_45->setOutputFlag( 'test', false );
|
||||
$parserOutputWithMetadataPost1_45->setOutputFlag( ParserOutputFlags::VARY_REVISION_ID );
|
||||
|
||||
$parserOutputWithSections = new ParserOutput( '' );
|
||||
$parserOutputWithSections->setSections( self::SECTIONS );
|
||||
|
||||
|
|
@ -596,6 +602,61 @@ abstract class ParserCacheSerializationTestCases {
|
|||
$testCase->assertArrayEquals( [ 'test' ], $object->getAllFlags() );
|
||||
}
|
||||
],
|
||||
'withMetadataPost1_45' => [
|
||||
'instance' => $parserOutputWithMetadataPost1_45,
|
||||
'assertions' => static function ( MediaWikiIntegrationTestCase $testCase, ParserOutput $object ) {
|
||||
$testCase->assertSame( 42, $object->getSpeculativeRevIdUsed() );
|
||||
$testCase->assertArrayEquals( [ 'm:link1', 'mw:link2' ], $object->getLanguageLinks() );
|
||||
$testCase->assertArrayEquals( [ 'enwiki' => [
|
||||
'interwiki1' => 1,
|
||||
'interwiki2' => 1
|
||||
] ], $object->getInterwikiLinks() );
|
||||
$testCase->assertArrayEquals( [ 'category1', 'category2' ], $object->getCategoryNames() );
|
||||
$testCase->assertArrayEquals( [
|
||||
'category1' => '2',
|
||||
'category2' => '1'
|
||||
], $object->getCategoryMap() );
|
||||
$testCase->assertArrayEquals( [ 'indicator1' => 'indicator1_value' ], $object->getIndicators() );
|
||||
$testCase->assertSame( 'title_text1', $object->getTitleText() );
|
||||
$testCase->assertArrayEquals( self::SECTIONS, $object->getSections() );
|
||||
$testCase->assertNotNull( $object->getTOCData() );
|
||||
$testCase->assertArrayEquals( [
|
||||
NS_MAIN => [ 'Link1' => 42 ],
|
||||
NS_USER => [ 'Link2' => 43 ]
|
||||
], $object->getLinks() );
|
||||
$testCase->assertArrayEquals( [
|
||||
NS_SPECIAL => [ 'Template1' => 42 ]
|
||||
], $object->getTemplates() );
|
||||
$testCase->assertArrayEquals( [
|
||||
NS_SPECIAL => [ 'Template1' => 4242 ]
|
||||
], $object->getTemplateIds() );
|
||||
$testCase->assertArrayEquals( [ 'Image1' => 1 ], $object->getImages() );
|
||||
$testCase->assertArrayEquals( [ 'Image1' => [
|
||||
'time' => MWTimestamp::convert( TS_MW, 123456789 ), 'sha1' => 'test_sha1'
|
||||
] ], $object->getFileSearchOptions() );
|
||||
$testCase->assertArrayEquals( [ 'https://test.com' => 1 ], $object->getExternalLinks() );
|
||||
$testCase->assertArrayEquals( [ 'tag1' => 'head_item1' ], $object->getHeadItems() );
|
||||
$testCase->assertArrayEquals( [ 'module1' ], $object->getModules() );
|
||||
$testCase->assertArrayEquals( [ 'module_style1' ], $object->getModuleStyles() );
|
||||
$testCase->assertArrayEquals( [ 'key1' => 'value1' ], $object->getJsConfigVars() );
|
||||
$testCase->assertArrayEquals( [ 'warning1' ], $object->getWarnings() );
|
||||
$testCase->assertSame( 'noindex', $object->getIndexPolicy() );
|
||||
$testCase->assertSame( MWTimestamp::convert( TS_MW, 987654321 ), $object->getRevisionTimestamp() );
|
||||
$testCase->assertArrayEquals(
|
||||
[ 'limit_report_key1' => 'value1' ],
|
||||
$object->getLimitReportData()
|
||||
);
|
||||
$testCase->assertArrayEquals(
|
||||
[ 'limit_report_key1' => 'value1' ],
|
||||
$object->getLimitReportJSData()
|
||||
);
|
||||
$testCase->assertTrue( $object->getEnableOOUI() );
|
||||
$testCase->assertTrue( $object->getHideNewSection() );
|
||||
$testCase->assertTrue( $object->getNewSection() );
|
||||
$testCase->assertTrue( $object->getOutputFlag( ParserOutputFlags::VARY_REVISION_ID ) );
|
||||
$testCase->assertArrayEquals( [ 'vary-revision-id' ], $object->getAllFlags() );
|
||||
}
|
||||
],
|
||||
'withSections' => [
|
||||
'instance' => $parserOutputWithSections,
|
||||
'assertions' => static function ( MediaWikiIntegrationTestCase $testCase, ParserOutput $object ) {
|
||||
|
|
@ -731,6 +792,7 @@ abstract class ParserCacheSerializationTestCases {
|
|||
$oldDeserializer = $d;
|
||||
$d = static function ( $data ) use ( $oldDeserializer ) {
|
||||
MWDebug::filterDeprecationForTest( '/::addLanguageLink without prefix/' );
|
||||
MWDebug::filterDeprecationForTest( '/::setOutputFlag with non-standard flag/' );
|
||||
return $oldDeserializer( $data );
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue