Fix two issues I found when adding CTS
1. staticMetadata qualified ID is not set proprely.
2. The schema visibility should be set in the child schema, instead
of parent.
Flag: android.app.appfunctions.flags.enable_app_function_manager
Bug: 360864791
Test: atest FrameworksAppFunctionsTests
Change-Id: Ic94d6d5acf3a3ee7fede10b61f2dbe82813b468d
diff --git a/core/java/android/app/appfunctions/AppFunctionRuntimeMetadata.java b/core/java/android/app/appfunctions/AppFunctionRuntimeMetadata.java
index f5c5a11..36daaab 100644
--- a/core/java/android/app/appfunctions/AppFunctionRuntimeMetadata.java
+++ b/core/java/android/app/appfunctions/AppFunctionRuntimeMetadata.java
@@ -180,13 +180,8 @@
*
* @param packageName the name of the package that owns the function.
* @param functionId the id of the function.
- * @param staticMetadataQualifiedId the qualified static metadata id that this runtime
- * metadata refers to.
*/
- public Builder(
- @NonNull String packageName,
- @NonNull String functionId,
- @NonNull String staticMetadataQualifiedId) {
+ public Builder(@NonNull String packageName, @NonNull String functionId) {
super(
APP_FUNCTION_RUNTIME_NAMESPACE,
getDocumentIdForAppFunction(
@@ -198,7 +193,9 @@
// Set qualified id automatically
setPropertyString(
- PROPERTY_APP_FUNCTION_STATIC_METADATA_QUALIFIED_ID, staticMetadataQualifiedId);
+ PROPERTY_APP_FUNCTION_STATIC_METADATA_QUALIFIED_ID,
+ AppFunctionStaticMetadataHelper.getStaticMetadataQualifiedId(
+ packageName, functionId));
}
/**
diff --git a/services/appfunctions/java/com/android/server/appfunctions/MetadataSyncAdapter.java b/services/appfunctions/java/com/android/server/appfunctions/MetadataSyncAdapter.java
index d140258..e2573590 100644
--- a/services/appfunctions/java/com/android/server/appfunctions/MetadataSyncAdapter.java
+++ b/services/appfunctions/java/com/android/server/appfunctions/MetadataSyncAdapter.java
@@ -180,11 +180,7 @@
ArraySet<String> addedFunctionIds = addedFunctionsDiffMap.valueAt(i);
for (String addedFunctionId : addedFunctionIds) {
putDocumentRequestBuilder.addGenericDocuments(
- new AppFunctionRuntimeMetadata.Builder(
- packageName,
- addedFunctionId,
- AppFunctionRuntimeMetadata
- .PROPERTY_APP_FUNCTION_STATIC_METADATA_QUALIFIED_ID)
+ new AppFunctionRuntimeMetadata.Builder(packageName, addedFunctionId)
.build());
}
}
@@ -232,12 +228,11 @@
runtimeMetadataSchema.getSchemaType(),
true,
new PackageIdentifier(packageName, packageCert));
+ setSchemaRequestBuilder.addRequiredPermissionsForSchemaTypeVisibility(
+ runtimeMetadataSchema.getSchemaType(), Set.of(EXECUTE_APP_FUNCTIONS));
+ setSchemaRequestBuilder.addRequiredPermissionsForSchemaTypeVisibility(
+ runtimeMetadataSchema.getSchemaType(), Set.of(EXECUTE_APP_FUNCTIONS_TRUSTED));
}
-
- setSchemaRequestBuilder.addRequiredPermissionsForSchemaTypeVisibility(
- RUNTIME_SCHEMA_TYPE, Set.of(EXECUTE_APP_FUNCTIONS));
- setSchemaRequestBuilder.addRequiredPermissionsForSchemaTypeVisibility(
- RUNTIME_SCHEMA_TYPE, Set.of(EXECUTE_APP_FUNCTIONS_TRUSTED));
return setSchemaRequestBuilder.build();
}
diff --git a/services/tests/appfunctions/src/android/app/appfunctions/AppFunctionRuntimeMetadataTest.kt b/services/tests/appfunctions/src/android/app/appfunctions/AppFunctionRuntimeMetadataTest.kt
index 650e520..dbbb2fe 100644
--- a/services/tests/appfunctions/src/android/app/appfunctions/AppFunctionRuntimeMetadataTest.kt
+++ b/services/tests/appfunctions/src/android/app/appfunctions/AppFunctionRuntimeMetadataTest.kt
@@ -101,4 +101,15 @@
assertThat(actualPackageName).isEqualTo(expectedPackageName)
}
+
+ @Test
+ fun testBuild() {
+ val runtimeMetadata = AppFunctionRuntimeMetadata.Builder("com.pkg", "funcId").build()
+
+ assertThat(runtimeMetadata.packageName).isEqualTo("com.pkg")
+ assertThat(runtimeMetadata.functionId).isEqualTo("funcId")
+ assertThat(runtimeMetadata.enabled).isNull()
+ assertThat(runtimeMetadata.appFunctionStaticMetadataQualifiedId)
+ .isEqualTo("android\$apps-db/app_functions#com.pkg/funcId")
+ }
}
diff --git a/services/tests/appfunctions/src/com/android/server/appfunctions/FutureAppSearchSessionTest.kt b/services/tests/appfunctions/src/com/android/server/appfunctions/FutureAppSearchSessionTest.kt
index edcbb9e..e761e8d 100644
--- a/services/tests/appfunctions/src/com/android/server/appfunctions/FutureAppSearchSessionTest.kt
+++ b/services/tests/appfunctions/src/com/android/server/appfunctions/FutureAppSearchSessionTest.kt
@@ -84,7 +84,7 @@
val schema = session.setSchema(setSchemaRequest)
assertThat(schema.get()).isNotNull()
val appFunctionRuntimeMetadata =
- AppFunctionRuntimeMetadata.Builder(TEST_PACKAGE_NAME, TEST_FUNCTION_ID, "").build()
+ AppFunctionRuntimeMetadata.Builder(TEST_PACKAGE_NAME, TEST_FUNCTION_ID).build()
val putDocumentsRequest: PutDocumentsRequest =
PutDocumentsRequest.Builder()
.addGenericDocuments(appFunctionRuntimeMetadata)
@@ -110,7 +110,7 @@
val schema = session.setSchema(setSchemaRequest)
assertThat(schema.get()).isNotNull()
val appFunctionRuntimeMetadata =
- AppFunctionRuntimeMetadata.Builder(TEST_PACKAGE_NAME, TEST_FUNCTION_ID, "").build()
+ AppFunctionRuntimeMetadata.Builder(TEST_PACKAGE_NAME, TEST_FUNCTION_ID).build()
val putDocumentsRequest: PutDocumentsRequest =
PutDocumentsRequest.Builder()
.addGenericDocuments(appFunctionRuntimeMetadata)
@@ -144,7 +144,7 @@
val schema = session.setSchema(setSchemaRequest)
assertThat(schema.get()).isNotNull()
val appFunctionRuntimeMetadata =
- AppFunctionRuntimeMetadata.Builder(TEST_PACKAGE_NAME, TEST_FUNCTION_ID, "").build()
+ AppFunctionRuntimeMetadata.Builder(TEST_PACKAGE_NAME, TEST_FUNCTION_ID).build()
val putDocumentsRequest: PutDocumentsRequest =
PutDocumentsRequest.Builder()
.addGenericDocuments(appFunctionRuntimeMetadata)
@@ -175,7 +175,7 @@
.build()
session.setSchema(setSchemaRequest).get()
val appFunctionRuntimeMetadata =
- AppFunctionRuntimeMetadata.Builder(TEST_PACKAGE_NAME, TEST_FUNCTION_ID, "").build()
+ AppFunctionRuntimeMetadata.Builder(TEST_PACKAGE_NAME, TEST_FUNCTION_ID).build()
val putDocumentsRequest: PutDocumentsRequest =
PutDocumentsRequest.Builder()
.addGenericDocuments(appFunctionRuntimeMetadata)
diff --git a/services/tests/appfunctions/src/com/android/server/appfunctions/FutureGlobalSearchSessionTest.kt b/services/tests/appfunctions/src/com/android/server/appfunctions/FutureGlobalSearchSessionTest.kt
index 38cba65..7fe7263 100644
--- a/services/tests/appfunctions/src/com/android/server/appfunctions/FutureGlobalSearchSessionTest.kt
+++ b/services/tests/appfunctions/src/com/android/server/appfunctions/FutureGlobalSearchSessionTest.kt
@@ -94,8 +94,7 @@
val schema = session.setSchema(setSchemaRequest)
assertThat(schema.get()).isNotNull()
val appFunctionRuntimeMetadata =
- AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, TEST_FUNCTION_ID, "")
- .build()
+ AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, TEST_FUNCTION_ID).build()
val putDocumentsRequest: PutDocumentsRequest =
PutDocumentsRequest.Builder()
.addGenericDocuments(appFunctionRuntimeMetadata)
diff --git a/services/tests/appfunctions/src/com/android/server/appfunctions/MetadataSyncAdapterTest.kt b/services/tests/appfunctions/src/com/android/server/appfunctions/MetadataSyncAdapterTest.kt
index 6930b3c..63cf7bf 100644
--- a/services/tests/appfunctions/src/com/android/server/appfunctions/MetadataSyncAdapterTest.kt
+++ b/services/tests/appfunctions/src/com/android/server/appfunctions/MetadataSyncAdapterTest.kt
@@ -53,7 +53,7 @@
fun getPackageToFunctionIdMap() {
val searchSession = FakeSearchSession()
val functionRuntimeMetadata =
- AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId", "").build()
+ AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId").build()
val putDocumentsRequest: PutDocumentsRequest =
PutDocumentsRequest.Builder().addGenericDocuments(functionRuntimeMetadata).build()
searchSession.put(putDocumentsRequest).get()
@@ -74,13 +74,13 @@
fun getPackageToFunctionIdMap_multipleDocuments() {
val searchSession = FakeSearchSession()
val functionRuntimeMetadata =
- AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId", "").build()
+ AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId").build()
val functionRuntimeMetadata1 =
- AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId1", "").build()
+ AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId1").build()
val functionRuntimeMetadata2 =
- AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId2", "").build()
+ AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId2").build()
val functionRuntimeMetadata3 =
- AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId3", "").build()
+ AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId3").build()
val putDocumentsRequest: PutDocumentsRequest =
PutDocumentsRequest.Builder()
.addGenericDocuments(
@@ -133,7 +133,7 @@
val runtimeSearchSession = FakeSearchSession()
val staticSearchSession = FakeSearchSession()
val functionRuntimeMetadata =
- AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId", "").build()
+ AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId").build()
val putDocumentsRequest: PutDocumentsRequest =
PutDocumentsRequest.Builder().addGenericDocuments(functionRuntimeMetadata).build()
runtimeSearchSession.put(putDocumentsRequest).get()
@@ -177,7 +177,7 @@
val runtimeSearchSession = FakeSearchSession()
val staticSearchSession = FakeSearchSession()
val functionRuntimeMetadata =
- AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId", "").build()
+ AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId").build()
val putDocumentsRequest: PutDocumentsRequest =
PutDocumentsRequest.Builder().addGenericDocuments(functionRuntimeMetadata).build()
staticSearchSession.put(putDocumentsRequest).get()
@@ -234,7 +234,7 @@
val runtimeSearchSession = FakeSearchSession()
val staticSearchSession = FakeSearchSession()
val functionRuntimeMetadata =
- AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId", "").build()
+ AppFunctionRuntimeMetadata.Builder(TEST_TARGET_PKG_NAME, "testFunctionId").build()
val putDocumentsRequest: PutDocumentsRequest =
PutDocumentsRequest.Builder().addGenericDocuments(functionRuntimeMetadata).build()
runtimeSearchSession.put(putDocumentsRequest).get()