Merge "Revert "Get rid of deleteAccountPIMData from IEmailService"" into ub-mail-master

This commit is contained in:
Martin Hibdon 2014-05-21 20:43:09 +00:00 committed by Android (Google) Code Review
commit 92a059ece4
5 changed files with 44 additions and 3 deletions

View File

@ -247,6 +247,28 @@ public class EmailServiceProxy extends ServiceProxy implements IEmailService {
}, "sendMeetingResponse");
}
/**
* Request the service to delete the account's PIM (personal information management) data. This
* data includes any data that is 1) associated with the account and 2) created/stored by the
* service or its sync adapters and 3) not stored in the EmailProvider database (e.g. contact
* and calendar information).
*
* @param emailAddress the email address for the account whose data should be deleted
*/
@Override
public void deleteAccountPIMData(final String emailAddress) throws RemoteException {
setTask(new ProxyTask() {
@Override
public void run() throws RemoteException {
mService.deleteAccountPIMData(emailAddress);
}
}, "deleteAccountPIMData");
// This can be called when deleting accounts. After making this call, the caller will
// ask for account reconciliation, which will kill the processes. We wait for completion
// to avoid the race.
waitForCompletion();
}
/**
* Search for messages given a query string. The string is interpreted as the logical AND of
* terms separated by white space. The search is performed on the specified mailbox in the

View File

@ -53,4 +53,7 @@ interface IEmailService {
// Service control operations (i.e. does not generate a client-server message).
oneway void setLogging(int on);
// Needs to get moved into Email since this is NOT a client-server command.
void deleteAccountPIMData(String emailAddress);
}

View File

@ -5954,10 +5954,17 @@ public class EmailProvider extends ContentProvider {
cv.putNull(AccountColumns.SYNC_KEY);
resolver.update(Account.CONTENT_URI, cv, Account.ID_SELECTION, accountIdArgs);
// Delete the account from the Android account manager.
// This will delete any contacts and calendar data, stop syncs, etc.
// Delete PIM data (contacts, calendar), stop syncs, etc. if applicable
if (emailAddress != null) {
AccountReconciler.reconcileAccounts(context);
final IEmailService service =
EmailServiceUtils.getServiceForAccount(context, accountId);
if (service != null) {
try {
service.deleteAccountPIMData(emailAddress);
} catch (final RemoteException e) {
// Can't do anything about this
}
}
}
}

View File

@ -380,6 +380,11 @@ public abstract class EmailServiceStub extends IEmailService.Stub implements IEm
// Not required
}
@Override
public void deleteAccountPIMData(final String emailAddress) throws RemoteException {
AccountReconciler.reconcileAccounts(mContext);
}
@Override
public int searchMessages(long accountId, SearchParams params, long destMailboxId)
throws RemoteException {

View File

@ -679,6 +679,10 @@ public class EmailServiceUtils {
public void sendMeetingResponse(long messageId, int response) throws RemoteException {
}
@Override
public void deleteAccountPIMData(final String emailAddress) throws RemoteException {
}
@Override
public int searchMessages(long accountId, SearchParams params, long destMailboxId)
throws RemoteException {