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