Loading core/java/android/content/AbstractThreadedSyncAdapter.java +7 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.os.Bundle; import android.os.Process; import android.os.NetStat; import android.os.IBinder; import android.os.RemoteException; import android.util.EventLog; import java.util.concurrent.atomic.AtomicInteger; Loading Loading @@ -117,6 +118,12 @@ public abstract class AbstractThreadedSyncAdapter { } } } public void initialize(Account account, String authority) throws RemoteException { Bundle extras = new Bundle(); extras.putBoolean(ContentResolver.SYNC_EXTRAS_INITIALIZE, true); startSync(null, authority, account, extras); } } /** Loading core/java/android/content/ISyncAdapter.aidl +8 −0 Original line number Diff line number Diff line Loading @@ -44,4 +44,12 @@ oneway interface ISyncAdapter { * @param syncContext the ISyncContext that was passed to {@link #startSync} */ void cancelSync(ISyncContext syncContext); /** * Initialize the SyncAdapter for this account and authority. * * @param account the account that should be synced * @param authority the authority that should be synced */ void initialize(in Account account, String authority); } core/java/android/content/SyncAdapter.java +6 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,12 @@ public abstract class SyncAdapter { public void cancelSync(ISyncContext syncContext) throws RemoteException { SyncAdapter.this.cancelSync(); } public void initialize(Account account, String authority) throws RemoteException { Bundle extras = new Bundle(); extras.putBoolean(ContentResolver.SYNC_EXTRAS_INITIALIZE, true); startSync(null, authority, account, extras); } } Transport mTransport = new Transport(); Loading core/java/android/content/SyncContext.java +7 −3 Original line number Diff line number Diff line Loading @@ -56,7 +56,9 @@ public class SyncContext { if (now < mLastHeartbeatSendTime + HEARTBEAT_SEND_INTERVAL_IN_MS) return; try { mLastHeartbeatSendTime = now; if (mSyncContext != null) { mSyncContext.sendHeartbeat(); } } catch (RemoteException e) { // this should never happen } Loading @@ -64,13 +66,15 @@ public class SyncContext { public void onFinished(SyncResult result) { try { if (mSyncContext != null) { mSyncContext.onFinished(result); } } catch (RemoteException e) { // this should never happen } } public IBinder getSyncContextBinder() { return mSyncContext.asBinder(); return (mSyncContext == null) ? null : mSyncContext.asBinder(); } } core/java/android/content/SyncManager.java +58 −20 Original line number Diff line number Diff line Loading @@ -544,6 +544,46 @@ class SyncManager implements OnAccountsUpdateListener { return (activeSyncContext != null) ? activeSyncContext.mSyncOperation.account : null; } private void initializeSyncAdapter(Account account, String authority) { SyncAdapterType syncAdapterType = SyncAdapterType.newKey(authority, account.type); RegisteredServicesCache.ServiceInfo<SyncAdapterType> syncAdapterInfo = mSyncAdapters.getServiceInfo(syncAdapterType); if (syncAdapterInfo == null) { Log.w(TAG, "can't find a sync adapter for " + syncAdapterType); return; } Intent intent = new Intent(); intent.setAction("android.content.SyncAdapter"); intent.setComponent(syncAdapterInfo.componentName); mContext.bindService(intent, new InitializerServiceConnection(account, authority), Context.BIND_AUTO_CREATE); } private class InitializerServiceConnection implements ServiceConnection { private final Account mAccount; private final String mAuthority; public InitializerServiceConnection(Account account, String authority) { mAccount = account; mAuthority = authority; } public void onServiceConnected(ComponentName name, IBinder service) { try { ISyncAdapter.Stub.asInterface(service).initialize(mAccount, mAuthority); } catch (RemoteException e) { // doesn't matter, we will retry again later } finally { mContext.unbindService(this); } } public void onServiceDisconnected(ComponentName name) { mContext.unbindService(this); } } /** * Returns whether or not sync is enabled. Sync can be enabled by * setting the system property "ro.config.sync" to the value "yes". Loading Loading @@ -686,14 +726,12 @@ class SyncManager implements OnAccountsUpdateListener { continue; } // make this an initialization sync if the isSyncable state is unknown Bundle extrasCopy = extras; long delayCopy = delay; // initialize the SyncAdapter if the isSyncable state is unknown if (isSyncable < 0) { extrasCopy = new Bundle(extras); extrasCopy.putBoolean(ContentResolver.SYNC_EXTRAS_INITIALIZE, true); delayCopy = -1; // expedite this } else { initializeSyncAdapter(account, authority); continue; } final boolean syncAutomatically = masterSyncAutomatically && mSyncStorageEngine.getSyncAutomatically(account, authority); boolean syncAllowed = Loading @@ -705,17 +743,17 @@ class SyncManager implements OnAccountsUpdateListener { } continue; } } if (isLoggable) { Log.v(TAG, "scheduleSync:" + " delay " + delayCopy + " delay " + delay + ", source " + source + ", account " + account + ", authority " + authority + ", extras " + extrasCopy); + ", extras " + extras); } scheduleSyncOperation( new SyncOperation(account, source, authority, extrasCopy, delayCopy)); new SyncOperation(account, source, authority, extras, delay)); } } } Loading Loading
core/java/android/content/AbstractThreadedSyncAdapter.java +7 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.os.Bundle; import android.os.Process; import android.os.NetStat; import android.os.IBinder; import android.os.RemoteException; import android.util.EventLog; import java.util.concurrent.atomic.AtomicInteger; Loading Loading @@ -117,6 +118,12 @@ public abstract class AbstractThreadedSyncAdapter { } } } public void initialize(Account account, String authority) throws RemoteException { Bundle extras = new Bundle(); extras.putBoolean(ContentResolver.SYNC_EXTRAS_INITIALIZE, true); startSync(null, authority, account, extras); } } /** Loading
core/java/android/content/ISyncAdapter.aidl +8 −0 Original line number Diff line number Diff line Loading @@ -44,4 +44,12 @@ oneway interface ISyncAdapter { * @param syncContext the ISyncContext that was passed to {@link #startSync} */ void cancelSync(ISyncContext syncContext); /** * Initialize the SyncAdapter for this account and authority. * * @param account the account that should be synced * @param authority the authority that should be synced */ void initialize(in Account account, String authority); }
core/java/android/content/SyncAdapter.java +6 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,12 @@ public abstract class SyncAdapter { public void cancelSync(ISyncContext syncContext) throws RemoteException { SyncAdapter.this.cancelSync(); } public void initialize(Account account, String authority) throws RemoteException { Bundle extras = new Bundle(); extras.putBoolean(ContentResolver.SYNC_EXTRAS_INITIALIZE, true); startSync(null, authority, account, extras); } } Transport mTransport = new Transport(); Loading
core/java/android/content/SyncContext.java +7 −3 Original line number Diff line number Diff line Loading @@ -56,7 +56,9 @@ public class SyncContext { if (now < mLastHeartbeatSendTime + HEARTBEAT_SEND_INTERVAL_IN_MS) return; try { mLastHeartbeatSendTime = now; if (mSyncContext != null) { mSyncContext.sendHeartbeat(); } } catch (RemoteException e) { // this should never happen } Loading @@ -64,13 +66,15 @@ public class SyncContext { public void onFinished(SyncResult result) { try { if (mSyncContext != null) { mSyncContext.onFinished(result); } } catch (RemoteException e) { // this should never happen } } public IBinder getSyncContextBinder() { return mSyncContext.asBinder(); return (mSyncContext == null) ? null : mSyncContext.asBinder(); } }
core/java/android/content/SyncManager.java +58 −20 Original line number Diff line number Diff line Loading @@ -544,6 +544,46 @@ class SyncManager implements OnAccountsUpdateListener { return (activeSyncContext != null) ? activeSyncContext.mSyncOperation.account : null; } private void initializeSyncAdapter(Account account, String authority) { SyncAdapterType syncAdapterType = SyncAdapterType.newKey(authority, account.type); RegisteredServicesCache.ServiceInfo<SyncAdapterType> syncAdapterInfo = mSyncAdapters.getServiceInfo(syncAdapterType); if (syncAdapterInfo == null) { Log.w(TAG, "can't find a sync adapter for " + syncAdapterType); return; } Intent intent = new Intent(); intent.setAction("android.content.SyncAdapter"); intent.setComponent(syncAdapterInfo.componentName); mContext.bindService(intent, new InitializerServiceConnection(account, authority), Context.BIND_AUTO_CREATE); } private class InitializerServiceConnection implements ServiceConnection { private final Account mAccount; private final String mAuthority; public InitializerServiceConnection(Account account, String authority) { mAccount = account; mAuthority = authority; } public void onServiceConnected(ComponentName name, IBinder service) { try { ISyncAdapter.Stub.asInterface(service).initialize(mAccount, mAuthority); } catch (RemoteException e) { // doesn't matter, we will retry again later } finally { mContext.unbindService(this); } } public void onServiceDisconnected(ComponentName name) { mContext.unbindService(this); } } /** * Returns whether or not sync is enabled. Sync can be enabled by * setting the system property "ro.config.sync" to the value "yes". Loading Loading @@ -686,14 +726,12 @@ class SyncManager implements OnAccountsUpdateListener { continue; } // make this an initialization sync if the isSyncable state is unknown Bundle extrasCopy = extras; long delayCopy = delay; // initialize the SyncAdapter if the isSyncable state is unknown if (isSyncable < 0) { extrasCopy = new Bundle(extras); extrasCopy.putBoolean(ContentResolver.SYNC_EXTRAS_INITIALIZE, true); delayCopy = -1; // expedite this } else { initializeSyncAdapter(account, authority); continue; } final boolean syncAutomatically = masterSyncAutomatically && mSyncStorageEngine.getSyncAutomatically(account, authority); boolean syncAllowed = Loading @@ -705,17 +743,17 @@ class SyncManager implements OnAccountsUpdateListener { } continue; } } if (isLoggable) { Log.v(TAG, "scheduleSync:" + " delay " + delayCopy + " delay " + delay + ", source " + source + ", account " + account + ", authority " + authority + ", extras " + extrasCopy); + ", extras " + extras); } scheduleSyncOperation( new SyncOperation(account, source, authority, extrasCopy, delayCopy)); new SyncOperation(account, source, authority, extras, delay)); } } } Loading