| OLD | NEW |
| (Empty) |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package org.chromium.sync.notifier; | |
| 6 | |
| 7 import android.accounts.Account; | |
| 8 import android.content.ComponentName; | |
| 9 import android.content.Intent; | |
| 10 import android.os.Bundle; | |
| 11 | |
| 12 import com.google.ipc.invalidation.external.client.types.ObjectId; | |
| 13 | |
| 14 import org.chromium.base.CollectionUtil; | |
| 15 | |
| 16 import java.util.ArrayList; | |
| 17 import java.util.HashSet; | |
| 18 import java.util.List; | |
| 19 import java.util.Set; | |
| 20 | |
| 21 /** | |
| 22 * Subclass of {@link InvalidationService} that captures events and allows contr
olling | |
| 23 * whether or not Chrome is in the foreground and sync is enabled. | |
| 24 * | |
| 25 * @author dsmyers@google.com (Daniel Myers) | |
| 26 */ | |
| 27 public class TestableInvalidationService extends InvalidationService { | |
| 28 /** Object ids given to {@link #register}, one list element per call. */ | |
| 29 final List<List<ObjectId>> mRegistrations = new ArrayList<List<ObjectId>>(); | |
| 30 | |
| 31 /** Object ids given to {@link #unregister}, one list element per call. */ | |
| 32 final List<List<ObjectId>> mUnregistrations = new ArrayList<List<ObjectId>>(
); | |
| 33 | |
| 34 /** | |
| 35 * Current registered based on the cumulative calls to {@link #register} and | |
| 36 * {@link #unregister}. | |
| 37 */ | |
| 38 final Set<ObjectId> mCurrentRegistrations = new HashSet<ObjectId>(); | |
| 39 | |
| 40 /** Intents given to {@link #startService}. */ | |
| 41 final List<Intent> mStartedServices = new ArrayList<Intent>(); | |
| 42 | |
| 43 /** Bundles given to {@link #requestSyncFromContentResolver}. */ | |
| 44 final List<Bundle> mRequestedSyncs = new ArrayList<Bundle>(); | |
| 45 | |
| 46 final List<byte[]> mAcknowledgements = new ArrayList<byte[]>(); | |
| 47 | |
| 48 /** Whether Chrome is in the foreground. */ | |
| 49 private boolean mIsChromeInForeground = false; | |
| 50 | |
| 51 /** Whether sync is enabled. */ | |
| 52 private boolean mIsSyncEnabled = false; | |
| 53 | |
| 54 public TestableInvalidationService() { | |
| 55 } | |
| 56 | |
| 57 @Override | |
| 58 public void acknowledge(byte[] ackHandle) { | |
| 59 mAcknowledgements.add(ackHandle); | |
| 60 } | |
| 61 | |
| 62 @Override | |
| 63 public void register(byte[] clientId, Iterable<ObjectId> objectIds) { | |
| 64 List<ObjectId> objectIdList = CollectionUtil.newArrayList(objectIds); | |
| 65 mRegistrations.add(objectIdList); | |
| 66 mCurrentRegistrations.addAll(objectIdList); | |
| 67 super.register(clientId, objectIds); | |
| 68 } | |
| 69 | |
| 70 @Override | |
| 71 public void unregister(byte[] clientId, Iterable<ObjectId> objectIds) { | |
| 72 List<ObjectId> objectIdList = CollectionUtil.newArrayList(objectIds); | |
| 73 mUnregistrations.add(objectIdList); | |
| 74 mCurrentRegistrations.removeAll(objectIdList); | |
| 75 super.unregister(clientId, objectIds); | |
| 76 } | |
| 77 | |
| 78 @Override | |
| 79 public ComponentName startService(Intent intent) { | |
| 80 mStartedServices.add(intent); | |
| 81 return super.startService(intent); | |
| 82 } | |
| 83 | |
| 84 @Override | |
| 85 public void requestSyncFromContentResolver(Bundle bundle, Account account, | |
| 86 String contractAuthority) { | |
| 87 mRequestedSyncs.add(bundle); | |
| 88 super.requestSyncFromContentResolver(bundle, account, contractAuthority)
; | |
| 89 } | |
| 90 | |
| 91 @Override | |
| 92 boolean isChromeInForeground() { | |
| 93 return mIsChromeInForeground; | |
| 94 } | |
| 95 | |
| 96 @Override | |
| 97 boolean isSyncEnabled() { | |
| 98 return mIsSyncEnabled; | |
| 99 } | |
| 100 | |
| 101 /** | |
| 102 * Sets the variables used to control whether or not a notification client s
hould be running. | |
| 103 * @param isChromeInForeground whether Chrome is in the foreground | |
| 104 * @param isSyncEnabled whether sync is enabled | |
| 105 */ | |
| 106 void setShouldRunStates(boolean isChromeInForeground, boolean isSyncEnabled)
{ | |
| 107 this.mIsChromeInForeground = isChromeInForeground; | |
| 108 this.mIsSyncEnabled = isSyncEnabled; | |
| 109 } | |
| 110 } | |
| OLD | NEW |