1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2009 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/sessions/sync_session.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/sync/engine/test_id_factory.h" 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace browser_sync { 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace sessions { 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass StatusControllerTest : public testing::Test { 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetUp() { 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch routes_[syncable::BOOKMARKS] = GROUP_UI; 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ModelSafeRoutingInfo routes_; 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(StatusControllerTest, GetsDirty) { 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch StatusController status(routes_); 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_conflicting_commits_by(1); 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.TestAndClearIsDirty()); // Test that it actually resets. 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_conflicting_commits_by(0); 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.TestAndClearIsDirty()); 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_conflicting_commits_by(1); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_num_consecutive_transient_error_commits(1); 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_consecutive_transient_error_commits_by(1); 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_consecutive_transient_error_commits_by(0); 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.TestAndClearIsDirty()); 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_num_consecutive_errors(10); 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_num_consecutive_errors(10); 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.TestAndClearIsDirty()); // Only dirty if value changed. 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_consecutive_errors(); 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_consecutive_errors_by(1); 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_consecutive_errors_by(0); 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.TestAndClearIsDirty()); 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_num_server_changes_remaining(30); 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_invalid_store(true); 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_invalid_store(false); 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_syncer_stuck(true); 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_syncer_stuck(false); 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_syncing(true); 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_syncing(false); 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_successful_commits(); 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_successful_commits(); 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScopedModelSafeGroupRestriction r(&status, GROUP_UI); 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.mutable_conflict_progress()->AddConflictingItemById(syncable::Id()); 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::vector<int64> v; 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch v.push_back(1); 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_unsynced_handles(v); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.TestAndClearIsDirty()); 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::vector<int64> v2; 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch v2.push_back(1); 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_unsynced_handles(v2); 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.TestAndClearIsDirty()); // Test for deep comparison. 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(StatusControllerTest, StaysClean) { 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch StatusController status(routes_); 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.update_conflict_sets_built(true); 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.TestAndClearIsDirty()); 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.update_conflicts_resolved(true); 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.TestAndClearIsDirty()); 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_items_committed(); 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.TestAndClearIsDirty()); 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch OrderedCommitSet commits(routes_); 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch commits.AddCommitItem(0, syncable::Id(), syncable::BOOKMARKS); 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_commit_set(commits); 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.TestAndClearIsDirty()); 103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// This test is useful, as simple as it sounds, due to the copy-paste prone 106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// nature of status_controller.cc (we have had bugs in the past where a set_foo 107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// method was actually setting |bar_| instead!). 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(StatusControllerTest, ReadYourWrites) { 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch StatusController status(routes_); 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_conflicting_commits_by(1); 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(1, status.error_counters().num_conflicting_commits); 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_num_consecutive_transient_error_commits(6); 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(6, status.error_counters().consecutive_transient_error_commits); 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_consecutive_transient_error_commits_by(1); 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(7, status.error_counters().consecutive_transient_error_commits); 117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_consecutive_transient_error_commits_by(0); 118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(7, status.error_counters().consecutive_transient_error_commits); 119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_num_consecutive_errors(8); 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(8, status.error_counters().consecutive_errors); 122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_consecutive_errors(); 123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(9, status.error_counters().consecutive_errors); 124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_consecutive_errors_by(2); 125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(11, status.error_counters().consecutive_errors); 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_num_server_changes_remaining(13); 128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(13, status.num_server_changes_remaining()); 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.syncer_status().invalid_store); 131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_invalid_store(true); 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.syncer_status().invalid_store); 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.syncer_status().syncer_stuck); 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_syncer_stuck(true); 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.syncer_status().syncer_stuck); 137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.syncer_status().syncing); 139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_syncing(true); 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.syncer_status().syncing); 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (int i = 0; i < 14; i++) 143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.increment_num_successful_commits(); 144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(14, status.syncer_status().num_successful_commits); 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::vector<int64> v; 147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch v.push_back(16); 148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.set_unsynced_handles(v); 149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(16, v[0]); 150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(StatusControllerTest, HasConflictingUpdates) { 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch StatusController status(routes_); 154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.HasConflictingUpdates()); 155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScopedModelSafeGroupRestriction r(&status, GROUP_UI); 157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.update_progress().HasConflictingUpdates()); 158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.mutable_update_progress()->AddAppliedUpdate(SUCCESS, 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch syncable::Id()); 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.mutable_update_progress()->AddAppliedUpdate(CONFLICT, 161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch syncable::Id()); 162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.update_progress().HasConflictingUpdates()); 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(status.HasConflictingUpdates()); 166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScopedModelSafeGroupRestriction r(&status, GROUP_PASSIVE); 169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(status.update_progress().HasConflictingUpdates()); 170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 173c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(StatusControllerTest, CountUpdates) { 174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch StatusController status(routes_); 175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0, status.CountUpdates()); 176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ClientToServerResponse* response(status.mutable_updates_response()); 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sync_pb::SyncEntity* entity1 = response->mutable_get_updates()->add_entries(); 178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sync_pb::SyncEntity* entity2 = response->mutable_get_updates()->add_entries(); 179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(entity1 != NULL && entity2 != NULL); 180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(2, status.CountUpdates()); 181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Test TotalNumConflictingItems 184c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(StatusControllerTest, TotalNumConflictingItems) { 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch StatusController status(routes_); 186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch TestIdFactory f; 187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScopedModelSafeGroupRestriction r(&status, GROUP_UI); 189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.mutable_conflict_progress()->AddConflictingItemById(f.NewLocalId()); 190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.mutable_conflict_progress()->AddConflictingItemById(f.NewLocalId()); 191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(2, status.conflict_progress().ConflictingItemsSize()); 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(2, status.TotalNumConflictingItems()); 194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScopedModelSafeGroupRestriction r(&status, GROUP_DB); 196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0, status.conflict_progress().ConflictingItemsSize()); 197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.mutable_conflict_progress()->AddConflictingItemById(f.NewLocalId()); 198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.mutable_conflict_progress()->AddConflictingItemById(f.NewLocalId()); 199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(2, status.conflict_progress().ConflictingItemsSize()); 200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(4, status.TotalNumConflictingItems()); 202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Basic test that non group-restricted state accessors don't cause violations. 205c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(StatusControllerTest, Unrestricted) { 206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch StatusController status(routes_); 207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.GetUnrestrictedUpdateProgress( 208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GROUP_UI)->SuccessfullyAppliedUpdateCount(); 209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.mutable_commit_message(); 210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.commit_response(); 211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.mutable_commit_response(); 212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.updates_response(); 213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.mutable_updates_response(); 214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.error_counters(); 215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.syncer_status(); 216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.num_server_changes_remaining(); 217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.commit_ids(); 218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.HasBookmarkCommitActivity(); 219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.download_updates_succeeded(); 220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.ServerSaysNothingMoreToDownload(); 221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch status.group_restriction(); 222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace sessions 225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace browser_sync 226