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

Commit 17857902 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 7277590 from 65093343 to sc-release

Change-Id: I4d014b07cab05f80dbf5c04f40494dabe2a2aac3
parents 11dd255f 65093343
Loading
Loading
Loading
Loading
+69 −18
Original line number Diff line number Diff line
@@ -114,7 +114,7 @@ droidstubs {
        last_released: {
            api_file: ":android-non-updatable.api.public.latest",
            removed_api_file: ":android-non-updatable-removed.api.public.latest",
            baseline_file: ":android-incompatibilities.api.public.latest",
            baseline_file: ":android-non-updatable-incompatibilities.api.public.latest",
        },
        api_lint: {
            enabled: true,
@@ -166,7 +166,7 @@ droidstubs {
        last_released: {
            api_file: ":android-non-updatable.api.system.latest",
            removed_api_file: ":android-non-updatable-removed.api.system.latest",
            baseline_file: ":android-incompatibilities.api.system.latest"
            baseline_file: ":android-non-updatable-incompatibilities.api.system.latest"
        },
        api_lint: {
            enabled: true,
@@ -310,13 +310,9 @@ modules_system_stubs = [
]

java_defaults {
    name: "android_defaults_stubs_current",
    name: "android-non-updatable_defaults_stubs_current",
    libs: ["stub-annotations"],
    static_libs: [
        // License notices from art module
        "art-notices-for-framework-stubs-jar",
        "framework-res-package-jar", // Export package of framework-res
    ],
    static_libs: ["framework-res-package-jar"], // Export package of framework-res
    errorprone: {
        javacflags: [
            "-XepDisableAllChecks",
@@ -326,6 +322,64 @@ java_defaults {
    system_modules: "none",
    java_version: "1.8",
    compile_dex: true,
    dist: {
        targets: ["sdk", "win_sdk"],
        tag: ".jar",
        dest: "android-non-updatable.jar",
    }
}

java_library_static {
    name: "android-non-updatable.stubs",
    defaults: ["android-non-updatable_defaults_stubs_current"],
    srcs: [":api-stubs-docs-non-updatable"],
    libs: modules_public_stubs,
    dist: {
        dir: "apistubs/android/public",
    },
}

java_library_static {
    name: "android-non-updatable.stubs.system",
    defaults: ["android-non-updatable_defaults_stubs_current"],
    srcs: [ ":system-api-stubs-docs-non-updatable" ],
    libs: modules_system_stubs,
    dist: {
        dir: "apistubs/android/system",
    },
}

java_library_static {
    name: "android-non-updatable.stubs.module_lib",
    defaults: ["android-non-updatable_defaults_stubs_current"],
    srcs: [":module-lib-api-stubs-docs-non-updatable"],
    libs: [
        "sdk_system_current_android",
        // NOTE: The below can be removed once the prebuilt stub contains IKE.
        "sdk_system_current_android.net.ipsec.ike",
    ],
    dist: {
        dir: "apistubs/android/module-lib",
    },
}

java_library_static {
    name: "android-non-updatable.stubs.test",
    defaults: ["android-non-updatable_defaults_stubs_current"],
    srcs: [":test-api-stubs-docs-non-updatable"],
    libs: modules_system_stubs,
    dist: {
        dir: "apistubs/android/test",
    },
}

java_defaults {
    name: "android_defaults_stubs_current",
    static_libs: ["art-notices-for-framework-stubs-jar"], // License notices from art module
    sdk_version: "none",
    system_modules: "none",
    java_version: "1.8",
    compile_dex: true,
}

java_defaults {
@@ -339,8 +393,8 @@ java_defaults {

java_library_static {
    name: "android_stubs_current",
    srcs: [ ":api-stubs-docs-non-updatable" ],
    static_libs: modules_public_stubs + [
        "android-non-updatable.stubs",
        "private-stub-annotations-jar",
    ],
    defaults: ["android_defaults_stubs_current"],
@@ -348,8 +402,8 @@ java_library_static {

java_library_static {
    name: "android_system_stubs_current",
    srcs: [ ":system-api-stubs-docs-non-updatable" ],
    static_libs: modules_system_stubs + [
        "android-non-updatable.stubs.system",
        "private-stub-annotations-jar",
    ],
    defaults: [
@@ -371,10 +425,10 @@ java_library_static {

java_library_static {
    name: "android_test_stubs_current",
    srcs: [ ":test-api-stubs-docs-non-updatable" ],
    // Modules do not have test APIs, but we want to include their SystemApis, like we include
    // the SystemApi of framework-non-updatable-sources.
    static_libs: modules_system_stubs + [
        "android-non-updatable.stubs.test",
        "private-stub-annotations-jar",
    ],
    defaults: [
@@ -396,17 +450,14 @@ java_library_static {

java_library_static {
    name: "android_module_lib_stubs_current",
    srcs: [ ":module-lib-api-stubs-docs-non-updatable" ],
    defaults: [
        "android_defaults_stubs_current",
        "android_stubs_dists_default",
    ],
    libs: [
        "sdk_system_current_android",
        // NOTE: The below can be removed once the prebuilt stub contains IKE.
        "sdk_system_current_android.net.ipsec.ike",
    static_libs: [
        "android-non-updatable.stubs.module_lib",
        "art.module.public.api.stubs",
    ],
    static_libs: ["art.module.public.api.stubs"],
    dist: {
        dir: "apistubs/android/module-lib",
    },
+2 −1
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.app.appsearch.util.SchemaMigrationUtil;
import android.os.Bundle;
import android.os.ParcelableException;
import android.os.RemoteException;
import android.os.SystemClock;
import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
@@ -270,8 +271,8 @@ public final class AppSearchSession implements Closeable {
            documentBundles.add(documents.get(i).getBundle());
        }
        try {
            // TODO(b/173532925) a timestamp needs to be sent here to calculate binder latency
            mService.putDocuments(mPackageName, mDatabaseName, documentBundles, mUserId,
                    /*binderCallStartTimeMillis=*/ SystemClock.elapsedRealtime(),
                    new IAppSearchBatchResultCallback.Stub() {
                        public void onResult(AppSearchBatchResult result) {
                            executor.execute(() -> callback.onResult(result));
+2 −0
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ interface IAppSearchManager {
     * @param databaseName  The name of the database where this document lives.
     * @param documentBundes List of GenericDocument bundles.
     * @param userId Id of the calling user
     * @param binderCallStartTimeMillis start timestamp of binder call in Millis
     * @param callback
     *     If the call fails to start, {@link IAppSearchBatchResultCallback#onSystemError}
     *     will be called with the cause throwable. Otherwise,
@@ -106,6 +107,7 @@ interface IAppSearchManager {
        in String databaseName,
        in List<Bundle> documentBundles,
        in int userId,
        in long binderCallStartTimeMillis,
        in IAppSearchBatchResultCallback callback);

    /**
+43 −2
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.server.appsearch;
import static android.app.appsearch.AppSearchResult.throwableToFailedResult;
import static android.os.UserHandle.USER_NULL;

import android.annotation.ElapsedRealtimeLong;
import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
@@ -45,6 +46,7 @@ import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.os.ParcelableException;
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserHandle;
import android.os.UserManager;
import android.util.ArrayMap;
@@ -57,6 +59,9 @@ import com.android.internal.util.Preconditions;
import com.android.server.LocalServices;
import com.android.server.SystemService;
import com.android.server.appsearch.external.localstorage.AppSearchImpl;
import com.android.server.appsearch.external.localstorage.stats.CallStats;
import com.android.server.appsearch.stats.LoggerInstanceManager;
import com.android.server.appsearch.stats.PlatformLogger;

import java.io.DataInputStream;
import java.io.DataOutputStream;
@@ -80,6 +85,7 @@ public class AppSearchManagerService extends SystemService {
    private PackageManagerInternal mPackageManagerInternal;
    private ImplInstanceManager mImplInstanceManager;
    private UserManager mUserManager;
    private LoggerInstanceManager mLoggerInstanceManager;

    // Never call shutdownNow(). It will cancel the futures it's returned. And since
    // Executor#execute won't return anything, we will hang forever waiting for the execution.
@@ -106,6 +112,7 @@ public class AppSearchManagerService extends SystemService {
        mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class);
        mImplInstanceManager = ImplInstanceManager.getInstance(mContext);
        mUserManager = mContext.getSystemService(UserManager.class);
        mLoggerInstanceManager = LoggerInstanceManager.getInstance();
        registerReceivers();
    }

@@ -147,6 +154,7 @@ public class AppSearchManagerService extends SystemService {
    private void handleUserRemoved(@UserIdInt int userId) {
        try {
            mImplInstanceManager.removeAppSearchImplForUser(userId);
            mLoggerInstanceManager.removePlatformLoggerForUser(userId);
            Slog.i(TAG, "Removed AppSearchImpl instance for user: " + userId);
        } catch (Throwable t) {
            Slog.e(TAG, "Unable to remove data for user: " + userId, t);
@@ -274,6 +282,7 @@ public class AppSearchManagerService extends SystemService {
                @NonNull String databaseName,
                @NonNull List<Bundle> documentBundles,
                @UserIdInt int userId,
                @ElapsedRealtimeLong long binderCallStartTimeMillis,
                @NonNull IAppSearchBatchResultCallback callback) {
            Preconditions.checkNotNull(packageName);
            Preconditions.checkNotNull(databaseName);
@@ -282,6 +291,11 @@ public class AppSearchManagerService extends SystemService {
            int callingUid = Binder.getCallingUid();
            int callingUserId = handleIncomingUser(userId, callingUid);
            EXECUTOR.execute(() -> {
                long totalLatencyStartTimeMillis = SystemClock.elapsedRealtime();
                @AppSearchResult.ResultCode int statusCode = AppSearchResult.RESULT_OK;
                PlatformLogger logger = null;
                int operationSuccessCount = 0;
                int operationFailureCount = 0;
                try {
                    verifyUserUnlocked(callingUserId);
                    verifyCallingPackage(callingUid, packageName);
@@ -289,20 +303,46 @@ public class AppSearchManagerService extends SystemService {
                            new AppSearchBatchResult.Builder<>();
                    AppSearchImpl impl =
                            mImplInstanceManager.getAppSearchImpl(callingUserId);
                    logger = mLoggerInstanceManager.getPlatformLogger(callingUserId);
                    for (int i = 0; i < documentBundles.size(); i++) {
                        GenericDocument document = new GenericDocument(documentBundles.get(i));
                        try {
                            impl.putDocument(packageName, databaseName, document,
                                    /*logger=*/ null);
                            impl.putDocument(packageName, databaseName, document, logger);
                            resultBuilder.setSuccess(document.getUri(), /*result=*/ null);
                            ++operationSuccessCount;
                        } catch (Throwable t) {
                            resultBuilder.setResult(document.getUri(),
                                    throwableToFailedResult(t));
                            AppSearchResult<Void> result = throwableToFailedResult(t);
                            resultBuilder.setResult(document.getUri(), result);
                            // for failures, we would just log the one for last failure
                            statusCode = result.getResultCode();
                            ++operationFailureCount;
                        }
                    }
                    invokeCallbackOnResult(callback, resultBuilder.build());
                } catch (Throwable t) {
                    invokeCallbackOnError(callback, t);
                } finally {
                    if (logger != null) {
                        CallStats.Builder cBuilder = new CallStats.Builder(packageName,
                                databaseName)
                                .setCallType(CallStats.CALL_TYPE_PUT_DOCUMENTS)
                                // TODO(b/173532925) check the existing binder call latency chart
                                // is good enough for us:
                                // http://dashboards/view/_72c98f9a_91d9_41d4_ab9a_bc14f79742b4
                                .setEstimatedBinderLatencyMillis(
                                        2 * (int) (totalLatencyStartTimeMillis
                                                - binderCallStartTimeMillis))
                                .setNumOperationsSucceeded(operationSuccessCount)
                                .setNumOperationsFailed(operationFailureCount);
                        cBuilder.getGeneralStatsBuilder()
                                .setStatusCode(statusCode)
                                .setTotalLatencyMillis(
                                        (int) (SystemClock.elapsedRealtime()
                                                - totalLatencyStartTimeMillis));
                        logger.logStats(cBuilder.build());
                    }
                }
            });
        }
@@ -717,6 +757,7 @@ public class AppSearchManagerService extends SystemService {
                try {
                    verifyUserUnlocked(callingUserId);
                    mImplInstanceManager.getOrCreateAppSearchImpl(mContext, callingUserId);
                    mLoggerInstanceManager.getOrCreatePlatformLogger(getContext(), callingUserId);
                    invokeCallbackOnResult(callback, AppSearchResult.newSuccessfulResult(null));
                } catch (Throwable t) {
                    invokeCallbackOnError(callback, t);
+0 −1
Original line number Diff line number Diff line
@@ -106,7 +106,6 @@ public final class ImplInstanceManager {
     *
     * @param userId The multi-user userId of the user that need to be removed.
     */
    @NonNull
    public void removeAppSearchImplForUser(@UserIdInt int userId) {
        synchronized (mInstancesLocked) {
            mInstancesLocked.remove(userId);
Loading