Merge "Move MediaHandler defaults out of global scope"
[lhc/web/wiklou.git] / includes / OutputPage.php
index c667fb9..b6c48ab 100644 (file)
@@ -251,11 +251,6 @@ class OutputPage extends ContextSource {
         */
        protected $styles = [];
 
-       /**
-        * Whether jQuery is already handled.
-        */
-       protected $mJQueryDone = false;
-
        private $mIndexPolicy = 'index';
        private $mFollowPolicy = 'follow';
        private $mVaryHeader = [
@@ -295,6 +290,9 @@ class OutputPage extends ContextSource {
         */
        private $copyrightUrl;
 
+       /** @var array Profiling data */
+       private $limitReportData = [];
+
        /**
         * Constructor for OutputPage. This should not be called directly.
         * Instead a new RequestContext should be created and it will implicitly create
@@ -609,29 +607,6 @@ class OutputPage extends ContextSource {
                $this->mModuleStyles = array_merge( $this->mModuleStyles, (array)$modules );
        }
 
-       /**
-        * Get the list of module messages to include on this page
-        *
-        * @deprecated since 1.26 Obsolete
-        * @param bool $filter
-        * @param string|null $position
-        * @return array Array of module names
-        */
-       public function getModuleMessages( $filter = false, $position = null ) {
-               wfDeprecated( __METHOD__, '1.26' );
-               return [];
-       }
-
-       /**
-        * Load messages of one or more ResourceLoader modules.
-        *
-        * @deprecated since 1.26 Use addModules() instead
-        * @param string|array $modules Module name (string) or array of module names
-        */
-       public function addModuleMessages( $modules ) {
-               wfDeprecated( __METHOD__, '1.26' );
-       }
-
        /**
         * @return null|string ResourceLoader target
         */
@@ -658,7 +633,7 @@ class OutputPage extends ContextSource {
        }
 
        /**
-        * Add or replace an header item to the output
+        * Add or replace a head item to the output
         *
         * Whenever possible, use more specific options like ResourceLoader modules,
         * OutputPage::addLink(), OutputPage::addMetaLink() and OutputPage::addFeedLink()
@@ -673,6 +648,16 @@ class OutputPage extends ContextSource {
                $this->mHeadItems[$name] = $value;
        }
 
+       /**
+        * Add one or more head items to the output
+        *
+        * @since 1.28
+        * @param string|string[] $value Raw HTML
+        */
+       public function addHeadItems( $values ) {
+               $this->mHeadItems = array_merge( $this->mHeadItems, (array)$values );
+       }
+
        /**
         * Check if the header item $name is already set
         *
@@ -1782,11 +1767,14 @@ class OutputPage extends ContextSource {
                        }
                }
 
-               // enable OOUI if requested via ParserOutput
+               // Enable OOUI if requested via ParserOutput
                if ( $parserOutput->getEnableOOUI() ) {
                        $this->enableOOUI();
                }
 
+               // Include profiling data
+               $this->limitReportData = $parserOutput->getLimitReportData();
+
                // Link flags are ignored for now, but may in the future be
                // used to mark individual language links.
                $linkFlags = [];
@@ -2688,6 +2676,11 @@ class OutputPage extends ContextSource {
                        $bodyClasses[] = 'capitalize-all-nouns';
                }
 
+               // Parser feature migration class
+               // The idea is that this will eventually be removed, after the wikitext
+               // which requires it is cleaned up.
+               $bodyClasses[] = 'mw-hide-empty-elt';
+
                $bodyClasses[] = $sk->getPageClasses( $this->getTitle() );
                $bodyClasses[] = 'skin-' . Sanitizer::escapeClass( $sk->getSkinName() );
                $bodyClasses[] =
@@ -2785,6 +2778,17 @@ class OutputPage extends ContextSource {
                                continue;
                        }
 
+                       if ( $only === ResourceLoaderModule::TYPE_STYLES ) {
+                               if ( $module->getType() !== ResourceLoaderModule::LOAD_STYLES ) {
+                                       $logger = $resourceLoader->getLogger();
+                                       $logger->debug( 'Unexpected general module "{module}" in styles queue.', [
+                                               'module' => $name,
+                                       ] );
+                               } else {
+                                       $links['states'][$name] = 'ready';
+                               }
+                       }
+
                        $sortedModules[$module->getSource()][$module->getGroup()][$name] = $module;
                }
 
@@ -3087,7 +3091,13 @@ class OutputPage extends ContextSource {
         * @return string
         */
        function getBottomScripts() {
-               return $this->getScriptsForBottomQueue();
+               return $this->getScriptsForBottomQueue() .
+                       ResourceLoader::makeInlineScript(
+                               ResourceLoader::makeConfigSetScript(
+                                       [ 'wgPageParseReport' => $this->limitReportData ],
+                                       true
+                               )
+                       );
        }
 
        /**
@@ -3650,7 +3660,7 @@ class OutputPage extends ContextSource {
                ) {
                        // We're on a preview of a CSS subpage
                        // Exclude this page from the user module in case it's in there (bug 26283)
-                       $link = $this->makeResourceLoaderLink( 'user', ResourceLoaderModule::TYPE_STYLES,
+                       $link = $this->makeResourceLoaderLink( 'user.styles', ResourceLoaderModule::TYPE_STYLES,
                                [ 'excludepage' => $this->getTitle()->getPrefixedDBkey() ]
                        );
                        $otherTags = array_merge( $otherTags, $link['html'] );
@@ -3665,7 +3675,7 @@ class OutputPage extends ContextSource {
                        $otherTags[] = Html::inlineStyle( $previewedCSS );
                } else {
                        // Load the user styles normally
-                       $moduleStyles[] = 'user';
+                       $moduleStyles[] = 'user.styles';
                }
 
                // Per-user preference styles