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