Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 56
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        $userModes = $services->getService( 'MobileFrontend.UserModes' );
31
32        $manager = new FeaturesManager( $userModes );
33        // register default features
34        // maybe we can get all available features by looping through MobileFrontend.Feature.*
35        // and register it here, it would be nice to have something like
36        // $services->getAllByPrefix('MobileFrontend.Feature')
37
38        // Generates the following messages:
39        // * mobile-frontend-mobile-option-MFEnableWikidataDescriptions
40        // * mobile-frontend-mobile-option-MFEnableWikidataDescriptions-description
41        $manager->registerFeature( new Feature( 'MFEnableWikidataDescriptions', 'mobile-frontend',
42            $config->get( 'MFEnableWikidataDescriptions' ) ) );
43        // Generates the following messages:
44        // * mobile-frontend-mobile-option-MFLazyLoadImages
45        // * mobile-frontend-mobile-option-MFLazyLoadImages-description
46        $manager->registerFeature( new Feature( 'MFLazyLoadImages', 'mobile-frontend',
47            $config->get( 'MFLazyLoadImages' ) ) );
48        // Generates the following messages:
49        // * mobile-frontend-mobile-option-MFShowFirstParagraphBeforeInfobox
50        // * mobile-frontend-mobile-option-MFShowFirstParagraphBeforeInfobox-description
51        $manager->registerFeature( new Feature( 'MFShowFirstParagraphBeforeInfobox', 'mobile-frontend',
52            $config->get( 'MFShowFirstParagraphBeforeInfobox' ) ) );
53        // Generates the following messages:
54        // * mobile-frontend-mobile-option-MFEnableFontChanger
55        // * mobile-frontend-mobile-option-MFEnableFontChanger-description
56        $manager->registerFeature( new Feature( 'MFEnableFontChanger', 'mobile-frontend',
57            $config->get( 'MFEnableFontChanger' ) ) );
58        // Generates the following messages:
59        // * mobile-frontend-mobile-option-MFUseDesktopSpecialWatchlistPage
60        // * mobile-frontend-mobile-option-MFUseDesktopSpecialWatchlistPage-description
61        $manager->registerFeature( new Feature( 'MFUseDesktopSpecialWatchlistPage', 'mobile-frontend',
62            $config->get( 'MFUseDesktopSpecialWatchlistPage' ) ) );
63        $manager->useHookToRegisterExtensionOrSkinFeatures();
64        return $manager;
65    },
66    'MobileFrontend.AMC.Manager' => static function ( MediaWikiServices $services ): MobileFrontend\Amc\Manager {
67        return new MobileFrontend\Amc\Manager(
68            $services->getService( 'MobileFrontend.Config' ),
69            $services->getService( 'MobileFrontend.Context' )
70        );
71    },
72    'MobileFrontend.AMC.UserMode' => static function ( MediaWikiServices $services ): MobileFrontend\Amc\UserMode {
73        return new MobileFrontend\Amc\UserMode(
74            $services->getService( 'MobileFrontend.AMC.Manager' ),
75            $services->getService( 'MobileFrontend.Context' )->getUser(),
76            $services->getUserOptionsManager()
77        );
78    },
79    'MobileFrontend.AMC.Outreach' => static function ( MediaWikiServices $services ): MobileFrontend\Amc\Outreach {
80        return new MobileFrontend\Amc\Outreach(
81            $services->getService( 'MobileFrontend.AMC.UserMode' ),
82            $services->getService( 'MobileFrontend.AMC.Manager' ),
83            $services->getService( 'MobileFrontend.Context' )->getUser(),
84            $services->getService( 'MobileFrontend.Config' )
85        );
86    },
87    'MobileFrontend.Context' => static function (): MobileContext {
88        return MobileContext::singleton();
89    }
90];