Merge "Prevent SystemCaptionsManagerService init from blocking unlockUser" into rvc-dev am: ae34fd76ff

Change-Id: I84677cc70a3a0905810ce863975fecae1057ff1b
This commit is contained in:
TreeHugger Robot
2020-04-08 23:23:49 +00:00
committed by Automerger Merge Worker

View File

@@ -16,6 +16,8 @@
package com.android.server.systemcaptions;
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
import android.annotation.Nullable;
import android.content.ComponentName;
import android.content.Context;
@@ -37,6 +39,8 @@ final class RemoteSystemCaptionsManagerService {
private static final String SERVICE_INTERFACE =
"android.service.systemcaptions.SystemCaptionsManagerService";
private static final int MSG_BIND = 1;
private final Object mLock = new Object();
private final Context mContext;
@@ -71,18 +75,26 @@ final class RemoteSystemCaptionsManagerService {
if (mVerbose) {
Slog.v(TAG, "initialize()");
}
ensureBound();
scheduleBind();
}
void destroy() {
/**
* Destroys this service.
*/
public void destroy() {
mHandler.sendMessage(
obtainMessage(RemoteSystemCaptionsManagerService::handleDestroy, this));
}
void handleDestroy() {
if (mVerbose) {
Slog.v(TAG, "destroy()");
Slog.v(TAG, "handleDestroy()");
}
synchronized (mLock) {
if (mDestroyed) {
if (mVerbose) {
Slog.v(TAG, "destroy(): Already destroyed");
Slog.v(TAG, "handleDestroy(): Already destroyed");
}
return;
}
@@ -97,14 +109,24 @@ final class RemoteSystemCaptionsManagerService {
}
}
private void ensureBound() {
private void scheduleBind() {
if (mHandler.hasMessages(MSG_BIND)) {
if (mVerbose) Slog.v(TAG, "scheduleBind(): already scheduled");
return;
}
mHandler.sendMessage(
obtainMessage(RemoteSystemCaptionsManagerService::handleEnsureBound, this)
.setWhat(MSG_BIND));
}
private void handleEnsureBound() {
synchronized (mLock) {
if (mService != null || mBinding) {
return;
}
if (mVerbose) {
Slog.v(TAG, "ensureBound(): binding");
Slog.v(TAG, "handleEnsureBound(): binding");
}
mBinding = true;