OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 package org.chromium.sync.notifier; | 5 package org.chromium.sync.notifier; |
6 | 6 |
7 import android.accounts.Account; | 7 import android.accounts.Account; |
8 import android.app.Activity; | 8 import android.app.Activity; |
9 import android.content.ComponentName; | 9 import android.content.ComponentName; |
10 import android.content.Context; | 10 import android.content.Context; |
11 import android.content.Intent; | 11 import android.content.Intent; |
12 import android.content.pm.PackageManager; | 12 import android.content.pm.PackageManager; |
13 import android.test.InstrumentationTestCase; | 13 import android.test.InstrumentationTestCase; |
14 import android.test.suitebuilder.annotation.SmallTest; | 14 import android.test.suitebuilder.annotation.SmallTest; |
15 | 15 |
| 16 import com.google.ipc.invalidation.external.client.types.ObjectId; |
| 17 |
16 import org.chromium.base.ActivityStatus; | 18 import org.chromium.base.ActivityStatus; |
17 import org.chromium.base.CollectionUtil; | 19 import org.chromium.base.CollectionUtil; |
18 import org.chromium.base.test.util.AdvancedMockContext; | 20 import org.chromium.base.test.util.AdvancedMockContext; |
19 import org.chromium.base.test.util.Feature; | 21 import org.chromium.base.test.util.Feature; |
20 import org.chromium.sync.internal_api.pub.base.ModelType; | 22 import org.chromium.sync.internal_api.pub.base.ModelType; |
21 import org.chromium.sync.notifier.InvalidationController.IntentProtocol; | 23 import org.chromium.sync.notifier.InvalidationController.IntentProtocol; |
22 import org.chromium.sync.signin.AccountManagerHelper; | 24 import org.chromium.sync.signin.AccountManagerHelper; |
23 import org.chromium.sync.signin.ChromeSigninController; | 25 import org.chromium.sync.signin.ChromeSigninController; |
24 import org.chromium.sync.test.util.MockSyncContentResolverDelegate; | 26 import org.chromium.sync.test.util.MockSyncContentResolverDelegate; |
25 | 27 |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 // Validate account. | 166 // Validate account. |
165 Account intentAccount = intent.getParcelableExtra(IntentProtocol.EXTRA_A
CCOUNT); | 167 Account intentAccount = intent.getParcelableExtra(IntentProtocol.EXTRA_A
CCOUNT); |
166 assertEquals(account, intentAccount); | 168 assertEquals(account, intentAccount); |
167 | 169 |
168 // Validate registered types. | 170 // Validate registered types. |
169 Set<String> expectedTypes = CollectionUtil.newHashSet(ModelType.BOOKMARK
.name(), | 171 Set<String> expectedTypes = CollectionUtil.newHashSet(ModelType.BOOKMARK
.name(), |
170 ModelType.SESSION.name()); | 172 ModelType.SESSION.name()); |
171 Set<String> actualTypes = new HashSet<String>(); | 173 Set<String> actualTypes = new HashSet<String>(); |
172 actualTypes.addAll(intent.getStringArrayListExtra(IntentProtocol.EXTRA_R
EGISTERED_TYPES)); | 174 actualTypes.addAll(intent.getStringArrayListExtra(IntentProtocol.EXTRA_R
EGISTERED_TYPES)); |
173 assertEquals(expectedTypes, actualTypes); | 175 assertEquals(expectedTypes, actualTypes); |
| 176 assertNull(IntentProtocol.getRegisteredObjectIds(intent)); |
174 } | 177 } |
175 | 178 |
176 @SmallTest | 179 @SmallTest |
177 @Feature({"Sync"}) | 180 @Feature({"Sync"}) |
178 public void testRegisterForAllTypes() { | 181 public void testRegisterForAllTypes() { |
179 Account account = new Account("test@example.com", "bogus"); | 182 Account account = new Account("test@example.com", "bogus"); |
180 mController.setRegisteredTypes(account, true, | 183 mController.setRegisteredTypes(account, true, |
181 CollectionUtil.newHashSet(ModelType.BOOKMARK, ModelType.SESSION)
); | 184 CollectionUtil.newHashSet(ModelType.BOOKMARK, ModelType.SESSION)
); |
182 assertEquals(1, mContext.getNumStartedIntents()); | 185 assertEquals(1, mContext.getNumStartedIntents()); |
183 | 186 |
184 // Validate destination. | 187 // Validate destination. |
185 Intent intent = mContext.getStartedIntent(0); | 188 Intent intent = mContext.getStartedIntent(0); |
186 validateIntentComponent(intent); | 189 validateIntentComponent(intent); |
187 assertEquals(IntentProtocol.ACTION_REGISTER, intent.getAction()); | 190 assertEquals(IntentProtocol.ACTION_REGISTER, intent.getAction()); |
188 | 191 |
189 // Validate account. | 192 // Validate account. |
190 Account intentAccount = intent.getParcelableExtra(IntentProtocol.EXTRA_A
CCOUNT); | 193 Account intentAccount = intent.getParcelableExtra(IntentProtocol.EXTRA_A
CCOUNT); |
191 assertEquals(account, intentAccount); | 194 assertEquals(account, intentAccount); |
192 | 195 |
193 // Validate registered types. | 196 // Validate registered types. |
194 Set<String> expectedTypes = CollectionUtil.newHashSet(ModelType.ALL_TYPE
S_TYPE); | 197 Set<String> expectedTypes = CollectionUtil.newHashSet(ModelType.ALL_TYPE
S_TYPE); |
195 Set<String> actualTypes = new HashSet<String>(); | 198 Set<String> actualTypes = new HashSet<String>(); |
196 actualTypes.addAll(intent.getStringArrayListExtra(IntentProtocol.EXTRA_R
EGISTERED_TYPES)); | 199 actualTypes.addAll(intent.getStringArrayListExtra(IntentProtocol.EXTRA_R
EGISTERED_TYPES)); |
197 assertEquals(expectedTypes, actualTypes); | 200 assertEquals(expectedTypes, actualTypes); |
| 201 assertNull(IntentProtocol.getRegisteredObjectIds(intent)); |
198 } | 202 } |
199 | 203 |
200 @SmallTest | 204 @SmallTest |
201 @Feature({"Sync"}) | 205 @Feature({"Sync"}) |
202 public void testRefreshShouldReadValuesFromDiskWithSpecificTypes() { | 206 public void testRefreshShouldReadValuesFromDiskWithSpecificTypes() { |
203 // Store some preferences for ModelTypes and account. We are using the h
elper class | 207 // Store some preferences for ModelTypes and account. We are using the h
elper class |
204 // for this, so we don't have to deal with low-level details such as pre
ference keys. | 208 // for this, so we don't have to deal with low-level details such as pre
ference keys. |
205 InvalidationPreferences invalidationPreferences = new InvalidationPrefer
ences(mContext); | 209 InvalidationPreferences invalidationPreferences = new InvalidationPrefer
ences(mContext); |
206 InvalidationPreferences.EditContext edit = invalidationPreferences.edit(
); | 210 InvalidationPreferences.EditContext edit = invalidationPreferences.edit(
); |
207 Set<String> storedModelTypes = new HashSet<String>(); | 211 Set<String> storedModelTypes = new HashSet<String>(); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 }; | 274 }; |
271 | 275 |
272 // Execute the test. | 276 // Execute the test. |
273 controller.refreshRegisteredTypes(new HashSet<ModelType>()); | 277 controller.refreshRegisteredTypes(new HashSet<ModelType>()); |
274 | 278 |
275 // Validate the values. | 279 // Validate the values. |
276 assertEquals(storedAccount, resultAccount.get()); | 280 assertEquals(storedAccount, resultAccount.get()); |
277 assertEquals(true, resultAllTypes.get()); | 281 assertEquals(true, resultAllTypes.get()); |
278 } | 282 } |
279 | 283 |
| 284 @SmallTest |
| 285 @Feature({"Sync"}) |
| 286 public void testSetRegisteredObjectIds() { |
| 287 InvalidationController controller = new InvalidationController(mContext)
; |
| 288 controller.setRegisteredObjectIds(new int[] {1, 2}, new String[] {"a", "
b"}); |
| 289 assertEquals(1, mContext.getNumStartedIntents()); |
| 290 |
| 291 // Validate destination. |
| 292 Intent intent = mContext.getStartedIntent(0); |
| 293 validateIntentComponent(intent); |
| 294 assertEquals(IntentProtocol.ACTION_REGISTER, intent.getAction()); |
| 295 |
| 296 // Validate registered object ids. |
| 297 assertNull(intent.getStringArrayListExtra(IntentProtocol.EXTRA_REGISTERE
D_TYPES)); |
| 298 Set<ObjectId> objectIds = IntentProtocol.getRegisteredObjectIds(intent); |
| 299 assertEquals(2, objectIds.size()); |
| 300 assertTrue(objectIds.contains(ObjectId.newInstance(1, "a".getBytes()))); |
| 301 assertTrue(objectIds.contains(ObjectId.newInstance(2, "b".getBytes()))); |
| 302 } |
| 303 |
280 /** | 304 /** |
281 * Asserts that {@code intent} is destined for the correct component. | 305 * Asserts that {@code intent} is destined for the correct component. |
282 */ | 306 */ |
283 private static void validateIntentComponent(Intent intent) { | 307 private static void validateIntentComponent(Intent intent) { |
284 assertNotNull(intent.getComponent()); | 308 assertNotNull(intent.getComponent()); |
285 assertEquals(InvalidationService.class.getName(), | 309 assertEquals(InvalidationService.class.getName(), |
286 intent.getComponent().getClassName()); | 310 intent.getComponent().getClassName()); |
287 } | 311 } |
288 | 312 |
289 /** | 313 /** |
(...skipping 19 matching lines...) Expand all Loading... |
309 Intent getStartedIntent(int idx) { | 333 Intent getStartedIntent(int idx) { |
310 return startedIntents.get(idx); | 334 return startedIntents.get(idx); |
311 } | 335 } |
312 | 336 |
313 @Override | 337 @Override |
314 public PackageManager getPackageManager() { | 338 public PackageManager getPackageManager() { |
315 return getBaseContext().getPackageManager(); | 339 return getBaseContext().getPackageManager(); |
316 } | 340 } |
317 } | 341 } |
318 } | 342 } |
OLD | NEW |