The MockFileSource will insert garbage on the reply and report as
a request done successfully. The network stack cannot detect this
kind of errors but the consumer should report it like we do for
network problems.
The tile parsing is done in a worker thread and if it fails,
we set the tile state to "obsolete" and set an error message.
When the completion callback is fired, we check for the error
message and if it is set, we emit the error signal.
The trick here is the signal cannot be emitted directly from
the worker thread because that would violate data ownership rules.
If an OpenGL context couldn’t be created, there’s just no point to soldiering on. Things are going to fall apart pretty quickly anyways. Assert and be done with it.
This first test will simulate a request failure on every resource
directly or indirectly loaded by the ResourceLoader. The idea is
to verify whenever we are failing gracefully or not.
- MockFileSource
Will load pre-defined resources from the filesystem. It supports
passing a string, that when it matches an URL, will simulate a failure.
- MockView
It is just a no-op to not get in the way when testing
resource loading.
Few more additions:
- style.json
Specially crafted style that will look always for the same tile,
glyph range, etc at the "test/fixtures/resources/" path. No matter
where you look (or at what zoom), you always get the same stuff.
- vector.pbf
This taken from a part of Taipei that will request several glyph
ranges.
The callback will be called when any of the resources requested
from the network failed to load.
There is not recovery implemented yet, so the closest thing to
reseting the Map object and reloading all the resources would
be setting a new style.
IB designables inside frameworks have no access whatsoever to the host app’s bundle (especially if the host app lacks any designables of its own). So it has no way of knowing whether the access token is set in Info.plist. We could continue to check whether it was set programmatically, but we’d still have no way of knowing whether the host app has a Settings bundle, the other prerequisite for displaying Mapbox maps. Therefore, this change removes the Mapbox logo from the designable and displays a reworded reminder unconditionally. It now displays the URL of the “First steps with Mapbox GL for iOS” guide. I kept Mapbox blue in the designable, but as a border, so you can easily tell where the view ends (a major usability problem for custom views in IB).