diff options
Diffstat (limited to 'src/mbgl/style/sources/vector_source.cpp')
-rw-r--r-- | src/mbgl/style/sources/vector_source.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/mbgl/style/sources/vector_source.cpp b/src/mbgl/style/sources/vector_source.cpp index ccdd453c75..b7ba869384 100644 --- a/src/mbgl/style/sources/vector_source.cpp +++ b/src/mbgl/style/sources/vector_source.cpp @@ -4,6 +4,7 @@ #include <mbgl/style/conversion/json.hpp> #include <mbgl/style/conversion/tileset.hpp> #include <mbgl/storage/file_source.hpp> +#include <mbgl/storage/resource_error.hpp> #include <mbgl/util/mapbox.hpp> #include <mbgl/util/constants.hpp> @@ -46,17 +47,21 @@ void VectorSource::loadDescription(FileSource& fileSource) { const std::string& url = urlOrTileset.get<std::string>(); req = fileSource.request(Resource::source(url), [this, url](Response res) { - if (res.error) { - observer->onSourceError(*this, std::make_exception_ptr(std::runtime_error(res.error->message))); - } else if (res.notModified) { + if (!res.error && res.notModified) { return; - } else if (res.noContent) { - observer->onSourceError(*this, std::make_exception_ptr(std::runtime_error("unexpectedly empty TileJSON"))); + } else if (res.error || res.noContent) { + const auto severity = loaded ? EventSeverity::Warning : EventSeverity::Error; + const std::string& message = + res.error ? res.error->message : "unexpectedly empty TileJSON"; + const util::ResourceError err(message, ResourceKind::Source, res.error->status, url); + observer->onSourceError(*this, std::make_exception_ptr(err), severity); } else { conversion::Error error; optional<Tileset> tileset = conversion::convertJSON<Tileset>(*res.data, error); if (!tileset) { - observer->onSourceError(*this, std::make_exception_ptr(std::runtime_error(error.message))); + const auto severity = loaded ? EventSeverity::Warning : EventSeverity::Error; + observer->onSourceError( + *this, std::make_exception_ptr(std::runtime_error(error.message)), severity); return; } |