Move Webstore URL concepts to //extensions and out
[chromium-blink-merge.git] / chrome / browser / sync / test / integration / enable_disable_test.cc
blobfdb7f57ad6b3ed6f231e7da4bcd5c4a4bb117da5
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/sync/profile_sync_service.h"
6 #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
7 #include "chrome/browser/sync/test/integration/sync_test.h"
8 #include "sync/internal_api/public/base/model_type.h"
9 #include "sync/internal_api/public/read_node.h"
10 #include "sync/internal_api/public/read_transaction.h"
12 // This file contains tests that exercise enabling and disabling data
13 // types.
15 namespace {
17 class EnableDisableSingleClientTest : public SyncTest {
18 public:
19 EnableDisableSingleClientTest() : SyncTest(SINGLE_CLIENT) {}
20 virtual ~EnableDisableSingleClientTest() {}
22 // Don't use self-notifications as they can trigger additional sync cycles.
23 virtual bool TestUsesSelfNotifications() OVERRIDE { return false; }
24 private:
25 DISALLOW_COPY_AND_ASSIGN(EnableDisableSingleClientTest);
28 bool DoesTopLevelNodeExist(syncer::UserShare* user_share,
29 syncer::ModelType type) {
30 syncer::ReadTransaction trans(FROM_HERE, user_share);
31 syncer::ReadNode node(&trans);
32 return node.InitTypeRoot(type) == syncer::BaseNode::INIT_OK;
35 bool IsUnready(const sync_driver::DataTypeStatusTable& data_type_status_table,
36 syncer::ModelType type) {
37 return data_type_status_table.GetUnreadyErrorTypes().Has(type);
40 IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, EnableOneAtATime) {
41 ASSERT_TRUE(SetupClients());
43 // Setup sync with no enabled types.
44 ASSERT_TRUE(GetClient(0)->SetupSync(syncer::ModelTypeSet()));
46 const syncer::ModelTypeSet registered_types =
47 GetSyncService(0)->GetRegisteredDataTypes();
48 syncer::UserShare* user_share = GetSyncService(0)->GetUserShare();
49 const sync_driver::DataTypeStatusTable& data_type_status_table =
50 GetSyncService(0)->data_type_status_table();
51 for (syncer::ModelTypeSet::Iterator it = registered_types.First();
52 it.Good(); it.Inc()) {
53 ASSERT_TRUE(GetClient(0)->EnableSyncForDatatype(it.Get()));
55 // AUTOFILL_PROFILE is lumped together with AUTOFILL.
56 // SESSIONS is lumped together with PROXY_TABS and
57 // HISTORY_DELETE_DIRECTIVES.
58 // Favicons are lumped together with PROXY_TABS and
59 // HISTORY_DELETE_DIRECTIVES.
60 if (it.Get() == syncer::AUTOFILL_PROFILE || it.Get() == syncer::SESSIONS) {
61 continue;
64 if (!syncer::ProxyTypes().Has(it.Get())) {
65 ASSERT_TRUE(DoesTopLevelNodeExist(user_share, it.Get()) ||
66 IsUnready(data_type_status_table, it.Get()))
67 << syncer::ModelTypeToString(it.Get());
70 // AUTOFILL_PROFILE is lumped together with AUTOFILL.
71 if (it.Get() == syncer::AUTOFILL) {
72 ASSERT_TRUE(DoesTopLevelNodeExist(user_share,
73 syncer::AUTOFILL_PROFILE));
74 } else if (it.Get() == syncer::HISTORY_DELETE_DIRECTIVES ||
75 it.Get() == syncer::PROXY_TABS) {
76 ASSERT_TRUE(DoesTopLevelNodeExist(user_share,
77 syncer::SESSIONS));
82 IN_PROC_BROWSER_TEST_F(EnableDisableSingleClientTest, DisableOneAtATime) {
83 ASSERT_TRUE(SetupClients());
85 // Setup sync with no disabled types.
86 ASSERT_TRUE(GetClient(0)->SetupSync());
88 const syncer::ModelTypeSet registered_types =
89 GetSyncService(0)->GetRegisteredDataTypes();
91 syncer::UserShare* user_share = GetSyncService(0)->GetUserShare();
93 const sync_driver::DataTypeStatusTable& data_type_status_table =
94 GetSyncService(0)->data_type_status_table();
96 // Make sure all top-level nodes exist first.
97 for (syncer::ModelTypeSet::Iterator it = registered_types.First();
98 it.Good(); it.Inc()) {
99 if (!syncer::ProxyTypes().Has(it.Get())) {
100 ASSERT_TRUE(DoesTopLevelNodeExist(user_share, it.Get()) ||
101 IsUnready(data_type_status_table, it.Get()));
105 for (syncer::ModelTypeSet::Iterator it = registered_types.First();
106 it.Good(); it.Inc()) {
107 // SUPERVISED_USERS and SUPERVISED_USER_SHARED_SETTINGS are always synced.
108 if (it.Get() == syncer::SUPERVISED_USERS ||
109 it.Get() == syncer::SUPERVISED_USER_SHARED_SETTINGS ||
110 it.Get() == syncer::SYNCED_NOTIFICATIONS ||
111 it.Get() == syncer::SYNCED_NOTIFICATION_APP_INFO)
112 continue;
114 ASSERT_TRUE(GetClient(0)->DisableSyncForDatatype(it.Get()));
116 // AUTOFILL_PROFILE is lumped together with AUTOFILL.
117 // SESSIONS is lumped together with PROXY_TABS and TYPED_URLS.
118 // HISTORY_DELETE_DIRECTIVES is lumped together with TYPED_URLS.
119 // PRIORITY_PREFERENCES is lumped together with PREFERENCES.
120 // Favicons are lumped together with PROXY_TABS and
121 // HISTORY_DELETE_DIRECTIVES.
122 if (it.Get() == syncer::AUTOFILL_PROFILE ||
123 it.Get() == syncer::SESSIONS ||
124 it.Get() == syncer::HISTORY_DELETE_DIRECTIVES ||
125 it.Get() == syncer::PRIORITY_PREFERENCES ||
126 it.Get() == syncer::FAVICON_IMAGES ||
127 it.Get() == syncer::FAVICON_TRACKING) {
128 continue;
131 syncer::UserShare* user_share =
132 GetSyncService(0)->GetUserShare();
134 ASSERT_FALSE(DoesTopLevelNodeExist(user_share, it.Get()))
135 << syncer::ModelTypeToString(it.Get());
137 if (it.Get() == syncer::AUTOFILL) {
138 // AUTOFILL_PROFILE is lumped together with AUTOFILL.
139 ASSERT_FALSE(DoesTopLevelNodeExist(user_share, syncer::AUTOFILL_PROFILE));
140 } else if (it.Get() == syncer::TYPED_URLS) {
141 ASSERT_FALSE(DoesTopLevelNodeExist(user_share,
142 syncer::HISTORY_DELETE_DIRECTIVES));
143 // SESSIONS should be enabled only if PROXY_TABS is.
144 ASSERT_EQ(GetClient(0)->IsTypePreferred(syncer::PROXY_TABS),
145 DoesTopLevelNodeExist(user_share, syncer::SESSIONS));
146 } else if (it.Get() == syncer::PROXY_TABS) {
147 // SESSIONS should be enabled only if TYPED_URLS is.
148 ASSERT_EQ(GetClient(0)->IsTypePreferred(syncer::TYPED_URLS),
149 DoesTopLevelNodeExist(user_share, syncer::SESSIONS));
150 } else if (it.Get() == syncer::PREFERENCES) {
151 ASSERT_FALSE(DoesTopLevelNodeExist(user_share,
152 syncer::PRIORITY_PREFERENCES));
157 } // namespace