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