Loading services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java +26 −1 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.translation; package com.android.server.translation; import static android.view.translation.TranslationManager.EXTRA_CAPABILITIES; import static android.view.translation.TranslationManager.EXTRA_CAPABILITIES; import static android.view.translation.TranslationManager.STATUS_SYNC_CALL_FAIL; import static android.view.translation.UiTranslationManager.EXTRA_PACKAGE_NAME; import static android.view.translation.UiTranslationManager.EXTRA_PACKAGE_NAME; import static android.view.translation.UiTranslationManager.EXTRA_SOURCE_LOCALE; import static android.view.translation.UiTranslationManager.EXTRA_SOURCE_LOCALE; import static android.view.translation.UiTranslationManager.EXTRA_STATE; import static android.view.translation.UiTranslationManager.EXTRA_STATE; Loading @@ -32,7 +33,9 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.app.Activity; import android.content.ComponentName; import android.content.ComponentName; import android.content.Context; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.pm.ServiceInfo; import android.os.Bundle; import android.os.Bundle; import android.os.IBinder; import android.os.IBinder; Loading @@ -40,6 +43,7 @@ import android.os.IRemoteCallback; import android.os.RemoteCallbackList; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ResultReceiver; import android.service.translation.TranslationService; import android.service.translation.TranslationServiceInfo; import android.service.translation.TranslationServiceInfo; import android.util.ArrayMap; import android.util.ArrayMap; import android.util.ArraySet; import android.util.ArraySet; Loading Loading @@ -156,12 +160,27 @@ final class TranslationManagerServiceImpl extends return null; return null; } } final ComponentName serviceComponent = ComponentName.unflattenFromString(serviceName); final ComponentName serviceComponent = ComponentName.unflattenFromString(serviceName); if (!isServiceAvailableForUser(serviceComponent)) { if (mMaster.verbose) { Slog.v(TAG, "ensureRemoteServiceLocked(): " + serviceComponent + " is not available,"); } return null; } mRemoteTranslationService = new RemoteTranslationService(getContext(), serviceComponent, mRemoteTranslationService = new RemoteTranslationService(getContext(), serviceComponent, mUserId, /* isInstantAllowed= */ false, mRemoteServiceCallback); mUserId, /* isInstantAllowed= */ false, mRemoteServiceCallback); } } return mRemoteTranslationService; return mRemoteTranslationService; } } private boolean isServiceAvailableForUser(ComponentName serviceComponent) { Intent intent = new Intent(TranslationService.SERVICE_INTERFACE) .setComponent(serviceComponent); final ResolveInfo resolveInfo = getContext().getPackageManager().resolveServiceAsUser( intent, PackageManager.GET_SERVICES | PackageManager.GET_META_DATA, mUserId); return resolveInfo != null && resolveInfo.serviceInfo != null; } @GuardedBy("mLock") @GuardedBy("mLock") void onTranslationCapabilitiesRequestLocked(@TranslationSpec.DataFormat int sourceFormat, void onTranslationCapabilitiesRequestLocked(@TranslationSpec.DataFormat int sourceFormat, @TranslationSpec.DataFormat int destFormat, @TranslationSpec.DataFormat int destFormat, Loading @@ -170,6 +189,9 @@ final class TranslationManagerServiceImpl extends if (remoteService != null) { if (remoteService != null) { remoteService.onTranslationCapabilitiesRequest(sourceFormat, destFormat, remoteService.onTranslationCapabilitiesRequest(sourceFormat, destFormat, resultReceiver); resultReceiver); } else { Slog.v(TAG, "onTranslationCapabilitiesRequestLocked(): no remote service."); resultReceiver.send(STATUS_SYNC_CALL_FAIL, null); } } } } Loading @@ -184,10 +206,13 @@ final class TranslationManagerServiceImpl extends @GuardedBy("mLock") @GuardedBy("mLock") void onSessionCreatedLocked(@NonNull TranslationContext translationContext, int sessionId, void onSessionCreatedLocked(@NonNull TranslationContext translationContext, int sessionId, IResultReceiver resultReceiver) { IResultReceiver resultReceiver) throws RemoteException { final RemoteTranslationService remoteService = ensureRemoteServiceLocked(); final RemoteTranslationService remoteService = ensureRemoteServiceLocked(); if (remoteService != null) { if (remoteService != null) { remoteService.onSessionCreated(translationContext, sessionId, resultReceiver); remoteService.onSessionCreated(translationContext, sessionId, resultReceiver); } else { Slog.v(TAG, "onSessionCreatedLocked(): no remote service."); resultReceiver.send(STATUS_SYNC_CALL_FAIL, null); } } } } Loading Loading
services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java +26 −1 Original line number Original line Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.server.translation; package com.android.server.translation; import static android.view.translation.TranslationManager.EXTRA_CAPABILITIES; import static android.view.translation.TranslationManager.EXTRA_CAPABILITIES; import static android.view.translation.TranslationManager.STATUS_SYNC_CALL_FAIL; import static android.view.translation.UiTranslationManager.EXTRA_PACKAGE_NAME; import static android.view.translation.UiTranslationManager.EXTRA_PACKAGE_NAME; import static android.view.translation.UiTranslationManager.EXTRA_SOURCE_LOCALE; import static android.view.translation.UiTranslationManager.EXTRA_SOURCE_LOCALE; import static android.view.translation.UiTranslationManager.EXTRA_STATE; import static android.view.translation.UiTranslationManager.EXTRA_STATE; Loading @@ -32,7 +33,9 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.app.Activity; import android.content.ComponentName; import android.content.ComponentName; import android.content.Context; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.content.pm.ServiceInfo; import android.os.Bundle; import android.os.Bundle; import android.os.IBinder; import android.os.IBinder; Loading @@ -40,6 +43,7 @@ import android.os.IRemoteCallback; import android.os.RemoteCallbackList; import android.os.RemoteCallbackList; import android.os.RemoteException; import android.os.RemoteException; import android.os.ResultReceiver; import android.os.ResultReceiver; import android.service.translation.TranslationService; import android.service.translation.TranslationServiceInfo; import android.service.translation.TranslationServiceInfo; import android.util.ArrayMap; import android.util.ArrayMap; import android.util.ArraySet; import android.util.ArraySet; Loading Loading @@ -156,12 +160,27 @@ final class TranslationManagerServiceImpl extends return null; return null; } } final ComponentName serviceComponent = ComponentName.unflattenFromString(serviceName); final ComponentName serviceComponent = ComponentName.unflattenFromString(serviceName); if (!isServiceAvailableForUser(serviceComponent)) { if (mMaster.verbose) { Slog.v(TAG, "ensureRemoteServiceLocked(): " + serviceComponent + " is not available,"); } return null; } mRemoteTranslationService = new RemoteTranslationService(getContext(), serviceComponent, mRemoteTranslationService = new RemoteTranslationService(getContext(), serviceComponent, mUserId, /* isInstantAllowed= */ false, mRemoteServiceCallback); mUserId, /* isInstantAllowed= */ false, mRemoteServiceCallback); } } return mRemoteTranslationService; return mRemoteTranslationService; } } private boolean isServiceAvailableForUser(ComponentName serviceComponent) { Intent intent = new Intent(TranslationService.SERVICE_INTERFACE) .setComponent(serviceComponent); final ResolveInfo resolveInfo = getContext().getPackageManager().resolveServiceAsUser( intent, PackageManager.GET_SERVICES | PackageManager.GET_META_DATA, mUserId); return resolveInfo != null && resolveInfo.serviceInfo != null; } @GuardedBy("mLock") @GuardedBy("mLock") void onTranslationCapabilitiesRequestLocked(@TranslationSpec.DataFormat int sourceFormat, void onTranslationCapabilitiesRequestLocked(@TranslationSpec.DataFormat int sourceFormat, @TranslationSpec.DataFormat int destFormat, @TranslationSpec.DataFormat int destFormat, Loading @@ -170,6 +189,9 @@ final class TranslationManagerServiceImpl extends if (remoteService != null) { if (remoteService != null) { remoteService.onTranslationCapabilitiesRequest(sourceFormat, destFormat, remoteService.onTranslationCapabilitiesRequest(sourceFormat, destFormat, resultReceiver); resultReceiver); } else { Slog.v(TAG, "onTranslationCapabilitiesRequestLocked(): no remote service."); resultReceiver.send(STATUS_SYNC_CALL_FAIL, null); } } } } Loading @@ -184,10 +206,13 @@ final class TranslationManagerServiceImpl extends @GuardedBy("mLock") @GuardedBy("mLock") void onSessionCreatedLocked(@NonNull TranslationContext translationContext, int sessionId, void onSessionCreatedLocked(@NonNull TranslationContext translationContext, int sessionId, IResultReceiver resultReceiver) { IResultReceiver resultReceiver) throws RemoteException { final RemoteTranslationService remoteService = ensureRemoteServiceLocked(); final RemoteTranslationService remoteService = ensureRemoteServiceLocked(); if (remoteService != null) { if (remoteService != null) { remoteService.onSessionCreated(translationContext, sessionId, resultReceiver); remoteService.onSessionCreated(translationContext, sessionId, resultReceiver); } else { Slog.v(TAG, "onSessionCreatedLocked(): no remote service."); resultReceiver.send(STATUS_SYNC_CALL_FAIL, null); } } } } Loading