1231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn/*
2231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn * Copyright (C) 2009 The Android Open Source Project
3231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn *
4231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License");
5231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn * you may not use this file except in compliance with the License.
6231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn * You may obtain a copy of the License at
7231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn *
8231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn *      http://www.apache.org/licenses/LICENSE-2.0
9231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn *
10231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn * Unless required by applicable law or agreed to in writing, software
11231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS,
12231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn * See the License for the specific language governing permissions and
14231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn * limitations under the License.
15231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn */
16231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn
17231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackbornpackage android.content;
18231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn
197a1355950172b7a549820e9a2cd4a9b2099ec32fDianne Hackbornimport android.accounts.Account;
20d5e4fdc8a4743abc0d9fe3cb952a78f9ad078c6bFred Quintanaimport android.content.SyncInfo;
21231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackbornimport android.content.ISyncStatusObserver;
22ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintanaimport android.content.SyncAdapterType;
23231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackbornimport android.content.SyncStatusInfo;
24c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintanaimport android.content.PeriodicSync;
25231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackbornimport android.net.Uri;
26231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackbornimport android.os.Bundle;
27231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackbornimport android.database.IContentObserver;
28231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn
29231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn/**
30231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn * @hide
31231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn */
32231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborninterface IContentService {
33231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn    void registerContentObserver(in Uri uri, boolean notifyForDescendentsn,
34231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn            IContentObserver observer);
35231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn    void unregisterContentObserver(IContentObserver observer);
36231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn
37231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn    void notifyChange(in Uri uri, IContentObserver observer,
38231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn            boolean observerWantsSelfNotifications, boolean syncToNetwork);
39231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn
40ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana    void requestSync(in Account account, String authority, in Bundle extras);
41ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana    void cancelSync(in Account account, String authority);
42c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
43231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn    /**
44231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     * Check if the provider should be synced when a network tickle is received
45231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     * @param providerName the provider whose setting we are querying
46c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * @return true if the provider should be synced when a network tickle is received
47231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     */
48ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana    boolean getSyncAutomatically(in Account account, String providerName);
49231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn
50231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn    /**
51231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     * Set whether or not the provider is synced when it receives a network tickle.
52231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     *
53231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     * @param providerName the provider whose behavior is being controlled
54231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     * @param sync true if the provider should be synced when tickles are received for it
55231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     */
56ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana    void setSyncAutomatically(in Account account, String providerName, boolean sync);
57231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn
585e787c42f2a6b3afc8ec8320a08d51b2d44b8614Fred Quintana    /**
59c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * Get the frequency of the periodic poll, if any.
60c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * @param providerName the provider whose setting we are querying
61c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * @return the frequency of the periodic sync in seconds. If 0 then no periodic syncs
62c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * will take place.
63c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     */
64c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    List<PeriodicSync> getPeriodicSyncs(in Account account, String providerName);
65c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
66c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    /**
67c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * Set whether or not the provider is to be synced on a periodic basis.
68c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     *
69c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * @param providerName the provider whose behavior is being controlled
70c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * @param pollFrequency the period that a sync should be performed, in seconds. If this is
71c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * zero or less then no periodic syncs will be performed.
72c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     */
73c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    void addPeriodicSync(in Account account, String providerName, in Bundle extras,
74c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana      long pollFrequency);
75c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
76c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    /**
77c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * Set whether or not the provider is to be synced on a periodic basis.
78c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     *
79c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * @param providerName the provider whose behavior is being controlled
80c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * @param pollFrequency the period that a sync should be performed, in seconds. If this is
81c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     * zero or less then no periodic syncs will be performed.
82c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana     */
83c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    void removePeriodicSync(in Account account, String providerName, in Bundle extras);
84c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
85c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana    /**
865e787c42f2a6b3afc8ec8320a08d51b2d44b8614Fred Quintana     * Check if this account/provider is syncable.
875e787c42f2a6b3afc8ec8320a08d51b2d44b8614Fred Quintana     * @return >0 if it is syncable, 0 if not, and <0 if the state isn't known yet.
885e787c42f2a6b3afc8ec8320a08d51b2d44b8614Fred Quintana     */
895e787c42f2a6b3afc8ec8320a08d51b2d44b8614Fred Quintana    int getIsSyncable(in Account account, String providerName);
905e787c42f2a6b3afc8ec8320a08d51b2d44b8614Fred Quintana
915e787c42f2a6b3afc8ec8320a08d51b2d44b8614Fred Quintana    /**
925e787c42f2a6b3afc8ec8320a08d51b2d44b8614Fred Quintana     * Set whether this account/provider is syncable.
935e787c42f2a6b3afc8ec8320a08d51b2d44b8614Fred Quintana     * @param syncable, >0 denotes syncable, 0 means not syncable, <0 means unknown
945e787c42f2a6b3afc8ec8320a08d51b2d44b8614Fred Quintana     */
955e787c42f2a6b3afc8ec8320a08d51b2d44b8614Fred Quintana    void setIsSyncable(in Account account, String providerName, int syncable);
965e787c42f2a6b3afc8ec8320a08d51b2d44b8614Fred Quintana
97ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana    void setMasterSyncAutomatically(boolean flag);
98231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn
99ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana    boolean getMasterSyncAutomatically();
100c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
101231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn    /**
102231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     * Returns true if there is currently a sync operation for the given
103231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     * account or authority in the pending list, or actively being processed.
104231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     */
1057a1355950172b7a549820e9a2cd4a9b2099ec32fDianne Hackborn    boolean isSyncActive(in Account account, String authority);
106c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
107d5e4fdc8a4743abc0d9fe3cb952a78f9ad078c6bFred Quintana    SyncInfo getCurrentSync();
108c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
109231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn    /**
110ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana     * Returns the types of the SyncAdapters that are registered with the system.
111ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana     * @return Returns the types of the SyncAdapters that are registered with the system.
112ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana     */
113ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana    SyncAdapterType[] getSyncAdapterTypes();
114ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana
115ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana    /**
116231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     * Returns the status that matches the authority. If there are multiples accounts for
117231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     * the authority, the one with the latest "lastSuccessTime" status is returned.
118231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     * @param authority the authority whose row should be selected
119231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     * @return the SyncStatusInfo for the authority, or null if none exists
120231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     */
121ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana    SyncStatusInfo getSyncStatus(in Account account, String authority);
122231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn
123231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn    /**
124231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     * Return true if the pending status is true of any matching authorities.
125231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn     */
126ac9385ef3105fb7464e1f46049c62755a8b7f0e9Fred Quintana    boolean isSyncPending(in Account account, String authority);
127c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
128231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn    void addStatusChangeListener(int mask, ISyncStatusObserver callback);
129c5d1c6db61f208b206b260f897bb5bbc64be4d97Fred Quintana
130231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn    void removeStatusChangeListener(ISyncStatusObserver callback);
131231cc608d06ffc31c24bf8aa8c8275bdd2636581Dianne Hackborn}
132