Fix explicit intent for instant app tests.
Add null checks to ensure RemoteInlineSuggestionRenderService is not being called if service component cannot be found. Fixes: 150315090 Fixes: 150318779 Fixes: 150319014 Fixes: 150039791 Fixes: 150304313 Test: atest CtsAutoFillServiceTestCases --instant Test: atest CtsInputMethodServiceHostTestCases --instant Change-Id: Ie8c84b12a0dc8e7415d94e4edb919de27827b799
This commit is contained in:
@@ -1650,11 +1650,15 @@ final class AutofillManagerServiceImpl
|
||||
mRemoteInlineSuggestionRenderService = getRemoteInlineSuggestionRenderServiceLocked();
|
||||
}
|
||||
|
||||
RemoteInlineSuggestionRenderService getRemoteInlineSuggestionRenderServiceLocked() {
|
||||
final ComponentName componentName = RemoteInlineSuggestionRenderService
|
||||
.getServiceComponentName(getContext(), mUserId);
|
||||
|
||||
@Nullable RemoteInlineSuggestionRenderService getRemoteInlineSuggestionRenderServiceLocked() {
|
||||
if (mRemoteInlineSuggestionRenderService == null) {
|
||||
final ComponentName componentName = RemoteInlineSuggestionRenderService
|
||||
.getServiceComponentName(getContext(), mUserId);
|
||||
if (componentName == null) {
|
||||
Slog.w(TAG, "No valid component found for InlineSuggestionRenderService");
|
||||
return null;
|
||||
}
|
||||
|
||||
mRemoteInlineSuggestionRenderService = new RemoteInlineSuggestionRenderService(
|
||||
getContext(), componentName, InlineSuggestionRenderService.SERVICE_INTERFACE,
|
||||
mUserId, new InlineSuggestionRenderCallbacksImpl(),
|
||||
|
||||
@@ -149,7 +149,7 @@ final class RemoteAugmentedAutofillService
|
||||
@Nullable InlineSuggestionsRequest inlineSuggestionsRequest,
|
||||
@Nullable Function<InlineSuggestionsResponse, Boolean> inlineSuggestionsCallback,
|
||||
@NonNull Runnable onErrorCallback,
|
||||
@NonNull RemoteInlineSuggestionRenderService remoteRenderService) {
|
||||
@Nullable RemoteInlineSuggestionRenderService remoteRenderService) {
|
||||
long requestTime = SystemClock.elapsedRealtime();
|
||||
AtomicReference<ICancellationSignal> cancellationRef = new AtomicReference<>();
|
||||
|
||||
@@ -240,9 +240,10 @@ final class RemoteAugmentedAutofillService
|
||||
@Nullable List<InlinePresentation> inlineActions, @NonNull AutofillId focusedId,
|
||||
@Nullable Function<InlineSuggestionsResponse, Boolean> inlineSuggestionsCallback,
|
||||
@NonNull IAutoFillManagerClient client, @NonNull Runnable onErrorCallback,
|
||||
@NonNull RemoteInlineSuggestionRenderService remoteRenderService) {
|
||||
@Nullable RemoteInlineSuggestionRenderService remoteRenderService) {
|
||||
if (inlineSuggestionsData == null || inlineSuggestionsData.isEmpty()
|
||||
|| inlineSuggestionsCallback == null || request == null) {
|
||||
|| inlineSuggestionsCallback == null || request == null
|
||||
|| remoteRenderService == null) {
|
||||
return;
|
||||
}
|
||||
mCallbacks.setLastResponse(sessionId);
|
||||
|
||||
@@ -594,8 +594,9 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
/**
|
||||
* Returns whether inline suggestions are enabled for Autofill.
|
||||
*/
|
||||
private boolean isInlineSuggestionsEnabled() {
|
||||
return mService.isInlineSuggestionsEnabled();
|
||||
private boolean isInlineSuggestionsEnabledLocked() {
|
||||
return mService.isInlineSuggestionsEnabled()
|
||||
|| mService.getRemoteInlineSuggestionRenderServiceLocked() != null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -603,7 +604,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
*/
|
||||
private void maybeRequestInlineSuggestionsRequestThenFillLocked(@NonNull ViewState viewState,
|
||||
int newState, int flags) {
|
||||
if (isInlineSuggestionsEnabled()) {
|
||||
if (isInlineSuggestionsEnabledLocked()) {
|
||||
mInlineSuggestionSession.onCreateInlineSuggestionsRequest(mCurrentViewId);
|
||||
}
|
||||
|
||||
@@ -2662,6 +2663,14 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
Log.w(TAG, "InlineSuggestionsRequest unavailable");
|
||||
return false;
|
||||
}
|
||||
|
||||
final RemoteInlineSuggestionRenderService remoteRenderService =
|
||||
mService.getRemoteInlineSuggestionRenderServiceLocked();
|
||||
if (remoteRenderService == null) {
|
||||
Log.w(TAG, "RemoteInlineSuggestionRenderService not found");
|
||||
return false;
|
||||
}
|
||||
|
||||
InlineSuggestionsResponse inlineSuggestionsResponse =
|
||||
InlineSuggestionFactory.createInlineSuggestionsResponse(
|
||||
inlineSuggestionsRequest.get(),
|
||||
@@ -2670,11 +2679,12 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
synchronized (mLock) {
|
||||
requestHideFillUi(mCurrentViewId);
|
||||
}
|
||||
}, mService.getRemoteInlineSuggestionRenderServiceLocked());
|
||||
}, remoteRenderService);
|
||||
if (inlineSuggestionsResponse == null) {
|
||||
Slog.w(TAG, "InlineSuggestionFactory created null response");
|
||||
return false;
|
||||
}
|
||||
|
||||
return mInlineSuggestionSession.onInlineSuggestionsResponse(mCurrentViewId,
|
||||
inlineSuggestionsResponse);
|
||||
}
|
||||
@@ -2957,7 +2967,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState
|
||||
// 2. standard autofill provider doesn't support inline (and returns null response)
|
||||
// 3. standard autofill provider supports inline, but isn't called because the field
|
||||
// doesn't want autofill
|
||||
if (mForAugmentedAutofillOnly || !isInlineSuggestionsEnabled()) {
|
||||
if (mForAugmentedAutofillOnly || !isInlineSuggestionsEnabledLocked()) {
|
||||
if (sDebug) Slog.d(TAG, "Create inline request for augmented autofill");
|
||||
mInlineSuggestionSession.onCreateInlineSuggestionsRequest(mCurrentViewId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user