X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fresourceloader%2FResourceLoaderStartUpModule.php;h=7880f6f2494b4e7634b558eaa8134df5a98f7ab3;hb=e65cc82b4b80a73c2603b9b1e8aaa3d96d5c68f1;hp=2e7c869a8f549c13952c1f3254c6327865733224;hpb=abb59e331ab55b8dc3af34cdb0fbf1547d234215;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php index 2e7c869a8f..7880f6f249 100644 --- a/includes/resourceloader/ResourceLoaderStartUpModule.php +++ b/includes/resourceloader/ResourceLoaderStartUpModule.php @@ -70,7 +70,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { // Build list of variables $skin = $context->getSkin(); $vars = [ - 'wgLoadScript' => $conf->get( 'LoadScript' ), 'debug' => $context->getDebug(), 'skin' => $skin, 'stylepath' => $conf->get( 'StylePath' ), @@ -106,7 +105,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { 'wgCaseSensitiveNamespaces' => $caseSensitiveNamespaces, 'wgLegalTitleChars' => Title::convertByteClassToUnicodeClass( Title::legalChars() ), 'wgIllegalFileChars' => Title::convertByteClassToUnicodeClass( $illegalFileChars ), - 'wgResourceLoaderStorageVersion' => $conf->get( 'ResourceLoaderStorageVersion' ), 'wgResourceLoaderStorageEnabled' => $conf->get( 'ResourceLoaderStorageEnabled' ), 'wgForeignUploadTargets' => $conf->get( 'ForeignUploadTargets' ), 'wgEnableUploads' => $conf->get( 'EnableUploads' ), @@ -254,10 +252,11 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { continue; } - if ( $module->isRaw() ) { - // Don't register "raw" modules (like 'startup') client-side because depending on them - // is illegal anyway and would only lead to them being loaded a second time, - // causing any state to be lost. + if ( $module instanceof ResourceLoaderStartUpModule ) { + // Don't register 'startup' to the client because loading it lazily or depending + // on it doesn't make sense, because the startup module *is* the client. + // Registering would be a waste of bandwidth and memory and risks somehow causing + // it to load a second time. // ATTENTION: Because of the line below, this is not going to cause infinite recursion. // Think carefully before making changes to this code! @@ -341,13 +340,6 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { return $out; } - /** - * @return bool - */ - public function isRaw() { - return true; - } - /** * @private For internal use by SpecialJavaScriptTest * @since 1.32 @@ -374,6 +366,30 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { return $baseModules; } + /** + * Get the localStorage key for the entire module store. The key references + * $wgDBname to prevent clashes between wikis under the same web domain. + * + * @return string localStorage item key for JavaScript + */ + private function getStoreKey() { + return 'MediaWikiModuleStore:' . $this->getConfig()->get( 'DBname' ); + } + + /** + * Get the key on which the JavaScript module cache (mw.loader.store) will vary. + * + * @param ResourceLoaderContext $context + * @return string String of concatenated vary conditions + */ + private function getStoreVary( ResourceLoaderContext $context ) { + return implode( ':', [ + $context->getSkin(), + $this->getConfig()->get( 'ResourceLoaderStorageVersion' ), + $context->getLanguage(), + ] ); + } + /** * @param ResourceLoaderContext $context * @return string JavaScript code @@ -406,6 +422,8 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule { '$VARS.maxQueryLength' => ResourceLoader::encodeJsonForScript( $conf->get( 'ResourceLoaderMaxQueryLength' ) ), + '$VARS.storeKey' => ResourceLoader::encodeJsonForScript( $this->getStoreKey() ), + '$VARS.storeVary' => ResourceLoader::encodeJsonForScript( $this->getStoreVary( $context ) ), ]; $profilerStubs = [ '$CODE.profileExecuteStart();' => 'mw.loader.profiler.onExecuteStart( module );',