Commit Graph

362 Commits

Author SHA1 Message Date
Minh Nguyễn
3503c0e767 Merge branch 'release-ios-v3.4.0' into 1ec5-release-ios-v3.4.0-beta.4-master 2016-12-03 15:36:42 -08:00
Jesse Bounds
9eb7f88b2c [ios, macos] Update MGLStyle API documentation with warnings for dupes
This adds notes to the methods for adding sources and layers to warn
of the hazards of using duplicate instances or identifiers.
2016-12-02 14:21:05 -08:00
Jesse Bounds
179e9c610f [ios, macos] Consolidate tests of MGLStyle addSource in MGLStyleTests
This replaces the integration test of `addSource` when duplicate
identifiers are used in `MGLSourceTests` with a more direct unit test
in the style class's unit test file `MGLStyleTests`. Although tests of
the case where the same instance are actually integration tests where
the source instance itself throws, it is easier to test all of this
functionality in one place using the public facing MGLStyle API.
2016-12-02 14:21:05 -08:00
Jesse Bounds
1db0a96927 [ios, macos] Raise NSException if layer or source added more than once
When MGLSource and MGLLayer instances are added to the style, they lose
ownership of their std::unique_ptr<T> after it is moved to the mbgl
level. Subsequent attempts to add such instances result in a C++
exception.

This adds logic in the Darwin platform to raise a NSException if the
source and layer addToMapView methods are called more than once and the
pointer is invalid. In addition, the documentation in MGLStyle for
addSource: and addLayer: has been update to warn developers to avoid
adding the same instance twice and, for that matter, instances with the
same identifier.
2016-12-02 14:21:05 -08:00
Jesse Bounds
2db31be8bc [ios, macos] Rename MGLMapViewTests back to MGLStyleLayerTests 2016-12-02 13:03:05 -08:00
Ivo van Dongen
37026a14ff [ios, macos] handle duplicate source error 2016-12-02 11:39:16 -08:00
Ivo van Dongen
d44d1c8401 [ios, macos] renamed MGLStyleLayerTests to MGLMapViewTests 2016-12-02 11:28:34 -08:00
Jesse Bounds
b2c2d4ebc4 [ios, macos] Update style predicate documentation
Note the support of CONTAINS and the lack of support for case and
diacritic operator modifiers.
2016-12-01 08:57:41 -08:00
Jesse Bounds
7e9457214a [ios, macos] Add back support for CONTAINS operator
This reverts commit 6877e3efe7.
2016-12-01 08:57:41 -08:00
Jesse Bounds
37a087c675 [ios, macos] Avoid unsafe cast when removing style layers (#7227)
This updates the code generation for style layers to add a test to check
that the style object returned from mbgl can be safely cast into the
expected type so ownership can be returned to the caller when removing
layers.

This scenario was previously possible if a layer of type T was
added before a layer of type U but both layers shared the same
identifier. In that case, if the pointer to the second layer of type U
was used to remove a layer, a runtime exception would occur since mbgl
returns the layer with type T (the first one added).

Now, an exception will still occur if layers with the same
identifier are manipulated as described above but it is done as part of
a validation check for all public style layer methods at the Darwin
platform level. The NSException attempts to warn developers about using
and reusing style identifiers to avoid this issue in the first place.
2016-11-30 11:59:29 -08:00
Ivo van Dongen
d8cef78502 [ios, macos] handle duplicate source error 2016-11-30 19:35:29 +02:00
Ivo van Dongen
379bf08723 [ios, macos] renamed MGLStyleLayerTests to MGLMapViewTests 2016-11-30 19:35:29 +02:00
Jesse Bounds
ba775404d8 [ios, macos] Add notes to APIs that rely on style and source ids (#6886)
Update documentation to make the implications of identifiers clearer.
2016-11-30 09:26:21 -08:00
Fredrik Karlsson
17db5210bf [ios, macos] rename style spec properties 2016-11-30 11:36:39 +01:00
Minh Nguyễn
4096544188 [ios, macos] Marked C array parameters as const
Fixes #7214.
2016-11-29 22:47:30 -08:00
Minh Nguyễn
336d48df48 [ios, macos] Fixed spurious offline storage test failure
Even if the expectation is immediately fulfilled, we still have to wait for it to be fulfilled, because the expectation only gets unregistered after waiting. The zombie expectation was fulfilling a stricter expectation in a test method.
2016-11-29 13:36:55 -08:00
Minh Nguyễn
9fac640bf3 [ios, macos] Key-value compliance for MGLStyle
Replaced -[MGLMapView style] with a property. Keep the MGLStyle object around for the lifetime of the style.

Bracket changes to layers in willChange and didChange calls. The built-in point annotation layer is added after the style is finished loading but before the map is finished loading. Cause a second wave of change notifications to go out, about both sources and layers. Issue change notifications for style layers when shape annotations are added or removed.
2016-11-28 15:45:43 -08:00
Minh Nguyễn
850b70ff91 [core, ios, macos] Added layers and sources properties to MGLStyle
Added new layers and sources properties to MGLStyle that contain all the style’s layers and sources, respectively. These properties are KVC-compliant with all the mutable to-many methods. Layers are ordered from topmost to bottommost, for consistency with Cocoa APIs where front/first means top and back/last means bottom.

Also added storage for mbgl::style::Source in MGLSource proper for wrapping AnnotationSource. Until the style finishes loading, its name property is set to nil.

Fixes #6003.
2016-11-28 15:45:37 -08:00
Konstantin Käfer
4fe071b518 [build] upgrade to variant 1.1.4 and dependencies 2016-11-28 18:02:00 +01:00
Minh Nguyễn
f71dd14bb7 [ios, macos] Reorganized MGLStyle 2016-11-23 16:02:18 -08:00
Minh Nguyễn
767044420d [ios, macos] Added debug descriptions for runtime styling classes 2016-11-23 16:02:17 -08:00
Jesse Bounds
67e079f726 [ios, macos] Fix integer formatting in formatted exception strings (#7173) 2016-11-23 12:21:52 -08:00
Jesse Bounds
75666e5b53 [ios, macos] Use namespaced property names in style NSValue category (#7171) 2016-11-23 08:20:47 -08:00
Jesse Bounds
d6d16c189a [ios, macos] Remove unused MGLGeometryAdditions category stub
This fixes an issue where the documentation for all NSValue categories
were described as `MGLGeometryAdditions`.
2016-11-22 19:53:54 -08:00
Jesse Bounds
13e0f9e527 [ios, macos] Refactor runtime styling enumeration properties
Correctly map SDK runtime styling enumerations to mbgl
equivalents. Also, add category methods to NSValue so enums
can be wrapped up with less of the details of how they
are layed out in memory in Objective-C.
2016-11-22 19:53:54 -08:00
Konstantin Käfer
4577c56745 [core] remove unused umbrella header in favor of individual includes 2016-11-22 20:58:51 +01:00
Konstantin Käfer
e76de05402 [build] move logging to util 2016-11-22 20:58:51 +01:00
Konstantin Käfer
117863f111 [build] move headless rendering files to platform/default 2016-11-22 20:58:51 +01:00
Konstantin Käfer
9353fcbf4c [build] move default_styles to platform/default 2016-11-22 20:58:51 +01:00
Konstantin Käfer
a71868fc8d [build] move Reachability to platform/darwin 2016-11-22 20:58:51 +01:00
Fredrik Karlsson
b4aba87892 [ios, macos] override style spec documentation 2016-11-16 11:50:36 +01:00
Jesse Bounds
068a89c2f8 [ios, macos] Use NSNumber in exception strings (#7083) 2016-11-15 13:39:09 -08:00
Justin R. Miller
9d5edb41ad [ios, macos] refs #7060: properly check removed layers & sources (#7062) 2016-11-15 11:37:35 -08:00
Justin R. Miller
eefda0d381 [ios, macos] fixes #7059: raise exception for abstract sources on add (#7060) 2016-11-15 11:36:04 -08:00
Justin R. Miller
c78c97f346 [ios, macos] refs #7060: properly check removed layers & sources (#7062) 2016-11-15 10:05:35 -08:00
Justin R. Miller
f7db6cf760 [ios, macos] fixes #7059: raise exception for abstract sources on add (#7060) 2016-11-14 16:02:16 -08:00
Jesse Bounds
1c9d314236 [ios, macos] Take back source and layer ownership on removal (#7048)
If a source or layer is removed from the style, recapture the
unique pointer ownership. This makes it safe to add back sources
and layers after they have been removed.
2016-11-14 15:50:33 -08:00
Jesse Bounds
44e398865e [ios, macos] Use std::vector for MGLMultiPoint coordinate storage (#6890)
Refactor the previous C array based implementation to use C++ std::vector. This is done to avoid potential safety and security issues with the previous approach.
2016-11-14 09:34:22 -08:00
Konstantin Käfer
2411ec83b1 [build] don't rewrite style code for every build
revert of 93166aef48

On Android, we always rewrote the style code files, which lead to gratuitous recompiles
2016-11-09 11:10:22 +01:00
Jesse Bounds
5e65d8109a [ios, macos] Use the rawLayer pointer to access the mbgl layer (#6966)
A previous refactor neglected to remove the unused `layer` property.
This removes that property and uses the rawLayer property that actually
points to the mbgl layer.
2016-11-08 13:32:58 -08:00
Bruno de Oliveira Abinader
d0ac12309b [core] Refactor HeadlessBackend 2016-11-08 18:02:38 +02:00
Bruno de Oliveira Abinader
297c303e88 [core] Refactor HeadlessDisplay 2016-11-08 18:02:38 +02:00
Fredrik Karlsson
5a828cb80f [ios, macos] override style spec documentation 2016-11-08 13:47:09 +01:00
fabian-guerra
373904e822 [ios, macos] Layer ownership refactor (#6904)
`MGLStyleLayer` was updated to support a raw pointer to the mbgl object, which is always initialized, either to the  value returned by `mbgl::Map getLayer`, or for independently created objects,  to the pointer value held in `pendingLayer`. In the latter case, this raw  pointer value stays even after ownership of the object is transferred via  `mbgl::Map addLayer`.
2016-11-04 15:20:01 -07:00
Minh Nguyễn
4e8121aaf1 [ios, macos] Fixed Xcode 7.x compilation
Define NSErrorDomain before its first use. Define NSNotificationName as a typedef instead of a #define. Guard these shims on the existence of NS_STRING_ENUM rather than another macro that’s new to Xcode 8.

Fixes #6906.
2016-11-04 14:02:10 -07:00
Minh Nguyễn
4f40fceb72 Merge branch 'release-ios-v3.4.0' into 1ec5-release-ios-v3.4.0-beta.2-master 2016-11-03 13:16:27 -07:00
Minh Nguyễn
7c68d7773d [macos] Enabled runtime styling tests
Added the style layer tests to the test bundle target.

Set the access token to a bogus access token before running any tests. The macOS implementation of MGLMapView doesn’t even attempt to set a default style if the access token is missing, because in macosapp, the access token may be set asynchronously by the user when the preferences window appears.
2016-11-02 21:12:45 -07:00
Minh Nguyễn
f98a544886 [ios, macos] Share more tests
Moved MGLGeoJSONSourceTests and MGLTileSetTests into platform/darwin/test/ and added them to the macOS project. Also added a private header needed to compile the tests to the macOS project.
2016-11-02 21:12:45 -07:00
Minh Nguyễn
e2797d1f24 [ios, macos] Rationalized string enum names
Renamed MGLGeoJSONSourceOption and MGLOfflinePackUserInfoKey constants for clarity and to remove redundancy in the Swift-bridged names. Left the old MGLOfflinePackUserInfoKey constants in place as deprecated aliases.
2016-11-02 12:40:40 -07:00
Minh Nguyễn
c2e37f062b [ios, macos] Adopted string enumerations
Notification names and user info keys posted by MGLOfflineStorage, as well as MGLErrorDomain, are instances of string enumerations for ease of use in Swift. Added some shims for projects built with Xcode 7.x.

Fixes #6791.
2016-11-02 12:40:40 -07:00