Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
2197 / 2197
100.00% covered (success)
100.00%
537 / 537
CRAP
100.00% covered (success)
100.00%
1 / 1
HookRunner
100.00% covered (success)
100.00%
2197 / 2197
100.00% covered (success)
100.00%
537 / 537
537
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 onAbortAutoblock
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbortDiffCache
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbortEmailNotification
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbortTalkPageEmailNotification
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onActionBeforeFormDisplay
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onActionModifyFormFields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAddNewAccount
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAfterBuildFeedLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAfterFinalPageOutput
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onAfterImportPage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAfterParserFetchFileAndTitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAlternateEdit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAlternateEditPreview
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAlternateUserMailer
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAncientPagesQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onApiBeforeMain
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleConfirmDelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleContentOnDiff
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleDelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleDeleteAfterSuccess
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleDeleteComplete
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onArticleEditUpdateNewTalk
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleFromTitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleMergeComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticlePageDataAfter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticlePageDataBefore
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleParserOptions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticlePrepareTextForEdit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleProtect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleProtectComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticlePurge
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleRevisionViewCustom
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleRevisionVisibilitySet
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleShowPatrolFooter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleUndelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleUpdateBeforeRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleViewFooter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleViewHeader
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticleViewRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onArticle__MissingArticleConditions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAuthChangeFormFields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAuthManagerFilterProviders
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onAuthManagerLoginAuthenticateAudit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAuthManagerVerifyAuthentication
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAuthPreserveQueryParams
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 onAuthenticationAttemptThrottled
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 onAutopromoteCondition
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBacklinkCacheGetConditions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBacklinkCacheGetPrefix
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBadImage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBeforeDisplayNoArticleText
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBeforeInitialize
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBeforePageDisplay
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onBeforePageRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBeforeParserFetchFileAndTitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBeforeParserFetchTemplateRevisionRecord
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBeforeRevertedTagUpdate
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
 onBeforeWelcomeCreation
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBitmapHandlerCheckImageArea
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBitmapHandlerTransform
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBlockIp
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBlockIpComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onBookInformation
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCanonicalNamespaces
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCategoryAfterPageAdded
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCategoryAfterPageRemoved
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCategoryPageView
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCategoryViewer__doCategoryQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCategoryViewer__generateLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeAuthenticationDataAudit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangesListInitRows
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangesListInsertArticleLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangesListInsertLogEntry
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangesListSpecialPageQuery
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onChangesListSpecialPageStructuredFilters
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagAfterDelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagCanCreate
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagCanDelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagsAfterUpdateTags
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagsAllowedAdd
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeTagsListActive
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onChangeUserGroups
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCollation__factory
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onConfirmEmailComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentAlterParserOutput
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentGetParserOutput
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentHandlerDefaultModelFor
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentHandlerForModelID
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentModelCanBeUsedOn
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentSecurityPolicyDefaultSource
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentSecurityPolicyDirectives
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContentSecurityPolicyScriptSource
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContribsPager__getQueryInfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContribsPager__reallyDoQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContributeCards
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContributionsLineEnding
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onContributionsToolLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onConvertContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onCustomEditor
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDeletedContribsPager__reallyDoQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDeletedContributionsLineEnding
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDeleteUnknownPreferences
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineAfterLoadNewText
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTextSlotDiffRendererTablePrefix
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineLoadTextAfterNewContentIsLoaded
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineMarkPatrolledLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineMarkPatrolledRCID
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineNewHeader
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineOldHeader
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineOldHeaderNoOldRev
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineRenderRevisionAddParserOutput
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineRenderRevisionShowFinalPatrolLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineShowDiff
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineShowDiffPage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineShowDiffPageMaybeShowMissingRevision
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineShowEmptyOldContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDifferenceEngineViewHeader
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDiffTools
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onDisplayOldSubtitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditFilter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditFilterMergedContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditFormInitialText
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditFormPreloadText
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageBeforeConflictDiff
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageBeforeEditButtons
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageBeforeEditToolbar
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageCopyrightWarning
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageGetCheckboxesDefinition
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageGetDiffContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageGetPreviewContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageNoSuchSection
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPageTosSummary
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__attemptSave
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__attemptSave_after
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__importFormData
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__showEditForm_fields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__showEditForm_initial
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__showReadOnlyForm_initial
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEditPage__showStandardInputs_options
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailConfirmed
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUser
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUserCC
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUserComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUserForm
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUserPermissionsErrors
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUserAuthorizeSend
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEmailUserSendEmail
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEnhancedChangesListModifyBlockLineData
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEnhancedChangesListModifyLineData
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onEnhancedChangesList__getLogText
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onExemptFromAccountCreationThrottle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onExtensionTypes
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onFetchChangesList
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onFileDeleteComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onFileTransformed
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onFileUndeleteComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onFileUpload
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onFormatAutocomments
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGalleryGetModes
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetAllBlockActions
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onGetAutoPromoteGroups
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetActionName
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onGetCacheVaryCookies
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetCanonicalURL
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetContentModels
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetDefaultSortkey
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetDifferenceEngine
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onGetDoubleUnderscoreIDs
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetExtendedMetadata
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetFullURL
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetHumanTimestamp
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetInternalURL
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetIP
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetLangPreferredVariant
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetLinkColours
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetLocalURL
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetLocalURL__Article
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetLocalURL__Internal
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetLogTypesOnUser
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetMagicVariableIDs
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetMetadataVersion
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetNewMessagesAlert
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetPreferences
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetRelativeTimestamp
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetSlotDiffRenderer
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetUserBlock
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPermissionErrorAudit
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onPermissionStatusAudit
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onGetUserPermissionsErrors
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetUserPermissionsErrorsExpensive
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGitViewers
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHistoryPageToolLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHistoryTools
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHtmlCacheUpdaterAppendUrls
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHtmlCacheUpdaterVaryUrls
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHTMLFileCache__useFileCache
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHtmlPageLinkRendererBegin
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onHtmlPageLinkRendererEnd
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImageBeforeProduceHTML
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onImageOpenShowImageInlineBefore
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImagePageAfterImageLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImagePageFileHistoryLine
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImagePageFindFile
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImagePageShowTOC
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImgAuthBeforeStream
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImgAuthModifyHeaders
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandleLogItemXMLTag
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandlePageXMLTag
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandleRevisionXMLTag
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandleContentXMLTag
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandleToplevelXMLTag
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandleUnknownUser
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportHandleUploadXMLTag
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportLogInterwikiLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onImportSources
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onInfoAction
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onInitializeArticleMaybeRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onInternalParseBeforeLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onInterwikiLoadPrefix
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onInvalidateEmailComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onIRCLineURL
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onIsFileCacheable
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onIsTrustedProxy
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onIsUploadAllowedFromUrl
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onIsValidEmailAddr
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onIsValidPassword
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onJsonValidateSave
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLanguageGetNamespaces
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLanguageGetTranslatedLanguageNames
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLanguageLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLanguageSelector
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLanguage__getMessagesFileName
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLinkerGenerateRollbackLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLinkerMakeExternalImage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLinkerMakeExternalLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLinkerMakeMediaLinkFile
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLinksUpdate
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLinksUpdateComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onListDefinedTags
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLoadExtensionSchemaUpdates
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onLocalFilePurgeThumbnails
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLocalFile__getHistory
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLocalisationCacheRecache
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLocalisationCacheRecacheFallback
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLocalUserCreated
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLogEventsListGetExtraInputs
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLogEventsListLineEnding
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLogEventsListShowLogExtract
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLogException
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLoginFormValidErrorMessages
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLogLine
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onLonelyPagesQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMagicWordwgVariableIDs
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMaintenanceRefreshLinksInit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMaintenanceShellStart
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onMaintenanceUpdateAddParams
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMakeGlobalVariablesScript
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onManualLogEntryBeforePublish
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onMarkPatrolled
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMarkPatrolledComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMediaWikiPerformAction
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMediaWikiServices
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onMessageCacheFetchOverrides
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onMessageCacheReplace
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMessageCache__get
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMessagesPreLoad
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMimeMagicGuessFromContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMimeMagicImproveFromExtension
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMimeMagicInit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onGetBlockErrorMessageKey
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onModifyExportQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMovePageCheckPermissions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMovePageIsValidMove
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onMultiContentSave
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onNamespaceIsMovable
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onNewDifferenceEngine
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onNewPagesLineEnding
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOldChangesListRecentChangesLine
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOpenSearchUrls
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOpportunisticLinksUpdate
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOtherAutoblockLogLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOtherBlockLogLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOutputPageAfterGetHeadLinksArray
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOutputPageBeforeHTML
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOutputPageBodyAttributes
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onOutputPageCheckLastModified
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onOutputPageParserOutput
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onOutputPageRenderCategoryLink
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onPageContentLanguage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageContentSave
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onPageDelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageDeleteComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageDeletionDataUpdates
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageUndelete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageUndeleteComplete
100.00% covered (success)
100.00%
14 / 14
100.00% covered (success)
100.00%
1 / 1
1
 onPageHistoryBeforeList
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageHistoryLineEnding
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageHistoryPager__doBatchLookups
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageHistoryPager__getQueryInfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageMoveComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageMoveCompleting
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageRenderingHash
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageSaveComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPageViewUpdates
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserAfterParse
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserAfterTidy
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserBeforeInternalParse
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserBeforePreprocess
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserCacheSaveComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserClearState
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserCloned
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserFetchTemplateData
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserFirstCallInit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserGetVariableValueSwitch
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserGetVariableValueTs
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserLimitReportFormat
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserLimitReportPrepare
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserLogLinterData
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserMakeImageParams
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserModifyImageHTML
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onParserOptionsRegister
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserOutputPostCacheTransform
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onParserOutputStashForEdit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserPreSaveTransformComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onParserTestGlobals
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPasswordPoliciesForUser
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPerformRetroactiveAutoblock
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPingLimiter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPlaceNewSection
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPostLoginRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPreferencesFormPreSave
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPreferencesGetIcon
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPreferencesGetLayout
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPreferencesGetLegend
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPrefixSearchBackend
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPrefixSearchExtractNamespace
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onPrefsEmailAudit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onProtectionForm__buildForm
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onProtectionFormAddFormFields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onProtectionForm__save
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onProtectionForm__showLogExtract
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRandomPageQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRawPageViewBeforeOutput
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRecentChangesPurgeRows
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRecentChange_save
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRedirectSpecialArticleRedirectParams
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRejectParserCacheValue
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRenameUserAbort
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRenameUserComplete
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onRenameUserPreRename
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onRenameUserSQL
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onRenameUserWarning
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onRequestContextCreateSkin
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onResetPasswordExpiration
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRevisionDataUpdates
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRevisionFromEditComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRevisionRecordInserted
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRevisionUndeleted
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onRollbackComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchableNamespaces
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchAfterNoDirectMatch
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchDataForIndex
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchDataForIndex2
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchGetNearMatch
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchGetNearMatchBefore
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchGetNearMatchComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchIndexFields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchResultInitFromTitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchResultProvideDescription
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchResultProvideThumbnail
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSearchResultsAugment
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSecuritySensitiveOperationStatus
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSelfLinkBegin
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSendWatchlistEmailNotification
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSessionCheckInfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSessionMetadata
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSetupAfterCache
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onShortPagesQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onShowMissingArticle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onShowSearchHit
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onShowSearchHitTitle
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onSidebarBeforeOutput
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onSiteNoticeAfter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSiteNoticeBefore
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinPageReadyConfig
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onSkinAddFooterLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinAfterBottomScripts
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinAfterContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinAfterPortlet
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinBuildSidebar
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinCopyrightFooter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinCopyrightFooterMessage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinEditSectionLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinPreloadExistence
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinSubPageSubtitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinTemplateGetLanguageLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSkinTemplateNavigation__Universal
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onSoftwareInfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialBlockModifyFormFields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialContributionsBeforeMainOutput
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialContributions__formatRow__flags
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialContributions__getForm__filters
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialCreateAccountBenefits
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialExportGetExtraPages
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialListusersDefaultQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialListusersFormatRow
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialListusersHeader
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialListusersHeaderForm
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialListusersQueryInfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialLogAddLogSearchRelations
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialMovepageAfterMove
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialMuteModifyFormFields
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialNewpagesConditions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialNewPagesFilters
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPageAfterExecute
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPageBeforeExecute
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPageBeforeFormDisplay
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPage_initList
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPasswordResetOnSubmit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPrefixIndexGetFormFilters
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialPrefixIndexQuery
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialRandomGetRandomTitle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialRecentChangesPanel
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialResetTokensTokens
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchCreateLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchGoResult
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchNogomatch
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchPowerBox
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchProfileForm
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchProfiles
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchResults
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchResultsAppend
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchResultsPrepend
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialSearchSetupEngine
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialStatsAddExtra
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialTrackingCategories__generateCatLink
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialTrackingCategories__preprocess
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialUploadComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialVersionVersionUrl
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialWatchlistGetNonRevisionTypes
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpreadAnyEditBlock
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSpecialWhatLinksHereQuery
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onTempUserCreatedRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTestCanonicalRedirect
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onThumbnailBeforeProduceHTML
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleExists
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleGetEditNotices
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleGetRestrictionTypes
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleIsAlwaysKnown
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleIsMovable
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleMove
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleMoveStarting
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleQuickPermissions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleReadWhitelist
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onTitleSquidURLs
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnblockUser
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnblockUserComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUndeleteForm__showHistory
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUndeleteForm__showRevision
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUndeletePageToolLinks
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnitTestsAfterDatabaseSetup
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnitTestsBeforeDatabaseTeardown
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnitTestsList
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnwatchArticle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUnwatchArticleComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUpdateUserMailerFormattedPageStatus
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadCreateFromRequest
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadFormInitDescriptor
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadFormSourceDescriptors
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadForm_BeforeProcessing
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadForm_getInitialPageText
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadForm_initial
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadStashFile
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadVerifyFile
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUploadVerifyUpload
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserAddGroup
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserArrayFromResult
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserCan
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserCanSendEmail
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserClearNewTalkNotification
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserEditCountUpdate
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onUserEffectiveGroups
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetAllRights
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetDefaultOptions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onConditionalDefaultOptionsAddCondition
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetEmail
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetEmailAuthenticationTimestamp
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetLanguageObject
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserPrivilegedGroups
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetReservedNames
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetRights
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGetRightsRemove
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserGroupsChanged
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onUserIsBlockedFrom
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserIsBlockedGlobally
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserIsBot
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserIsEveryoneAllowed
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserIsLocked
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserLoadAfterLoadFromSession
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserLoadDefaults
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onLoadUserOptions
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onUserLoggedIn
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserLoginComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserLogout
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserLogoutComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserMailerChangeReturnPath
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserMailerSplitTo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserMailerTransformContent
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserMailerTransformMessage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserRemoveGroup
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onSaveUserOptions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserSaveSettings
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserSendConfirmationMail
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserSetEmail
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserSetEmailAuthenticationTimestamp
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUsersPagerDoBatchLookups
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUserToolLinksEdit
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onUser__mailPasswordInternal
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onValidateExtendedMetadataCache
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWantedPages__getQueryInfo
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWatchArticle
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWatchArticleComplete
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWatchedItemQueryServiceExtensions
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWatchlistEditorBeforeFormRender
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWatchlistEditorBuildRemoveLine
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWebRequestPathInfoRouter
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWebResponseSetCookie
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWfShellWikiCmd
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWgQueryPages
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWhatLinksHereProps
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWikiExporter__dumpStableQuery
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWikiPageDeletionUpdates
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onWikiPageFactory
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onXmlDumpWriterOpenPage
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onXmlDumpWriterWriteRevision
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace MediaWiki\HookContainer;
4
5use MailAddress;
6use MediaWiki\Auth\AuthenticationResponse;
7use MediaWiki\Auth\AuthManager;
8use MediaWiki\Content\ContentHandler;
9use MediaWiki\Content\JsonContent;
10use MediaWiki\Context\IContextSource;
11use MediaWiki\FileRepo\File\File;
12use MediaWiki\Linker\LinkRenderer;
13use MediaWiki\Linker\LinkTarget;
14use MediaWiki\Logging\ManualLogEntry;
15use MediaWiki\Mail\UserEmailContact;
16use MediaWiki\Output\OutputPage;
17use MediaWiki\Page\Article;
18use MediaWiki\Page\PageIdentity;
19use MediaWiki\Page\ProperPageIdentity;
20use MediaWiki\Page\WikiPage;
21use MediaWiki\Parser\Parser;
22use MediaWiki\Parser\ParserOptions;
23use MediaWiki\Parser\ParserOutput;
24use MediaWiki\Permissions\Authority;
25use MediaWiki\Permissions\PermissionStatus;
26use MediaWiki\RenameUser\RenameuserSQL;
27use MediaWiki\ResourceLoader as RL;
28use MediaWiki\Revision\RevisionRecord;
29use MediaWiki\Session\Session;
30use MediaWiki\SpecialPage\SpecialPage;
31use MediaWiki\Title\Title;
32use MediaWiki\User\UserIdentity;
33use SearchEngine;
34use Skin;
35use StatusValue;
36use Wikimedia\Rdbms\SelectQueryBuilder;
37
38/**
39 * This class provides an implementation of the core hook interfaces,
40 * forwarding hook calls to HookContainer for dispatch to extensions.
41 * It is intended for use within MediaWiki core only. Extensions that
42 * need a hook runner should create one for the hooks they need to run.
43 *
44 * To use it, create a new HookRunner object from a HookContainer obtained
45 * by dependency injection, or as a last resort, from the global service
46 * container. Then call the relevant method on the object:
47 *   ( new HookRunner( $hookContainer ) )->onSomeHook( $param );
48 *
49 * @internal
50 */
51class HookRunner implements
52    \MediaWiki\Actions\Hook\GetActionNameHook,
53    \MediaWiki\Auth\Hook\AuthenticationAttemptThrottledHook,
54    \MediaWiki\Auth\Hook\AuthManagerFilterProvidersHook,
55    \MediaWiki\Auth\Hook\AuthManagerLoginAuthenticateAuditHook,
56    \MediaWiki\Auth\Hook\AuthManagerVerifyAuthenticationHook,
57    \MediaWiki\Auth\Hook\AuthPreserveQueryParamsHook,
58    \MediaWiki\Auth\Hook\ExemptFromAccountCreationThrottleHook,
59    \MediaWiki\Auth\Hook\LocalUserCreatedHook,
60    \MediaWiki\Auth\Hook\ResetPasswordExpirationHook,
61    \MediaWiki\Auth\Hook\SecuritySensitiveOperationStatusHook,
62    \MediaWiki\Auth\Hook\UserLoggedInHook,
63    \MediaWiki\Block\Hook\AbortAutoblockHook,
64    \MediaWiki\Block\Hook\GetAllBlockActionsHook,
65    \MediaWiki\Block\Hook\GetUserBlockHook,
66    \MediaWiki\Block\Hook\PerformRetroactiveAutoblockHook,
67    \MediaWiki\Block\Hook\SpreadAnyEditBlockHook,
68    \MediaWiki\Cache\Hook\BacklinkCacheGetConditionsHook,
69    \MediaWiki\Cache\Hook\BacklinkCacheGetPrefixHook,
70    \MediaWiki\Cache\Hook\HtmlCacheUpdaterAppendUrlsHook,
71    \MediaWiki\Cache\Hook\HtmlCacheUpdaterVaryUrlsHook,
72    \MediaWiki\Cache\Hook\HTMLFileCache__useFileCacheHook,
73    \MediaWiki\Cache\Hook\MessageCacheFetchOverridesHook,
74    \MediaWiki\Cache\Hook\MessageCacheReplaceHook,
75    \MediaWiki\Cache\Hook\MessageCache__getHook,
76    \MediaWiki\Cache\Hook\MessagesPreLoadHook,
77    \MediaWiki\Hook\TitleSquidURLsHook,
78    \MediaWiki\ChangeTags\Hook\ChangeTagAfterDeleteHook,
79    \MediaWiki\ChangeTags\Hook\ChangeTagCanCreateHook,
80    \MediaWiki\ChangeTags\Hook\ChangeTagCanDeleteHook,
81    \MediaWiki\ChangeTags\Hook\ChangeTagsAfterUpdateTagsHook,
82    \MediaWiki\ChangeTags\Hook\ChangeTagsAllowedAddHook,
83    \MediaWiki\ChangeTags\Hook\ChangeTagsListActiveHook,
84    \MediaWiki\ChangeTags\Hook\ListDefinedTagsHook,
85    \MediaWiki\Content\Hook\ContentAlterParserOutputHook,
86    \MediaWiki\Content\Hook\ContentGetParserOutputHook,
87    \MediaWiki\Content\Hook\ContentHandlerForModelIDHook,
88    \MediaWiki\Content\Hook\ContentModelCanBeUsedOnHook,
89    \MediaWiki\Content\Hook\ConvertContentHook,
90    \MediaWiki\Content\Hook\GetContentModelsHook,
91    \MediaWiki\Content\Hook\GetDifferenceEngineHook,
92    \MediaWiki\Content\Hook\GetSlotDiffRendererHook,
93    \MediaWiki\Content\Hook\JsonValidateSaveHook,
94    \MediaWiki\Content\Hook\PageContentLanguageHook,
95    \MediaWiki\Content\Hook\PlaceNewSectionHook,
96    \MediaWiki\Content\Hook\SearchDataForIndexHook,
97    \MediaWiki\Content\Hook\SearchDataForIndex2Hook,
98    \MediaWiki\Specials\Contribute\Hook\ContributeCardsHook,
99    \MediaWiki\Diff\Hook\AbortDiffCacheHook,
100    \MediaWiki\Diff\Hook\ArticleContentOnDiffHook,
101    \MediaWiki\Diff\Hook\DifferenceEngineAfterLoadNewTextHook,
102    \MediaWiki\Diff\Hook\TextSlotDiffRendererTablePrefixHook,
103    \MediaWiki\Diff\Hook\DifferenceEngineLoadTextAfterNewContentIsLoadedHook,
104    \MediaWiki\Diff\Hook\DifferenceEngineMarkPatrolledLinkHook,
105    \MediaWiki\Diff\Hook\DifferenceEngineMarkPatrolledRCIDHook,
106    \MediaWiki\Diff\Hook\DifferenceEngineNewHeaderHook,
107    \MediaWiki\Diff\Hook\DifferenceEngineOldHeaderHook,
108    \MediaWiki\Diff\Hook\DifferenceEngineOldHeaderNoOldRevHook,
109    \MediaWiki\Diff\Hook\DifferenceEngineRenderRevisionAddParserOutputHook,
110    \MediaWiki\Diff\Hook\DifferenceEngineRenderRevisionShowFinalPatrolLinkHook,
111    \MediaWiki\Diff\Hook\DifferenceEngineShowDiffHook,
112    \MediaWiki\Diff\Hook\DifferenceEngineShowDiffPageHook,
113    \MediaWiki\Diff\Hook\DifferenceEngineShowDiffPageMaybeShowMissingRevisionHook,
114    \MediaWiki\Diff\Hook\DifferenceEngineShowEmptyOldContentHook,
115    \MediaWiki\Diff\Hook\DifferenceEngineViewHeaderHook,
116    \MediaWiki\Diff\Hook\DiffToolsHook,
117    \MediaWiki\Diff\Hook\NewDifferenceEngineHook,
118    \MediaWiki\Hook\AbortEmailNotificationHook,
119    \MediaWiki\Hook\AbortTalkPageEmailNotificationHook,
120    \MediaWiki\Hook\ActionBeforeFormDisplayHook,
121    \MediaWiki\Hook\ActionModifyFormFieldsHook,
122    \MediaWiki\Hook\AddNewAccountHook,
123    \MediaWiki\Output\Hook\AfterBuildFeedLinksHook,
124    \MediaWiki\Output\Hook\AfterFinalPageOutputHook,
125    \MediaWiki\Hook\AfterImportPageHook,
126    \MediaWiki\Hook\AfterParserFetchFileAndTitleHook,
127    \MediaWiki\Hook\AlternateEditHook,
128    \MediaWiki\Hook\AlternateEditPreviewHook,
129    \MediaWiki\Hook\AlternateUserMailerHook,
130    \MediaWiki\Hook\AncientPagesQueryHook,
131    \MediaWiki\Hook\ApiBeforeMainHook,
132    \MediaWiki\Hook\ArticleMergeCompleteHook,
133    \MediaWiki\Hook\ArticleRevisionVisibilitySetHook,
134    \MediaWiki\Hook\ArticleUpdateBeforeRedirectHook,
135    \MediaWiki\Hook\BadImageHook,
136    \MediaWiki\Hook\BeforeInitializeHook,
137    \MediaWiki\Output\Hook\BeforePageDisplayHook,
138    \MediaWiki\Output\Hook\BeforePageRedirectHook,
139    \MediaWiki\Hook\BeforeParserFetchFileAndTitleHook,
140    \MediaWiki\Hook\BeforeParserFetchTemplateRevisionRecordHook,
141    \MediaWiki\Hook\BeforeWelcomeCreationHook,
142    \MediaWiki\Hook\BitmapHandlerCheckImageAreaHook,
143    \MediaWiki\Hook\BitmapHandlerTransformHook,
144    \MediaWiki\Hook\BlockIpCompleteHook,
145    \MediaWiki\Hook\BlockIpHook,
146    \MediaWiki\Hook\BookInformationHook,
147    \MediaWiki\Hook\CanonicalNamespacesHook,
148    \MediaWiki\Hook\CategoryViewer__doCategoryQueryHook,
149    \MediaWiki\Hook\CategoryViewer__generateLinkHook,
150    \MediaWiki\Hook\ChangesListInitRowsHook,
151    \MediaWiki\Hook\ChangesListInsertArticleLinkHook,
152    \MediaWiki\Hook\ChangesListInsertLogEntryHook,
153    \MediaWiki\Hook\ChangeUserGroupsHook,
154    \MediaWiki\Hook\Collation__factoryHook,
155    \MediaWiki\Hook\ContentSecurityPolicyDefaultSourceHook,
156    \MediaWiki\Hook\ContentSecurityPolicyDirectivesHook,
157    \MediaWiki\Hook\ContentSecurityPolicyScriptSourceHook,
158    \MediaWiki\Hook\ContribsPager__getQueryInfoHook,
159    \MediaWiki\Hook\ContribsPager__reallyDoQueryHook,
160    \MediaWiki\Hook\ContributionsLineEndingHook,
161    \MediaWiki\Hook\ContributionsToolLinksHook,
162    \MediaWiki\Hook\CustomEditorHook,
163    \MediaWiki\Hook\DeletedContribsPager__reallyDoQueryHook,
164    \MediaWiki\Hook\DeletedContributionsLineEndingHook,
165    \MediaWiki\Hook\DeleteUnknownPreferencesHook,
166    \MediaWiki\Hook\EditFilterHook,
167    \MediaWiki\Hook\EditFilterMergedContentHook,
168    \MediaWiki\Hook\EditFormInitialTextHook,
169    \MediaWiki\Hook\EditFormPreloadTextHook,
170    \MediaWiki\Hook\EditPageBeforeConflictDiffHook,
171    \MediaWiki\Hook\EditPageBeforeEditButtonsHook,
172    \MediaWiki\Hook\EditPageBeforeEditToolbarHook,
173    \MediaWiki\Hook\EditPageCopyrightWarningHook,
174    \MediaWiki\Hook\EditPageGetCheckboxesDefinitionHook,
175    \MediaWiki\Hook\EditPageGetDiffContentHook,
176    \MediaWiki\Hook\EditPageGetPreviewContentHook,
177    \MediaWiki\Hook\EditPageNoSuchSectionHook,
178    \MediaWiki\Hook\EditPageTosSummaryHook,
179    \MediaWiki\Hook\EditPage__attemptSaveHook,
180    \MediaWiki\Hook\EditPage__attemptSave_afterHook,
181    \MediaWiki\Hook\EditPage__importFormDataHook,
182    \MediaWiki\Hook\EditPage__showEditForm_fieldsHook,
183    \MediaWiki\Hook\EditPage__showEditForm_initialHook,
184    \MediaWiki\Hook\EditPage__showReadOnlyForm_initialHook,
185    \MediaWiki\Hook\EditPage__showStandardInputs_optionsHook,
186    \MediaWiki\Hook\EmailUserCCHook,
187    \MediaWiki\Hook\EmailUserCompleteHook,
188    \MediaWiki\Hook\EmailUserFormHook,
189    \MediaWiki\Hook\EmailUserHook,
190    \MediaWiki\Hook\EmailUserPermissionsErrorsHook,
191    \MediaWiki\Mail\Hook\EmailUserAuthorizeSendHook,
192    \MediaWiki\Mail\Hook\EmailUserSendEmailHook,
193    \MediaWiki\Hook\EnhancedChangesListModifyBlockLineDataHook,
194    \MediaWiki\Hook\EnhancedChangesListModifyLineDataHook,
195    \MediaWiki\Hook\EnhancedChangesList__getLogTextHook,
196    \MediaWiki\Hook\ExtensionTypesHook,
197    \MediaWiki\Hook\FetchChangesListHook,
198    \MediaWiki\Hook\FileDeleteCompleteHook,
199    \MediaWiki\Hook\FileTransformedHook,
200    \MediaWiki\Hook\FileUndeleteCompleteHook,
201    \MediaWiki\Hook\FileUploadHook,
202    \MediaWiki\Hook\FormatAutocommentsHook,
203    \MediaWiki\Hook\GalleryGetModesHook,
204    \MediaWiki\Hook\GetBlockErrorMessageKeyHook,
205    \MediaWiki\Output\Hook\GetCacheVaryCookiesHook,
206    \MediaWiki\Hook\GetCanonicalURLHook,
207    \MediaWiki\Hook\GetDefaultSortkeyHook,
208    \MediaWiki\Hook\GetDoubleUnderscoreIDsHook,
209    \MediaWiki\Hook\GetExtendedMetadataHook,
210    \MediaWiki\Hook\GetFullURLHook,
211    \MediaWiki\Hook\GetHumanTimestampHook,
212    \MediaWiki\Hook\GetInternalURLHook,
213    \MediaWiki\Hook\GetIPHook,
214    \MediaWiki\Hook\GetLangPreferredVariantHook,
215    \MediaWiki\Hook\GetLinkColoursHook,
216    \MediaWiki\Hook\GetLocalURLHook,
217    \MediaWiki\Hook\GetLocalURL__ArticleHook,
218    \MediaWiki\Hook\GetLocalURL__InternalHook,
219    \MediaWiki\Hook\GetLogTypesOnUserHook,
220    \MediaWiki\Hook\GetMagicVariableIDsHook,
221    \MediaWiki\Hook\GetMetadataVersionHook,
222    \MediaWiki\Hook\GetNewMessagesAlertHook,
223    \MediaWiki\Hook\GetRelativeTimestampHook,
224    \MediaWiki\Hook\GitViewersHook,
225    \MediaWiki\Hook\HistoryPageToolLinksHook,
226    \MediaWiki\Hook\HistoryToolsHook,
227    \MediaWiki\Hook\ImageBeforeProduceHTMLHook,
228    \MediaWiki\Hook\ImgAuthBeforeStreamHook,
229    \MediaWiki\Hook\ImgAuthModifyHeadersHook,
230    \MediaWiki\Hook\ImportHandleContentXMLTagHook,
231    \MediaWiki\Hook\ImportHandleLogItemXMLTagHook,
232    \MediaWiki\Hook\ImportHandlePageXMLTagHook,
233    \MediaWiki\Hook\ImportHandleRevisionXMLTagHook,
234    \MediaWiki\Hook\ImportHandleToplevelXMLTagHook,
235    \MediaWiki\Hook\ImportHandleUnknownUserHook,
236    \MediaWiki\Hook\ImportHandleUploadXMLTagHook,
237    \MediaWiki\Hook\ImportLogInterwikiLinkHook,
238    \MediaWiki\Hook\ImportSourcesHook,
239    \MediaWiki\Hook\InfoActionHook,
240    \MediaWiki\Hook\InitializeArticleMaybeRedirectHook,
241    \MediaWiki\Hook\InternalParseBeforeLinksHook,
242    \MediaWiki\Hook\IRCLineURLHook,
243    \MediaWiki\Hook\IsTrustedProxyHook,
244    \MediaWiki\Hook\IsUploadAllowedFromUrlHook,
245    \MediaWiki\Hook\IsValidEmailAddrHook,
246    \MediaWiki\Hook\LanguageGetNamespacesHook,
247    \MediaWiki\Output\Hook\LanguageLinksHook,
248    \MediaWiki\Hook\LanguageSelectorHook,
249    \MediaWiki\Hook\LinkerMakeExternalImageHook,
250    \MediaWiki\Hook\LinkerMakeExternalLinkHook,
251    \MediaWiki\Hook\LinkerMakeMediaLinkFileHook,
252    \MediaWiki\Hook\LinksUpdateCompleteHook,
253    \MediaWiki\Hook\LinksUpdateHook,
254    \MediaWiki\Hook\LocalFilePurgeThumbnailsHook,
255    \MediaWiki\Hook\LocalFile__getHistoryHook,
256    \MediaWiki\Hook\LocalisationCacheRecacheFallbackHook,
257    \MediaWiki\Hook\LocalisationCacheRecacheHook,
258    \MediaWiki\Hook\LogEventsListGetExtraInputsHook,
259    \MediaWiki\Hook\LogEventsListLineEndingHook,
260    \MediaWiki\Hook\LogEventsListShowLogExtractHook,
261    \MediaWiki\Hook\LogExceptionHook,
262    \MediaWiki\Hook\LoginFormValidErrorMessagesHook,
263    \MediaWiki\Hook\LogLineHook,
264    \MediaWiki\Hook\LonelyPagesQueryHook,
265    \MediaWiki\Hook\MagicWordwgVariableIDsHook,
266    \MediaWiki\Hook\MaintenanceRefreshLinksInitHook,
267    \MediaWiki\Hook\MaintenanceShellStartHook,
268    \MediaWiki\Hook\MaintenanceUpdateAddParamsHook,
269    \MediaWiki\Output\Hook\MakeGlobalVariablesScriptHook,
270    \MediaWiki\Hook\ManualLogEntryBeforePublishHook,
271    \MediaWiki\Hook\MarkPatrolledCompleteHook,
272    \MediaWiki\Hook\MarkPatrolledHook,
273    \MediaWiki\Hook\MediaWikiPerformActionHook,
274    \MediaWiki\Hook\MediaWikiServicesHook,
275    \MediaWiki\Hook\MimeMagicGuessFromContentHook,
276    \MediaWiki\Hook\MimeMagicImproveFromExtensionHook,
277    \MediaWiki\Hook\MimeMagicInitHook,
278    \MediaWiki\Hook\ModifyExportQueryHook,
279    \MediaWiki\Hook\MovePageCheckPermissionsHook,
280    \MediaWiki\Hook\MovePageIsValidMoveHook,
281    \MediaWiki\Hook\NamespaceIsMovableHook,
282    \MediaWiki\Hook\NewPagesLineEndingHook,
283    \MediaWiki\Hook\OldChangesListRecentChangesLineHook,
284    \MediaWiki\Hook\OpenSearchUrlsHook,
285    \MediaWiki\Hook\OtherAutoblockLogLinkHook,
286    \MediaWiki\Hook\OtherBlockLogLinkHook,
287    \MediaWiki\Output\Hook\OutputPageAfterGetHeadLinksArrayHook,
288    \MediaWiki\Output\Hook\OutputPageBeforeHTMLHook,
289    \MediaWiki\Output\Hook\OutputPageBodyAttributesHook,
290    \MediaWiki\Output\Hook\OutputPageCheckLastModifiedHook,
291    \MediaWiki\Output\Hook\OutputPageParserOutputHook,
292    \MediaWiki\Output\Hook\OutputPageRenderCategoryLinkHook,
293    \MediaWiki\Hook\PageHistoryBeforeListHook,
294    \MediaWiki\Hook\PageHistoryLineEndingHook,
295    \MediaWiki\Hook\PageHistoryPager__doBatchLookupsHook,
296    \MediaWiki\Hook\PageHistoryPager__getQueryInfoHook,
297    \MediaWiki\Hook\PageMoveCompleteHook,
298    \MediaWiki\Hook\PageMoveCompletingHook,
299    \MediaWiki\Hook\PageRenderingHashHook,
300    \MediaWiki\Hook\ParserAfterParseHook,
301    \MediaWiki\Hook\ParserAfterTidyHook,
302    \MediaWiki\Hook\ParserBeforeInternalParseHook,
303    \MediaWiki\Hook\ParserBeforePreprocessHook,
304    \MediaWiki\Hook\ParserCacheSaveCompleteHook,
305    \MediaWiki\Hook\ParserClearStateHook,
306    \MediaWiki\Hook\ParserClonedHook,
307    \MediaWiki\Hook\ParserFetchTemplateDataHook,
308    \MediaWiki\Hook\ParserFirstCallInitHook,
309    \MediaWiki\Hook\ParserGetVariableValueSwitchHook,
310    \MediaWiki\Hook\ParserGetVariableValueTsHook,
311    \MediaWiki\Hook\ParserLimitReportFormatHook,
312    \MediaWiki\Hook\ParserLimitReportPrepareHook,
313    \MediaWiki\Hook\ParserLogLinterDataHook,
314    \MediaWiki\Hook\ParserMakeImageParamsHook,
315    \MediaWiki\Hook\ParserModifyImageHTMLHook,
316    \MediaWiki\Hook\ParserOptionsRegisterHook,
317    \MediaWiki\Hook\ParserOutputPostCacheTransformHook,
318    \MediaWiki\Hook\ParserPreSaveTransformCompleteHook,
319    \MediaWiki\Hook\ParserTestGlobalsHook,
320    \MediaWiki\Hook\PasswordPoliciesForUserHook,
321    \MediaWiki\Hook\PostLoginRedirectHook,
322    \MediaWiki\Hook\PreferencesGetIconHook,
323    \MediaWiki\Hook\PreferencesGetLayoutHook,
324    \MediaWiki\Hook\PreferencesGetLegendHook,
325    \MediaWiki\Hook\PrefsEmailAuditHook,
326    \MediaWiki\Hook\ProtectionForm__buildFormHook,
327    \MediaWiki\Hook\ProtectionForm__saveHook,
328    \MediaWiki\Hook\ProtectionForm__showLogExtractHook,
329    \MediaWiki\Hook\ProtectionFormAddFormFieldsHook,
330    \MediaWiki\Hook\RandomPageQueryHook,
331    \MediaWiki\Hook\RawPageViewBeforeOutputHook,
332    \MediaWiki\Hook\RecentChangesPurgeRowsHook,
333    \MediaWiki\Hook\RecentChange_saveHook,
334    \MediaWiki\Hook\RejectParserCacheValueHook,
335    \MediaWiki\Hook\RequestContextCreateSkinHook,
336    \MediaWiki\Hook\SelfLinkBeginHook,
337    \MediaWiki\Hook\SendWatchlistEmailNotificationHook,
338    \MediaWiki\Hook\SetupAfterCacheHook,
339    \MediaWiki\Hook\ShortPagesQueryHook,
340    \MediaWiki\Hook\SidebarBeforeOutputHook,
341    \MediaWiki\Hook\SiteNoticeAfterHook,
342    \MediaWiki\Hook\SiteNoticeBeforeHook,
343    \MediaWiki\Hook\SkinAddFooterLinksHook,
344    \MediaWiki\Hook\SkinAfterBottomScriptsHook,
345    \MediaWiki\Hook\SkinAfterContentHook,
346    \MediaWiki\Hook\SkinBuildSidebarHook,
347    \MediaWiki\Hook\SkinCopyrightFooterHook,
348    \MediaWiki\Hook\SkinCopyrightFooterMessageHook,
349    \MediaWiki\Hook\SkinEditSectionLinksHook,
350    \MediaWiki\Hook\SkinPreloadExistenceHook,
351    \MediaWiki\Hook\SkinSubPageSubtitleHook,
352    \MediaWiki\Hook\SkinTemplateGetLanguageLinkHook,
353    \MediaWiki\Hook\SkinTemplateNavigation__UniversalHook,
354    \MediaWiki\Hook\SoftwareInfoHook,
355    \MediaWiki\Hook\SpecialBlockModifyFormFieldsHook,
356    \MediaWiki\Hook\SpecialContributionsBeforeMainOutputHook,
357    \MediaWiki\Hook\SpecialContributions__formatRow__flagsHook,
358    \MediaWiki\Hook\SpecialCreateAccountBenefitsHook,
359    \MediaWiki\Hook\SpecialExportGetExtraPagesHook,
360    \MediaWiki\Hook\SpecialContributions__getForm__filtersHook,
361    \MediaWiki\Hook\SpecialListusersDefaultQueryHook,
362    \MediaWiki\Hook\SpecialListusersFormatRowHook,
363    \MediaWiki\Hook\SpecialListusersHeaderFormHook,
364    \MediaWiki\Hook\SpecialListusersHeaderHook,
365    \MediaWiki\Hook\SpecialListusersQueryInfoHook,
366    \MediaWiki\Hook\SpecialLogAddLogSearchRelationsHook,
367    \MediaWiki\Hook\SpecialMovepageAfterMoveHook,
368    \MediaWiki\Hook\SpecialMuteModifyFormFieldsHook,
369    \MediaWiki\Hook\SpecialNewpagesConditionsHook,
370    \MediaWiki\Hook\SpecialNewPagesFiltersHook,
371    \MediaWiki\Hook\SpecialPrefixIndexGetFormFiltersHook,
372    \MediaWiki\Hook\SpecialPrefixIndexQueryHook,
373    \MediaWiki\Hook\SpecialRandomGetRandomTitleHook,
374    \MediaWiki\Hook\SpecialRecentChangesPanelHook,
375    \MediaWiki\Hook\SpecialResetTokensTokensHook,
376    \MediaWiki\Hook\SpecialSearchCreateLinkHook,
377    \MediaWiki\Hook\SpecialSearchGoResultHook,
378    \MediaWiki\Hook\SpecialSearchNogomatchHook,
379    \MediaWiki\Hook\SpecialSearchProfilesHook,
380    \MediaWiki\Hook\SpecialSearchResultsAppendHook,
381    \MediaWiki\Hook\SpecialSearchResultsHook,
382    \MediaWiki\Hook\SpecialSearchResultsPrependHook,
383    \MediaWiki\Hook\SpecialSearchSetupEngineHook,
384    \MediaWiki\Hook\SpecialStatsAddExtraHook,
385    \MediaWiki\Hook\SpecialTrackingCategories__generateCatLinkHook,
386    \MediaWiki\Hook\SpecialTrackingCategories__preprocessHook,
387    \MediaWiki\Hook\SpecialUploadCompleteHook,
388    \MediaWiki\Hook\SpecialVersionVersionUrlHook,
389    \MediaWiki\Hook\SpecialWatchlistGetNonRevisionTypesHook,
390    \MediaWiki\Hook\SpecialWhatLinksHereQueryHook,
391    \MediaWiki\Hook\TestCanonicalRedirectHook,
392    \MediaWiki\Hook\ThumbnailBeforeProduceHTMLHook,
393    \MediaWiki\Hook\TempUserCreatedRedirectHook,
394    \MediaWiki\Hook\TitleExistsHook,
395    \MediaWiki\Hook\TitleGetEditNoticesHook,
396    \MediaWiki\Hook\TitleGetRestrictionTypesHook,
397    \MediaWiki\Hook\TitleIsAlwaysKnownHook,
398    \MediaWiki\Hook\TitleIsMovableHook,
399    \MediaWiki\Hook\TitleMoveHook,
400    \MediaWiki\Hook\TitleMoveStartingHook,
401    \MediaWiki\Hook\UnblockUserCompleteHook,
402    \MediaWiki\Hook\UnblockUserHook,
403    \MediaWiki\Hook\UndeleteForm__showHistoryHook,
404    \MediaWiki\Hook\UndeleteForm__showRevisionHook,
405    \MediaWiki\Hook\UndeletePageToolLinksHook,
406    \MediaWiki\Hook\UnitTestsAfterDatabaseSetupHook,
407    \MediaWiki\Hook\UnitTestsBeforeDatabaseTeardownHook,
408    \MediaWiki\Hook\UnitTestsListHook,
409    \MediaWiki\Hook\UnwatchArticleCompleteHook,
410    \MediaWiki\Hook\UnwatchArticleHook,
411    \MediaWiki\Hook\UpdateUserMailerFormattedPageStatusHook,
412    \MediaWiki\Hook\UploadCompleteHook,
413    \MediaWiki\Hook\UploadCreateFromRequestHook,
414    \MediaWiki\Hook\UploadFormInitDescriptorHook,
415    \MediaWiki\Hook\UploadFormSourceDescriptorsHook,
416    \MediaWiki\Hook\UploadForm_BeforeProcessingHook,
417    \MediaWiki\Hook\UploadForm_getInitialPageTextHook,
418    \MediaWiki\Hook\UploadForm_initialHook,
419    \MediaWiki\Hook\UploadStashFileHook,
420    \MediaWiki\Hook\UploadVerifyFileHook,
421    \MediaWiki\Hook\UploadVerifyUploadHook,
422    \MediaWiki\Hook\UserEditCountUpdateHook,
423    \MediaWiki\Hook\UserGetLanguageObjectHook,
424    \MediaWiki\Hook\UserLoginCompleteHook,
425    \MediaWiki\Hook\UserLogoutCompleteHook,
426    \MediaWiki\Hook\UserMailerChangeReturnPathHook,
427    \MediaWiki\Hook\UserMailerSplitToHook,
428    \MediaWiki\Hook\UserMailerTransformContentHook,
429    \MediaWiki\Hook\UserMailerTransformMessageHook,
430    \MediaWiki\Hook\UsersPagerDoBatchLookupsHook,
431    \MediaWiki\Hook\UserToolLinksEditHook,
432    \MediaWiki\Hook\ValidateExtendedMetadataCacheHook,
433    \MediaWiki\Hook\WantedPages__getQueryInfoHook,
434    \MediaWiki\Hook\WatchArticleCompleteHook,
435    \MediaWiki\Hook\WatchArticleHook,
436    \MediaWiki\Hook\WatchedItemQueryServiceExtensionsHook,
437    \MediaWiki\Hook\WatchlistEditorBeforeFormRenderHook,
438    \MediaWiki\Hook\WatchlistEditorBuildRemoveLineHook,
439    \MediaWiki\Hook\WebRequestPathInfoRouterHook,
440    \MediaWiki\Hook\WebResponseSetCookieHook,
441    \MediaWiki\Hook\WhatLinksHerePropsHook,
442    \MediaWiki\Hook\WikiExporter__dumpStableQueryHook,
443    \MediaWiki\Hook\XmlDumpWriterOpenPageHook,
444    \MediaWiki\Hook\XmlDumpWriterWriteRevisionHook,
445    \MediaWiki\Installer\Hook\LoadExtensionSchemaUpdatesHook,
446    \MediaWiki\Interwiki\Hook\InterwikiLoadPrefixHook,
447    \MediaWiki\Languages\Hook\LanguageGetTranslatedLanguageNamesHook,
448    \MediaWiki\Languages\Hook\Language__getMessagesFileNameHook,
449    \MediaWiki\Linker\Hook\LinkerGenerateRollbackLinkHook,
450    \MediaWiki\Linker\Hook\HtmlPageLinkRendererBeginHook,
451    \MediaWiki\Linker\Hook\HtmlPageLinkRendererEndHook,
452    \MediaWiki\Page\Hook\ArticleConfirmDeleteHook,
453    \MediaWiki\Page\Hook\ArticleDeleteAfterSuccessHook,
454    \MediaWiki\Page\Hook\ArticleDeleteCompleteHook,
455    \MediaWiki\Page\Hook\ArticleDeleteHook,
456    \MediaWiki\Page\Hook\ArticleFromTitleHook,
457    \MediaWiki\Page\Hook\ArticlePageDataAfterHook,
458    \MediaWiki\Page\Hook\ArticlePageDataBeforeHook,
459    \MediaWiki\Page\Hook\ArticleParserOptionsHook,
460    \MediaWiki\Page\Hook\ArticleProtectCompleteHook,
461    \MediaWiki\Page\Hook\ArticleProtectHook,
462    \MediaWiki\Page\Hook\ArticlePurgeHook,
463    \MediaWiki\Page\Hook\ArticleRevisionViewCustomHook,
464    \MediaWiki\Page\Hook\ArticleShowPatrolFooterHook,
465    \MediaWiki\Page\Hook\ArticleUndeleteHook,
466    \MediaWiki\Page\Hook\ArticleViewFooterHook,
467    \MediaWiki\Page\Hook\ArticleViewHeaderHook,
468    \MediaWiki\Page\Hook\ArticleViewRedirectHook,
469    \MediaWiki\Page\Hook\Article__MissingArticleConditionsHook,
470    \MediaWiki\Page\Hook\BeforeDisplayNoArticleTextHook,
471    \MediaWiki\Page\Hook\CategoryAfterPageAddedHook,
472    \MediaWiki\Page\Hook\CategoryAfterPageRemovedHook,
473    \MediaWiki\Page\Hook\CategoryPageViewHook,
474    \MediaWiki\Page\Hook\DisplayOldSubtitleHook,
475    \MediaWiki\Page\Hook\ImageOpenShowImageInlineBeforeHook,
476    \MediaWiki\Page\Hook\ImagePageAfterImageLinksHook,
477    \MediaWiki\Page\Hook\ImagePageFileHistoryLineHook,
478    \MediaWiki\Page\Hook\ImagePageFindFileHook,
479    \MediaWiki\Page\Hook\ImagePageShowTOCHook,
480    \MediaWiki\Page\Hook\IsFileCacheableHook,
481    \MediaWiki\Page\Hook\OpportunisticLinksUpdateHook,
482    \MediaWiki\Page\Hook\PageDeleteCompleteHook,
483    \MediaWiki\Page\Hook\PageDeleteHook,
484    \MediaWiki\Page\Hook\PageDeletionDataUpdatesHook,
485    \MediaWiki\Page\Hook\PageUndeleteCompleteHook,
486    \MediaWiki\Page\Hook\PageUndeleteHook,
487    \MediaWiki\Page\Hook\PageViewUpdatesHook,
488    \MediaWiki\Page\Hook\RevisionFromEditCompleteHook,
489    \MediaWiki\Page\Hook\RevisionUndeletedHook,
490    \MediaWiki\Page\Hook\RollbackCompleteHook,
491    \MediaWiki\Page\Hook\ShowMissingArticleHook,
492    \MediaWiki\Page\Hook\WikiPageDeletionUpdatesHook,
493    \MediaWiki\Page\Hook\WikiPageFactoryHook,
494    \MediaWiki\Permissions\Hook\PermissionErrorAuditHook,
495    \MediaWiki\Permissions\Hook\PermissionStatusAuditHook,
496    \MediaWiki\Permissions\Hook\GetUserPermissionsErrorsExpensiveHook,
497    \MediaWiki\Permissions\Hook\GetUserPermissionsErrorsHook,
498    \MediaWiki\Permissions\Hook\TitleQuickPermissionsHook,
499    \MediaWiki\Permissions\Hook\TitleReadWhitelistHook,
500    \MediaWiki\Permissions\Hook\UserCanHook,
501    \MediaWiki\Permissions\Hook\UserGetAllRightsHook,
502    \MediaWiki\Permissions\Hook\UserGetRightsHook,
503    \MediaWiki\Permissions\Hook\UserGetRightsRemoveHook,
504    \MediaWiki\Permissions\Hook\UserIsBlockedFromHook,
505    \MediaWiki\Permissions\Hook\UserIsEveryoneAllowedHook,
506    \MediaWiki\Preferences\Hook\GetPreferencesHook,
507    \MediaWiki\Preferences\Hook\PreferencesFormPreSaveHook,
508    \MediaWiki\RenameUser\Hook\RenameUserAbortHook,
509    \MediaWiki\RenameUser\Hook\RenameUserCompleteHook,
510    \MediaWiki\RenameUser\Hook\RenameUserPreRenameHook,
511    \MediaWiki\RenameUser\Hook\RenameUserSQLHook,
512    \MediaWiki\RenameUser\Hook\RenameUserWarningHook,
513    \MediaWiki\Rest\Hook\SearchResultProvideDescriptionHook,
514    \MediaWiki\Revision\Hook\ContentHandlerDefaultModelForHook,
515    \MediaWiki\Revision\Hook\RevisionRecordInsertedHook,
516    \MediaWiki\Search\Hook\PrefixSearchBackendHook,
517    \MediaWiki\Search\Hook\PrefixSearchExtractNamespaceHook,
518    \MediaWiki\Search\Hook\SearchableNamespacesHook,
519    \MediaWiki\Search\Hook\SearchAfterNoDirectMatchHook,
520    \MediaWiki\Search\Hook\SearchGetNearMatchBeforeHook,
521    \MediaWiki\Search\Hook\SearchGetNearMatchCompleteHook,
522    \MediaWiki\Search\Hook\SearchGetNearMatchHook,
523    \MediaWiki\Search\Hook\SearchIndexFieldsHook,
524    \MediaWiki\Search\Hook\SearchResultInitFromTitleHook,
525    \MediaWiki\Search\Hook\SearchResultProvideThumbnailHook,
526    \MediaWiki\Search\Hook\SearchResultsAugmentHook,
527    \MediaWiki\Search\Hook\ShowSearchHitHook,
528    \MediaWiki\Search\Hook\ShowSearchHitTitleHook,
529    \MediaWiki\Search\Hook\SpecialSearchPowerBoxHook,
530    \MediaWiki\Search\Hook\SpecialSearchProfileFormHook,
531    \MediaWiki\Session\Hook\SessionCheckInfoHook,
532    \MediaWiki\Session\Hook\SessionMetadataHook,
533    \MediaWiki\Shell\Hook\WfShellWikiCmdHook,
534    \MediaWiki\Skins\Hook\SkinAfterPortletHook,
535    \MediaWiki\Skins\Hook\SkinPageReadyConfigHook,
536    \MediaWiki\SpecialPage\Hook\AuthChangeFormFieldsHook,
537    \MediaWiki\SpecialPage\Hook\ChangeAuthenticationDataAuditHook,
538    \MediaWiki\SpecialPage\Hook\ChangesListSpecialPageQueryHook,
539    \MediaWiki\SpecialPage\Hook\ChangesListSpecialPageStructuredFiltersHook,
540    \MediaWiki\SpecialPage\Hook\RedirectSpecialArticleRedirectParamsHook,
541    \MediaWiki\SpecialPage\Hook\SpecialPageAfterExecuteHook,
542    \MediaWiki\SpecialPage\Hook\SpecialPageBeforeExecuteHook,
543    \MediaWiki\SpecialPage\Hook\SpecialPageBeforeFormDisplayHook,
544    \MediaWiki\SpecialPage\Hook\SpecialPage_initListHook,
545    \MediaWiki\SpecialPage\Hook\WgQueryPagesHook,
546    \MediaWiki\Storage\Hook\ArticleEditUpdateNewTalkHook,
547    \MediaWiki\Storage\Hook\ArticlePrepareTextForEditHook,
548    \MediaWiki\Storage\Hook\BeforeRevertedTagUpdateHook,
549    \MediaWiki\Storage\Hook\MultiContentSaveHook,
550    \MediaWiki\Storage\Hook\PageContentSaveHook,
551    \MediaWiki\Storage\Hook\PageSaveCompleteHook,
552    \MediaWiki\Storage\Hook\ParserOutputStashForEditHook,
553    \MediaWiki\Storage\Hook\RevisionDataUpdatesHook,
554    \MediaWiki\User\Hook\AutopromoteConditionHook,
555    \MediaWiki\User\Hook\ConfirmEmailCompleteHook,
556    \MediaWiki\User\Hook\EmailConfirmedHook,
557    \MediaWiki\User\Hook\GetAutoPromoteGroupsHook,
558    \MediaWiki\User\Hook\InvalidateEmailCompleteHook,
559    \MediaWiki\User\Hook\IsValidPasswordHook,
560    \MediaWiki\User\Hook\PingLimiterHook,
561    \MediaWiki\User\Hook\SpecialPasswordResetOnSubmitHook,
562    \MediaWiki\User\Hook\UserAddGroupHook,
563    \MediaWiki\User\Hook\UserArrayFromResultHook,
564    \MediaWiki\User\Hook\UserCanSendEmailHook,
565    \MediaWiki\User\Hook\UserClearNewTalkNotificationHook,
566    \MediaWiki\User\Hook\UserEffectiveGroupsHook,
567    \MediaWiki\User\Hook\UserGetDefaultOptionsHook,
568    \MediaWiki\User\Hook\UserGetEmailAuthenticationTimestampHook,
569    \MediaWiki\User\Hook\UserGetEmailHook,
570    \MediaWiki\User\Hook\UserGetReservedNamesHook,
571    \MediaWiki\User\Hook\UserGroupsChangedHook,
572    \MediaWiki\User\Hook\UserIsBlockedGloballyHook,
573    \MediaWiki\User\Hook\UserIsBotHook,
574    \MediaWiki\User\Hook\UserIsLockedHook,
575    \MediaWiki\User\Hook\UserLoadAfterLoadFromSessionHook,
576    \MediaWiki\User\Hook\UserLoadDefaultsHook,
577    \MediaWiki\User\Hook\UserLogoutHook,
578    \MediaWiki\User\Hook\UserPrivilegedGroupsHook,
579    \MediaWiki\User\Hook\UserRemoveGroupHook,
580    \MediaWiki\User\Hook\UserSaveSettingsHook,
581    \MediaWiki\User\Hook\UserSendConfirmationMailHook,
582    \MediaWiki\User\Hook\UserSetEmailAuthenticationTimestampHook,
583    \MediaWiki\User\Hook\UserSetEmailHook,
584    \MediaWiki\User\Hook\User__mailPasswordInternalHook,
585    \MediaWiki\User\Options\Hook\LoadUserOptionsHook,
586    \MediaWiki\User\Options\Hook\SaveUserOptionsHook,
587    \MediaWiki\User\Options\Hook\ConditionalDefaultOptionsAddConditionHook
588{
589    /** @var HookContainer */
590    private $container;
591
592    public function __construct( HookContainer $container ) {
593        $this->container = $container;
594    }
595
596    public function onAbortAutoblock( $autoblockip, $block ) {
597        return $this->container->run(
598            'AbortAutoblock',
599            [ $autoblockip, $block ]
600        );
601    }
602
603    public function onAbortDiffCache( $diffEngine ) {
604        return $this->container->run(
605            'AbortDiffCache',
606            [ $diffEngine ]
607        );
608    }
609
610    public function onAbortEmailNotification( $editor, $title, $rc ) {
611        return $this->container->run(
612            'AbortEmailNotification',
613            [ $editor, $title, $rc ]
614        );
615    }
616
617    public function onAbortTalkPageEmailNotification( $targetUser, $title ) {
618        return $this->container->run(
619            'AbortTalkPageEmailNotification',
620            [ $targetUser, $title ]
621        );
622    }
623
624    public function onActionBeforeFormDisplay( $name, $form, $article ) {
625        return $this->container->run(
626            'ActionBeforeFormDisplay',
627            [ $name, $form, $article ]
628        );
629    }
630
631    public function onActionModifyFormFields( $name, &$fields, $article ) {
632        return $this->container->run(
633            'ActionModifyFormFields',
634            [ $name, &$fields, $article ]
635        );
636    }
637
638    public function onAddNewAccount( $user, $byEmail ) {
639        return $this->container->run(
640            'AddNewAccount',
641            [ $user, $byEmail ]
642        );
643    }
644
645    public function onAfterBuildFeedLinks( &$feedLinks ) {
646        return $this->container->run(
647            'AfterBuildFeedLinks',
648            [ &$feedLinks ]
649        );
650    }
651
652    public function onAfterFinalPageOutput( $output ): void {
653        $this->container->run(
654            'AfterFinalPageOutput',
655            [ $output ],
656            [ 'abortable' => false ]
657        );
658    }
659
660    public function onAfterImportPage( $title, $foreignTitle, $revCount,
661        $sRevCount, $pageInfo
662    ) {
663        return $this->container->run(
664            'AfterImportPage',
665            [ $title, $foreignTitle, $revCount, $sRevCount, $pageInfo ]
666        );
667    }
668
669    public function onAfterParserFetchFileAndTitle( $parser, $ig, &$html ) {
670        return $this->container->run(
671            'AfterParserFetchFileAndTitle',
672            [ $parser, $ig, &$html ]
673        );
674    }
675
676    public function onAlternateEdit( $editPage ) {
677        return $this->container->run(
678            'AlternateEdit',
679            [ $editPage ]
680        );
681    }
682
683    public function onAlternateEditPreview( $editPage, &$content, &$previewHTML,
684        &$parserOutput
685    ) {
686        return $this->container->run(
687            'AlternateEditPreview',
688            [ $editPage, &$content, &$previewHTML, &$parserOutput ]
689        );
690    }
691
692    public function onAlternateUserMailer( $headers, $to, $from, $subject, $body ) {
693        return $this->container->run(
694            'AlternateUserMailer',
695            [ $headers, $to, $from, $subject, $body ]
696        );
697    }
698
699    public function onAncientPagesQuery( &$tables, &$conds, &$joinConds ) {
700        return $this->container->run(
701            'AncientPagesQuery',
702            [ &$tables, &$conds, &$joinConds ]
703        );
704    }
705
706    public function onApiBeforeMain( &$main ) {
707        return $this->container->run(
708            'ApiBeforeMain',
709            [ &$main ]
710        );
711    }
712
713    public function onArticleConfirmDelete( $article, $output, &$reason ) {
714        return $this->container->run(
715            'ArticleConfirmDelete',
716            [ $article, $output, &$reason ]
717        );
718    }
719
720    public function onArticleContentOnDiff( $diffEngine, $output ) {
721        return $this->container->run(
722            'ArticleContentOnDiff',
723            [ $diffEngine, $output ]
724        );
725    }
726
727    public function onArticleDelete( $wikiPage, $user, &$reason, &$error, &$status,
728        $suppress
729    ) {
730        return $this->container->run(
731            'ArticleDelete',
732            [ $wikiPage, $user, &$reason, &$error, &$status, $suppress ]
733        );
734    }
735
736    public function onArticleDeleteAfterSuccess( $title, $outputPage ) {
737        return $this->container->run(
738            'ArticleDeleteAfterSuccess',
739            [ $title, $outputPage ]
740        );
741    }
742
743    public function onArticleDeleteComplete( $wikiPage, $user, $reason, $id,
744        $content, $logEntry, $archivedRevisionCount
745    ) {
746        return $this->container->run(
747            'ArticleDeleteComplete',
748            [ $wikiPage, $user, $reason, $id, $content, $logEntry,
749                $archivedRevisionCount ]
750        );
751    }
752
753    public function onArticleEditUpdateNewTalk( $wikiPage, $recipient ) {
754        return $this->container->run(
755            'ArticleEditUpdateNewTalk',
756            [ $wikiPage, $recipient ]
757        );
758    }
759
760    public function onArticleFromTitle( $title, &$article, $context ) {
761        return $this->container->run(
762            'ArticleFromTitle',
763            [ $title, &$article, $context ]
764        );
765    }
766
767    public function onArticleMergeComplete( $targetTitle, $destTitle ) {
768        return $this->container->run(
769            'ArticleMergeComplete',
770            [ $targetTitle, $destTitle ]
771        );
772    }
773
774    public function onArticlePageDataAfter( $wikiPage, &$row ) {
775        return $this->container->run(
776            'ArticlePageDataAfter',
777            [ $wikiPage, &$row ]
778        );
779    }
780
781    public function onArticlePageDataBefore( $wikiPage, &$fields, &$tables,
782        &$joinConds
783    ) {
784        return $this->container->run(
785            'ArticlePageDataBefore',
786            [ $wikiPage, &$fields, &$tables, &$joinConds ]
787        );
788    }
789
790    public function onArticleParserOptions( Article $article, ParserOptions $popts ) {
791        return $this->container->run(
792            'ArticleParserOptions',
793            [ $article, $popts ]
794        );
795    }
796
797    public function onArticlePrepareTextForEdit( $wikiPage, $popts ) {
798        return $this->container->run(
799            'ArticlePrepareTextForEdit',
800            [ $wikiPage, $popts ]
801        );
802    }
803
804    public function onArticleProtect( $wikiPage, $user, $protect, $reason ) {
805        return $this->container->run(
806            'ArticleProtect',
807            [ $wikiPage, $user, $protect, $reason ]
808        );
809    }
810
811    public function onArticleProtectComplete( $wikiPage, $user, $protect, $reason ) {
812        return $this->container->run(
813            'ArticleProtectComplete',
814            [ $wikiPage, $user, $protect, $reason ]
815        );
816    }
817
818    public function onArticlePurge( $wikiPage ) {
819        return $this->container->run(
820            'ArticlePurge',
821            [ $wikiPage ]
822        );
823    }
824
825    public function onArticleRevisionViewCustom( $revision, $title, $oldid,
826        $output
827    ) {
828        return $this->container->run(
829            'ArticleRevisionViewCustom',
830            [ $revision, $title, $oldid, $output ]
831        );
832    }
833
834    public function onArticleRevisionVisibilitySet( $title, $ids,
835        $visibilityChangeMap
836    ) {
837        return $this->container->run(
838            'ArticleRevisionVisibilitySet',
839            [ $title, $ids, $visibilityChangeMap ]
840        );
841    }
842
843    public function onArticleShowPatrolFooter( $article ) {
844        return $this->container->run(
845            'ArticleShowPatrolFooter',
846            [ $article ]
847        );
848    }
849
850    public function onArticleUndelete( $title, $create, $comment, $oldPageId,
851        $restoredPages
852    ) {
853        return $this->container->run(
854            'ArticleUndelete',
855            [ $title, $create, $comment, $oldPageId, $restoredPages ]
856        );
857    }
858
859    public function onArticleUpdateBeforeRedirect( $article, &$sectionanchor,
860        &$extraq
861    ) {
862        return $this->container->run(
863            'ArticleUpdateBeforeRedirect',
864            [ $article, &$sectionanchor, &$extraq ]
865        );
866    }
867
868    public function onArticleViewFooter( $article, $patrolFooterShown ) {
869        return $this->container->run(
870            'ArticleViewFooter',
871            [ $article, $patrolFooterShown ]
872        );
873    }
874
875    public function onArticleViewHeader( $article, &$outputDone, &$pcache ) {
876        return $this->container->run(
877            'ArticleViewHeader',
878            [ $article, &$outputDone, &$pcache ]
879        );
880    }
881
882    public function onArticleViewRedirect( $article ) {
883        return $this->container->run(
884            'ArticleViewRedirect',
885            [ $article ]
886        );
887    }
888
889    public function onArticle__MissingArticleConditions( &$conds, $logTypes ) {
890        return $this->container->run(
891            'Article::MissingArticleConditions',
892            [ &$conds, $logTypes ]
893        );
894    }
895
896    public function onAuthChangeFormFields( $requests, $fieldInfo,
897        &$formDescriptor, $action
898    ) {
899        return $this->container->run(
900            'AuthChangeFormFields',
901            [ $requests, $fieldInfo, &$formDescriptor, $action ]
902        );
903    }
904
905    public function onAuthManagerFilterProviders( array &$providers ): void {
906        $this->container->run(
907            'AuthManagerFilterProviders',
908            [ &$providers ],
909            [ 'abortable' => false ]
910        );
911    }
912
913    public function onAuthManagerLoginAuthenticateAudit( $response, $user,
914        $username, $extraData
915    ) {
916        return $this->container->run(
917            'AuthManagerLoginAuthenticateAudit',
918            [ $response, $user, $username, $extraData ]
919        );
920    }
921
922    public function onAuthManagerVerifyAuthentication(
923        ?UserIdentity $user,
924        AuthenticationResponse &$response,
925        AuthManager $authManager,
926        array $info
927    ): bool {
928        return $this->container->run(
929            'AuthManagerVerifyAuthentication',
930            [ $user, &$response, $authManager, $info ],
931        );
932    }
933
934    public function onAuthPreserveQueryParams( &$params, $options ) {
935        return $this->container->run(
936            'AuthPreserveQueryParams', [ &$params, $options ]
937        );
938    }
939
940    public function onAuthenticationAttemptThrottled( string $type, ?string $username, ?string $ip ) {
941        return $this->container->run(
942            'AuthenticationAttemptThrottled', [ $type, $username, $ip ]
943        );
944    }
945
946    public function onAutopromoteCondition( $type, $args, $user, &$result ) {
947        return $this->container->run(
948            'AutopromoteCondition',
949            [ $type, $args, $user, &$result ]
950        );
951    }
952
953    public function onBacklinkCacheGetConditions( $table, $title, &$conds ) {
954        return $this->container->run(
955            'BacklinkCacheGetConditions',
956            [ $table, $title, &$conds ]
957        );
958    }
959
960    public function onBacklinkCacheGetPrefix( $table, &$prefix ) {
961        return $this->container->run(
962            'BacklinkCacheGetPrefix',
963            [ $table, &$prefix ]
964        );
965    }
966
967    public function onBadImage( $name, &$bad ) {
968        return $this->container->run(
969            'BadImage',
970            [ $name, &$bad ]
971        );
972    }
973
974    public function onBeforeDisplayNoArticleText( $article ) {
975        return $this->container->run(
976            'BeforeDisplayNoArticleText',
977            [ $article ]
978        );
979    }
980
981    public function onBeforeInitialize( $title, $unused, $output, $user, $request,
982        $mediaWiki
983    ) {
984        return $this->container->run(
985            'BeforeInitialize',
986            [ $title, $unused, $output, $user, $request, $mediaWiki ]
987        );
988    }
989
990    public function onBeforePageDisplay( $out, $skin ): void {
991        $this->container->run(
992            'BeforePageDisplay',
993            [ $out, $skin ],
994            [ 'abortable' => false ]
995        );
996    }
997
998    public function onBeforePageRedirect( $out, &$redirect, &$code ) {
999        return $this->container->run(
1000            'BeforePageRedirect',
1001            [ $out, &$redirect, &$code ]
1002        );
1003    }
1004
1005    public function onBeforeParserFetchFileAndTitle( $parser, $nt, &$options,
1006        &$descQuery
1007    ) {
1008        return $this->container->run(
1009            'BeforeParserFetchFileAndTitle',
1010            [ $parser, $nt, &$options, &$descQuery ]
1011        );
1012    }
1013
1014    public function onBeforeParserFetchTemplateRevisionRecord(
1015        ?LinkTarget $contextTitle, LinkTarget $title,
1016        bool &$skip, ?RevisionRecord &$revRecord
1017    ) {
1018        return $this->container->run(
1019            'BeforeParserFetchTemplateRevisionRecord',
1020            [ $contextTitle, $title, &$skip, &$revRecord ]
1021        );
1022    }
1023
1024    public function onBeforeRevertedTagUpdate( $wikiPage, $user,
1025        $summary, $flags, $revisionRecord, $editResult, &$approved
1026    ): void {
1027        $this->container->run(
1028            'BeforeRevertedTagUpdate',
1029            [ $wikiPage, $user, $summary, $flags, $revisionRecord, $editResult,
1030                &$approved ],
1031            [ 'abortable' => false ]
1032        );
1033    }
1034
1035    public function onBeforeWelcomeCreation( &$welcome_creation_msg,
1036        &$injected_html
1037    ) {
1038        return $this->container->run(
1039            'BeforeWelcomeCreation',
1040            [ &$welcome_creation_msg, &$injected_html ]
1041        );
1042    }
1043
1044    public function onBitmapHandlerCheckImageArea( $image, &$params,
1045        &$checkImageAreaHookResult
1046    ) {
1047        return $this->container->run(
1048            'BitmapHandlerCheckImageArea',
1049            [ $image, &$params, &$checkImageAreaHookResult ]
1050        );
1051    }
1052
1053    public function onBitmapHandlerTransform( $handler, $image, &$scalerParams,
1054        &$mto
1055    ) {
1056        return $this->container->run(
1057            'BitmapHandlerTransform',
1058            [ $handler, $image, &$scalerParams, &$mto ]
1059        );
1060    }
1061
1062    public function onBlockIp( $block, $user, &$reason ) {
1063        return $this->container->run(
1064            'BlockIp',
1065            [ $block, $user, &$reason ]
1066        );
1067    }
1068
1069    public function onBlockIpComplete( $block, $user, $priorBlock ) {
1070        return $this->container->run(
1071            'BlockIpComplete',
1072            [ $block, $user, $priorBlock ]
1073        );
1074    }
1075
1076    public function onBookInformation( $isbn, $output ) {
1077        return $this->container->run(
1078            'BookInformation',
1079            [ $isbn, $output ]
1080        );
1081    }
1082
1083    public function onCanonicalNamespaces( &$namespaces ) {
1084        return $this->container->run(
1085            'CanonicalNamespaces',
1086            [ &$namespaces ]
1087        );
1088    }
1089
1090    public function onCategoryAfterPageAdded( $category, $wikiPage ) {
1091        return $this->container->run(
1092            'CategoryAfterPageAdded',
1093            [ $category, $wikiPage ]
1094        );
1095    }
1096
1097    public function onCategoryAfterPageRemoved( $category, $wikiPage, $id ) {
1098        return $this->container->run(
1099            'CategoryAfterPageRemoved',
1100            [ $category, $wikiPage, $id ]
1101        );
1102    }
1103
1104    public function onCategoryPageView( $catpage ) {
1105        return $this->container->run(
1106            'CategoryPageView',
1107            [ $catpage ]
1108        );
1109    }
1110
1111    public function onCategoryViewer__doCategoryQuery( $type, $res ) {
1112        return $this->container->run(
1113            'CategoryViewer::doCategoryQuery',
1114            [ $type, $res ]
1115        );
1116    }
1117
1118    public function onCategoryViewer__generateLink( $type, $title, $html, &$link ) {
1119        return $this->container->run(
1120            'CategoryViewer::generateLink',
1121            [ $type, $title, $html, &$link ]
1122        );
1123    }
1124
1125    public function onChangeAuthenticationDataAudit( $req, $status ) {
1126        return $this->container->run(
1127            'ChangeAuthenticationDataAudit',
1128            [ $req, $status ]
1129        );
1130    }
1131
1132    public function onChangesListInitRows( $changesList, $rows ) {
1133        return $this->container->run(
1134            'ChangesListInitRows',
1135            [ $changesList, $rows ]
1136        );
1137    }
1138
1139    public function onChangesListInsertArticleLink( $changesList, &$articlelink,
1140        &$s, $rc, $unpatrolled, $watched
1141    ) {
1142        return $this->container->run(
1143            'ChangesListInsertArticleLink',
1144            [ $changesList, &$articlelink, &$s, $rc, $unpatrolled, $watched ]
1145        );
1146    }
1147
1148    public function onChangesListInsertLogEntry( $entry, $context, &$html, &$classes, &$attribs ) {
1149        return $this->container->run(
1150            'ChangesListInsertLogEntry',
1151            [ $entry, $context, &$html, &$classes, &$attribs ]
1152        );
1153    }
1154
1155    public function onChangesListSpecialPageQuery( $name, &$tables, &$fields,
1156        &$conds, &$query_options, &$join_conds, $opts
1157    ) {
1158        return $this->container->run(
1159            'ChangesListSpecialPageQuery',
1160            [ $name, &$tables, &$fields, &$conds, &$query_options,
1161                &$join_conds, $opts ]
1162        );
1163    }
1164
1165    public function onChangesListSpecialPageStructuredFilters( $special ) {
1166        return $this->container->run(
1167            'ChangesListSpecialPageStructuredFilters',
1168            [ $special ]
1169        );
1170    }
1171
1172    public function onChangeTagAfterDelete( $tag, &$status ) {
1173        return $this->container->run(
1174            'ChangeTagAfterDelete',
1175            [ $tag, &$status ]
1176        );
1177    }
1178
1179    public function onChangeTagCanCreate( $tag, $user, &$status ) {
1180        return $this->container->run(
1181            'ChangeTagCanCreate',
1182            [ $tag, $user, &$status ]
1183        );
1184    }
1185
1186    public function onChangeTagCanDelete( $tag, $user, &$status ) {
1187        return $this->container->run(
1188            'ChangeTagCanDelete',
1189            [ $tag, $user, &$status ]
1190        );
1191    }
1192
1193    public function onChangeTagsAfterUpdateTags( $addedTags, $removedTags,
1194        $prevTags, $rc_id, $rev_id, $log_id, $params, $rc, $user
1195    ) {
1196        return $this->container->run(
1197            'ChangeTagsAfterUpdateTags',
1198            [ $addedTags, $removedTags, $prevTags, $rc_id, $rev_id, $log_id,
1199                $params, $rc, $user ]
1200        );
1201    }
1202
1203    public function onChangeTagsAllowedAdd( &$allowedTags, $addTags, $user ) {
1204        return $this->container->run(
1205            'ChangeTagsAllowedAdd',
1206            [ &$allowedTags, $addTags, $user ]
1207        );
1208    }
1209
1210    public function onChangeTagsListActive( &$tags ) {
1211        return $this->container->run(
1212            'ChangeTagsListActive',
1213            [ &$tags ]
1214        );
1215    }
1216
1217    public function onChangeUserGroups( $performer, $user, &$add, &$remove ) {
1218        return $this->container->run(
1219            'ChangeUserGroups',
1220            [ $performer, $user, &$add, &$remove ]
1221        );
1222    }
1223
1224    public function onCollation__factory( $collationName, &$collationObject ) {
1225        return $this->container->run(
1226            'Collation::factory',
1227            [ $collationName, &$collationObject ]
1228        );
1229    }
1230
1231    public function onConfirmEmailComplete( $user ) {
1232        return $this->container->run(
1233            'ConfirmEmailComplete',
1234            [ $user ]
1235        );
1236    }
1237
1238    public function onContentAlterParserOutput( $content, $title, $parserOutput ) {
1239        return $this->container->run(
1240            'ContentAlterParserOutput',
1241            [ $content, $title, $parserOutput ]
1242        );
1243    }
1244
1245    public function onContentGetParserOutput( $content, $title, $revId, $options,
1246        $generateHtml, &$parserOutput
1247    ) {
1248        return $this->container->run(
1249            'ContentGetParserOutput',
1250            [ $content, $title, $revId, $options, $generateHtml, &$parserOutput ]
1251        );
1252    }
1253
1254    public function onContentHandlerDefaultModelFor( $title, &$model ) {
1255        return $this->container->run(
1256            'ContentHandlerDefaultModelFor',
1257            [ $title, &$model ]
1258        );
1259    }
1260
1261    public function onContentHandlerForModelID( $modelName, &$handler ) {
1262        return $this->container->run(
1263            'ContentHandlerForModelID',
1264            [ $modelName, &$handler ]
1265        );
1266    }
1267
1268    public function onContentModelCanBeUsedOn( $contentModel, $title, &$ok ) {
1269        return $this->container->run(
1270            'ContentModelCanBeUsedOn',
1271            [ $contentModel, $title, &$ok ]
1272        );
1273    }
1274
1275    public function onContentSecurityPolicyDefaultSource( &$defaultSrc,
1276        $policyConfig, $mode
1277    ) {
1278        return $this->container->run(
1279            'ContentSecurityPolicyDefaultSource',
1280            [ &$defaultSrc, $policyConfig, $mode ]
1281        );
1282    }
1283
1284    public function onContentSecurityPolicyDirectives( &$directives, $policyConfig,
1285        $mode
1286    ) {
1287        return $this->container->run(
1288            'ContentSecurityPolicyDirectives',
1289            [ &$directives, $policyConfig, $mode ]
1290        );
1291    }
1292
1293    public function onContentSecurityPolicyScriptSource( &$scriptSrc,
1294        $policyConfig, $mode
1295    ) {
1296        return $this->container->run(
1297            'ContentSecurityPolicyScriptSource',
1298            [ &$scriptSrc, $policyConfig, $mode ]
1299        );
1300    }
1301
1302    public function onContribsPager__getQueryInfo( $pager, &$queryInfo ) {
1303        return $this->container->run(
1304            'ContribsPager::getQueryInfo',
1305            [ $pager, &$queryInfo ]
1306        );
1307    }
1308
1309    public function onContribsPager__reallyDoQuery( &$data, $pager, $offset,
1310        $limit, $descending
1311    ) {
1312        return $this->container->run(
1313            'ContribsPager::reallyDoQuery',
1314            [ &$data, $pager, $offset, $limit, $descending ]
1315        );
1316    }
1317
1318    public function onContributeCards( &$cards ): void {
1319        $this->container->run(
1320            'ContributeCards',
1321            [ &$cards ]
1322        );
1323    }
1324
1325    public function onContributionsLineEnding( $page, &$ret, $row, &$classes,
1326        &$attribs
1327    ) {
1328        return $this->container->run(
1329            'ContributionsLineEnding',
1330            [ $page, &$ret, $row, &$classes, &$attribs ]
1331        );
1332    }
1333
1334    public function onContributionsToolLinks( $id, Title $title, array &$tools, SpecialPage $specialPage ) {
1335        return $this->container->run(
1336            'ContributionsToolLinks',
1337            [ $id, $title, &$tools, $specialPage ]
1338        );
1339    }
1340
1341    public function onConvertContent( $content, $toModel, $lossy, &$result ) {
1342        return $this->container->run(
1343            'ConvertContent',
1344            [ $content, $toModel, $lossy, &$result ]
1345        );
1346    }
1347
1348    public function onCustomEditor( $article, $user ) {
1349        return $this->container->run(
1350            'CustomEditor',
1351            [ $article, $user ]
1352        );
1353    }
1354
1355    public function onDeletedContribsPager__reallyDoQuery( &$data, $pager, $offset,
1356        $limit, $descending
1357    ) {
1358        return $this->container->run(
1359            'DeletedContribsPager::reallyDoQuery',
1360            [ &$data, $pager, $offset, $limit, $descending ]
1361        );
1362    }
1363
1364    public function onDeletedContributionsLineEnding( $page, &$ret, $row,
1365        &$classes, &$attribs
1366    ) {
1367        return $this->container->run(
1368            'DeletedContributionsLineEnding',
1369            [ $page, &$ret, $row, &$classes, &$attribs ]
1370        );
1371    }
1372
1373    public function onDeleteUnknownPreferences( &$where, $db ) {
1374        return $this->container->run(
1375            'DeleteUnknownPreferences',
1376            [ &$where, $db ]
1377        );
1378    }
1379
1380    public function onDifferenceEngineAfterLoadNewText( $differenceEngine ) {
1381        return $this->container->run(
1382            'DifferenceEngineAfterLoadNewText',
1383            [ $differenceEngine ]
1384        );
1385    }
1386
1387    public function onTextSlotDiffRendererTablePrefix(
1388        \TextSlotDiffRenderer $textSlotDiffRenderer,
1389        IContextSource $context,
1390        array &$parts
1391    ) {
1392        return $this->container->run(
1393            'TextSlotDiffRendererTablePrefix',
1394            [ $textSlotDiffRenderer, $context, &$parts ]
1395        );
1396    }
1397
1398    public function onDifferenceEngineLoadTextAfterNewContentIsLoaded(
1399        $differenceEngine
1400    ) {
1401        return $this->container->run(
1402            'DifferenceEngineLoadTextAfterNewContentIsLoaded',
1403            [ $differenceEngine ]
1404        );
1405    }
1406
1407    public function onDifferenceEngineMarkPatrolledLink( $differenceEngine,
1408        &$markAsPatrolledLink, $rcid
1409    ) {
1410        return $this->container->run(
1411            'DifferenceEngineMarkPatrolledLink',
1412            [ $differenceEngine, &$markAsPatrolledLink, $rcid ]
1413        );
1414    }
1415
1416    public function onDifferenceEngineMarkPatrolledRCID( &$rcid, $differenceEngine,
1417        $change, $user
1418    ) {
1419        return $this->container->run(
1420            'DifferenceEngineMarkPatrolledRCID',
1421            [ &$rcid, $differenceEngine, $change, $user ]
1422        );
1423    }
1424
1425    public function onDifferenceEngineNewHeader( $differenceEngine, &$newHeader,
1426        $formattedRevisionTools, $nextlink, $rollback, $newminor, $diffOnly, $rdel,
1427        $unhide
1428    ) {
1429        return $this->container->run(
1430            'DifferenceEngineNewHeader',
1431            [ $differenceEngine, &$newHeader, $formattedRevisionTools,
1432                $nextlink, $rollback, $newminor, $diffOnly, $rdel, $unhide ]
1433        );
1434    }
1435
1436    public function onDifferenceEngineOldHeader( $differenceEngine, &$oldHeader,
1437        $prevlink, $oldminor, $diffOnly, $ldel, $unhide
1438    ) {
1439        return $this->container->run(
1440            'DifferenceEngineOldHeader',
1441            [ $differenceEngine, &$oldHeader, $prevlink, $oldminor, $diffOnly,
1442                $ldel, $unhide ]
1443        );
1444    }
1445
1446    public function onDifferenceEngineOldHeaderNoOldRev( &$oldHeader ) {
1447        return $this->container->run(
1448            'DifferenceEngineOldHeaderNoOldRev',
1449            [ &$oldHeader ]
1450        );
1451    }
1452
1453    public function onDifferenceEngineRenderRevisionAddParserOutput(
1454        $differenceEngine, $out, $parserOutput, $wikiPage
1455    ) {
1456        return $this->container->run(
1457            'DifferenceEngineRenderRevisionAddParserOutput',
1458            [ $differenceEngine, $out, $parserOutput, $wikiPage ]
1459        );
1460    }
1461
1462    public function onDifferenceEngineRenderRevisionShowFinalPatrolLink() {
1463        return $this->container->run(
1464            'DifferenceEngineRenderRevisionShowFinalPatrolLink',
1465            []
1466        );
1467    }
1468
1469    public function onDifferenceEngineShowDiff( $differenceEngine ) {
1470        return $this->container->run(
1471            'DifferenceEngineShowDiff',
1472            [ $differenceEngine ]
1473        );
1474    }
1475
1476    public function onDifferenceEngineShowDiffPage( $out ) {
1477        return $this->container->run(
1478            'DifferenceEngineShowDiffPage',
1479            [ $out ]
1480        );
1481    }
1482
1483    public function onDifferenceEngineShowDiffPageMaybeShowMissingRevision(
1484        $differenceEngine
1485    ) {
1486        return $this->container->run(
1487            'DifferenceEngineShowDiffPageMaybeShowMissingRevision',
1488            [ $differenceEngine ]
1489        );
1490    }
1491
1492    public function onDifferenceEngineShowEmptyOldContent( $differenceEngine ) {
1493        return $this->container->run(
1494            'DifferenceEngineShowEmptyOldContent',
1495            [ $differenceEngine ]
1496        );
1497    }
1498
1499    public function onDifferenceEngineViewHeader( $differenceEngine ) {
1500        return $this->container->run(
1501            'DifferenceEngineViewHeader',
1502            [ $differenceEngine ]
1503        );
1504    }
1505
1506    public function onDiffTools( $newRevRecord, &$links, $oldRevRecord, $userIdentity ) {
1507        return $this->container->run(
1508            'DiffTools',
1509            [ $newRevRecord, &$links, $oldRevRecord, $userIdentity ]
1510        );
1511    }
1512
1513    public function onDisplayOldSubtitle( $article, &$oldid ) {
1514        return $this->container->run(
1515            'DisplayOldSubtitle',
1516            [ $article, &$oldid ]
1517        );
1518    }
1519
1520    public function onEditFilter( $editor, $text, $section, &$error, $summary ) {
1521        return $this->container->run(
1522            'EditFilter',
1523            [ $editor, $text, $section, &$error, $summary ]
1524        );
1525    }
1526
1527    public function onEditFilterMergedContent( $context, $content, $status,
1528        $summary, $user, $minoredit
1529    ) {
1530        return $this->container->run(
1531            'EditFilterMergedContent',
1532            [ $context, $content, $status, $summary, $user, $minoredit ]
1533        );
1534    }
1535
1536    public function onEditFormInitialText( $editPage ) {
1537        return $this->container->run(
1538            'EditFormInitialText',
1539            [ $editPage ]
1540        );
1541    }
1542
1543    public function onEditFormPreloadText( &$text, $title ) {
1544        return $this->container->run(
1545            'EditFormPreloadText',
1546            [ &$text, $title ]
1547        );
1548    }
1549
1550    public function onEditPageBeforeConflictDiff( $editor, $out ) {
1551        return $this->container->run(
1552            'EditPageBeforeConflictDiff',
1553            [ $editor, $out ]
1554        );
1555    }
1556
1557    public function onEditPageBeforeEditButtons( $editpage, &$buttons, &$tabindex ) {
1558        return $this->container->run(
1559            'EditPageBeforeEditButtons',
1560            [ $editpage, &$buttons, &$tabindex ]
1561        );
1562    }
1563
1564    public function onEditPageBeforeEditToolbar( &$toolbar ) {
1565        return $this->container->run(
1566            'EditPageBeforeEditToolbar',
1567            [ &$toolbar ]
1568        );
1569    }
1570
1571    public function onEditPageCopyrightWarning( $title, &$msg ) {
1572        return $this->container->run(
1573            'EditPageCopyrightWarning',
1574            [ $title, &$msg ]
1575        );
1576    }
1577
1578    public function onEditPageGetCheckboxesDefinition( $editpage, &$checkboxes ) {
1579        return $this->container->run(
1580            'EditPageGetCheckboxesDefinition',
1581            [ $editpage, &$checkboxes ]
1582        );
1583    }
1584
1585    public function onEditPageGetDiffContent( $editPage, &$newtext ) {
1586        return $this->container->run(
1587            'EditPageGetDiffContent',
1588            [ $editPage, &$newtext ]
1589        );
1590    }
1591
1592    public function onEditPageGetPreviewContent( $editPage, &$content ) {
1593        return $this->container->run(
1594            'EditPageGetPreviewContent',
1595            [ $editPage, &$content ]
1596        );
1597    }
1598
1599    public function onEditPageNoSuchSection( $editpage, &$res ) {
1600        return $this->container->run(
1601            'EditPageNoSuchSection',
1602            [ $editpage, &$res ]
1603        );
1604    }
1605
1606    public function onEditPageTosSummary( $title, &$msg ) {
1607        return $this->container->run(
1608            'EditPageTosSummary',
1609            [ $title, &$msg ]
1610        );
1611    }
1612
1613    public function onEditPage__attemptSave( $editpage_Obj ) {
1614        return $this->container->run(
1615            'EditPage::attemptSave',
1616            [ $editpage_Obj ]
1617        );
1618    }
1619
1620    public function onEditPage__attemptSave_after( $editpage_Obj, $status,
1621        $resultDetails
1622    ) {
1623        return $this->container->run(
1624            'EditPage::attemptSave:after',
1625            [ $editpage_Obj, $status, $resultDetails ]
1626        );
1627    }
1628
1629    public function onEditPage__importFormData( $editpage, $request ) {
1630        return $this->container->run(
1631            'EditPage::importFormData',
1632            [ $editpage, $request ]
1633        );
1634    }
1635
1636    public function onEditPage__showEditForm_fields( $editor, $out ) {
1637        return $this->container->run(
1638            'EditPage::showEditForm:fields',
1639            [ $editor, $out ]
1640        );
1641    }
1642
1643    public function onEditPage__showEditForm_initial( $editor, $out ) {
1644        return $this->container->run(
1645            'EditPage::showEditForm:initial',
1646            [ $editor, $out ]
1647        );
1648    }
1649
1650    public function onEditPage__showReadOnlyForm_initial( $editor, $out ) {
1651        return $this->container->run(
1652            'EditPage::showReadOnlyForm:initial',
1653            [ $editor, $out ]
1654        );
1655    }
1656
1657    public function onEditPage__showStandardInputs_options( $editor, $out,
1658        &$tabindex
1659    ) {
1660        return $this->container->run(
1661            'EditPage::showStandardInputs:options',
1662            [ $editor, $out, &$tabindex ]
1663        );
1664    }
1665
1666    public function onEmailConfirmed( $user, &$confirmed ) {
1667        return $this->container->run(
1668            'EmailConfirmed',
1669            [ $user, &$confirmed ]
1670        );
1671    }
1672
1673    public function onEmailUser( &$to, &$from, &$subject, &$text, &$error ) {
1674        return $this->container->run(
1675            'EmailUser',
1676            [ &$to, &$from, &$subject, &$text, &$error ]
1677        );
1678    }
1679
1680    public function onEmailUserCC( &$to, &$from, &$subject, &$text ) {
1681        return $this->container->run(
1682            'EmailUserCC',
1683            [ &$to, &$from, &$subject, &$text ]
1684        );
1685    }
1686
1687    public function onEmailUserComplete( $to, $from, $subject, $text ) {
1688        return $this->container->run(
1689            'EmailUserComplete',
1690            [ $to, $from, $subject, $text ]
1691        );
1692    }
1693
1694    public function onEmailUserForm( &$form ) {
1695        return $this->container->run(
1696            'EmailUserForm',
1697            [ &$form ]
1698        );
1699    }
1700
1701    public function onEmailUserPermissionsErrors( $user, $editToken, &$hookErr ) {
1702        return $this->container->run(
1703            'EmailUserPermissionsErrors',
1704            [ $user, $editToken, &$hookErr ]
1705        );
1706    }
1707
1708    public function onEmailUserAuthorizeSend( Authority $sender, StatusValue $status ) {
1709        return $this->container->run(
1710            'EmailUserAuthorizeSend',
1711            [ $sender, $status ]
1712        );
1713    }
1714
1715    public function onEmailUserSendEmail(
1716        Authority $from,
1717        MailAddress $fromAddress,
1718        UserEmailContact $to,
1719        MailAddress $toAddress,
1720        string $subject,
1721        string $text,
1722        StatusValue $status
1723    ) {
1724        return $this->container->run(
1725            'EmailUserSendEmail',
1726            [ $from, $fromAddress, $to, $toAddress, $subject, $text, $status ]
1727        );
1728    }
1729
1730    public function onEnhancedChangesListModifyBlockLineData( $changesList, &$data,
1731        $rc
1732    ) {
1733        return $this->container->run(
1734            'EnhancedChangesListModifyBlockLineData',
1735            [ $changesList, &$data, $rc ]
1736        );
1737    }
1738
1739    public function onEnhancedChangesListModifyLineData( $changesList, &$data,
1740        $block, $rc, &$classes, &$attribs
1741    ) {
1742        return $this->container->run(
1743            'EnhancedChangesListModifyLineData',
1744            [ $changesList, &$data, $block, $rc, &$classes, &$attribs ]
1745        );
1746    }
1747
1748    public function onEnhancedChangesList__getLogText( $changesList, &$links,
1749        $block
1750    ) {
1751        return $this->container->run(
1752            'EnhancedChangesList::getLogText',
1753            [ $changesList, &$links, $block ]
1754        );
1755    }
1756
1757    public function onExemptFromAccountCreationThrottle( $ip ) {
1758        return $this->container->run(
1759            'ExemptFromAccountCreationThrottle',
1760            [ $ip ]
1761        );
1762    }
1763
1764    public function onExtensionTypes( &$extTypes ) {
1765        return $this->container->run(
1766            'ExtensionTypes',
1767            [ &$extTypes ]
1768        );
1769    }
1770
1771    public function onFetchChangesList( $user, $skin, &$list, $groups ) {
1772        return $this->container->run(
1773            'FetchChangesList',
1774            [ $user, $skin, &$list, $groups ]
1775        );
1776    }
1777
1778    public function onFileDeleteComplete( $file, $oldimage, $article, $user,
1779        $reason
1780    ) {
1781        return $this->container->run(
1782            'FileDeleteComplete',
1783            [ $file, $oldimage, $article, $user, $reason ]
1784        );
1785    }
1786
1787    public function onFileTransformed( $file, $thumb, $tmpThumbPath, $thumbPath ) {
1788        return $this->container->run(
1789            'FileTransformed',
1790            [ $file, $thumb, $tmpThumbPath, $thumbPath ]
1791        );
1792    }
1793
1794    public function onFileUndeleteComplete( $title, $fileVersions, $user, $reason ) {
1795        return $this->container->run(
1796            'FileUndeleteComplete',
1797            [ $title, $fileVersions, $user, $reason ]
1798        );
1799    }
1800
1801    public function onFileUpload( $file, $reupload, $hasDescription ) {
1802        return $this->container->run(
1803            'FileUpload',
1804            [ $file, $reupload, $hasDescription ]
1805        );
1806    }
1807
1808    public function onFormatAutocomments( &$comment, $pre, $auto, $post, $title,
1809        $local, $wikiId
1810    ) {
1811        return $this->container->run(
1812            'FormatAutocomments',
1813            [ &$comment, $pre, $auto, $post, $title, $local, $wikiId ]
1814        );
1815    }
1816
1817    public function onGalleryGetModes( &$modeArray ) {
1818        return $this->container->run(
1819            'GalleryGetModes',
1820            [ &$modeArray ]
1821        );
1822    }
1823
1824    public function onGetAllBlockActions( &$actions ) {
1825        return $this->container->run(
1826            'GetAllBlockActions',
1827            [ &$actions ],
1828            [ 'abortable' => false ]
1829        );
1830    }
1831
1832    public function onGetAutoPromoteGroups( $user, &$promote ) {
1833        return $this->container->run(
1834            'GetAutoPromoteGroups',
1835            [ $user, &$promote ]
1836        );
1837    }
1838
1839    public function onGetActionName( IContextSource $context, string &$action ): void {
1840        $this->container->run(
1841            'GetActionName',
1842            [ $context, &$action ],
1843            [ 'abortable' => false ]
1844        );
1845    }
1846
1847    public function onGetCacheVaryCookies( $out, &$cookies ) {
1848        return $this->container->run(
1849            'GetCacheVaryCookies',
1850            [ $out, &$cookies ]
1851        );
1852    }
1853
1854    public function onGetCanonicalURL( $title, &$url, $query ) {
1855        return $this->container->run(
1856            'GetCanonicalURL',
1857            [ $title, &$url, $query ]
1858        );
1859    }
1860
1861    public function onGetContentModels( &$models ) {
1862        return $this->container->run(
1863            'GetContentModels',
1864            [ &$models ]
1865        );
1866    }
1867
1868    public function onGetDefaultSortkey( $title, &$sortkey ) {
1869        return $this->container->run(
1870            'GetDefaultSortkey',
1871            [ $title, &$sortkey ]
1872        );
1873    }
1874
1875    public function onGetDifferenceEngine( $context, $old, $new, $refreshCache,
1876        $unhide, &$differenceEngine
1877    ) {
1878        return $this->container->run(
1879            'GetDifferenceEngine',
1880            [ $context, $old, $new, $refreshCache, $unhide,
1881                &$differenceEngine ]
1882        );
1883    }
1884
1885    public function onGetDoubleUnderscoreIDs( &$doubleUnderscoreIDs ) {
1886        return $this->container->run(
1887            'GetDoubleUnderscoreIDs',
1888            [ &$doubleUnderscoreIDs ]
1889        );
1890    }
1891
1892    public function onGetExtendedMetadata( &$combinedMeta, $file, $context,
1893        $single, &$maxCacheTime
1894    ) {
1895        return $this->container->run(
1896            'GetExtendedMetadata',
1897            [ &$combinedMeta, $file, $context, $single, &$maxCacheTime ]
1898        );
1899    }
1900
1901    public function onGetFullURL( $title, &$url, $query ) {
1902        return $this->container->run(
1903            'GetFullURL',
1904            [ $title, &$url, $query ]
1905        );
1906    }
1907
1908    public function onGetHumanTimestamp( &$output, $timestamp, $relativeTo, $user,
1909        $lang
1910    ) {
1911        return $this->container->run(
1912            'GetHumanTimestamp',
1913            [ &$output, $timestamp, $relativeTo, $user, $lang ]
1914        );
1915    }
1916
1917    public function onGetInternalURL( $title, &$url, $query ) {
1918        return $this->container->run(
1919            'GetInternalURL',
1920            [ $title, &$url, $query ]
1921        );
1922    }
1923
1924    public function onGetIP( &$ip ) {
1925        return $this->container->run(
1926            'GetIP',
1927            [ &$ip ]
1928        );
1929    }
1930
1931    public function onGetLangPreferredVariant( &$req ) {
1932        return $this->container->run(
1933            'GetLangPreferredVariant',
1934            [ &$req ]
1935        );
1936    }
1937
1938    public function onGetLinkColours( $linkcolour_ids, &$colours, $title ) {
1939        return $this->container->run(
1940            'GetLinkColours',
1941            [ $linkcolour_ids, &$colours, $title ]
1942        );
1943    }
1944
1945    public function onGetLocalURL( $title, &$url, $query ) {
1946        return $this->container->run(
1947            'GetLocalURL',
1948            [ $title, &$url, $query ]
1949        );
1950    }
1951
1952    public function onGetLocalURL__Article( $title, &$url ) {
1953        return $this->container->run(
1954            'GetLocalURL::Article',
1955            [ $title, &$url ]
1956        );
1957    }
1958
1959    public function onGetLocalURL__Internal( $title, &$url, $query ) {
1960        return $this->container->run(
1961            'GetLocalURL::Internal',
1962            [ $title, &$url, $query ]
1963        );
1964    }
1965
1966    public function onGetLogTypesOnUser( &$types ) {
1967        return $this->container->run(
1968            'GetLogTypesOnUser',
1969            [ &$types ]
1970        );
1971    }
1972
1973    public function onGetMagicVariableIDs( &$variableIDs ) {
1974        return $this->container->run(
1975            'GetMagicVariableIDs',
1976            [ &$variableIDs ]
1977        );
1978    }
1979
1980    public function onGetMetadataVersion( &$version ) {
1981        return $this->container->run(
1982            'GetMetadataVersion',
1983            [ &$version ]
1984        );
1985    }
1986
1987    public function onGetNewMessagesAlert( &$newMessagesAlert, $newtalks, $user,
1988        $out
1989    ) {
1990        return $this->container->run(
1991            'GetNewMessagesAlert',
1992            [ &$newMessagesAlert, $newtalks, $user, $out ]
1993        );
1994    }
1995
1996    public function onGetPreferences( $user, &$preferences ) {
1997        return $this->container->run(
1998            'GetPreferences',
1999            [ $user, &$preferences ]
2000        );
2001    }
2002
2003    public function onGetRelativeTimestamp( &$output, &$diff, $timestamp,
2004        $relativeTo, $user, $lang
2005    ) {
2006        return $this->container->run(
2007            'GetRelativeTimestamp',
2008            [ &$output, &$diff, $timestamp, $relativeTo, $user, $lang ]
2009        );
2010    }
2011
2012    public function onGetSlotDiffRenderer( $contentHandler, &$slotDiffRenderer,
2013        $context
2014    ) {
2015        return $this->container->run(
2016            'GetSlotDiffRenderer',
2017            [ $contentHandler, &$slotDiffRenderer, $context ]
2018        );
2019    }
2020
2021    public function onGetUserBlock( $user, $ip, &$block ) {
2022        return $this->container->run(
2023            'GetUserBlock',
2024            [ $user, $ip, &$block ]
2025        );
2026    }
2027
2028    public function onPermissionErrorAudit(
2029        LinkTarget $title,
2030        UserIdentity $user,
2031        string $action,
2032        string $rigor,
2033        array $errors
2034    ): void {
2035        $this->container->run(
2036            'PermissionErrorAudit',
2037            [ $title, $user, $action, $rigor, $errors ],
2038            [ 'abortable' => false ]
2039        );
2040    }
2041
2042    public function onPermissionStatusAudit(
2043        LinkTarget $title,
2044        UserIdentity $user,
2045        string $action,
2046        string $rigor,
2047        PermissionStatus $status
2048    ): void {
2049        $this->container->run(
2050            'PermissionStatusAudit',
2051            [ $title, $user, $action, $rigor, $status ],
2052            [ 'abortable' => false ]
2053        );
2054    }
2055
2056    public function onGetUserPermissionsErrors( $title, $user, $action, &$result ) {
2057        return $this->container->run(
2058            'getUserPermissionsErrors',
2059            [ $title, $user, $action, &$result ]
2060        );
2061    }
2062
2063    public function onGetUserPermissionsErrorsExpensive( $title, $user, $action,
2064        &$result
2065    ) {
2066        return $this->container->run(
2067            'getUserPermissionsErrorsExpensive',
2068            [ $title, $user, $action, &$result ]
2069        );
2070    }
2071
2072    public function onGitViewers( &$extTypes ) {
2073        return $this->container->run(
2074            'GitViewers',
2075            [ &$extTypes ]
2076        );
2077    }
2078
2079    public function onHistoryPageToolLinks( IContextSource $context, LinkRenderer $linkRenderer, array &$links ) {
2080        return $this->container->run(
2081            'HistoryPageToolLinks',
2082            [ $context, $linkRenderer, &$links ]
2083        );
2084    }
2085
2086    public function onHistoryTools( $revRecord, &$links, $prevRevRecord, $userIdentity ) {
2087        return $this->container->run(
2088            'HistoryTools',
2089            [ $revRecord, &$links, $prevRevRecord, $userIdentity ]
2090        );
2091    }
2092
2093    public function onHtmlCacheUpdaterAppendUrls( $title, $mode, &$append ) {
2094        return $this->container->run(
2095            'HtmlCacheUpdaterAppendUrls',
2096            [ $title, $mode, &$append ]
2097        );
2098    }
2099
2100    public function onHtmlCacheUpdaterVaryUrls( $urls, &$append ) {
2101        return $this->container->run(
2102            'HtmlCacheUpdaterVaryUrls',
2103            [ $urls, &$append ]
2104        );
2105    }
2106
2107    public function onHTMLFileCache__useFileCache( $context ) {
2108        return $this->container->run(
2109            'HTMLFileCache::useFileCache',
2110            [ $context ]
2111        );
2112    }
2113
2114    public function onHtmlPageLinkRendererBegin( $linkRenderer, $target, &$text,
2115        &$customAttribs, &$query, &$ret
2116    ) {
2117        return $this->container->run(
2118            'HtmlPageLinkRendererBegin',
2119            [ $linkRenderer, $target, &$text, &$customAttribs, &$query, &$ret ]
2120        );
2121    }
2122
2123    public function onHtmlPageLinkRendererEnd( $linkRenderer, $target, $isKnown,
2124        &$text, &$attribs, &$ret
2125    ) {
2126        return $this->container->run(
2127            'HtmlPageLinkRendererEnd',
2128            [ $linkRenderer, $target, $isKnown, &$text, &$attribs, &$ret ]
2129        );
2130    }
2131
2132    public function onImageBeforeProduceHTML( $linker, &$title, &$file,
2133        &$frameParams, &$handlerParams, &$time, &$res, $parser, &$query, &$widthOption
2134    ) {
2135        return $this->container->run(
2136            'ImageBeforeProduceHTML',
2137            [ $linker, &$title, &$file, &$frameParams, &$handlerParams, &$time,
2138                &$res, $parser, &$query, &$widthOption ]
2139        );
2140    }
2141
2142    public function onImageOpenShowImageInlineBefore( $imagePage, $output ) {
2143        return $this->container->run(
2144            'ImageOpenShowImageInlineBefore',
2145            [ $imagePage, $output ]
2146        );
2147    }
2148
2149    public function onImagePageAfterImageLinks( $imagePage, &$html ) {
2150        return $this->container->run(
2151            'ImagePageAfterImageLinks',
2152            [ $imagePage, &$html ]
2153        );
2154    }
2155
2156    public function onImagePageFileHistoryLine( $imageHistoryList, $file, &$line, &$css ) {
2157        return $this->container->run(
2158            'ImagePageFileHistoryLine',
2159            [ $imageHistoryList, $file, &$line, &$css ]
2160        );
2161    }
2162
2163    public function onImagePageFindFile( $page, &$file, &$displayFile ) {
2164        return $this->container->run(
2165            'ImagePageFindFile',
2166            [ $page, &$file, &$displayFile ]
2167        );
2168    }
2169
2170    public function onImagePageShowTOC( $page, &$toc ) {
2171        return $this->container->run(
2172            'ImagePageShowTOC',
2173            [ $page, &$toc ]
2174        );
2175    }
2176
2177    public function onImgAuthBeforeStream( &$title, &$path, &$name, &$result ) {
2178        return $this->container->run(
2179            'ImgAuthBeforeStream',
2180            [ &$title, &$path, &$name, &$result ]
2181        );
2182    }
2183
2184    public function onImgAuthModifyHeaders( $title, &$headers ) {
2185        return $this->container->run(
2186            'ImgAuthModifyHeaders',
2187            [ $title, &$headers ]
2188        );
2189    }
2190
2191    public function onImportHandleLogItemXMLTag( $reader, $logInfo ) {
2192        return $this->container->run(
2193            'ImportHandleLogItemXMLTag',
2194            [ $reader, $logInfo ]
2195        );
2196    }
2197
2198    public function onImportHandlePageXMLTag( $reader, &$pageInfo ) {
2199        return $this->container->run(
2200            'ImportHandlePageXMLTag',
2201            [ $reader, &$pageInfo ]
2202        );
2203    }
2204
2205    public function onImportHandleRevisionXMLTag( $reader, $pageInfo,
2206        $revisionInfo
2207    ) {
2208        return $this->container->run(
2209            'ImportHandleRevisionXMLTag',
2210            [ $reader, $pageInfo, $revisionInfo ]
2211        );
2212    }
2213
2214    public function onImportHandleContentXMLTag( $reader, $contentInfo ) {
2215        return $this->container->run(
2216            'ImportHandleContentXMLTag',
2217            [ $reader, $contentInfo ] );
2218    }
2219
2220    public function onImportHandleToplevelXMLTag( $reader ) {
2221        return $this->container->run(
2222            'ImportHandleToplevelXMLTag',
2223            [ $reader ]
2224        );
2225    }
2226
2227    public function onImportHandleUnknownUser( $name ) {
2228        return $this->container->run(
2229            'ImportHandleUnknownUser',
2230            [ $name ]
2231        );
2232    }
2233
2234    public function onImportHandleUploadXMLTag( $reader, $revisionInfo ) {
2235        return $this->container->run(
2236            'ImportHandleUploadXMLTag',
2237            [ $reader, $revisionInfo ]
2238        );
2239    }
2240
2241    public function onImportLogInterwikiLink( &$fullInterwikiPrefix, &$pageTitle ) {
2242        return $this->container->run(
2243            'ImportLogInterwikiLink',
2244            [ &$fullInterwikiPrefix, &$pageTitle ]
2245        );
2246    }
2247
2248    public function onImportSources( &$importSources ) {
2249        return $this->container->run(
2250            'ImportSources',
2251            [ &$importSources ]
2252        );
2253    }
2254
2255    public function onInfoAction( $context, &$pageInfo ) {
2256        return $this->container->run(
2257            'InfoAction',
2258            [ $context, &$pageInfo ]
2259        );
2260    }
2261
2262    public function onInitializeArticleMaybeRedirect( $title, $request,
2263        &$ignoreRedirect, &$target, &$article
2264    ) {
2265        return $this->container->run(
2266            'InitializeArticleMaybeRedirect',
2267            [ $title, $request, &$ignoreRedirect, &$target, &$article ]
2268        );
2269    }
2270
2271    public function onInternalParseBeforeLinks( $parser, &$text, $stripState ) {
2272        return $this->container->run(
2273            'InternalParseBeforeLinks',
2274            [ $parser, &$text, $stripState ]
2275        );
2276    }
2277
2278    public function onInterwikiLoadPrefix( $prefix, &$iwData ) {
2279        return $this->container->run(
2280            'InterwikiLoadPrefix',
2281            [ $prefix, &$iwData ]
2282        );
2283    }
2284
2285    public function onInvalidateEmailComplete( $user ) {
2286        return $this->container->run(
2287            'InvalidateEmailComplete',
2288            [ $user ]
2289        );
2290    }
2291
2292    public function onIRCLineURL( &$url, &$query, $rc ) {
2293        return $this->container->run(
2294            'IRCLineURL',
2295            [ &$url, &$query, $rc ]
2296        );
2297    }
2298
2299    public function onIsFileCacheable( $article ) {
2300        return $this->container->run(
2301            'IsFileCacheable',
2302            [ $article ]
2303        );
2304    }
2305
2306    public function onIsTrustedProxy( $ip, &$result ) {
2307        return $this->container->run(
2308            'IsTrustedProxy',
2309            [ $ip, &$result ]
2310        );
2311    }
2312
2313    public function onIsUploadAllowedFromUrl( $url, &$allowed ) {
2314        return $this->container->run(
2315            'IsUploadAllowedFromUrl',
2316            [ $url, &$allowed ]
2317        );
2318    }
2319
2320    public function onIsValidEmailAddr( $addr, &$result ) {
2321        return $this->container->run(
2322            'isValidEmailAddr',
2323            [ $addr, &$result ]
2324        );
2325    }
2326
2327    public function onIsValidPassword( $password, &$result, $user ) {
2328        return $this->container->run(
2329            'isValidPassword',
2330            [ $password, &$result, $user ]
2331        );
2332    }
2333
2334    public function onJsonValidateSave( JsonContent $content, PageIdentity $pageIdentity, StatusValue $status ) {
2335        return $this->container->run(
2336            'JsonValidateSave',
2337            [ $content, $pageIdentity, &$status ]
2338        );
2339    }
2340
2341    public function onLanguageGetNamespaces( &$namespaces ) {
2342        return $this->container->run(
2343            'LanguageGetNamespaces',
2344            [ &$namespaces ]
2345        );
2346    }
2347
2348    public function onLanguageGetTranslatedLanguageNames( &$names, $code ) {
2349        return $this->container->run(
2350            'LanguageGetTranslatedLanguageNames',
2351            [ &$names, $code ]
2352        );
2353    }
2354
2355    public function onLanguageLinks( $title, &$links, &$linkFlags ) {
2356        return $this->container->run(
2357            'LanguageLinks',
2358            [ $title, &$links, &$linkFlags ]
2359        );
2360    }
2361
2362    public function onLanguageSelector( $out, $cssClassName ) {
2363        return $this->container->run(
2364            'LanguageSelector',
2365            [ $out, $cssClassName ]
2366        );
2367    }
2368
2369    public function onLanguage__getMessagesFileName( $code, &$file ) {
2370        return $this->container->run(
2371            'Language::getMessagesFileName',
2372            [ $code, &$file ]
2373        );
2374    }
2375
2376    public function onLinkerGenerateRollbackLink( $revRecord, $context, $options, &$inner ) {
2377        return $this->container->run(
2378            'LinkerGenerateRollbackLink',
2379            [ $revRecord, $context, $options, &$inner ]
2380        );
2381    }
2382
2383    public function onLinkerMakeExternalImage( &$url, &$alt, &$img ) {
2384        return $this->container->run(
2385            'LinkerMakeExternalImage',
2386            [ &$url, &$alt, &$img ]
2387        );
2388    }
2389
2390    public function onLinkerMakeExternalLink( &$url, &$text, &$link, &$attribs,
2391        $linkType
2392    ) {
2393        return $this->container->run(
2394            'LinkerMakeExternalLink',
2395            [ &$url, &$text, &$link, &$attribs, $linkType ]
2396        );
2397    }
2398
2399    public function onLinkerMakeMediaLinkFile( $title, $file, &$html, &$attribs,
2400        &$ret
2401    ) {
2402        return $this->container->run(
2403            'LinkerMakeMediaLinkFile',
2404            [ $title, $file, &$html, &$attribs, &$ret ]
2405        );
2406    }
2407
2408    public function onLinksUpdate( $linksUpdate ) {
2409        return $this->container->run(
2410            'LinksUpdate',
2411            [ $linksUpdate ]
2412        );
2413    }
2414
2415    public function onLinksUpdateComplete( $linksUpdate, $ticket ) {
2416        return $this->container->run(
2417            'LinksUpdateComplete',
2418            [ $linksUpdate, $ticket ]
2419        );
2420    }
2421
2422    public function onListDefinedTags( &$tags ) {
2423        return $this->container->run(
2424            'ListDefinedTags',
2425            [ &$tags ]
2426        );
2427    }
2428
2429    public function onLoadExtensionSchemaUpdates( $updater ) {
2430        return $this->container->run(
2431            'LoadExtensionSchemaUpdates',
2432            [ $updater ],
2433            [ 'noServices' => true ]
2434        );
2435    }
2436
2437    public function onLocalFilePurgeThumbnails( $file, $archiveName, $urls ) {
2438        return $this->container->run(
2439            'LocalFilePurgeThumbnails',
2440            [ $file, $archiveName, $urls ]
2441        );
2442    }
2443
2444    public function onLocalFile__getHistory( $file, &$tables, &$fields, &$conds,
2445        &$opts, &$join_conds
2446    ) {
2447        return $this->container->run(
2448            'LocalFile::getHistory',
2449            [ $file, &$tables, &$fields, &$conds, &$opts, &$join_conds ]
2450        );
2451    }
2452
2453    public function onLocalisationCacheRecache( $cache, $code, &$alldata, $unused ) {
2454        return $this->container->run(
2455            'LocalisationCacheRecache',
2456            [ $cache, $code, &$alldata, $unused ]
2457        );
2458    }
2459
2460    public function onLocalisationCacheRecacheFallback( $cache, $code, &$alldata ) {
2461        return $this->container->run(
2462            'LocalisationCacheRecacheFallback',
2463            [ $cache, $code, &$alldata ]
2464        );
2465    }
2466
2467    public function onLocalUserCreated( $user, $autocreated ) {
2468        return $this->container->run(
2469            'LocalUserCreated',
2470            [ $user, $autocreated ]
2471        );
2472    }
2473
2474    public function onLogEventsListGetExtraInputs( $type, $logEventsList, &$input,
2475        &$formDescriptor
2476    ) {
2477        return $this->container->run(
2478            'LogEventsListGetExtraInputs',
2479            [ $type, $logEventsList, &$input, &$formDescriptor ]
2480        );
2481    }
2482
2483    public function onLogEventsListLineEnding( $page, &$ret, $entry, &$classes,
2484        &$attribs
2485    ) {
2486        return $this->container->run(
2487            'LogEventsListLineEnding',
2488            [ $page, &$ret, $entry, &$classes, &$attribs ]
2489        );
2490    }
2491
2492    public function onLogEventsListShowLogExtract( &$s, $types, $page, $user,
2493        $param
2494    ) {
2495        return $this->container->run(
2496            'LogEventsListShowLogExtract',
2497            [ &$s, $types, $page, $user, $param ]
2498        );
2499    }
2500
2501    public function onLogException( $e, $suppressed ) {
2502        return $this->container->run(
2503            'LogException',
2504            [ $e, $suppressed ]
2505        );
2506    }
2507
2508    public function onLoginFormValidErrorMessages( array &$messages ) {
2509        return $this->container->run(
2510            'LoginFormValidErrorMessages',
2511            [ &$messages ]
2512        );
2513    }
2514
2515    public function onLogLine( $log_type, $log_action, $title, $paramArray,
2516        &$comment, &$revert, $time
2517    ) {
2518        return $this->container->run(
2519            'LogLine',
2520            [ $log_type, $log_action, $title, $paramArray, &$comment,
2521                &$revert, $time ]
2522        );
2523    }
2524
2525    public function onLonelyPagesQuery( &$tables, &$conds, &$joinConds ) {
2526        return $this->container->run(
2527            'LonelyPagesQuery',
2528            [ &$tables, &$conds, &$joinConds ]
2529        );
2530    }
2531
2532    public function onMagicWordwgVariableIDs( &$variableIDs ) {
2533        return $this->container->run(
2534            'MagicWordwgVariableIDs',
2535            [ &$variableIDs ]
2536        );
2537    }
2538
2539    public function onMaintenanceRefreshLinksInit( $refreshLinks ) {
2540        return $this->container->run(
2541            'MaintenanceRefreshLinksInit',
2542            [ $refreshLinks ]
2543        );
2544    }
2545
2546    public function onMaintenanceShellStart(): void {
2547        $this->container->run(
2548            'MaintenanceShellStart',
2549            [],
2550            [ 'abortable' => false ]
2551        );
2552    }
2553
2554    public function onMaintenanceUpdateAddParams( &$params ) {
2555        return $this->container->run(
2556            'MaintenanceUpdateAddParams',
2557            [ &$params ]
2558        );
2559    }
2560
2561    public function onMakeGlobalVariablesScript( &$vars, $out ): void {
2562        $this->container->run(
2563            'MakeGlobalVariablesScript',
2564            [ &$vars, $out ],
2565            [ 'abortable' => false ]
2566        );
2567    }
2568
2569    public function onManualLogEntryBeforePublish( $logEntry ): void {
2570        $this->container->run(
2571            'ManualLogEntryBeforePublish',
2572            [ $logEntry ],
2573            [ 'abortable' => false ]
2574        );
2575    }
2576
2577    public function onMarkPatrolled( $rcid, $user, $wcOnlySysopsCanPatrol, $auto,
2578        &$tags
2579    ) {
2580        return $this->container->run(
2581            'MarkPatrolled',
2582            [ $rcid, $user, $wcOnlySysopsCanPatrol, $auto, &$tags ]
2583        );
2584    }
2585
2586    public function onMarkPatrolledComplete( $rcid, $user, $wcOnlySysopsCanPatrol,
2587        $auto
2588    ) {
2589        return $this->container->run(
2590            'MarkPatrolledComplete',
2591            [ $rcid, $user, $wcOnlySysopsCanPatrol, $auto ]
2592        );
2593    }
2594
2595    public function onMediaWikiPerformAction( $output, $article, $title, $user,
2596        $request, $mediaWiki
2597    ) {
2598        return $this->container->run(
2599            'MediaWikiPerformAction',
2600            [ $output, $article, $title, $user, $request, $mediaWiki ]
2601        );
2602    }
2603
2604    public function onMediaWikiServices( $services ) {
2605        return $this->container->run(
2606            'MediaWikiServices',
2607            [ $services ],
2608            [ 'noServices' => true ]
2609        );
2610    }
2611
2612    public function onMessageCacheFetchOverrides( array &$messages ): void {
2613        $this->container->run(
2614            'MessageCacheFetchOverrides',
2615            [ &$messages ],
2616            [ 'abortable' => false ]
2617        );
2618    }
2619
2620    public function onMessageCacheReplace( $title, $text ) {
2621        return $this->container->run(
2622            'MessageCacheReplace',
2623            [ $title, $text ]
2624        );
2625    }
2626
2627    public function onMessageCache__get( &$key ) {
2628        return $this->container->run(
2629            'MessageCache::get',
2630            [ &$key ]
2631        );
2632    }
2633
2634    public function onMessagesPreLoad( $title, &$message, $code ) {
2635        return $this->container->run(
2636            'MessagesPreLoad',
2637            [ $title, &$message, $code ]
2638        );
2639    }
2640
2641    public function onMimeMagicGuessFromContent( $mimeMagic, &$head, &$tail, $file,
2642        &$mime
2643    ) {
2644        return $this->container->run(
2645            'MimeMagicGuessFromContent',
2646            [ $mimeMagic, &$head, &$tail, $file, &$mime ]
2647        );
2648    }
2649
2650    public function onMimeMagicImproveFromExtension( $mimeMagic, $ext, &$mime ) {
2651        return $this->container->run(
2652            'MimeMagicImproveFromExtension',
2653            [ $mimeMagic, $ext, &$mime ]
2654        );
2655    }
2656
2657    public function onMimeMagicInit( $mimeMagic ) {
2658        return $this->container->run(
2659            'MimeMagicInit',
2660            [ $mimeMagic ]
2661        );
2662    }
2663
2664    public function onGetBlockErrorMessageKey( $block, &$key ) {
2665        return $this->container->run(
2666            'GetBlockErrorMessageKey',
2667            [ $block, &$key ]
2668        );
2669    }
2670
2671    public function onModifyExportQuery( $db, &$tables, $cond, &$opts,
2672        &$join_conds, &$conds
2673    ) {
2674        return $this->container->run(
2675            'ModifyExportQuery',
2676            [ $db, &$tables, $cond, &$opts, &$join_conds, &$conds ]
2677        );
2678    }
2679
2680    public function onMovePageCheckPermissions( $oldTitle, $newTitle, $user,
2681        $reason, $status
2682    ) {
2683        return $this->container->run(
2684            'MovePageCheckPermissions',
2685            [ $oldTitle, $newTitle, $user, $reason, $status ]
2686        );
2687    }
2688
2689    public function onMovePageIsValidMove( $oldTitle, $newTitle, $status ) {
2690        return $this->container->run(
2691            'MovePageIsValidMove',
2692            [ $oldTitle, $newTitle, $status ]
2693        );
2694    }
2695
2696    public function onMultiContentSave( $renderedRevision, $user, $summary, $flags,
2697        $status
2698    ) {
2699        return $this->container->run(
2700            'MultiContentSave',
2701            [ $renderedRevision, $user, $summary, $flags, $status ]
2702        );
2703    }
2704
2705    public function onNamespaceIsMovable( $index, &$result ) {
2706        return $this->container->run(
2707            'NamespaceIsMovable',
2708            [ $index, &$result ]
2709        );
2710    }
2711
2712    public function onNewDifferenceEngine( $title, &$oldId, &$newId, $old, $new ) {
2713        return $this->container->run(
2714            'NewDifferenceEngine',
2715            [ $title, &$oldId, &$newId, $old, $new ]
2716        );
2717    }
2718
2719    public function onNewPagesLineEnding( $page, &$ret, $row, &$classes, &$attribs ) {
2720        return $this->container->run(
2721            'NewPagesLineEnding',
2722            [ $page, &$ret, $row, &$classes, &$attribs ]
2723        );
2724    }
2725
2726    public function onOldChangesListRecentChangesLine( $changeslist, &$s, $rc,
2727        &$classes, &$attribs
2728    ) {
2729        return $this->container->run(
2730            'OldChangesListRecentChangesLine',
2731            [ $changeslist, &$s, $rc, &$classes, &$attribs ]
2732        );
2733    }
2734
2735    public function onOpenSearchUrls( &$urls ) {
2736        return $this->container->run(
2737            'OpenSearchUrls',
2738            [ &$urls ]
2739        );
2740    }
2741
2742    public function onOpportunisticLinksUpdate( $page, $title, $parserOutput ) {
2743        return $this->container->run(
2744            'OpportunisticLinksUpdate',
2745            [ $page, $title, $parserOutput ]
2746        );
2747    }
2748
2749    public function onOtherAutoblockLogLink( &$otherBlockLink ) {
2750        return $this->container->run(
2751            'OtherAutoblockLogLink',
2752            [ &$otherBlockLink ]
2753        );
2754    }
2755
2756    public function onOtherBlockLogLink( &$otherBlockLink, $ip ) {
2757        return $this->container->run(
2758            'OtherBlockLogLink',
2759            [ &$otherBlockLink, $ip ]
2760        );
2761    }
2762
2763    public function onOutputPageAfterGetHeadLinksArray( &$tags, $out ) {
2764        return $this->container->run(
2765            'OutputPageAfterGetHeadLinksArray',
2766            [ &$tags, $out ]
2767        );
2768    }
2769
2770    public function onOutputPageBeforeHTML( $out, &$text ) {
2771        return $this->container->run(
2772            'OutputPageBeforeHTML',
2773            [ $out, &$text ]
2774        );
2775    }
2776
2777    public function onOutputPageBodyAttributes( $out, $sk, &$bodyAttrs ): void {
2778        $this->container->run(
2779            'OutputPageBodyAttributes',
2780            [ $out, $sk, &$bodyAttrs ],
2781            [ 'abortable' => false ]
2782        );
2783    }
2784
2785    public function onOutputPageCheckLastModified( &$modifiedTimes, $out ) {
2786        return $this->container->run(
2787            'OutputPageCheckLastModified',
2788            [ &$modifiedTimes, $out ]
2789        );
2790    }
2791
2792    public function onOutputPageParserOutput( $outputPage, $parserOutput ): void {
2793        $this->container->run(
2794            'OutputPageParserOutput',
2795            [ $outputPage, $parserOutput ],
2796            [ 'abortable' => false ]
2797        );
2798    }
2799
2800    public function onOutputPageRenderCategoryLink(
2801        OutputPage $outputPage,
2802        ProperPageIdentity $categoryTitle,
2803        string $text,
2804        ?string &$link
2805    ): void {
2806        $this->container->run(
2807            'OutputPageRenderCategoryLink',
2808            [ $outputPage, $categoryTitle, $text, &$link ],
2809            [ 'abortable' => false ]
2810        );
2811    }
2812
2813    public function onPageContentLanguage( $title, &$pageLang, $userLang ) {
2814        return $this->container->run(
2815            'PageContentLanguage',
2816            [ $title, &$pageLang, $userLang ]
2817        );
2818    }
2819
2820    public function onPageContentSave( $wikiPage, $user, $content, &$summary,
2821        $isminor, $iswatch, $section, $flags, $status
2822    ) {
2823        return $this->container->run(
2824            'PageContentSave',
2825            [ $wikiPage, $user, $content, &$summary, $isminor, $iswatch,
2826                $section, $flags, $status ]
2827        );
2828    }
2829
2830    public function onPageDelete(
2831        ProperPageIdentity $page,
2832        Authority $deleter,
2833        string $reason,
2834        StatusValue $status,
2835        bool $suppress
2836    ) {
2837        return $this->container->run(
2838            'PageDelete',
2839            [ $page, $deleter, $reason, $status, $suppress ]
2840        );
2841    }
2842
2843    public function onPageDeleteComplete(
2844        ProperPageIdentity $page,
2845        Authority $deleter,
2846        string $reason,
2847        int $pageID,
2848        RevisionRecord $deletedRev,
2849        ManualLogEntry $logEntry,
2850        int $archivedRevisionCount
2851    ) {
2852        return $this->container->run(
2853            'PageDeleteComplete',
2854            [ $page, $deleter, $reason, $pageID, $deletedRev, $logEntry, $archivedRevisionCount ]
2855        );
2856    }
2857
2858    public function onPageDeletionDataUpdates( $title, $revision, &$updates ) {
2859        return $this->container->run(
2860            'PageDeletionDataUpdates',
2861            [ $title, $revision, &$updates ]
2862        );
2863    }
2864
2865    public function onPageUndelete(
2866        ProperPageIdentity $page,
2867        Authority $performer,
2868        string $reason,
2869        bool $unsuppress,
2870        array $timestamps,
2871        array $fileVersions,
2872        StatusValue $status
2873    ) {
2874        return $this->container->run(
2875            'PageUndelete',
2876            [ $page, $performer, $reason, $unsuppress, $timestamps, $fileVersions, $status ]
2877        );
2878    }
2879
2880    public function onPageUndeleteComplete(
2881        ProperPageIdentity $page,
2882        Authority $restorer,
2883        string $reason,
2884        RevisionRecord $restoredRev,
2885        ManualLogEntry $logEntry,
2886        int $restoredRevisionCount,
2887        bool $created,
2888        array $restoredPageIds
2889    ): void {
2890        $this->container->run(
2891            'PageUndeleteComplete',
2892            [
2893                $page,
2894                $restorer,
2895                $reason,
2896                $restoredRev,
2897                $logEntry,
2898                $restoredRevisionCount,
2899                $created,
2900                $restoredPageIds
2901            ],
2902            [ 'abortable' => false ]
2903        );
2904    }
2905
2906    public function onPageHistoryBeforeList( $article, $context ) {
2907        return $this->container->run(
2908            'PageHistoryBeforeList',
2909            [ $article, $context ]
2910        );
2911    }
2912
2913    public function onPageHistoryLineEnding( $historyAction, &$row, &$s, &$classes,
2914        &$attribs
2915    ) {
2916        return $this->container->run(
2917            'PageHistoryLineEnding',
2918            [ $historyAction, &$row, &$s, &$classes, &$attribs ]
2919        );
2920    }
2921
2922    public function onPageHistoryPager__doBatchLookups( $pager, $result ) {
2923        return $this->container->run(
2924            'PageHistoryPager::doBatchLookups',
2925            [ $pager, $result ]
2926        );
2927    }
2928
2929    public function onPageHistoryPager__getQueryInfo( $pager, &$queryInfo ) {
2930        return $this->container->run(
2931            'PageHistoryPager::getQueryInfo',
2932            [ $pager, &$queryInfo ]
2933        );
2934    }
2935
2936    public function onPageMoveComplete( $old, $new, $user, $pageid, $redirid, $reason, $revision ) {
2937        return $this->container->run(
2938            'PageMoveComplete',
2939            [ $old, $new, $user, $pageid, $redirid, $reason, $revision ]
2940        );
2941    }
2942
2943    public function onPageMoveCompleting( $old, $new, $user, $pageid, $redirid, $reason, $revision ) {
2944        return $this->container->run(
2945            'PageMoveCompleting',
2946            [ $old, $new, $user, $pageid, $redirid, $reason, $revision ]
2947        );
2948    }
2949
2950    public function onPageRenderingHash( &$confstr, $user, &$forOptions ) {
2951        return $this->container->run(
2952            'PageRenderingHash',
2953            [ &$confstr, $user, &$forOptions ]
2954        );
2955    }
2956
2957    public function onPageSaveComplete( $wikiPage, $user, $summary, $flags,
2958        $revisionRecord, $editResult
2959    ) {
2960        return $this->container->run(
2961            'PageSaveComplete',
2962            [ $wikiPage, $user, $summary, $flags, $revisionRecord, $editResult ]
2963        );
2964    }
2965
2966    public function onPageViewUpdates( $wikipage, $user ) {
2967        return $this->container->run(
2968            'PageViewUpdates',
2969            [ $wikipage, $user ]
2970        );
2971    }
2972
2973    public function onParserAfterParse( $parser, &$text, $stripState ) {
2974        return $this->container->run(
2975            'ParserAfterParse',
2976            [ $parser, &$text, $stripState ]
2977        );
2978    }
2979
2980    public function onParserAfterTidy( $parser, &$text ) {
2981        return $this->container->run(
2982            'ParserAfterTidy',
2983            [ $parser, &$text ]
2984        );
2985    }
2986
2987    public function onParserBeforeInternalParse( $parser, &$text, $stripState ) {
2988        return $this->container->run(
2989            'ParserBeforeInternalParse',
2990            [ $parser, &$text, $stripState ]
2991        );
2992    }
2993
2994    public function onParserBeforePreprocess( $parser, &$text, $stripState ) {
2995        return $this->container->run(
2996            'ParserBeforePreprocess',
2997            [ $parser, &$text, $stripState ]
2998        );
2999    }
3000
3001    public function onParserCacheSaveComplete( $parserCache, $parserOutput, $title,
3002        $popts, $revId
3003    ) {
3004        return $this->container->run(
3005            'ParserCacheSaveComplete',
3006            [ $parserCache, $parserOutput, $title, $popts, $revId ]
3007        );
3008    }
3009
3010    public function onParserClearState( $parser ) {
3011        return $this->container->run(
3012            'ParserClearState',
3013            [ $parser ]
3014        );
3015    }
3016
3017    public function onParserCloned( $parser ) {
3018        return $this->container->run(
3019            'ParserCloned',
3020            [ $parser ]
3021        );
3022    }
3023
3024    public function onParserFetchTemplateData( array $titles, array &$tplData ): bool {
3025        return $this->container->run(
3026            'ParserFetchTemplateData',
3027            [ $titles, &$tplData ]
3028        );
3029    }
3030
3031    public function onParserFirstCallInit( $parser ) {
3032        return $this->container->run(
3033            'ParserFirstCallInit',
3034            [ $parser ]
3035        );
3036    }
3037
3038    public function onParserGetVariableValueSwitch( $parser, &$variableCache,
3039        $magicWordId, &$ret, $frame
3040    ) {
3041        return $this->container->run(
3042            'ParserGetVariableValueSwitch',
3043            [ $parser, &$variableCache, $magicWordId, &$ret, $frame ]
3044        );
3045    }
3046
3047    public function onParserGetVariableValueTs( $parser, &$time ) {
3048        return $this->container->run(
3049            'ParserGetVariableValueTs',
3050            [ $parser, &$time ]
3051        );
3052    }
3053
3054    public function onParserLimitReportFormat( $key, &$value, &$report, $isHTML,
3055        $localize
3056    ) {
3057        return $this->container->run(
3058            'ParserLimitReportFormat',
3059            [ $key, &$value, &$report, $isHTML, $localize ]
3060        );
3061    }
3062
3063    public function onParserLimitReportPrepare( $parser, $output ) {
3064        return $this->container->run(
3065            'ParserLimitReportPrepare',
3066            [ $parser, $output ]
3067        );
3068    }
3069
3070    public function onParserLogLinterData( string $title, int $revId, array $lints ): bool {
3071        return $this->container->run(
3072            'ParserLogLinterData',
3073            [ $title, $revId, $lints ]
3074        );
3075    }
3076
3077    public function onParserMakeImageParams( $title, $file, &$params, $parser ) {
3078        return $this->container->run(
3079            'ParserMakeImageParams',
3080            [ $title, $file, &$params, $parser ]
3081        );
3082    }
3083
3084    public function onParserModifyImageHTML( Parser $parser, File $file,
3085        array $params, string &$html
3086    ): void {
3087        $this->container->run(
3088            'ParserModifyImageHTML',
3089            [ $parser, $file, $params, &$html ],
3090            [ 'abortable' => false ]
3091        );
3092    }
3093
3094    public function onParserOptionsRegister( &$defaults, &$inCacheKey, &$lazyLoad ) {
3095        return $this->container->run(
3096            'ParserOptionsRegister',
3097            [ &$defaults, &$inCacheKey, &$lazyLoad ]
3098        );
3099    }
3100
3101    public function onParserOutputPostCacheTransform( $parserOutput, &$text,
3102        &$options
3103    ): void {
3104        $this->container->run(
3105            'ParserOutputPostCacheTransform',
3106            [ $parserOutput, &$text, &$options ],
3107            [ 'abortable' => false ]
3108        );
3109    }
3110
3111    public function onParserOutputStashForEdit( $page, $content, $output, $summary,
3112        $user
3113    ) {
3114        return $this->container->run(
3115            'ParserOutputStashForEdit',
3116            [ $page, $content, $output, $summary, $user ]
3117        );
3118    }
3119
3120    public function onParserPreSaveTransformComplete( $parser, &$text ) {
3121        return $this->container->run(
3122            'ParserPreSaveTransformComplete',
3123            [ $parser, &$text ]
3124        );
3125    }
3126
3127    public function onParserTestGlobals( &$globals ) {
3128        return $this->container->run(
3129            'ParserTestGlobals',
3130            [ &$globals ]
3131        );
3132    }
3133
3134    public function onPasswordPoliciesForUser( $user, &$effectivePolicy ) {
3135        return $this->container->run(
3136            'PasswordPoliciesForUser',
3137            [ $user, &$effectivePolicy ]
3138        );
3139    }
3140
3141    public function onPerformRetroactiveAutoblock( $block, &$blockIds ) {
3142        return $this->container->run(
3143            'PerformRetroactiveAutoblock',
3144            [ $block, &$blockIds ]
3145        );
3146    }
3147
3148    public function onPingLimiter( $user, $action, &$result, $incrBy ) {
3149        return $this->container->run(
3150            'PingLimiter',
3151            [ $user, $action, &$result, $incrBy ]
3152        );
3153    }
3154
3155    public function onPlaceNewSection( $content, $oldtext, $subject, &$text ) {
3156        return $this->container->run(
3157            'PlaceNewSection',
3158            [ $content, $oldtext, $subject, &$text ]
3159        );
3160    }
3161
3162    public function onPostLoginRedirect( &$returnTo, &$returnToQuery, &$type ) {
3163        return $this->container->run(
3164            'PostLoginRedirect',
3165            [ &$returnTo, &$returnToQuery, &$type ]
3166        );
3167    }
3168
3169    public function onPreferencesFormPreSave( $formData, $form, $user, &$result,
3170        $oldUserOptions
3171    ) {
3172        return $this->container->run(
3173            'PreferencesFormPreSave',
3174            [ $formData, $form, $user, &$result, $oldUserOptions ]
3175        );
3176    }
3177
3178    public function onPreferencesGetIcon( &$iconNames ) {
3179        return $this->container->run(
3180            'PreferencesGetIcon',
3181            [ &$iconNames ]
3182        );
3183    }
3184
3185    public function onPreferencesGetLayout( &$useMobileLayout, $skinName,
3186        $skinProperties = []
3187    ) {
3188        return $this->container->run(
3189            'PreferencesGetLayout',
3190            [ &$useMobileLayout, $skinName, $skinProperties ]
3191        );
3192    }
3193
3194    public function onPreferencesGetLegend( $form, $key, &$legend ) {
3195        return $this->container->run(
3196            'PreferencesGetLegend',
3197            [ $form, $key, &$legend ]
3198        );
3199    }
3200
3201    public function onPrefixSearchBackend( $ns, $search, $limit, &$results,
3202        $offset
3203    ) {
3204        return $this->container->run(
3205            'PrefixSearchBackend',
3206            [ $ns, $search, $limit, &$results, $offset ]
3207        );
3208    }
3209
3210    public function onPrefixSearchExtractNamespace( &$namespaces, &$search ) {
3211        return $this->container->run(
3212            'PrefixSearchExtractNamespace',
3213            [ &$namespaces, &$search ]
3214        );
3215    }
3216
3217    public function onPrefsEmailAudit( $user, $oldaddr, $newaddr ) {
3218        return $this->container->run(
3219            'PrefsEmailAudit',
3220            [ $user, $oldaddr, $newaddr ]
3221        );
3222    }
3223
3224    public function onProtectionForm__buildForm( $article, &$output ) {
3225        return $this->container->run(
3226            'ProtectionForm::buildForm',
3227            [ $article, &$output ]
3228        );
3229    }
3230
3231    public function onProtectionFormAddFormFields( $article, &$hookFormOptions ) {
3232        return $this->container->run(
3233            'ProtectionFormAddFormFields',
3234            [ $article, &$hookFormOptions ]
3235        );
3236    }
3237
3238    public function onProtectionForm__save( $article, &$errorMsg, $reasonstr ) {
3239        return $this->container->run(
3240            'ProtectionForm::save',
3241            [ $article, &$errorMsg, $reasonstr ]
3242        );
3243    }
3244
3245    public function onProtectionForm__showLogExtract( $article, $out ) {
3246        return $this->container->run(
3247            'ProtectionForm::showLogExtract',
3248            [ $article, $out ]
3249        );
3250    }
3251
3252    public function onRandomPageQuery( &$tables, &$conds, &$joinConds ) {
3253        return $this->container->run(
3254            'RandomPageQuery',
3255            [ &$tables, &$conds, &$joinConds ]
3256        );
3257    }
3258
3259    public function onRawPageViewBeforeOutput( $obj, &$text ) {
3260        return $this->container->run(
3261            'RawPageViewBeforeOutput',
3262            [ $obj, &$text ]
3263        );
3264    }
3265
3266    public function onRecentChangesPurgeRows( $rows ): void {
3267        $this->container->run(
3268            'RecentChangesPurgeRows',
3269            [ $rows ]
3270        );
3271    }
3272
3273    public function onRecentChange_save( $recentChange ) {
3274        return $this->container->run(
3275            'RecentChange_save',
3276            [ $recentChange ]
3277        );
3278    }
3279
3280    public function onRedirectSpecialArticleRedirectParams( &$redirectParams ) {
3281        return $this->container->run(
3282            'RedirectSpecialArticleRedirectParams',
3283            [ &$redirectParams ]
3284        );
3285    }
3286
3287    public function onRejectParserCacheValue( $parserOutput, $wikiPage,
3288        $parserOptions
3289    ) {
3290        return $this->container->run(
3291            'RejectParserCacheValue',
3292            [ $parserOutput, $wikiPage, $parserOptions ]
3293        );
3294    }
3295
3296    public function onRenameUserAbort( int $uid, string $old, string $new ) {
3297        return $this->container->run(
3298            'RenameUserAbort',
3299            [ $uid, $old, $new ]
3300        );
3301    }
3302
3303    public function onRenameUserComplete( int $uid, string $old, string $new ): void {
3304        $this->container->run(
3305            'RenameUserComplete',
3306            [ $uid, $old, $new ],
3307            [ 'abortable' => false ]
3308        );
3309    }
3310
3311    public function onRenameUserPreRename( int $uid, string $old, string $new ): void {
3312        $this->container->run(
3313            'RenameUserPreRename',
3314            [ $uid, $old, $new ],
3315            [ 'abortable' => false ]
3316        );
3317    }
3318
3319    public function onRenameUserSQL( RenameuserSQL $renameUserSql ): void {
3320        $this->container->run(
3321            'RenameUserSQL',
3322            [ $renameUserSql ],
3323            [ 'abortable' => false ]
3324        );
3325    }
3326
3327    public function onRenameUserWarning( string $oldUsername, string $newUsername, array &$warnings ): void {
3328        $this->container->run(
3329            'RenameUserWarning',
3330            [ $oldUsername, $newUsername, &$warnings ],
3331            [ 'abortable' => false ]
3332        );
3333    }
3334
3335    public function onRequestContextCreateSkin( $context, &$skin ) {
3336        return $this->container->run(
3337            'RequestContextCreateSkin',
3338            [ $context, &$skin ]
3339        );
3340    }
3341
3342    public function onResetPasswordExpiration( $user, &$newExpire ) {
3343        return $this->container->run(
3344            'ResetPasswordExpiration',
3345            [ $user, &$newExpire ]
3346        );
3347    }
3348
3349    public function onRevisionDataUpdates( $title, $renderedRevision, &$updates ) {
3350        return $this->container->run(
3351            'RevisionDataUpdates',
3352            [ $title, $renderedRevision, &$updates ]
3353        );
3354    }
3355
3356    public function onRevisionFromEditComplete( $wikiPage, $rev, $originalRevId, $user, &$tags ) {
3357        return $this->container->run(
3358            'RevisionFromEditComplete',
3359            [ $wikiPage, $rev, $originalRevId, $user, &$tags ]
3360        );
3361    }
3362
3363    public function onRevisionRecordInserted( $revisionRecord ) {
3364        return $this->container->run(
3365            'RevisionRecordInserted',
3366            [ $revisionRecord ]
3367        );
3368    }
3369
3370    public function onRevisionUndeleted( $revisionRecord, $oldPageID ) {
3371        return $this->container->run(
3372            'RevisionUndeleted',
3373            [ $revisionRecord, $oldPageID ]
3374        );
3375    }
3376
3377    public function onRollbackComplete( $wikiPage, $user, $revision, $current ) {
3378        return $this->container->run(
3379            'RollbackComplete',
3380            [ $wikiPage, $user, $revision, $current ]
3381        );
3382    }
3383
3384    public function onSearchableNamespaces( &$arr ) {
3385        return $this->container->run(
3386            'SearchableNamespaces',
3387            [ &$arr ]
3388        );
3389    }
3390
3391    public function onSearchAfterNoDirectMatch( $term, &$title ) {
3392        return $this->container->run(
3393            'SearchAfterNoDirectMatch',
3394            [ $term, &$title ]
3395        );
3396    }
3397
3398    public function onSearchDataForIndex( &$fields, $handler, $page, $output, $engine ) {
3399        return $this->container->run(
3400            'SearchDataForIndex',
3401            [ &$fields, $handler, $page, $output, $engine ]
3402        );
3403    }
3404
3405    public function onSearchDataForIndex2( array &$fields, ContentHandler $handler,
3406        WikiPage $page, ParserOutput $output, SearchEngine $engine, RevisionRecord $revision
3407    ) {
3408        return $this->container->run(
3409            'SearchDataForIndex2',
3410            [ &$fields, $handler, $page, $output, $engine, $revision ]
3411        );
3412    }
3413
3414    public function onSearchGetNearMatch( $term, &$title ) {
3415        return $this->container->run(
3416            'SearchGetNearMatch',
3417            [ $term, &$title ]
3418        );
3419    }
3420
3421    public function onSearchGetNearMatchBefore( $allSearchTerms, &$titleResult ) {
3422        return $this->container->run(
3423            'SearchGetNearMatchBefore',
3424            [ $allSearchTerms, &$titleResult ]
3425        );
3426    }
3427
3428    public function onSearchGetNearMatchComplete( $term, &$title ) {
3429        return $this->container->run(
3430            'SearchGetNearMatchComplete',
3431            [ $term, &$title ]
3432        );
3433    }
3434
3435    public function onSearchIndexFields( &$fields, $engine ) {
3436        return $this->container->run(
3437            'SearchIndexFields',
3438            [ &$fields, $engine ]
3439        );
3440    }
3441
3442    public function onSearchResultInitFromTitle( $title, &$id ) {
3443        return $this->container->run(
3444            'SearchResultInitFromTitle',
3445            [ $title, &$id ]
3446        );
3447    }
3448
3449    public function onSearchResultProvideDescription( array $pageIdentities, &$descriptions ) {
3450        return $this->container->run(
3451            'SearchResultProvideDescription',
3452            [ $pageIdentities, &$descriptions ]
3453        );
3454    }
3455
3456    public function onSearchResultProvideThumbnail( array $pageIdentities, &$thumbnails, ?int $size = null ) {
3457        return $this->container->run(
3458            'SearchResultProvideThumbnail',
3459            [ $pageIdentities, &$thumbnails, $size ]
3460        );
3461    }
3462
3463    public function onSearchResultsAugment( &$setAugmentors, &$rowAugmentors ) {
3464        return $this->container->run(
3465            'SearchResultsAugment',
3466            [ &$setAugmentors, &$rowAugmentors ]
3467        );
3468    }
3469
3470    public function onSecuritySensitiveOperationStatus( &$status, $operation,
3471        $session, $timeSinceAuth
3472    ) {
3473        return $this->container->run(
3474            'SecuritySensitiveOperationStatus',
3475            [ &$status, $operation, $session, $timeSinceAuth ]
3476        );
3477    }
3478
3479    public function onSelfLinkBegin( $nt, &$html, &$trail, &$prefix, &$ret ) {
3480        return $this->container->run(
3481            'SelfLinkBegin',
3482            [ $nt, &$html, &$trail, &$prefix, &$ret ]
3483        );
3484    }
3485
3486    public function onSendWatchlistEmailNotification( $targetUser, $title, $enotif ) {
3487        return $this->container->run(
3488            'SendWatchlistEmailNotification',
3489            [ $targetUser, $title, $enotif ]
3490        );
3491    }
3492
3493    public function onSessionCheckInfo( &$reason, $info, $request, $metadata,
3494        $data
3495    ) {
3496        return $this->container->run(
3497            'SessionCheckInfo',
3498            [ &$reason, $info, $request, $metadata, $data ]
3499        );
3500    }
3501
3502    public function onSessionMetadata( $backend, &$metadata, $requests ) {
3503        return $this->container->run(
3504            'SessionMetadata',
3505            [ $backend, &$metadata, $requests ]
3506        );
3507    }
3508
3509    public function onSetupAfterCache() {
3510        return $this->container->run(
3511            'SetupAfterCache',
3512            []
3513        );
3514    }
3515
3516    public function onShortPagesQuery( &$tables, &$conds, &$joinConds, &$options ) {
3517        return $this->container->run(
3518            'ShortPagesQuery',
3519            [ &$tables, &$conds, &$joinConds, &$options ]
3520        );
3521    }
3522
3523    public function onShowMissingArticle( $article ) {
3524        return $this->container->run(
3525            'ShowMissingArticle',
3526            [ $article ]
3527        );
3528    }
3529
3530    public function onShowSearchHit( $searchPage, $result, $terms, &$link,
3531        &$redirect, &$section, &$extract, &$score, &$size, &$date, &$related, &$html
3532    ) {
3533        return $this->container->run(
3534            'ShowSearchHit',
3535            [ $searchPage, $result, $terms, &$link, &$redirect, &$section,
3536                &$extract, &$score, &$size, &$date, &$related, &$html ]
3537        );
3538    }
3539
3540    public function onShowSearchHitTitle( &$title, &$titleSnippet, $result, $terms,
3541        $specialSearch, &$query, &$attributes
3542    ) {
3543        return $this->container->run(
3544            'ShowSearchHitTitle',
3545            [ &$title, &$titleSnippet, $result, $terms, $specialSearch,
3546                &$query, &$attributes ]
3547        );
3548    }
3549
3550    public function onSidebarBeforeOutput( $skin, &$sidebar ): void {
3551        $this->container->run(
3552            'SidebarBeforeOutput',
3553            [ $skin, &$sidebar ],
3554            [ 'abortable' => false ]
3555        );
3556    }
3557
3558    public function onSiteNoticeAfter( &$siteNotice, $skin ) {
3559        return $this->container->run(
3560            'SiteNoticeAfter',
3561            [ &$siteNotice, $skin ]
3562        );
3563    }
3564
3565    public function onSiteNoticeBefore( &$siteNotice, $skin ) {
3566        return $this->container->run(
3567            'SiteNoticeBefore',
3568            [ &$siteNotice, $skin ]
3569        );
3570    }
3571
3572    public function onSkinPageReadyConfig( RL\Context $context,
3573        array &$config
3574    ): void {
3575        $this->container->run(
3576            'SkinPageReadyConfig',
3577            [ $context, &$config ],
3578            [ 'abortable' => false ]
3579        );
3580    }
3581
3582    public function onSkinAddFooterLinks( Skin $skin, string $key, array &$footerItems ) {
3583        $this->container->run(
3584            'SkinAddFooterLinks',
3585            [ $skin, $key, &$footerItems ]
3586        );
3587    }
3588
3589    public function onSkinAfterBottomScripts( $skin, &$text ) {
3590        return $this->container->run(
3591            'SkinAfterBottomScripts',
3592            [ $skin, &$text ]
3593        );
3594    }
3595
3596    public function onSkinAfterContent( &$data, $skin ) {
3597        return $this->container->run(
3598            'SkinAfterContent',
3599            [ &$data, $skin ]
3600        );
3601    }
3602
3603    public function onSkinAfterPortlet( $skin, $portlet, &$html ) {
3604        return $this->container->run(
3605            'SkinAfterPortlet',
3606            [ $skin, $portlet, &$html ]
3607        );
3608    }
3609
3610    public function onSkinBuildSidebar( $skin, &$bar ) {
3611        return $this->container->run(
3612            'SkinBuildSidebar',
3613            [ $skin, &$bar ]
3614        );
3615    }
3616
3617    public function onSkinCopyrightFooter( $title, $type, &$msg, &$link ) {
3618        return $this->container->run(
3619            'SkinCopyrightFooter',
3620            [ $title, $type, &$msg, &$link ]
3621        );
3622    }
3623
3624    public function onSkinCopyrightFooterMessage( $title, $type, &$msg ) {
3625        return $this->container->run(
3626            'SkinCopyrightFooterMessage',
3627            [ $title, $type, &$msg ]
3628        );
3629    }
3630
3631    public function onSkinEditSectionLinks( $skin, $title, $section, $tooltip,
3632        &$result, $lang
3633    ) {
3634        return $this->container->run(
3635            'SkinEditSectionLinks',
3636            [ $skin, $title, $section, $tooltip, &$result, $lang ]
3637        );
3638    }
3639
3640    public function onSkinPreloadExistence( &$titles, $skin ) {
3641        return $this->container->run(
3642            'SkinPreloadExistence',
3643            [ &$titles, $skin ]
3644        );
3645    }
3646
3647    public function onSkinSubPageSubtitle( &$subpages, $skin, $out ) {
3648        return $this->container->run(
3649            'SkinSubPageSubtitle',
3650            [ &$subpages, $skin, $out ]
3651        );
3652    }
3653
3654    public function onSkinTemplateGetLanguageLink( &$languageLink,
3655        $languageLinkTitle, $title, $outputPage
3656    ) {
3657        return $this->container->run(
3658            'SkinTemplateGetLanguageLink',
3659            [ &$languageLink, $languageLinkTitle, $title, $outputPage ]
3660        );
3661    }
3662
3663    public function onSkinTemplateNavigation__Universal( $sktemplate, &$links ): void {
3664        $this->container->run(
3665            'SkinTemplateNavigation::Universal',
3666            [ $sktemplate, &$links ],
3667            [ 'abortable' => false ]
3668        );
3669    }
3670
3671    public function onSoftwareInfo( &$software ) {
3672        return $this->container->run(
3673            'SoftwareInfo',
3674            [ &$software ]
3675        );
3676    }
3677
3678    public function onSpecialBlockModifyFormFields( $sp, &$fields ) {
3679        return $this->container->run(
3680            'SpecialBlockModifyFormFields',
3681            [ $sp, &$fields ]
3682        );
3683    }
3684
3685    public function onSpecialContributionsBeforeMainOutput( $id, $user, $sp ) {
3686        return $this->container->run(
3687            'SpecialContributionsBeforeMainOutput',
3688            [ $id, $user, $sp ]
3689        );
3690    }
3691
3692    public function onSpecialContributions__formatRow__flags( $context, $row,
3693        &$flags
3694    ) {
3695        return $this->container->run(
3696            'SpecialContributions::formatRow::flags',
3697            [ $context, $row, &$flags ]
3698        );
3699    }
3700
3701    public function onSpecialContributions__getForm__filters( $sp, &$filters ) {
3702        return $this->container->run(
3703            'SpecialContributions::getForm::filters',
3704            [ $sp, &$filters ]
3705        );
3706    }
3707
3708    public function onSpecialCreateAccountBenefits( ?string &$html, array $info, array &$options ) {
3709        return $this->container->run(
3710            'SpecialCreateAccountBenefits',
3711            [ &$html, $info, &$options ]
3712        );
3713    }
3714
3715    public function onSpecialExportGetExtraPages( $inputPages, &$extraPages ) {
3716        return $this->container->run(
3717            'SpecialExportGetExtraPages',
3718            [ $inputPages, &$extraPages ]
3719        );
3720    }
3721
3722    public function onSpecialListusersDefaultQuery( $pager, &$query ) {
3723        return $this->container->run(
3724            'SpecialListusersDefaultQuery',
3725            [ $pager, &$query ]
3726        );
3727    }
3728
3729    public function onSpecialListusersFormatRow( &$item, $row ) {
3730        return $this->container->run(
3731            'SpecialListusersFormatRow',
3732            [ &$item, $row ]
3733        );
3734    }
3735
3736    public function onSpecialListusersHeader( $pager, &$out ) {
3737        return $this->container->run(
3738            'SpecialListusersHeader',
3739            [ $pager, &$out ]
3740        );
3741    }
3742
3743    public function onSpecialListusersHeaderForm( $pager, &$out ) {
3744        return $this->container->run(
3745            'SpecialListusersHeaderForm',
3746            [ $pager, &$out ]
3747        );
3748    }
3749
3750    public function onSpecialListusersQueryInfo( $pager, &$query ) {
3751        return $this->container->run(
3752            'SpecialListusersQueryInfo',
3753            [ $pager, &$query ]
3754        );
3755    }
3756
3757    public function onSpecialLogAddLogSearchRelations( $type, $request, &$qc ) {
3758        return $this->container->run(
3759            'SpecialLogAddLogSearchRelations',
3760            [ $type, $request, &$qc ]
3761        );
3762    }
3763
3764    public function onSpecialMovepageAfterMove( $movePage, $oldTitle, $newTitle ) {
3765        return $this->container->run(
3766            'SpecialMovepageAfterMove',
3767            [ $movePage, $oldTitle, $newTitle ]
3768        );
3769    }
3770
3771    public function onSpecialMuteModifyFormFields( $target, $user, &$fields ) {
3772        return $this->container->run(
3773            'SpecialMuteModifyFormFields',
3774            [ $target, $user, &$fields ]
3775        );
3776    }
3777
3778    public function onSpecialNewpagesConditions( $special, $opts, &$conds,
3779        &$tables, &$fields, &$join_conds
3780    ) {
3781        return $this->container->run(
3782            'SpecialNewpagesConditions',
3783            [ $special, $opts, &$conds, &$tables, &$fields, &$join_conds ]
3784        );
3785    }
3786
3787    public function onSpecialNewPagesFilters( $special, &$filters ) {
3788        return $this->container->run(
3789            'SpecialNewPagesFilters',
3790            [ $special, &$filters ]
3791        );
3792    }
3793
3794    public function onSpecialPageAfterExecute( $special, $subPage ) {
3795        return $this->container->run(
3796            'SpecialPageAfterExecute',
3797            [ $special, $subPage ]
3798        );
3799    }
3800
3801    public function onSpecialPageBeforeExecute( $special, $subPage ) {
3802        return $this->container->run(
3803            'SpecialPageBeforeExecute',
3804            [ $special, $subPage ]
3805        );
3806    }
3807
3808    public function onSpecialPageBeforeFormDisplay( $name, $form ) {
3809        return $this->container->run(
3810            'SpecialPageBeforeFormDisplay',
3811            [ $name, $form ]
3812        );
3813    }
3814
3815    public function onSpecialPage_initList( &$list ) {
3816        return $this->container->run(
3817            'SpecialPage_initList',
3818            [ &$list ]
3819        );
3820    }
3821
3822    public function onSpecialPasswordResetOnSubmit( &$users, $data, &$error ) {
3823        return $this->container->run(
3824            'SpecialPasswordResetOnSubmit',
3825            [ &$users, $data, &$error ]
3826        );
3827    }
3828
3829    public function onSpecialPrefixIndexGetFormFilters( IContextSource $contextSource, array &$filters ) {
3830        $this->container->run(
3831            'SpecialPrefixIndexGetFormFilters',
3832            [ $contextSource, &$filters ],
3833            [ 'abortable' => false ]
3834        );
3835    }
3836
3837    public function onSpecialPrefixIndexQuery( array $fieldData, SelectQueryBuilder $queryBuilder ) {
3838        $this->container->run(
3839            'SpecialPrefixIndexQuery',
3840            [ $fieldData, $queryBuilder ],
3841            [ 'abortable' => false ]
3842        );
3843    }
3844
3845    public function onSpecialRandomGetRandomTitle( &$randstr, &$isRedir,
3846        &$namespaces, &$extra, &$title
3847    ) {
3848        return $this->container->run(
3849            'SpecialRandomGetRandomTitle',
3850            [ &$randstr, &$isRedir, &$namespaces, &$extra, &$title ]
3851        );
3852    }
3853
3854    public function onSpecialRecentChangesPanel( &$extraOpts, $opts ) {
3855        return $this->container->run(
3856            'SpecialRecentChangesPanel',
3857            [ &$extraOpts, $opts ]
3858        );
3859    }
3860
3861    public function onSpecialResetTokensTokens( &$tokens ) {
3862        return $this->container->run(
3863            'SpecialResetTokensTokens',
3864            [ &$tokens ]
3865        );
3866    }
3867
3868    public function onSpecialSearchCreateLink( $t, &$params ) {
3869        return $this->container->run(
3870            'SpecialSearchCreateLink',
3871            [ $t, &$params ]
3872        );
3873    }
3874
3875    public function onSpecialSearchGoResult( $term, $title, &$url ) {
3876        return $this->container->run(
3877            'SpecialSearchGoResult',
3878            [ $term, $title, &$url ]
3879        );
3880    }
3881
3882    public function onSpecialSearchNogomatch( &$title ) {
3883        return $this->container->run(
3884            'SpecialSearchNogomatch',
3885            [ &$title ]
3886        );
3887    }
3888
3889    public function onSpecialSearchPowerBox( &$showSections, $term, &$opts ) {
3890        return $this->container->run(
3891            'SpecialSearchPowerBox',
3892            [ &$showSections, $term, &$opts ]
3893        );
3894    }
3895
3896    public function onSpecialSearchProfileForm( $search, &$form, $profile, $term,
3897        $opts
3898    ) {
3899        return $this->container->run(
3900            'SpecialSearchProfileForm',
3901            [ $search, &$form, $profile, $term, $opts ]
3902        );
3903    }
3904
3905    public function onSpecialSearchProfiles( &$profiles ) {
3906        return $this->container->run(
3907            'SpecialSearchProfiles',
3908            [ &$profiles ]
3909        );
3910    }
3911
3912    public function onSpecialSearchResults( $term, &$titleMatches, &$textMatches ) {
3913        return $this->container->run(
3914            'SpecialSearchResults',
3915            [ $term, &$titleMatches, &$textMatches ]
3916        );
3917    }
3918
3919    public function onSpecialSearchResultsAppend( $specialSearch, $output, $term ) {
3920        return $this->container->run(
3921            'SpecialSearchResultsAppend',
3922            [ $specialSearch, $output, $term ]
3923        );
3924    }
3925
3926    public function onSpecialSearchResultsPrepend( $specialSearch, $output, $term ) {
3927        return $this->container->run(
3928            'SpecialSearchResultsPrepend',
3929            [ $specialSearch, $output, $term ]
3930        );
3931    }
3932
3933    public function onSpecialSearchSetupEngine( $search, $profile, $engine ) {
3934        return $this->container->run(
3935            'SpecialSearchSetupEngine',
3936            [ $search, $profile, $engine ]
3937        );
3938    }
3939
3940    public function onSpecialStatsAddExtra( &$extraStats, $context ) {
3941        return $this->container->run(
3942            'SpecialStatsAddExtra',
3943            [ &$extraStats, $context ]
3944        );
3945    }
3946
3947    public function onSpecialTrackingCategories__generateCatLink( $specialPage,
3948        $catTitle, &$html
3949    ) {
3950        return $this->container->run(
3951            'SpecialTrackingCategories::generateCatLink',
3952            [ $specialPage, $catTitle, &$html ]
3953        );
3954    }
3955
3956    public function onSpecialTrackingCategories__preprocess( $specialPage,
3957        $trackingCategories
3958    ) {
3959        return $this->container->run(
3960            'SpecialTrackingCategories::preprocess',
3961            [ $specialPage, $trackingCategories ]
3962        );
3963    }
3964
3965    public function onSpecialUploadComplete( $form ) {
3966        return $this->container->run(
3967            'SpecialUploadComplete',
3968            [ $form ]
3969        );
3970    }
3971
3972    public function onSpecialVersionVersionUrl( $version, &$versionUrl ) {
3973        return $this->container->run(
3974            'SpecialVersionVersionUrl',
3975            [ $version, &$versionUrl ]
3976        );
3977    }
3978
3979    public function onSpecialWatchlistGetNonRevisionTypes( &$nonRevisionTypes ) {
3980        return $this->container->run(
3981            'SpecialWatchlistGetNonRevisionTypes',
3982            [ &$nonRevisionTypes ]
3983        );
3984    }
3985
3986    public function onSpreadAnyEditBlock( $user, bool &$blockWasSpread ) {
3987        return $this->container->run(
3988            'SpreadAnyEditBlock',
3989            [ $user, &$blockWasSpread ]
3990        );
3991    }
3992
3993    public function onSpecialWhatLinksHereQuery( $table, $data, $queryBuilder ): void {
3994        $this->container->run(
3995            'SpecialWhatLinksHereQuery',
3996            [ $table, $data, $queryBuilder ],
3997            [ 'abortable' => false ]
3998        );
3999    }
4000
4001    public function onTempUserCreatedRedirect(
4002        Session $session,
4003        UserIdentity $user,
4004        string $returnTo,
4005        string $returnToQuery,
4006        string $returnToAnchor,
4007        &$redirectUrl
4008    ) {
4009        return $this->container->run(
4010            'TempUserCreatedRedirect',
4011            [ $session, $user, $returnTo, $returnToQuery, $returnToAnchor, &$redirectUrl ]
4012        );
4013    }
4014
4015    public function onTestCanonicalRedirect( $request, $title, $output ) {
4016        return $this->container->run(
4017            'TestCanonicalRedirect',
4018            [ $request, $title, $output ]
4019        );
4020    }
4021
4022    public function onThumbnailBeforeProduceHTML( $thumbnail, &$attribs,
4023        &$linkAttribs
4024    ) {
4025        return $this->container->run(
4026            'ThumbnailBeforeProduceHTML',
4027            [ $thumbnail, &$attribs, &$linkAttribs ]
4028        );
4029    }
4030
4031    public function onTitleExists( $title, &$exists ) {
4032        return $this->container->run(
4033            'TitleExists',
4034            [ $title, &$exists ]
4035        );
4036    }
4037
4038    public function onTitleGetEditNotices( $title, $oldid, &$notices ) {
4039        return $this->container->run(
4040            'TitleGetEditNotices',
4041            [ $title, $oldid, &$notices ]
4042        );
4043    }
4044
4045    public function onTitleGetRestrictionTypes( $title, &$types ) {
4046        return $this->container->run(
4047            'TitleGetRestrictionTypes',
4048            [ $title, &$types ]
4049        );
4050    }
4051
4052    public function onTitleIsAlwaysKnown( $title, &$isKnown ) {
4053        return $this->container->run(
4054            'TitleIsAlwaysKnown',
4055            [ $title, &$isKnown ]
4056        );
4057    }
4058
4059    public function onTitleIsMovable( $title, &$result ) {
4060        return $this->container->run(
4061            'TitleIsMovable',
4062            [ $title, &$result ]
4063        );
4064    }
4065
4066    public function onTitleMove( $old, $nt, $user, $reason, &$status ) {
4067        return $this->container->run(
4068            'TitleMove',
4069            [ $old, $nt, $user, $reason, &$status ]
4070        );
4071    }
4072
4073    public function onTitleMoveStarting( $old, $nt, $user ) {
4074        return $this->container->run(
4075            'TitleMoveStarting',
4076            [ $old, $nt, $user ]
4077        );
4078    }
4079
4080    public function onTitleQuickPermissions( $title, $user, $action, &$errors,
4081        $doExpensiveQueries, $short
4082    ) {
4083        return $this->container->run(
4084            'TitleQuickPermissions',
4085            [ $title, $user, $action, &$errors, $doExpensiveQueries, $short ]
4086        );
4087    }
4088
4089    public function onTitleReadWhitelist( $title, $user, &$whitelisted ) {
4090        return $this->container->run(
4091            'TitleReadWhitelist',
4092            [ $title, $user, &$whitelisted ]
4093        );
4094    }
4095
4096    public function onTitleSquidURLs( $title, &$urls ) {
4097        return $this->container->run(
4098            'TitleSquidURLs',
4099            [ $title, &$urls ]
4100        );
4101    }
4102
4103    public function onUnblockUser( $block, $user, &$reason ) {
4104        return $this->container->run(
4105            'UnblockUser',
4106            [ $block, $user, &$reason ]
4107        );
4108    }
4109
4110    public function onUnblockUserComplete( $block, $user ) {
4111        return $this->container->run(
4112            'UnblockUserComplete',
4113            [ $block, $user ]
4114        );
4115    }
4116
4117    public function onUndeleteForm__showHistory( &$archive, $title ) {
4118        return $this->container->run(
4119            'UndeleteForm::showHistory',
4120            [ &$archive, $title ]
4121        );
4122    }
4123
4124    public function onUndeleteForm__showRevision( &$archive, $title ) {
4125        return $this->container->run(
4126            'UndeleteForm::showRevision',
4127            [ &$archive, $title ]
4128        );
4129    }
4130
4131    public function onUndeletePageToolLinks( IContextSource $context, LinkRenderer $linkRenderer, array &$links ) {
4132        return $this->container->run(
4133            'UndeletePageToolLinks',
4134            [ $context, $linkRenderer, &$links ]
4135        );
4136    }
4137
4138    public function onUnitTestsAfterDatabaseSetup( $database, $prefix ) {
4139        return $this->container->run(
4140            'UnitTestsAfterDatabaseSetup',
4141            [ $database, $prefix ]
4142        );
4143    }
4144
4145    public function onUnitTestsBeforeDatabaseTeardown() {
4146        return $this->container->run(
4147            'UnitTestsBeforeDatabaseTeardown',
4148            []
4149        );
4150    }
4151
4152    public function onUnitTestsList( &$paths ) {
4153        return $this->container->run(
4154            'UnitTestsList',
4155            [ &$paths ]
4156        );
4157    }
4158
4159    public function onUnwatchArticle( $user, $page, &$status ) {
4160        return $this->container->run(
4161            'UnwatchArticle',
4162            [ $user, $page, &$status ]
4163        );
4164    }
4165
4166    public function onUnwatchArticleComplete( $user, $page ) {
4167        return $this->container->run(
4168            'UnwatchArticleComplete',
4169            [ $user, $page ]
4170        );
4171    }
4172
4173    public function onUpdateUserMailerFormattedPageStatus( &$formattedPageStatus ) {
4174        return $this->container->run(
4175            'UpdateUserMailerFormattedPageStatus',
4176            [ &$formattedPageStatus ]
4177        );
4178    }
4179
4180    public function onUploadComplete( $uploadBase ) {
4181        return $this->container->run(
4182            'UploadComplete',
4183            [ $uploadBase ]
4184        );
4185    }
4186
4187    public function onUploadCreateFromRequest( $type, &$className ) {
4188        return $this->container->run(
4189            'UploadCreateFromRequest',
4190            [ $type, &$className ]
4191        );
4192    }
4193
4194    public function onUploadFormInitDescriptor( &$descriptor ) {
4195        return $this->container->run(
4196            'UploadFormInitDescriptor',
4197            [ &$descriptor ]
4198        );
4199    }
4200
4201    public function onUploadFormSourceDescriptors( &$descriptor, &$radio,
4202        $selectedSourceType
4203    ) {
4204        return $this->container->run(
4205            'UploadFormSourceDescriptors',
4206            [ &$descriptor, &$radio, $selectedSourceType ]
4207        );
4208    }
4209
4210    public function onUploadForm_BeforeProcessing( $upload ) {
4211        return $this->container->run(
4212            'UploadForm:BeforeProcessing',
4213            [ $upload ]
4214        );
4215    }
4216
4217    public function onUploadForm_getInitialPageText( &$pageText, $msg, $config ) {
4218        return $this->container->run(
4219            'UploadForm:getInitialPageText',
4220            [ &$pageText, $msg, $config ]
4221        );
4222    }
4223
4224    public function onUploadForm_initial( $upload ) {
4225        return $this->container->run(
4226            'UploadForm:initial',
4227            [ $upload ]
4228        );
4229    }
4230
4231    public function onUploadStashFile( $upload, $user, $props, &$error ) {
4232        return $this->container->run(
4233            'UploadStashFile',
4234            [ $upload, $user, $props, &$error ]
4235        );
4236    }
4237
4238    public function onUploadVerifyFile( $upload, $mime, &$error ) {
4239        return $this->container->run(
4240            'UploadVerifyFile',
4241            [ $upload, $mime, &$error ]
4242        );
4243    }
4244
4245    public function onUploadVerifyUpload( $upload, $user, $props, $comment,
4246        $pageText, &$error
4247    ) {
4248        return $this->container->run(
4249            'UploadVerifyUpload',
4250            [ $upload, $user, $props, $comment, $pageText, &$error ]
4251        );
4252    }
4253
4254    public function onUserAddGroup( $user, &$group, &$expiry ) {
4255        return $this->container->run(
4256            'UserAddGroup',
4257            [ $user, &$group, &$expiry ]
4258        );
4259    }
4260
4261    public function onUserArrayFromResult( &$userArray, $res ) {
4262        return $this->container->run(
4263            'UserArrayFromResult',
4264            [ &$userArray, $res ]
4265        );
4266    }
4267
4268    public function onUserCan( $title, $user, $action, &$result ) {
4269        return $this->container->run(
4270            'userCan',
4271            [ $title, $user, $action, &$result ]
4272        );
4273    }
4274
4275    public function onUserCanSendEmail( $user, &$hookErr ) {
4276        return $this->container->run(
4277            'UserCanSendEmail',
4278            [ $user, &$hookErr ]
4279        );
4280    }
4281
4282    public function onUserClearNewTalkNotification( $userIdentity, $oldid ) {
4283        return $this->container->run(
4284            'UserClearNewTalkNotification',
4285            [ $userIdentity, $oldid ]
4286        );
4287    }
4288
4289    public function onUserEditCountUpdate( $infos ): void {
4290        $this->container->run(
4291            'UserEditCountUpdate',
4292            [ $infos ],
4293            [ 'abortable' => false ]
4294        );
4295    }
4296
4297    public function onUserEffectiveGroups( $user, &$groups ) {
4298        return $this->container->run(
4299            'UserEffectiveGroups',
4300            [ $user, &$groups ]
4301        );
4302    }
4303
4304    public function onUserGetAllRights( &$rights ) {
4305        return $this->container->run(
4306            'UserGetAllRights',
4307            [ &$rights ]
4308        );
4309    }
4310
4311    public function onUserGetDefaultOptions( &$defaultOptions ) {
4312        return $this->container->run(
4313            'UserGetDefaultOptions',
4314            [ &$defaultOptions ]
4315        );
4316    }
4317
4318    public function onConditionalDefaultOptionsAddCondition( &$extraConditions ): void {
4319        $this->container->run(
4320            'ConditionalDefaultOptionsAddCondition',
4321            [ &$extraConditions ],
4322            [ 'abortable' => false ]
4323        );
4324    }
4325
4326    public function onUserGetEmail( $user, &$email ) {
4327        return $this->container->run(
4328            'UserGetEmail',
4329            [ $user, &$email ]
4330        );
4331    }
4332
4333    public function onUserGetEmailAuthenticationTimestamp( $user, &$timestamp ) {
4334        return $this->container->run(
4335            'UserGetEmailAuthenticationTimestamp',
4336            [ $user, &$timestamp ]
4337        );
4338    }
4339
4340    public function onUserGetLanguageObject( $user, &$code, $context ) {
4341        return $this->container->run(
4342            'UserGetLanguageObject',
4343            [ $user, &$code, $context ]
4344        );
4345    }
4346
4347    public function onUserPrivilegedGroups( $userIdentity, &$groups ) {
4348        return $this->container->run(
4349            'UserPrivilegedGroups',
4350            [ $userIdentity, &$groups ]
4351        );
4352    }
4353
4354    public function onUserGetReservedNames( &$reservedUsernames ) {
4355        return $this->container->run(
4356            'UserGetReservedNames',
4357            [ &$reservedUsernames ]
4358        );
4359    }
4360
4361    public function onUserGetRights( $user, &$rights ) {
4362        return $this->container->run(
4363            'UserGetRights',
4364            [ $user, &$rights ]
4365        );
4366    }
4367
4368    public function onUserGetRightsRemove( $user, &$rights ) {
4369        return $this->container->run(
4370            'UserGetRightsRemove',
4371            [ $user, &$rights ]
4372        );
4373    }
4374
4375    public function onUserGroupsChanged( $user, $added, $removed, $performer,
4376        $reason, $oldUGMs, $newUGMs
4377    ) {
4378        return $this->container->run(
4379            'UserGroupsChanged',
4380            [ $user, $added, $removed, $performer, $reason, $oldUGMs,
4381                $newUGMs ]
4382        );
4383    }
4384
4385    public function onUserIsBlockedFrom( $user, $title, &$blocked, &$allowUsertalk ) {
4386        return $this->container->run(
4387            'UserIsBlockedFrom',
4388            [ $user, $title, &$blocked, &$allowUsertalk ]
4389        );
4390    }
4391
4392    public function onUserIsBlockedGlobally( $user, $ip, &$blocked, &$block ) {
4393        return $this->container->run(
4394            'UserIsBlockedGlobally',
4395            [ $user, $ip, &$blocked, &$block ]
4396        );
4397    }
4398
4399    public function onUserIsBot( $user, &$isBot ) {
4400        return $this->container->run(
4401            'UserIsBot',
4402            [ $user, &$isBot ]
4403        );
4404    }
4405
4406    public function onUserIsEveryoneAllowed( $right ) {
4407        return $this->container->run(
4408            'UserIsEveryoneAllowed',
4409            [ $right ]
4410        );
4411    }
4412
4413    public function onUserIsLocked( $user, &$locked ) {
4414        return $this->container->run(
4415            'UserIsLocked',
4416            [ $user, &$locked ]
4417        );
4418    }
4419
4420    public function onUserLoadAfterLoadFromSession( $user ) {
4421        return $this->container->run(
4422            'UserLoadAfterLoadFromSession',
4423            [ $user ]
4424        );
4425    }
4426
4427    public function onUserLoadDefaults( $user, $name ) {
4428        return $this->container->run(
4429            'UserLoadDefaults',
4430            [ $user, $name ]
4431        );
4432    }
4433
4434    public function onLoadUserOptions( UserIdentity $user, array &$options ): void {
4435        $this->container->run(
4436            'LoadUserOptions',
4437            [ $user, &$options ],
4438            [ 'abortable' => false ]
4439        );
4440    }
4441
4442    public function onUserLoggedIn( $user ) {
4443        return $this->container->run(
4444            'UserLoggedIn',
4445            [ $user ]
4446        );
4447    }
4448
4449    public function onUserLoginComplete( $user, &$inject_html, $direct ) {
4450        return $this->container->run(
4451            'UserLoginComplete',
4452            [ $user, &$inject_html, $direct ]
4453        );
4454    }
4455
4456    public function onUserLogout( $user ) {
4457        return $this->container->run(
4458            'UserLogout',
4459            [ $user ]
4460        );
4461    }
4462
4463    public function onUserLogoutComplete( $user, &$inject_html, $oldName ) {
4464        return $this->container->run(
4465            'UserLogoutComplete',
4466            [ $user, &$inject_html, $oldName ]
4467        );
4468    }
4469
4470    public function onUserMailerChangeReturnPath( $to, &$returnPath ) {
4471        return $this->container->run(
4472            'UserMailerChangeReturnPath',
4473            [ $to, &$returnPath ]
4474        );
4475    }
4476
4477    public function onUserMailerSplitTo( &$to ) {
4478        return $this->container->run(
4479            'UserMailerSplitTo',
4480            [ &$to ]
4481        );
4482    }
4483
4484    public function onUserMailerTransformContent( $to, $from, &$body, &$error ) {
4485        return $this->container->run(
4486            'UserMailerTransformContent',
4487            [ $to, $from, &$body, &$error ]
4488        );
4489    }
4490
4491    public function onUserMailerTransformMessage( $to, $from, &$subject, &$headers,
4492        &$body, &$error
4493    ) {
4494        return $this->container->run(
4495            'UserMailerTransformMessage',
4496            [ $to, $from, &$subject, &$headers, &$body, &$error ]
4497        );
4498    }
4499
4500    public function onUserRemoveGroup( $user, &$group ) {
4501        return $this->container->run(
4502            'UserRemoveGroup',
4503            [ $user, &$group ]
4504        );
4505    }
4506
4507    public function onSaveUserOptions( UserIdentity $user, array &$modifiedOptions, array $originalOptions ) {
4508        return $this->container->run(
4509            'SaveUserOptions',
4510            [ $user, &$modifiedOptions, $originalOptions ]
4511        );
4512    }
4513
4514    public function onUserSaveSettings( $user ) {
4515        return $this->container->run(
4516            'UserSaveSettings',
4517            [ $user ]
4518        );
4519    }
4520
4521    public function onUserSendConfirmationMail( $user, &$mail, $info ) {
4522        return $this->container->run(
4523            'UserSendConfirmationMail',
4524            [ $user, &$mail, $info ]
4525        );
4526    }
4527
4528    public function onUserSetEmail( $user, &$email ) {
4529        return $this->container->run(
4530            'UserSetEmail',
4531            [ $user, &$email ]
4532        );
4533    }
4534
4535    public function onUserSetEmailAuthenticationTimestamp( $user, &$timestamp ) {
4536        return $this->container->run(
4537            'UserSetEmailAuthenticationTimestamp',
4538            [ $user, &$timestamp ]
4539        );
4540    }
4541
4542    public function onUsersPagerDoBatchLookups( $dbr, $userIds, &$cache, &$groups ) {
4543        return $this->container->run(
4544            'UsersPagerDoBatchLookups',
4545            [ $dbr, $userIds, &$cache, &$groups ]
4546        );
4547    }
4548
4549    public function onUserToolLinksEdit( $userId, $userText, &$items ) {
4550        return $this->container->run(
4551            'UserToolLinksEdit',
4552            [ $userId, $userText, &$items ]
4553        );
4554    }
4555
4556    public function onUser__mailPasswordInternal( $user, $ip, $u ) {
4557        return $this->container->run(
4558            'User::mailPasswordInternal',
4559            [ $user, $ip, $u ]
4560        );
4561    }
4562
4563    public function onValidateExtendedMetadataCache( $timestamp, $file ) {
4564        return $this->container->run(
4565            'ValidateExtendedMetadataCache',
4566            [ $timestamp, $file ]
4567        );
4568    }
4569
4570    public function onWantedPages__getQueryInfo( $wantedPages, &$query ) {
4571        return $this->container->run(
4572            'WantedPages::getQueryInfo',
4573            [ $wantedPages, &$query ]
4574        );
4575    }
4576
4577    public function onWatchArticle( $user, $page, &$status, $expiry ) {
4578        return $this->container->run(
4579            'WatchArticle',
4580            [ $user, $page, &$status, $expiry ]
4581        );
4582    }
4583
4584    public function onWatchArticleComplete( $user, $page ) {
4585        return $this->container->run(
4586            'WatchArticleComplete',
4587            [ $user, $page ]
4588        );
4589    }
4590
4591    public function onWatchedItemQueryServiceExtensions( &$extensions,
4592        $watchedItemQueryService
4593    ) {
4594        return $this->container->run(
4595            'WatchedItemQueryServiceExtensions',
4596            [ &$extensions, $watchedItemQueryService ]
4597        );
4598    }
4599
4600    public function onWatchlistEditorBeforeFormRender( &$watchlistInfo ) {
4601        return $this->container->run(
4602            'WatchlistEditorBeforeFormRender',
4603            [ &$watchlistInfo ]
4604        );
4605    }
4606
4607    public function onWatchlistEditorBuildRemoveLine( &$tools, $title, $redirect,
4608        $skin, &$link
4609    ) {
4610        return $this->container->run(
4611            'WatchlistEditorBuildRemoveLine',
4612            [ &$tools, $title, $redirect, $skin, &$link ]
4613        );
4614    }
4615
4616    public function onWebRequestPathInfoRouter( $router ) {
4617        return $this->container->run(
4618            'WebRequestPathInfoRouter',
4619            [ $router ]
4620        );
4621    }
4622
4623    public function onWebResponseSetCookie( &$name, &$value, &$expire, &$options ) {
4624        return $this->container->run(
4625            'WebResponseSetCookie',
4626            [ &$name, &$value, &$expire, &$options ]
4627        );
4628    }
4629
4630    public function onWfShellWikiCmd( &$script, &$parameters, &$options ) {
4631        return $this->container->run(
4632            'wfShellWikiCmd',
4633            [ &$script, &$parameters, &$options ]
4634        );
4635    }
4636
4637    public function onWgQueryPages( &$qp ) {
4638        return $this->container->run(
4639            'wgQueryPages',
4640            [ &$qp ]
4641        );
4642    }
4643
4644    public function onWhatLinksHereProps( $row, $title, $target, &$props ) {
4645        return $this->container->run(
4646            'WhatLinksHereProps',
4647            [ $row, $title, $target, &$props ]
4648        );
4649    }
4650
4651    public function onWikiExporter__dumpStableQuery( &$tables, &$opts, &$join ) {
4652        return $this->container->run(
4653            'WikiExporter::dumpStableQuery',
4654            [ &$tables, &$opts, &$join ]
4655        );
4656    }
4657
4658    public function onWikiPageDeletionUpdates( $page, $content, &$updates ) {
4659        return $this->container->run(
4660            'WikiPageDeletionUpdates',
4661            [ $page, $content, &$updates ]
4662        );
4663    }
4664
4665    public function onWikiPageFactory( $title, &$page ) {
4666        return $this->container->run(
4667            'WikiPageFactory',
4668            [ $title, &$page ]
4669        );
4670    }
4671
4672    public function onXmlDumpWriterOpenPage( $obj, &$out, $row, $title ) {
4673        return $this->container->run(
4674            'XmlDumpWriterOpenPage',
4675            [ $obj, &$out, $row, $title ]
4676        );
4677    }
4678
4679    public function onXmlDumpWriterWriteRevision( $obj, &$out, $row, $text, $rev ) {
4680        return $this->container->run(
4681            'XmlDumpWriterWriteRevision',
4682            [ $obj, &$out, $row, $text, $rev ]
4683        );
4684    }
4685}