[core] Deactivate OfflineDownload when the tile count limit is hit

This is a better behavior than sending hundreds or thousands of tileCountLimitExceeded notifications.
This commit is contained in:
John Firebaugh
2016-03-09 10:44:30 -08:00
parent be00dfd367
commit 7cceca4b45
2 changed files with 14 additions and 1 deletions

View File

@@ -230,6 +230,7 @@ void OfflineDownload::ensureResource(const Resource& resource, std::function<voi
&& util::mapbox::isMapboxURL(resource.url)
&& offlineDatabase.offlineMapboxTileCountLimitExceeded()) {
observer->mapboxTileCountLimitExceeded(offlineDatabase.getOfflineMapboxTileCountLimit());
setState(OfflineRegionDownloadState::Inactive);
return;
}

View File

@@ -371,10 +371,22 @@ TEST(OfflineDownload, TileCountLimitExceeded) {
};
auto observer = std::make_unique<MockObserver>();
bool mapboxTileCountLimitExceededCalled = false;
observer->mapboxTileCountLimitExceededFn = [&] (uint64_t limit) {
EXPECT_FALSE(mapboxTileCountLimitExceededCalled);
EXPECT_EQ(0, limit);
test.loop.stop();
mapboxTileCountLimitExceededCalled = true;
};
observer->statusChangedFn = [&] (OfflineRegionStatus status) {
EXPECT_FALSE(status.complete());
if (!mapboxTileCountLimitExceededCalled) {
EXPECT_EQ(OfflineRegionDownloadState::Active, status.downloadState);
} else {
EXPECT_EQ(OfflineRegionDownloadState::Inactive, status.downloadState);
test.loop.stop();
}
};
download.setObserver(std::move(observer));