blob: 73a76e8051270775c384524894081fa7400724f7 [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);
Matthew Williams56dbf8f2013-07-26 12:56:39 -070063 void cancelSync(in Account account, String authority, in ComponentName cname);
64
65 /** Cancel a sync, providing information about the sync to be cancelled. */
66 void cancelRequest(in SyncRequest request);
Fred Quintanac5d1c6d2010-01-27 12:17:49 -080067
Dianne Hackborn231cc602009-04-27 17:10:36 -070068 /**
69 * Check if the provider should be synced when a network tickle is received
70 * @param providerName the provider whose setting we are querying
Fred Quintanac5d1c6d2010-01-27 12:17:49 -080071 * @return true if the provider should be synced when a network tickle is received
Dianne Hackborn231cc602009-04-27 17:10:36 -070072 */
Fred Quintanaac9385e2009-06-22 18:00:59 -070073 boolean getSyncAutomatically(in Account account, String providerName);
Dianne Hackborn231cc602009-04-27 17:10:36 -070074
75 /**
76 * Set whether or not the provider is synced when it receives a network tickle.
77 *
78 * @param providerName the provider whose behavior is being controlled
79 * @param sync true if the provider should be synced when tickles are received for it
80 */
Fred Quintanaac9385e2009-06-22 18:00:59 -070081 void setSyncAutomatically(in Account account, String providerName, boolean sync);
Dianne Hackborn231cc602009-04-27 17:10:36 -070082
Fred Quintana5e787c42009-08-16 23:13:53 -070083 /**
Matthew Williams56dbf8f2013-07-26 12:56:39 -070084 * Get a list of periodic operations for a specified authority, or service.
85 * @param account account for authority, must be null if cname is non-null.
86 * @param providerName name of provider, must be null if cname is non-null.
87 * @param cname component to identify sync service, must be null if account/providerName are
88 * non-null.
Fred Quintanac5d1c6d2010-01-27 12:17:49 -080089 */
Matthew Williams56dbf8f2013-07-26 12:56:39 -070090 List<PeriodicSync> getPeriodicSyncs(in Account account, String providerName,
91 in ComponentName cname);
Fred Quintanac5d1c6d2010-01-27 12:17:49 -080092
93 /**
94 * Set whether or not the provider is to be synced on a periodic basis.
95 *
96 * @param providerName the provider whose behavior is being controlled
97 * @param pollFrequency the period that a sync should be performed, in seconds. If this is
98 * zero or less then no periodic syncs will be performed.
99 */
100 void addPeriodicSync(in Account account, String providerName, in Bundle extras,
101 long pollFrequency);
102
103 /**
104 * Set whether or not the provider is to be synced on a periodic basis.
105 *
106 * @param providerName the provider whose behavior is being controlled
107 * @param pollFrequency the period that a sync should be performed, in seconds. If this is
108 * zero or less then no periodic syncs will be performed.
109 */
110 void removePeriodicSync(in Account account, String providerName, in Bundle extras);
111
112 /**
Fred Quintana5e787c42009-08-16 23:13:53 -0700113 * Check if this account/provider is syncable.
114 * @return >0 if it is syncable, 0 if not, and <0 if the state isn't known yet.
115 */
116 int getIsSyncable(in Account account, String providerName);
117
118 /**
119 * Set whether this account/provider is syncable.
120 * @param syncable, >0 denotes syncable, 0 means not syncable, <0 means unknown
121 */
122 void setIsSyncable(in Account account, String providerName, int syncable);
123
Matthew Williams56dbf8f2013-07-26 12:56:39 -0700124 /**
125 * Corresponds roughly to setIsSyncable(String account, String provider) for syncs that bind
126 * to a SyncService.
127 */
128 void setServiceActive(in ComponentName cname, boolean active);
129
130 /**
131 * Corresponds roughly to getIsSyncable(String account, String provider) for syncs that bind
132 * to a SyncService.
133 * @return 0 if this SyncService is not enabled, 1 if enabled, <0 if unknown.
134 */
135 boolean isServiceActive(in ComponentName cname);
136
Fred Quintanaac9385e2009-06-22 18:00:59 -0700137 void setMasterSyncAutomatically(boolean flag);
Dianne Hackborn231cc602009-04-27 17:10:36 -0700138
Fred Quintanaac9385e2009-06-22 18:00:59 -0700139 boolean getMasterSyncAutomatically();
Fred Quintanac5d1c6d2010-01-27 12:17:49 -0800140
Fred Quintanac6a69552010-09-27 17:05:04 -0700141 List<SyncInfo> getCurrentSyncs();
Fred Quintanac5d1c6d2010-01-27 12:17:49 -0800142
Dianne Hackborn231cc602009-04-27 17:10:36 -0700143 /**
Fred Quintanaac9385e2009-06-22 18:00:59 -0700144 * Returns the types of the SyncAdapters that are registered with the system.
145 * @return Returns the types of the SyncAdapters that are registered with the system.
146 */
147 SyncAdapterType[] getSyncAdapterTypes();
148
149 /**
Matthew Williams56dbf8f2013-07-26 12:56:39 -0700150 * Returns true if there is currently a operation for the given account/authority or service
151 * actively being processed.
152 * @param account account for authority, must be null if cname is non-null.
153 * @param providerName name of provider, must be null if cname is non-null.
154 * @param cname component to identify sync service, must be null if account/providerName are
155 * non-null.
156 */
157 boolean isSyncActive(in Account account, String authority, in ComponentName cname);
158
159 /**
Dianne Hackborn231cc602009-04-27 17:10:36 -0700160 * Returns the status that matches the authority. If there are multiples accounts for
161 * the authority, the one with the latest "lastSuccessTime" status is returned.
Matthew Williams56dbf8f2013-07-26 12:56:39 -0700162 * @param account account for authority, must be null if cname is non-null.
163 * @param providerName name of provider, must be null if cname is non-null.
164 * @param cname component to identify sync service, must be null if account/providerName are
165 * non-null.
Dianne Hackborn231cc602009-04-27 17:10:36 -0700166 */
Matthew Williams56dbf8f2013-07-26 12:56:39 -0700167 SyncStatusInfo getSyncStatus(in Account account, String authority, in ComponentName cname);
Dianne Hackborn231cc602009-04-27 17:10:36 -0700168
169 /**
170 * Return true if the pending status is true of any matching authorities.
Matthew Williams56dbf8f2013-07-26 12:56:39 -0700171 * @param account account for authority, must be null if cname is non-null.
172 * @param providerName name of provider, must be null if cname is non-null.
173 * @param cname component to identify sync service, must be null if account/providerName are
174 * non-null.
Dianne Hackborn231cc602009-04-27 17:10:36 -0700175 */
Matthew Williams56dbf8f2013-07-26 12:56:39 -0700176 boolean isSyncPending(in Account account, String authority, in ComponentName cname);
Fred Quintanac5d1c6d2010-01-27 12:17:49 -0800177
Dianne Hackborn231cc602009-04-27 17:10:36 -0700178 void addStatusChangeListener(int mask, ISyncStatusObserver callback);
Fred Quintanac5d1c6d2010-01-27 12:17:49 -0800179
Dianne Hackborn231cc602009-04-27 17:10:36 -0700180 void removeStatusChangeListener(ISyncStatusObserver callback);
181}