diff options
author | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2018-12-11 17:07:47 +0200 |
---|---|---|
committer | Alexander Shalamov <alexander.shalamov@mapbox.com> | 2018-12-13 19:38:50 +0200 |
commit | b6b1067caf6ba911efbb4a64a43425ce2d729a1a (patch) | |
tree | 3bdc97f4ed23e6b3abeb47c85a6b559a813059ac /platform/darwin/src/MGLFeature_Private.h | |
parent | 1d410c94fc6bd6d9f4880f22193328403302a847 (diff) | |
download | qtlocation-mapboxgl-b6b1067caf6ba911efbb4a64a43425ce2d729a1a.tar.gz |
[ios, darwin] Make MGLFeature.attributes non-nullable and add integration test
Enforce non-nullable semantics for MGLFeature.attributes, to avoid construction of invalid mbgl::Feature properties
from nil NSDictionary object and align with public SDK property definition.
Integration test "testShapeSourceWithLineDistanceMetrics" is added to verify that MGLFeature is correctly converted.
Fixes issue #13378
Diffstat (limited to 'platform/darwin/src/MGLFeature_Private.h')
-rw-r--r-- | platform/darwin/src/MGLFeature_Private.h | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/platform/darwin/src/MGLFeature_Private.h b/platform/darwin/src/MGLFeature_Private.h index d4074b53ed..9fb1f91820 100644 --- a/platform/darwin/src/MGLFeature_Private.h +++ b/platform/darwin/src/MGLFeature_Private.h @@ -31,7 +31,7 @@ MGLShape* MGLShapeFromGeoJSON(const mapbox::geojson::geojson &geojson); returns the feature object with converted `mbgl::FeatureIdentifier` and `mbgl::PropertyMap` properties. */ -mbgl::Feature mbglFeature(mbgl::Feature feature, id identifier, NSDictionary *attributes); +mbgl::Feature mbglFeature(mbgl::Feature feature, id identifier, NSDictionary * attributes); /** Returns an `NSDictionary` representation of an `MGLFeature`. @@ -45,7 +45,7 @@ NS_ASSUME_NONNULL_END if (self = [super initWithCoder:decoder]) { \ NSSet<Class> *identifierClasses = [NSSet setWithArray:@[[NSString class], [NSNumber class]]]; \ identifier = [decoder decodeObjectOfClasses:identifierClasses forKey:@"identifier"]; \ - attributes = [decoder decodeObjectOfClass:[NSDictionary class] forKey:@"attributes"]; \ + _attributes = [decoder decodeObjectOfClass:[NSDictionary class] forKey:@"attributes"]; \ } \ return self; \ } @@ -54,7 +54,7 @@ NS_ASSUME_NONNULL_END - (void)encodeWithCoder:(NSCoder *)coder { \ [super encodeWithCoder:coder]; \ [coder encodeObject:identifier forKey:@"identifier"]; \ - [coder encodeObject:attributes forKey:@"attributes"]; \ + [coder encodeObject:_attributes forKey:@"attributes"]; \ } #define MGL_DEFINE_FEATURE_IS_EQUAL() \ @@ -67,3 +67,11 @@ NS_ASSUME_NONNULL_END - (NSUInteger)hash { \ return [super hash] + [[self geoJSONDictionary] hash]; \ } + +#define MGL_DEFINE_FEATURE_ATTRIBUTES_GETTER() \ + - (NSDictionary *) attributes { \ + if (!_attributes) { \ + return @{}; \ + } \ + return _attributes; \ + } |