[core] Deactivate offline region upon completion
This commit is contained in:
committed by
Minh Nguyễn
parent
694a064cdd
commit
4748973c04
@@ -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);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user