[core] Deactivate offline region upon completion

This commit is contained in:
Minh Nguyễn
2016-03-11 08:24:52 -08:00
committed by Minh Nguyễn
parent 694a064cdd
commit 4748973c04
2 changed files with 23 additions and 6 deletions

View File

@@ -222,6 +222,10 @@ void OfflineDownload::ensureResource(const Resource& resource, std::function<voi
status.completedResourceCount++;
status.completedResourceSize += offlineResponse->second;
observer->statusChanged(status);
if (status.complete()) {
setState(OfflineRegionDownloadState::Inactive);
}
return;
}
@@ -251,6 +255,10 @@ void OfflineDownload::ensureResource(const Resource& resource, std::function<voi
status.completedResourceSize += offlineDatabase.putRegionResource(id, resource, onlineResponse);
observer->statusChanged(status);
if (status.complete()) {
setState(OfflineRegionDownloadState::Inactive);
}
});
});
}

View File

@@ -71,13 +71,22 @@ TEST(OfflineDownload, NoSubresources) {
auto observer = std::make_unique<MockObserver>();
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);