summaryrefslogtreecommitdiff
path: root/platform/default/mbgl/storage/offline_download.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/default/mbgl/storage/offline_download.cpp')
-rw-r--r--platform/default/mbgl/storage/offline_download.cpp21
1 files changed, 13 insertions, 8 deletions
diff --git a/platform/default/mbgl/storage/offline_download.cpp b/platform/default/mbgl/storage/offline_download.cpp
index 8a156dd649..3d0ebaa68f 100644
--- a/platform/default/mbgl/storage/offline_download.cpp
+++ b/platform/default/mbgl/storage/offline_download.cpp
@@ -107,14 +107,17 @@ OfflineRegionStatus OfflineDownload::getStatus() const {
case SourceType::Vector:
case SourceType::Raster: {
style::TileSource* tileSource = static_cast<style::TileSource*>(source.get());
- if (tileSource->getTileset()) {
- result.requiredResourceCount += tileResources(source->type, tileSource->getTileSize(), *tileSource->getTileset()).size();
+ const variant<std::string, Tileset>& urlOrTileset = tileSource->getURLOrTileset();
+
+ if (urlOrTileset.is<Tileset>()) {
+ result.requiredResourceCount += tileResources(source->type, tileSource->getTileSize(), urlOrTileset.get<Tileset>()).size();
} else {
result.requiredResourceCount += 1;
- optional<Response> sourceResponse = offlineDatabase.get(Resource::source(tileSource->getURL()));
+ const std::string& url = urlOrTileset.get<std::string>();
+ optional<Response> sourceResponse = offlineDatabase.get(Resource::source(url));
if (sourceResponse) {
result.requiredResourceCount += tileResources(source->type, tileSource->getTileSize(),
- *style::parseTileJSON(*sourceResponse->data, tileSource->getURL(), source->type, tileSource->getTileSize())).size();
+ style::TileSource::parseTileJSON(*sourceResponse->data, url, source->type, tileSource->getTileSize())).size();
} else {
result.requiredResourceCountIsPrecise = false;
}
@@ -161,16 +164,18 @@ void OfflineDownload::activateDownload() {
case SourceType::Vector:
case SourceType::Raster: {
const style::TileSource* tileSource = static_cast<style::TileSource*>(source.get());
+ const variant<std::string, Tileset>& urlOrTileset = tileSource->getURLOrTileset();
const uint16_t tileSize = tileSource->getTileSize();
- if (tileSource->getTileset()) {
- ensureTiles(type, tileSize, *tileSource->getTileset());
+
+ if (urlOrTileset.is<Tileset>()) {
+ ensureTiles(type, tileSize, urlOrTileset.get<Tileset>());
} else {
- std::string url = tileSource->getURL();
+ const std::string& url = urlOrTileset.get<std::string>();
status.requiredResourceCountIsPrecise = false;
requiredSourceURLs.insert(url);
ensureResource(Resource::source(url), [=] (Response sourceResponse) {
- ensureTiles(type, tileSize, *style::parseTileJSON(*sourceResponse.data, url, type, tileSize));
+ ensureTiles(type, tileSize, style::TileSource::parseTileJSON(*sourceResponse.data, url, type, tileSize));
requiredSourceURLs.erase(url);
if (requiredSourceURLs.empty()) {