Commit 9840fa78 authored by Sam McNally's avatar Sam McNally Committed by Commit Bot

Handle unknown version invalidations in DriveNotificationManager.

Not all invalidations for Drive come with a version, so check
is_unknown_version().

Bug: 870004
Change-Id: I4640f65883fc858fe98404dd9c6c74d3313ac03e
Reviewed-on: https://chromium-review.googlesource.com/c/1290449Reviewed-by: default avatarStuart Langley <slangley@chromium.org>
Commit-Queue: Sam McNally <sammc@chromium.org>
Cr-Commit-Position: refs/heads/master@{#601012}
parent 5a188171
......@@ -109,7 +109,8 @@ void DriveNotificationManager::OnIncomingInvalidation(
auto invalidations = invalidation_map.ForObject(id);
int64_t& invalidation_version = invalidated_change_ids_[unpacked_id] = -1;
for (auto& invalidation : invalidations) {
if (invalidation.version() > invalidation_version) {
if (!invalidation.is_unknown_version() &&
invalidation.version() > invalidation_version) {
invalidation_version = invalidation.version();
}
}
......
......@@ -159,13 +159,13 @@ TEST_F(DriveNotificationManagerTest, TestBatchInvalidation) {
// Emitting an invalidation should not call our observer until the timer
// expires.
fake_invalidation_service_->EmitInvalidationForTest(
syncer::Invalidation::Init(kDefaultCorpusObjectId, 1, ""));
syncer::Invalidation::InitUnknownVersion(kDefaultCorpusObjectId));
EXPECT_TRUE(drive_notification_observer_->GetNotificationIds().empty());
task_runner_->FastForwardBy(base::TimeDelta::FromSeconds(5));
// Default corpus is has the id "" when sent to observers.
std::map<std::string, int64_t> expected_ids = {{"", 1}};
std::map<std::string, int64_t> expected_ids = {{"", -1}};
EXPECT_EQ(expected_ids, drive_notification_observer_->GetNotificationIds());
drive_notification_observer_->ClearNotificationIds();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment