blob: 1e967134f42a0eebc3d8db9a3d2a80f969b9554c [file] [log] [blame]
Dianne Hackborn231cc602009-04-27 17:10:36 -07001/*
2 * Copyright (C) 2009 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.content;
18
Dianne Hackborn7a135592009-05-06 00:28:37 -070019import android.accounts.Account;
Matthew Williams56dbf8f2013-07-26 12:56:39 -070020import android.content.ComponentName;
Fred Quintanad5e4fdc2010-03-30 15:16:21 -070021import android.content.SyncInfo;
Dianne Hackborn231cc602009-04-27 17:10:36 -070022import android.content.ISyncStatusObserver;
Fred Quintanaac9385e2009-06-22 18:00:59 -070023import android.content.SyncAdapterType;
Matthew Williamsfa774182013-06-18 15:44:11 -070024import android.content.SyncRequest;
Dianne Hackborn231cc602009-04-27 17:10:36 -070025import android.content.SyncStatusInfo;
Fred Quintanac5d1c6d2010-01-27 12:17:49 -080026import android.content.PeriodicSync;
Dianne Hackborn231cc602009-04-27 17:10:36 -070027import android.net.Uri;
28import android.os.Bundle;
29import android.database.IContentObserver;
30
31/**
32 * @hide
33 */
34interface IContentService {
Dianne Hackborn231cc602009-04-27 17:10:36 -070035 void unregisterContentObserver(IContentObserver observer);
36
Christopher Tate16aa9732012-09-17 16:23:44 -070037 /**
38 * Register a content observer tied to a specific user's view of the provider.
39 * @param userHandle the user whose view of the provider is to be observed. May be
40 * the calling user without requiring any permission, otherwise the caller needs to
41 * hold the INTERACT_ACROSS_USERS_FULL permission. Pseudousers USER_ALL and
42 * USER_CURRENT are properly handled.
43 */
44 void registerContentObserver(in Uri uri, boolean notifyForDescendants,
45 IContentObserver observer, int userHandle);
46
47 /**
48 * Notify observers of a particular user's view of the provider.
49 * @param userHandle the user whose view of the provider is to be notified. May be
50 * the calling user without requiring any permission, otherwise the caller needs to
51 * hold the INTERACT_ACROSS_USERS_FULL permission. Pseudousers USER_ALL
52 * USER_CURRENT are properly interpreted.
53 */
Dianne Hackborn231cc602009-04-27 17:10:36 -070054 void notifyChange(in Uri uri, IContentObserver observer,
Christopher Tate16aa9732012-09-17 16:23:44 -070055 boolean observerWantsSelfNotifications, boolean syncToNetwork,
56 int userHandle);
Dianne Hackborn231cc602009-04-27 17:10:36 -070057
Fred Quintanaac9385e2009-06-22 18:00:59 -070058 void requestSync(in Account account, String authority, in Bundle extras);
Matthew Williams56dbf8f2013-07-26 12:56:39 -070059 /**
60 * Start a sync given a request.
61 */
Matthew Williamsfa774182013-06-18 15:44:11 -070062 void sync(in SyncRequest request);
Alexandra Gherghina0363c3e2014-06-23 13:34:59 +010063 void syncAsUser(in SyncRequest request, int userId);
Matthew Williams56dbf8f2013-07-26 12:56:39 -070064 void cancelSync(in Account account, String authority, in ComponentName cname);
Alexandra Gherghina0363c3e2014-06-23 13:34:59 +010065 void cancelSyncAsUser(in Account account, String authority, in ComponentName cname, int userId);
Matthew Williams56dbf8f2013-07-26 12:56:39 -070066
67 /** Cancel a sync, providing information about the sync to be cancelled. */
68 void cancelRequest(in SyncRequest request);
Fred Quintanac5d1c6d2010-01-27 12:17:49 -080069
Dianne Hackborn231cc602009-04-27 17:10:36 -070070 /**
71 * Check if the provider should be synced when a network tickle is received
72 * @param providerName the provider whose setting we are querying
Fred Quintanac5d1c6d2010-01-27 12:17:49 -080073 * @return true if the provider should be synced when a network tickle is received
Dianne Hackborn231cc602009-04-27 17:10:36 -070074 */
Fred Quintanaac9385e2009-06-22 18:00:59 -070075 boolean getSyncAutomatically(in Account account, String providerName);
Alexandra Gherghina0363c3e2014-06-23 13:34:59 +010076 boolean getSyncAutomaticallyAsUser(in Account account, String providerName, int userId);
Dianne Hackborn231cc602009-04-27 17:10:36 -070077
78 /**
79 * Set whether or not the provider is synced when it receives a network tickle.
80 *
81 * @param providerName the provider whose behavior is being controlled
82 * @param sync true if the provider should be synced when tickles are received for it
83 */
Fred Quintanaac9385e2009-06-22 18:00:59 -070084 void setSyncAutomatically(in Account account, String providerName, boolean sync);
Dianne Hackborn231cc602009-04-27 17:10:36 -070085
Fred Quintana5e787c42009-08-16 23:13:53 -070086 /**
Matthew Williams56dbf8f2013-07-26 12:56:39 -070087 * Get a list of periodic operations for a specified authority, or service.
88 * @param account account for authority, must be null if cname is non-null.
89 * @param providerName name of provider, must be null if cname is non-null.
90 * @param cname component to identify sync service, must be null if account/providerName are
91 * non-null.
Fred Quintanac5d1c6d2010-01-27 12:17:49 -080092 */
Matthew Williams56dbf8f2013-07-26 12:56:39 -070093 List<PeriodicSync> getPeriodicSyncs(in Account account, String providerName,
94 in ComponentName cname);
Fred Quintanac5d1c6d2010-01-27 12:17:49 -080095
96 /**
97 * Set whether or not the provider is to be synced on a periodic basis.
98 *
99 * @param providerName the provider whose behavior is being controlled
100 * @param pollFrequency the period that a sync should be performed, in seconds. If this is
101 * zero or less then no periodic syncs will be performed.
102 */
103 void addPeriodicSync(in Account account, String providerName, in Bundle extras,
104 long pollFrequency);
105
106 /**
107 * Set whether or not the provider is to be synced on a periodic basis.
108 *
109 * @param providerName the provider whose behavior is being controlled
110 * @param pollFrequency the period that a sync should be performed, in seconds. If this is
111 * zero or less then no periodic syncs will be performed.
112 */
113 void removePeriodicSync(in Account account, String providerName, in Bundle extras);
114
115 /**
Fred Quintana5e787c42009-08-16 23:13:53 -0700116 * Check if this account/provider is syncable.
117 * @return >0 if it is syncable, 0 if not, and <0 if the state isn't known yet.
118 */
119 int getIsSyncable(in Account account, String providerName);
Alexandra Gherghina0363c3e2014-06-23 13:34:59 +0100120 int getIsSyncableAsUser(in Account account, String providerName, int userId);
Fred Quintana5e787c42009-08-16 23:13:53 -0700121
122 /**
123 * Set whether this account/provider is syncable.
124 * @param syncable, >0 denotes syncable, 0 means not syncable, <0 means unknown
125 */
126 void setIsSyncable(in Account account, String providerName, int syncable);
127
Fred Quintanaac9385e2009-06-22 18:00:59 -0700128 void setMasterSyncAutomatically(boolean flag);
Dianne Hackborn231cc602009-04-27 17:10:36 -0700129
Fred Quintanaac9385e2009-06-22 18:00:59 -0700130 boolean getMasterSyncAutomatically();
Alexandra Gherghina0363c3e2014-06-23 13:34:59 +0100131 boolean getMasterSyncAutomaticallyAsUser(int userId);
Fred Quintanac5d1c6d2010-01-27 12:17:49 -0800132
Fred Quintanac6a69552010-09-27 17:05:04 -0700133 List<SyncInfo> getCurrentSyncs();
Alexandra Gherghina0363c3e2014-06-23 13:34:59 +0100134 List<SyncInfo> getCurrentSyncsAsUser(int userId);
Fred Quintanac5d1c6d2010-01-27 12:17:49 -0800135
Dianne Hackborn231cc602009-04-27 17:10:36 -0700136 /**
Fred Quintanaac9385e2009-06-22 18:00:59 -0700137 * Returns the types of the SyncAdapters that are registered with the system.
138 * @return Returns the types of the SyncAdapters that are registered with the system.
139 */
140 SyncAdapterType[] getSyncAdapterTypes();
Alexandra Gherghina0363c3e2014-06-23 13:34:59 +0100141 SyncAdapterType[] getSyncAdapterTypesAsUser(int userId);
Fred Quintanaac9385e2009-06-22 18:00:59 -0700142
143 /**
Matthew Williams56dbf8f2013-07-26 12:56:39 -0700144 * Returns true if there is currently a operation for the given account/authority or service
145 * actively being processed.
146 * @param account account for authority, must be null if cname is non-null.
147 * @param providerName name of provider, must be null if cname is non-null.
148 * @param cname component to identify sync service, must be null if account/providerName are
149 * non-null.
150 */
151 boolean isSyncActive(in Account account, String authority, in ComponentName cname);
152
153 /**
Dianne Hackborn231cc602009-04-27 17:10:36 -0700154 * Returns the status that matches the authority. If there are multiples accounts for
155 * the authority, the one with the latest "lastSuccessTime" status is returned.
Matthew Williams56dbf8f2013-07-26 12:56:39 -0700156 * @param account account for authority, must be null if cname is non-null.
157 * @param providerName name of provider, must be null if cname is non-null.
158 * @param cname component to identify sync service, must be null if account/providerName are
159 * non-null.
Dianne Hackborn231cc602009-04-27 17:10:36 -0700160 */
Matthew Williams56dbf8f2013-07-26 12:56:39 -0700161 SyncStatusInfo getSyncStatus(in Account account, String authority, in ComponentName cname);
Alexandra Gherghina0363c3e2014-06-23 13:34:59 +0100162 SyncStatusInfo getSyncStatusAsUser(in Account account, String authority, in ComponentName cname,
163 int userId);
Dianne Hackborn231cc602009-04-27 17:10:36 -0700164
165 /**
166 * Return true if the pending status is true of any matching authorities.
Matthew Williams56dbf8f2013-07-26 12:56:39 -0700167 * @param account account for authority, must be null if cname is non-null.
168 * @param providerName name of provider, must be null if cname is non-null.
169 * @param cname component to identify sync service, must be null if account/providerName are
170 * non-null.
Dianne Hackborn231cc602009-04-27 17:10:36 -0700171 */
Matthew Williams56dbf8f2013-07-26 12:56:39 -0700172 boolean isSyncPending(in Account account, String authority, in ComponentName cname);
Fred Quintanac5d1c6d2010-01-27 12:17:49 -0800173
Dianne Hackborn231cc602009-04-27 17:10:36 -0700174 void addStatusChangeListener(int mask, ISyncStatusObserver callback);
Fred Quintanac5d1c6d2010-01-27 12:17:49 -0800175
Dianne Hackborn231cc602009-04-27 17:10:36 -0700176 void removeStatusChangeListener(ISyncStatusObserver callback);
177}