| 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 12 matching lines...) Expand all Loading... |
| 23 namespace { | 23 namespace { |
| 24 | 24 |
| 25 void ConvertDeviceInfoSpecifics( | 25 void ConvertDeviceInfoSpecifics( |
| 26 const DeviceInfo& device_info, | 26 const DeviceInfo& device_info, |
| 27 sync_pb::DeviceInfoSpecifics* specifics) { | 27 sync_pb::DeviceInfoSpecifics* specifics) { |
| 28 specifics->set_cache_guid(device_info.guid()); | 28 specifics->set_cache_guid(device_info.guid()); |
| 29 specifics->set_client_name(device_info.client_name()); | 29 specifics->set_client_name(device_info.client_name()); |
| 30 specifics->set_chrome_version(device_info.chrome_version()); | 30 specifics->set_chrome_version(device_info.chrome_version()); |
| 31 specifics->set_sync_user_agent(device_info.sync_user_agent()); | 31 specifics->set_sync_user_agent(device_info.sync_user_agent()); |
| 32 specifics->set_device_type(device_info.device_type()); | 32 specifics->set_device_type(device_info.device_type()); |
| 33 specifics->set_signin_scoped_device_id(device_info.signin_scoped_device_id()); |
| 33 } | 34 } |
| 34 | 35 |
| 35 } // namespace | 36 } // namespace |
| 36 | 37 |
| 37 class SyncedDeviceTrackerTest : public ::testing::Test { | 38 class SyncedDeviceTrackerTest : public ::testing::Test { |
| 38 protected: | 39 protected: |
| 39 SyncedDeviceTrackerTest() : transaction_count_baseline_(0) { } | 40 SyncedDeviceTrackerTest() : transaction_count_baseline_(0) { } |
| 40 virtual ~SyncedDeviceTrackerTest() { } | 41 virtual ~SyncedDeviceTrackerTest() { } |
| 41 | 42 |
| 42 virtual void SetUp() { | 43 virtual void SetUp() { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 // New client scenario: set device info when no previous info existed. | 103 // New client scenario: set device info when no previous info existed. |
| 103 TEST_F(SyncedDeviceTrackerTest, CreateNewDeviceInfo) { | 104 TEST_F(SyncedDeviceTrackerTest, CreateNewDeviceInfo) { |
| 104 ASSERT_FALSE(synced_device_tracker_->ReadLocalDeviceInfo()); | 105 ASSERT_FALSE(synced_device_tracker_->ReadLocalDeviceInfo()); |
| 105 | 106 |
| 106 ResetObservedChangesCounter(); | 107 ResetObservedChangesCounter(); |
| 107 | 108 |
| 108 // Include the non-ASCII character "’" (typographic apostrophe) in the client | 109 // Include the non-ASCII character "’" (typographic apostrophe) in the client |
| 109 // name to ensure that SyncedDeviceTracker can properly handle non-ASCII | 110 // name to ensure that SyncedDeviceTracker can properly handle non-ASCII |
| 110 // characters, which client names can include on some platforms (e.g., Mac | 111 // characters, which client names can include on some platforms (e.g., Mac |
| 111 // and iOS). | 112 // and iOS). |
| 112 DeviceInfo write_device_info( | 113 DeviceInfo write_device_info(user_share()->directory->cache_guid(), |
| 113 user_share()->directory->cache_guid(), | 114 "John’s Device", |
| 114 "John’s Device", "Chromium 3000", "ChromeSyncAgent 3000", | 115 "Chromium 3000", |
| 115 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 116 "ChromeSyncAgent 3000", |
| 117 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 118 "device_id"); |
| 116 WriteLocalDeviceInfo(write_device_info); | 119 WriteLocalDeviceInfo(write_device_info); |
| 117 | 120 |
| 118 scoped_ptr<DeviceInfo> read_device_info( | 121 scoped_ptr<DeviceInfo> read_device_info( |
| 119 synced_device_tracker_->ReadLocalDeviceInfo()); | 122 synced_device_tracker_->ReadLocalDeviceInfo()); |
| 120 ASSERT_TRUE(read_device_info); | 123 ASSERT_TRUE(read_device_info); |
| 121 EXPECT_TRUE(write_device_info.Equals(*read_device_info.get())); | 124 EXPECT_TRUE(write_device_info.Equals(*read_device_info.get())); |
| 122 | 125 |
| 123 EXPECT_EQ(1, GetObservedChangesCounter()); | 126 EXPECT_EQ(1, GetObservedChangesCounter()); |
| 124 } | 127 } |
| 125 | 128 |
| 126 // Restart scenario: update existing device info with identical data. | 129 // Restart scenario: update existing device info with identical data. |
| 127 TEST_F(SyncedDeviceTrackerTest, DontModifyExistingDeviceInfo) { | 130 TEST_F(SyncedDeviceTrackerTest, DontModifyExistingDeviceInfo) { |
| 128 // For writing. | 131 // For writing. |
| 129 DeviceInfo device_info( | 132 DeviceInfo device_info(user_share()->directory->cache_guid(), |
| 130 user_share()->directory->cache_guid(), | 133 "John’s Device", |
| 131 "John’s Device", "XYZ v1", "XYZ SyncAgent v1", | 134 "XYZ v1", |
| 132 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 135 "XYZ SyncAgent v1", |
| 136 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 137 "device_id"); |
| 133 WriteLocalDeviceInfo(device_info); | 138 WriteLocalDeviceInfo(device_info); |
| 134 | 139 |
| 135 // First read. | 140 // First read. |
| 136 scoped_ptr<DeviceInfo> old_device_info( | 141 scoped_ptr<DeviceInfo> old_device_info( |
| 137 synced_device_tracker_->ReadLocalDeviceInfo()); | 142 synced_device_tracker_->ReadLocalDeviceInfo()); |
| 138 ASSERT_TRUE(old_device_info); | 143 ASSERT_TRUE(old_device_info); |
| 139 | 144 |
| 140 ResetObservedChangesCounter(); | 145 ResetObservedChangesCounter(); |
| 141 | 146 |
| 142 // Overwrite the device info with the same data as before. | 147 // Overwrite the device info with the same data as before. |
| 143 WriteLocalDeviceInfo(device_info); | 148 WriteLocalDeviceInfo(device_info); |
| 144 | 149 |
| 145 // Ensure that this didn't count as a change worth syncing. | 150 // Ensure that this didn't count as a change worth syncing. |
| 146 EXPECT_EQ(0, GetObservedChangesCounter()); | 151 EXPECT_EQ(0, GetObservedChangesCounter()); |
| 147 | 152 |
| 148 // Second read. | 153 // Second read. |
| 149 scoped_ptr<DeviceInfo> new_device_info( | 154 scoped_ptr<DeviceInfo> new_device_info( |
| 150 synced_device_tracker_->ReadLocalDeviceInfo()); | 155 synced_device_tracker_->ReadLocalDeviceInfo()); |
| 151 ASSERT_TRUE(new_device_info); | 156 ASSERT_TRUE(new_device_info); |
| 152 EXPECT_TRUE(old_device_info->Equals(*new_device_info.get())); | 157 EXPECT_TRUE(old_device_info->Equals(*new_device_info.get())); |
| 153 } | 158 } |
| 154 | 159 |
| 155 // Upgrade scenario: update existing device info with new version. | 160 // Upgrade scenario: update existing device info with new version. |
| 156 TEST_F(SyncedDeviceTrackerTest, UpdateExistingDeviceInfo) { | 161 TEST_F(SyncedDeviceTrackerTest, UpdateExistingDeviceInfo) { |
| 157 // Write v1 device info. | 162 // Write v1 device info. |
| 158 DeviceInfo device_info_v1( | 163 DeviceInfo device_info_v1(user_share()->directory->cache_guid(), |
| 159 user_share()->directory->cache_guid(), | 164 "John’s Device", |
| 160 "John’s Device", "XYZ v1", "XYZ SyncAgent v1", | 165 "XYZ v1", |
| 161 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 166 "XYZ SyncAgent v1", |
| 167 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 168 "device_id1"); |
| 162 WriteLocalDeviceInfo(device_info_v1); | 169 WriteLocalDeviceInfo(device_info_v1); |
| 163 | 170 |
| 164 ResetObservedChangesCounter(); | 171 ResetObservedChangesCounter(); |
| 165 | 172 |
| 166 // Write upgraded device info. | 173 // Write upgraded device info. |
| 167 DeviceInfo device_info_v2( | 174 DeviceInfo device_info_v2(user_share()->directory->cache_guid(), |
| 168 user_share()->directory->cache_guid(), | 175 "John’s Device", |
| 169 "John’s Device", "XYZ v2", "XYZ SyncAgent v2", | 176 "XYZ v2", |
| 170 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 177 "XYZ SyncAgent v2", |
| 178 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 179 "device_id2"); |
| 171 WriteLocalDeviceInfo(device_info_v2); | 180 WriteLocalDeviceInfo(device_info_v2); |
| 172 | 181 |
| 173 // Verify result. | 182 // Verify result. |
| 174 scoped_ptr<DeviceInfo> result_device_info( | 183 scoped_ptr<DeviceInfo> result_device_info( |
| 175 synced_device_tracker_->ReadLocalDeviceInfo()); | 184 synced_device_tracker_->ReadLocalDeviceInfo()); |
| 176 ASSERT_TRUE(result_device_info); | 185 ASSERT_TRUE(result_device_info); |
| 177 | 186 |
| 178 EXPECT_TRUE(result_device_info->Equals(device_info_v2)); | 187 EXPECT_TRUE(result_device_info->Equals(device_info_v2)); |
| 179 | 188 |
| 180 // The update write should have sent a nudge. | 189 // The update write should have sent a nudge. |
| 181 EXPECT_EQ(1, GetObservedChangesCounter()); | 190 EXPECT_EQ(1, GetObservedChangesCounter()); |
| 182 } | 191 } |
| 183 | 192 |
| 184 // Test retrieving DeviceInfos for all the syncing devices. | 193 // Test retrieving DeviceInfos for all the syncing devices. |
| 185 TEST_F(SyncedDeviceTrackerTest, GetAllDeviceInfo) { | 194 TEST_F(SyncedDeviceTrackerTest, GetAllDeviceInfo) { |
| 186 DeviceInfo device_info1( | 195 DeviceInfo device_info1(base::GenerateGUID(), |
| 187 base::GenerateGUID(), | 196 "abc Device", |
| 188 "abc Device", "XYZ v1", "XYZ SyncAgent v1", | 197 "XYZ v1", |
| 189 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 198 "XYZ SyncAgent v1", |
| 199 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 200 "device_id1"); |
| 190 | 201 |
| 191 std::string guid1 = base::GenerateGUID(); | 202 std::string guid1 = base::GenerateGUID(); |
| 192 | 203 |
| 193 DeviceInfo device_info2( | 204 DeviceInfo device_info2(base::GenerateGUID(), |
| 194 base::GenerateGUID(), | 205 "def Device", |
| 195 "def Device", "XYZ v2", "XYZ SyncAgent v2", | 206 "XYZ v2", |
| 196 sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | 207 "XYZ SyncAgent v2", |
| 208 sync_pb::SyncEnums_DeviceType_TYPE_LINUX, |
| 209 "device_id2"); |
| 197 | 210 |
| 198 std::string guid2 = base::GenerateGUID(); | 211 std::string guid2 = base::GenerateGUID(); |
| 199 | 212 |
| 200 WriteDeviceInfo(device_info1); | 213 WriteDeviceInfo(device_info1); |
| 201 WriteDeviceInfo(device_info2); | 214 WriteDeviceInfo(device_info2); |
| 202 | 215 |
| 203 ScopedVector<DeviceInfo> device_info; | 216 ScopedVector<DeviceInfo> device_info; |
| 204 synced_device_tracker_->GetAllSyncedDeviceInfo(&device_info); | 217 synced_device_tracker_->GetAllSyncedDeviceInfo(&device_info); |
| 205 | 218 |
| 206 EXPECT_EQ(device_info.size(), 2U); | 219 EXPECT_EQ(device_info.size(), 2U); |
| 207 EXPECT_TRUE(device_info[0]->Equals(device_info1)); | 220 EXPECT_TRUE(device_info[0]->Equals(device_info1)); |
| 208 EXPECT_TRUE(device_info[1]->Equals(device_info2)); | 221 EXPECT_TRUE(device_info[1]->Equals(device_info2)); |
| 209 } | 222 } |
| 210 | 223 |
| 211 } // namespace | 224 } // namespace |
| 212 | 225 |
| 213 } // namespace browser_sync | 226 } // namespace browser_sync |
| OLD | NEW |