| 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 |