summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2016-06-14 10:56:51 -0700
committerJohn Firebaugh <john.firebaugh@gmail.com>2016-06-14 11:25:45 -0700
commit9d3c4fbbb05d37802ebc15210b041392b4d48f15 (patch)
tree2f4638ebcff4cc50a08c73ed6587a53c7014bcf0
parent9dfcb95e4fe333922306eadd4df5cbde2f03a6c1 (diff)
downloadqtlocation-mapboxgl-9d3c4fbbb05d37802ebc15210b041392b4d48f15.tar.gz
[core] Push Source::url down to subclasses
-rw-r--r--platform/default/mbgl/storage/offline_download.cpp21
-rw-r--r--src/mbgl/annotation/annotation_source.cpp2
-rw-r--r--src/mbgl/style/source.cpp6
-rw-r--r--src/mbgl/style/source.hpp6
-rw-r--r--src/mbgl/style/sources/geojson_source.cpp3
-rw-r--r--src/mbgl/style/sources/geojson_source.hpp3
-rw-r--r--src/mbgl/style/tile_source.cpp3
-rw-r--r--src/mbgl/style/tile_source.hpp2
-rw-r--r--test/style/source.cpp4
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 932b8f3777..04aabeb04f 100644
--- a/platform/default/mbgl/storage/offline_download.cpp
+++ b/platform/default/mbgl/storage/offline_download.cpp
@@ -5,6 +5,7 @@
#include <mbgl/storage/response.hpp>
#include <mbgl/style/parser.hpp>
#include <mbgl/style/tile_source.hpp>
+#include <mbgl/style/sources/geojson_source.hpp>
#include <mbgl/text/glyph.hpp>
#include <mbgl/util/tile_cover.hpp>
#include <mbgl/util/mapbox.hpp>
@@ -110,10 +111,10 @@ OfflineRegionStatus OfflineDownload::getStatus() const {
result.requiredResourceCount += tileResources(source->type, source->tileSize, *tileSource->getTileset()).size();
} else {
result.requiredResourceCount += 1;
- optional<Response> sourceResponse = offlineDatabase.get(Resource::source(source->url));
+ optional<Response> 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<style::GeoJSONSource*>(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<style::GeoJSONSource*>(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 55e6fc82a3..637109ff8d 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<uint8_t> AnnotationSource::getZoomRange() {
diff --git a/src/mbgl/style/source.cpp b/src/mbgl/style/source.cpp
index 3c5690e980..21fb7fee36 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 36e6570fb5..99d634a887 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 6e1068dadb..7daf148291 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> GeoJSONSource::parse(const std::string& id,
GeoJSONSource::GeoJSONSource(std::string id_,
std::string url_,
std::unique_ptr<mapbox::geojsonvt::GeoJSONVT>&& 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 7022d387e9..996dac3aca 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<uint8_t> getZoomRange() final;
std::unique_ptr<Tile> createTile(const OverscaledTileID&, const UpdateParameters&) final;
+ const std::string url;
std::unique_ptr<mapbox::geojsonvt::GeoJSONVT> geojsonvt;
std::unique_ptr<AsyncRequest> req;
};
diff --git a/src/mbgl/style/tile_source.cpp b/src/mbgl/style/tile_source.cpp
index 12c62f07a5..29cbcc7226 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>&& 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 c0dc0da8c7..b001d174f6 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<uint8_t> getZoomRange() final;
+ const std::string url;
std::unique_ptr<const Tileset> tileset;
std::unique_ptr<AsyncRequest> req;
};
diff --git a/test/style/source.cpp b/test/style/source.cpp
index 7a574e9e51..82763c99f1 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();
};