Refactor visibility Document and upgrate schema verion to 1.

VisibilityDocument is the setting entity and store all visibility
information of a schema. It seems to be not efficient to have
multiple params like VisibilityToPackages and
VisibilityToSystem to be passed around and only convert to
VisibilityDocument at the end.

This change VisibilityDocument's schema and the logic of set and look
up Visibility setting.

Test: presubmit
Bug: 202194495
Change-Id: I73d2657891e3b163306c25ff2693874cbf57b02e
diff --git a/service/java/com/android/server/appsearch/AppSearchManagerService.java b/service/java/com/android/server/appsearch/AppSearchManagerService.java
index 4413b51..dd2a5db 100644
--- a/service/java/com/android/server/appsearch/AppSearchManagerService.java
+++ b/service/java/com/android/server/appsearch/AppSearchManagerService.java
@@ -71,6 +71,7 @@
 import com.android.server.appsearch.observer.AppSearchObserverProxy;
 import com.android.server.appsearch.stats.StatsCollector;
 import com.android.server.appsearch.util.PackageUtil;
+import com.android.server.appsearch.visibilitystore.VisibilityDocument;
 import com.android.server.usage.StorageStatsManagerLocal;
 import com.android.server.usage.StorageStatsManagerLocal.StorageStatsAugmenter;
 
@@ -359,6 +360,8 @@
                     for (int i = 0; i < schemaBundles.size(); i++) {
                         schemas.add(new AppSearchSchema(schemaBundles.get(i)));
                     }
+                    // TODO(b/202194495) move build VisibilityDocument to the SDK side and only pass
+                    //  it/s bundle via binder.
                     Map<String, List<PackageIdentifier>> schemasVisibleToPackages =
                             new ArrayMap<>(schemasVisibleToPackagesBundles.size());
                     for (Map.Entry<String, List<Bundle>> entry :
@@ -371,6 +374,9 @@
                         }
                         schemasVisibleToPackages.put(entry.getKey(), packageIdentifiers);
                     }
+                    List<VisibilityDocument> visibilityDocuments = VisibilityDocument
+                            .toVisibilityDocuments(schemas, schemasNotDisplayedBySystem,
+                                    schemasVisibleToPackages);
                     instance = mAppSearchUserInstanceManager.getUserInstance(targetUser);
                     // TODO(b/173532925): Implement logging for statsBuilder
                     SetSchemaResponse setSchemaResponse = instance.getAppSearchImpl().setSchema(
@@ -378,8 +384,7 @@
                             databaseName,
                             schemas,
                             instance.getVisibilityStore(),
-                            schemasNotDisplayedBySystem,
-                            schemasVisibleToPackages,
+                            visibilityDocuments,
                             forceOverride,
                             schemaVersion,
                             /*setSchemaStatsBuilder=*/ null);