1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2010 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 <vector> 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/engine/cleanup_disabled_types_command.h" 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/engine/syncer_end_command.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/sessions/sync_session.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/test/sync/engine/syncer_command_test.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gmock/include/gmock/gmock.h" 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochusing testing::_; 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace browser_sync { 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass CleanupDisabledTypesCommandTest : public MockDirectorySyncerCommandTest { 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CleanupDisabledTypesCommandTest() { 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (int i = syncable::FIRST_REAL_MODEL_TYPE; 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch i < syncable::MODEL_TYPE_COUNT; i++) { 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch all_types_.insert(syncable::ModelTypeFromInt(i)); 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetUp() { 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch mutable_routing_info()->clear(); 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*mutable_routing_info())[syncable::BOOKMARKS] = GROUP_PASSIVE; 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MockDirectorySyncerCommandTest::SetUp(); 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Overridden to allow SyncerEndCommand Execute to work. 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual bool IsSyncingCurrentlySilenced() { 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return false; 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const syncable::ModelTypeSet& all_types() { return all_types_; } 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch syncable::ModelTypeSet all_types_; 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// TODO(tim): Add syncer test to verify previous routing info is set. 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(CleanupDisabledTypesCommandTest, NoPreviousRoutingInfo) { 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CleanupDisabledTypesCommand command; 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch syncable::ModelTypeSet expected(all_types()); 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected.erase(syncable::BOOKMARKS); 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_CALL(*mock_directory(), PurgeEntriesWithTypeIn(expected)); 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch command.ExecuteImpl(session()); 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(CleanupDisabledTypesCommandTest, NoPurge) { 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CleanupDisabledTypesCommand command; 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_CALL(*mock_directory(), PurgeEntriesWithTypeIn(_)).Times(0); 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ModelSafeRoutingInfo prev(routing_info()); 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch session()->context()->set_previous_session_routing_info(prev); 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*mutable_routing_info())[syncable::AUTOFILL] = GROUP_PASSIVE; 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch command.ExecuteImpl(session()); 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prev = routing_info(); 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch command.ExecuteImpl(session()); 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(CleanupDisabledTypesCommandTest, TypeDisabled) { 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch CleanupDisabledTypesCommand command; 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch syncable::ModelTypeSet expected; 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected.insert(syncable::PASSWORDS); 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch expected.insert(syncable::PREFERENCES); 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*mutable_routing_info())[syncable::AUTOFILL] = GROUP_PASSIVE; 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*mutable_routing_info())[syncable::THEMES] = GROUP_PASSIVE; 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*mutable_routing_info())[syncable::EXTENSIONS] = GROUP_PASSIVE; 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ModelSafeRoutingInfo prev(routing_info()); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prev[syncable::PASSWORDS] = GROUP_PASSIVE; 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch prev[syncable::PREFERENCES] = GROUP_PASSIVE; 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch session()->context()->set_previous_session_routing_info(prev); 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_CALL(*mock_directory(), PurgeEntriesWithTypeIn(expected)); 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch command.ExecuteImpl(session()); 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace browser_sync 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 87