Porting AppSearch jetpack upstream changes to platform

Changes included:
#af6646e : Support retrieving the current database's schema
#2696e50 : Unhide the createGlobalSearchSession API.

Bug: 162450968
Test: presubmit
Change-Id: I8e97304fedd446b88393eb6ca5b42c2e210e3271
diff --git a/service/java/com/android/server/appsearch/AppSearchManagerService.java b/service/java/com/android/server/appsearch/AppSearchManagerService.java
index 551347c..1512825 100644
--- a/service/java/com/android/server/appsearch/AppSearchManagerService.java
+++ b/service/java/com/android/server/appsearch/AppSearchManagerService.java
@@ -90,6 +90,32 @@
         }
 
         @Override
+        public void getSchema(
+                @NonNull String databaseName,
+                @NonNull IAppSearchResultCallback callback) {
+            Preconditions.checkNotNull(databaseName);
+            Preconditions.checkNotNull(callback);
+            int callingUid = Binder.getCallingUidOrThrow();
+            int callingUserId = UserHandle.getUserId(callingUid);
+            final long callingIdentity = Binder.clearCallingIdentity();
+            try {
+                AppSearchImpl impl = ImplInstanceManager.getInstance(getContext(), callingUserId);
+                databaseName = rewriteDatabaseNameWithUid(databaseName, callingUid);
+                List<AppSearchSchema> schemas = impl.getSchema(databaseName);
+                List<Bundle> schemaBundles = new ArrayList<>(schemas.size());
+                for (int i = 0; i < schemas.size(); i++) {
+                    schemaBundles.add(schemas.get(i).getBundle());
+                }
+                invokeCallbackOnResult(callback,
+                        AppSearchResult.newSuccessfulResult(schemaBundles));
+            } catch (Throwable t) {
+                invokeCallbackOnError(callback, t);
+            } finally {
+                Binder.restoreCallingIdentity(callingIdentity);
+            }
+        }
+
+        @Override
         public void putDocuments(
                 @NonNull String databaseName,
                 @NonNull List<Bundle> documentBundles,