| 50 | class AssetBytesStore; |
| 51 | |
| 52 | class AssetsManager : public SharedPtrRefCountable, public AssetLoaderRequestHandlerListener { |
| 53 | public: |
| 54 | AssetsManager(const Shared<IResourceLoader>& resourceLoader, |
| 55 | const Ref<RemoteModuleManager>& remoteModuleManager, |
| 56 | const Ref<AssetLoaderManager>& assetLoaderManager, |
| 57 | const Ref<DispatchQueue>& workerQueue, |
| 58 | MainThreadManager& mainThreadManager, |
| 59 | ILogger& logger); |
| 60 | ~AssetsManager() override; |
| 61 | |
| 62 | Ref<Asset> getAsset(const AssetKey& assetKey); |
| 63 | Ref<Asset> createAssetWithBytes(const BytesView& bytes); |
| 64 | bool isAssetAlive(const AssetKey& assetKey) const; |
| 65 | |
| 66 | std::optional<AssetLocation> getResolvedAssetLocation(const AssetKey& assetKey); |
| 67 | |
| 68 | void setResolvedAssetLocation(const AssetKey& assetKey, const AssetLocation& assetLocation); |
| 69 | |
| 70 | void onAssetCatalogChanged(const Ref<Bundle>& bundle); |
| 71 | |
| 72 | void addAssetLoadObserver(const AssetKey& assetKey, |
| 73 | const std::shared_ptr<snap::valdi_core::AssetLoadObserver>& observer, |
| 74 | const Ref<Context>& context, |
| 75 | snap::valdi_core::AssetOutputType outputType, |
| 76 | int32_t preferredWidth, |
| 77 | int32_t preferredHeight, |
| 78 | const Value& attachedData); |
| 79 | |
| 80 | void removeAssetLoadObserver(const AssetKey& assetKey, |
| 81 | const std::shared_ptr<snap::valdi_core::AssetLoadObserver>& observer); |
| 82 | |
| 83 | void updateAssetLoadObserverPreferredSize(const AssetKey& assetKey, |
| 84 | const std::shared_ptr<snap::valdi_core::AssetLoadObserver>& observer, |
| 85 | int32_t preferredWidth, |
| 86 | int32_t preferredHeight); |
| 87 | |
| 88 | static bool isAssetUrl(const StringBox& str); |
| 89 | |
| 90 | void onLoad(const Ref<AssetLoaderRequestHandler>& request, const Result<Ref<LoadedAsset>>& result) override; |
| 91 | |
| 92 | void setShouldRemoveUnusedLocalAssets(bool removeUnusedLocalAssets); |
| 93 | |
| 94 | void setListener(AssetsManagerListener* listener); |
| 95 | |
| 96 | void beginPauseUpdates(); |
| 97 | void endPauseUpdates(); |
| 98 | |
| 99 | void flushUpdates(); |
| 100 | |
| 101 | // Reset every asset currently in AssetStateFailedRetryable back to AssetStateInitial and |
| 102 | // re-resolve it. A statically-mounted asset (e.g. a button icon) that failed a remote load |
| 103 | // otherwise stays failed for the whole session because only a new consumer clears the state; |
| 104 | // this gives an external trigger (app returning to foreground) a way to recover such assets. |
| 105 | void retryFailedAssets(); |
| 106 | |
| 107 | private: |
| 108 | Shared<IResourceLoader> _resourceLoader; |
| 109 | Ref<RemoteModuleManager> _remoteModuleManager; |
nothing calls this directly
no outgoing calls
no test coverage detected