Merge "Revert "Rebind ContentCaptureService when the binderDied."" into tm-dev

This commit is contained in:
Joanne Chung
2022-05-26 06:27:22 +00:00
committed by Android (Google) Code Review
2 changed files with 7 additions and 56 deletions

View File

@@ -223,7 +223,7 @@ public final class ContentCaptureManagerService extends
@Override // from AbstractMasterSystemService
protected ContentCapturePerUserService newServiceLocked(@UserIdInt int resolvedUserId,
boolean disabled) {
return new ContentCapturePerUserService(this, mLock, disabled, resolvedUserId, mHandler);
return new ContentCapturePerUserService(this, mLock, disabled, resolvedUserId);
}
@Override // from SystemService

View File

@@ -46,7 +46,6 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.ServiceInfo;
import android.os.Binder;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.UserHandle;
import android.provider.Settings;
@@ -76,7 +75,6 @@ import com.android.server.contentcapture.RemoteContentCaptureService.ContentCapt
import com.android.server.infra.AbstractPerUserSystemService;
import java.io.PrintWriter;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
@@ -90,10 +88,6 @@ final class ContentCapturePerUserService
private static final String TAG = ContentCapturePerUserService.class.getSimpleName();
private static final int MAX_REBIND_COUNTS = 5;
// 5 minutes
private static final long REBIND_DURATION_MS = 5 * 60 * 1_000;
@GuardedBy("mLock")
private final SparseArray<ContentCaptureServerSession> mSessions = new SparseArray<>();
@@ -127,18 +121,11 @@ final class ContentCapturePerUserService
@GuardedBy("mLock")
private ContentCaptureServiceInfo mInfo;
private Instant mLastRebindTime;
private int mRebindCount;
private final Handler mHandler;
private final Runnable mReBindServiceRunnable = new RebindServiceRunnable();
// TODO(b/111276913): add mechanism to prune stale sessions, similar to Autofill's
ContentCapturePerUserService(@NonNull ContentCaptureManagerService master,
@NonNull Object lock, boolean disabled, @UserIdInt int userId, Handler handler) {
@NonNull Object lock, boolean disabled, @UserIdInt int userId) {
super(master, lock, userId);
mHandler = handler;
updateRemoteServiceLocked(disabled);
}
@@ -203,43 +190,9 @@ final class ContentCapturePerUserService
Slog.w(TAG, "remote service died: " + service);
synchronized (mLock) {
mZombie = true;
// Reset rebindCount if over 12 hours mLastRebindTime
if (mLastRebindTime != null && Instant.now().isAfter(
mLastRebindTime.plusMillis(12 * 60 * 60 * 1000))) {
if (mMaster.debug) {
Slog.i(TAG, "The current rebind count " + mRebindCount + " is reset.");
}
mRebindCount = 0;
}
if (mRebindCount >= MAX_REBIND_COUNTS) {
writeServiceEvent(
FrameworkStatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__ON_REMOTE_SERVICE_DIED,
getServiceComponentName());
}
if (mRebindCount < MAX_REBIND_COUNTS) {
mHandler.removeCallbacks(mReBindServiceRunnable);
mHandler.postDelayed(mReBindServiceRunnable, REBIND_DURATION_MS);
}
}
}
private void updateRemoteServiceAndResurrectSessionsLocked() {
boolean disabled = !isEnabledLocked();
updateRemoteServiceLocked(disabled);
resurrectSessionsLocked();
}
private final class RebindServiceRunnable implements Runnable{
@Override
public void run() {
synchronized (mLock) {
if (mZombie) {
mLastRebindTime = Instant.now();
mRebindCount++;
updateRemoteServiceAndResurrectSessionsLocked();
}
}
writeServiceEvent(
FrameworkStatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__ON_REMOTE_SERVICE_DIED,
getServiceComponentName());
}
}
@@ -287,8 +240,8 @@ final class ContentCapturePerUserService
}
void onPackageUpdatedLocked() {
mRebindCount = 0;
updateRemoteServiceAndResurrectSessionsLocked();
updateRemoteServiceLocked(!isEnabledLocked());
resurrectSessionsLocked();
}
@GuardedBy("mLock")
@@ -602,8 +555,6 @@ final class ContentCapturePerUserService
mInfo.dump(prefix2, pw);
}
pw.print(prefix); pw.print("Zombie: "); pw.println(mZombie);
pw.print(prefix); pw.print("Rebind count: "); pw.println(mRebindCount);
pw.print(prefix); pw.print("Last rebind: "); pw.println(mLastRebindTime);
if (mRemoteService != null) {
pw.print(prefix); pw.println("remote service:");