@@ -7808,7 +7808,71 @@ -(void)addPluginLayerType:(Class)pluginLayerClass {
78087808- (MLNPluginProtocolHandlerResource *)resourceFromCoreResource:(const mbgl::Resource &)resource {
78097809
78107810 MLNPluginProtocolHandlerResource *tempResult = [[MLNPluginProtocolHandlerResource alloc ] init ];
7811+
7812+ // The URL of the request
78117813 tempResult.resourceURL = [NSString stringWithUTF8String: resource.url.c_str ()];
7814+
7815+ // The kind of request
7816+ switch (resource.kind ) {
7817+ case mbgl::Resource::Kind::Style:
7818+ tempResult.resourceKind = MLNPluginProtocolHandlerResourceKindStyle;
7819+ break ;
7820+ case mbgl::Resource::Kind::Source:
7821+ tempResult.resourceKind = MLNPluginProtocolHandlerResourceKindSource;
7822+ break ;
7823+ case mbgl::Resource::Kind::Tile:
7824+ tempResult.resourceKind = MLNPluginProtocolHandlerResourceKindTile;
7825+ break ;
7826+ case mbgl::Resource::Kind::Glyphs:
7827+ tempResult.resourceKind = MLNPluginProtocolHandlerResourceKindGlyphs;
7828+ break ;
7829+ case mbgl::Resource::Kind::SpriteImage:
7830+ tempResult.resourceKind = MLNPluginProtocolHandlerResourceKindSpriteImage;
7831+ break ;
7832+ case mbgl::Resource::Kind::Image:
7833+ tempResult.resourceKind = MLNPluginProtocolHandlerResourceKindImage;
7834+ break ;
7835+ case mbgl::Resource::Kind::SpriteJSON:
7836+ tempResult.resourceKind = MLNPluginProtocolHandlerResourceKindSpriteJSON;
7837+ break ;
7838+ default :
7839+ tempResult.resourceKind = MLNPluginProtocolHandlerResourceKindUnknown;
7840+ break ;
7841+ }
7842+
7843+ // The loading method
7844+ if (resource.loadingMethod == mbgl::Resource::LoadingMethod::CacheOnly) {
7845+ tempResult.loadingMethod = MLNPluginProtocolHandlerResourceLoadingMethodCacheOnly;
7846+ } else if (resource.loadingMethod == mbgl::Resource::LoadingMethod::NetworkOnly) {
7847+ tempResult.loadingMethod = MLNPluginProtocolHandlerResourceLoadingMethodNetworkOnly;
7848+ } else if (resource.loadingMethod == mbgl::Resource::LoadingMethod::All) {
7849+ tempResult.loadingMethod = MLNPluginProtocolHandlerResourceLoadingMethodAll;
7850+ }
7851+
7852+ if (resource.tileData ) {
7853+ auto td = *resource.tileData ;
7854+ MLNTileData *tileData = [[MLNTileData alloc ] init ];
7855+ tileData.tileURLTemplate = [NSString stringWithUTF8String: td.urlTemplate.c_str ()];
7856+ tileData.tilePixelRatio = td.pixelRatio ;
7857+ tileData.tileX = td.x ;
7858+ tileData.tileY = td.y ;
7859+ tileData.tileZoom = td.z ;
7860+ tempResult.tileData = tileData;
7861+ }
7862+
7863+ // TODO: Figure out which other properties from resource should be passed along here
7864+ /*
7865+ Usage usage{Usage::Online};
7866+ Priority priority{Priority::Regular};
7867+ std::optional<std::pair<uint64_t, uint64_t>> dataRange = std::nullopt;
7868+ std::optional<Timestamp> priorModified = std::nullopt;
7869+ std::optional<Timestamp> priorExpires = std::nullopt;
7870+ std::optional<std::string> priorEtag = std::nullopt;
7871+ std::shared_ptr<const std::string> priorData;
7872+ Duration minimumUpdateInterval{Duration::zero()};
7873+ StoragePolicy storagePolicy{StoragePolicy::Permanent};
7874+ */
7875+
78127876 return tempResult;
78137877
78147878}
@@ -7840,6 +7904,8 @@ - (void)addPluginProtocolHandler:(Class)pluginProtocolHandlerClass {
78407904 if (strongHandler) {
78417905
78427906 MLNPluginProtocolHandlerResource *res = [weakSelf resourceFromCoreResource: resource];
7907+
7908+ // TODO: Figure out what other fields in response need to be passed back from requestResource
78437909 MLNPluginProtocolHandlerResponse *response = [strongHandler requestResource: res];
78447910 if (response.data ) {
78457911 tempResult.data = std::make_shared<std::string>((const char *)[response.data bytes ],
0 commit comments