< Summary

Class:DCL.ServiceLocatorFactory
Assembly:ServiceLocatorFactory
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Environment/Factories/ServiceLocatorFactory/ServiceLocatorFactory.cs
Covered lines:75
Uncovered lines:0
Coverable lines:75
Total lines:233
Line coverage:100% (75 of 75)
Covered branches:0
Total branches:0
Covered methods:1
Total methods:1
Method coverage:100% (1 of 1)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
CreateDefault()0%35350100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Environment/Factories/ServiceLocatorFactory/ServiceLocatorFactory.cs

#LineLine coverage
 1using AvatarSystem;
 2using DCL.Chat;
 3using DCL.Chat.Channels;
 4using DCL.Controllers;
 5using DCL.Emotes;
 6using DCL.Helpers;
 7using DCL.ProfanityFiltering;
 8using DCL.Providers;
 9using DCL.Rendering;
 10using DCL.Services;
 11using DCL.Social.Chat;
 12using DCl.Social.Friends;
 13using DCL.Social.Friends;
 14using DCL.World.PortableExperiences;
 15using DCLServices.CameraReelService;
 16using DCLServices.CopyPaste.Analytics;
 17using DCLServices.CustomNftCollection;
 18using DCLServices.DCLFileBrowser;
 19using DCLServices.DCLFileBrowser.DCLFileBrowserFactory;
 20using DCLServices.EmotesCatalog;
 21using DCLServices.EmotesCatalog.EmotesCatalogService;
 22using DCLServices.EnvironmentProvider;
 23using DCLServices.Lambdas;
 24using DCLServices.Lambdas.LandsService;
 25using DCLServices.Lambdas.NamesService;
 26using DCLServices.MapRendererV2;
 27using DCLServices.MapRendererV2.ComponentsFactory;
 28using DCLServices.PlacesAPIService;
 29using DCLServices.PortableExperiences.Analytics;
 30using DCLServices.ScreencaptureCamera.Service;
 31using DCLServices.SubscriptionsAPIService;
 32using DCLServices.WearablesCatalogService;
 33using DCLServices.WorldsAPIService;
 34using MainScripts.DCL.Controllers.AssetManager;
 35using MainScripts.DCL.Controllers.FriendsController;
 36using MainScripts.DCL.Controllers.HotScenes;
 37using MainScripts.DCL.Controllers.HUD.CharacterPreview;
 38using MainScripts.DCL.WorldRuntime.Debugging.Performance;
 39using System.Collections.Generic;
 40using WorldsFeaturesAnalytics;
 41
 42namespace DCL
 43{
 44    public static class ServiceLocatorFactory
 45    {
 46        private static BaseVariable<FeatureFlag> featureFlagsDataStore;
 47
 48        public static ServiceLocator CreateDefault()
 49        {
 42550            var result = new ServiceLocator();
 42551            IRPC irpc = new RPC();
 52
 42553            featureFlagsDataStore = DataStore.i.featureFlags.flags;
 54
 42555            var userProfileWebInterfaceBridge = new UserProfileWebInterfaceBridge();
 56
 57            // Addressable Resource Provider
 42558            var addressableResourceProvider = new AddressableResourceProvider();
 85059            result.Register<IAddressableResourceProvider>(() => addressableResourceProvider);
 60
 61            // Platform
 85062            result.Register<IProfilerRecordsService>(() => new ProfilerRecordsService());
 46563            result.Register<IMemoryManager>(() => new MemoryManager());
 42564            result.Register<ICullingController>(CullingController.Create);
 54065            result.Register<IParcelScenesCleaner>(() => new ParcelScenesCleaner());
 42566            result.Register<IClipboard>(Clipboard.Create);
 85067            result.Register<IPhysicsSyncController>(() => new PhysicsSyncController());
 85068            result.Register<IRPC>(() => irpc);
 42569            UnityEnvironmentProviderService environmentProviderService = new UnityEnvironmentProviderService(KernelConfi
 85070            result.Register<IEnvironmentProviderService>(() => environmentProviderService);
 71
 42572            var webRequestController = new WebRequestController(
 73                new GetWebRequestFactory(),
 74                new WebRequestAssetBundleFactory(),
 75                new WebRequestTextureFactory(),
 76                new WebRequestAudioFactory(),
 77                new PostWebRequestFactory(),
 78                new PutWebRequestFactory(),
 79                new PatchWebRequestFactory(),
 80                new DeleteWebRequestFactory(),
 81                new RPCSignRequest(irpc)
 82            );
 83
 84884            result.Register<IWebRequestController>(() => webRequestController);
 85
 54086            result.Register<IServiceProviders>(() => new ServiceProviders(KernelConfig.i));
 85087            result.Register<ILambdasService>(() => new LambdasService());
 85088            result.Register<INamesService>(() => new NamesService());
 85089            result.Register<ILandsService>(() => new LandsService());
 85090            result.Register<IUpdateEventHandler>(() => new UpdateEventHandler());
 91
 92            // World runtime
 85093            result.Register<IIdleChecker>(() => new IdleChecker());
 85094            result.Register<IAvatarsLODController>(() => new AvatarsLODController());
 85095            result.Register<IFeatureFlagController>(() => new FeatureFlagController());
 85096            result.Register<IGPUSkinningThrottlerService>(() => GPUSkinningThrottlerService.Create(true));
 85097            result.Register<ISceneController>(() => new SceneController(new PlayerPrefsConfirmedExperiencesRepository(ne
 85098            result.Register<IWorldState>(() => new WorldState());
 85099            result.Register<ISceneBoundsChecker>(() => new SceneBoundsChecker());
 850100            result.Register<IWorldBlockersController>(() => new WorldBlockersController());
 850101            result.Register<IRuntimeComponentFactory>(() => new RuntimeComponentFactory());
 850102            result.Register<IAvatarFactory>(() => new AvatarFactory(result));
 850103            result.Register<ICharacterPreviewFactory>(() => new CharacterPreviewFactory());
 850104            result.Register<IChatController>(() => new ChatController(WebInterfaceChatBridge.GetOrCreate(), DataStore.i)
 105
 425106            result.Register<ISocialApiBridge>(() =>
 107            {
 423108                var rpcSocialApiBridge = new RPCSocialApiBridge(MatrixInitializationBridge.GetOrCreate(),
 109                    userProfileWebInterfaceBridge,
 110                    new RPCSocialClientProvider(KernelConfig.i));
 111
 423112                return new ProxySocialApiBridge(rpcSocialApiBridge, DataStore.i);
 113            });
 114
 425115            result.Register<IFriendsController>(() =>
 116            {
 117                // TODO: remove when the all the friendship responsibilities are migrated to unity
 423118                WebInterfaceFriendsApiBridge webInterfaceFriendsApiBridge = WebInterfaceFriendsApiBridge.GetOrCreate();
 119
 423120                return new FriendsController(
 121                    RPCFriendsApiBridge.CreateSharedInstance(irpc, webInterfaceFriendsApiBridge),
 122                    result.Get<ISocialApiBridge>(),
 123                    DataStore.i, userProfileWebInterfaceBridge);
 124            });
 125
 850126            result.Register<IMessagingControllersManager>(() => new MessagingControllersManager());
 127
 425128            result.Register<IEmotesCatalogService>(() =>
 129            {
 40130                var emotesRequest = new EmotesBatchRequest(
 131                    result.Get<ILambdasService>(),
 132                    result.Get<IServiceProviders>(),
 133                    featureFlagsDataStore);
 134
 40135                var lambdasEmotesCatalogService = new LambdasEmotesCatalogService(emotesRequest, addressableResourceProv
 136                    result.Get<IServiceProviders>().catalyst, result.Get<ILambdasService>(), DataStore.i, KernelConfig.i
 40137                var webInterfaceEmotesCatalogService = new WebInterfaceEmotesCatalogService(EmotesCatalogBridge.GetOrCre
 40138                return new EmotesCatalogServiceProxy(lambdasEmotesCatalogService, webInterfaceEmotesCatalogService, feat
 139            });
 140
 850141            result.Register<ITeleportController>(() => new TeleportController());
 142
 850143            result.Register<IApplicationFocusService>(() => new ApplicationFocusService());
 144
 425145            result.Register<IBillboardsController>(BillboardsController.Create);
 146
 540147            result.Register<IWearablesCatalogService>(() => new WearablesCatalogServiceProxy(
 148                new LambdasWearablesCatalogService(DataStore.i.common.wearables,
 149                    result.Get<ILambdasService>(),
 150                    result.Get<IServiceProviders>(),
 151                    featureFlagsDataStore,
 152                    DataStore.i,
 153                    KernelConfig.i),
 154                WebInterfaceWearablesCatalogService.Instance,
 155                DataStore.i.common.wearables,
 156                KernelConfig.i,
 157                new WearablesWebInterfaceBridge(),
 158                featureFlagsDataStore));
 159
 425160            result.Register<ICustomNftCollectionService>(WebInterfaceCustomNftCatalogBridge.GetOrCreate);
 161
 850162            result.Register<IEmotesService>(() => new EmotesService(new EmoteAnimationLoaderFactory(addressableResourceP
 163                result.Get<IEmotesCatalogService>(),
 164                result.Get<IWearablesCatalogService>(),
 165                result.Get<IServiceProviders>().catalyst));
 166
 540167            result.Register<IProfanityFilter>(() => new ThrottledRegexProfanityFilter(
 168                new ProfanityWordProviderFromResourcesJson("Profanity/badwords"), 20));
 169
 170            // Asset Providers
 850171            result.Register<ITextureAssetResolver>(() => new TextureAssetResolver(new Dictionary<AssetSource, ITextureAs
 172            {
 173                {
 174                    AssetSource.EMBEDDED, new EmbeddedTextureProvider()
 175                },
 176
 177                {
 178                    AssetSource.WEB, new AssetTextureWebLoader()
 179                },
 180            }, DataStore.i.featureFlags));
 181
 850182            result.Register<IAssetBundleResolver>(() => new AssetBundleResolver(new Dictionary<AssetSource, IAssetBundle
 183            {
 184                {
 185                    AssetSource.WEB, new AssetBundleWebLoader(DataStore.i.featureFlags, DataStore.i.performance)
 186                },
 187            }, new EditorAssetBundleProvider(), DataStore.i.featureFlags));
 188
 850189            result.Register<IFontAssetResolver>(() => new FontAssetResolver(new Dictionary<AssetSource, IFontAssetProvid
 190            {
 191                {
 192                    AssetSource.EMBEDDED, new EmbeddedFontProvider()
 193                },
 194
 195                {
 196                    AssetSource.ADDRESSABLE, new AddressableFontProvider(addressableResourceProvider)
 197                },
 198            }, DataStore.i.featureFlags));
 199
 200            // Map
 850201            result.Register<IHotScenesFetcher>(() => new HotScenesFetcher(60f, 60f * 5f));
 522202            result.Register<IMapRenderer>(() => new MapRenderer(new MapRendererChunkComponentsFactory()));
 203
 204            // HUD
 850205            result.Register<IHUDFactory>(() => new HUDFactory(addressableResourceProvider));
 850206            result.Register<IHUDController>(() => new HUDController(DataStore.i));
 207
 425208            result.Register<IChannelsFeatureFlagService>(() =>
 425209                new ChannelsFeatureFlagService(DataStore.i, userProfileWebInterfaceBridge));
 210
 850211            result.Register<IAudioDevicesService>(() => new WebBrowserAudioDevicesService(WebBrowserAudioDevicesBridge.G
 212
 850213            result.Register<IPlacesAPIService>(() => new PlacesAPIService(new PlacesAPIClient(webRequestController)));
 850214            result.Register<IWorldsAPIService>(() => new WorldsAPIService(new WorldsAPIClient(webRequestController)));
 850215            result.Register<ICameraReelStorageService>(() => new CameraReelNetworkStorageService(new CameraReelWebReques
 850216            result.Register<ISubscriptionsAPIService>(() => new SubscriptionsAPIService(new SubscriptionsAPIClient(webRe
 217
 425218            var screencaptureCameraExternalDependencies = new ScreencaptureCameraExternalDependencies(CommonScriptableOb
 219                CommonScriptableObjects.cameraModeInputLocked, DataStore.i.camera.leftMouseButtonCursorLock, CommonScrip
 220                CommonScriptableObjects.featureKeyTriggersBlocked, CommonScriptableObjects.userMovementKeysBlocked, Comm
 221
 850222            result.Register<IScreencaptureCameraService>(() => new ScreencaptureCameraService(addressableResourceProvide
 223
 224            // Analytics
 850225            result.Register<ICameraReelAnalyticsService>(() => new CameraReelAnalyticsService(Environment.i.platform.ser
 850226            result.Register<IWorldsAnalytics>(() => new WorldsAnalytics(DataStore.i.common, DataStore.i.realm, Environme
 425227            result.Register<IDCLFileBrowserService>(DCLFileBrowserFactory.GetFileBrowserService);
 850228            result.Register<ICopyPasteAnalyticsService>(() => new CopyPasteAnalyticsService(Environment.i.platform.servi
 850229            result.Register<IPortableExperiencesAnalyticsService>(() => new PortableExperiencesAnalyticsService(Environm
 425230            return result;
 231        }
 232    }
 233}

Methods/Properties

CreateDefault()