diff --git a/.circleci/config.yml b/.circleci/config.yml index 5661e7b7e45..c8fe50468dd 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -36,17 +36,26 @@ step-library: paths: - "~/.cocoapods/repos/master" - - &prepare + - &prepare-mapbox-file run: - name: Prepare + name: Prepare .mapbox file command: | echo "foo" > ~/.mapbox - brew unlink carthage - brew install carthage --HEAD + + - &prepare-netrc-file + run: + name: Prepare .netrc file + command: | echo "machine dl.bintray.com" > ~/.netrc echo "login $BINTRAY_LOGIN" >> ~/.netrc echo "password $BINTRAY_API_KEY" >> ~/.netrc + - &update-carthage-version + run: + name: Update Carthage version + command: | + brew update && brew upgrade carthage + - &verify-missing-localizable-strings run: name: Verify missing localizable strings @@ -57,7 +66,9 @@ step-library: - &install-dependencies run: name: Install Dependencies - command: carthage bootstrap --platform ios --cache-builds --configuration Debug --no-use-binaries --use-netrc + command: | + carthage bootstrap --platform ios --cache-builds --configuration Debug --no-use-binaries --use-netrc + carthage outdated --xcode-warnings # prints warnings if there are outdated carthage dependencies - &build-Example run: @@ -86,6 +97,9 @@ jobs: HOMEBREW_NO_AUTO_UPDATE: 1 steps: - checkout + - *prepare-mapbox-file + - *prepare-netrc-file + - *update-carthage-version - *restore-cache-podmaster - *restore-cache-cocoapods - when: @@ -131,7 +145,9 @@ jobs: HOMEBREW_NO_AUTO_UPDATE: 1 steps: - checkout - - *prepare + - *prepare-mapbox-file + - *prepare-netrc-file + - *update-carthage-version - *restore-cache - when: condition: << parameters.delete_private_deps >> @@ -168,7 +184,9 @@ jobs: HOMEBREW_NO_AUTO_UPDATE: 1 steps: - checkout - - *prepare + - *prepare-mapbox-file + - *prepare-netrc-file + - *update-carthage-version - *restore-cache - *install-dependencies - *build-Example diff --git a/CHANGELOG.md b/CHANGELOG.md index 726c27b0bba..583c85a761d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,25 +2,35 @@ ## master -### MAU Billing +### Packaging * Enabled MAU billing by default, so that SDKs usage of Mapbox APIs is [billed](https://www.mapbox.com/pricing/) together based on [monthly active users](https://docs.mapbox.com/help/glossary/monthly-active-users/) rather than individually by HTTP request. If you prefer to still use request-based billing, set the `MBXNavigationBillingMethod` key in Info.plist to `request` ([#2405](https://github.com/mapbox/mapbox-navigation-ios/pull/2405). +* Added a Greek localization. ([#2385](https://github.com/mapbox/mapbox-navigation-ios/pull/2385)) + +### User location + +* Fixed issues where the user puck would sometimes drift away from the route line even though the user was following the route. ([#2404](https://github.com/mapbox/mapbox-navigation-ios/pull/2404)) +* Fixed an issue where `RouteController` took longer than usual to detect that the user had gone off-route. ([#2404](https://github.com/mapbox/mapbox-navigation-ios/pull/2404)) +* Fixed an issue where `RouteController` would detect that the user had gone off-route due to a single errant location update. ([#2404](https://github.com/mapbox/mapbox-navigation-ios/pull/2404)) ### Offline navigation * Fixed a crash that occurred after setting `RouteOptions.shapeFormat` to `RouteShapeFormat.geoJSON`. ([valhalla/valhalla#1867](https://github.com/valhalla/valhalla/pull/1867)) +* Fixed an issue where some routes had unreasonably long expected travel times. ([valhalla/valhalla#2102](https://github.com/valhalla/valhalla/pull/2102)) +* Fixed incorrect routing at some intersections of divided roads where there are turn restrictions. ([valhalla/valhalla#2109](https://github.com/valhalla/valhalla/pull/2109)) * Fixed issues where routes would sometimes require divebombing. ([valhalla/valhalla#1931](https://github.com/valhalla/valhalla/pull/1931)) * Fixed an issue where the route would sometimes contain duplicate waypoints. ([valhalla/valhalla#1880](https://github.com/valhalla/valhalla/pull/1880)) +* Fixed an issue where an exception to a road closure on a public holiday was being ignored. ([valhalla/valhalla#2198](https://github.com/valhalla/valhalla/pull/2198)) +* By default, calculated routes follow alleys less often. ([valhalla/valhalla#2231](https://github.com/valhalla/valhalla/pull/2231)) * Turn lane indications are now shown below the turn banner as when navigating online. ([valhalla/valhalla#1830](https://github.com/valhalla/valhalla/pull/1830), [valhalla/valhalla#1859](https://github.com/valhalla/valhalla/pull/1859)) +* Fixed an issue where the `RouteStep.expectedTravelTime` properties of each step did not add up to the `RouteLeg.expectedTravelTime` property. ([valhalla/valhalla#2195](https://github.com/valhalla/valhalla/pull/2195)) +* Fixed an issue where a forward- or backward-only speed limit was not considered when calculating some expected travel times. ([valhalla/valhalla#2198](https://github.com/valhalla/valhalla/pull/2198)) * Suppressed extraneous fork instructions. ([valhalla/valhalla#1886](https://github.com/valhalla/valhalla/pull/1886), [valhalla/valhalla#1909](https://github.com/valhalla/valhalla/pull/1909), [valhalla/valhalla#1928](https://github.com/valhalla/valhalla/pull/1928)) * Merge instructions now indicate whether to merge to the left or the right, as when navigating online. ([valhalla/valhalla#1892](https://github.com/valhalla/valhalla/pull/1892), [valhalla/valhalla#1989](https://github.com/valhalla/valhalla/pull/1989)) +* Fixed ungrammatical spoken instructions at sharp turns in English. ([valhalla/valhalla#2226](https://github.com/valhalla/valhalla/pull/2226)) * Fixed an issue where spoken and visual instructions sometimes omitted the cardinal direction after a route number in the United States. ([valhalla/valhalla#1917](https://github.com/valhalla/valhalla/pull/1917)) * A spoken instruction about an exit ramp no longer specifies the side of the road if the ramp branches off the slow lane (on the right side in regions that drive on the right). ([valhalla/valhalla#1990](https://github.com/valhalla/valhalla/pull/1990)) -### Other changes - -* Added a Greek localization. ([#2385](https://github.com/mapbox/mapbox-navigation-ios/pull/2385)) - ## v0.40.0 ### Packaging diff --git a/Cartfile b/Cartfile index f3a32c4d8e8..9c8d5c5585a 100644 --- a/Cartfile +++ b/Cartfile @@ -1,6 +1,6 @@ binary "https://www.mapbox.com/ios-sdk/MapboxAccounts.json" ~> 2.3 binary "https://mapbox-gl-native-ios.s3.amazonaws.com/public/internal/Mapbox-iOS-SDK.json" == 5.9.1000 -binary "https://www.mapbox.com/ios-sdk/MapboxNavigationNative.json" == 9.0.4 +binary "https://www.mapbox.com/ios-sdk/MapboxNavigationNative.json" ~> 9.2.1 github "mapbox/mapbox-directions-swift" ~> 0.32 github "mapbox/turf-swift" ~> 0.5 github "mapbox/mapbox-events-ios" ~> 0.10 diff --git a/Cartfile.resolved b/Cartfile.resolved index ed38b4c4cce..e8a417afb5d 100644 --- a/Cartfile.resolved +++ b/Cartfile.resolved @@ -1,6 +1,6 @@ binary "https://mapbox-gl-native-ios.s3.amazonaws.com/public/internal/Mapbox-iOS-SDK.json" "5.9.1000" binary "https://www.mapbox.com/ios-sdk/MapboxAccounts.json" "2.3.0" -binary "https://www.mapbox.com/ios-sdk/MapboxNavigationNative.json" "9.0.4" +binary "https://www.mapbox.com/ios-sdk/MapboxNavigationNative.json" "9.2.1" github "CedarBDD/Cedar" "v1.0" github "Quick/Nimble" "v8.1.1" github "Quick/Quick" "v2.2.1" diff --git a/MapboxCoreNavigation.podspec b/MapboxCoreNavigation.podspec index f890ca8bb2f..5b785054cd1 100644 --- a/MapboxCoreNavigation.podspec +++ b/MapboxCoreNavigation.podspec @@ -40,7 +40,7 @@ Pod::Spec.new do |s| s.requires_arc = true s.module_name = "MapboxCoreNavigation" - s.dependency "MapboxNavigationNative", "= 9.0.4" + s.dependency "MapboxNavigationNative", "~> 9.2.1" s.dependency "MapboxAccounts", "~> 2.3.0" s.dependency "MapboxDirections", "~> 0.32.0" s.dependency "MapboxMobileEvents", "~> 0.10.2" # Always pin to a patch release if pre-1.0 diff --git a/MapboxCoreNavigation/MBNavigator.swift b/MapboxCoreNavigation/FixLocation.swift similarity index 52% rename from MapboxCoreNavigation/MBNavigator.swift rename to MapboxCoreNavigation/FixLocation.swift index e59ffbe7a50..ab0364c7a72 100644 --- a/MapboxCoreNavigation/MBNavigator.swift +++ b/MapboxCoreNavigation/FixLocation.swift @@ -1,6 +1,6 @@ +import CoreLocation import Foundation import MapboxNavigationNative -import CoreLocation extension FixLocation { convenience init(_ location: CLLocation) { @@ -13,25 +13,3 @@ extension FixLocation { provider: nil) } } - -/// :nodoc: -extension MBRouteState: CustomStringConvertible { - public var description: String { - switch self { - case .invalid: - return "invalid" - case .initialized: - return "initialized" - case .tracking: - return "tracking" - case .complete: - return "complete" - case .offRoute: - return "offRoute" - case .stale: - return "stale" - @unknown default: - fatalError("Indescribable route state \(rawValue)") - } - } -} diff --git a/MapboxCoreNavigation/RouteState.swift b/MapboxCoreNavigation/RouteState.swift new file mode 100644 index 00000000000..3a8399ab22d --- /dev/null +++ b/MapboxCoreNavigation/RouteState.swift @@ -0,0 +1,24 @@ +import Foundation +import MapboxNavigationNative + +/// :nodoc: +extension RouteState: CustomStringConvertible { + public var description: String { + switch self { + case .invalid: + return "invalid" + case .initialized: + return "initialized" + case .tracking: + return "tracking" + case .complete: + return "complete" + case .offRoute: + return "offRoute" + case .stale: + return "stale" + case .uncertain: + return "uncertain" + } + } +} diff --git a/MapboxCoreNavigationTests/CocoaPodsTest/PodInstall/PodInstall.xcodeproj/project.pbxproj b/MapboxCoreNavigationTests/CocoaPodsTest/PodInstall/PodInstall.xcodeproj/project.pbxproj index ef1df53e472..a0e04a41633 100644 --- a/MapboxCoreNavigationTests/CocoaPodsTest/PodInstall/PodInstall.xcodeproj/project.pbxproj +++ b/MapboxCoreNavigationTests/CocoaPodsTest/PodInstall/PodInstall.xcodeproj/project.pbxproj @@ -244,8 +244,7 @@ "${BUILT_PRODUCTS_DIR}/MapboxNavigation/MapboxNavigation.framework", "${PODS_ROOT}/MapboxNavigationNative/MapboxNavigationNative.framework", "${PODS_ROOT}/MapboxNavigationNative/MapboxNavigationNative.framework.dSYM", - "${PODS_ROOT}/MapboxNavigationNative/A8E27795-23A6-3C82-9BA8-2C7578AC7E97.bcsymbolmap", - "${PODS_ROOT}/MapboxNavigationNative/FD2B23C2-808F-3297-B5E8-B3D024CB9C70.bcsymbolmap", + "${PODS_ROOT}/MapboxNavigationNative/9E1DC337-5279-3C31-9D5D-D8BA2ECDEB2C.bcsymbolmap", "${BUILT_PRODUCTS_DIR}/MapboxSpeech/MapboxSpeech.framework", "${BUILT_PRODUCTS_DIR}/Polyline/Polyline.framework", "${BUILT_PRODUCTS_DIR}/Solar/Solar.framework", @@ -266,8 +265,7 @@ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxNavigation.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxNavigationNative.framework", "${DWARF_DSYM_FOLDER_PATH}/MapboxNavigationNative.framework.dSYM", - "${BUILT_PRODUCTS_DIR}/A8E27795-23A6-3C82-9BA8-2C7578AC7E97.bcsymbolmap", - "${BUILT_PRODUCTS_DIR}/FD2B23C2-808F-3297-B5E8-B3D024CB9C70.bcsymbolmap", + "${BUILT_PRODUCTS_DIR}/9E1DC337-5279-3C31-9D5D-D8BA2ECDEB2C.bcsymbolmap", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MapboxSpeech.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Polyline.framework", "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Solar.framework", diff --git a/MapboxCoreNavigationTests/CocoaPodsTest/PodInstall/Podfile.lock b/MapboxCoreNavigationTests/CocoaPodsTest/PodInstall/Podfile.lock index 3f5f0dc6f89..6aa1d9cba09 100644 --- a/MapboxCoreNavigationTests/CocoaPodsTest/PodInstall/Podfile.lock +++ b/MapboxCoreNavigationTests/CocoaPodsTest/PodInstall/Podfile.lock @@ -6,7 +6,7 @@ PODS: - MapboxAccounts (~> 2.3.0) - MapboxDirections (~> 0.32.0) - MapboxMobileEvents (~> 0.10.2) - - MapboxNavigationNative (= 9.0.4) + - MapboxNavigationNative (= 9.2.1) - Turf (~> 0.5.0) - MapboxDirections (0.32.0): - Polyline (~> 4.2) @@ -18,7 +18,7 @@ PODS: - MapboxMobileEvents (~> 0.10.2) - MapboxSpeech (~> 0.3.0) - Solar (~> 2.1) - - MapboxNavigationNative (9.0.4) + - MapboxNavigationNative (9.2.1) - MapboxSpeech (0.3.0) - Polyline (4.2.1) - Solar (2.1.0) @@ -49,11 +49,11 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Mapbox-iOS-SDK: a5915700ec84bc1a7f8b3e746d474789e35b7956 MapboxAccounts: 84abfdde95d9dc483f604c1b0fe1861edf691ce7 - MapboxCoreNavigation: ddd42a0c92935d7d6090fdccd63fc8c84e5dbf8b + MapboxCoreNavigation: 3aab7ff9c1d56f0da6c2f8656162e90e918ba281 MapboxDirections: 7f36b3e9ef6a53fc997c114a341ab4da721756bd MapboxMobileEvents: 2bc0ca2eedb627b73cf403258dce2b2fa98074a6 MapboxNavigation: 42bae50b0381dce317c85884ba0de38fc68a4814 - MapboxNavigationNative: 50436c659f40d7f67ed8a60652c9d344f0e10e27 + MapboxNavigationNative: 97104806edeb30c77f96f81a255999a4d52f5451 MapboxSpeech: 403415e932e084cf290b9d55c49ab7ea210b9595 Polyline: 0e9890790292741c8186201a536b6bb6a78d02dd Solar: 2dc6e7cc39186cb0c8228fa08df76fb50c7d8f24 diff --git a/MapboxCoreNavigationTests/Extensions/RouteStateTests.swift b/MapboxCoreNavigationTests/Extensions/RouteStateTests.swift new file mode 100644 index 00000000000..eeecceb2741 --- /dev/null +++ b/MapboxCoreNavigationTests/Extensions/RouteStateTests.swift @@ -0,0 +1,15 @@ +import XCTest +@testable import MapboxNavigationNative +@testable import MapboxCoreNavigation + +class RouteStateTests: XCTestCase { + func testDescriptionPropertyReturnsExpectedValue() { + XCTAssertEqual(RouteState.invalid.description, "invalid") + XCTAssertEqual(RouteState.initialized.description, "initialized") + XCTAssertEqual(RouteState.tracking.description, "tracking") + XCTAssertEqual(RouteState.complete.description, "complete") + XCTAssertEqual(RouteState.offRoute.description, "offRoute") + XCTAssertEqual(RouteState.stale.description, "stale") + XCTAssertEqual(RouteState.uncertain.description, "uncertain") + } +} diff --git a/MapboxCoreNavigationTests/NavigationServiceTests.swift b/MapboxCoreNavigationTests/NavigationServiceTests.swift index 9f30602aaf7..b133a363e3a 100644 --- a/MapboxCoreNavigationTests/NavigationServiceTests.swift +++ b/MapboxCoreNavigationTests/NavigationServiceTests.swift @@ -483,32 +483,6 @@ class NavigationServiceTests: XCTestCase { waitForExpectations(timeout: 10) } - func testNineLeggedRouteForOutOfBounds() { - let options = NavigationRouteOptions(coordinates: [ - CLLocationCoordinate2D(latitude: 46.423728, longitude: 13.593578), - CLLocationCoordinate2D(latitude: 46.339747, longitude: 13.574151), - CLLocationCoordinate2D(latitude: 46.34447, longitude: 13.57594), - CLLocationCoordinate2D(latitude: 46.37798, longitude: 13.58583), - CLLocationCoordinate2D(latitude: 46.408308, longitude: 13.605585), - CLLocationCoordinate2D(latitude: 46.420338, longitude: 13.602128), - CLLocationCoordinate2D(latitude: 46.429376, longitude: 13.614679), - CLLocationCoordinate2D(latitude: 46.435762, longitude: 13.626714), - CLLocationCoordinate2D(latitude: 46.436658, longitude: 13.639499), - CLLocationCoordinate2D(latitude: 46.43878, longitude: 13.64052), - ]) - let route = Fixture.route(from: "9-legged-route", options: options) - let directions = Directions(credentials: Fixture.credentials) - let locationManager = DummyLocationManager() - let trace = Fixture.generateTrace(for: route, speedMultiplier: 4).shiftedToPresent() - - let service = MapboxNavigationService(route: route, routeOptions: options, directions: directions, locationSource: locationManager, eventsManagerType: nil) - service.start() - - for location in trace { - service.locationManager(locationManager, didUpdateLocations: [location]) - } - } - func testUnimplementedLogging() { unimplementedTestLogs = [] diff --git a/MapboxNavigation.xcodeproj/project.pbxproj b/MapboxNavigation.xcodeproj/project.pbxproj index 818c5f43877..96bc9b1111d 100644 --- a/MapboxNavigation.xcodeproj/project.pbxproj +++ b/MapboxNavigation.xcodeproj/project.pbxproj @@ -165,7 +165,7 @@ 35C8DC162191E5D50053328C /* NavigationEventsManagerTestDoubles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16120A4C20645D6E007EA21D /* NavigationEventsManagerTestDoubles.swift */; }; 35C8DC172191E5DB0053328C /* NavigationServiceTestDoubles.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA93EBD6E6BEC966BBE51D6 /* NavigationServiceTestDoubles.swift */; }; 35C98731212E02B500808B82 /* RouteController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C98730212E02B500808B82 /* RouteController.swift */; }; - 35C98733212E037900808B82 /* MBNavigator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C98732212E037900808B82 /* MBNavigator.swift */; }; + 35C98733212E037900808B82 /* RouteState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C98732212E037900808B82 /* RouteState.swift */; }; 35C98735212E042C00808B82 /* MapboxNavigationNative.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35C98734212E042C00808B82 /* MapboxNavigationNative.framework */; }; 35C98736212E045200808B82 /* MapboxNavigationNative.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35C98734212E042C00808B82 /* MapboxNavigationNative.framework */; }; 35C98738212E045300808B82 /* MapboxNavigationNative.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 35C98734212E042C00808B82 /* MapboxNavigationNative.framework */; }; @@ -233,6 +233,8 @@ 35F520C01FB482A200FC9C37 /* NextBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35F520BF1FB482A200FC9C37 /* NextBannerView.swift */; }; 35F611C41F1E1C0500C43249 /* FeedbackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35F611C31F1E1C0500C43249 /* FeedbackViewController.swift */; }; 35F9BC2F2296FCD300364A10 /* 9-legged-route.json in Resources */ = {isa = PBXBuildFile; fileRef = 35F9BAD12296FCD200364A10 /* 9-legged-route.json */; }; + 3A163AE0249901C300D66A0D /* RouteStateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A163ADF249901C300D66A0D /* RouteStateTests.swift */; }; + 3A163AE3249901D000D66A0D /* FixLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A163AE2249901D000D66A0D /* FixLocation.swift */; }; 3EA9301B03F8679BEDD4795F /* Cache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA93A10227A7DAF1861D9F5 /* Cache.swift */; }; 3EA9369C33A8F10DAE9043AA /* ImageDownloader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA934C5D8DBAA19DB0F5271 /* ImageDownloader.swift */; }; 3EA9371104016CD402547F1A /* ImageCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EA938479CF48D7AD1B6369B /* ImageCache.swift */; }; @@ -790,7 +792,7 @@ 35C8DC0E2191DE940053328C /* DCA-Arboretum.trace.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "DCA-Arboretum.trace.json"; sourceTree = ""; }; 35C8DC102191E1140053328C /* DirectionsSpy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DirectionsSpy.swift; sourceTree = ""; }; 35C98730212E02B500808B82 /* RouteController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RouteController.swift; sourceTree = ""; }; - 35C98732212E037900808B82 /* MBNavigator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MBNavigator.swift; sourceTree = ""; }; + 35C98732212E037900808B82 /* RouteState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RouteState.swift; sourceTree = ""; }; 35C98734212E042C00808B82 /* MapboxNavigationNative.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapboxNavigationNative.framework; path = Carthage/Build/iOS/MapboxNavigationNative.framework; sourceTree = ""; }; 35C9973E1E732C1B00544D1C /* RouteVoiceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RouteVoiceController.swift; sourceTree = ""; }; 35CB1E121F97DD740011CC44 /* FeedbackItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbackItem.swift; sourceTree = ""; }; @@ -841,6 +843,8 @@ 35F520BF1FB482A200FC9C37 /* NextBannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NextBannerView.swift; sourceTree = ""; }; 35F611C31F1E1C0500C43249 /* FeedbackViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FeedbackViewController.swift; sourceTree = ""; }; 35F9BAD12296FCD200364A10 /* 9-legged-route.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "9-legged-route.json"; sourceTree = ""; }; + 3A163ADF249901C300D66A0D /* RouteStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RouteStateTests.swift; sourceTree = ""; }; + 3A163AE2249901D000D66A0D /* FixLocation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FixLocation.swift; sourceTree = ""; }; 3EA93170CB959F3065ACFFC3 /* SpeechAPISpy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SpeechAPISpy.swift; sourceTree = ""; }; 3EA93230997B8D59E3B76C8C /* InstructionPresenter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstructionPresenter.swift; sourceTree = ""; }; 3EA934C5D8DBAA19DB0F5271 /* ImageDownloader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageDownloader.swift; sourceTree = ""; }; @@ -1544,6 +1548,14 @@ path = TestHelper; sourceTree = ""; }; + 3A163AE1249901D000D66A0D /* Extensions */ = { + isa = PBXGroup; + children = ( + 3A163ADF249901C300D66A0D /* RouteStateTests.swift */, + ); + path = Extensions; + sourceTree = ""; + }; 8DCB4246218A53F500D6FCAD /* Protocols */ = { isa = PBXGroup; children = ( @@ -1702,18 +1714,19 @@ isa = PBXGroup; children = ( 353E68FD1EF0B985007B2AE5 /* BundleAdditions.swift */, + C57491DE1FACC42F006F97BC /* CGPoint.swift */, 359574A71F28CC3800838209 /* CLLocation.swift */, + C582FD5E203626E900A9086E /* CLLocationDirection.swift */, C5D9800E1EFBCDAD006DBF2E /* Date.swift */, + 3A163AE2249901D000D66A0D /* FixLocation.swift */, C51DF8651F38C31C006C6A15 /* Locale.swift */, + 35F3387B2232AEBF0071DB5C /* MinimumEditDistance.swift */, C578DA071EFD0FFF0052079F /* ProcessInfo.swift */, + 35A43F76223BD632000CB367 /* RouteLeg.swift */, + 35A5413A1EFC052700E49846 /* RouteOptions.swift */, + 35C98732212E037900808B82 /* RouteState.swift */, C561735A1F182113005954F6 /* RouteStep.swift */, 351927351F0FA072003A702D /* ScreenCapture.swift */, - 35A5413A1EFC052700E49846 /* RouteOptions.swift */, - C57491DE1FACC42F006F97BC /* CGPoint.swift */, - C582FD5E203626E900A9086E /* CLLocationDirection.swift */, - 35C98732212E037900808B82 /* MBNavigator.swift */, - 35A43F76223BD632000CB367 /* RouteLeg.swift */, - 35F3387B2232AEBF0071DB5C /* MinimumEditDistance.swift */, DA754E1623AC56E5007E16B5 /* MBXAccounts+CoreNavigationAdditions.h */, DA754E1723AC56E5007E16B5 /* MBXAccounts+CoreNavigationAdditions.m */, ); @@ -1792,6 +1805,7 @@ C5ADFBD61DDCC7840011824B /* MapboxCoreNavigationTests */ = { isa = PBXGroup; children = ( + 3A163AE1249901D000D66A0D /* Extensions */, C52D09CF1DEF5E5F00BE3C5C /* Fixtures */, C5BF7371206AB0DF00CDBB6D /* CLHeadingPrivate.h */, DAD903AE23E3DCC80057CF1F /* DateTests.swift */, @@ -2745,7 +2759,7 @@ 8D1A5CD2212DDFCD0059BA4A /* DispatchTimer.swift in Sources */, C561735B1F182113005954F6 /* RouteStep.swift in Sources */, 354A9BC620EA991900F03325 /* SessionState.swift in Sources */, - 35C98733212E037900808B82 /* MBNavigator.swift in Sources */, + 35C98733212E037900808B82 /* RouteState.swift in Sources */, C582FD5F203626E900A9086E /* CLLocationDirection.swift in Sources */, 3582A25220EFA9680029C5DE /* RouterDelegate.swift in Sources */, 353E68FC1EF0B7F8007B2AE5 /* NavigationLocationManager.swift in Sources */, @@ -2767,6 +2781,7 @@ C5D9800F1EFBCDAD006DBF2E /* Date.swift in Sources */, 35A43F77223BD632000CB367 /* RouteLeg.swift in Sources */, 4303A3992332CD6200B5737D /* UnimplementedLogging.swift in Sources */, + 3A163AE3249901D000D66A0D /* FixLocation.swift in Sources */, 8D2AA745211CDD4000EB7F72 /* NavigationService.swift in Sources */, 35A5413B1EFC052700E49846 /* RouteOptions.swift in Sources */, 353E69041EF0C4E5007B2AE5 /* SimulatedLocationManager.swift in Sources */, @@ -2800,6 +2815,7 @@ 352762A4225B751A0015B632 /* OptionsTests.swift in Sources */, 8DB7EF6A2176674800DA83A3 /* MapboxNavigationServiceSpec.swift in Sources */, 35EF782A212C324E001B4BB5 /* TunnelAuthorityTests.swift in Sources */, + 3A163AE0249901C300D66A0D /* RouteStateTests.swift in Sources */, C5ABB50E20408D2C00AFA92C /* NavigationServiceTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0;