Commit Graph

17 Commits

Author SHA1 Message Date
Minh Nguyễn
b493bdc649 [ios, osx] Unified offline and ambient caches
There is now only one instance of mbgl::OfflineFileSource, created when the shared MGLOfflineStorage object is initialized. Also create and use the shared MGLOfflineStorage object when initializing an MGLMapView object. The unified cache file is located in a subdirectory of Application Support, where the SDK has control over the file’s lifetime. The subdirectory is already named after the host application’s bundle identifier, ensuring that each Mapbox-powered application has an independent tile limit. If there’s an ambient cache in a subdirectory of Caches, delete it. If there’s an offline cache in a subdirectory of Documents on iOS or Caches on OS X, move it to the unified cache location in a subdirectory of Application Support.

Fixes the iOS/OS X side of #4338.
2016-03-18 14:02:32 -07:00
Minh Nguyễn
caef1785eb [ios, osx] Removed pack nil check from MGLOfflineRegionObserver
Due to ARC, MGLOfflinePack can be deallocated at any time following its initialization. -dealloc ensures that the offline region observer is unset, but that step is asynchronous; there is no guarantee that it completes before the first status change update. In fact, the pack is deallocated before the first status change update unless it is captured outside of the MGLOfflinePackAdditionCompletionHandler. The pack nil check is unnecessary because the subsequent code would be a no-op.
2016-03-14 11:54:50 -07:00
Minh Nguyễn
ff9c3a57b0 [ios, osx] Renamed MGLOfflineTask to MGLOfflinePack
“Offline pack” more effectively communicates the persistent nature of the downloaded content.
2016-03-10 17:14:14 -08:00
Minh Nguyễn
ee20fd8fd8 [ios, osx] Avoid unregistering observer for invalid task 2016-03-10 17:14:14 -08:00
Minh Nguyễn
7fa3b92429 [ios, osx] Tightened offline task state
Fixed a race condition that could occur if a progress update comes after a call to remove the task but before the removal is complete. Avoid synchronously setting the task’s state inside -resume and -suspend; instead, rely on the observer to set the state asynchronously.
2016-03-10 17:14:14 -08:00
Minh Nguyễn
77d99584ce [ios, osx] Distinguish between unknown and inactive state 2016-03-10 17:08:58 -08:00
Minh Nguyễn
68ba0712f7 [ios, osx] Privatized offline region observer 2016-03-10 17:08:58 -08:00
Minh Nguyễn
c335847451 [ios, osx] Invalidate task immediately upon removal 2016-03-10 17:08:58 -08:00
Minh Nguyễn
e218728f3a [ios, osx] Fixed crash interacting with MGLOfflineTask
Added a missing conditional to the invalidation checking macro that I factored out at the last minute.
2016-03-10 17:08:58 -08:00
Minh Nguyễn
8824237e2d [ios, osx] Documented offline APIs
Also categorized offline symbols for jazzy and moved styleURL from MGLOfflineRegion to MGLTilePyramidOfflineRegion, since you never know if there will be a region type not constrained by a style in the future.
2016-03-10 17:08:58 -08:00
Minh Nguyễn
f5ac63dfec [ios, osx] Renamed offline classes
Renamed SDK classes related to offline viewing to more closely match the terminology used by mbgl and the Android SDK while remaining consistent with Cocoa naming principles.
2016-03-10 17:08:58 -08:00
Minh Nguyễn
e36218a866 [osx] Added OS X support for offline downloads 2016-03-10 17:08:58 -08:00
Minh Nguyễn
77657b3896 [ios] Implemented offline API in iOS SDK
Fixes #3892.
2016-03-10 17:08:58 -08:00
Jason Wray
64b163ee5d [ios] Add description strings to constituent classes 2016-03-10 13:48:00 -05:00
John Firebaugh
e4b2ea0982 [ios, osx] Don't delete a mutex with an active lock
The lock is in place to enforce that `async` is not accessed if the request has been, cancelled. Therefore it's not necessary to hold the lock beyond setting cancelled to true, and in fact it's unsafe to so: if this is the last remaining shared reference, `delete this` will destroy the mutex. If the lock was held, it would then be orphaned.
2016-02-19 10:11:27 -08:00
John Firebaugh
5ca625ba0d [ios, osx] Adjust HTTPNSURLRequest so that it may always delete itself immediately 2016-02-16 12:48:50 -08:00
John Firebaugh
13e2acbc75 [ios, osx] Consolidate remaining files in platform/{ios,osx} 2016-02-12 14:53:52 -08:00