/* ** Copyright 2017, The Android Open Source Project ** ** Licensed under the Apache License, Version 2.0 (the "License"); ** you may not use this file except in compliance with the License. ** You may obtain a copy of the License at ** ** http://www.apache.org/licenses/LICENSE-2.0 ** ** Unless required by applicable law or agreed to in writing, software ** distributed under the License is distributed on an "AS IS" BASIS, ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ** See the License for the specific language governing permissions and ** limitations under the License. */ package android.content.pm.dex; import android.content.pm.dex.ISnapshotRuntimeProfileCallback; /** * A system service that provides access to runtime and compiler artifacts. * * @hide */ interface IArtManager { /** * Snapshots a runtime profile according to the {@code profileType} parameter. * * If {@code profileType} is {@link ArtManager#PROFILE_APPS} the method will snapshot * the profile for for an apk belonging to the package {@code packageName}. * The apk is identified by {@code codePath}. * * If {@code profileType} is {@code ArtManager.PROFILE_BOOT_IMAGE} the method will snapshot * the profile for the boot image. In this case {@code codePath can be null}. The parameters * {@code packageName} and {@code codePath} are ignored. * * The calling process must have {@code android.permission.READ_RUNTIME_PROFILE} permission. * * The result will be posted on the {@code executor} using the given {@code callback}. * The profile will be available as a read-only {@link android.os.ParcelFileDescriptor}. * * This method will throw {@link IllegalStateException} if * {@link ArtManager#isRuntimeProfilingEnabled(int)} does not return true for the given * {@code profileType}. */ void snapshotRuntimeProfile(int profileType, in String packageName, in String codePath, in ISnapshotRuntimeProfileCallback callback, String callingPackage); /** * Returns true if runtime profiles are enabled for the given type, false otherwise. * The type can be can be either {@code ArtManager.PROFILE_APPS} * or {@code ArtManager.PROFILE_BOOT_IMAGE}. * * @param profileType */ boolean isRuntimeProfilingEnabled(int profileType, String callingPackage); }