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 |