[core] Push Source::url down to subclasses
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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) {
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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_)) {
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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_)) {
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user