Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e1d191c8 authored by Cassie Wang's avatar Cassie Wang
Browse files

Check schemas using getSchema in VisibilityStore.

This switches away from the package-private hasSchemaTypeLocked method
that is only package-private because VisibilityStore uses it. Instead,
use the publicly-supported getSchema API. Using getSchema will be less
efficient than hasSchemaTypeLocked, but it should only be called once
during initialization so it won't be reoccuring.

The change to remove hasSchemaTypeLocked from AppSearchImpl will be
made upstream in go/ag/13556686

Bug: 180058203
Test: presubmit
Change-Id: I2bafb8243bb15f321633eae5ed37676201e98c84
parent bfde98c3
Loading
Loading
Loading
Loading
+22 −7
Original line number Diff line number Diff line
@@ -218,9 +218,23 @@ public class VisibilityStore {
     * @throws AppSearchException AppSearchException on AppSearchImpl error.
     */
    public void initialize() throws AppSearchException {
        if (!mAppSearchImpl.hasSchemaTypeLocked(PACKAGE_NAME, DATABASE_NAME, VISIBILITY_TYPE)
                || !mAppSearchImpl.hasSchemaTypeLocked(
                        PACKAGE_NAME, DATABASE_NAME, PACKAGE_ACCESSIBLE_TYPE)) {
        List<AppSearchSchema> schemas = mAppSearchImpl.getSchema(PACKAGE_NAME, DATABASE_NAME);
        boolean hasVisibilityType = false;
        boolean hasPackageAccessibleType = false;
        for (int i = 0; i < schemas.size(); i++) {
            AppSearchSchema schema = schemas.get(i);
            if (schema.getSchemaType().equals(VISIBILITY_TYPE)) {
                hasVisibilityType = true;
            } else if (schema.getSchemaType().equals(PACKAGE_ACCESSIBLE_TYPE)) {
                hasPackageAccessibleType = true;
            }

            if (hasVisibilityType && hasPackageAccessibleType) {
                // Found both our types, can exit early.
                break;
            }
        }
        if (!hasVisibilityType || !hasPackageAccessibleType) {
            // Schema type doesn't exist yet. Add it.
            mAppSearchImpl.setSchema(
                    PACKAGE_NAME,
@@ -250,10 +264,11 @@ public class VisibilityStore {
                                /*typePropertyPaths=*/ Collections.emptyMap());

                // Update platform visibility settings
                String[] schemas =
                String[] notPlatformSurfaceableSchemas =
                        document.getPropertyStringArray(NOT_PLATFORM_SURFACEABLE_PROPERTY);
                if (schemas != null) {
                    mNotPlatformSurfaceableMap.put(prefix, new ArraySet<>(Arrays.asList(schemas)));
                if (notPlatformSurfaceableSchemas != null) {
                    mNotPlatformSurfaceableMap.put(
                            prefix, new ArraySet<>(Arrays.asList(notPlatformSurfaceableSchemas)));
                }

                // Update 3p package visibility settings