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 |