OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
6 | 6 |
7 #include "base/guid.h" | 7 #include "base/guid.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/memory/scoped_vector.h" | 9 #include "base/memory/scoped_vector.h" |
10 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 // New client scenario: set device info when no previous info existed. | 86 // New client scenario: set device info when no previous info existed. |
87 TEST_F(SyncedDeviceTrackerTest, CreateNewDeviceInfo) { | 87 TEST_F(SyncedDeviceTrackerTest, CreateNewDeviceInfo) { |
88 ASSERT_FALSE(synced_device_tracker_->ReadLocalDeviceInfo()); | 88 ASSERT_FALSE(synced_device_tracker_->ReadLocalDeviceInfo()); |
89 | 89 |
90 ResetObservedChangesCounter(); | 90 ResetObservedChangesCounter(); |
91 | 91 |
92 // Include the non-ASCII character "’" (typographic apostrophe) in the client | 92 // Include the non-ASCII character "’" (typographic apostrophe) in the client |
93 // name to ensure that SyncedDeviceTracker can properly handle non-ASCII | 93 // name to ensure that SyncedDeviceTracker can properly handle non-ASCII |
94 // characters, which client names can include on some platforms (e.g., Mac | 94 // characters, which client names can include on some platforms (e.g., Mac |
95 // and iOS). | 95 // and iOS). |
96 DeviceInfo write_device_info(user_share()->directory->cache_guid(), | 96 DeviceInfo write_device_info( |
97 "John’s Device", | 97 user_share()->directory->cache_guid(), |
98 "Chromium 3000", | 98 "John’s Device", "Chromium 3000", "ChromeSyncAgent 3000", |
99 "ChromeSyncAgent 3000", | 99 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); |
100 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, | |
101 "device_id"); | |
102 WriteLocalDeviceInfo(write_device_info); | 100 WriteLocalDeviceInfo(write_device_info); |
103 | 101 |
104 scoped_ptr<DeviceInfo> read_device_info( | 102 scoped_ptr<DeviceInfo> read_device_info( |
105 synced_device_tracker_->ReadLocalDeviceInfo()); | 103 synced_device_tracker_->ReadLocalDeviceInfo()); |
106 ASSERT_TRUE(read_device_info); | 104 ASSERT_TRUE(read_device_info); |
107 EXPECT_TRUE(write_device_info.Equals(*read_device_info.get())); | 105 EXPECT_TRUE(write_device_info.Equals(*read_device_info.get())); |
108 | 106 |
109 EXPECT_EQ(1, GetObservedChangesCounter()); | 107 EXPECT_EQ(1, GetObservedChangesCounter()); |
110 } | 108 } |
111 | 109 |
112 // Restart scenario: update existing device info with identical data. | 110 // Restart scenario: update existing device info with identical data. |
113 TEST_F(SyncedDeviceTrackerTest, DontModifyExistingDeviceInfo) { | 111 TEST_F(SyncedDeviceTrackerTest, DontModifyExistingDeviceInfo) { |
114 // For writing. | 112 // For writing. |
115 DeviceInfo device_info(user_share()->directory->cache_guid(), | 113 DeviceInfo device_info( |
116 "John’s Device", | 114 user_share()->directory->cache_guid(), |
117 "XYZ v1", | 115 "John’s Device", "XYZ v1", "XYZ SyncAgent v1", |
118 "XYZ SyncAgent v1", | 116 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); |
119 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, | |
120 "device_id"); | |
121 WriteLocalDeviceInfo(device_info); | 117 WriteLocalDeviceInfo(device_info); |
122 | 118 |
123 // First read. | 119 // First read. |
124 scoped_ptr<DeviceInfo> old_device_info( | 120 scoped_ptr<DeviceInfo> old_device_info( |
125 synced_device_tracker_->ReadLocalDeviceInfo()); | 121 synced_device_tracker_->ReadLocalDeviceInfo()); |
126 ASSERT_TRUE(old_device_info); | 122 ASSERT_TRUE(old_device_info); |
127 | 123 |
128 ResetObservedChangesCounter(); | 124 ResetObservedChangesCounter(); |
129 | 125 |
130 // Overwrite the device info with the same data as before. | 126 // Overwrite the device info with the same data as before. |
131 WriteLocalDeviceInfo(device_info); | 127 WriteLocalDeviceInfo(device_info); |
132 | 128 |
133 // Ensure that this didn't count as a change worth syncing. | 129 // Ensure that this didn't count as a change worth syncing. |
134 EXPECT_EQ(0, GetObservedChangesCounter()); | 130 EXPECT_EQ(0, GetObservedChangesCounter()); |
135 | 131 |
136 // Second read. | 132 // Second read. |
137 scoped_ptr<DeviceInfo> new_device_info( | 133 scoped_ptr<DeviceInfo> new_device_info( |
138 synced_device_tracker_->ReadLocalDeviceInfo()); | 134 synced_device_tracker_->ReadLocalDeviceInfo()); |
139 ASSERT_TRUE(new_device_info); | 135 ASSERT_TRUE(new_device_info); |
140 EXPECT_TRUE(old_device_info->Equals(*new_device_info.get())); | 136 EXPECT_TRUE(old_device_info->Equals(*new_device_info.get())); |
141 } | 137 } |
142 | 138 |
143 // Upgrade scenario: update existing device info with new version. | 139 // Upgrade scenario: update existing device info with new version. |
144 TEST_F(SyncedDeviceTrackerTest, UpdateExistingDeviceInfo) { | 140 TEST_F(SyncedDeviceTrackerTest, UpdateExistingDeviceInfo) { |
145 // Write v1 device info. | 141 // Write v1 device info. |
146 DeviceInfo device_info_v1(user_share()->directory->cache_guid(), | 142 DeviceInfo device_info_v1( |
147 "John’s Device", | 143 user_share()->directory->cache_guid(), |
148 "XYZ v1", | 144 "John’s Device", "XYZ v1", "XYZ SyncAgent v1", |
149 "XYZ SyncAgent v1", | 145 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); |
150 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, | |
151 "device_id1"); | |
152 WriteLocalDeviceInfo(device_info_v1); | 146 WriteLocalDeviceInfo(device_info_v1); |
153 | 147 |
154 ResetObservedChangesCounter(); | 148 ResetObservedChangesCounter(); |
155 | 149 |
156 // Write upgraded device info. | 150 // Write upgraded device info. |
157 DeviceInfo device_info_v2(user_share()->directory->cache_guid(), | 151 DeviceInfo device_info_v2( |
158 "John’s Device", | 152 user_share()->directory->cache_guid(), |
159 "XYZ v2", | 153 "John’s Device", "XYZ v2", "XYZ SyncAgent v2", |
160 "XYZ SyncAgent v2", | 154 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); |
161 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, | |
162 "device_id2"); | |
163 WriteLocalDeviceInfo(device_info_v2); | 155 WriteLocalDeviceInfo(device_info_v2); |
164 | 156 |
165 // Verify result. | 157 // Verify result. |
166 scoped_ptr<DeviceInfo> result_device_info( | 158 scoped_ptr<DeviceInfo> result_device_info( |
167 synced_device_tracker_->ReadLocalDeviceInfo()); | 159 synced_device_tracker_->ReadLocalDeviceInfo()); |
168 ASSERT_TRUE(result_device_info); | 160 ASSERT_TRUE(result_device_info); |
169 | 161 |
170 EXPECT_TRUE(result_device_info->Equals(device_info_v2)); | 162 EXPECT_TRUE(result_device_info->Equals(device_info_v2)); |
171 | 163 |
172 // The update write should have sent a nudge. | 164 // The update write should have sent a nudge. |
173 EXPECT_EQ(1, GetObservedChangesCounter()); | 165 EXPECT_EQ(1, GetObservedChangesCounter()); |
174 } | 166 } |
175 | 167 |
176 // Test retrieving DeviceInfos for all the syncing devices. | 168 // Test retrieving DeviceInfos for all the syncing devices. |
177 TEST_F(SyncedDeviceTrackerTest, GetAllDeviceInfo) { | 169 TEST_F(SyncedDeviceTrackerTest, GetAllDeviceInfo) { |
178 DeviceInfo device_info1(base::GenerateGUID(), | 170 DeviceInfo device_info1( |
179 "abc Device", | 171 base::GenerateGUID(), |
180 "XYZ v1", | 172 "abc Device", "XYZ v1", "XYZ SyncAgent v1", |
181 "XYZ SyncAgent v1", | 173 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); |
182 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, | |
183 "device_id1"); | |
184 | 174 |
185 std::string guid1 = base::GenerateGUID(); | 175 std::string guid1 = base::GenerateGUID(); |
186 | 176 |
187 DeviceInfo device_info2(base::GenerateGUID(), | 177 DeviceInfo device_info2( |
188 "def Device", | 178 base::GenerateGUID(), |
189 "XYZ v2", | 179 "def Device", "XYZ v2", "XYZ SyncAgent v2", |
190 "XYZ SyncAgent v2", | 180 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); |
191 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, | |
192 "device_id2"); | |
193 | 181 |
194 std::string guid2 = base::GenerateGUID(); | 182 std::string guid2 = base::GenerateGUID(); |
195 | 183 |
196 WriteDeviceInfo(device_info1); | 184 WriteDeviceInfo(device_info1); |
197 WriteDeviceInfo(device_info2); | 185 WriteDeviceInfo(device_info2); |
198 | 186 |
199 ScopedVector<DeviceInfo> device_info; | 187 ScopedVector<DeviceInfo> device_info; |
200 synced_device_tracker_->GetAllSyncedDeviceInfo(&device_info); | 188 synced_device_tracker_->GetAllSyncedDeviceInfo(&device_info); |
201 | 189 |
202 EXPECT_EQ(device_info.size(), 2U); | 190 EXPECT_EQ(device_info.size(), 2U); |
203 EXPECT_TRUE(device_info[0]->Equals(device_info1)); | 191 EXPECT_TRUE(device_info[0]->Equals(device_info1)); |
204 EXPECT_TRUE(device_info[1]->Equals(device_info2)); | 192 EXPECT_TRUE(device_info[1]->Equals(device_info2)); |
205 } | 193 } |
206 | 194 |
207 TEST_F(SyncedDeviceTrackerTest, DeviceBackupTime) { | 195 TEST_F(SyncedDeviceTrackerTest, DeviceBackupTime) { |
208 DeviceInfo device_info(user_share()->directory->cache_guid(), | 196 DeviceInfo device_info( |
209 "John’s Device", | 197 user_share()->directory->cache_guid(), |
210 "XYZ v1", | 198 "John’s Device", "XYZ v1", "XYZ SyncAgent v1", |
211 "XYZ SyncAgent v1", | 199 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); |
212 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, | |
213 "device_id"); | |
214 const base::Time test_backup_time = | 200 const base::Time test_backup_time = |
215 base::Time::UnixEpoch() + base::TimeDelta::FromDays(10000); | 201 base::Time::UnixEpoch() + base::TimeDelta::FromDays(10000); |
216 | 202 |
217 WriteLocalDeviceInfo(device_info); | 203 WriteLocalDeviceInfo(device_info); |
218 synced_device_tracker_->UpdateLocalDeviceBackupTime(test_backup_time); | 204 synced_device_tracker_->UpdateLocalDeviceBackupTime(test_backup_time); |
219 | 205 |
220 // Verify read of device info and backup time. | 206 // Verify read of device info and backup time. |
221 EXPECT_EQ(test_backup_time, | 207 EXPECT_EQ(test_backup_time, |
222 synced_device_tracker_->GetLocalDeviceBackupTime()); | 208 synced_device_tracker_->GetLocalDeviceBackupTime()); |
223 scoped_ptr<DeviceInfo> device_info_out( | 209 scoped_ptr<DeviceInfo> device_info_out( |
224 synced_device_tracker_->ReadLocalDeviceInfo()); | 210 synced_device_tracker_->ReadLocalDeviceInfo()); |
225 ASSERT_TRUE(device_info_out); | 211 ASSERT_TRUE(device_info_out); |
226 EXPECT_TRUE(device_info.Equals(*device_info_out.get())); | 212 EXPECT_TRUE(device_info.Equals(*device_info_out.get())); |
227 | 213 |
228 // Verify backup time is not lost after updating device info. | 214 // Verify backup time is not lost after updating device info. |
229 DeviceInfo device_info2(user_share()->directory->cache_guid(), | 215 DeviceInfo device_info2( |
230 "def Device", | 216 user_share()->directory->cache_guid(), |
231 "XYZ v2", | 217 "def Device", "XYZ v2", "XYZ SyncAgent v2", |
232 "XYZ SyncAgent v2", | 218 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); |
233 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, | |
234 "device_id"); | |
235 WriteLocalDeviceInfo(device_info2); | 219 WriteLocalDeviceInfo(device_info2); |
236 EXPECT_EQ(test_backup_time, | 220 EXPECT_EQ(test_backup_time, |
237 synced_device_tracker_->GetLocalDeviceBackupTime()); | 221 synced_device_tracker_->GetLocalDeviceBackupTime()); |
238 } | 222 } |
239 | 223 |
240 } // namespace | 224 } // namespace |
241 | 225 |
242 } // namespace browser_sync | 226 } // namespace browser_sync |
OLD | NEW |