Loading src/com/android/server/telecom/Log.java +26 −8 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.telecom; import android.net.Uri; import android.os.AsyncTask; import android.telecom.PhoneAccount; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; Loading Loading @@ -217,8 +218,26 @@ public class Log { private static final LinkedBlockingQueue<CallEventRecord> mCallEventRecords = new LinkedBlockingQueue<CallEventRecord>(MAX_CALLS_TO_CACHE); private static MessageDigest sMessageDigest; private Log() {} public static void initMd5Sum() { new AsyncTask<Void, Void, Void>() { @Override public Void doInBackground(Void... args) { MessageDigest md; try { md = MessageDigest.getInstance("SHA-1"); } catch (NoSuchAlgorithmException e) { md = null; } sMessageDigest = md; return null; } }.execute(); } @VisibleForTesting public static void setTag(String tag) { TAG = tag; Loading Loading @@ -396,15 +415,14 @@ public class Log { } private static String secureHash(byte[] input) { MessageDigest messageDigest; try { messageDigest = MessageDigest.getInstance("SHA-1"); } catch (NoSuchAlgorithmException e) { return null; } messageDigest.update(input); byte[] result = messageDigest.digest(); if (sMessageDigest != null) { sMessageDigest.reset(); sMessageDigest.update(input); byte[] result = sMessageDigest.digest(); return encodeHex(result); } else { return "Uninitialized SHA1"; } } private static String encodeHex(byte[] bytes) { Loading src/com/android/server/telecom/PhoneAccountRegistrar.java +29 −16 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.Icon; import android.net.Uri; import android.os.AsyncTask; import android.os.Binder; import android.os.PersistableBundle; import android.os.Process; Loading Loading @@ -133,6 +134,9 @@ public final class PhoneAccountRegistrar { private final SubscriptionManager mSubscriptionManager; private State mState; private UserHandle mCurrentUserHandle; private interface PhoneAccountRegistrarWriteLock {} private final PhoneAccountRegistrarWriteLock mWriteLock = new PhoneAccountRegistrarWriteLock() {}; @VisibleForTesting public PhoneAccountRegistrar(Context context) { Loading Loading @@ -864,26 +868,35 @@ public final class PhoneAccountRegistrar { // State management // private void write() { final FileOutputStream os; private class AsyncXmlWriter extends AsyncTask<ByteArrayOutputStream, Void, Void> { @Override public Void doInBackground(ByteArrayOutputStream... args) { final ByteArrayOutputStream buffer = args[0]; FileOutputStream fileOutput = null; try { os = mAtomicFile.startWrite(); boolean success = false; synchronized (mWriteLock) { fileOutput = mAtomicFile.startWrite(); buffer.writeTo(fileOutput); mAtomicFile.finishWrite(fileOutput); } } catch (IOException e) { Log.e(this, e, "Writing state to XML file"); mAtomicFile.failWrite(fileOutput); } return null; } } private void write() { try { ByteArrayOutputStream os = new ByteArrayOutputStream(); XmlSerializer serializer = new FastXmlSerializer(); serializer.setOutput(new BufferedOutputStream(os), "utf-8"); serializer.setOutput(os, "utf-8"); writeToXml(mState, serializer, mContext); serializer.flush(); success = true; } finally { if (success) { mAtomicFile.finishWrite(os); } else { mAtomicFile.failWrite(os); } } new AsyncXmlWriter().execute(os); } catch (IOException e) { Log.e(this, e, "Writing state to XML file"); Log.e(this, e, "Writing state to XML buffer"); } } Loading src/com/android/server/telecom/TelecomSystem.java +1 −0 Original line number Diff line number Diff line Loading @@ -97,6 +97,7 @@ public final class TelecomSystem { ProximitySensorManagerFactory proximitySensorManagerFactory, InCallWakeLockControllerFactory inCallWakeLockControllerFactory) { mContext = context.getApplicationContext(); Log.initMd5Sum(); mMissedCallNotifier = missedCallNotifier; mPhoneAccountRegistrar = new PhoneAccountRegistrar(mContext); Loading Loading
src/com/android/server/telecom/Log.java +26 −8 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.telecom; import android.net.Uri; import android.os.AsyncTask; import android.telecom.PhoneAccount; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; Loading Loading @@ -217,8 +218,26 @@ public class Log { private static final LinkedBlockingQueue<CallEventRecord> mCallEventRecords = new LinkedBlockingQueue<CallEventRecord>(MAX_CALLS_TO_CACHE); private static MessageDigest sMessageDigest; private Log() {} public static void initMd5Sum() { new AsyncTask<Void, Void, Void>() { @Override public Void doInBackground(Void... args) { MessageDigest md; try { md = MessageDigest.getInstance("SHA-1"); } catch (NoSuchAlgorithmException e) { md = null; } sMessageDigest = md; return null; } }.execute(); } @VisibleForTesting public static void setTag(String tag) { TAG = tag; Loading Loading @@ -396,15 +415,14 @@ public class Log { } private static String secureHash(byte[] input) { MessageDigest messageDigest; try { messageDigest = MessageDigest.getInstance("SHA-1"); } catch (NoSuchAlgorithmException e) { return null; } messageDigest.update(input); byte[] result = messageDigest.digest(); if (sMessageDigest != null) { sMessageDigest.reset(); sMessageDigest.update(input); byte[] result = sMessageDigest.digest(); return encodeHex(result); } else { return "Uninitialized SHA1"; } } private static String encodeHex(byte[] bytes) { Loading
src/com/android/server/telecom/PhoneAccountRegistrar.java +29 −16 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.Icon; import android.net.Uri; import android.os.AsyncTask; import android.os.Binder; import android.os.PersistableBundle; import android.os.Process; Loading Loading @@ -133,6 +134,9 @@ public final class PhoneAccountRegistrar { private final SubscriptionManager mSubscriptionManager; private State mState; private UserHandle mCurrentUserHandle; private interface PhoneAccountRegistrarWriteLock {} private final PhoneAccountRegistrarWriteLock mWriteLock = new PhoneAccountRegistrarWriteLock() {}; @VisibleForTesting public PhoneAccountRegistrar(Context context) { Loading Loading @@ -864,26 +868,35 @@ public final class PhoneAccountRegistrar { // State management // private void write() { final FileOutputStream os; private class AsyncXmlWriter extends AsyncTask<ByteArrayOutputStream, Void, Void> { @Override public Void doInBackground(ByteArrayOutputStream... args) { final ByteArrayOutputStream buffer = args[0]; FileOutputStream fileOutput = null; try { os = mAtomicFile.startWrite(); boolean success = false; synchronized (mWriteLock) { fileOutput = mAtomicFile.startWrite(); buffer.writeTo(fileOutput); mAtomicFile.finishWrite(fileOutput); } } catch (IOException e) { Log.e(this, e, "Writing state to XML file"); mAtomicFile.failWrite(fileOutput); } return null; } } private void write() { try { ByteArrayOutputStream os = new ByteArrayOutputStream(); XmlSerializer serializer = new FastXmlSerializer(); serializer.setOutput(new BufferedOutputStream(os), "utf-8"); serializer.setOutput(os, "utf-8"); writeToXml(mState, serializer, mContext); serializer.flush(); success = true; } finally { if (success) { mAtomicFile.finishWrite(os); } else { mAtomicFile.failWrite(os); } } new AsyncXmlWriter().execute(os); } catch (IOException e) { Log.e(this, e, "Writing state to XML file"); Log.e(this, e, "Writing state to XML buffer"); } } Loading
src/com/android/server/telecom/TelecomSystem.java +1 −0 Original line number Diff line number Diff line Loading @@ -97,6 +97,7 @@ public final class TelecomSystem { ProximitySensorManagerFactory proximitySensorManagerFactory, InCallWakeLockControllerFactory inCallWakeLockControllerFactory) { mContext = context.getApplicationContext(); Log.initMd5Sum(); mMissedCallNotifier = missedCallNotifier; mPhoneAccountRegistrar = new PhoneAccountRegistrar(mContext); Loading