From 9d3c4fbbb05d37802ebc15210b041392b4d48f15 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 14 Jun 2016 10:56:51 -0700 Subject: [PATCH] [core] Push Source::url down to subclasses --- .../default/mbgl/storage/offline_download.cpp | 21 ++++++++++++------- src/mbgl/annotation/annotation_source.cpp | 2 +- src/mbgl/style/source.cpp | 6 +----- src/mbgl/style/source.hpp | 6 +----- src/mbgl/style/sources/geojson_source.cpp | 3 ++- src/mbgl/style/sources/geojson_source.hpp | 3 +++ src/mbgl/style/tile_source.cpp | 3 ++- src/mbgl/style/tile_source.hpp | 2 ++ test/style/source.cpp | 4 ++-- 9 files changed, 27 insertions(+), 23 deletions(-) diff --git a/platform/default/mbgl/storage/offline_download.cpp b/platform/default/mbgl/storage/offline_download.cpp index 932b8f377..04aabeb04 100644 --- a/platform/default/mbgl/storage/offline_download.cpp +++ b/platform/default/mbgl/storage/offline_download.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -110,10 +111,10 @@ OfflineRegionStatus OfflineDownload::getStatus() const { result.requiredResourceCount += tileResources(source->type, source->tileSize, *tileSource->getTileset()).size(); } else { result.requiredResourceCount += 1; - optional sourceResponse = offlineDatabase.get(Resource::source(source->url)); + optional sourceResponse = offlineDatabase.get(Resource::source(tileSource->getURL())); if (sourceResponse) { result.requiredResourceCount += tileResources(source->type, source->tileSize, - *style::parseTileJSON(*sourceResponse->data, source->url, source->type, source->tileSize)).size(); + *style::parseTileJSON(*sourceResponse->data, tileSource->getURL(), source->type, source->tileSize)).size(); } else { result.requiredResourceCountIsPrecise = false; } @@ -121,11 +122,13 @@ OfflineRegionStatus OfflineDownload::getStatus() const { break; } - case SourceType::GeoJSON: - if (!source->url.empty()) { + case SourceType::GeoJSON: { + style::GeoJSONSource* geojsonSource = static_cast(source.get()); + if (!geojsonSource->getURL().empty()) { result.requiredResourceCount += 1; } break; + } case SourceType::Video: case SourceType::Annotations: @@ -154,7 +157,6 @@ void OfflineDownload::activateDownload() { for (const auto& source : parser.sources) { SourceType type = source->type; uint16_t tileSize = source->tileSize; - std::string url = source->url; switch (type) { case SourceType::Vector: @@ -163,6 +165,7 @@ void OfflineDownload::activateDownload() { if (tileSource->getTileset()) { ensureTiles(type, tileSize, *tileSource->getTileset()); } else { + std::string url = tileSource->getURL(); status.requiredResourceCountIsPrecise = false; requiredSourceURLs.insert(url); @@ -178,11 +181,13 @@ void OfflineDownload::activateDownload() { break; } - case SourceType::GeoJSON: - if (!source->url.empty()) { - ensureResource(Resource::source(source->url)); + case SourceType::GeoJSON: { + style::GeoJSONSource* geojsonSource = static_cast(source.get()); + if (!geojsonSource->getURL().empty()) { + ensureResource(Resource::source(geojsonSource->getURL())); } break; + } case SourceType::Video: case SourceType::Annotations: diff --git a/src/mbgl/annotation/annotation_source.cpp b/src/mbgl/annotation/annotation_source.cpp index 55e6fc82a..637109ff8 100644 --- a/src/mbgl/annotation/annotation_source.cpp +++ b/src/mbgl/annotation/annotation_source.cpp @@ -5,7 +5,7 @@ namespace mbgl { AnnotationSource::AnnotationSource() - : Source(SourceType::Annotations, AnnotationManager::SourceID, "", util::tileSize) { + : Source(SourceType::Annotations, AnnotationManager::SourceID, util::tileSize) { } Range AnnotationSource::getZoomRange() { diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp index 3c5690e98..21fb7fee3 100644 --- a/src/mbgl/style/source.cpp +++ b/src/mbgl/style/source.cpp @@ -32,13 +32,9 @@ namespace style { static SourceObserver nullObserver; -Source::Source(SourceType type_, - std::string id_, - std::string url_, - uint16_t tileSize_) +Source::Source(SourceType type_, std::string id_, uint16_t tileSize_) : type(type_), id(std::move(id_)), - url(std::move(url_)), tileSize(tileSize_), observer(&nullObserver) { } diff --git a/src/mbgl/style/source.hpp b/src/mbgl/style/source.hpp index 36e6570fb..99d634a88 100644 --- a/src/mbgl/style/source.hpp +++ b/src/mbgl/style/source.hpp @@ -32,10 +32,7 @@ class SourceObserver; class Source : public TileObserver, private util::noncopyable { public: - Source(SourceType, - std::string id, - std::string url, - uint16_t tileSize); + Source(SourceType, std::string id, uint16_t tileSize); ~Source() override; bool loaded = false; @@ -71,7 +68,6 @@ public: const SourceType type; const std::string id; - const std::string url; uint16_t tileSize = util::tileSize; bool enabled = false; diff --git a/src/mbgl/style/sources/geojson_source.cpp b/src/mbgl/style/sources/geojson_source.cpp index 6e1068dad..7daf14829 100644 --- a/src/mbgl/style/sources/geojson_source.cpp +++ b/src/mbgl/style/sources/geojson_source.cpp @@ -63,7 +63,8 @@ std::unique_ptr GeoJSONSource::parse(const std::string& id, GeoJSONSource::GeoJSONSource(std::string id_, std::string url_, std::unique_ptr&& geojsonvt_) - : Source(SourceType::GeoJSON, std::move(id_), std::move(url_), util::tileSize), + : Source(SourceType::GeoJSON, std::move(id_), util::tileSize), + url(url_), geojsonvt(std::move(geojsonvt_)) { } diff --git a/src/mbgl/style/sources/geojson_source.hpp b/src/mbgl/style/sources/geojson_source.hpp index 7022d387e..996dac3ac 100644 --- a/src/mbgl/style/sources/geojson_source.hpp +++ b/src/mbgl/style/sources/geojson_source.hpp @@ -28,10 +28,13 @@ public: void load(FileSource&) final; + const std::string& getURL() const { return url; } + private: Range getZoomRange() final; std::unique_ptr createTile(const OverscaledTileID&, const UpdateParameters&) final; + const std::string url; std::unique_ptr geojsonvt; std::unique_ptr req; }; diff --git a/src/mbgl/style/tile_source.cpp b/src/mbgl/style/tile_source.cpp index 12c62f07a..29cbcc722 100644 --- a/src/mbgl/style/tile_source.cpp +++ b/src/mbgl/style/tile_source.cpp @@ -12,7 +12,8 @@ TileSource::TileSource(SourceType type_, std::string url_, uint16_t tileSize_, std::unique_ptr&& tileset_) - : Source(type_, std::move(id_), std::move(url_), tileSize_), + : Source(type_, std::move(id_), tileSize_), + url(std::move(url_)), tileset(std::move(tileset_)) { } diff --git a/src/mbgl/style/tile_source.hpp b/src/mbgl/style/tile_source.hpp index c0dc0da8c..b001d174f 100644 --- a/src/mbgl/style/tile_source.hpp +++ b/src/mbgl/style/tile_source.hpp @@ -24,11 +24,13 @@ public: void load(FileSource&) final; + const std::string& getURL() const { return url; } const Tileset* getTileset() const { return tileset.get(); } protected: Range getZoomRange() final; + const std::string url; std::unique_ptr tileset; std::unique_ptr req; }; diff --git a/test/style/source.cpp b/test/style/source.cpp index 7a574e9e5..82763c99f 100644 --- a/test/style/source.cpp +++ b/test/style/source.cpp @@ -82,7 +82,7 @@ TEST(Source, LoadingFail) { }; test.observer.sourceError = [&] (Source& source, std::exception_ptr error) { - EXPECT_EQ("url", source.url); + EXPECT_EQ("source", source.id); EXPECT_EQ("Failed by the test case", util::toString(error)); test.end(); }; @@ -105,7 +105,7 @@ TEST(Source, LoadingCorrupt) { }; test.observer.sourceError = [&] (Source& source, std::exception_ptr error) { - EXPECT_EQ("url", source.url); + EXPECT_EQ("source", source.id); EXPECT_EQ("0 - Invalid value.", util::toString(error)); test.end(); };