From eb87a4d969c8282ff0c257541a42e499a99d32c7 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Thu, 28 Apr 2016 13:34:45 -0700 Subject: [PATCH] Always log web link filter verification parameters This is to support CTS's ability to check that the expected verifications are indeed being performed by the currently active verifier. Bug 27482754 Change-Id: Iccb9bd273c7893f04e45bfca0708dcfdde595a3e --- .../IntentFilterVerificationReceiver.java | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/StatementService/src/com/android/statementservice/IntentFilterVerificationReceiver.java b/packages/StatementService/src/com/android/statementservice/IntentFilterVerificationReceiver.java index 57809acc84b10..ba8e7a1d3db32 100644 --- a/packages/StatementService/src/com/android/statementservice/IntentFilterVerificationReceiver.java +++ b/packages/StatementService/src/com/android/statementservice/IntentFilterVerificationReceiver.java @@ -24,6 +24,7 @@ import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle; import android.os.Handler; import android.os.ResultReceiver; +import android.text.TextUtils; import android.util.Log; import android.util.Patterns; @@ -90,8 +91,6 @@ public final class IntentFilterVerificationReceiver extends BroadcastReceiver { String packageName = inputExtras.getString( PackageManager.EXTRA_INTENT_FILTER_VERIFICATION_PACKAGE_NAME); - Log.i(TAG, "Verify IntentFilter for " + hosts); - Bundle extras = new Bundle(); extras.putString(DirectStatementService.EXTRA_RELATION, HANDLE_ALL_URLS_RELATION); @@ -103,6 +102,7 @@ public final class IntentFilterVerificationReceiver extends BroadcastReceiver { return; } + ArrayList finalHosts = new ArrayList(hostList.length); try { ArrayList sourceAssets = new ArrayList(); for (String host : hostList) { @@ -111,6 +111,7 @@ public final class IntentFilterVerificationReceiver extends BroadcastReceiver { host = host.substring(2); } sourceAssets.add(createWebAssetString(scheme, host)); + finalHosts.add(host); } extras.putStringArrayList(DirectStatementService.EXTRA_SOURCE_ASSET_DESCRIPTORS, sourceAssets); @@ -131,6 +132,9 @@ public final class IntentFilterVerificationReceiver extends BroadcastReceiver { new IsAssociatedResultReceiver( new Handler(), context.getPackageManager(), verificationId)); + // Required for CTS: log a few details of the validcation operation to be performed + logValidationParametersForCTS(verificationId, scheme, finalHosts, packageName); + serviceIntent.putExtras(extras); context.startService(serviceIntent); } @@ -139,6 +143,15 @@ public final class IntentFilterVerificationReceiver extends BroadcastReceiver { } } + // CTS requirement: logging of the validation parameters in a specific format + private static final String CTS_LOG_FORMAT = + "Verifying IntentFilter. verificationId:%d scheme:\"%s\" hosts:\"%s\" package:\"%s\"."; + private void logValidationParametersForCTS(int verificationId, String scheme, + ArrayList finalHosts, String packageName) { + String hostString = TextUtils.join(" ", finalHosts.toArray()); + Log.i(TAG, String.format(CTS_LOG_FORMAT, verificationId, scheme, hostString, packageName)); + } + private String createAndroidAssetString(Context context, String packageName) throws NameNotFoundException { if (!ANDROID_PACKAGE_NAME_PATTERN.matcher(packageName).matches()) {