Merge 24Q3 (ab/11976889) to aosp-main-future
Bug: 347831320
Merged-In: If0eb75bff237c6bab1dba21724abefc395ec2f02
Change-Id: I708ebcb4a56773b6e567a6af3def257a240bf84f
diff --git a/Android.bp b/Android.bp
index ab0fa8f..083244a 100644
--- a/Android.bp
+++ b/Android.bp
@@ -25,6 +25,7 @@
optimize: {
proguard_flags_files: ["proguard.flags"],
},
+ static_libs: ["contactskeysprovider_flags_java_lib"],
}
filegroup {
@@ -33,3 +34,17 @@
"src/**/*.java",
],
}
+
+aconfig_declarations {
+ name: "contactskeysprovider_flags",
+ package: "com.android.providers.contactkeys.flags",
+ container: "system",
+ srcs: [
+ "contactskeysprovider_flags.aconfig",
+ ],
+}
+
+java_aconfig_library {
+ name: "contactskeysprovider_flags_java_lib",
+ aconfig_declarations: "contactskeysprovider_flags",
+}
diff --git a/contactskeysprovider_flags.aconfig b/contactskeysprovider_flags.aconfig
new file mode 100644
index 0000000..35b6d56
--- /dev/null
+++ b/contactskeysprovider_flags.aconfig
@@ -0,0 +1,14 @@
+package: "com.android.providers.contactkeys.flags"
+container: "system"
+
+flag {
+ name: "contactkeys_strip_fix"
+ is_exported: true
+ namespace: "privacy_infra_policy"
+ description: "This flag controls whether E2EE contact key values are returned for apps with "
+ "WRITE_VERIFICATION_STATE_E2EE_CONTACT_KEYS"
+ bug: "344666512"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/src/com/android/providers/contactkeys/E2eeContactKeysProvider.java b/src/com/android/providers/contactkeys/E2eeContactKeysProvider.java
index a9bb85e..a702177 100644
--- a/src/com/android/providers/contactkeys/E2eeContactKeysProvider.java
+++ b/src/com/android/providers/contactkeys/E2eeContactKeysProvider.java
@@ -183,6 +183,16 @@
mDbHelper.getAllContactKeys(lookupKey);
contactKeys = filterVisibleContactKeys(contactKeys);
+
+ if (com.android.providers.contactkeys.flags.Flags.contactkeysStripFix()) {
+ if (E2eeContactKeysPermissions.hasCallerOrSelfPermission(getContext(),
+ UPDATE_VERIFICATION_STATE_PERMISSION)) {
+ response.putParcelableList(E2eeContactKeys.KEY_CONTACT_KEYS, contactKeys);
+
+ return response;
+ }
+ }
+
contactKeys = getStrippedContactKeys(contactKeys);
response.putParcelableList(E2eeContactKeys.KEY_CONTACT_KEYS, contactKeys);
@@ -410,6 +420,16 @@
List<E2eeContactKeysManager.E2eeSelfKey> selfKeys = mDbHelper.getAllSelfKeys();
selfKeys = filterVisibleSelfKeys(selfKeys);
+
+ if (com.android.providers.contactkeys.flags.Flags.contactkeysStripFix()) {
+ if (E2eeContactKeysPermissions.hasCallerOrSelfPermission(getContext(),
+ UPDATE_VERIFICATION_STATE_PERMISSION)) {
+ response.putParcelableList(E2eeContactKeys.KEY_CONTACT_KEYS, selfKeys);
+
+ return response;
+ }
+ }
+
selfKeys = getStrippedSelfKeys(selfKeys);
response.putParcelableList(E2eeContactKeys.KEY_CONTACT_KEYS, selfKeys);