Loading src/com/android/server/telecom/CallsManager.java +9 −2 Original line number Diff line number Diff line Loading @@ -764,9 +764,16 @@ public class CallsManager extends Call.ListenerBase if (incomingCall.isUsingCallFiltering()) { boolean isInContacts = incomingCall.getCallerInfo() != null && incomingCall.getCallerInfo().contactExists; Connection.CallFilteringCompletionInfo completionInfo = new Connection.CallFilteringCompletionInfo(!result.shouldAllowCall, isInContacts, result.mCallScreeningResponse == null ? null : result.mCallScreeningResponse.toCallResponse(), result.mCallScreeningComponentName == null ? null : ComponentName.unflattenFromString( result.mCallScreeningComponentName)); incomingCall.getConnectionService().onCallFilteringCompleted(incomingCall, !result.shouldAllowCall, isInContacts, result.mCallScreeningResponse, result.mIsResponseFromSystemDialer); completionInfo); } // Get rid of the call composer attachments that aren't wanted Loading src/com/android/server/telecom/ConnectionServiceWrapper.java +6 −7 Original line number Diff line number Diff line Loading @@ -1865,25 +1865,24 @@ public class ConnectionServiceWrapper extends ServiceBinder implements } } void onCallFilteringCompleted(Call call, boolean isBlocked, boolean isInContacts, CallScreeningService.ParcelableCallResponse callScreeningResponse, boolean isResponseFromSystemDialer) { void onCallFilteringCompleted(Call call, Connection.CallFilteringCompletionInfo completionInfo) { final String callId = mCallIdMapper.getCallId(call); if (callId != null && isServiceValid("onCallFilteringCompleted")) { try { logOutgoing("onCallFilteringCompleted %b %b", isBlocked, isInContacts); logOutgoing("onCallFilteringCompleted %s", completionInfo); int contactsPermission = mContext.getPackageManager() .checkPermission(Manifest.permission.READ_CONTACTS, getComponentName().getPackageName()); if (contactsPermission == PackageManager.PERMISSION_GRANTED) { mServiceInterface.onCallFilteringCompleted(callId, isBlocked, isInContacts, callScreeningResponse, isResponseFromSystemDialer, mServiceInterface.onCallFilteringCompleted(callId, completionInfo, Log.getExternalSession(TELECOM_ABBREVIATION)); } else { logOutgoing("Skipping call filtering complete message for %s due" + " to lack of READ_CONTACTS", getComponentName().getPackageName()); } } catch (RemoteException ignored) { } catch (RemoteException e) { Log.e(this, e, "Remote exception calling onCallFilteringCompleted"); } } } Loading src/com/android/server/telecom/callfiltering/CallFilteringResult.java +13 −2 Original line number Diff line number Diff line Loading @@ -241,11 +241,22 @@ public class CallFilteringResult { CallFilteringResult r2) { if (r1.mIsResponseFromSystemDialer) { builder.setCallScreeningResponse(r1.mCallScreeningResponse, true); builder.setCallScreeningComponentName(r1.mCallScreeningComponentName); builder.setCallScreeningAppName(r1.mCallScreeningAppName); } else if (r2.mIsResponseFromSystemDialer) { builder.setCallScreeningResponse(r2.mCallScreeningResponse, true); builder.setCallScreeningComponentName(r2.mCallScreeningComponentName); builder.setCallScreeningAppName(r2.mCallScreeningAppName); } else { builder.setCallScreeningResponse(r1.mCallScreeningResponse == null ? r2.mCallScreeningResponse : r1.mCallScreeningResponse, false); if (r1.mCallScreeningResponse != null) { builder.setCallScreeningResponse(r1.mCallScreeningResponse, false); builder.setCallScreeningComponentName(r1.mCallScreeningComponentName); builder.setCallScreeningAppName(r1.mCallScreeningAppName); } else { builder.setCallScreeningResponse(r2.mCallScreeningResponse, false); builder.setCallScreeningComponentName(r2.mCallScreeningComponentName); builder.setCallScreeningAppName(r2.mCallScreeningAppName); } } } Loading src/com/android/server/telecom/callfiltering/IncomingCallFilterGraph.java +5 −1 Original line number Diff line number Diff line Loading @@ -159,7 +159,11 @@ public class IncomingCallFilterGraph { startFuture.thenComposeAsync(filter::startFilterLookup, new LoggedHandlerExecutor(mHandler, "ICFG.sF", null)) .thenApplyAsync(postFilterTask::whenDone, new LoggedHandlerExecutor(mHandler, "ICFG.sF", null)); new LoggedHandlerExecutor(mHandler, "ICFG.sF", null)) .exceptionally((t) -> { Log.e(filter, t, "Encountered exception running filter"); return null; }); Log.i(TAG, "Filter %s scheduled.", filter); } Loading tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java +2 −3 Original line number Diff line number Diff line Loading @@ -440,9 +440,8 @@ public class ConnectionServiceFixture implements TestFixture<IConnectionService> public void handoverComplete(String callId, Session.Info sessionInfo) {} @Override public void onCallFilteringCompleted(String callId, boolean isBlocked, boolean isInContacts, CallScreeningService.ParcelableCallResponse callScreeningResponse, boolean isResponseFromSystemDialer, Session.Info sessionInfo) { } public void onCallFilteringCompleted(String callId, Connection.CallFilteringCompletionInfo completionInfo, Session.Info sessionInfo) { } } FakeConnectionServiceDelegate mConnectionServiceDelegate; Loading Loading
src/com/android/server/telecom/CallsManager.java +9 −2 Original line number Diff line number Diff line Loading @@ -764,9 +764,16 @@ public class CallsManager extends Call.ListenerBase if (incomingCall.isUsingCallFiltering()) { boolean isInContacts = incomingCall.getCallerInfo() != null && incomingCall.getCallerInfo().contactExists; Connection.CallFilteringCompletionInfo completionInfo = new Connection.CallFilteringCompletionInfo(!result.shouldAllowCall, isInContacts, result.mCallScreeningResponse == null ? null : result.mCallScreeningResponse.toCallResponse(), result.mCallScreeningComponentName == null ? null : ComponentName.unflattenFromString( result.mCallScreeningComponentName)); incomingCall.getConnectionService().onCallFilteringCompleted(incomingCall, !result.shouldAllowCall, isInContacts, result.mCallScreeningResponse, result.mIsResponseFromSystemDialer); completionInfo); } // Get rid of the call composer attachments that aren't wanted Loading
src/com/android/server/telecom/ConnectionServiceWrapper.java +6 −7 Original line number Diff line number Diff line Loading @@ -1865,25 +1865,24 @@ public class ConnectionServiceWrapper extends ServiceBinder implements } } void onCallFilteringCompleted(Call call, boolean isBlocked, boolean isInContacts, CallScreeningService.ParcelableCallResponse callScreeningResponse, boolean isResponseFromSystemDialer) { void onCallFilteringCompleted(Call call, Connection.CallFilteringCompletionInfo completionInfo) { final String callId = mCallIdMapper.getCallId(call); if (callId != null && isServiceValid("onCallFilteringCompleted")) { try { logOutgoing("onCallFilteringCompleted %b %b", isBlocked, isInContacts); logOutgoing("onCallFilteringCompleted %s", completionInfo); int contactsPermission = mContext.getPackageManager() .checkPermission(Manifest.permission.READ_CONTACTS, getComponentName().getPackageName()); if (contactsPermission == PackageManager.PERMISSION_GRANTED) { mServiceInterface.onCallFilteringCompleted(callId, isBlocked, isInContacts, callScreeningResponse, isResponseFromSystemDialer, mServiceInterface.onCallFilteringCompleted(callId, completionInfo, Log.getExternalSession(TELECOM_ABBREVIATION)); } else { logOutgoing("Skipping call filtering complete message for %s due" + " to lack of READ_CONTACTS", getComponentName().getPackageName()); } } catch (RemoteException ignored) { } catch (RemoteException e) { Log.e(this, e, "Remote exception calling onCallFilteringCompleted"); } } } Loading
src/com/android/server/telecom/callfiltering/CallFilteringResult.java +13 −2 Original line number Diff line number Diff line Loading @@ -241,11 +241,22 @@ public class CallFilteringResult { CallFilteringResult r2) { if (r1.mIsResponseFromSystemDialer) { builder.setCallScreeningResponse(r1.mCallScreeningResponse, true); builder.setCallScreeningComponentName(r1.mCallScreeningComponentName); builder.setCallScreeningAppName(r1.mCallScreeningAppName); } else if (r2.mIsResponseFromSystemDialer) { builder.setCallScreeningResponse(r2.mCallScreeningResponse, true); builder.setCallScreeningComponentName(r2.mCallScreeningComponentName); builder.setCallScreeningAppName(r2.mCallScreeningAppName); } else { builder.setCallScreeningResponse(r1.mCallScreeningResponse == null ? r2.mCallScreeningResponse : r1.mCallScreeningResponse, false); if (r1.mCallScreeningResponse != null) { builder.setCallScreeningResponse(r1.mCallScreeningResponse, false); builder.setCallScreeningComponentName(r1.mCallScreeningComponentName); builder.setCallScreeningAppName(r1.mCallScreeningAppName); } else { builder.setCallScreeningResponse(r2.mCallScreeningResponse, false); builder.setCallScreeningComponentName(r2.mCallScreeningComponentName); builder.setCallScreeningAppName(r2.mCallScreeningAppName); } } } Loading
src/com/android/server/telecom/callfiltering/IncomingCallFilterGraph.java +5 −1 Original line number Diff line number Diff line Loading @@ -159,7 +159,11 @@ public class IncomingCallFilterGraph { startFuture.thenComposeAsync(filter::startFilterLookup, new LoggedHandlerExecutor(mHandler, "ICFG.sF", null)) .thenApplyAsync(postFilterTask::whenDone, new LoggedHandlerExecutor(mHandler, "ICFG.sF", null)); new LoggedHandlerExecutor(mHandler, "ICFG.sF", null)) .exceptionally((t) -> { Log.e(filter, t, "Encountered exception running filter"); return null; }); Log.i(TAG, "Filter %s scheduled.", filter); } Loading
tests/src/com/android/server/telecom/tests/ConnectionServiceFixture.java +2 −3 Original line number Diff line number Diff line Loading @@ -440,9 +440,8 @@ public class ConnectionServiceFixture implements TestFixture<IConnectionService> public void handoverComplete(String callId, Session.Info sessionInfo) {} @Override public void onCallFilteringCompleted(String callId, boolean isBlocked, boolean isInContacts, CallScreeningService.ParcelableCallResponse callScreeningResponse, boolean isResponseFromSystemDialer, Session.Info sessionInfo) { } public void onCallFilteringCompleted(String callId, Connection.CallFilteringCompletionInfo completionInfo, Session.Info sessionInfo) { } } FakeConnectionServiceDelegate mConnectionServiceDelegate; Loading