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( | 96 DeviceInfo write_device_info(user_share()->directory->cache_guid(), |
97 user_share()->directory->cache_guid(), | 97 "John’s Device", |
98 "John’s Device", "Chromium 3000", "ChromeSyncAgent 3000", | 98 "Chromium 3000", |
99 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 99 "ChromeSyncAgent 3000", |
| 100 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 101 "device_id"); |
100 WriteLocalDeviceInfo(write_device_info); | 102 WriteLocalDeviceInfo(write_device_info); |
101 | 103 |
102 scoped_ptr<DeviceInfo> read_device_info( | 104 scoped_ptr<DeviceInfo> read_device_info( |
103 synced_device_tracker_->ReadLocalDeviceInfo()); | 105 synced_device_tracker_->ReadLocalDeviceInfo()); |
104 ASSERT_TRUE(read_device_info); | 106 ASSERT_TRUE(read_device_info); |
105 EXPECT_TRUE(write_device_info.Equals(*read_device_info.get())); | 107 EXPECT_TRUE(write_device_info.Equals(*read_device_info.get())); |
106 | 108 |
107 EXPECT_EQ(1, GetObservedChangesCounter()); | 109 EXPECT_EQ(1, GetObservedChangesCounter()); |
108 } | 110 } |
109 | 111 |
110 // Restart scenario: update existing device info with identical data. | 112 // Restart scenario: update existing device info with identical data. |
111 TEST_F(SyncedDeviceTrackerTest, DontModifyExistingDeviceInfo) { | 113 TEST_F(SyncedDeviceTrackerTest, DontModifyExistingDeviceInfo) { |
112 // For writing. | 114 // For writing. |
113 DeviceInfo device_info( | 115 DeviceInfo device_info(user_share()->directory->cache_guid(), |
114 user_share()->directory->cache_guid(), | 116 "John’s Device", |
115 "John’s Device", "XYZ v1", "XYZ SyncAgent v1", | 117 "XYZ v1", |
116 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 118 "XYZ SyncAgent v1", |
| 119 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 120 "device_id"); |
117 WriteLocalDeviceInfo(device_info); | 121 WriteLocalDeviceInfo(device_info); |
118 | 122 |
119 // First read. | 123 // First read. |
120 scoped_ptr<DeviceInfo> old_device_info( | 124 scoped_ptr<DeviceInfo> old_device_info( |
121 synced_device_tracker_->ReadLocalDeviceInfo()); | 125 synced_device_tracker_->ReadLocalDeviceInfo()); |
122 ASSERT_TRUE(old_device_info); | 126 ASSERT_TRUE(old_device_info); |
123 | 127 |
124 ResetObservedChangesCounter(); | 128 ResetObservedChangesCounter(); |
125 | 129 |
126 // Overwrite the device info with the same data as before. | 130 // Overwrite the device info with the same data as before. |
127 WriteLocalDeviceInfo(device_info); | 131 WriteLocalDeviceInfo(device_info); |
128 | 132 |
129 // Ensure that this didn't count as a change worth syncing. | 133 // Ensure that this didn't count as a change worth syncing. |
130 EXPECT_EQ(0, GetObservedChangesCounter()); | 134 EXPECT_EQ(0, GetObservedChangesCounter()); |
131 | 135 |
132 // Second read. | 136 // Second read. |
133 scoped_ptr<DeviceInfo> new_device_info( | 137 scoped_ptr<DeviceInfo> new_device_info( |
134 synced_device_tracker_->ReadLocalDeviceInfo()); | 138 synced_device_tracker_->ReadLocalDeviceInfo()); |
135 ASSERT_TRUE(new_device_info); | 139 ASSERT_TRUE(new_device_info); |
136 EXPECT_TRUE(old_device_info->Equals(*new_device_info.get())); | 140 EXPECT_TRUE(old_device_info->Equals(*new_device_info.get())); |
137 } | 141 } |
138 | 142 |
139 // Upgrade scenario: update existing device info with new version. | 143 // Upgrade scenario: update existing device info with new version. |
140 TEST_F(SyncedDeviceTrackerTest, UpdateExistingDeviceInfo) { | 144 TEST_F(SyncedDeviceTrackerTest, UpdateExistingDeviceInfo) { |
141 // Write v1 device info. | 145 // Write v1 device info. |
142 DeviceInfo device_info_v1( | 146 DeviceInfo device_info_v1(user_share()->directory->cache_guid(), |
143 user_share()->directory->cache_guid(), | 147 "John’s Device", |
144 "John’s Device", "XYZ v1", "XYZ SyncAgent v1", | 148 "XYZ v1", |
145 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 149 "XYZ SyncAgent v1", |
| 150 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 151 "device_id1"); |
146 WriteLocalDeviceInfo(device_info_v1); | 152 WriteLocalDeviceInfo(device_info_v1); |
147 | 153 |
148 ResetObservedChangesCounter(); | 154 ResetObservedChangesCounter(); |
149 | 155 |
150 // Write upgraded device info. | 156 // Write upgraded device info. |
151 DeviceInfo device_info_v2( | 157 DeviceInfo device_info_v2(user_share()->directory->cache_guid(), |
152 user_share()->directory->cache_guid(), | 158 "John’s Device", |
153 "John’s Device", "XYZ v2", "XYZ SyncAgent v2", | 159 "XYZ v2", |
154 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 160 "XYZ SyncAgent v2", |
| 161 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 162 "device_id2"); |
155 WriteLocalDeviceInfo(device_info_v2); | 163 WriteLocalDeviceInfo(device_info_v2); |
156 | 164 |
157 // Verify result. | 165 // Verify result. |
158 scoped_ptr<DeviceInfo> result_device_info( | 166 scoped_ptr<DeviceInfo> result_device_info( |
159 synced_device_tracker_->ReadLocalDeviceInfo()); | 167 synced_device_tracker_->ReadLocalDeviceInfo()); |
160 ASSERT_TRUE(result_device_info); | 168 ASSERT_TRUE(result_device_info); |
161 | 169 |
162 EXPECT_TRUE(result_device_info->Equals(device_info_v2)); | 170 EXPECT_TRUE(result_device_info->Equals(device_info_v2)); |
163 | 171 |
164 // The update write should have sent a nudge. | 172 // The update write should have sent a nudge. |
165 EXPECT_EQ(1, GetObservedChangesCounter()); | 173 EXPECT_EQ(1, GetObservedChangesCounter()); |
166 } | 174 } |
167 | 175 |
168 // Test retrieving DeviceInfos for all the syncing devices. | 176 // Test retrieving DeviceInfos for all the syncing devices. |
169 TEST_F(SyncedDeviceTrackerTest, GetAllDeviceInfo) { | 177 TEST_F(SyncedDeviceTrackerTest, GetAllDeviceInfo) { |
170 DeviceInfo device_info1( | 178 DeviceInfo device_info1(base::GenerateGUID(), |
171 base::GenerateGUID(), | 179 "abc Device", |
172 "abc Device", "XYZ v1", "XYZ SyncAgent v1", | 180 "XYZ v1", |
173 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 181 "XYZ SyncAgent v1", |
| 182 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 183 "device_id1"); |
174 | 184 |
175 std::string guid1 = base::GenerateGUID(); | 185 std::string guid1 = base::GenerateGUID(); |
176 | 186 |
177 DeviceInfo device_info2( | 187 DeviceInfo device_info2(base::GenerateGUID(), |
178 base::GenerateGUID(), | 188 "def Device", |
179 "def Device", "XYZ v2", "XYZ SyncAgent v2", | 189 "XYZ v2", |
180 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 190 "XYZ SyncAgent v2", |
| 191 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 192 "device_id2"); |
181 | 193 |
182 std::string guid2 = base::GenerateGUID(); | 194 std::string guid2 = base::GenerateGUID(); |
183 | 195 |
184 WriteDeviceInfo(device_info1); | 196 WriteDeviceInfo(device_info1); |
185 WriteDeviceInfo(device_info2); | 197 WriteDeviceInfo(device_info2); |
186 | 198 |
187 ScopedVector<DeviceInfo> device_info; | 199 ScopedVector<DeviceInfo> device_info; |
188 synced_device_tracker_->GetAllSyncedDeviceInfo(&device_info); | 200 synced_device_tracker_->GetAllSyncedDeviceInfo(&device_info); |
189 | 201 |
190 EXPECT_EQ(device_info.size(), 2U); | 202 EXPECT_EQ(device_info.size(), 2U); |
191 EXPECT_TRUE(device_info[0]->Equals(device_info1)); | 203 EXPECT_TRUE(device_info[0]->Equals(device_info1)); |
192 EXPECT_TRUE(device_info[1]->Equals(device_info2)); | 204 EXPECT_TRUE(device_info[1]->Equals(device_info2)); |
193 } | 205 } |
194 | 206 |
195 TEST_F(SyncedDeviceTrackerTest, DeviceBackupTime) { | 207 TEST_F(SyncedDeviceTrackerTest, DeviceBackupTime) { |
196 DeviceInfo device_info( | 208 DeviceInfo device_info(user_share()->directory->cache_guid(), |
197 user_share()->directory->cache_guid(), | 209 "John’s Device", |
198 "John’s Device", "XYZ v1", "XYZ SyncAgent v1", | 210 "XYZ v1", |
199 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 211 "XYZ SyncAgent v1", |
| 212 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 213 "device_id"); |
200 const base::Time test_backup_time = | 214 const base::Time test_backup_time = |
201 base::Time::UnixEpoch() + base::TimeDelta::FromDays(10000); | 215 base::Time::UnixEpoch() + base::TimeDelta::FromDays(10000); |
202 | 216 |
203 WriteLocalDeviceInfo(device_info); | 217 WriteLocalDeviceInfo(device_info); |
204 synced_device_tracker_->UpdateLocalDeviceBackupTime(test_backup_time); | 218 synced_device_tracker_->UpdateLocalDeviceBackupTime(test_backup_time); |
205 | 219 |
206 // Verify read of device info and backup time. | 220 // Verify read of device info and backup time. |
207 EXPECT_EQ(test_backup_time, | 221 EXPECT_EQ(test_backup_time, |
208 synced_device_tracker_->GetLocalDeviceBackupTime()); | 222 synced_device_tracker_->GetLocalDeviceBackupTime()); |
209 scoped_ptr<DeviceInfo> device_info_out( | 223 scoped_ptr<DeviceInfo> device_info_out( |
210 synced_device_tracker_->ReadLocalDeviceInfo()); | 224 synced_device_tracker_->ReadLocalDeviceInfo()); |
211 ASSERT_TRUE(device_info_out); | 225 ASSERT_TRUE(device_info_out); |
212 EXPECT_TRUE(device_info.Equals(*device_info_out.get())); | 226 EXPECT_TRUE(device_info.Equals(*device_info_out.get())); |
213 | 227 |
214 // Verify backup time is not lost after updating device info. | 228 // Verify backup time is not lost after updating device info. |
215 DeviceInfo device_info2( | 229 DeviceInfo device_info2(user_share()->directory->cache_guid(), |
216 user_share()->directory->cache_guid(), | 230 "def Device", |
217 "def Device", "XYZ v2", "XYZ SyncAgent v2", | 231 "XYZ v2", |
218 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 232 "XYZ SyncAgent v2", |
| 233 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 234 "device_id"); |
219 WriteLocalDeviceInfo(device_info2); | 235 WriteLocalDeviceInfo(device_info2); |
220 EXPECT_EQ(test_backup_time, | 236 EXPECT_EQ(test_backup_time, |
221 synced_device_tracker_->GetLocalDeviceBackupTime()); | 237 synced_device_tracker_->GetLocalDeviceBackupTime()); |
222 } | 238 } |
223 | 239 |
224 } // namespace | 240 } // namespace |
225 | 241 |
226 } // namespace browser_sync | 242 } // namespace browser_sync |
OLD | NEW |