Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 49
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3use MediaWiki\Config\Config;
4use MediaWiki\MediaWikiServices;
5use MobileFrontend\Features\Feature;
6use MobileFrontend\Features\FeaturesManager;
7use MobileFrontend\Features\LoggedInUserMode;
8use MobileFrontend\Features\StableUserMode;
9use MobileFrontend\Features\UserModes;
10
11/** @phpcs-require-sorted-array */
12return [
13    'MobileFrontend.AMC.Manager' => static function ( MediaWikiServices $services ): MobileFrontend\Amc\Manager {
14        return new MobileFrontend\Amc\Manager(
15            $services->getService( 'MobileFrontend.Config' ),
16            $services->getService( 'MobileFrontend.Context' )
17        );
18    },
19    'MobileFrontend.AMC.UserMode' => static function ( MediaWikiServices $services ): MobileFrontend\Amc\UserMode {
20        return new MobileFrontend\Amc\UserMode(
21            $services->getService( 'MobileFrontend.AMC.Manager' ),
22            $services->getService( 'MobileFrontend.Context' )->getUser(),
23            $services->getUserOptionsManager()
24        );
25    },
26    'MobileFrontend.Config' => static function ( MediaWikiServices $services ): Config {
27        return $services->getService( 'ConfigFactory' )
28            ->makeConfig( 'mobilefrontend' );
29    },
30    'MobileFrontend.Context' => static function (): MobileContext {
31        return MobileContext::singleton();
32    },
33    'MobileFrontend.FeaturesManager' => static function ( MediaWikiServices $services ): FeaturesManager {
34        $config = $services->getService( 'MobileFrontend.Config' );
35
36        $manager = new FeaturesManager(
37            $services->getHookContainer(),
38            $services->getService( 'MobileFrontend.UserModes' )
39        );
40        // register default features
41        // maybe we can get all available features by looping through MobileFrontend.Feature.*
42        // and register it here, it would be nice to have something like
43        // $services->getAllByPrefix('MobileFrontend.Feature')
44
45        $manager->registerFeature( new Feature( 'MFEnableWikidataDescriptions', 'mobile-frontend',
46            $config->get( 'MFEnableWikidataDescriptions' ) ) );
47        $manager->registerFeature( new Feature( 'MFLazyLoadImages', 'mobile-frontend',
48            $config->get( 'MFLazyLoadImages' ) ) );
49        $manager->registerFeature( new Feature( 'MFShowFirstParagraphBeforeInfobox', 'mobile-frontend',
50            $config->get( 'MFShowFirstParagraphBeforeInfobox' ) ) );
51        $manager->registerFeature( new Feature( 'MFEnableFontChanger', 'mobile-frontend',
52            $config->get( 'MFEnableFontChanger' ) ) );
53        $manager->registerFeature( new Feature( 'MFUseDesktopSpecialEditWatchlistPage', 'mobile-frontend',
54            $config->get( 'MFUseDesktopSpecialEditWatchlistPage' ) ) );
55        $manager->useHookToRegisterExtensionOrSkinFeatures();
56        return $manager;
57    },
58    'MobileFrontend.UserModes' => static function ( MediaWikiServices $services ): UserModes {
59        $modes = new UserModes();
60        /** @var MobileContext $context */
61        $context = $services->getService( 'MobileFrontend.Context' );
62        $modes->registerMode( new StableUserMode( $context ) );
63        $modes->registerMode( new LoggedInUserMode( $context->getUser() ) );
64        $modes->registerMode( $services->getService( 'MobileFrontend.AMC.UserMode' ) );
65        return $modes;
66    }
67];