< Summary

Class:DCL.Providers.AssetBundleResolver
Assembly:AssetPromiseKeeper
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/AssetManager/AssetBundles/AB/Providers/AssetBundleResolver.cs
Covered lines:22
Uncovered lines:0
Coverable lines:22
Total lines:59
Line coverage:100% (22 of 22)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
AssetBundleResolver(...)0%110100%
GetAssetBundleAsync()0%13130100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/Controllers/AssetManager/AssetBundles/AB/Providers/AssetBundleResolver.cs

#LineLine coverage
 1using Cysharp.Threading.Tasks;
 2using MainScripts.DCL.Controllers.AssetManager;
 3using System;
 4using System.Collections.Generic;
 5using System.Threading;
 6using UnityEngine;
 7
 8namespace DCL.Providers
 9{
 10    public class AssetBundleResolver : AssetResolverBase, IAssetBundleResolver
 11    {
 12        private readonly IReadOnlyDictionary<AssetSource, IAssetBundleProvider> providers;
 13        private readonly IAssetBundleProvider editorProvider;
 14
 15        public AssetBundleResolver(IReadOnlyDictionary<AssetSource, IAssetBundleProvider> providers, IAssetBundleProvide
 69716            : base(featureFlags)
 17        {
 69718            this.providers = providers;
 69719            this.editorProvider = editorProvider;
 69720        }
 21
 22        public async UniTask<AssetBundle> GetAssetBundleAsync(AssetSource permittedSources, string contentUrl,
 23            string hash, CancellationToken cancellationToken = default)
 24        {
 2925            Exception lastException = null;
 26
 2927            using var permittedProvidersPool = GetPermittedProviders(this.providers, permittedSources);
 2928            var permittedProviders = permittedProvidersPool.GetList();
 29
 30#if UNITY_EDITOR
 2931            permittedProviders.Insert(0, editorProvider);
 32#endif
 33
 14734            foreach (var provider in permittedProviders)
 35            {
 36                try
 37                {
 11638                    var assetBundle = await provider.GetAssetBundleAsync(contentUrl, hash, cancellationToken);
 39
 5140                    if (assetBundle)
 41                    {
 2242                        AssetResolverLogger.LogVerbose(featureFlags, LogType.Log, $"Asset Bundle {hash} loaded from {pro
 2243                        return assetBundle;
 44                    }
 2945                }
 46
 47                // Propagate `OperationCanceledException` further as there is no reason to iterate
 748                catch (Exception e) when (e is not OperationCanceledException)
 49                {
 250                    AssetResolverLogger.LogVerbose(featureFlags, e);
 251                    lastException = e;
 252                }
 3153            }
 54
 255            lastException ??= new AssetNotFoundException(permittedSources, hash);
 256            throw lastException;
 2257        }
 58    }
 59}