aboutsummaryrefslogtreecommitdiff
path: root/src/com/android/providers/contacts/ContactsProvider2.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/providers/contacts/ContactsProvider2.java')
-rw-r--r--src/com/android/providers/contacts/ContactsProvider2.java56
1 files changed, 45 insertions, 11 deletions
diff --git a/src/com/android/providers/contacts/ContactsProvider2.java b/src/com/android/providers/contacts/ContactsProvider2.java
index 4b2b37ae..0c6e8192 100644
--- a/src/com/android/providers/contacts/ContactsProvider2.java
+++ b/src/com/android/providers/contacts/ContactsProvider2.java
@@ -20,7 +20,6 @@ import static android.Manifest.permission.INTERACT_ACROSS_USERS;
import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
-import android.os.Looper;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.accounts.OnAccountsUpdateListener;
@@ -65,6 +64,7 @@ import android.os.Build;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.Handler;
+import android.os.Looper;
import android.os.ParcelFileDescriptor;
import android.os.ParcelFileDescriptor.AutoCloseInputStream;
import android.os.RemoteException;
@@ -126,7 +126,6 @@ import android.util.Log;
import com.android.common.content.ProjectionMap;
import com.android.common.content.SyncStateContentProviderHelper;
import com.android.common.io.MoreCloseables;
-import com.android.i18n.phonenumbers.Phonenumber;
import com.android.internal.util.ArrayUtils;
import com.android.providers.contacts.ContactLookupKey.LookupKeySegment;
import com.android.providers.contacts.ContactsDatabaseHelper.AccountsColumns;
@@ -2273,6 +2272,10 @@ public class ContactsProvider2 extends AbstractContactsProvider
@Override
public Bundle call(String method, String arg, Bundle extras) {
+ LogFields.Builder logBuilder =
+ LogFields.Builder.aLogFields()
+ .setApiType(LogUtils.ApiType.CALL)
+ .setStartNanos(SystemClock.elapsedRealtimeNanos());
waitForAccess(mReadAccessLatch);
switchToContactMode();
if (Authorization.AUTHORIZATION_METHOD.equals(method)) {
@@ -2313,34 +2316,54 @@ public class ContactsProvider2 extends AbstractContactsProvider
throw new IllegalArgumentException("Account name or type is empty");
}
+ long resultId = -1;
final Bundle response = new Bundle();
final SQLiteDatabase db = mDbHelper.get().getWritableDatabase();
db.beginTransaction();
try {
- mDbHelper.get().createSimAccountIdInTransaction(
+ resultId = mDbHelper.get().createSimAccountIdInTransaction(
AccountWithDataSet.get(accountName, accountType, null), simSlot, efType);
db.setTransactionSuccessful();
+ } catch (Exception e) {
+ logBuilder.setException(e);
+ throw e;
} finally {
+ LogUtils.log(
+ logBuilder
+ .setMethodCall(LogUtils.MethodCall.ADD_SIM_ACCOUNTS)
+ .setResultCount(resultId > -1 ? 1 : 0)
+ .build());
db.endTransaction();
}
+
getContext().sendBroadcast(new Intent(SimContacts.ACTION_SIM_ACCOUNTS_CHANGED));
return response;
} else if (SimContacts.REMOVE_SIM_ACCOUNT_METHOD.equals(method)) {
- ContactsPermissions.enforceCallingOrSelfPermission(getContext(),
- MANAGE_SIM_ACCOUNTS_PERMISSION);
+ ContactsPermissions.enforceCallingOrSelfPermission(
+ getContext(), MANAGE_SIM_ACCOUNTS_PERMISSION);
final int simSlot = extras.getInt(SimContacts.KEY_SIM_SLOT_INDEX, -1);
if (simSlot < 0) {
throw new IllegalArgumentException("Sim slot is negative");
}
+
+ int removedCount = 0;
final Bundle response = new Bundle();
final SQLiteDatabase db = mDbHelper.get().getWritableDatabase();
db.beginTransaction();
try {
- mDbHelper.get().removeSimAccounts(simSlot);
+ removedCount = mDbHelper.get().removeSimAccounts(simSlot);
scheduleBackgroundTask(BACKGROUND_TASK_UPDATE_ACCOUNTS);
db.setTransactionSuccessful();
+ } catch (Exception e) {
+ logBuilder.setException(e);
+ throw e;
} finally {
+ LogUtils.log(
+ logBuilder
+ .setMethodCall(LogUtils.MethodCall.REMOVE_SIM_ACCOUNTS)
+ .setResultCount(removedCount)
+ .build());
db.endTransaction();
}
getContext().sendBroadcast(new Intent(SimContacts.ACTION_SIM_ACCOUNTS_CHANGED));
@@ -2348,11 +2371,22 @@ public class ContactsProvider2 extends AbstractContactsProvider
} else if (SimContacts.QUERY_SIM_ACCOUNTS_METHOD.equals(method)) {
ContactsPermissions.enforceCallingOrSelfPermission(getContext(), READ_PERMISSION);
final Bundle response = new Bundle();
-
- final List<SimAccount> simAccounts = mDbHelper.get().getAllSimAccounts();
- response.putParcelableList(SimContacts.KEY_SIM_ACCOUNTS, simAccounts);
-
- return response;
+ int accountsCount = 0;
+ try {
+ final List<SimAccount> simAccounts = mDbHelper.get().getAllSimAccounts();
+ response.putParcelableList(SimContacts.KEY_SIM_ACCOUNTS, simAccounts);
+ accountsCount = simAccounts.size();
+ return response;
+ } catch (Exception e) {
+ logBuilder.setException(e);
+ throw e;
+ } finally {
+ LogUtils.log(
+ logBuilder
+ .setMethodCall(LogUtils.MethodCall.GET_SIM_ACCOUNTS)
+ .setResultCount(accountsCount)
+ .build());
+ }
}
return null;
}