From 4748973c04329adaafa9c8c614bd5b377729b726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguye=CC=82=CC=83n?= Date: Fri, 11 Mar 2016 08:24:52 -0800 Subject: [PATCH] [core] Deactivate offline region upon completion --- .../default/mbgl/storage/offline_download.cpp | 8 +++++++ test/storage/offline_download.cpp | 21 +++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/platform/default/mbgl/storage/offline_download.cpp b/platform/default/mbgl/storage/offline_download.cpp index dc16ab10f..36b6f5d50 100644 --- a/platform/default/mbgl/storage/offline_download.cpp +++ b/platform/default/mbgl/storage/offline_download.cpp @@ -222,6 +222,10 @@ void OfflineDownload::ensureResource(const Resource& resource, std::functionsecond; observer->statusChanged(status); + + if (status.complete()) { + setState(OfflineRegionDownloadState::Inactive); + } return; } @@ -251,6 +255,10 @@ void OfflineDownload::ensureResource(const Resource& resource, std::functionstatusChanged(status); + + if (status.complete()) { + setState(OfflineRegionDownloadState::Inactive); + } }); }); } diff --git a/test/storage/offline_download.cpp b/test/storage/offline_download.cpp index 1b35d561b..26d0fb29e 100644 --- a/test/storage/offline_download.cpp +++ b/test/storage/offline_download.cpp @@ -71,13 +71,22 @@ TEST(OfflineDownload, NoSubresources) { auto observer = std::make_unique(); + bool expectsInactiveStatus = false; observer->statusChangedFn = [&] (OfflineRegionStatus status) { if (status.complete()) { - EXPECT_EQ(OfflineRegionDownloadState::Active, status.downloadState); - EXPECT_EQ(1, status.completedResourceCount); - EXPECT_EQ(test.size, status.completedResourceSize); - EXPECT_TRUE(status.requiredResourceCountIsPrecise); - test.loop.stop(); + if (!expectsInactiveStatus) { + expectsInactiveStatus = true; + EXPECT_EQ(OfflineRegionDownloadState::Active, status.downloadState); + EXPECT_EQ(1, status.completedResourceCount); + EXPECT_EQ(test.size, status.completedResourceSize); + EXPECT_TRUE(status.requiredResourceCountIsPrecise); + } else { + EXPECT_EQ(OfflineRegionDownloadState::Inactive, status.downloadState); + EXPECT_EQ(1, status.completedResourceCount); + EXPECT_EQ(test.size, status.completedResourceSize); + EXPECT_TRUE(status.requiredResourceCountIsPrecise); + test.loop.stop(); + } } }; @@ -478,7 +487,7 @@ TEST(OfflineDownload, ReactivatePreviouslyCompletedDownload) { test.loop.run(); - ASSERT_EQ(3, statusesAfterReactivate.size()); + ASSERT_EQ(4, statusesAfterReactivate.size()); EXPECT_EQ(OfflineRegionDownloadState::Active, statusesAfterReactivate[0].downloadState); EXPECT_FALSE(statusesAfterReactivate[0].requiredResourceCountIsPrecise);