Loading src/java/com/android/internal/telephony/ims/ImsServiceController.java +33 −3 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.content.pm.ChangedPackages; import android.content.pm.PackageManager; import android.os.Handler; import android.os.HandlerThread; import android.os.IBinder; Loading Loading @@ -69,6 +71,9 @@ import java.util.stream.Collectors; */ public class ImsServiceController { private final UUID mAnomalyUUID = UUID.fromString("e93b05e4-6d0a-4755-a6da-a2d2dbfb10d6"); private int mLastSequenceNumber = 0; private ChangedPackages mChangedPackages; private PackageManager mPackageManager; class ImsServiceConnection implements ServiceConnection { // Track the status of whether or not the Service has died in case we need to permanently // unbind (see onNullBinding below). Loading Loading @@ -118,9 +123,7 @@ public class ImsServiceController { mLocalLog.log("onServiceDisconnected"); Log.w(LOG_TAG, "ImsService(" + name + "): onServiceDisconnected. Waiting..."); // Service disconnected, but we are still technically bound. Waiting for reconnect. String message = "IMS Service Crashed"; AnomalyReporter.reportAnomaly(mAnomalyUUID, message); checkAndReportAnomaly(name); } @Override Loading Loading @@ -321,6 +324,14 @@ public class ImsServiceController { mPermissionManager = (PermissionManager) mContext.getSystemService(Context.PERMISSION_SERVICE); mRepo = repo; mPackageManager = mContext.getPackageManager(); if (mPackageManager != null) { mChangedPackages = mPackageManager.getChangedPackages(mLastSequenceNumber); if (mChangedPackages != null) { mLastSequenceNumber = mChangedPackages.getSequenceNumber(); } } } @VisibleForTesting Loading Loading @@ -820,6 +831,25 @@ public class ImsServiceController { } } private void checkAndReportAnomaly(ComponentName name) { if (mPackageManager == null) { Log.w(LOG_TAG, "mPackageManager null"); return; } ChangedPackages curChangedPackages = mPackageManager.getChangedPackages(mLastSequenceNumber); if (curChangedPackages != null) { mLastSequenceNumber = curChangedPackages.getSequenceNumber(); List<String> packagesNames = curChangedPackages.getPackageNames(); if (packagesNames.contains(name.getPackageName())) { Log.d(LOG_TAG, "Ignore due to updated, package: " + name.getPackageName()); return; } } String message = "IMS Service Crashed"; AnomalyReporter.reportAnomaly(mAnomalyUUID, message); } @Override public String toString() { synchronized (mLock) { Loading Loading
src/java/com/android/internal/telephony/ims/ImsServiceController.java +33 −3 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.content.pm.ChangedPackages; import android.content.pm.PackageManager; import android.os.Handler; import android.os.HandlerThread; import android.os.IBinder; Loading Loading @@ -69,6 +71,9 @@ import java.util.stream.Collectors; */ public class ImsServiceController { private final UUID mAnomalyUUID = UUID.fromString("e93b05e4-6d0a-4755-a6da-a2d2dbfb10d6"); private int mLastSequenceNumber = 0; private ChangedPackages mChangedPackages; private PackageManager mPackageManager; class ImsServiceConnection implements ServiceConnection { // Track the status of whether or not the Service has died in case we need to permanently // unbind (see onNullBinding below). Loading Loading @@ -118,9 +123,7 @@ public class ImsServiceController { mLocalLog.log("onServiceDisconnected"); Log.w(LOG_TAG, "ImsService(" + name + "): onServiceDisconnected. Waiting..."); // Service disconnected, but we are still technically bound. Waiting for reconnect. String message = "IMS Service Crashed"; AnomalyReporter.reportAnomaly(mAnomalyUUID, message); checkAndReportAnomaly(name); } @Override Loading Loading @@ -321,6 +324,14 @@ public class ImsServiceController { mPermissionManager = (PermissionManager) mContext.getSystemService(Context.PERMISSION_SERVICE); mRepo = repo; mPackageManager = mContext.getPackageManager(); if (mPackageManager != null) { mChangedPackages = mPackageManager.getChangedPackages(mLastSequenceNumber); if (mChangedPackages != null) { mLastSequenceNumber = mChangedPackages.getSequenceNumber(); } } } @VisibleForTesting Loading Loading @@ -820,6 +831,25 @@ public class ImsServiceController { } } private void checkAndReportAnomaly(ComponentName name) { if (mPackageManager == null) { Log.w(LOG_TAG, "mPackageManager null"); return; } ChangedPackages curChangedPackages = mPackageManager.getChangedPackages(mLastSequenceNumber); if (curChangedPackages != null) { mLastSequenceNumber = curChangedPackages.getSequenceNumber(); List<String> packagesNames = curChangedPackages.getPackageNames(); if (packagesNames.contains(name.getPackageName())) { Log.d(LOG_TAG, "Ignore due to updated, package: " + name.getPackageName()); return; } } String message = "IMS Service Crashed"; AnomalyReporter.reportAnomaly(mAnomalyUUID, message); } @Override public String toString() { synchronized (mLock) { Loading