diff options
162 files changed, 1658 insertions, 858 deletions
diff --git a/Android.bp b/Android.bp index 2e3073f2617b..ae0acade2737 100644 --- a/Android.bp +++ b/Android.bp @@ -898,6 +898,7 @@ java_library { "core/java/android/os/IHwInterface.java", "core/java/android/os/DeadObjectException.java", "core/java/android/os/DeadSystemException.java", + "core/java/android/os/NativeHandle.java", "core/java/android/os/RemoteException.java", "core/java/android/util/AndroidException.java", ], @@ -1444,6 +1445,7 @@ droiddoc { "core/java/android/os/IHwInterface.java", "core/java/android/os/DeadObjectException.java", "core/java/android/os/DeadSystemException.java", + "core/java/android/os/NativeHandle.java", "core/java/android/os/RemoteException.java", "core/java/android/util/AndroidException.java", ], @@ -1572,6 +1574,7 @@ doc_defaults { metalava_previous_api: ":public-api-for-metalava-annotations", metalava_merge_annotations_dirs: [ "metalava-manual", + "ojluni-annotated-stubs", ], } diff --git a/api/current.txt b/api/current.txt index 139776b4b93d..4ec226506f79 100644 --- a/api/current.txt +++ b/api/current.txt @@ -57590,14 +57590,14 @@ package java.lang { method public void setContextClassLoader(java.lang.ClassLoader); method public final void setDaemon(boolean); method public static void setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler); - method public final void setName(java.lang.String); + method public final synchronized void setName(java.lang.String); method public final void setPriority(int); method public void setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler); method public static void sleep(long) throws java.lang.InterruptedException; method public static void sleep(long, int) throws java.lang.InterruptedException; method public synchronized void start(); method public final deprecated void stop(); - method public final deprecated void stop(java.lang.Throwable); + method public final deprecated synchronized void stop(java.lang.Throwable); method public final deprecated void suspend(); method public static void yield(); field public static final int MAX_PRIORITY = 10; // 0xa diff --git a/api/system-current.txt b/api/system-current.txt index 98113c2de958..859ee98fc121 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -3726,6 +3726,7 @@ package android.os { method public final void putInt64Array(long, long[]); method public final void putInt8(long, byte); method public final void putInt8Array(long, byte[]); + method public final void putNativeHandle(long, android.os.NativeHandle); method public final void putString(long, java.lang.String); method public static java.lang.Boolean[] wrapArray(boolean[]); method public static java.lang.Long[] wrapArray(long[]); @@ -3745,6 +3746,7 @@ package android.os { method public final double readDouble(); method public final java.util.ArrayList<java.lang.Double> readDoubleVector(); method public final android.os.HwBlob readEmbeddedBuffer(long, long, long, boolean); + method public final android.os.NativeHandle readEmbeddedNativeHandle(long, long); method public final float readFloat(); method public final java.util.ArrayList<java.lang.Float> readFloatVector(); method public final short readInt16(); @@ -3755,6 +3757,8 @@ package android.os { method public final java.util.ArrayList<java.lang.Long> readInt64Vector(); method public final byte readInt8(); method public final java.util.ArrayList<java.lang.Byte> readInt8Vector(); + method public final android.os.NativeHandle readNativeHandle(); + method public final java.util.ArrayList<android.os.NativeHandle> readNativeHandleVector(); method public final java.lang.String readString(); method public final java.util.ArrayList<java.lang.String> readStringVector(); method public final android.os.IHwBinder readStrongBinder(); @@ -3778,6 +3782,8 @@ package android.os { method public final void writeInt8(byte); method public final void writeInt8Vector(java.util.ArrayList<java.lang.Byte>); method public final void writeInterfaceToken(java.lang.String); + method public final void writeNativeHandle(android.os.NativeHandle); + method public final void writeNativeHandleVector(java.util.ArrayList<android.os.NativeHandle>); method public final void writeStatus(int); method public final void writeString(java.lang.String); method public final void writeStringVector(java.util.ArrayList<java.lang.String>); @@ -3822,6 +3828,18 @@ package android.os { field public static final android.os.Parcelable.Creator<android.os.IncidentReportArgs> CREATOR; } + public final class NativeHandle implements java.io.Closeable { + ctor public NativeHandle(); + ctor public NativeHandle(java.io.FileDescriptor, boolean); + ctor public NativeHandle(java.io.FileDescriptor[], int[], boolean); + method public void close() throws java.io.IOException; + method public android.os.NativeHandle dup() throws java.io.IOException; + method public java.io.FileDescriptor getFileDescriptor(); + method public java.io.FileDescriptor[] getFileDescriptors(); + method public int[] getInts(); + method public boolean hasSingleFileDescriptor(); + } + public final class PowerManager { method public void userActivity(long, int, int); field public static final int USER_ACTIVITY_EVENT_ACCESSIBILITY = 3; // 0x3 @@ -5924,12 +5942,16 @@ package android.telephony.ims { ctor public ImsSsInfo(int, java.lang.String); method public int describeContents(); method public java.lang.String getIcbNum(); + method public int getProvisionStatus(); method public int getStatus(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.telephony.ims.ImsSsInfo> CREATOR; field public static final int DISABLED = 0; // 0x0 field public static final int ENABLED = 1; // 0x1 field public static final int NOT_REGISTERED = -1; // 0xffffffff + field public static final int SERVICE_NOT_PROVISIONED = 0; // 0x0 + field public static final int SERVICE_PROVISIONED = 1; // 0x1 + field public static final int SERVICE_PROVISIONING_UNKNOWN = -1; // 0xffffffff } public final class ImsStreamMediaProfile implements android.os.Parcelable { diff --git a/api/test-current.txt b/api/test-current.txt index 4c3c0f8625d9..8073341ebad1 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -256,8 +256,8 @@ package android.content.pm { public abstract class PackageManager { method public abstract java.lang.String getDefaultBrowserPackageNameAsUser(int); method public abstract int getInstallReason(java.lang.String, android.os.UserHandle); - method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int); method public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplicationsAsUser(int, int); + method public abstract java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int); method public abstract java.lang.String[] getNamesForUids(int[]); method public abstract java.lang.String getPermissionControllerPackageName(); method public abstract java.lang.String getServicesSystemSharedLibraryPackageName(); diff --git a/cmds/incident_helper/src/ih_util.cpp b/cmds/incident_helper/src/ih_util.cpp index 4c4d1b992ba8..012310cc277a 100644 --- a/cmds/incident_helper/src/ih_util.cpp +++ b/cmds/incident_helper/src/ih_util.cpp @@ -97,7 +97,7 @@ bool getColumnIndices(std::vector<int>& indices, const char** headerNames, const size_t lastIndex = 0; int i = 0; - while (headerNames[i] != NULL) { + while (headerNames[i] != nullptr) { std::string s = headerNames[i]; lastIndex = line.find(s, lastIndex); if (lastIndex == std::string::npos) { @@ -237,18 +237,18 @@ double toDouble(const std::string& s) { Reader::Reader(const int fd) { mFile = fdopen(fd, "r"); - mStatus = mFile == NULL ? "Invalid fd " + std::to_string(fd) : ""; + mStatus = mFile == nullptr ? "Invalid fd " + std::to_string(fd) : ""; } Reader::~Reader() { - if (mFile != NULL) fclose(mFile); + if (mFile != nullptr) fclose(mFile); } bool Reader::readLine(std::string* line) { - if (mFile == NULL) return false; + if (mFile == nullptr) return false; - char* buf = NULL; + char* buf = nullptr; size_t len = 0; ssize_t read = getline(&buf, &len, mFile); if (read != -1) { diff --git a/cmds/incident_helper/src/main.cpp b/cmds/incident_helper/src/main.cpp index 418dc3fad761..091410bce2dd 100644 --- a/cmds/incident_helper/src/main.cpp +++ b/cmds/incident_helper/src/main.cpp @@ -97,7 +97,7 @@ int main(int argc, char** argv) { fprintf(stderr, "Pasring section %d...\n", sectionID); TextParserBase* parser = selectParser(sectionID); - if (parser != NULL) { + if (parser != nullptr) { fprintf(stderr, "Running parser: %s\n", parser->name.string()); status_t err = parser->Parse(STDIN_FILENO, STDOUT_FILENO); if (err != NO_ERROR) { diff --git a/cmds/incident_helper/src/parsers/CpuInfoParser.cpp b/cmds/incident_helper/src/parsers/CpuInfoParser.cpp index eed68b9e29c6..21ced9cb485c 100644 --- a/cmds/incident_helper/src/parsers/CpuInfoParser.cpp +++ b/cmds/incident_helper/src/parsers/CpuInfoParser.cpp @@ -109,7 +109,7 @@ CpuInfoParser::Parse(const int in, const int out) const nextToUsage = false; // NAME is not in the list since we need to modify the end of the CMD index. - const char* headerNames[] = { "PID", "TID", "USER", "PR", "NI", "CPU", "S", "VIRT", "RES", "PCY", "CMD", NULL }; + const char* headerNames[] = { "PID", "TID", "USER", "PR", "NI", "CPU", "S", "VIRT", "RES", "PCY", "CMD", nullptr }; if (!getColumnIndices(columnIndices, headerNames, line)) { return -1; } diff --git a/cmds/incident_helper/src/parsers/PsParser.cpp b/cmds/incident_helper/src/parsers/PsParser.cpp index 8d64064e26f4..d3cb4be59f66 100644 --- a/cmds/incident_helper/src/parsers/PsParser.cpp +++ b/cmds/incident_helper/src/parsers/PsParser.cpp @@ -48,7 +48,7 @@ status_t PsParser::Parse(const int in, const int out) const { if (nline++ == 0) { header = parseHeader(line, DEFAULT_WHITESPACE); - const char* headerNames[] = { "LABEL", "USER", "PID", "TID", "PPID", "VSZ", "RSS", "WCHAN", "ADDR", "S", "PRI", "NI", "RTPRIO", "SCH", "PCY", "TIME", "CMD", NULL }; + const char* headerNames[] = { "LABEL", "USER", "PID", "TID", "PPID", "VSZ", "RSS", "WCHAN", "ADDR", "S", "PRI", "NI", "RTPRIO", "SCH", "PCY", "TIME", "CMD", nullptr }; if (!getColumnIndices(columnIndices, headerNames, line)) { return -1; } diff --git a/config/hiddenapi-light-greylist.txt b/config/hiddenapi-light-greylist.txt index 1853763be954..d1217ae9fc37 100644 --- a/config/hiddenapi-light-greylist.txt +++ b/config/hiddenapi-light-greylist.txt @@ -1,23 +1,5 @@ Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub;-><init>()V Landroid/accessibilityservice/IAccessibilityServiceConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accessibilityservice/IAccessibilityServiceConnection; -Landroid/accounts/Account;->accessId:Ljava/lang/String; -Landroid/accounts/Account;->TAG:Ljava/lang/String; -Landroid/accounts/AccountAndUser;-><init>(Landroid/accounts/Account;I)V -Landroid/accounts/AccountAndUser;->account:Landroid/accounts/Account; -Landroid/accounts/AccountAndUser;->userId:I -Landroid/accounts/AccountAuthenticatorResponse;-><init>(Landroid/accounts/IAccountAuthenticatorResponse;)V -Landroid/accounts/AccountManager$AmsTask;->mActivity:Landroid/app/Activity; -Landroid/accounts/AccountManager$AmsTask;->mHandler:Landroid/os/Handler; -Landroid/accounts/AccountManager$AmsTask;->mResponse:Landroid/accounts/IAccountManagerResponse; -Landroid/accounts/AccountManager$GetAuthTokenByTypeAndFeaturesTask;->mAuthTokenType:Ljava/lang/String; -Landroid/accounts/AccountManager$GetAuthTokenByTypeAndFeaturesTask;->mLoginOptions:Landroid/os/Bundle; -Landroid/accounts/AccountManager$GetAuthTokenByTypeAndFeaturesTask;->mMyCallback:Landroid/accounts/AccountManagerCallback; -Landroid/accounts/AccountManager;-><init>(Landroid/content/Context;Landroid/accounts/IAccountManager;)V -Landroid/accounts/AccountManager;->confirmCredentialsAsUser(Landroid/accounts/Account;Landroid/os/Bundle;Landroid/app/Activity;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;Landroid/os/UserHandle;)Landroid/accounts/AccountManagerFuture; -Landroid/accounts/AccountManager;->getAccountsByTypeAsUser(Ljava/lang/String;Landroid/os/UserHandle;)[Landroid/accounts/Account; -Landroid/accounts/AccountManager;->mContext:Landroid/content/Context; -Landroid/accounts/AuthenticatorDescription;-><init>(Landroid/os/Parcel;)V -Landroid/accounts/AuthenticatorDescription;-><init>(Ljava/lang/String;)V Landroid/accounts/IAccountAuthenticator$Stub$Proxy;-><init>(Landroid/os/IBinder;)V Landroid/accounts/IAccountAuthenticator$Stub$Proxy;->mRemote:Landroid/os/IBinder; Landroid/accounts/IAccountAuthenticator$Stub;-><init>()V @@ -1014,22 +996,6 @@ Landroid/app/WallpaperManager;->openDefaultWallpaper(Landroid/content/Context;I) Landroid/app/WallpaperManager;->setBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;ZII)I Landroid/app/WallpaperManager;->setWallpaperComponent(Landroid/content/ComponentName;I)Z Landroid/app/WallpaperManager;->sGlobals:Landroid/app/WallpaperManager$Globals; -Landroid/appwidget/AppWidgetHost;-><init>(Landroid/content/Context;ILandroid/widget/RemoteViews$OnClickHandler;Landroid/os/Looper;)V -Landroid/appwidget/AppWidgetHost;->HANDLE_VIEW_DATA_CHANGED:I -Landroid/appwidget/AppWidgetHost;->mHandler:Landroid/os/Handler; -Landroid/appwidget/AppWidgetHost;->sService:Lcom/android/internal/appwidget/IAppWidgetService; -Landroid/appwidget/AppWidgetHostView;->getDefaultPaddingForWidget(Landroid/content/Context;Landroid/content/pm/ApplicationInfo;Landroid/graphics/Rect;)Landroid/graphics/Rect; -Landroid/appwidget/AppWidgetHostView;->mAppWidgetId:I -Landroid/appwidget/AppWidgetHostView;->mInfo:Landroid/appwidget/AppWidgetProviderInfo; -Landroid/appwidget/AppWidgetHostView;->updateAppWidgetSize(Landroid/os/Bundle;IIIIZ)V -Landroid/appwidget/AppWidgetManager;->bindAppWidgetId(ILandroid/content/ComponentName;)V -Landroid/appwidget/AppWidgetManager;->bindAppWidgetId(ILandroid/content/ComponentName;Landroid/os/Bundle;)V -Landroid/appwidget/AppWidgetManager;->bindAppWidgetIdIfAllowed(IILandroid/content/ComponentName;Landroid/os/Bundle;)Z -Landroid/appwidget/AppWidgetManager;->bindRemoteViewsService(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/IServiceConnection;I)Z -Landroid/appwidget/AppWidgetManager;->getInstalledProviders(I)Ljava/util/List; -Landroid/appwidget/AppWidgetManager;->getInstalledProvidersForProfile(ILandroid/os/UserHandle;Ljava/lang/String;)Ljava/util/List; -Landroid/appwidget/AppWidgetManager;->mService:Lcom/android/internal/appwidget/IAppWidgetService; -Landroid/appwidget/AppWidgetProviderInfo;->providerInfo:Landroid/content/pm/ActivityInfo; Landroid/bluetooth/IBluetooth$Stub$Proxy;->getAddress()Ljava/lang/String; Landroid/bluetooth/IBluetooth$Stub$Proxy;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I Landroid/bluetooth/IBluetooth$Stub;-><init>()V @@ -1804,297 +1770,25 @@ Landroid/content/UndoOperation;-><init>(Landroid/content/UndoOwner;)V Landroid/content/UndoOperation;-><init>(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V Landroid/content/UriMatcher;->mChildren:Ljava/util/ArrayList; Landroid/content/UriMatcher;->mText:Ljava/lang/String; -Landroid/database/AbstractCursor;->mExtras:Landroid/os/Bundle; -Landroid/database/AbstractCursor;->mNotifyUri:Landroid/net/Uri; -Landroid/database/AbstractWindowedCursor;->clearOrCreateWindow(Ljava/lang/String;)V -Landroid/database/AbstractWindowedCursor;->closeWindow()V -Landroid/database/AbstractWindowedCursor;->onDeactivateOrClose()V -Landroid/database/ContentObserver;->releaseContentObserver()Landroid/database/IContentObserver; -Landroid/database/CursorWindow;->mWindowPtr:J -Landroid/database/CursorWindow;->printStats()Ljava/lang/String; -Landroid/database/CursorWindow;->sCursorWindowSize:I -Landroid/database/CursorWindow;->sWindowToPidMap:Landroid/util/LongSparseArray; -Landroid/database/CursorWrapper;->mCursor:Landroid/database/Cursor; -Landroid/database/DatabaseUtils;->cursorPickFillWindowStartPosition(II)I -Landroid/database/DatabaseUtils;->getTypeOfObject(Ljava/lang/Object;)I Landroid/database/IContentObserver$Stub;-><init>()V Landroid/database/IContentObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/database/IContentObserver; Landroid/database/IContentObserver;->onChange(ZLandroid/net/Uri;I)V -Landroid/database/MatrixCursor;->data:[Ljava/lang/Object; -Landroid/database/MatrixCursor;->get(I)Ljava/lang/Object; -Landroid/database/MatrixCursor;->rowCount:I -Landroid/database/sqlite/DatabaseObjectNotClosedException;-><init>()V -Landroid/database/sqlite/SQLiteClosable;->mReferenceCount:I -Landroid/database/sqlite/SQLiteCursor;->fillWindow(I)V -Landroid/database/sqlite/SQLiteCursor;->mEditTable:Ljava/lang/String; -Landroid/database/sqlite/SQLiteCursor;->mQuery:Landroid/database/sqlite/SQLiteQuery; -Landroid/database/sqlite/SQLiteCustomFunction;->dispatchCallback([Ljava/lang/String;)V -Landroid/database/sqlite/SQLiteCustomFunction;->name:Ljava/lang/String; -Landroid/database/sqlite/SQLiteCustomFunction;->numArgs:I -Landroid/database/sqlite/SQLiteDatabase;->beginTransaction(Landroid/database/sqlite/SQLiteTransactionListener;Z)V -Landroid/database/sqlite/SQLiteDatabase;->collectDbStats(Ljava/util/ArrayList;)V -Landroid/database/sqlite/SQLiteDatabase;->CONFLICT_VALUES:[Ljava/lang/String; -Landroid/database/sqlite/SQLiteDatabase;->getActiveDatabases()Ljava/util/ArrayList; -Landroid/database/sqlite/SQLiteDatabase;->getThreadSession()Landroid/database/sqlite/SQLiteSession; -Landroid/database/sqlite/SQLiteDatabase;->mConfigurationLocked:Landroid/database/sqlite/SQLiteDatabaseConfiguration; -Landroid/database/sqlite/SQLiteDatabase;->mConnectionPoolLocked:Landroid/database/sqlite/SQLiteConnectionPool; -Landroid/database/sqlite/SQLiteDatabase;->mThreadSession:Ljava/lang/ThreadLocal; -Landroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase; -Landroid/database/sqlite/SQLiteDatabase;->reopenReadWrite()V -Landroid/database/sqlite/SQLiteDatabaseConfiguration;->maxSqlCacheSize:I -Landroid/database/sqlite/SQLiteOpenHelper;->mName:Ljava/lang/String; -Landroid/database/sqlite/SQLiteProgram;->mBindArgs:[Ljava/lang/Object; -Landroid/database/sqlite/SQLiteProgram;->mSql:Ljava/lang/String; -Landroid/database/sqlite/SQLiteQueryBuilder;->computeProjection([Ljava/lang/String;)[Ljava/lang/String; -Landroid/database/sqlite/SQLiteQueryBuilder;->mDistinct:Z -Landroid/database/sqlite/SQLiteQueryBuilder;->mTables:Ljava/lang/String; -Landroid/database/sqlite/SQLiteQueryBuilder;->mWhereClause:Ljava/lang/StringBuilder; -Landroid/database/sqlite/SQLiteSession;->beginTransaction(ILandroid/database/sqlite/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V -Landroid/database/sqlite/SQLiteStatement;-><init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V -Landroid/database/sqlite/SqliteWrapper;->checkSQLiteException(Landroid/content/Context;Landroid/database/sqlite/SQLiteException;)V -Landroid/database/sqlite/SqliteWrapper;->delete(Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I -Landroid/database/sqlite/SqliteWrapper;->update(Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I Landroid/graphics/ColorMatrixColorFilter;->setColorMatrixArray([F)V Landroid/graphics/FontFamily;->mNativePtr:J Landroid/graphics/FontListParser;->parse(Ljava/io/InputStream;)Landroid/text/FontConfig; -Landroid/hardware/Camera$Parameters;->copyFrom(Landroid/hardware/Camera$Parameters;)V -Landroid/hardware/Camera$Parameters;->dump()V -Landroid/hardware/Camera$Parameters;->splitArea(Ljava/lang/String;)Ljava/util/ArrayList; -Landroid/hardware/camera2/CameraCharacteristics$Key;-><init>(Ljava/lang/String;Landroid/hardware/camera2/utils/TypeReference;)V -Landroid/hardware/camera2/CameraCharacteristics$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;)V -Landroid/hardware/camera2/CameraCharacteristics$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;J)V -Landroid/hardware/camera2/CameraCharacteristics$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key; -Landroid/hardware/camera2/CameraCharacteristics;->CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->CONTROL_MAX_REGIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->LED_AVAILABLE_LEDS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->LENS_INFO_SHADING_MAP_SIZE:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->LOGICAL_MULTI_CAMERA_PHYSICAL_IDS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->mProperties:Landroid/hardware/camera2/impl/CameraMetadataNative; -Landroid/hardware/camera2/CameraCharacteristics;->QUIRKS_USE_PARTIAL_RESULT:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->REQUEST_AVAILABLE_CHARACTERISTICS_KEYS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->REQUEST_AVAILABLE_REQUEST_KEYS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->REQUEST_AVAILABLE_RESULT_KEYS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->REQUEST_AVAILABLE_SESSION_KEYS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->REQUEST_MAX_NUM_OUTPUT_STREAMS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_FORMATS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_JPEG_MIN_DURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_JPEG_SIZES:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_MIN_FRAME_DURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_PROCESSED_SIZES:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_STALL_DURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_STREAM_CONFIGURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CaptureRequest$Builder;->setPartOfCHSRequestList(Z)V -Landroid/hardware/camera2/CaptureRequest$Key;-><init>(Ljava/lang/String;Landroid/hardware/camera2/utils/TypeReference;)V -Landroid/hardware/camera2/CaptureRequest$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;J)V -Landroid/hardware/camera2/CaptureRequest$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key; -Landroid/hardware/camera2/CaptureRequest;->getTargets()Ljava/util/Collection; -Landroid/hardware/camera2/CaptureRequest;->JPEG_GPS_COORDINATES:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->JPEG_GPS_PROCESSING_METHOD:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->JPEG_GPS_TIMESTAMP:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->LED_TRANSMIT:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->mLogicalCameraSettings:Landroid/hardware/camera2/impl/CameraMetadataNative; -Landroid/hardware/camera2/CaptureRequest;->REQUEST_ID:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->TONEMAP_CURVE_BLUE:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->TONEMAP_CURVE_GREEN:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->TONEMAP_CURVE_RED:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureResult$Key;-><init>(Ljava/lang/String;Landroid/hardware/camera2/utils/TypeReference;)V -Landroid/hardware/camera2/CaptureResult$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;)V -Landroid/hardware/camera2/CaptureResult$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;J)V -Landroid/hardware/camera2/CaptureResult$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key; -Landroid/hardware/camera2/CaptureResult;->JPEG_GPS_COORDINATES:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->JPEG_GPS_PROCESSING_METHOD:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->JPEG_GPS_TIMESTAMP:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->LED_TRANSMIT:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->mResults:Landroid/hardware/camera2/impl/CameraMetadataNative; -Landroid/hardware/camera2/CaptureResult;->QUIRKS_PARTIAL_RESULT:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->REQUEST_FRAME_COUNT:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->REQUEST_ID:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_FACE_IDS:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_FACE_LANDMARKS:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_FACE_RECTANGLES:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_FACE_SCORES:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_LENS_SHADING_MAP:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_OIS_TIMESTAMPS:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_OIS_X_SHIFTS:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_OIS_Y_SHIFTS:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_PREDICTED_COLOR_GAINS:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_PREDICTED_COLOR_TRANSFORM:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->SYNC_FRAME_NUMBER:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->TONEMAP_CURVE_BLUE:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->TONEMAP_CURVE_GREEN:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->TONEMAP_CURVE_RED:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/impl/CameraMetadataNative$Key;->getTag()I -Landroid/hardware/camera2/impl/CameraMetadataNative;->mMetadataPtr:J -Landroid/hardware/camera2/impl/CameraMetadataNative;->nativeGetTagFromKeyLocal(Ljava/lang/String;)I -Landroid/hardware/camera2/impl/CameraMetadataNative;->nativeGetTypeFromTagLocal(I)I -Landroid/hardware/camera2/impl/CameraMetadataNative;->nativeReadValues(I)[B -Landroid/hardware/camera2/utils/SurfaceUtils;->getSurfaceSize(Landroid/view/Surface;)Landroid/util/Size; -Landroid/hardware/camera2/utils/TypeReference;-><init>()V -Landroid/hardware/camera2/utils/TypeReference;->createSpecializedTypeReference(Ljava/lang/reflect/Type;)Landroid/hardware/camera2/utils/TypeReference; -Landroid/hardware/Camera;->addCallbackBuffer([BI)V -Landroid/hardware/Camera;->addRawImageCallbackBuffer([B)V -Landroid/hardware/Camera;->CAMERA_HAL_API_VERSION_1_0:I -Landroid/hardware/Camera;->getEmptyParameters()Landroid/hardware/Camera$Parameters; -Landroid/hardware/Camera;->mNativeContext:J -Landroid/hardware/Camera;->native_getParameters()Ljava/lang/String; -Landroid/hardware/Camera;->native_setParameters(Ljava/lang/String;)V -Landroid/hardware/Camera;->native_setup(Ljava/lang/Object;IILjava/lang/String;)I -Landroid/hardware/Camera;->openLegacy(II)Landroid/hardware/Camera; -Landroid/hardware/Camera;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V -Landroid/hardware/Camera;->previewEnabled()Z -Landroid/hardware/Camera;->setPreviewSurface(Landroid/view/Surface;)V -Landroid/hardware/display/DisplayManager;->ACTION_WIFI_DISPLAY_STATUS_CHANGED:Ljava/lang/String; -Landroid/hardware/display/DisplayManager;->connectWifiDisplay(Ljava/lang/String;)V -Landroid/hardware/display/DisplayManager;->disconnectWifiDisplay()V -Landroid/hardware/display/DisplayManager;->EXTRA_WIFI_DISPLAY_STATUS:Ljava/lang/String; -Landroid/hardware/display/DisplayManager;->forgetWifiDisplay(Ljava/lang/String;)V -Landroid/hardware/display/DisplayManager;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; -Landroid/hardware/display/DisplayManager;->pauseWifiDisplay()V -Landroid/hardware/display/DisplayManager;->renameWifiDisplay(Ljava/lang/String;Ljava/lang/String;)V -Landroid/hardware/display/DisplayManager;->resumeWifiDisplay()V -Landroid/hardware/display/DisplayManager;->startWifiDisplayScan()V -Landroid/hardware/display/DisplayManager;->stopWifiDisplayScan()V -Landroid/hardware/display/DisplayManagerGlobal;->disconnectWifiDisplay()V -Landroid/hardware/display/DisplayManagerGlobal;->getDisplayIds()[I -Landroid/hardware/display/DisplayManagerGlobal;->getDisplayInfo(I)Landroid/view/DisplayInfo; -Landroid/hardware/display/DisplayManagerGlobal;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; -Landroid/hardware/display/DisplayManagerGlobal;->mDm:Landroid/hardware/display/IDisplayManager; -Landroid/hardware/display/DisplayManagerGlobal;->sInstance:Landroid/hardware/display/DisplayManagerGlobal; Landroid/hardware/display/IDisplayManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/display/IDisplayManager; Landroid/hardware/display/IDisplayManager;->getDisplayInfo(I)Landroid/view/DisplayInfo; -Landroid/hardware/display/WifiDisplay;->canConnect()Z -Landroid/hardware/display/WifiDisplay;->equals(Landroid/hardware/display/WifiDisplay;)Z -Landroid/hardware/display/WifiDisplay;->getDeviceAddress()Ljava/lang/String; -Landroid/hardware/display/WifiDisplay;->getDeviceAlias()Ljava/lang/String; -Landroid/hardware/display/WifiDisplay;->getDeviceName()Ljava/lang/String; -Landroid/hardware/display/WifiDisplay;->isAvailable()Z -Landroid/hardware/display/WifiDisplay;->isRemembered()Z -Landroid/hardware/display/WifiDisplayStatus;->DISPLAY_STATE_CONNECTED:I -Landroid/hardware/display/WifiDisplayStatus;->DISPLAY_STATE_CONNECTING:I -Landroid/hardware/display/WifiDisplayStatus;->DISPLAY_STATE_NOT_CONNECTED:I -Landroid/hardware/display/WifiDisplayStatus;->FEATURE_STATE_ON:I -Landroid/hardware/display/WifiDisplayStatus;->getActiveDisplay()Landroid/hardware/display/WifiDisplay; -Landroid/hardware/display/WifiDisplayStatus;->getActiveDisplayState()I -Landroid/hardware/display/WifiDisplayStatus;->getDisplays()[Landroid/hardware/display/WifiDisplay; -Landroid/hardware/display/WifiDisplayStatus;->getFeatureState()I -Landroid/hardware/display/WifiDisplayStatus;->getScanState()I -Landroid/hardware/display/WifiDisplayStatus;->mActiveDisplay:Landroid/hardware/display/WifiDisplay; -Landroid/hardware/display/WifiDisplayStatus;->mDisplays:[Landroid/hardware/display/WifiDisplay; -Landroid/hardware/display/WifiDisplayStatus;->SCAN_STATE_NOT_SCANNING:I -Landroid/hardware/fingerprint/Fingerprint;->getFingerId()I -Landroid/hardware/fingerprint/Fingerprint;->getName()Ljava/lang/CharSequence; -Landroid/hardware/fingerprint/FingerprintManager$AuthenticationResult;->getFingerprint()Landroid/hardware/fingerprint/Fingerprint; -Landroid/hardware/fingerprint/FingerprintManager;->getAuthenticatorId()J -Landroid/hardware/fingerprint/FingerprintManager;->getEnrolledFingerprints()Ljava/util/List; -Landroid/hardware/fingerprint/FingerprintManager;->getEnrolledFingerprints(I)Ljava/util/List; Landroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V Landroid/hardware/fingerprint/IFingerprintService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/fingerprint/IFingerprintService; -Landroid/hardware/HardwareBuffer;-><init>(J)V -Landroid/hardware/HardwareBuffer;->mNativeObject:J Landroid/hardware/ICameraService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ICameraService; Landroid/hardware/input/IInputManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V Landroid/hardware/input/IInputManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/input/IInputManager; Landroid/hardware/input/IInputManager$Stub;->TRANSACTION_injectInputEvent:I Landroid/hardware/input/IInputManager;->injectInputEvent(Landroid/view/InputEvent;I)Z -Landroid/hardware/input/InputManager;->createInputForwarder(I)Landroid/app/IInputForwarder; -Landroid/hardware/input/InputManager;->getInstance()Landroid/hardware/input/InputManager; -Landroid/hardware/input/InputManager;->injectInputEvent(Landroid/view/InputEvent;I)Z -Landroid/hardware/input/InputManager;->INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH:I -Landroid/hardware/input/InputManager;->mIm:Landroid/hardware/input/IInputManager; -Landroid/hardware/input/InputManager;->setPointerIconType(I)V Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub;-><init>()V Landroid/hardware/location/IContextHubService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubService; -Landroid/hardware/Sensor;->getHandle()I -Landroid/hardware/Sensor;->mFlags:I -Landroid/hardware/Sensor;->TYPE_DEVICE_ORIENTATION:I -Landroid/hardware/Sensor;->TYPE_PICK_UP_GESTURE:I -Landroid/hardware/SensorEvent;-><init>(I)V -Landroid/hardware/SensorManager;-><init>()V -Landroid/hardware/SerialManager;->getSerialPorts()[Ljava/lang/String; -Landroid/hardware/SerialManager;->openSerialPort(Ljava/lang/String;I)Landroid/hardware/SerialPort; -Landroid/hardware/SerialPort;->close()V -Landroid/hardware/SerialPort;->mNativeContext:I -Landroid/hardware/SerialPort;->write(Ljava/nio/ByteBuffer;I)V -Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;-><init>(II)V -Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;->confidenceLevel:I -Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;->userId:I -Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;-><init>(IIZIIIZLandroid/media/AudioFormat;[B)V -Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;-><init>(Ljava/util/UUID;Ljava/util/UUID;[B)V -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;-><init>(IILjava/lang/String;Ljava/lang/String;[I)V -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->id:I -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->locale:Ljava/lang/String; -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->recognitionModes:I -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->text:Ljava/lang/String; -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->users:[I -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;-><init>(IIZIIIZLandroid/media/AudioFormat;[B[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;)V -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;->keyphraseExtras:[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra; -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;-><init>(III[Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;)V -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;->coarseConfidenceLevel:I -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;->confidenceLevels:[Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel; -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;->id:I -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;->recognitionModes:I -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;-><init>(Ljava/util/UUID;Ljava/util/UUID;[B[Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;)V -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;->keyphrases:[Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase; -Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIIIZIZIZ)V -Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->id:I -Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->maxSoundModels:I -Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->uuid:Ljava/util/UUID; -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;-><init>(ZZ[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;[B)V -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;->captureRequested:Z -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;->data:[B -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;->keyphrases:[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra; -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;-><init>(IIZIIIZLandroid/media/AudioFormat;[B)V -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->captureAvailable:Z -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->captureSession:I -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->data:[B -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->soundModelHandle:I -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->status:I -Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;->data:[B -Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;->uuid:Ljava/util/UUID; -Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;->vendorUuid:Ljava/util/UUID; -Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent;-><init>(II[B)V -Landroid/hardware/soundtrigger/SoundTrigger;->attachModule(ILandroid/hardware/soundtrigger/SoundTrigger$StatusListener;Landroid/os/Handler;)Landroid/hardware/soundtrigger/SoundTriggerModule; -Landroid/hardware/soundtrigger/SoundTrigger;->listModules(Ljava/util/ArrayList;)I -Landroid/hardware/soundtrigger/SoundTriggerModule;->detach()V -Landroid/hardware/soundtrigger/SoundTriggerModule;->loadSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;[I)I -Landroid/hardware/soundtrigger/SoundTriggerModule;->mId:I -Landroid/hardware/soundtrigger/SoundTriggerModule;->mNativeContext:J -Landroid/hardware/soundtrigger/SoundTriggerModule;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V -Landroid/hardware/soundtrigger/SoundTriggerModule;->startRecognition(ILandroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I -Landroid/hardware/soundtrigger/SoundTriggerModule;->stopRecognition(I)I -Landroid/hardware/soundtrigger/SoundTriggerModule;->unloadSoundModel(I)I -Landroid/hardware/SystemSensorManager$BaseEventQueue;->dispatchAdditionalInfoEvent(III[F[I)V -Landroid/hardware/SystemSensorManager$BaseEventQueue;->dispatchFlushCompleteEvent(I)V -Landroid/hardware/SystemSensorManager$BaseEventQueue;->dispatchSensorEvent(I[FIJ)V Landroid/hardware/usb/IUsbManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V Landroid/hardware/usb/IUsbManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/usb/IUsbManager; -Landroid/hardware/usb/UsbDevice;->mInterfaces:[Landroid/hardware/usb/UsbInterface; -Landroid/hardware/usb/UsbDeviceConnection;->mNativeContext:J -Landroid/hardware/usb/UsbManager;-><init>(Landroid/content/Context;Landroid/hardware/usb/IUsbManager;)V -Landroid/hardware/usb/UsbManager;->ACTION_USB_STATE:Ljava/lang/String; -Landroid/hardware/usb/UsbManager;->getPorts()[Landroid/hardware/usb/UsbPort; -Landroid/hardware/usb/UsbManager;->getPortStatus(Landroid/hardware/usb/UsbPort;)Landroid/hardware/usb/UsbPortStatus; -Landroid/hardware/usb/UsbManager;->isFunctionEnabled(Ljava/lang/String;)Z -Landroid/hardware/usb/UsbManager;->setCurrentFunction(Ljava/lang/String;Z)V -Landroid/hardware/usb/UsbManager;->setPortRoles(Landroid/hardware/usb/UsbPort;II)V -Landroid/hardware/usb/UsbManager;->USB_CONNECTED:Ljava/lang/String; -Landroid/hardware/usb/UsbManager;->USB_DATA_UNLOCKED:Ljava/lang/String; -Landroid/hardware/usb/UsbManager;->USB_FUNCTION_NONE:Ljava/lang/String; -Landroid/hardware/usb/UsbPortStatus;->getCurrentDataRole()I -Landroid/hardware/usb/UsbPortStatus;->getCurrentMode()I -Landroid/hardware/usb/UsbPortStatus;->getCurrentPowerRole()I -Landroid/hardware/usb/UsbPortStatus;->getSupportedRoleCombinations()I -Landroid/hardware/usb/UsbPortStatus;->isConnected()Z -Landroid/hardware/usb/UsbPortStatus;->isRoleCombinationSupported(II)Z -Landroid/hardware/usb/UsbRequest;->mBuffer:Ljava/nio/ByteBuffer; -Landroid/hardware/usb/UsbRequest;->mLength:I -Landroid/hardware/usb/UsbRequest;->mNativeContext:J Landroid/icu/impl/CurrencyData;-><init>()V Landroid/icu/text/ArabicShaping;-><init>(I)V Landroid/icu/text/ArabicShaping;->isAlefMaksouraChar(C)Z @@ -2126,18 +1820,6 @@ Landroid/icu/util/UResourceBundle;->getString()Ljava/lang/String; Landroid/icu/util/UResourceBundle;->getType()I Landroid/icu/util/UResourceBundleIterator;->hasNext()Z Landroid/icu/util/UResourceBundleIterator;->next()Landroid/icu/util/UResourceBundle; -Landroid/location/Country;-><init>(Ljava/lang/String;I)V -Landroid/location/Country;->getCountryIso()Ljava/lang/String; -Landroid/location/Country;->getSource()I -Landroid/location/CountryDetector;-><init>(Landroid/location/ICountryDetector;)V -Landroid/location/CountryDetector;->addCountryListener(Landroid/location/CountryListener;Landroid/os/Looper;)V -Landroid/location/CountryDetector;->detectCountry()Landroid/location/Country; -Landroid/location/CountryDetector;->removeCountryListener(Landroid/location/CountryListener;)V -Landroid/location/CountryListener;->onCountryDetected(Landroid/location/Country;)V -Landroid/location/GeocoderParams;->getClientPackage()Ljava/lang/String; -Landroid/location/GeocoderParams;->getLocale()Ljava/util/Locale; -Landroid/location/Geofence;->CREATOR:Landroid/os/Parcelable$Creator; -Landroid/location/GpsStatus;->setTimeToFirstFix(I)V Landroid/location/ICountryDetector$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ICountryDetector; Landroid/location/ICountryListener$Stub;-><init>()V Landroid/location/IGeocodeProvider$Stub;-><init>()V @@ -2156,25 +1838,6 @@ Landroid/location/ILocationManager$Stub;-><init>()V Landroid/location/ILocationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ILocationManager; Landroid/location/ILocationManager$Stub;->TRANSACTION_getAllProviders:I Landroid/location/ILocationManager;->getAllProviders()Ljava/util/List; -Landroid/location/Location;->mElapsedRealtimeNanos:J -Landroid/location/Location;->mProvider:Ljava/lang/String; -Landroid/location/LocationManager;->mService:Landroid/location/ILocationManager; -Landroid/location/LocationManager;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/LocationListener;Landroid/os/Looper;Landroid/app/PendingIntent;)V -Landroid/location/LocationManager;->sendNiResponse(II)Z -Landroid/location/LocationRequest;->checkDisplacement(F)V -Landroid/location/LocationRequest;->checkInterval(J)V -Landroid/location/LocationRequest;->checkProvider(Ljava/lang/String;)V -Landroid/location/LocationRequest;->checkQuality(I)V -Landroid/location/LocationRequest;->mExpireAt:J -Landroid/location/LocationRequest;->mExplicitFastestInterval:Z -Landroid/location/LocationRequest;->mFastestInterval:J -Landroid/location/LocationRequest;->mHideFromAppOps:Z -Landroid/location/LocationRequest;->mInterval:J -Landroid/location/LocationRequest;->mNumUpdates:I -Landroid/location/LocationRequest;->mProvider:Ljava/lang/String; -Landroid/location/LocationRequest;->mQuality:I -Landroid/location/LocationRequest;->mSmallestDisplacement:F -Landroid/location/LocationRequest;->mWorkSource:Landroid/os/WorkSource; Landroid/media/AmrInputStream;-><init>(Ljava/io/InputStream;)V Landroid/media/AsyncPlayer;->setUsesWakeLock(Landroid/content/Context;)V Landroid/media/AudioAttributes$Builder;->addTag(Ljava/lang/String;)Landroid/media/AudioAttributes$Builder; @@ -2644,10 +2307,6 @@ Landroid/media/VolumeShaper$State;-><init>(FF)V Landroid/media/VolumeShaper$State;->mVolume:F Landroid/media/VolumeShaper$State;->mXOffset:F Landroid/media/WebVttRenderer;-><init>(Landroid/content/Context;)V -Landroid/mtp/MtpPropertyList;->append(IIIJ)V -Landroid/mtp/MtpPropertyList;->append(IILjava/lang/String;)V -Landroid/mtp/MtpStorage;->getPath()Ljava/lang/String; -Landroid/mtp/MtpStorage;->getStorageId()I Landroid/net/ConnectivityManager;->ACTION_TETHER_STATE_CHANGED:Ljava/lang/String; Landroid/net/ConnectivityManager;->EXTRA_ACTIVE_TETHER:Ljava/lang/String; Landroid/net/ConnectivityManager;->EXTRA_AVAILABLE_TETHER:Ljava/lang/String; @@ -3125,13 +2784,6 @@ Landroid/nfc/INfcAdapterExtras;->getDriverName(Ljava/lang/String;)Ljava/lang/Str Landroid/nfc/INfcAdapterExtras;->open(Ljava/lang/String;Landroid/os/IBinder;)Landroid/os/Bundle; Landroid/nfc/INfcAdapterExtras;->setCardEmulationRoute(Ljava/lang/String;I)V Landroid/nfc/INfcAdapterExtras;->transceive(Ljava/lang/String;[B)Landroid/os/Bundle; -Landroid/opengl/EGL14;->eglGetDisplay(J)Landroid/opengl/EGLDisplay; -Landroid/opengl/GLES20;->glGetActiveAttrib(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V -Landroid/opengl/GLES20;->glGetActiveUniform(IIILjava/nio/IntBuffer;Ljava/nio/IntBuffer;Ljava/nio/IntBuffer;B)V -Landroid/opengl/GLSurfaceView$EglHelper;->mEglContext:Ljavax/microedition/khronos/egl/EGLContext; -Landroid/opengl/GLSurfaceView$GLThread;->mEglHelper:Landroid/opengl/GLSurfaceView$EglHelper; -Landroid/opengl/GLSurfaceView;->mGLThread:Landroid/opengl/GLSurfaceView$GLThread; -Landroid/opengl/GLSurfaceView;->mRenderer:Landroid/opengl/GLSurfaceView$Renderer; Landroid/os/AsyncResult;->forMessage(Landroid/os/Message;)Landroid/os/AsyncResult; Landroid/os/AsyncTask;->mFuture:Ljava/util/concurrent/FutureTask; Landroid/os/AsyncTask;->mStatus:Landroid/os/AsyncTask$Status; @@ -4370,17 +4022,6 @@ Landroid/service/wallpaper/IWallpaperEngine;->setDesiredSize(II)V Landroid/service/wallpaper/IWallpaperEngine;->setVisibility(Z)V Landroid/service/wallpaper/IWallpaperService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/wallpaper/IWallpaperService; Landroid/speech/IRecognitionListener;->onEvent(ILandroid/os/Bundle;)V -Landroid/speech/tts/TextToSpeech;->getCurrentEngine()Ljava/lang/String; -Landroid/speech/tts/TextToSpeech;->mConnectingServiceConnection:Landroid/speech/tts/TextToSpeech$Connection; -Landroid/speech/tts/TextToSpeech;->mCurrentEngine:Ljava/lang/String; -Landroid/speech/tts/TextToSpeech;->mInitListener:Landroid/speech/tts/TextToSpeech$OnInitListener; -Landroid/speech/tts/TtsEngines;-><init>(Landroid/content/Context;)V -Landroid/speech/tts/TtsEngines;->getEngines()Ljava/util/List; -Landroid/speech/tts/TtsEngines;->getLocalePrefForEngine(Ljava/lang/String;)Ljava/util/Locale; -Landroid/speech/tts/TtsEngines;->getSettingsIntent(Ljava/lang/String;)Landroid/content/Intent; -Landroid/speech/tts/TtsEngines;->normalizeTTSLocale(Ljava/util/Locale;)Ljava/util/Locale; -Landroid/speech/tts/TtsEngines;->parseLocaleString(Ljava/lang/String;)Ljava/util/Locale; -Landroid/speech/tts/TtsEngines;->updateLocalePrefForEngine(Ljava/lang/String;Ljava/util/Locale;)V Landroid/system/Int32Ref;->value:I Landroid/system/OsConstants;-><init>()V Landroid/system/OsConstants;->AF_NETLINK:I @@ -4946,97 +4587,7 @@ Landroid/transition/Transition;->getRunningAnimators()Landroid/util/ArrayMap; Landroid/transition/TransitionManager;->getRunningTransitions()Landroid/util/ArrayMap; Landroid/transition/TransitionManager;->sPendingTransitions:Ljava/util/ArrayList; Landroid/transition/TransitionManager;->sRunningTransitions:Ljava/lang/ThreadLocal; -Landroid/util/ArrayMap;->allocArrays(I)V -Landroid/util/ArrayMap;->append(Ljava/lang/Object;Ljava/lang/Object;)V -Landroid/util/ArrayMap;->CACHE_SIZE:I -Landroid/util/ArrayMap;->EMPTY:Landroid/util/ArrayMap; -Landroid/util/ArrayMap;->EMPTY_IMMUTABLE_INTS:[I -Landroid/util/ArrayMap;->freeArrays([I[Ljava/lang/Object;I)V -Landroid/util/ArrayMap;->indexOf(Ljava/lang/Object;I)I -Landroid/util/ArrayMap;->indexOfNull()I -Landroid/util/ArrayMap;->indexOfValue(Ljava/lang/Object;)I -Landroid/util/ArrayMap;->mArray:[Ljava/lang/Object; -Landroid/util/ArrayMap;->mBaseCache:[Ljava/lang/Object; -Landroid/util/ArrayMap;->mBaseCacheSize:I -Landroid/util/ArrayMap;->mHashes:[I -Landroid/util/ArrayMap;->mSize:I -Landroid/util/ArrayMap;->mTwiceBaseCache:[Ljava/lang/Object; -Landroid/util/ArrayMap;->mTwiceBaseCacheSize:I -Landroid/util/ArraySet;-><init>(Ljava/util/Collection;)V -Landroid/util/ArraySet;->allocArrays(I)V -Landroid/util/ArraySet;->freeArrays([I[Ljava/lang/Object;I)V -Landroid/util/ArraySet;->indexOf(Ljava/lang/Object;I)I -Landroid/util/ArraySet;->indexOfNull()I -Landroid/util/ArraySet;->mArray:[Ljava/lang/Object; -Landroid/util/ArraySet;->mHashes:[I -Landroid/util/ArraySet;->mSize:I -Landroid/util/Base64;-><init>()V -Landroid/util/Base64OutputStream;-><init>(Ljava/io/OutputStream;IZ)V -Landroid/util/DebugUtils;->buildShortClassTag(Ljava/lang/Object;Ljava/lang/StringBuilder;)V -Landroid/util/DisplayMetrics;->DENSITY_DEVICE:I -Landroid/util/DisplayMetrics;->noncompatDensityDpi:I -Landroid/util/DisplayMetrics;->noncompatHeightPixels:I -Landroid/util/DisplayMetrics;->noncompatWidthPixels:I -Landroid/util/EventLog$Event;-><init>([B)V -Landroid/util/IconDrawableFactory;->getBadgedIcon(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable; -Landroid/util/LocalLog;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V -Landroid/util/Log;->println_native(IILjava/lang/String;Ljava/lang/String;)I -Landroid/util/Log;->wtf(ILjava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;ZZ)I -Landroid/util/LogWriter;-><init>(ILjava/lang/String;)V -Landroid/util/LongSparseLongArray;->mKeys:[J -Landroid/util/LongSparseLongArray;->mSize:I -Landroid/util/LongSparseLongArray;->mValues:[J -Landroid/util/LruCache;->map:Ljava/util/LinkedHashMap; -Landroid/util/MathUtils;->abs(F)F -Landroid/util/MathUtils;->constrain(FFF)F -Landroid/util/MathUtils;->constrain(III)I -Landroid/util/MathUtils;->lerp(FFF)F -Landroid/util/MathUtils;->max(II)F -Landroid/util/NtpTrustedTime;->currentTimeMillis()J -Landroid/util/NtpTrustedTime;->forceRefresh()Z -Landroid/util/NtpTrustedTime;->getCachedNtpTime()J -Landroid/util/NtpTrustedTime;->getCachedNtpTimeReference()J -Landroid/util/NtpTrustedTime;->getInstance(Landroid/content/Context;)Landroid/util/NtpTrustedTime; -Landroid/util/NtpTrustedTime;->hasCache()Z -Landroid/util/PathParser;->createPathFromPathData(Ljava/lang/String;)Landroid/graphics/Path; -Landroid/util/Pools$Pool;->acquire()Ljava/lang/Object; -Landroid/util/Pools$Pool;->release(Ljava/lang/Object;)Z -Landroid/util/Pools$SimplePool;-><init>(I)V -Landroid/util/Pools$SimplePool;->acquire()Ljava/lang/Object; -Landroid/util/Pools$SimplePool;->mPool:[Ljava/lang/Object; -Landroid/util/Pools$SimplePool;->release(Ljava/lang/Object;)Z -Landroid/util/Pools$SynchronizedPool;-><init>(I)V -Landroid/util/Pools$SynchronizedPool;->acquire()Ljava/lang/Object; -Landroid/util/Pools$SynchronizedPool;->release(Ljava/lang/Object;)Z -Landroid/util/Rational;->mDenominator:I -Landroid/util/Rational;->mNumerator:I Landroid/util/Singleton;-><init>()V -Landroid/util/Singleton;->get()Ljava/lang/Object; -Landroid/util/Singleton;->mInstance:Ljava/lang/Object; -Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I -Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I -Landroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I -Landroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I -Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I -Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I -Landroid/util/Slog;->wtf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I -Landroid/util/Slog;->wtfStack(Ljava/lang/String;Ljava/lang/String;)I -Landroid/util/SparseArray;->mKeys:[I -Landroid/util/SparseArray;->mSize:I -Landroid/util/SparseArray;->mValues:[Ljava/lang/Object; -Landroid/util/SparseBooleanArray;->mKeys:[I -Landroid/util/SparseBooleanArray;->mSize:I -Landroid/util/SparseBooleanArray;->mValues:[Z -Landroid/util/SparseIntArray;->mKeys:[I -Landroid/util/SparseIntArray;->mSize:I -Landroid/util/SparseIntArray;->mValues:[I -Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V -Landroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;I)V -Landroid/util/TimeUtils;->logTimeOfDay(J)Ljava/lang/String; -Landroid/util/TrustedTime;->currentTimeMillis()J -Landroid/util/TrustedTime;->forceRefresh()Z -Landroid/util/TrustedTime;->getCacheAge()J -Landroid/util/TrustedTime;->hasCache()Z Landroid/view/accessibility/AccessibilityEvent;->mAction:I Landroid/view/accessibility/AccessibilityEvent;->mEventType:I Landroid/view/accessibility/AccessibilityInteractionClient;->clearCache()V diff --git a/config/hiddenapi-vendor-list.txt b/config/hiddenapi-vendor-list.txt index ec3513ef7a02..9cc8f7143a78 100644 --- a/config/hiddenapi-vendor-list.txt +++ b/config/hiddenapi-vendor-list.txt @@ -1,4 +1,3 @@ -Landroid/accounts/AccountManager;-><init>(Landroid/content/Context;Landroid/accounts/IAccountManager;Landroid/os/Handler;)V Landroid/app/Activity;->managedQuery(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; Landroid/app/Activity;->registerRemoteAnimations(Landroid/view/RemoteAnimationDefinition;)V Landroid/app/ActivityManager$RecentTaskInfo;->configuration:Landroid/content/res/Configuration; @@ -62,15 +61,6 @@ Landroid/app/VrStateCallback;-><init>()V Landroid/app/VrStateCallback;->onPersistentVrStateChanged(Z)V Landroid/app/WallpaperColors;-><init>(Landroid/graphics/Color;Landroid/graphics/Color;Landroid/graphics/Color;I)V Landroid/bluetooth/IBluetooth;->sendConnectionStateChange(Landroid/bluetooth/BluetoothDevice;III)V -Landroid/companion/AssociationRequest;->getDeviceFilters()Ljava/util/List; -Landroid/companion/AssociationRequest;->isSingleDevice()Z -Landroid/companion/BluetoothDeviceFilter;->getAddress()Ljava/lang/String; -Landroid/companion/BluetoothDeviceFilterUtils;->getDeviceDisplayNameInternal(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String; -Landroid/companion/BluetoothDeviceFilterUtils;->getDeviceDisplayNameInternal(Landroid/net/wifi/ScanResult;)Ljava/lang/String; -Landroid/companion/BluetoothDeviceFilterUtils;->getDeviceMacAddress(Landroid/os/Parcelable;)Ljava/lang/String; -Landroid/companion/BluetoothLeDeviceFilter;->getScanFilter()Landroid/bluetooth/le/ScanFilter; -Landroid/companion/DeviceFilter;->getDeviceDisplayName(Landroid/os/Parcelable;)Ljava/lang/String; -Landroid/companion/DeviceFilter;->matches(Landroid/os/Parcelable;)Z Landroid/companion/ICompanionDeviceDiscoveryService$Stub;-><init>()V Landroid/companion/ICompanionDeviceDiscoveryServiceCallback;->onDeviceSelected(Ljava/lang/String;ILjava/lang/String;)V Landroid/companion/ICompanionDeviceDiscoveryServiceCallback;->onDeviceSelectionCancel()V @@ -97,12 +87,6 @@ Landroid/content/pm/IPackageManager;->getApplicationInfo(Ljava/lang/String;II)La Landroid/content/pm/IPackageManager;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName; Landroid/content/pm/IPackageManager;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo; Landroid/content/pm/IPackageStatsObserver;->onGetStatsCompleted(Landroid/content/pm/PackageStats;Z)V -Landroid/database/sqlite/SqliteWrapper;->insert(Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri; -Landroid/database/sqlite/SqliteWrapper;->query(Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; -Landroid/hardware/camera2/CaptureRequest$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;)V -Landroid/hardware/display/DisplayManagerGlobal;->getInstance()Landroid/hardware/display/DisplayManagerGlobal; -Landroid/hardware/display/DisplayManagerGlobal;->getRealDisplay(I)Landroid/view/Display; -Landroid/hardware/location/GeofenceHardware;-><init>(Landroid/hardware/location/IGeofenceHardware;)V Landroid/hardware/location/IActivityRecognitionHardwareClient;->onAvailabilityChanged(ZLandroid/hardware/location/IActivityRecognitionHardware;)V Landroid/location/IGeocodeProvider;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; Landroid/location/IGeocodeProvider;->getFromLocationName(Ljava/lang/String;DDDDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; @@ -111,7 +95,6 @@ Landroid/location/ILocationManager;->getNetworkProviderPackage()Ljava/lang/Strin Landroid/location/ILocationManager;->reportLocation(Landroid/location/Location;Z)V Landroid/location/INetInitiatedListener$Stub;-><init>()V Landroid/location/INetInitiatedListener;->sendNiResponse(II)Z -Landroid/location/Location;->setExtraLocation(Ljava/lang/String;Landroid/location/Location;)V Landroid/media/AudioManager;->registerAudioPortUpdateListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V Landroid/media/AudioManager;->unregisterAudioPortUpdateListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V Landroid/media/AudioSystem;->checkAudioFlinger()I @@ -484,22 +467,6 @@ Landroid/telephony/TelephonyManager;->nvResetConfig(I)Z Landroid/telephony/TelephonyManager;->putIntAtIndex(Landroid/content/ContentResolver;Ljava/lang/String;II)Z Landroid/telephony/TelephonyManager;->setPreferredNetworkType(II)Z Landroid/text/TextUtils;->isPrintableAsciiOnly(Ljava/lang/CharSequence;)Z -Landroid/util/IconDrawableFactory;->getBadgedIcon(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/ApplicationInfo;I)Landroid/graphics/drawable/Drawable; -Landroid/util/IconDrawableFactory;->newInstance(Landroid/content/Context;)Landroid/util/IconDrawableFactory; -Landroid/util/LocalLog$ReadOnlyLocalLog;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V -Landroid/util/LocalLog;-><init>(I)V -Landroid/util/LocalLog;->log(Ljava/lang/String;)V -Landroid/util/LocalLog;->readOnlyLocalLog()Landroid/util/LocalLog$ReadOnlyLocalLog; -Landroid/util/LongArray;-><init>()V -Landroid/util/LongArray;->add(IJ)V -Landroid/util/LongArray;->get(I)J -Landroid/util/LongArray;->size()I -Landroid/util/RecurrenceRule;->buildRecurringMonthly(ILjava/time/ZoneId;)Landroid/util/RecurrenceRule; -Landroid/util/RecurrenceRule;->start:Ljava/time/ZonedDateTime; -Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I -Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I -Landroid/util/Slog;->println(ILjava/lang/String;Ljava/lang/String;)I -Landroid/util/Slog;->wtf(Ljava/lang/String;Ljava/lang/String;)I Landroid/view/AppTransitionAnimationSpec;-><init>(ILandroid/graphics/GraphicBuffer;Landroid/graphics/Rect;)V Landroid/view/BatchedInputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;Landroid/view/Choreographer;)V Landroid/view/Choreographer;->getSfInstance()Landroid/view/Choreographer; diff --git a/core/java/android/accounts/Account.java b/core/java/android/accounts/Account.java index b6e85f18a695..f07f5ece7bc1 100644 --- a/core/java/android/accounts/Account.java +++ b/core/java/android/accounts/Account.java @@ -18,6 +18,7 @@ package android.accounts; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.os.Parcelable; import android.os.Parcel; @@ -36,6 +37,7 @@ import java.util.Set; * suitable for use as the key of a {@link java.util.Map} */ public class Account implements Parcelable { + @UnsupportedAppUsage private static final String TAG = "Account"; @GuardedBy("sAccessedAccounts") @@ -43,6 +45,7 @@ public class Account implements Parcelable { public final String name; public final String type; + @UnsupportedAppUsage private final @Nullable String accessId; public boolean equals(Object o) { diff --git a/core/java/android/accounts/AccountAndUser.java b/core/java/android/accounts/AccountAndUser.java index 04157cc31847..b0d53438d97c 100644 --- a/core/java/android/accounts/AccountAndUser.java +++ b/core/java/android/accounts/AccountAndUser.java @@ -16,15 +16,20 @@ package android.accounts; +import android.annotation.UnsupportedAppUsage; + /** * Used to store the Account and the UserId this account is associated with. * * @hide */ public class AccountAndUser { + @UnsupportedAppUsage public Account account; + @UnsupportedAppUsage public int userId; + @UnsupportedAppUsage public AccountAndUser(Account account, int userId) { this.account = account; this.userId = userId; diff --git a/core/java/android/accounts/AccountAuthenticatorResponse.java b/core/java/android/accounts/AccountAuthenticatorResponse.java index 41f26ac164b7..bcc9f90c35f1 100644 --- a/core/java/android/accounts/AccountAuthenticatorResponse.java +++ b/core/java/android/accounts/AccountAuthenticatorResponse.java @@ -16,6 +16,7 @@ package android.accounts; +import android.annotation.UnsupportedAppUsage; import android.os.Bundle; import android.os.Parcelable; import android.os.Parcel; @@ -33,6 +34,7 @@ public class AccountAuthenticatorResponse implements Parcelable { /** * @hide */ + @UnsupportedAppUsage public AccountAuthenticatorResponse(IAccountAuthenticatorResponse response) { mAccountAuthenticatorResponse = response; } diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index 5176d71ea67b..3189d089e6d8 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -27,6 +27,7 @@ import android.annotation.SystemApi; import android.annotation.SystemService; import android.annotation.SdkConstant.SdkConstantType; import android.annotation.BroadcastBehavior; +import android.annotation.UnsupportedAppUsage; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -336,6 +337,7 @@ public class AccountManager { public static final String ACCOUNT_ACCESS_TOKEN_TYPE = "com.android.AccountManager.ACCOUNT_ACCESS_TOKEN_TYPE"; + @UnsupportedAppUsage private final Context mContext; private final IAccountManager mService; private final Handler mMainHandler; @@ -409,6 +411,7 @@ public class AccountManager { /** * @hide */ + @UnsupportedAppUsage public AccountManager(Context context, IAccountManager service) { mContext = context; mService = service; @@ -418,6 +421,7 @@ public class AccountManager { /** * @hide used for testing only */ + @UnsupportedAppUsage public AccountManager(Context context, IAccountManager service, Handler handler) { mContext = context; mService = service; @@ -685,6 +689,7 @@ public class AccountManager { /** @hide Same as {@link #getAccountsByType(String)} but for a specific user. */ @NonNull + @UnsupportedAppUsage public Account[] getAccountsByTypeAsUser(String type, UserHandle userHandle) { try { return mService.getAccountsAsUser(type, userHandle.getIdentifier(), @@ -2014,6 +2019,7 @@ public class AccountManager { * Same as {@link #confirmCredentials(Account, Bundle, Activity, AccountManagerCallback, Handler)} * but for the specified user. */ + @UnsupportedAppUsage public AccountManagerFuture<Bundle> confirmCredentialsAsUser(final Account account, final Bundle options, final Activity activity, @@ -2225,9 +2231,12 @@ public class AccountManager { } private abstract class AmsTask extends FutureTask<Bundle> implements AccountManagerFuture<Bundle> { + @UnsupportedAppUsage final IAccountManagerResponse mResponse; + @UnsupportedAppUsage final Handler mHandler; final AccountManagerCallback<Bundle> mCallback; + @UnsupportedAppUsage final Activity mActivity; public AmsTask(Activity activity, Handler handler, AccountManagerCallback<Bundle> callback) { super(new Callable<Bundle>() { @@ -2552,10 +2561,13 @@ public class AccountManager { } volatile AccountManagerFuture<Bundle> mFuture = null; final String mAccountType; + @UnsupportedAppUsage final String mAuthTokenType; final String[] mFeatures; final Bundle mAddAccountOptions; + @UnsupportedAppUsage final Bundle mLoginOptions; + @UnsupportedAppUsage final AccountManagerCallback<Bundle> mMyCallback; private volatile int mNumAccounts = 0; diff --git a/core/java/android/accounts/AuthenticatorDescription.java b/core/java/android/accounts/AuthenticatorDescription.java index 5d9abb068bd8..6875867108de 100644 --- a/core/java/android/accounts/AuthenticatorDescription.java +++ b/core/java/android/accounts/AuthenticatorDescription.java @@ -16,6 +16,7 @@ package android.accounts; +import android.annotation.UnsupportedAppUsage; import android.os.Parcelable; import android.os.Parcel; @@ -76,6 +77,7 @@ public class AuthenticatorDescription implements Parcelable { return new AuthenticatorDescription(type); } + @UnsupportedAppUsage private AuthenticatorDescription(String type) { this.type = type; this.packageName = null; @@ -86,6 +88,7 @@ public class AuthenticatorDescription implements Parcelable { this.customTokens = false; } + @UnsupportedAppUsage private AuthenticatorDescription(Parcel source) { this.type = source.readString(); this.packageName = source.readString(); diff --git a/core/java/android/appwidget/AppWidgetHost.java b/core/java/android/appwidget/AppWidgetHost.java index 49cc498cffa2..f003d4bea028 100644 --- a/core/java/android/appwidget/AppWidgetHost.java +++ b/core/java/android/appwidget/AppWidgetHost.java @@ -18,6 +18,7 @@ package android.appwidget; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.Context; @@ -53,14 +54,17 @@ public class AppWidgetHost { static final int HANDLE_UPDATE = 1; static final int HANDLE_PROVIDER_CHANGED = 2; static final int HANDLE_PROVIDERS_CHANGED = 3; + @UnsupportedAppUsage static final int HANDLE_VIEW_DATA_CHANGED = 4; final static Object sServiceLock = new Object(); + @UnsupportedAppUsage static IAppWidgetService sService; static boolean sServiceInitialized = false; private DisplayMetrics mDisplayMetrics; private String mContextOpPackageName; + @UnsupportedAppUsage private final Handler mHandler; private final int mHostId; private final Callbacks mCallbacks; @@ -156,6 +160,7 @@ public class AppWidgetHost { /** * @hide */ + @UnsupportedAppUsage public AppWidgetHost(Context context, int hostId, OnClickHandler handler, Looper looper) { mContextOpPackageName = context.getOpPackageName(); mHostId = hostId; diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java index ab0eb92e1726..a9187b65a359 100644 --- a/core/java/android/appwidget/AppWidgetHostView.java +++ b/core/java/android/appwidget/AppWidgetHostView.java @@ -16,6 +16,7 @@ package android.appwidget; +import android.annotation.UnsupportedAppUsage; import android.content.ComponentName; import android.content.Context; import android.content.pm.ApplicationInfo; @@ -70,7 +71,9 @@ public class AppWidgetHostView extends FrameLayout { Context mContext; Context mRemoteContext; + @UnsupportedAppUsage int mAppWidgetId; + @UnsupportedAppUsage AppWidgetProviderInfo mInfo; View mView; int mViewMode = VIEW_MODE_NOINIT; @@ -174,6 +177,7 @@ public class AppWidgetHostView extends FrameLayout { return getDefaultPaddingForWidget(context, appInfo, padding); } + @UnsupportedAppUsage private static Rect getDefaultPaddingForWidget(Context context, ApplicationInfo appInfo, Rect padding) { if (padding == null) { @@ -284,6 +288,7 @@ public class AppWidgetHostView extends FrameLayout { /** * @hide */ + @UnsupportedAppUsage public void updateAppWidgetSize(Bundle newOptions, int minWidth, int minHeight, int maxWidth, int maxHeight, boolean ignorePadding) { if (newOptions == null) { diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java index 20248b90d1e9..dbc1c199cb4d 100644 --- a/core/java/android/appwidget/AppWidgetManager.java +++ b/core/java/android/appwidget/AppWidgetManager.java @@ -23,6 +23,7 @@ import android.annotation.RequiresFeature; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SystemService; +import android.annotation.UnsupportedAppUsage; import android.app.IServiceConnection; import android.app.PendingIntent; import android.content.ComponentName; @@ -463,6 +464,7 @@ public class AppWidgetManager { private final Context mContext; private final String mPackageName; + @UnsupportedAppUsage private final IAppWidgetService mService; private final DisplayMetrics mDisplayMetrics; @@ -816,6 +818,7 @@ public class AppWidgetManager { * * @hide */ + @UnsupportedAppUsage public List<AppWidgetProviderInfo> getInstalledProviders(int categoryFilter) { if (mService == null) { return Collections.emptyList(); @@ -842,6 +845,7 @@ public class AppWidgetManager { * * @hide */ + @UnsupportedAppUsage public List<AppWidgetProviderInfo> getInstalledProvidersForProfile(int categoryFilter, @Nullable UserHandle profile, @Nullable String packageName) { if (mService == null) { @@ -902,6 +906,7 @@ public class AppWidgetManager { * provider for this AppWidget. * @hide */ + @UnsupportedAppUsage public void bindAppWidgetId(int appWidgetId, ComponentName provider) { if (mService == null) { return; @@ -924,6 +929,7 @@ public class AppWidgetManager { * * @hide */ + @UnsupportedAppUsage public void bindAppWidgetId(int appWidgetId, ComponentName provider, Bundle options) { if (mService == null) { return; @@ -1094,6 +1100,7 @@ public class AppWidgetManager { * @see Context#getServiceDispatcher(ServiceConnection, Handler, int) * @hide */ + @UnsupportedAppUsage public boolean bindRemoteViewsService(Context context, int appWidgetId, Intent intent, IServiceConnection connection, @Context.BindServiceFlags int flags) { if (mService == null) { @@ -1139,6 +1146,7 @@ public class AppWidgetManager { } } + @UnsupportedAppUsage private boolean bindAppWidgetIdIfAllowed(int appWidgetId, int profileId, ComponentName provider, Bundle options) { if (mService == null) { diff --git a/core/java/android/appwidget/AppWidgetProviderInfo.java b/core/java/android/appwidget/AppWidgetProviderInfo.java index 6dd85caad628..53315cce82dd 100644 --- a/core/java/android/appwidget/AppWidgetProviderInfo.java +++ b/core/java/android/appwidget/AppWidgetProviderInfo.java @@ -18,6 +18,7 @@ package android.appwidget; import android.annotation.IntDef; import android.annotation.NonNull; +import android.annotation.UnsupportedAppUsage; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; @@ -270,6 +271,7 @@ public class AppWidgetProviderInfo implements Parcelable { public int widgetFeatures; /** @hide */ + @UnsupportedAppUsage public ActivityInfo providerInfo; public AppWidgetProviderInfo() { diff --git a/core/java/android/companion/AssociationRequest.java b/core/java/android/companion/AssociationRequest.java index 922224a5d718..db54f08d815c 100644 --- a/core/java/android/companion/AssociationRequest.java +++ b/core/java/android/companion/AssociationRequest.java @@ -18,6 +18,7 @@ package android.companion; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; import android.provider.OneTimeUseBuilder; @@ -59,12 +60,14 @@ public final class AssociationRequest implements Parcelable { } /** @hide */ + @UnsupportedAppUsage public boolean isSingleDevice() { return mSingleDevice; } /** @hide */ @NonNull + @UnsupportedAppUsage public List<DeviceFilter<?>> getDeviceFilters() { return mDeviceFilters; } diff --git a/core/java/android/companion/BluetoothDeviceFilter.java b/core/java/android/companion/BluetoothDeviceFilter.java index 84e15364c191..7507e174a749 100644 --- a/core/java/android/companion/BluetoothDeviceFilter.java +++ b/core/java/android/companion/BluetoothDeviceFilter.java @@ -25,6 +25,7 @@ import static android.companion.BluetoothDeviceFilterUtils.patternToString; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.bluetooth.BluetoothDevice; import android.os.Parcel; import android.os.ParcelUuid; @@ -99,6 +100,7 @@ public final class BluetoothDeviceFilter implements DeviceFilter<BluetoothDevice /** @hide */ @Nullable + @UnsupportedAppUsage public String getAddress() { return mAddress; } diff --git a/core/java/android/companion/BluetoothDeviceFilterUtils.java b/core/java/android/companion/BluetoothDeviceFilterUtils.java index 4ee38fe4990e..bd507a6b8bcc 100644 --- a/core/java/android/companion/BluetoothDeviceFilterUtils.java +++ b/core/java/android/companion/BluetoothDeviceFilterUtils.java @@ -21,6 +21,7 @@ import static android.text.TextUtils.firstNotEmpty; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.bluetooth.BluetoothDevice; import android.bluetooth.le.ScanFilter; import android.net.wifi.ScanResult; @@ -124,14 +125,17 @@ public class BluetoothDeviceFilterUtils { Log.i(LOG_TAG, getDeviceDisplayNameInternal(device) + (result ? " ~ " : " !~ ") + criteria); } + @UnsupportedAppUsage public static String getDeviceDisplayNameInternal(@NonNull BluetoothDevice device) { return firstNotEmpty(device.getAliasName(), device.getAddress()); } + @UnsupportedAppUsage public static String getDeviceDisplayNameInternal(@NonNull ScanResult device) { return firstNotEmpty(device.SSID, device.BSSID); } + @UnsupportedAppUsage public static String getDeviceMacAddress(@NonNull Parcelable device) { if (device instanceof BluetoothDevice) { return ((BluetoothDevice) device).getAddress(); diff --git a/core/java/android/companion/BluetoothLeDeviceFilter.java b/core/java/android/companion/BluetoothLeDeviceFilter.java index 7fb768c67386..1de931eeb675 100644 --- a/core/java/android/companion/BluetoothLeDeviceFilter.java +++ b/core/java/android/companion/BluetoothLeDeviceFilter.java @@ -25,6 +25,7 @@ import static com.android.internal.util.Preconditions.checkState; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.bluetooth.BluetoothDevice; import android.bluetooth.le.ScanFilter; import android.bluetooth.le.ScanRecord; @@ -92,6 +93,7 @@ public final class BluetoothLeDeviceFilter implements DeviceFilter<ScanResult> { /** @hide */ @NonNull + @UnsupportedAppUsage public ScanFilter getScanFilter() { return mScanFilter; } diff --git a/core/java/android/companion/DeviceFilter.java b/core/java/android/companion/DeviceFilter.java index 10135a451dda..dc7cf82613e6 100644 --- a/core/java/android/companion/DeviceFilter.java +++ b/core/java/android/companion/DeviceFilter.java @@ -19,6 +19,7 @@ package android.companion; import android.annotation.IntDef; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.os.Parcelable; import java.lang.annotation.Retention; @@ -44,9 +45,11 @@ public interface DeviceFilter<D extends Parcelable> extends Parcelable { * * @hide */ + @UnsupportedAppUsage boolean matches(D device); /** @hide */ + @UnsupportedAppUsage String getDeviceDisplayName(D device); /** @hide */ diff --git a/core/java/android/database/AbstractCursor.java b/core/java/android/database/AbstractCursor.java index 76fa008799dd..c6c2aa57f533 100644 --- a/core/java/android/database/AbstractCursor.java +++ b/core/java/android/database/AbstractCursor.java @@ -16,6 +16,7 @@ package android.database; +import android.annotation.UnsupportedAppUsage; import android.content.ContentResolver; import android.net.Uri; import android.os.Bundle; @@ -68,6 +69,7 @@ public abstract class AbstractCursor implements CrossProcessCursor { @Deprecated protected ContentResolver mContentResolver; + @UnsupportedAppUsage private Uri mNotifyUri; private final Object mSelfObserverLock = new Object(); @@ -77,6 +79,7 @@ public abstract class AbstractCursor implements CrossProcessCursor { private final DataSetObservable mDataSetObservable = new DataSetObservable(); private final ContentObservable mContentObservable = new ContentObservable(); + @UnsupportedAppUsage private Bundle mExtras = Bundle.EMPTY; /* -------------------------------------------------------- */ diff --git a/core/java/android/database/AbstractWindowedCursor.java b/core/java/android/database/AbstractWindowedCursor.java index 083485facb98..a988f0684fca 100644 --- a/core/java/android/database/AbstractWindowedCursor.java +++ b/core/java/android/database/AbstractWindowedCursor.java @@ -16,6 +16,8 @@ package android.database; +import android.annotation.UnsupportedAppUsage; + /** * A base class for Cursors that store their data in {@link CursorWindow}s. * <p> @@ -179,6 +181,7 @@ public abstract class AbstractWindowedCursor extends AbstractCursor { * Closes the cursor window and sets {@link #mWindow} to null. * @hide */ + @UnsupportedAppUsage protected void closeWindow() { if (mWindow != null) { mWindow.close(); @@ -193,6 +196,7 @@ public abstract class AbstractWindowedCursor extends AbstractCursor { * @param name The window name. * @hide */ + @UnsupportedAppUsage protected void clearOrCreateWindow(String name) { if (mWindow == null) { mWindow = new CursorWindow(name); @@ -203,6 +207,7 @@ public abstract class AbstractWindowedCursor extends AbstractCursor { /** @hide */ @Override + @UnsupportedAppUsage protected void onDeactivateOrClose() { super.onDeactivateOrClose(); closeWindow(); diff --git a/core/java/android/database/ContentObserver.java b/core/java/android/database/ContentObserver.java index 5f01e300bf42..798b7830ac50 100644 --- a/core/java/android/database/ContentObserver.java +++ b/core/java/android/database/ContentObserver.java @@ -16,6 +16,7 @@ package android.database; +import android.annotation.UnsupportedAppUsage; import android.net.Uri; import android.os.Handler; import android.os.UserHandle; @@ -59,6 +60,7 @@ public abstract class ContentObserver { * * {@hide} */ + @UnsupportedAppUsage public IContentObserver releaseContentObserver() { synchronized (mLock) { final Transport oldTransport = mTransport; diff --git a/core/java/android/database/CursorWindow.java b/core/java/android/database/CursorWindow.java index a748f4d2cbce..d9443d9a3c5f 100644 --- a/core/java/android/database/CursorWindow.java +++ b/core/java/android/database/CursorWindow.java @@ -17,6 +17,7 @@ package android.database; import android.annotation.BytesLong; +import android.annotation.UnsupportedAppUsage; import android.content.res.Resources; import android.database.sqlite.SQLiteClosable; import android.database.sqlite.SQLiteException; @@ -45,12 +46,14 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { private static final String STATS_TAG = "CursorWindowStats"; // This static member will be evaluated when first used. + @UnsupportedAppUsage private static int sCursorWindowSize = -1; /** * The native CursorWindow object pointer. (FOR INTERNAL USE ONLY) * @hide */ + @UnsupportedAppUsage public long mWindowPtr; private int mStartPos; @@ -744,6 +747,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { dispose(); } + @UnsupportedAppUsage private static final LongSparseArray<Integer> sWindowToPidMap = new LongSparseArray<Integer>(); private void recordNewWindow(int pid, long window) { @@ -765,6 +769,7 @@ public class CursorWindow extends SQLiteClosable implements Parcelable { } } + @UnsupportedAppUsage private String printStats() { StringBuilder buff = new StringBuilder(); int myPid = Process.myPid(); diff --git a/core/java/android/database/CursorWrapper.java b/core/java/android/database/CursorWrapper.java index 63a2792dd5d3..0d27dfb872f0 100644 --- a/core/java/android/database/CursorWrapper.java +++ b/core/java/android/database/CursorWrapper.java @@ -16,6 +16,7 @@ package android.database; +import android.annotation.UnsupportedAppUsage; import android.content.ContentResolver; import android.net.Uri; import android.os.Bundle; @@ -26,6 +27,7 @@ import android.os.Bundle; */ public class CursorWrapper implements Cursor { /** @hide */ + @UnsupportedAppUsage protected final Cursor mCursor; /** diff --git a/core/java/android/database/DatabaseUtils.java b/core/java/android/database/DatabaseUtils.java index 3d019f07cb84..47567c34baf1 100644 --- a/core/java/android/database/DatabaseUtils.java +++ b/core/java/android/database/DatabaseUtils.java @@ -16,6 +16,7 @@ package android.database; +import android.annotation.UnsupportedAppUsage; import android.content.ContentValues; import android.content.Context; import android.content.OperationApplicationException; @@ -232,6 +233,7 @@ public class DatabaseUtils { * @return object value type * @hide */ + @UnsupportedAppUsage public static int getTypeOfObject(Object obj) { if (obj == null) { return Cursor.FIELD_TYPE_NULL; @@ -760,6 +762,7 @@ public class DatabaseUtils { * the requested row. * @hide */ + @UnsupportedAppUsage public static int cursorPickFillWindowStartPosition( int cursorPosition, int cursorWindowCapacity) { return Math.max(cursorPosition - cursorWindowCapacity / 3, 0); diff --git a/core/java/android/database/MatrixCursor.java b/core/java/android/database/MatrixCursor.java index 5e107f23d3d4..5033296df9fb 100644 --- a/core/java/android/database/MatrixCursor.java +++ b/core/java/android/database/MatrixCursor.java @@ -16,6 +16,7 @@ package android.database; +import android.annotation.UnsupportedAppUsage; import java.util.ArrayList; /** @@ -26,7 +27,9 @@ import java.util.ArrayList; public class MatrixCursor extends AbstractCursor { private final String[] columnNames; + @UnsupportedAppUsage private Object[] data; + @UnsupportedAppUsage private int rowCount = 0; private final int columnCount; @@ -61,6 +64,7 @@ public class MatrixCursor extends AbstractCursor { /** * Gets value at the given column for the current row. */ + @UnsupportedAppUsage private Object get(int column) { if (column < 0 || column >= columnCount) { throw new CursorIndexOutOfBoundsException("Requested column: " diff --git a/core/java/android/database/sqlite/DatabaseObjectNotClosedException.java b/core/java/android/database/sqlite/DatabaseObjectNotClosedException.java index f28c70fe1efe..2af06e116da0 100644 --- a/core/java/android/database/sqlite/DatabaseObjectNotClosedException.java +++ b/core/java/android/database/sqlite/DatabaseObjectNotClosedException.java @@ -16,6 +16,8 @@ package android.database.sqlite; +import android.annotation.UnsupportedAppUsage; + /** * An exception that indicates that garbage-collector is finalizing a database object * that is not explicitly closed @@ -25,6 +27,7 @@ public class DatabaseObjectNotClosedException extends RuntimeException { private static final String s = "Application did not close the cursor or database object " + "that was opened here"; + @UnsupportedAppUsage public DatabaseObjectNotClosedException() { super(s); } diff --git a/core/java/android/database/sqlite/SQLiteClosable.java b/core/java/android/database/sqlite/SQLiteClosable.java index adfbc6e177ac..d6a71da105dd 100644 --- a/core/java/android/database/sqlite/SQLiteClosable.java +++ b/core/java/android/database/sqlite/SQLiteClosable.java @@ -16,6 +16,7 @@ package android.database.sqlite; +import android.annotation.UnsupportedAppUsage; import java.io.Closeable; /** @@ -24,6 +25,7 @@ import java.io.Closeable; * This class implements a primitive reference counting scheme for database objects. */ public abstract class SQLiteClosable implements Closeable { + @UnsupportedAppUsage private int mReferenceCount = 1; /** diff --git a/core/java/android/database/sqlite/SQLiteCursor.java b/core/java/android/database/sqlite/SQLiteCursor.java index 13e6f7182e8a..e3c409891c54 100644 --- a/core/java/android/database/sqlite/SQLiteCursor.java +++ b/core/java/android/database/sqlite/SQLiteCursor.java @@ -16,6 +16,7 @@ package android.database.sqlite; +import android.annotation.UnsupportedAppUsage; import android.database.AbstractWindowedCursor; import android.database.CursorWindow; import android.database.DatabaseUtils; @@ -39,12 +40,14 @@ public class SQLiteCursor extends AbstractWindowedCursor { static final int NO_COUNT = -1; /** The name of the table to edit */ + @UnsupportedAppUsage private final String mEditTable; /** The names of the columns in the rows */ private final String[] mColumns; /** The query object for the cursor */ + @UnsupportedAppUsage private final SQLiteQuery mQuery; /** The compiled query this cursor came from */ @@ -139,6 +142,7 @@ public class SQLiteCursor extends AbstractWindowedCursor { return mCount; } + @UnsupportedAppUsage private void fillWindow(int requiredPos) { clearOrCreateWindow(getDatabase().getPath()); try { diff --git a/core/java/android/database/sqlite/SQLiteCustomFunction.java b/core/java/android/database/sqlite/SQLiteCustomFunction.java index 02f3284b4258..ec204581aef5 100644 --- a/core/java/android/database/sqlite/SQLiteCustomFunction.java +++ b/core/java/android/database/sqlite/SQLiteCustomFunction.java @@ -16,13 +16,17 @@ package android.database.sqlite; +import android.annotation.UnsupportedAppUsage; + /** * Describes a custom SQL function. * * @hide */ public final class SQLiteCustomFunction { + @UnsupportedAppUsage public final String name; + @UnsupportedAppUsage public final int numArgs; public final SQLiteDatabase.CustomFunction callback; @@ -47,6 +51,7 @@ public final class SQLiteCustomFunction { // Called from native. @SuppressWarnings("unused") + @UnsupportedAppUsage private void dispatchCallback(String[] args) { callback.callback(args); } diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java index 6adae25fc38d..424da7602a58 100644 --- a/core/java/android/database/sqlite/SQLiteDatabase.java +++ b/core/java/android/database/sqlite/SQLiteDatabase.java @@ -20,6 +20,7 @@ import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.app.ActivityManager; import android.content.ContentValues; import android.database.Cursor; @@ -91,6 +92,7 @@ public final class SQLiteDatabase extends SQLiteClosable { // Thread-local for database sessions that belong to this database. // Each thread has its own database session. // INVARIANT: Immutable. + @UnsupportedAppUsage private final ThreadLocal<SQLiteSession> mThreadSession = ThreadLocal .withInitial(this::createSession); @@ -124,12 +126,14 @@ public final class SQLiteDatabase extends SQLiteClosable { // The database configuration. // INVARIANT: Guarded by mLock. + @UnsupportedAppUsage private final SQLiteDatabaseConfiguration mConfigurationLocked; // The connection pool for the database, null when closed. // The pool itself is thread-safe, but the reference to it can only be acquired // when the lock is held. // INVARIANT: Guarded by mLock. + @UnsupportedAppUsage private SQLiteConnectionPool mConnectionPoolLocked; // True if the database has attached databases. @@ -189,6 +193,7 @@ public final class SQLiteDatabase extends SQLiteClosable { */ public static final int CONFLICT_NONE = 0; + @UnsupportedAppUsage private static final String[] CONFLICT_VALUES = new String[] {"", " OR ROLLBACK ", " OR ABORT ", " OR FAIL ", " OR IGNORE ", " OR REPLACE "}; @@ -399,6 +404,7 @@ public final class SQLiteDatabase extends SQLiteClosable { * @throws IllegalStateException if the thread does not yet have a session and * the database is not open. */ + @UnsupportedAppUsage SQLiteSession getThreadSession() { return mThreadSession.get(); // initialValue() throws if database closed } @@ -542,6 +548,7 @@ public final class SQLiteDatabase extends SQLiteClosable { beginTransaction(transactionListener, false); } + @UnsupportedAppUsage private void beginTransaction(SQLiteTransactionListener transactionListener, boolean exclusive) { acquireReference(); @@ -729,6 +736,7 @@ public final class SQLiteDatabase extends SQLiteClosable { return openDatabase(path.getPath(), openParams); } + @UnsupportedAppUsage private static SQLiteDatabase openDatabase(@NonNull String path, @NonNull OpenParams openParams) { Preconditions.checkArgument(openParams != null, "OpenParams cannot be null"); @@ -838,6 +846,7 @@ public final class SQLiteDatabase extends SQLiteClosable { * @see #isReadOnly() * @hide */ + @UnsupportedAppUsage public void reopenReadWrite() { synchronized (mLock) { throwIfNotOpenLocked(); @@ -2137,6 +2146,7 @@ public final class SQLiteDatabase extends SQLiteClosable { return dbStatsList; } + @UnsupportedAppUsage private void collectDbStats(ArrayList<DbStats> dbStatsList) { synchronized (mLock) { if (mConnectionPoolLocked != null) { @@ -2145,6 +2155,7 @@ public final class SQLiteDatabase extends SQLiteClosable { } } + @UnsupportedAppUsage private static ArrayList<SQLiteDatabase> getActiveDatabases() { ArrayList<SQLiteDatabase> databases = new ArrayList<SQLiteDatabase>(); synchronized (sActiveDatabases) { diff --git a/core/java/android/database/sqlite/SQLiteDatabaseConfiguration.java b/core/java/android/database/sqlite/SQLiteDatabaseConfiguration.java index bb62268ce742..48f10219921b 100644 --- a/core/java/android/database/sqlite/SQLiteDatabaseConfiguration.java +++ b/core/java/android/database/sqlite/SQLiteDatabaseConfiguration.java @@ -16,6 +16,7 @@ package android.database.sqlite; +import android.annotation.UnsupportedAppUsage; import java.util.ArrayList; import java.util.Locale; import java.util.regex.Pattern; @@ -67,6 +68,7 @@ public final class SQLiteDatabaseConfiguration { * * Default is 25. */ + @UnsupportedAppUsage public int maxSqlCacheSize; /** diff --git a/core/java/android/database/sqlite/SQLiteOpenHelper.java b/core/java/android/database/sqlite/SQLiteOpenHelper.java index 7ff66358de5f..1377806cb213 100644 --- a/core/java/android/database/sqlite/SQLiteOpenHelper.java +++ b/core/java/android/database/sqlite/SQLiteOpenHelper.java @@ -19,6 +19,7 @@ package android.database.sqlite; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.database.DatabaseErrorHandler; import android.database.SQLException; @@ -52,6 +53,7 @@ public abstract class SQLiteOpenHelper { private static final String TAG = SQLiteOpenHelper.class.getSimpleName(); private final Context mContext; + @UnsupportedAppUsage private final String mName; private final int mNewVersion; private final int mMinimumSupportedVersion; diff --git a/core/java/android/database/sqlite/SQLiteProgram.java b/core/java/android/database/sqlite/SQLiteProgram.java index 26e8c318299f..8304133cd41e 100644 --- a/core/java/android/database/sqlite/SQLiteProgram.java +++ b/core/java/android/database/sqlite/SQLiteProgram.java @@ -16,6 +16,7 @@ package android.database.sqlite; +import android.annotation.UnsupportedAppUsage; import android.database.DatabaseUtils; import android.os.CancellationSignal; @@ -31,10 +32,12 @@ public abstract class SQLiteProgram extends SQLiteClosable { private static final String[] EMPTY_STRING_ARRAY = new String[0]; private final SQLiteDatabase mDatabase; + @UnsupportedAppUsage private final String mSql; private final boolean mReadOnly; private final String[] mColumnNames; private final int mNumParameters; + @UnsupportedAppUsage private final Object[] mBindArgs; SQLiteProgram(SQLiteDatabase db, String sql, Object[] bindArgs, diff --git a/core/java/android/database/sqlite/SQLiteQueryBuilder.java b/core/java/android/database/sqlite/SQLiteQueryBuilder.java index c6c676f81758..1bd44fa5c2c6 100644 --- a/core/java/android/database/sqlite/SQLiteQueryBuilder.java +++ b/core/java/android/database/sqlite/SQLiteQueryBuilder.java @@ -16,6 +16,7 @@ package android.database.sqlite; +import android.annotation.UnsupportedAppUsage; import android.database.Cursor; import android.database.DatabaseUtils; import android.os.CancellationSignal; @@ -41,8 +42,11 @@ public class SQLiteQueryBuilder Pattern.compile("\\s*\\d+\\s*(,\\s*\\d+\\s*)?"); private Map<String, String> mProjectionMap = null; + @UnsupportedAppUsage private String mTables = ""; + @UnsupportedAppUsage private StringBuilder mWhereClause = null; // lazily created + @UnsupportedAppUsage private boolean mDistinct; private SQLiteDatabase.CursorFactory mFactory; private boolean mStrict; @@ -596,6 +600,7 @@ public class SQLiteQueryBuilder return query.toString(); } + @UnsupportedAppUsage private String[] computeProjection(String[] projectionIn) { if (projectionIn != null && projectionIn.length > 0) { if (mProjectionMap != null) { diff --git a/core/java/android/database/sqlite/SQLiteSession.java b/core/java/android/database/sqlite/SQLiteSession.java index d80ab1f2e867..a9ac9e7f882f 100644 --- a/core/java/android/database/sqlite/SQLiteSession.java +++ b/core/java/android/database/sqlite/SQLiteSession.java @@ -16,6 +16,7 @@ package android.database.sqlite; +import android.annotation.UnsupportedAppUsage; import android.database.CursorWindow; import android.database.DatabaseUtils; import android.os.CancellationSignal; @@ -291,6 +292,7 @@ public final class SQLiteSession { * @see #yieldTransaction * @see #endTransaction */ + @UnsupportedAppUsage public void beginTransaction(int transactionMode, SQLiteTransactionListener transactionListener, int connectionFlags, CancellationSignal cancellationSignal) { diff --git a/core/java/android/database/sqlite/SQLiteStatement.java b/core/java/android/database/sqlite/SQLiteStatement.java index b1092d765a9a..8f8f67625a33 100644 --- a/core/java/android/database/sqlite/SQLiteStatement.java +++ b/core/java/android/database/sqlite/SQLiteStatement.java @@ -16,6 +16,7 @@ package android.database.sqlite; +import android.annotation.UnsupportedAppUsage; import android.os.ParcelFileDescriptor; /** @@ -27,6 +28,7 @@ import android.os.ParcelFileDescriptor; * </p> */ public final class SQLiteStatement extends SQLiteProgram { + @UnsupportedAppUsage SQLiteStatement(SQLiteDatabase db, String sql, Object[] bindArgs) { super(db, sql, bindArgs, null); } diff --git a/core/java/android/database/sqlite/SqliteWrapper.java b/core/java/android/database/sqlite/SqliteWrapper.java index b019618a0f49..e3171640a25c 100644 --- a/core/java/android/database/sqlite/SqliteWrapper.java +++ b/core/java/android/database/sqlite/SqliteWrapper.java @@ -17,6 +17,7 @@ package android.database.sqlite; +import android.annotation.UnsupportedAppUsage; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; @@ -44,6 +45,7 @@ public final class SqliteWrapper { return e.getMessage().equals(SQLITE_EXCEPTION_DETAIL_MESSAGE); } + @UnsupportedAppUsage public static void checkSQLiteException(Context context, SQLiteException e) { if (isLowMemory(e)) { Toast.makeText(context, com.android.internal.R.string.low_memory, @@ -53,6 +55,7 @@ public final class SqliteWrapper { } } + @UnsupportedAppUsage public static Cursor query(Context context, ContentResolver resolver, Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { try { @@ -73,6 +76,7 @@ public final class SqliteWrapper { return false; } } + @UnsupportedAppUsage public static int update(Context context, ContentResolver resolver, Uri uri, ContentValues values, String where, String[] selectionArgs) { try { @@ -84,6 +88,7 @@ public final class SqliteWrapper { } } + @UnsupportedAppUsage public static int delete(Context context, ContentResolver resolver, Uri uri, String where, String[] selectionArgs) { try { @@ -95,6 +100,7 @@ public final class SqliteWrapper { } } + @UnsupportedAppUsage public static Uri insert(Context context, ContentResolver resolver, Uri uri, ContentValues values) { try { diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index 9350aab799a9..d8cdf60ad850 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -21,6 +21,7 @@ import static android.system.OsConstants.*; import android.annotation.Nullable; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; +import android.annotation.UnsupportedAppUsage; import android.app.ActivityThread; import android.app.AppOpsManager; import android.content.Context; @@ -164,6 +165,7 @@ public class Camera { private static final int CAMERA_MSG_PREVIEW_METADATA = 0x400; private static final int CAMERA_MSG_FOCUS_MOVE = 0x800; + @UnsupportedAppUsage private long mNativeContext; // accessed by native methods private EventHandler mEventHandler; private ShutterCallback mShutterCallback; @@ -236,6 +238,7 @@ public class Camera { * Camera HAL device API version 1.0 * @hide */ + @UnsupportedAppUsage public static final int CAMERA_HAL_API_VERSION_1_0 = 0x100; /** @@ -451,6 +454,7 @@ public class Camera { * * @hide */ + @UnsupportedAppUsage public static Camera openLegacy(int cameraId, int halVersion) { if (halVersion < CAMERA_HAL_API_VERSION_1_0) { throw new IllegalArgumentException("Invalid HAL version " + halVersion); @@ -606,6 +610,7 @@ public class Camera { release(); } + @UnsupportedAppUsage private native final int native_setup(Object camera_this, int cameraId, int halVersion, String packageName); @@ -718,6 +723,7 @@ public class Camera { /** * @hide */ + @UnsupportedAppUsage public native final void setPreviewSurface(Surface surface) throws IOException; /** @@ -841,6 +847,7 @@ public class Camera { * FIXME: Unhide before release * @hide */ + @UnsupportedAppUsage public native final boolean previewEnabled(); /** @@ -1014,11 +1021,13 @@ public class Camera { * * {@hide} */ + @UnsupportedAppUsage public final void addRawImageCallbackBuffer(byte[] callbackBuffer) { addCallbackBuffer(callbackBuffer, CAMERA_MSG_RAW_IMAGE); } + @UnsupportedAppUsage private final void addCallbackBuffer(byte[] callbackBuffer, int msgType) { // CAMERA_MSG_VIDEO_FRAME may be allowed in the future. @@ -1265,6 +1274,7 @@ public class Camera { } } + @UnsupportedAppUsage private static void postEventFromNative(Object camera_ref, int what, int arg1, int arg2, Object obj) { @@ -2077,7 +2087,9 @@ public class Camera { mDetailedErrorCallback = cb; } + @UnsupportedAppUsage private native final void native_setParameters(String params); + @UnsupportedAppUsage private native final String native_getParameters(); /** @@ -2126,6 +2138,7 @@ public class Camera { * * @hide */ + @UnsupportedAppUsage public static Parameters getEmptyParameters() { Camera camera = new Camera(); return camera.new Parameters(); @@ -2660,6 +2673,7 @@ public class Camera { * * @hide */ + @UnsupportedAppUsage public void copyFrom(Parameters other) { if (other == null) { throw new NullPointerException("other must not be null"); @@ -2691,6 +2705,7 @@ public class Camera { * @deprecated */ @Deprecated + @UnsupportedAppUsage public void dump() { Log.e(TAG, "dump: size=" + mMap.size()); for (String k : mMap.keySet()) { @@ -4409,6 +4424,7 @@ public class Camera { // Splits a comma delimited string to an ArrayList of Area objects. // Example string: "(-10,-10,0,0,300),(0,0,10,10,700)". Return null if // the passing string is null or the size is 0 or (0,0,0,0,0). + @UnsupportedAppUsage private ArrayList<Area> splitArea(String str) { if (str == null || str.charAt(0) != '(' || str.charAt(str.length() - 1) != ')') { diff --git a/core/java/android/hardware/HardwareBuffer.java b/core/java/android/hardware/HardwareBuffer.java index 9aa3f40a8f0a..c17aabb9c31d 100644 --- a/core/java/android/hardware/HardwareBuffer.java +++ b/core/java/android/hardware/HardwareBuffer.java @@ -19,6 +19,7 @@ package android.hardware; import android.annotation.IntDef; import android.annotation.LongDef; import android.annotation.NonNull; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -89,6 +90,7 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { public static final int S_UI8 = 0x35; // Note: do not rename, this field is used by native code + @UnsupportedAppUsage private long mNativeObject; // Invoked on destruction @@ -182,6 +184,7 @@ public final class HardwareBuffer implements Parcelable, AutoCloseable { * Private use only. See {@link #create(int, int, int, int, long)}. May also be * called from JNI using an already allocated native <code>HardwareBuffer</code>. */ + @UnsupportedAppUsage private HardwareBuffer(long nativeObject) { mNativeObject = nativeObject; diff --git a/core/java/android/hardware/Sensor.java b/core/java/android/hardware/Sensor.java index 7297426130ac..4aa6fabe8989 100644 --- a/core/java/android/hardware/Sensor.java +++ b/core/java/android/hardware/Sensor.java @@ -18,6 +18,7 @@ package android.hardware; import android.annotation.SystemApi; +import android.annotation.UnsupportedAppUsage; import android.os.Build; /** @@ -504,6 +505,7 @@ public final class Sensor { * * @hide Expected to be used internally for always on display. */ + @UnsupportedAppUsage public static final int TYPE_PICK_UP_GESTURE = 25; /** @@ -543,6 +545,7 @@ public final class Sensor { * @hide Expected to be used internally for auto-rotate and speaker rotation. * */ + @UnsupportedAppUsage public static final int TYPE_DEVICE_ORIENTATION = 27; /** @@ -891,6 +894,7 @@ public final class Sensor { private String mStringType; private String mRequiredPermission; private int mMaxDelay; + @UnsupportedAppUsage private int mFlags; private int mId; @@ -1014,6 +1018,7 @@ public final class Sensor { } /** @hide */ + @UnsupportedAppUsage public int getHandle() { return mHandle; } diff --git a/core/java/android/hardware/SensorEvent.java b/core/java/android/hardware/SensorEvent.java index bbd04a31f8c8..8c910b254b9c 100644 --- a/core/java/android/hardware/SensorEvent.java +++ b/core/java/android/hardware/SensorEvent.java @@ -16,6 +16,8 @@ package android.hardware; +import android.annotation.UnsupportedAppUsage; + /** * This class represents a {@link android.hardware.Sensor Sensor} event and * holds information such as the sensor's type, the time-stamp, accuracy and of @@ -649,6 +651,7 @@ public class SensorEvent { */ public long timestamp; + @UnsupportedAppUsage SensorEvent(int valueSize) { values = new float[valueSize]; } diff --git a/core/java/android/hardware/SensorManager.java b/core/java/android/hardware/SensorManager.java index 35aaf78bc3c2..3b251c9bf7ea 100644 --- a/core/java/android/hardware/SensorManager.java +++ b/core/java/android/hardware/SensorManager.java @@ -18,6 +18,7 @@ package android.hardware; import android.annotation.SystemApi; import android.annotation.SystemService; +import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.os.Build; import android.os.Handler; @@ -368,6 +369,7 @@ public abstract class SensorManager { /** * {@hide} */ + @UnsupportedAppUsage public SensorManager() { } diff --git a/core/java/android/hardware/SerialManager.java b/core/java/android/hardware/SerialManager.java index 610f6a587e51..571c3cc0451f 100644 --- a/core/java/android/hardware/SerialManager.java +++ b/core/java/android/hardware/SerialManager.java @@ -17,6 +17,7 @@ package android.hardware; import android.annotation.SystemService; +import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.os.ParcelFileDescriptor; import android.os.RemoteException; @@ -46,6 +47,7 @@ public class SerialManager { * * @return names of available serial ports */ + @UnsupportedAppUsage public String[] getSerialPorts() { try { return mService.getSerialPorts(); @@ -65,6 +67,7 @@ public class SerialManager { * @param speed at which to open the serial port * @return the serial port */ + @UnsupportedAppUsage public SerialPort openSerialPort(String name, int speed) throws IOException { try { ParcelFileDescriptor pfd = mService.openSerialPort(name); diff --git a/core/java/android/hardware/SerialPort.java b/core/java/android/hardware/SerialPort.java index 5d83d9c832c3..78ac3c007793 100644 --- a/core/java/android/hardware/SerialPort.java +++ b/core/java/android/hardware/SerialPort.java @@ -16,6 +16,7 @@ package android.hardware; +import android.annotation.UnsupportedAppUsage; import android.os.ParcelFileDescriptor; import java.io.FileDescriptor; @@ -31,6 +32,7 @@ public class SerialPort { private static final String TAG = "SerialPort"; // used by the JNI code + @UnsupportedAppUsage private int mNativeContext; private final String mName; private ParcelFileDescriptor mFileDescriptor; @@ -59,6 +61,7 @@ public class SerialPort { /** * Closes the serial port */ + @UnsupportedAppUsage public void close() throws IOException { if (mFileDescriptor != null) { mFileDescriptor.close(); @@ -102,6 +105,7 @@ public class SerialPort { * @param buffer to write * @param length number of bytes to write */ + @UnsupportedAppUsage public void write(ByteBuffer buffer, int length) throws IOException { if (buffer.isDirect()) { native_write_direct(buffer, length); diff --git a/core/java/android/hardware/SystemSensorManager.java b/core/java/android/hardware/SystemSensorManager.java index 1174cb6a2692..7abfabf4a2ac 100644 --- a/core/java/android/hardware/SystemSensorManager.java +++ b/core/java/android/hardware/SystemSensorManager.java @@ -16,6 +16,7 @@ package android.hardware; +import android.annotation.UnsupportedAppUsage; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -758,10 +759,13 @@ public class SystemSensorManager extends SensorManager { if (sensor == null) throw new NullPointerException(); return nativeDisableSensor(mNativeSensorEventQueue, sensor.getHandle()); } + @UnsupportedAppUsage protected abstract void dispatchSensorEvent(int handle, float[] values, int accuracy, long timestamp); + @UnsupportedAppUsage protected abstract void dispatchFlushCompleteEvent(int handle); + @UnsupportedAppUsage protected void dispatchAdditionalInfoEvent( int handle, int type, int serial, float[] floatValues, int[] intValues) { // default implementation is do nothing diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java index 87c64cd12903..afb2b0eec9d6 100644 --- a/core/java/android/hardware/camera2/CameraCharacteristics.java +++ b/core/java/android/hardware/camera2/CameraCharacteristics.java @@ -18,6 +18,7 @@ package android.hardware.camera2; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.hardware.camera2.impl.CameraMetadataNative; import android.hardware.camera2.impl.PublicKey; import android.hardware.camera2.impl.SyntheticKey; @@ -72,6 +73,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * * @hide */ + @UnsupportedAppUsage public Key(String name, Class<T> type, long vendorId) { mKey = new CameraMetadataNative.Key<T>(name, type, vendorId); } @@ -90,6 +92,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * * @hide */ + @UnsupportedAppUsage public Key(String name, Class<T> type) { mKey = new CameraMetadataNative.Key<T>(name, type); } @@ -99,6 +102,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * * @hide */ + @UnsupportedAppUsage public Key(String name, TypeReference<T> typeReference) { mKey = new CameraMetadataNative.Key<T>(name, typeReference); } @@ -168,6 +172,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * * @hide */ + @UnsupportedAppUsage public CameraMetadataNative.Key<T> getNativeKey() { return mKey; } @@ -180,6 +185,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri } } + @UnsupportedAppUsage private final CameraMetadataNative mProperties; private List<CameraCharacteristics.Key<?>> mKeys; private List<CaptureRequest.Key<?>> mAvailableRequestKeys; @@ -767,6 +773,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CaptureRequest#CONTROL_AWB_REGIONS * @hide */ + @UnsupportedAppUsage public static final Key<int[]> CONTROL_MAX_REGIONS = new Key<int[]>("android.control.maxRegions", int[].class); @@ -872,6 +879,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES * @hide */ + @UnsupportedAppUsage public static final Key<android.hardware.camera2.params.HighSpeedVideoConfiguration[]> CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS = new Key<android.hardware.camera2.params.HighSpeedVideoConfiguration[]>("android.control.availableHighSpeedVideoConfigurations", android.hardware.camera2.params.HighSpeedVideoConfiguration[].class); @@ -1140,6 +1148,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ + @UnsupportedAppUsage public static final Key<android.util.Size> LENS_INFO_SHADING_MAP_SIZE = new Key<android.util.Size>("android.lens.info.shadingMapSize", android.util.Size.class); @@ -1479,6 +1488,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @hide */ @Deprecated + @UnsupportedAppUsage public static final Key<Byte> QUIRKS_USE_PARTIAL_RESULT = new Key<Byte>("android.quirks.usePartialResult", byte.class); @@ -1516,6 +1526,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ + @UnsupportedAppUsage public static final Key<int[]> REQUEST_MAX_NUM_OUTPUT_STREAMS = new Key<int[]>("android.request.maxNumOutputStreams", int[].class); @@ -1755,6 +1766,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES * @hide */ + @UnsupportedAppUsage public static final Key<int[]> REQUEST_AVAILABLE_REQUEST_KEYS = new Key<int[]>("android.request.availableRequestKeys", int[].class); @@ -1780,6 +1792,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CaptureRequest#STATISTICS_LENS_SHADING_MAP_MODE * @hide */ + @UnsupportedAppUsage public static final Key<int[]> REQUEST_AVAILABLE_RESULT_KEYS = new Key<int[]>("android.request.availableResultKeys", int[].class); @@ -1792,6 +1805,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>This key is available on all devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<int[]> REQUEST_AVAILABLE_CHARACTERISTICS_KEYS = new Key<int[]>("android.request.availableCharacteristicsKeys", int[].class); @@ -1838,6 +1852,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>This key is available on all devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<int[]> REQUEST_AVAILABLE_SESSION_KEYS = new Key<int[]>("android.request.availableSessionKeys", int[].class); @@ -1858,6 +1873,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ + @UnsupportedAppUsage public static final Key<int[]> REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS = new Key<int[]>("android.request.availablePhysicalCameraRequestKeys", int[].class); @@ -1873,6 +1889,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @hide */ @Deprecated + @UnsupportedAppUsage public static final Key<int[]> SCALER_AVAILABLE_FORMATS = new Key<int[]>("android.scaler.availableFormats", int[].class); @@ -1895,6 +1912,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @hide */ @Deprecated + @UnsupportedAppUsage public static final Key<long[]> SCALER_AVAILABLE_JPEG_MIN_DURATIONS = new Key<long[]>("android.scaler.availableJpegMinDurations", long[].class); @@ -1913,6 +1931,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @hide */ @Deprecated + @UnsupportedAppUsage public static final Key<android.util.Size[]> SCALER_AVAILABLE_JPEG_SIZES = new Key<android.util.Size[]>("android.scaler.availableJpegSizes", android.util.Size[].class); @@ -1954,6 +1973,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @hide */ @Deprecated + @UnsupportedAppUsage public static final Key<long[]> SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS = new Key<long[]>("android.scaler.availableProcessedMinDurations", long[].class); @@ -1978,6 +1998,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @hide */ @Deprecated + @UnsupportedAppUsage public static final Key<android.util.Size[]> SCALER_AVAILABLE_PROCESSED_SIZES = new Key<android.util.Size[]>("android.scaler.availableProcessedSizes", android.util.Size[].class); @@ -2033,6 +2054,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CameraCharacteristics#REQUEST_MAX_NUM_INPUT_STREAMS * @hide */ + @UnsupportedAppUsage public static final Key<android.hardware.camera2.params.ReprocessFormatsMap> SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP = new Key<android.hardware.camera2.params.ReprocessFormatsMap>("android.scaler.availableInputOutputFormatsMap", android.hardware.camera2.params.ReprocessFormatsMap.class); @@ -2125,6 +2147,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE * @hide */ + @UnsupportedAppUsage public static final Key<android.hardware.camera2.params.StreamConfiguration[]> SCALER_AVAILABLE_STREAM_CONFIGURATIONS = new Key<android.hardware.camera2.params.StreamConfiguration[]>("android.scaler.availableStreamConfigurations", android.hardware.camera2.params.StreamConfiguration[].class); @@ -2147,6 +2170,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CaptureRequest#SENSOR_FRAME_DURATION * @hide */ + @UnsupportedAppUsage public static final Key<android.hardware.camera2.params.StreamConfigurationDuration[]> SCALER_AVAILABLE_MIN_FRAME_DURATIONS = new Key<android.hardware.camera2.params.StreamConfigurationDuration[]>("android.scaler.availableMinFrameDurations", android.hardware.camera2.params.StreamConfigurationDuration[].class); @@ -2215,6 +2239,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CaptureRequest#SENSOR_FRAME_DURATION * @hide */ + @UnsupportedAppUsage public static final Key<android.hardware.camera2.params.StreamConfigurationDuration[]> SCALER_AVAILABLE_STALL_DURATIONS = new Key<android.hardware.camera2.params.StreamConfigurationDuration[]>("android.scaler.availableStallDurations", android.hardware.camera2.params.StreamConfigurationDuration[].class); @@ -3110,6 +3135,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see #LED_AVAILABLE_LEDS_TRANSMIT * @hide */ + @UnsupportedAppUsage public static final Key<int[]> LED_AVAILABLE_LEDS = new Key<int[]>("android.led.availableLeds", int[].class); @@ -3280,6 +3306,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ + @UnsupportedAppUsage public static final Key<android.hardware.camera2.params.StreamConfiguration[]> DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS = new Key<android.hardware.camera2.params.StreamConfiguration[]>("android.depth.availableDepthStreamConfigurations", android.hardware.camera2.params.StreamConfiguration[].class); @@ -3306,6 +3333,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CaptureRequest#SENSOR_FRAME_DURATION * @hide */ + @UnsupportedAppUsage public static final Key<android.hardware.camera2.params.StreamConfigurationDuration[]> DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS = new Key<android.hardware.camera2.params.StreamConfigurationDuration[]>("android.depth.availableDepthMinFrameDurations", android.hardware.camera2.params.StreamConfigurationDuration[].class); @@ -3329,6 +3357,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ + @UnsupportedAppUsage public static final Key<android.hardware.camera2.params.StreamConfigurationDuration[]> DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS = new Key<android.hardware.camera2.params.StreamConfigurationDuration[]>("android.depth.availableDepthStallDurations", android.hardware.camera2.params.StreamConfigurationDuration[].class); @@ -3372,6 +3401,7 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL * @hide */ + @UnsupportedAppUsage public static final Key<byte[]> LOGICAL_MULTI_CAMERA_PHYSICAL_IDS = new Key<byte[]>("android.logicalMultiCamera.physicalIds", byte[].class); diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java index 411a97e3eca4..66ce2d00fe08 100644 --- a/core/java/android/hardware/camera2/CaptureRequest.java +++ b/core/java/android/hardware/camera2/CaptureRequest.java @@ -18,6 +18,7 @@ package android.hardware.camera2; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.hardware.camera2.impl.CameraMetadataNative; import android.hardware.camera2.impl.PublicKey; import android.hardware.camera2.impl.SyntheticKey; @@ -107,6 +108,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * * @hide */ + @UnsupportedAppUsage public Key(String name, Class<T> type, long vendorId) { mKey = new CameraMetadataNative.Key<T>(name, type, vendorId); } @@ -116,6 +118,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * * @hide */ + @UnsupportedAppUsage public Key(String name, Class<T> type) { mKey = new CameraMetadataNative.Key<T>(name, type); } @@ -125,6 +128,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * * @hide */ + @UnsupportedAppUsage public Key(String name, TypeReference<T> typeReference) { mKey = new CameraMetadataNative.Key<T>(name, typeReference); } @@ -194,6 +198,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * * @hide */ + @UnsupportedAppUsage public CameraMetadataNative.Key<T> getNativeKey() { return mKey; } @@ -223,6 +228,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> private static final ArraySet<Surface> mEmptySurfaceSet = new ArraySet<Surface>(); private String mLogicalCameraId; + @UnsupportedAppUsage private CameraMetadataNative mLogicalCameraSettings; private final HashMap<String, CameraMetadataNative> mPhysicalCameraSettings = new HashMap<String, CameraMetadataNative>(); @@ -598,6 +604,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> /** * @hide */ + @UnsupportedAppUsage public Collection<Surface> getTargets() { return Collections.unmodifiableCollection(mSurfaceSet); } @@ -886,6 +893,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * * @hide */ + @UnsupportedAppUsage public void setPartOfCHSRequestList(boolean partOfCHSList) { mRequest.mIsPartOfCHSRequestList = partOfCHSList; } @@ -2072,6 +2080,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>This key is available on all devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<double[]> JPEG_GPS_COORDINATES = new Key<double[]>("android.jpeg.gpsCoordinates", double[].class); @@ -2082,6 +2091,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>This key is available on all devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<String> JPEG_GPS_PROCESSING_METHOD = new Key<String>("android.jpeg.gpsProcessingMethod", String.class); @@ -2092,6 +2102,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p>This key is available on all devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<Long> JPEG_GPS_TIMESTAMP = new Key<Long>("android.jpeg.gpsTimestamp", long.class); @@ -2427,6 +2438,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<Integer> REQUEST_ID = new Key<Integer>("android.request.id", int.class); @@ -2818,6 +2830,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * @see CaptureRequest#TONEMAP_MODE * @hide */ + @UnsupportedAppUsage public static final Key<float[]> TONEMAP_CURVE_BLUE = new Key<float[]>("android.tonemap.curveBlue", float[].class); @@ -2835,6 +2848,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * @see CaptureRequest#TONEMAP_MODE * @hide */ + @UnsupportedAppUsage public static final Key<float[]> TONEMAP_CURVE_GREEN = new Key<float[]>("android.tonemap.curveGreen", float[].class); @@ -2897,6 +2911,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * @see CaptureRequest#TONEMAP_MODE * @hide */ + @UnsupportedAppUsage public static final Key<float[]> TONEMAP_CURVE_RED = new Key<float[]>("android.tonemap.curveRed", float[].class); @@ -3071,6 +3086,7 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<Boolean> LED_TRANSMIT = new Key<Boolean>("android.led.transmit", boolean.class); diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java index 6439338428ee..db080ca11334 100644 --- a/core/java/android/hardware/camera2/CaptureResult.java +++ b/core/java/android/hardware/camera2/CaptureResult.java @@ -18,6 +18,7 @@ package android.hardware.camera2; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.hardware.camera2.impl.CameraMetadataNative; import android.hardware.camera2.impl.CaptureResultExtras; import android.hardware.camera2.impl.PublicKey; @@ -78,6 +79,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * * @hide */ + @UnsupportedAppUsage public Key(String name, Class<T> type, long vendorId) { mKey = new CameraMetadataNative.Key<T>(name, type, vendorId); } @@ -96,6 +98,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * * @hide */ + @UnsupportedAppUsage public Key(String name, Class<T> type) { mKey = new CameraMetadataNative.Key<T>(name, type); } @@ -105,6 +108,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * * @hide */ + @UnsupportedAppUsage public Key(String name, TypeReference<T> typeReference) { mKey = new CameraMetadataNative.Key<T>(name, typeReference); } @@ -174,6 +178,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * * @hide */ + @UnsupportedAppUsage public CameraMetadataNative.Key<T> getNativeKey() { return mKey; } @@ -184,6 +189,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { } } + @UnsupportedAppUsage private final CameraMetadataNative mResults; private final CaptureRequest mRequest; private final int mSequenceId; @@ -2398,6 +2404,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>This key is available on all devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<double[]> JPEG_GPS_COORDINATES = new Key<double[]>("android.jpeg.gpsCoordinates", double[].class); @@ -2408,6 +2415,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>This key is available on all devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<String> JPEG_GPS_PROCESSING_METHOD = new Key<String>("android.jpeg.gpsProcessingMethod", String.class); @@ -2418,6 +2426,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>This key is available on all devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<Long> JPEG_GPS_TIMESTAMP = new Key<Long>("android.jpeg.gpsTimestamp", long.class); @@ -3044,6 +3053,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @hide */ @Deprecated + @UnsupportedAppUsage public static final Key<Boolean> QUIRKS_PARTIAL_RESULT = new Key<Boolean>("android.quirks.partialResult", boolean.class); @@ -3062,6 +3072,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @hide */ @Deprecated + @UnsupportedAppUsage public static final Key<Integer> REQUEST_FRAME_COUNT = new Key<Integer>("android.request.frameCount", int.class); @@ -3075,6 +3086,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<Integer> REQUEST_ID = new Key<Integer>("android.request.id", int.class); @@ -3618,6 +3630,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE * @hide */ + @UnsupportedAppUsage public static final Key<int[]> STATISTICS_FACE_IDS = new Key<int[]>("android.statistics.faceIds", int[].class); @@ -3633,6 +3646,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE * @hide */ + @UnsupportedAppUsage public static final Key<int[]> STATISTICS_FACE_LANDMARKS = new Key<int[]>("android.statistics.faceLandmarks", int[].class); @@ -3648,6 +3662,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE * @hide */ + @UnsupportedAppUsage public static final Key<android.graphics.Rect[]> STATISTICS_FACE_RECTANGLES = new Key<android.graphics.Rect[]>("android.statistics.faceRectangles", android.graphics.Rect[].class); @@ -3662,6 +3677,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE * @hide */ + @UnsupportedAppUsage public static final Key<byte[]> STATISTICS_FACE_SCORES = new Key<byte[]>("android.statistics.faceScores", byte[].class); @@ -3821,6 +3837,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @see CameraCharacteristics#SENSOR_INFO_LENS_SHADING_APPLIED * @hide */ + @UnsupportedAppUsage public static final Key<float[]> STATISTICS_LENS_SHADING_MAP = new Key<float[]>("android.statistics.lensShadingMap", float[].class); @@ -3844,6 +3861,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @hide */ @Deprecated + @UnsupportedAppUsage public static final Key<float[]> STATISTICS_PREDICTED_COLOR_GAINS = new Key<float[]>("android.statistics.predictedColorGains", float[].class); @@ -3870,6 +3888,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @hide */ @Deprecated + @UnsupportedAppUsage public static final Key<Rational[]> STATISTICS_PREDICTED_COLOR_TRANSFORM = new Key<Rational[]>("android.statistics.predictedColorTransform", Rational[].class); @@ -4006,6 +4025,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @see CaptureResult#SENSOR_TIMESTAMP * @hide */ + @UnsupportedAppUsage public static final Key<long[]> STATISTICS_OIS_TIMESTAMPS = new Key<long[]>("android.statistics.oisTimestamps", long[].class); @@ -4021,6 +4041,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<float[]> STATISTICS_OIS_X_SHIFTS = new Key<float[]>("android.statistics.oisXShifts", float[].class); @@ -4036,6 +4057,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<float[]> STATISTICS_OIS_Y_SHIFTS = new Key<float[]>("android.statistics.oisYShifts", float[].class); @@ -4070,6 +4092,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @see CaptureRequest#TONEMAP_MODE * @hide */ + @UnsupportedAppUsage public static final Key<float[]> TONEMAP_CURVE_BLUE = new Key<float[]>("android.tonemap.curveBlue", float[].class); @@ -4087,6 +4110,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @see CaptureRequest#TONEMAP_MODE * @hide */ + @UnsupportedAppUsage public static final Key<float[]> TONEMAP_CURVE_GREEN = new Key<float[]>("android.tonemap.curveGreen", float[].class); @@ -4149,6 +4173,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @see CaptureRequest#TONEMAP_MODE * @hide */ + @UnsupportedAppUsage public static final Key<float[]> TONEMAP_CURVE_RED = new Key<float[]>("android.tonemap.curveRed", float[].class); @@ -4323,6 +4348,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @hide */ + @UnsupportedAppUsage public static final Key<Boolean> LED_TRANSMIT = new Key<Boolean>("android.led.transmit", boolean.class); @@ -4412,6 +4438,7 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * @see #SYNC_FRAME_NUMBER_UNKNOWN * @hide */ + @UnsupportedAppUsage public static final Key<Long> SYNC_FRAME_NUMBER = new Key<Long>("android.sync.frameNumber", long.class); diff --git a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java index 4baf2638d888..8a2a29fa4d5f 100644 --- a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java +++ b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java @@ -16,6 +16,7 @@ package android.hardware.camera2.impl; +import android.annotation.UnsupportedAppUsage; import android.graphics.ImageFormat; import android.graphics.Point; import android.graphics.Rect; @@ -231,6 +232,7 @@ public class CameraMetadataNative implements Parcelable { * * @return The tag numeric value corresponding to the string */ + @UnsupportedAppUsage public final int getTag() { if (!mHasTag) { mTag = CameraMetadataNative.getTag(mName, mVendorId); @@ -1185,6 +1187,7 @@ public class CameraMetadataNative implements Parcelable { return true; } + @UnsupportedAppUsage private long mMetadataPtr; // native CameraMetadata* private native long nativeAllocate(); @@ -1199,13 +1202,16 @@ public class CameraMetadataNative implements Parcelable { private native synchronized boolean nativeIsEmpty(); private native synchronized int nativeGetEntryCount(); + @UnsupportedAppUsage private native synchronized byte[] nativeReadValues(int tag); private native synchronized void nativeWriteValues(int tag, byte[] src); private native synchronized void nativeDump() throws IOException; // dump to ALOGD private native synchronized ArrayList nativeGetAllVendorKeys(Class keyClass); + @UnsupportedAppUsage private native synchronized int nativeGetTagFromKeyLocal(String keyName) throws IllegalArgumentException; + @UnsupportedAppUsage private native synchronized int nativeGetTypeFromTagLocal(int tag) throws IllegalArgumentException; private static native int nativeGetTagFromKey(String keyName, long vendorId) diff --git a/core/java/android/hardware/camera2/utils/SurfaceUtils.java b/core/java/android/hardware/camera2/utils/SurfaceUtils.java index 92478441aea3..d3c4505c37f0 100644 --- a/core/java/android/hardware/camera2/utils/SurfaceUtils.java +++ b/core/java/android/hardware/camera2/utils/SurfaceUtils.java @@ -16,6 +16,7 @@ package android.hardware.camera2.utils; +import android.annotation.UnsupportedAppUsage; import android.graphics.ImageFormat; import android.hardware.camera2.legacy.LegacyCameraDevice; import android.hardware.camera2.legacy.LegacyExceptionUtils.BufferQueueAbandonedException; @@ -77,6 +78,7 @@ public class SurfaceUtils { * * @throws IllegalArgumentException if the surface is already abandoned. */ + @UnsupportedAppUsage public static Size getSurfaceSize(Surface surface) { try { return LegacyCameraDevice.getSurfaceSize(surface); diff --git a/core/java/android/hardware/camera2/utils/TypeReference.java b/core/java/android/hardware/camera2/utils/TypeReference.java index 24ce12413882..d9ba31b4c6f4 100644 --- a/core/java/android/hardware/camera2/utils/TypeReference.java +++ b/core/java/android/hardware/camera2/utils/TypeReference.java @@ -16,6 +16,7 @@ package android.hardware.camera2.utils; +import android.annotation.UnsupportedAppUsage; import java.lang.reflect.Array; import java.lang.reflect.GenericArrayType; import java.lang.reflect.ParameterizedType; @@ -55,6 +56,7 @@ public abstract class TypeReference<T> { * * @see TypeReference */ + @UnsupportedAppUsage protected TypeReference() { ParameterizedType thisType = (ParameterizedType)getClass().getGenericSuperclass(); @@ -136,6 +138,7 @@ public abstract class TypeReference<T> { * * @throws IllegalArgumentException if {@code type} had any type variables */ + @UnsupportedAppUsage public static TypeReference<?> createSpecializedTypeReference(Type type) { return new SpecializedBaseTypeReference(type); } diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java index b182fa2e8ad3..e700cac9c07a 100644 --- a/core/java/android/hardware/display/DisplayManager.java +++ b/core/java/android/hardware/display/DisplayManager.java @@ -23,6 +23,7 @@ import android.annotation.RequiresPermission; import android.annotation.SystemApi; import android.annotation.SystemService; import android.annotation.TestApi; +import android.annotation.UnsupportedAppUsage; import android.app.KeyguardManager; import android.content.Context; import android.graphics.Point; @@ -62,6 +63,7 @@ public final class DisplayManager { * </p> * @hide */ + @UnsupportedAppUsage public static final String ACTION_WIFI_DISPLAY_STATUS_CHANGED = "android.hardware.display.action.WIFI_DISPLAY_STATUS_CHANGED"; @@ -69,6 +71,7 @@ public final class DisplayManager { * Contains a {@link WifiDisplayStatus} object. * @hide */ + @UnsupportedAppUsage public static final String EXTRA_WIFI_DISPLAY_STATUS = "android.hardware.display.extra.WIFI_DISPLAY_STATUS"; @@ -437,6 +440,7 @@ public final class DisplayManager { * * @hide */ + @UnsupportedAppUsage public void startWifiDisplayScan() { mGlobal.startWifiDisplayScan(); } @@ -449,6 +453,7 @@ public final class DisplayManager { * * @hide */ + @UnsupportedAppUsage public void stopWifiDisplayScan() { mGlobal.stopWifiDisplayScan(); } @@ -466,16 +471,19 @@ public final class DisplayManager { * @param deviceAddress The MAC address of the device to which we should connect. * @hide */ + @UnsupportedAppUsage public void connectWifiDisplay(String deviceAddress) { mGlobal.connectWifiDisplay(deviceAddress); } /** @hide */ + @UnsupportedAppUsage public void pauseWifiDisplay() { mGlobal.pauseWifiDisplay(); } /** @hide */ + @UnsupportedAppUsage public void resumeWifiDisplay() { mGlobal.resumeWifiDisplay(); } @@ -485,6 +493,7 @@ public final class DisplayManager { * The results are sent as a {@link #ACTION_WIFI_DISPLAY_STATUS_CHANGED} broadcast. * @hide */ + @UnsupportedAppUsage public void disconnectWifiDisplay() { mGlobal.disconnectWifiDisplay(); } @@ -504,6 +513,7 @@ public final class DisplayManager { * or empty if no alias should be used. * @hide */ + @UnsupportedAppUsage public void renameWifiDisplay(String deviceAddress, String alias) { mGlobal.renameWifiDisplay(deviceAddress, alias); } @@ -519,6 +529,7 @@ public final class DisplayManager { * @param deviceAddress The MAC address of the device to forget. * @hide */ + @UnsupportedAppUsage public void forgetWifiDisplay(String deviceAddress) { mGlobal.forgetWifiDisplay(deviceAddress); } @@ -531,6 +542,7 @@ public final class DisplayManager { * @return The current Wifi display status. * @hide */ + @UnsupportedAppUsage public WifiDisplayStatus getWifiDisplayStatus() { return mGlobal.getWifiDisplayStatus(); } diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java index d968a3e942bb..7304ab4aa1df 100644 --- a/core/java/android/hardware/display/DisplayManagerGlobal.java +++ b/core/java/android/hardware/display/DisplayManagerGlobal.java @@ -16,6 +16,7 @@ package android.hardware.display; +import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.content.pm.ParceledListSlice; import android.content.res.Resources; @@ -66,10 +67,12 @@ public final class DisplayManagerGlobal { public static final int EVENT_DISPLAY_CHANGED = 2; public static final int EVENT_DISPLAY_REMOVED = 3; + @UnsupportedAppUsage private static DisplayManagerGlobal sInstance; private final Object mLock = new Object(); + @UnsupportedAppUsage private final IDisplayManager mDm; private DisplayManagerCallback mCallback; @@ -91,6 +94,7 @@ public final class DisplayManagerGlobal { * @return The display manager instance, may be null early in system startup * before the display manager has been fully initialized. */ + @UnsupportedAppUsage public static DisplayManagerGlobal getInstance() { synchronized (DisplayManagerGlobal.class) { if (sInstance == null) { @@ -110,6 +114,7 @@ public final class DisplayManagerGlobal { * @return Information about the specified display, or null if it does not exist. * This object belongs to an internal cache and should be treated as if it were immutable. */ + @UnsupportedAppUsage public DisplayInfo getDisplayInfo(int displayId) { try { synchronized (mLock) { @@ -146,6 +151,7 @@ public final class DisplayManagerGlobal { * * @return An array containing all display ids. */ + @UnsupportedAppUsage public int[] getDisplayIds() { try { synchronized (mLock) { @@ -209,6 +215,7 @@ public final class DisplayManagerGlobal { * @param displayId The logical display id. * @return The display object, or null if there is no display with the given id. */ + @UnsupportedAppUsage public Display getRealDisplay(int displayId) { return getCompatibleDisplay(displayId, DisplayAdjustments.DEFAULT_DISPLAY_ADJUSTMENTS); } @@ -337,6 +344,7 @@ public final class DisplayManagerGlobal { } } + @UnsupportedAppUsage public void disconnectWifiDisplay() { try { mDm.disconnectWifiDisplay(); @@ -369,6 +377,7 @@ public final class DisplayManagerGlobal { } } + @UnsupportedAppUsage public WifiDisplayStatus getWifiDisplayStatus() { try { return mDm.getWifiDisplayStatus(); diff --git a/core/java/android/hardware/display/WifiDisplay.java b/core/java/android/hardware/display/WifiDisplay.java index bb32c199993b..12486e871c33 100644 --- a/core/java/android/hardware/display/WifiDisplay.java +++ b/core/java/android/hardware/display/WifiDisplay.java @@ -16,6 +16,7 @@ package android.hardware.display; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -76,6 +77,7 @@ public final class WifiDisplay implements Parcelable { /** * Gets the MAC address of the Wifi display device. */ + @UnsupportedAppUsage public String getDeviceAddress() { return mDeviceAddress; } @@ -83,6 +85,7 @@ public final class WifiDisplay implements Parcelable { /** * Gets the name of the Wifi display device. */ + @UnsupportedAppUsage public String getDeviceName() { return mDeviceName; } @@ -94,6 +97,7 @@ public final class WifiDisplay implements Parcelable { * provided by the user when renaming the device. * </p> */ + @UnsupportedAppUsage public String getDeviceAlias() { return mDeviceAlias; } @@ -101,6 +105,7 @@ public final class WifiDisplay implements Parcelable { /** * Returns true if device is available, false otherwise. */ + @UnsupportedAppUsage public boolean isAvailable() { return mIsAvailable; } @@ -108,6 +113,7 @@ public final class WifiDisplay implements Parcelable { /** * Returns true if device can be connected to (not in use), false otherwise. */ + @UnsupportedAppUsage public boolean canConnect() { return mCanConnect; } @@ -115,6 +121,7 @@ public final class WifiDisplay implements Parcelable { /** * Returns true if device has been remembered, false otherwise. */ + @UnsupportedAppUsage public boolean isRemembered() { return mIsRemembered; } @@ -136,6 +143,7 @@ public final class WifiDisplay implements Parcelable { * Returns true if the two displays have the same identity (address, name and alias). * This method does not compare the current status of the displays. */ + @UnsupportedAppUsage public boolean equals(WifiDisplay other) { return other != null && mDeviceAddress.equals(other.mDeviceAddress) diff --git a/core/java/android/hardware/display/WifiDisplayStatus.java b/core/java/android/hardware/display/WifiDisplayStatus.java index b645662f3095..c2678341128b 100644 --- a/core/java/android/hardware/display/WifiDisplayStatus.java +++ b/core/java/android/hardware/display/WifiDisplayStatus.java @@ -16,6 +16,7 @@ package android.hardware.display; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -34,7 +35,9 @@ public final class WifiDisplayStatus implements Parcelable { private final int mFeatureState; private final int mScanState; private final int mActiveDisplayState; + @UnsupportedAppUsage private final WifiDisplay mActiveDisplay; + @UnsupportedAppUsage private final WifiDisplay[] mDisplays; /** Session info needed for Miracast Certification */ @@ -47,18 +50,23 @@ public final class WifiDisplayStatus implements Parcelable { /** Feature state: Wifi display is turned off in settings. */ public static final int FEATURE_STATE_OFF = 2; /** Feature state: Wifi display is turned on in settings. */ + @UnsupportedAppUsage public static final int FEATURE_STATE_ON = 3; /** Scan state: Not currently scanning. */ + @UnsupportedAppUsage public static final int SCAN_STATE_NOT_SCANNING = 0; /** Scan state: Currently scanning. */ public static final int SCAN_STATE_SCANNING = 1; /** Display state: Not connected. */ + @UnsupportedAppUsage public static final int DISPLAY_STATE_NOT_CONNECTED = 0; /** Display state: Connecting to active display. */ + @UnsupportedAppUsage public static final int DISPLAY_STATE_CONNECTING = 1; /** Display state: Connected to active display. */ + @UnsupportedAppUsage public static final int DISPLAY_STATE_CONNECTED = 2; public static final Creator<WifiDisplayStatus> CREATOR = new Creator<WifiDisplayStatus>() { @@ -117,6 +125,7 @@ public final class WifiDisplayStatus implements Parcelable { * connecting to displays have been met. * </p> */ + @UnsupportedAppUsage public int getFeatureState() { return mFeatureState; } @@ -126,6 +135,7 @@ public final class WifiDisplayStatus implements Parcelable { * * @return One of: {@link #SCAN_STATE_NOT_SCANNING} or {@link #SCAN_STATE_SCANNING}. */ + @UnsupportedAppUsage public int getScanState() { return mScanState; } @@ -136,6 +146,7 @@ public final class WifiDisplayStatus implements Parcelable { * @return One of: {@link #DISPLAY_STATE_NOT_CONNECTED}, {@link #DISPLAY_STATE_CONNECTING}, * or {@link #DISPLAY_STATE_CONNECTED}. */ + @UnsupportedAppUsage public int getActiveDisplayState() { return mActiveDisplayState; } @@ -144,6 +155,7 @@ public final class WifiDisplayStatus implements Parcelable { * Gets the Wifi display that is currently active. It may be connecting or * connected. */ + @UnsupportedAppUsage public WifiDisplay getActiveDisplay() { return mActiveDisplay; } @@ -153,6 +165,7 @@ public final class WifiDisplayStatus implements Parcelable { * Wifi displays as reported by the most recent scan, and all remembered * Wifi displays (not necessarily available at the time). */ + @UnsupportedAppUsage public WifiDisplay[] getDisplays() { return mDisplays; } diff --git a/core/java/android/hardware/fingerprint/Fingerprint.java b/core/java/android/hardware/fingerprint/Fingerprint.java index c7ce8fad2543..66f43f2342e6 100644 --- a/core/java/android/hardware/fingerprint/Fingerprint.java +++ b/core/java/android/hardware/fingerprint/Fingerprint.java @@ -15,6 +15,7 @@ */ package android.hardware.fingerprint; +import android.annotation.UnsupportedAppUsage; import android.hardware.biometrics.BiometricAuthenticator; import android.os.Parcel; import android.os.Parcelable; @@ -47,6 +48,7 @@ public final class Fingerprint extends BiometricAuthenticator.BiometricIdentifie * Gets the human-readable name for the given fingerprint. * @return name given to finger */ + @UnsupportedAppUsage public CharSequence getName() { return mName; } /** @@ -55,6 +57,7 @@ public final class Fingerprint extends BiometricAuthenticator.BiometricIdentifie * @return device-specific id for this finger * @hide */ + @UnsupportedAppUsage public int getFingerId() { return mFingerId; } /** diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java index ebbfe1c26a9c..74858e46ceba 100644 --- a/core/java/android/hardware/fingerprint/FingerprintManager.java +++ b/core/java/android/hardware/fingerprint/FingerprintManager.java @@ -27,6 +27,7 @@ import android.annotation.Nullable; import android.annotation.RequiresFeature; import android.annotation.RequiresPermission; import android.annotation.SystemService; +import android.annotation.UnsupportedAppUsage; import android.app.ActivityManager; import android.content.Context; import android.content.pm.PackageManager; @@ -188,6 +189,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { * * @hide */ + @UnsupportedAppUsage public Fingerprint getFingerprint() { return mFingerprint; } /** @@ -718,6 +720,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { * @hide */ @RequiresPermission(USE_FINGERPRINT) + @UnsupportedAppUsage public List<Fingerprint> getEnrolledFingerprints(int userId) { if (mService != null) try { return mService.getEnrolledFingerprints(userId, mContext.getOpPackageName()); @@ -734,6 +737,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { * @hide */ @RequiresPermission(USE_FINGERPRINT) + @UnsupportedAppUsage public List<Fingerprint> getEnrolledFingerprints() { return getEnrolledFingerprints(mContext.getUserId()); } @@ -801,6 +805,7 @@ public class FingerprintManager implements BiometricFingerprintConstants { * * @hide */ + @UnsupportedAppUsage public long getAuthenticatorId() { if (mService != null) { try { diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java index 6ae7a146a7b7..6ed50909a445 100644 --- a/core/java/android/hardware/input/InputManager.java +++ b/core/java/android/hardware/input/InputManager.java @@ -20,6 +20,7 @@ import android.annotation.IntDef; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SystemService; +import android.annotation.UnsupportedAppUsage; import android.app.IInputForwarder; import android.content.Context; import android.media.AudioAttributes; @@ -64,6 +65,7 @@ public final class InputManager { private static InputManager sInstance; + @UnsupportedAppUsage private final IInputManager mIm; // Guarded by mInputDevicesLock @@ -181,6 +183,7 @@ public final class InputManager { * Waits for the event to be delivered to the application and handled. * @hide */ + @UnsupportedAppUsage public static final int INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH = 2; // see InputDispatcher.h /** @hide */ @@ -223,6 +226,7 @@ public final class InputManager { * * @hide */ + @UnsupportedAppUsage public static InputManager getInstance() { synchronized (InputManager.class) { if (sInstance == null) { @@ -866,6 +870,7 @@ public final class InputManager { * * @hide */ + @UnsupportedAppUsage public boolean injectInputEvent(InputEvent event, int mode) { if (event == null) { throw new IllegalArgumentException("event must not be null"); @@ -891,6 +896,7 @@ public final class InputManager { * * @hide */ + @UnsupportedAppUsage public void setPointerIconType(int iconId) { try { mIm.setPointerIconType(iconId); @@ -938,6 +944,7 @@ public final class InputManager { * * @hide */ + @UnsupportedAppUsage public IInputForwarder createInputForwarder(int displayId) { try { return mIm.createInputForwarder(displayId); diff --git a/core/java/android/hardware/location/GeofenceHardware.java b/core/java/android/hardware/location/GeofenceHardware.java index 66dd9fce8fa3..23d8d01dbe9d 100644 --- a/core/java/android/hardware/location/GeofenceHardware.java +++ b/core/java/android/hardware/location/GeofenceHardware.java @@ -16,6 +16,7 @@ package android.hardware.location; import android.annotation.SystemApi; +import android.annotation.UnsupportedAppUsage; import android.location.Location; import android.os.Build; import android.os.RemoteException; @@ -168,6 +169,7 @@ public final class GeofenceHardware { GeofenceHardwareMonitorCallbackWrapper>(); /** @hide */ + @UnsupportedAppUsage public GeofenceHardware(IGeofenceHardware service) { mService = service; } diff --git a/core/java/android/hardware/soundtrigger/SoundTrigger.java b/core/java/android/hardware/soundtrigger/SoundTrigger.java index dde8a3327172..007f4bcd43fc 100644 --- a/core/java/android/hardware/soundtrigger/SoundTrigger.java +++ b/core/java/android/hardware/soundtrigger/SoundTrigger.java @@ -24,6 +24,7 @@ import static android.system.OsConstants.EPIPE; import android.annotation.Nullable; import android.annotation.SystemApi; +import android.annotation.UnsupportedAppUsage; import android.media.AudioFormat; import android.os.Handler; import android.os.Parcel; @@ -72,6 +73,7 @@ public class SoundTrigger { ****************************************************************************/ public static class ModuleProperties implements Parcelable { /** Unique module ID provided by the native service */ + @UnsupportedAppUsage public final int id; /** human readable voice detection engine implementor */ @@ -81,12 +83,14 @@ public class SoundTrigger { public final String description; /** Unique voice engine Id (changes with each version) */ + @UnsupportedAppUsage public final UUID uuid; /** Voice detection engine version */ public final int version; /** Maximum number of active sound models */ + @UnsupportedAppUsage public final int maxSoundModels; /** Maximum number of key phrases */ @@ -114,6 +118,7 @@ public class SoundTrigger { * recognition callback event */ public final boolean returnsTriggerInEvent; + @UnsupportedAppUsage ModuleProperties(int id, String implementor, String description, String uuid, int version, int maxSoundModels, int maxKeyphrases, int maxUsers, int recognitionModes, boolean supportsCaptureTransition, @@ -225,15 +230,18 @@ public class SoundTrigger { public static final int TYPE_GENERIC_SOUND = 1; /** Unique sound model identifier */ + @UnsupportedAppUsage public final UUID uuid; /** Sound model type (e.g. TYPE_KEYPHRASE); */ public final int type; /** Unique sound model vendor identifier */ + @UnsupportedAppUsage public final UUID vendorUuid; /** Opaque data. For use by vendor implementation and enrollment application */ + @UnsupportedAppUsage public final byte[] data; public SoundModel(UUID uuid, UUID vendorUuid, int type, byte[] data) { @@ -289,21 +297,27 @@ public class SoundTrigger { ****************************************************************************/ public static class Keyphrase implements Parcelable { /** Unique identifier for this keyphrase */ + @UnsupportedAppUsage public final int id; /** Recognition modes supported for this key phrase in the model */ + @UnsupportedAppUsage public final int recognitionModes; /** Locale of the keyphrase. JAVA Locale string e.g en_US */ + @UnsupportedAppUsage public final String locale; /** Key phrase text */ + @UnsupportedAppUsage public final String text; /** Users this key phrase has been trained for. countains sound trigger specific user IDs * derived from system user IDs {@link android.os.UserHandle#getIdentifier()}. */ + @UnsupportedAppUsage public final int[] users; + @UnsupportedAppUsage public Keyphrase(int id, int recognitionModes, String locale, String text, int[] users) { this.id = id; this.recognitionModes = recognitionModes; @@ -412,8 +426,10 @@ public class SoundTrigger { ****************************************************************************/ public static class KeyphraseSoundModel extends SoundModel implements Parcelable { /** Key phrases in this sound model */ + @UnsupportedAppUsage public final Keyphrase[] keyphrases; // keyword phrases in model + @UnsupportedAppUsage public KeyphraseSoundModel( UUID uuid, UUID vendorUuid, byte[] data, Keyphrase[] keyphrases) { super(uuid, vendorUuid, TYPE_KEYPHRASE, data); @@ -511,6 +527,7 @@ public class SoundTrigger { } }; + @UnsupportedAppUsage public GenericSoundModel(UUID uuid, UUID vendorUuid, byte[] data) { super(uuid, vendorUuid, TYPE_GENERIC_SOUND, data); } @@ -606,6 +623,7 @@ public class SoundTrigger { * * @hide */ + @UnsupportedAppUsage public final int status; /** * @@ -613,12 +631,14 @@ public class SoundTrigger { * * @hide */ + @UnsupportedAppUsage public final int soundModelHandle; /** * True if it is possible to capture audio from this utterance buffered by the hardware * * @hide */ + @UnsupportedAppUsage public final boolean captureAvailable; /** * Audio session ID to be used when capturing the utterance with an AudioRecord @@ -626,6 +646,7 @@ public class SoundTrigger { * * @hide */ + @UnsupportedAppUsage public final int captureSession; /** * Delay in ms between end of model detection and start of audio available for capture. @@ -659,9 +680,11 @@ public class SoundTrigger { * * @hide */ + @UnsupportedAppUsage public final byte[] data; /** @hide */ + @UnsupportedAppUsage public RecognitionEvent(int status, int soundModelHandle, boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, AudioFormat captureFormat, byte[] data) { @@ -865,6 +888,7 @@ public class SoundTrigger { public static class RecognitionConfig implements Parcelable { /** True if the DSP should capture the trigger sound and make it available for further * capture. */ + @UnsupportedAppUsage public final boolean captureRequested; /** * True if the service should restart listening after the DSP triggers. @@ -873,11 +897,14 @@ public class SoundTrigger { public final boolean allowMultipleTriggers; /** List of all keyphrases in the sound model for which recognition should be performed with * options for each keyphrase. */ + @UnsupportedAppUsage public final KeyphraseRecognitionExtra keyphrases[]; /** Opaque data for use by system applications who know about voice engine internals, * typically during enrollment. */ + @UnsupportedAppUsage public final byte[] data; + @UnsupportedAppUsage public RecognitionConfig(boolean captureRequested, boolean allowMultipleTriggers, KeyphraseRecognitionExtra[] keyphrases, byte[] data) { this.captureRequested = captureRequested; @@ -938,9 +965,12 @@ public class SoundTrigger { * @hide */ public static class ConfidenceLevel implements Parcelable { + @UnsupportedAppUsage public final int userId; + @UnsupportedAppUsage public final int confidenceLevel; + @UnsupportedAppUsage public ConfidenceLevel(int userId, int confidenceLevel) { this.userId = userId; this.confidenceLevel = confidenceLevel; @@ -1014,19 +1044,24 @@ public class SoundTrigger { */ public static class KeyphraseRecognitionExtra implements Parcelable { /** The keyphrase ID */ + @UnsupportedAppUsage public final int id; /** Recognition modes matched for this event */ + @UnsupportedAppUsage public final int recognitionModes; /** Confidence level for mode RECOGNITION_MODE_VOICE_TRIGGER when user identification * is not performed */ + @UnsupportedAppUsage public final int coarseConfidenceLevel; /** Confidence levels for all users recognized (KeyphraseRecognitionEvent) or to * be recognized (RecognitionConfig) */ + @UnsupportedAppUsage public final ConfidenceLevel[] confidenceLevels; + @UnsupportedAppUsage public KeyphraseRecognitionExtra(int id, int recognitionModes, int coarseConfidenceLevel, ConfidenceLevel[] confidenceLevels) { this.id = id; @@ -1114,8 +1149,10 @@ public class SoundTrigger { */ public static class KeyphraseRecognitionEvent extends RecognitionEvent implements Parcelable { /** Indicates if the key phrase is present in the buffered audio available for capture */ + @UnsupportedAppUsage public final KeyphraseRecognitionExtra[] keyphraseExtras; + @UnsupportedAppUsage public KeyphraseRecognitionEvent(int status, int soundModelHandle, boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, AudioFormat captureFormat, byte[] data, @@ -1236,6 +1273,7 @@ public class SoundTrigger { * @hide */ public static class GenericRecognitionEvent extends RecognitionEvent implements Parcelable { + @UnsupportedAppUsage public GenericRecognitionEvent(int status, int soundModelHandle, boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, boolean triggerInData, AudioFormat captureFormat, @@ -1305,6 +1343,7 @@ public class SoundTrigger { /** New sound model data */ public final byte[] data; + @UnsupportedAppUsage SoundModelEvent(int status, int soundModelHandle, byte[] data) { this.status = status; this.soundModelHandle = soundModelHandle; @@ -1405,6 +1444,7 @@ public class SoundTrigger { * * @hide */ + @UnsupportedAppUsage public static native int listModules(ArrayList <ModuleProperties> modules); /** @@ -1418,6 +1458,7 @@ public class SoundTrigger { * * @hide */ + @UnsupportedAppUsage public static SoundTriggerModule attachModule(int moduleId, StatusListener listener, Handler handler) { diff --git a/core/java/android/hardware/soundtrigger/SoundTriggerModule.java b/core/java/android/hardware/soundtrigger/SoundTriggerModule.java index e23a2bb4a214..838765b67dff 100644 --- a/core/java/android/hardware/soundtrigger/SoundTriggerModule.java +++ b/core/java/android/hardware/soundtrigger/SoundTriggerModule.java @@ -16,6 +16,7 @@ package android.hardware.soundtrigger; +import android.annotation.UnsupportedAppUsage; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -28,8 +29,10 @@ import java.lang.ref.WeakReference; * @hide */ public class SoundTriggerModule { + @UnsupportedAppUsage private long mNativeContext; + @UnsupportedAppUsage private int mId; private NativeEventHandlerDelegate mEventHandlerDelegate; @@ -56,6 +59,7 @@ public class SoundTriggerModule { * Detach from this module. The {@link SoundTrigger.StatusListener} callback will not be called * anymore and associated resources will be released. * */ + @UnsupportedAppUsage public native void detach(); /** @@ -73,6 +77,7 @@ public class SoundTriggerModule { * service fails * - {@link SoundTrigger#STATUS_INVALID_OPERATION} if the call is out of sequence */ + @UnsupportedAppUsage public native int loadSoundModel(SoundTrigger.SoundModel model, int[] soundModelHandle); /** @@ -87,6 +92,7 @@ public class SoundTriggerModule { * - {@link SoundTrigger#STATUS_DEAD_OBJECT} if the binder transaction to the native * service fails */ + @UnsupportedAppUsage public native int unloadSoundModel(int soundModelHandle); /** @@ -106,6 +112,7 @@ public class SoundTriggerModule { * service fails * - {@link SoundTrigger#STATUS_INVALID_OPERATION} if the call is out of sequence */ + @UnsupportedAppUsage public native int startRecognition(int soundModelHandle, SoundTrigger.RecognitionConfig config); /** @@ -121,6 +128,7 @@ public class SoundTriggerModule { * service fails * - {@link SoundTrigger#STATUS_INVALID_OPERATION} if the call is out of sequence */ + @UnsupportedAppUsage public native int stopRecognition(int soundModelHandle); private class NativeEventHandlerDelegate { @@ -181,6 +189,7 @@ public class SoundTriggerModule { } @SuppressWarnings("unused") + @UnsupportedAppUsage private static void postEventFromNative(Object module_ref, int what, int arg1, int arg2, Object obj) { SoundTriggerModule module = (SoundTriggerModule)((WeakReference)module_ref).get(); diff --git a/core/java/android/hardware/usb/UsbDevice.java b/core/java/android/hardware/usb/UsbDevice.java index 1e983016aef2..26c5a9597571 100644 --- a/core/java/android/hardware/usb/UsbDevice.java +++ b/core/java/android/hardware/usb/UsbDevice.java @@ -18,6 +18,7 @@ package android.hardware.usb; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; import com.android.internal.util.Preconditions; @@ -60,6 +61,7 @@ public class UsbDevice implements Parcelable { private @Nullable Parcelable[] mConfigurations; /** All interfaces on the device. Initialized on first call to getInterfaceList */ + @UnsupportedAppUsage private @Nullable UsbInterface[] mInterfaces; /** diff --git a/core/java/android/hardware/usb/UsbDeviceConnection.java b/core/java/android/hardware/usb/UsbDeviceConnection.java index 9e5174ad93a8..71297c187e5c 100644 --- a/core/java/android/hardware/usb/UsbDeviceConnection.java +++ b/core/java/android/hardware/usb/UsbDeviceConnection.java @@ -20,6 +20,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; import android.annotation.SystemApi; +import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.os.Build; import android.os.ParcelFileDescriptor; @@ -46,6 +47,7 @@ public class UsbDeviceConnection { private Context mContext; // used by the JNI code + @UnsupportedAppUsage private long mNativeContext; private final CloseGuard mCloseGuard = CloseGuard.get(); diff --git a/core/java/android/hardware/usb/UsbManager.java b/core/java/android/hardware/usb/UsbManager.java index 46142e35038d..3141be4e9e97 100644 --- a/core/java/android/hardware/usb/UsbManager.java +++ b/core/java/android/hardware/usb/UsbManager.java @@ -25,6 +25,7 @@ import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SystemApi; import android.annotation.SystemService; +import android.annotation.UnsupportedAppUsage; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; @@ -87,6 +88,7 @@ public class UsbManager { * * {@hide} */ + @UnsupportedAppUsage public static final String ACTION_USB_STATE = "android.hardware.usb.action.USB_STATE"; @@ -163,6 +165,7 @@ public class UsbManager { * * {@hide} */ + @UnsupportedAppUsage public static final String USB_CONNECTED = "connected"; /** @@ -189,6 +192,7 @@ public class UsbManager { * * {@hide} */ + @UnsupportedAppUsage public static final String USB_DATA_UNLOCKED = "unlocked"; /** @@ -197,6 +201,7 @@ public class UsbManager { * * {@hide} */ + @UnsupportedAppUsage public static final String USB_FUNCTION_NONE = "none"; /** @@ -363,6 +368,7 @@ public class UsbManager { /** * {@hide} */ + @UnsupportedAppUsage public UsbManager(Context context, IUsbManager service) { mContext = context; mService = service; @@ -645,6 +651,7 @@ public class UsbManager { * {@hide} */ @Deprecated + @UnsupportedAppUsage public boolean isFunctionEnabled(String function) { try { return mService.isFunctionEnabled(function); @@ -693,6 +700,7 @@ public class UsbManager { * {@hide} */ @Deprecated + @UnsupportedAppUsage public void setCurrentFunction(String functions, boolean usbDataUnlocked) { try { mService.setCurrentFunction(functions, usbDataUnlocked); @@ -774,6 +782,7 @@ public class UsbManager { * * @hide */ + @UnsupportedAppUsage public UsbPort[] getPorts() { if (mService == null) { return null; @@ -793,6 +802,7 @@ public class UsbManager { * * @hide */ + @UnsupportedAppUsage public UsbPortStatus getPortStatus(UsbPort port) { Preconditions.checkNotNull(port, "port must not be null"); @@ -822,6 +832,7 @@ public class UsbManager { * * @hide */ + @UnsupportedAppUsage public void setPortRoles(UsbPort port, int powerRole, int dataRole) { Preconditions.checkNotNull(port, "port must not be null"); UsbPort.checkRoles(powerRole, dataRole); diff --git a/core/java/android/hardware/usb/UsbPortStatus.java b/core/java/android/hardware/usb/UsbPortStatus.java index 5c0e81ad0b27..2cd8209fccda 100644 --- a/core/java/android/hardware/usb/UsbPortStatus.java +++ b/core/java/android/hardware/usb/UsbPortStatus.java @@ -16,6 +16,7 @@ package android.hardware.usb; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -47,6 +48,7 @@ public final class UsbPortStatus implements Parcelable { * * @return True if there is anything connected to the port. */ + @UnsupportedAppUsage public boolean isConnected() { return mCurrentMode != 0; } @@ -57,6 +59,7 @@ public final class UsbPortStatus implements Parcelable { * @return The current mode: {@link UsbPort#MODE_DFP}, {@link UsbPort#MODE_UFP}, * or 0 if nothing is connected. */ + @UnsupportedAppUsage public int getCurrentMode() { return mCurrentMode; } @@ -67,6 +70,7 @@ public final class UsbPortStatus implements Parcelable { * @return The current power role: {@link UsbPort#POWER_ROLE_SOURCE}, * {@link UsbPort#POWER_ROLE_SINK}, or 0 if nothing is connected. */ + @UnsupportedAppUsage public int getCurrentPowerRole() { return mCurrentPowerRole; } @@ -77,6 +81,7 @@ public final class UsbPortStatus implements Parcelable { * @return The current data role: {@link UsbPort#DATA_ROLE_HOST}, * {@link UsbPort#DATA_ROLE_DEVICE}, or 0 if nothing is connected. */ + @UnsupportedAppUsage public int getCurrentDataRole() { return mCurrentDataRole; } @@ -90,12 +95,14 @@ public final class UsbPortStatus implements Parcelable { * @param dataRole The data role to check: either {@link UsbPort#DATA_ROLE_HOST} * or {@link UsbPort#DATA_ROLE_DEVICE}, or 0 if no data role. */ + @UnsupportedAppUsage public boolean isRoleCombinationSupported(int powerRole, int dataRole) { return (mSupportedRoleCombinations & UsbPort.combineRolesAsBit(powerRole, dataRole)) != 0; } /** @hide */ + @UnsupportedAppUsage public int getSupportedRoleCombinations() { return mSupportedRoleCombinations; } diff --git a/core/java/android/hardware/usb/UsbRequest.java b/core/java/android/hardware/usb/UsbRequest.java index f59c87eecfcb..7abf3e9bcc7a 100644 --- a/core/java/android/hardware/usb/UsbRequest.java +++ b/core/java/android/hardware/usb/UsbRequest.java @@ -17,6 +17,7 @@ package android.hardware.usb; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import android.os.Build; import android.util.Log; @@ -47,14 +48,17 @@ public class UsbRequest { static final int MAX_USBFS_BUFFER_SIZE = 16384; // used by the JNI code + @UnsupportedAppUsage private long mNativeContext; private UsbEndpoint mEndpoint; /** The buffer that is currently being read / written */ + @UnsupportedAppUsage private ByteBuffer mBuffer; /** The amount of data to read / write when using {@link #queue} */ + @UnsupportedAppUsage private int mLength; // for client use diff --git a/core/java/android/net/NetworkAgent.java b/core/java/android/net/NetworkAgent.java index 52a2354840c9..e6b3fa81777e 100644 --- a/core/java/android/net/NetworkAgent.java +++ b/core/java/android/net/NetworkAgent.java @@ -372,7 +372,7 @@ public abstract class NetworkAgent extends Handler { if (score < 0) { throw new IllegalArgumentException("Score must be >= 0"); } - queueOrSendMessage(EVENT_NETWORK_SCORE_CHANGED, new Integer(score)); + queueOrSendMessage(EVENT_NETWORK_SCORE_CHANGED, score, 0); } /** @@ -387,7 +387,7 @@ public abstract class NetworkAgent extends Handler { * {@link #saveAcceptUnvalidated} to respect the user's choice. */ public void explicitlySelected(boolean acceptUnvalidated) { - queueOrSendMessage(EVENT_SET_EXPLICITLY_SELECTED, acceptUnvalidated); + queueOrSendMessage(EVENT_SET_EXPLICITLY_SELECTED, acceptUnvalidated ? 1 : 0, 0); } /** diff --git a/core/java/android/os/BinderProxy.java b/core/java/android/os/BinderProxy.java index dc09c51f934f..e492f88d4329 100644 --- a/core/java/android/os/BinderProxy.java +++ b/core/java/android/os/BinderProxy.java @@ -240,6 +240,9 @@ public final class BinderProxy implements IBinder { } else { try { key = bp.getInterfaceDescriptor(); + if ((key == null || key.isEmpty()) && !bp.isBinderAlive()) { + key = "<proxy to dead node>"; + } } catch (Throwable t) { key = "<exception during getDescriptor>"; } diff --git a/core/java/android/os/HwBlob.java b/core/java/android/os/HwBlob.java index 405651e992a3..6a5bb1c0a988 100644 --- a/core/java/android/os/HwBlob.java +++ b/core/java/android/os/HwBlob.java @@ -232,6 +232,14 @@ public class HwBlob { * @throws IndexOutOfBoundsException when [offset, offset + sizeof(jstring)] is out of range */ public native final void putString(long offset, String x); + /** + * Writes a native handle (without duplicating the underlying file descriptors) at an offset. + * + * @param offset location to write value + * @param x a {@link NativeHandle} instance to write + * @throws IndexOutOfBoundsException when [offset, offset + sizeof(jobject)] is out of range + */ + public native final void putNativeHandle(long offset, NativeHandle x); /** * Put a boolean array contiguously at an offset in the blob. diff --git a/core/java/android/os/HwParcel.java b/core/java/android/os/HwParcel.java index 0eb62c95ed71..7a51db2dc5f9 100644 --- a/core/java/android/os/HwParcel.java +++ b/core/java/android/os/HwParcel.java @@ -115,6 +115,13 @@ public class HwParcel { * @param val to write */ public native final void writeString(String val); + /** + * Writes a native handle (without duplicating the underlying + * file descriptors) to the end of the parcel. + * + * @param val to write + */ + public native final void writeNativeHandle(NativeHandle val); /** * Writes an array of boolean values to the end of the parcel. @@ -159,6 +166,11 @@ public class HwParcel { * @param val to write */ private native final void writeStringVector(String[] val); + /** + * Writes an array of native handles to the end of the parcel. + * @param val array of {@link NativeHandle} objects to write + */ + private native final void writeNativeHandleVector(NativeHandle[] val); /** * Helper method to write a list of Booleans to val. @@ -267,6 +279,14 @@ public class HwParcel { } /** + * Helper method to write a list of native handles to the end of the parcel. + * @param val list of {@link NativeHandle} objects to write + */ + public final void writeNativeHandleVector(ArrayList<NativeHandle> val) { + writeNativeHandleVector(val.toArray(new NativeHandle[val.size()])); + } + + /** * Write a hwbinder object to the end of the parcel. * @param binder value to write */ @@ -328,6 +348,30 @@ public class HwParcel { * @throws IllegalArgumentException if the parcel has no more data */ public native final String readString(); + /** + * Reads a native handle (without duplicating the underlying file + * descriptors) from the parcel. These file descriptors will only + * be open for the duration that the binder window is open. If they + * are needed further, you must call {@link NativeHandle#dup()}. + * + * @return a {@link NativeHandle} instance parsed from the parcel + * @throws IllegalArgumentException if the parcel has no more data + */ + public native final NativeHandle readNativeHandle(); + /** + * Reads an embedded native handle (without duplicating the underlying + * file descriptors) from the parcel. These file descriptors will only + * be open for the duration that the binder window is open. If they + * are needed further, you must call {@link NativeHandle#dup()}. You + * do not need to call close on the NativeHandle returned from this. + * + * @param parentHandle handle from which to read the embedded object + * @param offset offset into parent + * @return a {@link NativeHandle} instance parsed from the parcel + * @throws IllegalArgumentException if the parcel has no more data + */ + public native final NativeHandle readEmbeddedNativeHandle( + long parentHandle, long offset); /** * Reads an array of boolean values from the parcel. @@ -377,6 +421,12 @@ public class HwParcel { * @throws IllegalArgumentException if the parcel has no more data */ private native final String[] readStringVectorAsArray(); + /** + * Reads an array of native handles from the parcel. + * @return array of {@link NativeHandle} objects + * @throws IllegalArgumentException if the parcel has no more data + */ + private native final NativeHandle[] readNativeHandleAsArray(); /** * Convenience method to read a Boolean vector as an ArrayList. @@ -465,6 +515,15 @@ public class HwParcel { } /** + * Convenience method to read a vector of native handles as an ArrayList. + * @return array of {@link NativeHandle} objects. + * @throws IllegalArgumentException if the parcel has no more data + */ + public final ArrayList<NativeHandle> readNativeHandleVector() { + return new ArrayList<NativeHandle>(Arrays.asList(readNativeHandleAsArray())); + } + + /** * Reads a strong binder value from the parcel. * @return binder object read from parcel or null if no binder can be read * @throws IllegalArgumentException if the parcel has no more data diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl index 31dbafad62e3..20ca19bc04aa 100644 --- a/core/java/android/os/INetworkManagementService.aidl +++ b/core/java/android/os/INetworkManagementService.aidl @@ -372,11 +372,6 @@ interface INetworkManagementService void stopClatd(String interfaceName); /** - * Determine whether the clatd (464xlat) service has been started on the given interface. - */ - boolean isClatdStarted(String interfaceName); - - /** * Start listening for mobile activity state changes. */ void registerNetworkActivityListener(INetworkActivityListener listener); diff --git a/core/java/android/os/NativeHandle.java b/core/java/android/os/NativeHandle.java new file mode 100644 index 000000000000..fbecc8ec1cd9 --- /dev/null +++ b/core/java/android/os/NativeHandle.java @@ -0,0 +1,194 @@ +/* + * Copyright (C) 2018 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.os; + +import android.annotation.NonNull; +import android.annotation.SystemApi; +import android.system.ErrnoException; +import android.system.Os; + +import java.io.Closeable; +import java.io.FileDescriptor; + +/** + * Collection representing a set of open file descriptors and an opaque data stream. + * + * @hide + */ +@SystemApi +public final class NativeHandle implements Closeable { + // whether this object owns mFds + private boolean mOwn = false; + private FileDescriptor[] mFds; + private int[] mInts; + + /** + * Constructs a {@link NativeHandle} object containing + * zero file descriptors and an empty data stream. + */ + public NativeHandle() { + this(new FileDescriptor[0], new int[0], false); + } + + /** + * Constructs a {@link NativeHandle} object containing the given + * {@link FileDescriptor} object and an empty data stream. + */ + public NativeHandle(@NonNull FileDescriptor descriptor, boolean own) { + this(new FileDescriptor[] {descriptor}, new int[0], own); + } + + /** + * Convenience method for creating a list of file descriptors. + * + * @hide + */ + private static FileDescriptor[] createFileDescriptorArray(@NonNull int[] fds) { + FileDescriptor[] list = new FileDescriptor[fds.length]; + for (int i = 0; i < fds.length; i++) { + FileDescriptor descriptor = new FileDescriptor(); + descriptor.setInt$(fds[i]); + list[i] = descriptor; + } + return list; + } + + /** + * Convenience method for instantiating a {@link NativeHandle} from JNI. It does + * not take ownership of the int[] params. It does not dupe the FileDescriptors. + * + * @hide + */ + private NativeHandle(@NonNull int[] fds, @NonNull int[] ints, boolean own) { + this(createFileDescriptorArray(fds), ints, own); + } + + /** + * Instantiate an opaque {@link NativeHandle} from fds and integers. + * + * @param own whether the fds are owned by this object and should be closed + */ + public NativeHandle(@NonNull FileDescriptor[] fds, @NonNull int[] ints, boolean own) { + mFds = fds.clone(); + mInts = ints.clone(); + mOwn = own; + } + + /** + * Returns whether this {@link NativeHandle} object contains a single file + * descriptor and nothing else. + * + * @return a boolean value + */ + public boolean hasSingleFileDescriptor() { + return mFds.length == 1 && mInts.length == 0; + } + + /** + * Explicitly duplicate NativeHandle (this dups all file descritptors). + * + * If this method is called, this must also be explicitly closed with + * {@link #close()}. + */ + public NativeHandle dup() throws java.io.IOException { + FileDescriptor[] fds = new FileDescriptor[mFds.length]; + try { + for (int i = 0; i < mFds.length; i++) { + fds[i] = Os.dup(mFds[i]); + } + } catch (ErrnoException e) { + e.rethrowAsIOException(); + } + return new NativeHandle(fds, mInts, true /*own*/); + } + + /** + * Closes the file descriptors if they are owned by this object. + * + * This also invalidates the object. + */ + @Override + public void close() throws java.io.IOException { + if (!mOwn) { + return; + } + + try { + for (FileDescriptor fd : mFds) { + Os.close(fd); + } + } catch (ErrnoException e) { + e.rethrowAsIOException(); + } + + mOwn = false; + mFds = null; + mInts = null; + } + + /** + * Returns the underlying lone file descriptor. + * + * @return a {@link FileDescriptor} object + * @throws IllegalStateException if this object contains either zero or + * more than one file descriptor, or a non-empty data stream. + */ + public FileDescriptor getFileDescriptor() { + if (!hasSingleFileDescriptor()) { + throw new IllegalStateException( + "NativeHandle is not single file descriptor. Contents must" + + " be retreived through getFileDescriptors and getInts."); + } + + return mFds[0]; + } + + /** + * Convenience method for fetching this object's file descriptors from JNI. + * @return a mutable copy of the underlying file descriptors (as an int[]) + * + * @hide + */ + private int[] getFdsAsIntArray() { + int numFds = mFds.length; + int[] fds = new int[numFds]; + + for (int i = 0; i < numFds; i++) { + fds[i] = mFds[i].getInt$(); + } + + return fds; + } + + /** + * Fetch file descriptors. + * + * @return the fds. + */ + public FileDescriptor[] getFileDescriptors() { + return mFds; + } + + /** + * Fetch opaque ints. Note: This object retains ownership of the data. + * + * @return the opaque data stream. + */ + public int[] getInts() { + return mInts; + } +} diff --git a/core/java/android/speech/tts/TextToSpeech.java b/core/java/android/speech/tts/TextToSpeech.java index 01562b328ecc..797228e4a8d4 100644 --- a/core/java/android/speech/tts/TextToSpeech.java +++ b/core/java/android/speech/tts/TextToSpeech.java @@ -20,6 +20,7 @@ import android.annotation.Nullable; import android.annotation.RawRes; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; +import android.annotation.UnsupportedAppUsage; import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; @@ -668,8 +669,10 @@ public class TextToSpeech { } private final Context mContext; + @UnsupportedAppUsage private Connection mConnectingServiceConnection; private Connection mServiceConnection; + @UnsupportedAppUsage private OnInitListener mInitListener; // Written from an unspecified application thread, read from // a binder thread. @@ -686,6 +689,7 @@ public class TextToSpeech { private final Map<CharSequence, Uri> mUtterances; private final Bundle mParams = new Bundle(); private final TtsEngines mEnginesHelper; + @UnsupportedAppUsage private volatile String mCurrentEngine = null; /** @@ -1425,6 +1429,7 @@ public class TextToSpeech { * @return the engine currently in use by this TextToSpeech instance. * @hide */ + @UnsupportedAppUsage public String getCurrentEngine() { return mCurrentEngine; } diff --git a/core/java/android/speech/tts/TtsEngines.java b/core/java/android/speech/tts/TtsEngines.java index a8c3453293ab..a7b280b7b992 100644 --- a/core/java/android/speech/tts/TtsEngines.java +++ b/core/java/android/speech/tts/TtsEngines.java @@ -30,6 +30,7 @@ import android.content.res.XmlResourceParser; import static android.provider.Settings.Secure.getString; +import android.annotation.UnsupportedAppUsage; import android.provider.Settings; import android.speech.tts.TextToSpeech.Engine; import android.speech.tts.TextToSpeech.EngineInfo; @@ -101,6 +102,7 @@ public class TtsEngines { sNormalizeCountry = Collections.unmodifiableMap(normalizeCountry); } + @UnsupportedAppUsage public TtsEngines(Context ctx) { mContext = ctx; } @@ -155,6 +157,7 @@ public class TtsEngines { * * @return A list of engine info objects. The list can be empty, but never {@code null}. */ + @UnsupportedAppUsage public List<EngineInfo> getEngines() { PackageManager pm = mContext.getPackageManager(); Intent intent = new Intent(Engine.INTENT_ACTION_TTS_SERVICE); @@ -194,6 +197,7 @@ public class TtsEngines { /** * @return an intent that can launch the settings activity for a given tts engine. */ + @UnsupportedAppUsage public Intent getSettingsIntent(String engine) { PackageManager pm = mContext.getPackageManager(); Intent intent = new Intent(Engine.INTENT_ACTION_TTS_SERVICE); @@ -327,6 +331,7 @@ public class TtsEngines { * @param engineName the engine to return the locale for. * @return the locale preference for this engine. Will be non null. */ + @UnsupportedAppUsage public Locale getLocalePrefForEngine(String engineName) { return getLocalePrefForEngine(engineName, getString(mContext.getContentResolver(), Settings.Secure.TTS_DEFAULT_LOCALE)); @@ -376,6 +381,7 @@ public class TtsEngines { * country codes ({@link Locale#getISO3Language()} and {@link Locale#getISO3Country()}), * if it fails to do so, we return null. */ + @UnsupportedAppUsage public Locale parseLocaleString(String localeString) { String language = "", country = "", variant = ""; if (!TextUtils.isEmpty(localeString)) { @@ -436,6 +442,7 @@ public class TtsEngines { * This method tries to convert three-letter language and country codes into their two-letter * equivalents. If it fails to do so, it keeps the value from the TTS locale. */ + @UnsupportedAppUsage public static Locale normalizeTTSLocale(Locale ttsLocale) { String language = ttsLocale.getLanguage(); if (!TextUtils.isEmpty(language)) { @@ -514,6 +521,7 @@ public class TtsEngines { * the passed locale is null, an empty string will be serialized; that empty string, when * read back, will evaluate to {@link Locale#getDefault()}. */ + @UnsupportedAppUsage public synchronized void updateLocalePrefForEngine(String engineName, Locale newLocale) { final String prefList = Settings.Secure.getString(mContext.getContentResolver(), Settings.Secure.TTS_DEFAULT_LOCALE); diff --git a/core/java/android/util/ArrayMap.java b/core/java/android/util/ArrayMap.java index f1e937e83dc1..5108a796a036 100644 --- a/core/java/android/util/ArrayMap.java +++ b/core/java/android/util/ArrayMap.java @@ -18,6 +18,7 @@ package android.util; import libcore.util.EmptyArray; +import android.annotation.UnsupportedAppUsage; import java.util.Collection; import java.util.ConcurrentModificationException; import java.util.Map; @@ -70,16 +71,19 @@ public final class ArrayMap<K, V> implements Map<K, V> { /** * Maximum number of entries to have in array caches. */ + @UnsupportedAppUsage private static final int CACHE_SIZE = 10; /** * Special hash array value that indicates the container is immutable. */ + @UnsupportedAppUsage static final int[] EMPTY_IMMUTABLE_INTS = new int[0]; /** * @hide Special immutable empty ArrayMap. */ + @UnsupportedAppUsage public static final ArrayMap EMPTY = new ArrayMap<>(-1); /** @@ -88,14 +92,21 @@ public final class ArrayMap<K, V> implements Map<K, V> { * The first entry in the array is a pointer to the next array in the * list; the second entry is a pointer to the int[] hash code array for it. */ + @UnsupportedAppUsage static Object[] mBaseCache; + @UnsupportedAppUsage static int mBaseCacheSize; + @UnsupportedAppUsage static Object[] mTwiceBaseCache; + @UnsupportedAppUsage static int mTwiceBaseCacheSize; final boolean mIdentityHashCode; + @UnsupportedAppUsage int[] mHashes; + @UnsupportedAppUsage Object[] mArray; + @UnsupportedAppUsage int mSize; MapCollections<K, V> mCollections; @@ -111,6 +122,7 @@ public final class ArrayMap<K, V> implements Map<K, V> { } } + @UnsupportedAppUsage int indexOf(Object key, int hash) { final int N = mSize; @@ -149,6 +161,7 @@ public final class ArrayMap<K, V> implements Map<K, V> { return ~end; } + @UnsupportedAppUsage int indexOfNull() { final int N = mSize; @@ -187,6 +200,7 @@ public final class ArrayMap<K, V> implements Map<K, V> { return ~end; } + @UnsupportedAppUsage private void allocArrays(final int size) { if (mHashes == EMPTY_IMMUTABLE_INTS) { throw new UnsupportedOperationException("ArrayMap is immutable"); @@ -225,6 +239,7 @@ public final class ArrayMap<K, V> implements Map<K, V> { mArray = new Object[size<<1]; } + @UnsupportedAppUsage private static void freeArrays(final int[] hashes, final Object[] array, final int size) { if (hashes.length == (BASE_SIZE*2)) { synchronized (ArrayMap.class) { @@ -378,6 +393,7 @@ public final class ArrayMap<K, V> implements Map<K, V> { : indexOf(key, mIdentityHashCode ? System.identityHashCode(key) : key.hashCode()); } + @UnsupportedAppUsage int indexOfValue(Object value) { final int N = mSize*2; final Object[] array = mArray; @@ -535,6 +551,7 @@ public final class ArrayMap<K, V> implements Map<K, V> { * The array must already be large enough to contain the item. * @hide */ + @UnsupportedAppUsage public void append(K key, V value) { int index = mSize; final int hash = key == null ? 0 diff --git a/core/java/android/util/ArraySet.java b/core/java/android/util/ArraySet.java index 2eea7df4767b..526a950b4820 100644 --- a/core/java/android/util/ArraySet.java +++ b/core/java/android/util/ArraySet.java @@ -18,6 +18,7 @@ package android.util; import libcore.util.EmptyArray; +import android.annotation.UnsupportedAppUsage; import java.lang.reflect.Array; import java.util.Collection; import java.util.Iterator; @@ -70,11 +71,15 @@ public final class ArraySet<E> implements Collection<E>, Set<E> { static int sTwiceBaseCacheSize; final boolean mIdentityHashCode; + @UnsupportedAppUsage int[] mHashes; + @UnsupportedAppUsage Object[] mArray; + @UnsupportedAppUsage int mSize; MapCollections<E, E> mCollections; + @UnsupportedAppUsage private int indexOf(Object key, int hash) { final int N = mSize; @@ -113,6 +118,7 @@ public final class ArraySet<E> implements Collection<E>, Set<E> { return ~end; } + @UnsupportedAppUsage private int indexOfNull() { final int N = mSize; @@ -151,6 +157,7 @@ public final class ArraySet<E> implements Collection<E>, Set<E> { return ~end; } + @UnsupportedAppUsage private void allocArrays(final int size) { if (size == (BASE_SIZE * 2)) { synchronized (ArraySet.class) { @@ -208,6 +215,7 @@ public final class ArraySet<E> implements Collection<E>, Set<E> { mArray = new Object[size]; } + @UnsupportedAppUsage private static void freeArrays(final int[] hashes, final Object[] array, final int size) { if (hashes.length == (BASE_SIZE * 2)) { synchronized (ArraySet.class) { @@ -282,6 +290,7 @@ public final class ArraySet<E> implements Collection<E>, Set<E> { } /** {@hide} */ + @UnsupportedAppUsage public ArraySet(Collection<E> set) { this(); if (set != null) { diff --git a/core/java/android/util/Base64.java b/core/java/android/util/Base64.java index 1f2a5a7ca960..ecc0c9cc9de3 100644 --- a/core/java/android/util/Base64.java +++ b/core/java/android/util/Base64.java @@ -16,6 +16,7 @@ package android.util; +import android.annotation.UnsupportedAppUsage; import java.io.UnsupportedEncodingException; /** @@ -737,5 +738,6 @@ public class Base64 { } } + @UnsupportedAppUsage private Base64() { } // don't instantiate } diff --git a/core/java/android/util/Base64OutputStream.java b/core/java/android/util/Base64OutputStream.java index 4535d1cea7a2..170ef6f5bc9e 100644 --- a/core/java/android/util/Base64OutputStream.java +++ b/core/java/android/util/Base64OutputStream.java @@ -16,6 +16,7 @@ package android.util; +import android.annotation.UnsupportedAppUsage; import java.io.FilterOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -57,6 +58,7 @@ public class Base64OutputStream extends FilterOutputStream { * * @hide */ + @UnsupportedAppUsage public Base64OutputStream(OutputStream out, int flags, boolean encode) { super(out); this.flags = flags; diff --git a/core/java/android/util/DebugUtils.java b/core/java/android/util/DebugUtils.java index 46e316931935..e87fcff3ee4b 100644 --- a/core/java/android/util/DebugUtils.java +++ b/core/java/android/util/DebugUtils.java @@ -16,6 +16,7 @@ package android.util; +import android.annotation.UnsupportedAppUsage; import java.io.PrintWriter; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; @@ -108,6 +109,7 @@ public class DebugUtils { } /** @hide */ + @UnsupportedAppUsage public static void buildShortClassTag(Object cls, StringBuilder out) { if (cls == null) { out.append("null"); diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java index 13de172c811c..b092fcf4fc50 100644 --- a/core/java/android/util/DisplayMetrics.java +++ b/core/java/android/util/DisplayMetrics.java @@ -16,6 +16,7 @@ package android.util; +import android.annotation.UnsupportedAppUsage; import android.os.SystemProperties; @@ -172,6 +173,7 @@ public class DisplayMetrics { * density for a specific display. */ @Deprecated + @UnsupportedAppUsage public static int DENSITY_DEVICE = getDeviceDensity(); /** @@ -234,12 +236,14 @@ public class DisplayMetrics { * being applied. * @hide */ + @UnsupportedAppUsage public int noncompatWidthPixels; /** * The reported display height prior to any compatibility mode scaling * being applied. * @hide */ + @UnsupportedAppUsage public int noncompatHeightPixels; /** * The reported display density prior to any compatibility mode scaling @@ -252,6 +256,7 @@ public class DisplayMetrics { * being applied. * @hide */ + @UnsupportedAppUsage public int noncompatDensityDpi; /** * The reported scaled density prior to any compatibility mode scaling diff --git a/core/java/android/util/EventLog.java b/core/java/android/util/EventLog.java index 92f218b4155a..65d825a71d81 100644 --- a/core/java/android/util/EventLog.java +++ b/core/java/android/util/EventLog.java @@ -17,6 +17,7 @@ package android.util; import android.annotation.SystemApi; +import android.annotation.UnsupportedAppUsage; import java.io.BufferedReader; import java.io.FileReader; @@ -82,6 +83,7 @@ public class EventLog { private static final byte FLOAT_TYPE = 4; /** @param data containing event, read from the system */ + @UnsupportedAppUsage /*package*/ Event(byte[] data) { mBuffer = ByteBuffer.wrap(data); mBuffer.order(ByteOrder.nativeOrder()); diff --git a/core/java/android/util/IconDrawableFactory.java b/core/java/android/util/IconDrawableFactory.java index 6a6c2ce4838e..d90b65e22171 100644 --- a/core/java/android/util/IconDrawableFactory.java +++ b/core/java/android/util/IconDrawableFactory.java @@ -15,6 +15,7 @@ */ package android.util; +import android.annotation.UnsupportedAppUsage; import android.annotation.UserIdInt; import android.content.Context; import android.content.pm.ApplicationInfo; @@ -52,6 +53,7 @@ public class IconDrawableFactory { return appInfo.isInstantApp() || mUm.isManagedProfile(userId); } + @UnsupportedAppUsage public Drawable getBadgedIcon(ApplicationInfo appInfo) { return getBadgedIcon(appInfo, UserHandle.getUserId(appInfo.uid)); } @@ -60,6 +62,7 @@ public class IconDrawableFactory { return getBadgedIcon(appInfo, appInfo, userId); } + @UnsupportedAppUsage public Drawable getBadgedIcon(PackageItemInfo itemInfo, ApplicationInfo appInfo, @UserIdInt int userId) { Drawable icon = mPm.loadUnbadgedItemIcon(itemInfo, appInfo); @@ -107,6 +110,7 @@ public class IconDrawableFactory { return Resources.getSystem().getColor(resourceId, null); } + @UnsupportedAppUsage public static IconDrawableFactory newInstance(Context context) { return new IconDrawableFactory(context, true); } diff --git a/core/java/android/util/LocalLog.java b/core/java/android/util/LocalLog.java index eb84479fef69..adfa4fc55567 100644 --- a/core/java/android/util/LocalLog.java +++ b/core/java/android/util/LocalLog.java @@ -16,6 +16,7 @@ package android.util; +import android.annotation.UnsupportedAppUsage; import java.io.FileDescriptor; import java.io.PrintWriter; import java.time.LocalDateTime; @@ -31,11 +32,13 @@ public final class LocalLog { private final Deque<String> mLog; private final int mMaxLines; + @UnsupportedAppUsage public LocalLog(int maxLines) { mMaxLines = Math.max(0, maxLines); mLog = new ArrayDeque<>(mMaxLines); } + @UnsupportedAppUsage public void log(String msg) { if (mMaxLines <= 0) { return; @@ -50,6 +53,7 @@ public final class LocalLog { mLog.add(logLine); } + @UnsupportedAppUsage public synchronized void dump(FileDescriptor fd, PrintWriter pw, String[] args) { Iterator<String> itr = mLog.iterator(); while (itr.hasNext()) { @@ -69,6 +73,7 @@ public final class LocalLog { ReadOnlyLocalLog(LocalLog log) { mLog = log; } + @UnsupportedAppUsage public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { mLog.dump(fd, pw, args); } @@ -77,6 +82,7 @@ public final class LocalLog { } } + @UnsupportedAppUsage public ReadOnlyLocalLog readOnlyLocalLog() { return new ReadOnlyLocalLog(this); } diff --git a/core/java/android/util/Log.java b/core/java/android/util/Log.java index 7305f85469d8..6826b57ec3f2 100644 --- a/core/java/android/util/Log.java +++ b/core/java/android/util/Log.java @@ -16,6 +16,7 @@ package android.util; +import android.annotation.UnsupportedAppUsage; import android.os.DeadSystemException; import com.android.internal.os.RuntimeInit; @@ -294,6 +295,7 @@ public final class Log { return wtf(LOG_ID_MAIN, tag, msg, tr, false, false); } + @UnsupportedAppUsage static int wtf(int logId, String tag, String msg, Throwable tr, boolean localStack, boolean system) { TerribleFailure what = new TerribleFailure(msg, tr); @@ -371,6 +373,7 @@ public final class Log { /** @hide */ public static final int LOG_ID_CRASH = 4; /** @hide */ + @UnsupportedAppUsage public static native int println_native(int bufID, int priority, String tag, String msg); /** diff --git a/core/java/android/util/LogWriter.java b/core/java/android/util/LogWriter.java index ce30631bac09..b062ace05700 100644 --- a/core/java/android/util/LogWriter.java +++ b/core/java/android/util/LogWriter.java @@ -16,6 +16,7 @@ package android.util; +import android.annotation.UnsupportedAppUsage; import java.io.Writer; /** @hide */ @@ -37,6 +38,7 @@ public class LogWriter extends Writer { * {@link android.util.Log#ERROR Log.ERROR}. * @param tag A string tag to associate with each printed log statement. */ + @UnsupportedAppUsage public LogWriter(int priority, String tag) { mPriority = priority; mTag = tag; diff --git a/core/java/android/util/LongArray.java b/core/java/android/util/LongArray.java index 5ed1c8c05cba..6f4aa5211dea 100644 --- a/core/java/android/util/LongArray.java +++ b/core/java/android/util/LongArray.java @@ -17,6 +17,7 @@ package android.util; import android.annotation.Nullable; +import android.annotation.UnsupportedAppUsage; import com.android.internal.util.ArrayUtils; import com.android.internal.util.Preconditions; @@ -44,6 +45,7 @@ public class LongArray implements Cloneable { /** * Creates an empty LongArray with the default initial capacity. */ + @UnsupportedAppUsage public LongArray() { this(10); } @@ -102,6 +104,7 @@ public class LongArray implements Cloneable { * * @throws IndexOutOfBoundsException when index < 0 || index > size() */ + @UnsupportedAppUsage public void add(int index, long value) { ensureCapacity(1); int rightSegment = mSize - index; @@ -165,6 +168,7 @@ public class LongArray implements Cloneable { /** * Returns the value at the specified position in this array. */ + @UnsupportedAppUsage public long get(int index) { ArrayUtils.checkBounds(mSize, index); return mValues[index]; @@ -204,6 +208,7 @@ public class LongArray implements Cloneable { /** * Returns the number of values in this array. */ + @UnsupportedAppUsage public int size() { return mSize; } diff --git a/core/java/android/util/LongSparseLongArray.java b/core/java/android/util/LongSparseLongArray.java index a3614572c0f3..d5af92234b31 100644 --- a/core/java/android/util/LongSparseLongArray.java +++ b/core/java/android/util/LongSparseLongArray.java @@ -19,6 +19,7 @@ package android.util; import com.android.internal.util.ArrayUtils; import com.android.internal.util.GrowingArrayUtils; +import android.annotation.UnsupportedAppUsage; import libcore.util.EmptyArray; /** @@ -45,8 +46,11 @@ import libcore.util.EmptyArray; * @hide */ public class LongSparseLongArray implements Cloneable { + @UnsupportedAppUsage private long[] mKeys; + @UnsupportedAppUsage private long[] mValues; + @UnsupportedAppUsage private int mSize; /** diff --git a/core/java/android/util/LruCache.java b/core/java/android/util/LruCache.java index 401548800ec8..f04e7cbc9e8f 100644 --- a/core/java/android/util/LruCache.java +++ b/core/java/android/util/LruCache.java @@ -16,6 +16,7 @@ package android.util; +import android.annotation.UnsupportedAppUsage; import java.util.LinkedHashMap; import java.util.Map; @@ -60,6 +61,7 @@ import java.util.Map; * Support Package</a> for earlier releases. */ public class LruCache<K, V> { + @UnsupportedAppUsage private final LinkedHashMap<K, V> map; /** Size of this cache in units. Not necessarily the number of elements. */ diff --git a/core/java/android/util/MathUtils.java b/core/java/android/util/MathUtils.java index b2e24c357e3c..09da228443f7 100644 --- a/core/java/android/util/MathUtils.java +++ b/core/java/android/util/MathUtils.java @@ -16,6 +16,8 @@ package android.util; +import android.annotation.UnsupportedAppUsage; + /** * A class that contains utility methods related to numbers. * @@ -28,10 +30,12 @@ public final class MathUtils { private MathUtils() { } + @UnsupportedAppUsage public static float abs(float v) { return v > 0 ? v : -v; } + @UnsupportedAppUsage public static int constrain(int amount, int low, int high) { return amount < low ? low : (amount > high ? high : amount); } @@ -40,6 +44,7 @@ public final class MathUtils { return amount < low ? low : (amount > high ? high : amount); } + @UnsupportedAppUsage public static float constrain(float amount, float low, float high) { return amount < low ? low : (amount > high ? high : amount); } @@ -64,6 +69,7 @@ public final class MathUtils { return a > b ? a : b; } + @UnsupportedAppUsage public static float max(int a, int b) { return a > b ? a : b; } @@ -153,6 +159,7 @@ public final class MathUtils { return (float) Math.tan(angle); } + @UnsupportedAppUsage public static float lerp(float start, float stop, float amount) { return start + (stop - start) * amount; } diff --git a/core/java/android/util/MemoryIntArray.java b/core/java/android/util/MemoryIntArray.java index bf335196edef..d5bec0fff088 100644 --- a/core/java/android/util/MemoryIntArray.java +++ b/core/java/android/util/MemoryIntArray.java @@ -20,9 +20,10 @@ import android.os.Parcel; import android.os.ParcelFileDescriptor; import android.os.Parcelable; -import libcore.io.IoUtils; import dalvik.system.CloseGuard; +import libcore.io.IoUtils; + import java.io.Closeable; import java.io.IOException; import java.util.UUID; @@ -56,7 +57,7 @@ public final class MemoryIntArray implements Parcelable, Closeable { private final boolean mIsOwner; private final long mMemoryAddr; - private int mFd = -1; + private ParcelFileDescriptor mFd; /** * Creates a new instance. @@ -71,8 +72,8 @@ public final class MemoryIntArray implements Parcelable, Closeable { } mIsOwner = true; final String name = UUID.randomUUID().toString(); - mFd = nativeCreate(name, size); - mMemoryAddr = nativeOpen(mFd, mIsOwner); + mFd = ParcelFileDescriptor.adoptFd(nativeCreate(name, size)); + mMemoryAddr = nativeOpen(mFd.getFd(), mIsOwner); mCloseGuard.open("close"); } @@ -82,8 +83,8 @@ public final class MemoryIntArray implements Parcelable, Closeable { if (pfd == null) { throw new IOException("No backing file descriptor"); } - mFd = pfd.detachFd(); - mMemoryAddr = nativeOpen(mFd, mIsOwner); + mFd = ParcelFileDescriptor.adoptFd(pfd.detachFd()); + mMemoryAddr = nativeOpen(mFd.getFd(), mIsOwner); mCloseGuard.open("close"); } @@ -105,7 +106,7 @@ public final class MemoryIntArray implements Parcelable, Closeable { public int get(int index) throws IOException { enforceNotClosed(); enforceValidIndex(index); - return nativeGet(mFd, mMemoryAddr, index); + return nativeGet(mFd.getFd(), mMemoryAddr, index); } /** @@ -121,7 +122,7 @@ public final class MemoryIntArray implements Parcelable, Closeable { enforceNotClosed(); enforceWritable(); enforceValidIndex(index); - nativeSet(mFd, mMemoryAddr, index, value); + nativeSet(mFd.getFd(), mMemoryAddr, index, value); } /** @@ -131,7 +132,7 @@ public final class MemoryIntArray implements Parcelable, Closeable { */ public int size() throws IOException { enforceNotClosed(); - return nativeSize(mFd); + return nativeSize(mFd.getFd()); } /** @@ -142,8 +143,9 @@ public final class MemoryIntArray implements Parcelable, Closeable { @Override public void close() throws IOException { if (!isClosed()) { - nativeClose(mFd, mMemoryAddr, mIsOwner); - mFd = -1; + nativeClose(mFd.getFd(), mMemoryAddr, mIsOwner); + mFd.close(); + mFd = null; mCloseGuard.close(); } } @@ -152,7 +154,7 @@ public final class MemoryIntArray implements Parcelable, Closeable { * @return Whether this array is closed and shouldn't be used. */ public boolean isClosed() { - return mFd == -1; + return mFd == null; } @Override @@ -175,13 +177,8 @@ public final class MemoryIntArray implements Parcelable, Closeable { @Override public void writeToParcel(Parcel parcel, int flags) { - ParcelFileDescriptor pfd = ParcelFileDescriptor.adoptFd(mFd); - try { - // Don't let writing to a parcel to close our fd - plz - parcel.writeParcelable(pfd, flags & ~Parcelable.PARCELABLE_WRITE_RETURN_VALUE); - } finally { - pfd.detachFd(); - } + // Don't let writing to a parcel to close our fd - plz + parcel.writeParcelable(mFd, flags & ~Parcelable.PARCELABLE_WRITE_RETURN_VALUE); } @Override @@ -195,13 +192,13 @@ public final class MemoryIntArray implements Parcelable, Closeable { if (getClass() != obj.getClass()) { return false; } - MemoryIntArray other = (MemoryIntArray) obj; - return mFd == other.mFd; + + return false; } @Override public int hashCode() { - return mFd; + return mFd.hashCode(); } private void enforceNotClosed() { diff --git a/core/java/android/util/NtpTrustedTime.java b/core/java/android/util/NtpTrustedTime.java index 30d7b6c0786c..da566c934ef7 100644 --- a/core/java/android/util/NtpTrustedTime.java +++ b/core/java/android/util/NtpTrustedTime.java @@ -16,6 +16,7 @@ package android.util; +import android.annotation.UnsupportedAppUsage; import android.content.ContentResolver; import android.content.Context; import android.content.res.Resources; @@ -56,6 +57,7 @@ public class NtpTrustedTime implements TrustedTime { mTimeout = timeout; } + @UnsupportedAppUsage public static synchronized NtpTrustedTime getInstance(Context context) { if (sSingleton == null) { final Resources res = context.getResources(); @@ -80,6 +82,7 @@ public class NtpTrustedTime implements TrustedTime { } @Override + @UnsupportedAppUsage public boolean forceRefresh() { // We can't do this at initialization time: ConnectivityService might not be running yet. synchronized (this) { @@ -126,6 +129,7 @@ public class NtpTrustedTime implements TrustedTime { } @Override + @UnsupportedAppUsage public boolean hasCache() { return mHasCache; } @@ -149,6 +153,7 @@ public class NtpTrustedTime implements TrustedTime { } @Override + @UnsupportedAppUsage public long currentTimeMillis() { if (!mHasCache) { throw new IllegalStateException("Missing authoritative time source"); @@ -160,11 +165,13 @@ public class NtpTrustedTime implements TrustedTime { return mCachedNtpTime + getCacheAge(); } + @UnsupportedAppUsage public long getCachedNtpTime() { if (LOGD) Log.d(TAG, "getCachedNtpTime() cache hit"); return mCachedNtpTime; } + @UnsupportedAppUsage public long getCachedNtpTimeReference() { return mCachedNtpElapsedRealtime; } diff --git a/core/java/android/util/PathParser.java b/core/java/android/util/PathParser.java index 6f314d0df535..5342d5dfc81d 100644 --- a/core/java/android/util/PathParser.java +++ b/core/java/android/util/PathParser.java @@ -14,6 +14,7 @@ package android.util; +import android.annotation.UnsupportedAppUsage; import android.graphics.Path; import dalvik.annotation.optimization.FastNative; @@ -28,6 +29,7 @@ public class PathParser { * @param pathString The string representing a path, the same as "d" string in svg file. * @return the generated Path object. */ + @UnsupportedAppUsage public static Path createPathFromPathData(String pathString) { if (pathString == null) { throw new IllegalArgumentException("Path string can not be null."); diff --git a/core/java/android/util/Pools.java b/core/java/android/util/Pools.java index f0b7e01dae48..e242fe5cfca3 100644 --- a/core/java/android/util/Pools.java +++ b/core/java/android/util/Pools.java @@ -16,6 +16,8 @@ package android.util; +import android.annotation.UnsupportedAppUsage; + /** * Helper class for crating pools of objects. An example use looks like this: * <pre> @@ -52,6 +54,7 @@ public final class Pools { /** * @return An instance from the pool if such, null otherwise. */ + @UnsupportedAppUsage public T acquire(); /** @@ -62,6 +65,7 @@ public final class Pools { * * @throws IllegalStateException If the instance is already in the pool. */ + @UnsupportedAppUsage public boolean release(T instance); } @@ -75,6 +79,7 @@ public final class Pools { * @param <T> The pooled type. */ public static class SimplePool<T> implements Pool<T> { + @UnsupportedAppUsage private final Object[] mPool; private int mPoolSize; @@ -86,6 +91,7 @@ public final class Pools { * * @throws IllegalArgumentException If the max pool size is less than zero. */ + @UnsupportedAppUsage public SimplePool(int maxPoolSize) { if (maxPoolSize <= 0) { throw new IllegalArgumentException("The max pool size must be > 0"); @@ -95,6 +101,7 @@ public final class Pools { @Override @SuppressWarnings("unchecked") + @UnsupportedAppUsage public T acquire() { if (mPoolSize > 0) { final int lastPooledIndex = mPoolSize - 1; @@ -107,6 +114,7 @@ public final class Pools { } @Override + @UnsupportedAppUsage public boolean release(T instance) { if (isInPool(instance)) { throw new IllegalStateException("Already in the pool!"); @@ -151,11 +159,13 @@ public final class Pools { } /** @see #SynchronizedPool(int, Object) */ + @UnsupportedAppUsage public SynchronizedPool(int maxPoolSize) { this(maxPoolSize, new Object()); } @Override + @UnsupportedAppUsage public T acquire() { synchronized (mLock) { return super.acquire(); @@ -163,6 +173,7 @@ public final class Pools { } @Override + @UnsupportedAppUsage public boolean release(T element) { synchronized (mLock) { return super.release(element); diff --git a/core/java/android/util/Rational.java b/core/java/android/util/Rational.java index 80d26d943ed7..39e8b14689da 100644 --- a/core/java/android/util/Rational.java +++ b/core/java/android/util/Rational.java @@ -17,6 +17,7 @@ package android.util; import static com.android.internal.util.Preconditions.*; +import android.annotation.UnsupportedAppUsage; import java.io.IOException; import java.io.InvalidObjectException; @@ -74,7 +75,9 @@ public final class Rational extends Number implements Comparable<Rational> { * Do not change the order of these fields or add new instance fields to maintain the * Serializable compatibility across API revisions. */ + @UnsupportedAppUsage private final int mNumerator; + @UnsupportedAppUsage private final int mDenominator; /** diff --git a/core/java/android/util/RecurrenceRule.java b/core/java/android/util/RecurrenceRule.java index 9c898766dc68..209a5912259b 100644 --- a/core/java/android/util/RecurrenceRule.java +++ b/core/java/android/util/RecurrenceRule.java @@ -16,6 +16,7 @@ package android.util; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -49,6 +50,7 @@ public class RecurrenceRule implements Parcelable { @VisibleForTesting public static Clock sClock = Clock.systemDefaultZone(); + @UnsupportedAppUsage public final ZonedDateTime start; public final ZonedDateTime end; public final Period period; @@ -65,6 +67,7 @@ public class RecurrenceRule implements Parcelable { } @Deprecated + @UnsupportedAppUsage public static RecurrenceRule buildRecurringMonthly(int dayOfMonth, ZoneId zone) { // Assume we started last January, since it has all possible days final ZonedDateTime now = ZonedDateTime.now(sClock).withZoneSameInstant(zone); diff --git a/core/java/android/util/Singleton.java b/core/java/android/util/Singleton.java index 8a38bdbfdc62..33135e6fd62c 100644 --- a/core/java/android/util/Singleton.java +++ b/core/java/android/util/Singleton.java @@ -16,6 +16,8 @@ package android.util; +import android.annotation.UnsupportedAppUsage; + /** * Singleton helper class for lazily initialization. * @@ -24,10 +26,12 @@ package android.util; * @hide */ public abstract class Singleton<T> { + @UnsupportedAppUsage private T mInstance; protected abstract T create(); + @UnsupportedAppUsage public final T get() { synchronized (this) { if (mInstance == null) { diff --git a/core/java/android/util/Slog.java b/core/java/android/util/Slog.java index 58a27037e03f..c9fc3f2d1bcc 100644 --- a/core/java/android/util/Slog.java +++ b/core/java/android/util/Slog.java @@ -16,6 +16,8 @@ package android.util; +import android.annotation.UnsupportedAppUsage; + /** * @hide */ @@ -24,6 +26,7 @@ public final class Slog { private Slog() { } + @UnsupportedAppUsage public static int v(String tag, String msg) { return Log.println_native(Log.LOG_ID_SYSTEM, Log.VERBOSE, tag, msg); } @@ -33,15 +36,18 @@ public final class Slog { msg + '\n' + Log.getStackTraceString(tr)); } + @UnsupportedAppUsage public static int d(String tag, String msg) { return Log.println_native(Log.LOG_ID_SYSTEM, Log.DEBUG, tag, msg); } + @UnsupportedAppUsage public static int d(String tag, String msg, Throwable tr) { return Log.println_native(Log.LOG_ID_SYSTEM, Log.DEBUG, tag, msg + '\n' + Log.getStackTraceString(tr)); } + @UnsupportedAppUsage public static int i(String tag, String msg) { return Log.println_native(Log.LOG_ID_SYSTEM, Log.INFO, tag, msg); } @@ -51,10 +57,12 @@ public final class Slog { msg + '\n' + Log.getStackTraceString(tr)); } + @UnsupportedAppUsage public static int w(String tag, String msg) { return Log.println_native(Log.LOG_ID_SYSTEM, Log.WARN, tag, msg); } + @UnsupportedAppUsage public static int w(String tag, String msg, Throwable tr) { return Log.println_native(Log.LOG_ID_SYSTEM, Log.WARN, tag, msg + '\n' + Log.getStackTraceString(tr)); @@ -64,10 +72,12 @@ public final class Slog { return Log.println_native(Log.LOG_ID_SYSTEM, Log.WARN, tag, Log.getStackTraceString(tr)); } + @UnsupportedAppUsage public static int e(String tag, String msg) { return Log.println_native(Log.LOG_ID_SYSTEM, Log.ERROR, tag, msg); } + @UnsupportedAppUsage public static int e(String tag, String msg, Throwable tr) { return Log.println_native(Log.LOG_ID_SYSTEM, Log.ERROR, tag, msg + '\n' + Log.getStackTraceString(tr)); @@ -78,6 +88,7 @@ public final class Slog { * will always be handled asynchronously. Primarily for use by coding running within * the system process. */ + @UnsupportedAppUsage public static int wtf(String tag, String msg) { return Log.wtf(Log.LOG_ID_SYSTEM, tag, msg, null, false, true); } @@ -94,6 +105,7 @@ public final class Slog { * will always be handled asynchronously. Primarily for use by coding running within * the system process. */ + @UnsupportedAppUsage public static int wtfStack(String tag, String msg) { return Log.wtf(Log.LOG_ID_SYSTEM, tag, msg, null, true, true); } @@ -112,10 +124,12 @@ public final class Slog { * and will always be handled asynchronously. Primarily for use by coding running within * the system process. */ + @UnsupportedAppUsage public static int wtf(String tag, String msg, Throwable tr) { return Log.wtf(Log.LOG_ID_SYSTEM, tag, msg, tr, false, true); } + @UnsupportedAppUsage public static int println(int priority, String tag, String msg) { return Log.println_native(Log.LOG_ID_SYSTEM, priority, tag, msg); } diff --git a/core/java/android/util/SparseArray.java b/core/java/android/util/SparseArray.java index b3400ef538b8..dc07494b15db 100644 --- a/core/java/android/util/SparseArray.java +++ b/core/java/android/util/SparseArray.java @@ -19,6 +19,7 @@ package android.util; import com.android.internal.util.ArrayUtils; import com.android.internal.util.GrowingArrayUtils; +import android.annotation.UnsupportedAppUsage; import libcore.util.EmptyArray; /** @@ -53,8 +54,11 @@ public class SparseArray<E> implements Cloneable { private static final Object DELETED = new Object(); private boolean mGarbage = false; + @UnsupportedAppUsage private int[] mKeys; + @UnsupportedAppUsage private Object[] mValues; + @UnsupportedAppUsage private int mSize; /** diff --git a/core/java/android/util/SparseBooleanArray.java b/core/java/android/util/SparseBooleanArray.java index 68d347c912bf..9c6b9698d1ae 100644 --- a/core/java/android/util/SparseBooleanArray.java +++ b/core/java/android/util/SparseBooleanArray.java @@ -19,6 +19,7 @@ package android.util; import com.android.internal.util.ArrayUtils; import com.android.internal.util.GrowingArrayUtils; +import android.annotation.UnsupportedAppUsage; import libcore.util.EmptyArray; /** @@ -303,7 +304,10 @@ public class SparseBooleanArray implements Cloneable { return buffer.toString(); } + @UnsupportedAppUsage private int[] mKeys; + @UnsupportedAppUsage private boolean[] mValues; + @UnsupportedAppUsage private int mSize; } diff --git a/core/java/android/util/SparseIntArray.java b/core/java/android/util/SparseIntArray.java index 3b832ddd286c..19547534aef5 100644 --- a/core/java/android/util/SparseIntArray.java +++ b/core/java/android/util/SparseIntArray.java @@ -21,6 +21,7 @@ import com.android.internal.util.GrowingArrayUtils; import java.util.Arrays; +import android.annotation.UnsupportedAppUsage; import libcore.util.EmptyArray; /** @@ -45,8 +46,11 @@ import libcore.util.EmptyArray; * order in the case of <code>valueAt(int)</code>.</p> */ public class SparseIntArray implements Cloneable { + @UnsupportedAppUsage private int[] mKeys; + @UnsupportedAppUsage private int[] mValues; + @UnsupportedAppUsage private int mSize; /** diff --git a/core/java/android/util/TimeUtils.java b/core/java/android/util/TimeUtils.java index 05b613c3c7c7..0e25038bbb38 100644 --- a/core/java/android/util/TimeUtils.java +++ b/core/java/android/util/TimeUtils.java @@ -16,6 +16,7 @@ package android.util; +import android.annotation.UnsupportedAppUsage; import android.os.SystemClock; import libcore.util.TimeZoneFinder; @@ -248,6 +249,7 @@ public class TimeUtils { } /** @hide Just for debugging; not internationalized. */ + @UnsupportedAppUsage public static void formatDuration(long duration, PrintWriter pw, int fieldLen) { synchronized (sFormatSync) { int len = formatDurationLocked(duration, fieldLen); @@ -264,6 +266,7 @@ public class TimeUtils { } /** @hide Just for debugging; not internationalized. */ + @UnsupportedAppUsage public static void formatDuration(long duration, PrintWriter pw) { formatDuration(duration, pw, 0); } @@ -297,6 +300,7 @@ public class TimeUtils { * @return String representation of the time. * @hide */ + @UnsupportedAppUsage public static String logTimeOfDay(long millis) { Calendar c = Calendar.getInstance(); if (millis >= 0) { diff --git a/core/java/android/util/TrustedTime.java b/core/java/android/util/TrustedTime.java index 263d7821a085..c78665d06e75 100644 --- a/core/java/android/util/TrustedTime.java +++ b/core/java/android/util/TrustedTime.java @@ -16,6 +16,8 @@ package android.util; +import android.annotation.UnsupportedAppUsage; + /** * Interface that provides trusted time information, possibly coming from an NTP * server. Implementations may cache answers until {@link #forceRefresh()}. @@ -27,17 +29,20 @@ public interface TrustedTime { * Force update with an external trusted time source, returning {@code true} * when successful. */ + @UnsupportedAppUsage public boolean forceRefresh(); /** * Check if this instance has cached a response from a trusted time source. */ + @UnsupportedAppUsage public boolean hasCache(); /** * Return time since last trusted time source contact, or * {@link Long#MAX_VALUE} if never contacted. */ + @UnsupportedAppUsage public long getCacheAge(); /** @@ -51,5 +56,6 @@ public interface TrustedTime { * Return current time similar to {@link System#currentTimeMillis()}, * possibly using a cached authoritative time source. */ + @UnsupportedAppUsage public long currentTimeMillis(); } diff --git a/core/jni/Android.bp b/core/jni/Android.bp index 88ffb3f87e5d..494a95741090 100644 --- a/core/jni/Android.bp +++ b/core/jni/Android.bp @@ -93,6 +93,7 @@ cc_library_shared { "android_os_HwBlob.cpp", "android_os_HwParcel.cpp", "android_os_HwRemoteBinder.cpp", + "android_os_NativeHandle.cpp", "android_os_MemoryFile.cpp", "android_os_MessageQueue.cpp", "android_os_Parcel.cpp", diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index d059253b116b..f7f10c49fbae 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -165,6 +165,7 @@ extern int register_android_os_HwBinder(JNIEnv *env); extern int register_android_os_HwBlob(JNIEnv *env); extern int register_android_os_HwParcel(JNIEnv *env); extern int register_android_os_HwRemoteBinder(JNIEnv *env); +extern int register_android_os_NativeHandle(JNIEnv *env); extern int register_android_os_MessageQueue(JNIEnv* env); extern int register_android_os_Parcel(JNIEnv* env); extern int register_android_os_SELinux(JNIEnv* env); @@ -1345,6 +1346,7 @@ static const RegJNIRec gRegJNI[] = { REG_JNI(register_android_os_HwBlob), REG_JNI(register_android_os_HwParcel), REG_JNI(register_android_os_HwRemoteBinder), + REG_JNI(register_android_os_NativeHandle), REG_JNI(register_android_os_VintfObject), REG_JNI(register_android_os_VintfRuntimeInfo), REG_JNI(register_android_nio_utils), diff --git a/core/jni/android_os_HwBlob.cpp b/core/jni/android_os_HwBlob.cpp index bb916d2431c5..cb55618c685c 100644 --- a/core/jni/android_os_HwBlob.cpp +++ b/core/jni/android_os_HwBlob.cpp @@ -21,6 +21,7 @@ #include "android_os_HwBlob.h" #include "android_os_HwParcel.h" +#include "android_os_NativeHandle.h" #include <nativehelper/JNIHelp.h> #include <android_runtime/AndroidRuntime.h> @@ -31,6 +32,7 @@ #include "core_jni_helpers.h" using android::AndroidRuntime; +using android::hardware::hidl_handle; using android::hardware::hidl_string; #define PACKAGE_PATH "android/os" @@ -82,6 +84,7 @@ sp<JHwBlob> JHwBlob::GetNativeContext(JNIEnv *env, jobject thiz) { JHwBlob::JHwBlob(JNIEnv *env, jobject thiz, size_t size) : mBuffer(nullptr), mSize(size), + mType(BlobType::GENERIC), mOwnsBuffer(true), mHandle(0) { if (size > 0) { @@ -159,6 +162,15 @@ size_t JHwBlob::size() const { return mSize; } +void JHwBlob::specializeBlobTo(BlobType type) { + CHECK_EQ(static_cast<int>(mType), static_cast<int>(BlobType::GENERIC)); + mType = type; +} + +JHwBlob::BlobType JHwBlob::type() const { + return mType; +} + status_t JHwBlob::putBlob(size_t offset, const sp<JHwBlob> &blob) { size_t index = mSubBlobs.add(); BlobInfo *info = &mSubBlobs.editItemAt(index); @@ -172,42 +184,52 @@ status_t JHwBlob::putBlob(size_t offset, const sp<JHwBlob> &blob) { } status_t JHwBlob::writeToParcel(hardware::Parcel *parcel) const { - size_t handle; + CHECK_EQ(static_cast<int>(mType), static_cast<int>(BlobType::GENERIC)); + + size_t handle = 0; status_t err = parcel->writeBuffer(data(), size(), &handle); if (err != OK) { return err; } - for (size_t i = 0; i < mSubBlobs.size(); ++i) { - const BlobInfo &info = mSubBlobs[i]; - - err = info.mBlob->writeEmbeddedToParcel(parcel, handle, info.mOffset); - - if (err != OK) { - return err; - } - } - - return OK; + return writeSubBlobsToParcel(parcel, handle); } status_t JHwBlob::writeEmbeddedToParcel( hardware::Parcel *parcel, size_t parentHandle, size_t parentOffset) const { - size_t handle; - status_t err = parcel->writeEmbeddedBuffer( - data(), size(), &handle, parentHandle, parentOffset); + size_t handle = 0; + status_t err = OK; + + switch (mType) { + case BlobType::GENERIC: { + err = parcel->writeEmbeddedBuffer(data(), size(), &handle, parentHandle, parentOffset); + break; + } + case BlobType::NATIVE_HANDLE: { + err = parcel->writeEmbeddedNativeHandle( + static_cast<const native_handle *>(data()), parentHandle, parentOffset); + + CHECK(mSubBlobs.empty()); + break; + } + default: { err = INVALID_OPERATION; } + } if (err != OK) { return err; } + return writeSubBlobsToParcel(parcel, handle); +} + +status_t JHwBlob::writeSubBlobsToParcel(hardware::Parcel *parcel, + size_t parentHandle) const { for (size_t i = 0; i < mSubBlobs.size(); ++i) { const BlobInfo &info = mSubBlobs[i]; - - err = info.mBlob->writeEmbeddedToParcel(parcel, handle, info.mOffset); + status_t err = info.mBlob->writeEmbeddedToParcel(parcel, parentHandle, info.mOffset); if (err != OK) { return err; @@ -252,7 +274,7 @@ static void releaseNativeContext(void *nativeContext) { } } -static jlong JHwBlob_native_init(JNIEnv *env) { +static jlong JHwBlob_native_init(JNIEnv *env, jclass /*clazz*/) { JHwBlob::InitClass(env); return reinterpret_cast<jlong>(&releaseNativeContext); @@ -456,6 +478,31 @@ static void JHwBlob_native_putString( blob->putBlob(offset + hidl_string::kOffsetOfBuffer, subBlob); } +static void JHwBlob_native_putNativeHandle(JNIEnv *env, jobject thiz, + jlong offset, jobject jHandle) { + std::unique_ptr<native_handle_t, int(*)(native_handle_t*)> nativeHandle( + JNativeHandle::MakeCppNativeHandle(env, jHandle, nullptr /* storage */), + native_handle_delete); + + size_t size = 0; + if (nativeHandle != nullptr) { + size = sizeof(native_handle_t) + nativeHandle->numFds * sizeof(int) + + nativeHandle->numInts * sizeof(int); + } + + ScopedLocalRef<jobject> subBlobObj(env, JHwBlob::NewObject(env, size)); + sp<JHwBlob> subBlob = JHwBlob::GetNativeContext(env, subBlobObj.get()); + subBlob->specializeBlobTo(JHwBlob::BlobType::NATIVE_HANDLE); + subBlob->write(0 /* offset */, nativeHandle.get(), size); + + hidl_handle cppHandle; + cppHandle.setTo(static_cast<native_handle_t *>(subBlob->data()), false /* shouldOwn */); + + sp<JHwBlob> blob = JHwBlob::GetNativeContext(env, thiz); + blob->write(offset, &cppHandle, sizeof(cppHandle)); + blob->putBlob(offset + hidl_handle::kOffsetOfNativeHandle, subBlob); +} + #define DEFINE_BLOB_ARRAY_PUTTER(Suffix,Type,NewType) \ static void JHwBlob_native_put ## Suffix ## Array( \ JNIEnv *env, jobject thiz, jlong offset, Type ## Array array) { \ @@ -563,6 +610,8 @@ static JNINativeMethod gMethods[] = { { "putFloat", "(JF)V", (void *)JHwBlob_native_putFloat }, { "putDouble", "(JD)V", (void *)JHwBlob_native_putDouble }, { "putString", "(JLjava/lang/String;)V", (void *)JHwBlob_native_putString }, + { "putNativeHandle", "(JL" PACKAGE_PATH "/NativeHandle;)V", + (void*)JHwBlob_native_putNativeHandle }, { "putBoolArray", "(J[Z)V", (void *)JHwBlob_native_putBoolArray }, { "putInt8Array", "(J[B)V", (void *)JHwBlob_native_putInt8Array }, diff --git a/core/jni/android_os_HwBlob.h b/core/jni/android_os_HwBlob.h index 6b1db639ac19..69a1b165af9a 100644 --- a/core/jni/android_os_HwBlob.h +++ b/core/jni/android_os_HwBlob.h @@ -27,6 +27,11 @@ namespace android { struct JHwBlob : public RefBase { + enum class BlobType { + GENERIC, + NATIVE_HANDLE, + }; + static void InitClass(JNIEnv *env); static sp<JHwBlob> SetNativeContext( @@ -54,6 +59,9 @@ struct JHwBlob : public RefBase { size_t size() const; + void specializeBlobTo(BlobType type); + BlobType type() const; + status_t putBlob(size_t offset, const sp<JHwBlob> &blob); status_t writeToParcel(hardware::Parcel *parcel) const; @@ -74,12 +82,15 @@ private: void *mBuffer; size_t mSize; + BlobType mType; bool mOwnsBuffer; size_t mHandle; Vector<BlobInfo> mSubBlobs; + status_t writeSubBlobsToParcel(hardware::Parcel *parcel, size_t parentHandle) const; + DISALLOW_COPY_AND_ASSIGN(JHwBlob); }; diff --git a/core/jni/android_os_HwParcel.cpp b/core/jni/android_os_HwParcel.cpp index 061349aee96f..7221ca11cc00 100644 --- a/core/jni/android_os_HwParcel.cpp +++ b/core/jni/android_os_HwParcel.cpp @@ -22,6 +22,7 @@ #include "android_os_HwBinder.h" #include "android_os_HwBlob.h" +#include "android_os_NativeHandle.h" #include "android_os_HwRemoteBinder.h" #include <nativehelper/JNIHelp.h> @@ -34,6 +35,7 @@ using android::AndroidRuntime; +using ::android::hardware::hidl_handle; using ::android::hardware::hidl_string; using ::android::hardware::hidl_vec; @@ -436,6 +438,18 @@ static void JHwParcel_native_writeString( signalExceptionForError(env, err); } +static void JHwParcel_native_writeNativeHandle(JNIEnv *env, jobject thiz, jobject valObj) { + sp<JHwParcel> impl = JHwParcel::GetNativeContext(env, thiz); + + EphemeralStorage *storage = impl->getStorage(); + native_handle_t *handle = JNativeHandle::MakeCppNativeHandle(env, valObj, storage); + + hardware::Parcel *parcel = impl->getParcel(); + status_t err = parcel->writeNativeHandleNoDup(handle); + + signalExceptionForError(env, err); +} + #define DEFINE_PARCEL_VECTOR_WRITER(Suffix,Type) \ static void JHwParcel_native_write ## Suffix ## Vector( \ JNIEnv *env, jobject thiz, Type ## Array valObj) { \ @@ -524,12 +538,96 @@ static void JHwParcel_native_writeBoolVector( signalExceptionForError(env, err); } +template<typename T> +static void WriteHidlVector(JNIEnv *env, jobject thiz, const hidl_vec<T> &vec) { + hardware::Parcel *parcel = JHwParcel::GetNativeContext(env, thiz)->getParcel(); + + size_t parentHandle; + status_t err = parcel->writeBuffer(&vec, sizeof(vec), &parentHandle); + + if (err == OK) { + size_t childHandle; + err = ::android::hardware::writeEmbeddedToParcel( + vec, + parcel, + parentHandle, + 0 /* parentOffset */, + &childHandle); + + for (size_t i = 0; (err == OK) && (i < vec.size()); ++i) { + err = ::android::hardware::writeEmbeddedToParcel( + vec[i], + parcel, + childHandle, + i * sizeof(T)); + } + } + + signalExceptionForError(env, err); +} + +static void JHwParcel_native_writeStringVector( + JNIEnv *env, jobject thiz, jobjectArray arrayObj) { + if (arrayObj == nullptr) { + jniThrowException(env, "java/lang/NullPointerException", nullptr); + return; + } + + sp<JHwParcel> impl = JHwParcel::GetNativeContext(env, thiz); + EphemeralStorage *storage = impl->getStorage(); + + void *vecPtr = storage->allocTemporaryStorage(sizeof(hidl_vec<hidl_string>)); + hidl_vec<hidl_string> *vec = new (vecPtr) hidl_vec<hidl_string>(); + + jsize len = env->GetArrayLength(arrayObj); + hidl_string *strings = storage->allocStringArray(len); + vec->setToExternal(strings, len, false /* shouldOwn */); + + for (jsize i = 0; i < len; ++i) { + ScopedLocalRef<jstring> stringObj(env, (jstring) env->GetObjectArrayElement(arrayObj, i)); + + const hidl_string *s = storage->allocTemporaryString(env, stringObj.get()); + strings[i].setToExternal(s->c_str(), s->size()); + } + + WriteHidlVector(env, thiz, *vec); +} + +static void JHwParcel_native_writeNativeHandleVector( + JNIEnv *env, jobject thiz, jobjectArray jHandleArray) { + if (jHandleArray == nullptr) { + jniThrowException(env, "java/lang/NullPointerException", nullptr); + return; + } + + sp<JHwParcel> impl = JHwParcel::GetNativeContext(env, thiz); + EphemeralStorage *storage = impl->getStorage(); + + void *vecPtr = storage->allocTemporaryStorage(sizeof(hidl_vec<hidl_handle>)); + hidl_vec<hidl_handle> *vec = new (vecPtr) hidl_vec<hidl_handle>(); + + jsize len = env->GetArrayLength(jHandleArray); + hidl_handle *handles = static_cast<hidl_handle *>( + storage->allocTemporaryStorage(len * sizeof(hidl_handle))); + + vec->setToExternal(handles, len, false /* shouldOwn */); + for (jsize i = 0; i < len; i++) { + ScopedLocalRef<jobject> jHandle(env, env->GetObjectArrayElement(jHandleArray, i)); + + native_handle_t* handle = JNativeHandle::MakeCppNativeHandle(env, jHandle.get(), storage); + + new (&(handles[i])) hidl_handle(); + handles[i].setTo(handle, false /* shouldOwn */); + } + + WriteHidlVector(env, thiz, *vec); +} + static void JHwParcel_native_writeStrongBinder( JNIEnv *env, jobject thiz, jobject binderObj) { sp<hardware::IBinder> binder; if (binderObj != NULL) { - ScopedLocalRef<jclass> hwBinderKlass( - env, FindClassOrDie(env, PACKAGE_PATH "/HwBinder")); + ScopedLocalRef<jclass> hwBinderKlass(env, FindClassOrDie(env, PACKAGE_PATH "/HwBinder")); ScopedLocalRef<jclass> hwRemoteBinderKlass( env, FindClassOrDie(env, PACKAGE_PATH "/HwRemoteBinder")); @@ -587,6 +685,37 @@ static jstring JHwParcel_native_readString(JNIEnv *env, jobject thiz) { return MakeStringObjFromHidlString(env, *s); } +static jobject ReadNativeHandle(JNIEnv *env, jobject thiz, jboolean embedded, + jlong parentHandle, jlong offset) { + hardware::Parcel *parcel = + JHwParcel::GetNativeContext(env, thiz)->getParcel(); + + const native_handle_t *handle = nullptr; + status_t err = OK; + + if (embedded) { + err = parcel->readNullableEmbeddedNativeHandle(parentHandle, offset, &handle); + } else { + err = parcel->readNullableNativeHandleNoDup(&handle); + } + + if (err != OK) { + signalExceptionForError(env, err); + return nullptr; + } + + return JNativeHandle::MakeJavaNativeHandleObj(env, handle); +} + +static jobject JHwParcel_native_readNativeHandle(JNIEnv *env, jobject thiz) { + return ReadNativeHandle(env, thiz, false /*embedded*/, 0L /*parentHandle*/, 0L /*offset*/); +} + +static jobject JHwParcel_native_readEmbeddedNativeHandle( + JNIEnv *env, jobject thiz, jlong parentHandle, jlong offset) { + return ReadNativeHandle(env, thiz, true /*embedded*/, parentHandle, offset); +} + #define DEFINE_PARCEL_VECTOR_READER(Suffix,Type,NewType) \ static Type ## Array JHwParcel_native_read ## Suffix ## Vector( \ JNIEnv *env, jobject thiz) { \ @@ -630,10 +759,8 @@ DEFINE_PARCEL_VECTOR_READER(Int64,jlong,Long) DEFINE_PARCEL_VECTOR_READER(Float,jfloat,Float) DEFINE_PARCEL_VECTOR_READER(Double,jdouble,Double) -static jbooleanArray JHwParcel_native_readBoolVector( - JNIEnv *env, jobject thiz) { - hardware::Parcel *parcel = - JHwParcel::GetNativeContext(env, thiz)->getParcel(); +static jbooleanArray JHwParcel_native_readBoolVector(JNIEnv *env, jobject thiz) { + hardware::Parcel *parcel = JHwParcel::GetNativeContext(env, thiz)->getParcel(); size_t parentHandle; @@ -692,101 +819,62 @@ static jobjectArray MakeStringArray( return arrayObj; } -static jobjectArray JHwParcel_native_readStringVector( - JNIEnv *env, jobject thiz) { - typedef hidl_vec<hidl_string> string_vec; +template<typename T> +static const hidl_vec<T> *ReadHidlVector(JNIEnv *env, jobject thiz) { + const hidl_vec<T> *vec; - hardware::Parcel *parcel = - JHwParcel::GetNativeContext(env, thiz)->getParcel(); + hardware::Parcel *parcel = JHwParcel::GetNativeContext(env, thiz)->getParcel(); size_t parentHandle; + status_t err = parcel->readBuffer(sizeof(hidl_vec<T>), + &parentHandle, reinterpret_cast<const void **>(&vec)); - const string_vec *vec; - status_t err = parcel->readBuffer(sizeof(*vec), &parentHandle, - reinterpret_cast<const void **>(&vec)); - - if (err != OK) { - signalExceptionForError(env, err); - return NULL; - } - - size_t childHandle; - err = ::android::hardware::readEmbeddedFromParcel( - const_cast<string_vec &>(*vec), - *parcel, parentHandle, 0 /* parentOffset */, &childHandle); + if (err == OK) { + size_t childHandle; + err = ::android::hardware::readEmbeddedFromParcel( + const_cast<hidl_vec<T> &>(*vec), + *parcel, parentHandle, + 0 /* parentOffset */, + &childHandle); - for (size_t i = 0; (err == OK) && (i < vec->size()); ++i) { - err = android::hardware::readEmbeddedFromParcel( - const_cast<hidl_string &>((*vec)[i]), + for (size_t i = 0; (err == OK) && (i < vec->size()); i++) { + err = android::hardware::readEmbeddedFromParcel( + const_cast<T &>((*vec)[i]), *parcel, childHandle, - i * sizeof(hidl_string) /* parentOffset */); + i * sizeof(T) /* parentOffset */); + } } if (err != OK) { signalExceptionForError(env, err); - return NULL; + return nullptr; } - return MakeStringArray(env, &(*vec)[0], vec->size()); + return vec; } -static void JHwParcel_native_writeStringVector( - JNIEnv *env, jobject thiz, jobjectArray arrayObj) { - typedef hidl_vec<hidl_string> string_vec; - - if (arrayObj == NULL) { - jniThrowException(env, "java/lang/NullPointerException", NULL); - return; - } - - jsize len = env->GetArrayLength(arrayObj); - - sp<JHwParcel> impl = JHwParcel::GetNativeContext(env, thiz); - - void *vecPtr = - impl->getStorage()->allocTemporaryStorage(sizeof(string_vec)); - - string_vec *vec = new (vecPtr) string_vec; - - hidl_string *strings = impl->getStorage()->allocStringArray(len); - vec->setToExternal(strings, len); - - for (jsize i = 0; i < len; ++i) { - ScopedLocalRef<jstring> stringObj( - env, - (jstring)env->GetObjectArrayElement(arrayObj, i)); - - const hidl_string *s = - impl->getStorage()->allocTemporaryString(env, stringObj.get()); - - strings[i].setToExternal(s->c_str(), s->size()); - } +static jobjectArray JHwParcel_native_readStringVector( + JNIEnv *env, jobject thiz) { + const hidl_vec<hidl_string> *vec = ReadHidlVector<hidl_string>(env, thiz); + return MakeStringArray(env, &(*vec)[0], vec->size()); +} - hardware::Parcel *parcel = impl->getParcel(); +static jobjectArray JHwParcel_native_readNativeHandleVector( + JNIEnv *env, jobject thiz) { + const hidl_vec<hidl_handle> *vec = ReadHidlVector<hidl_handle>(env, thiz); - size_t parentHandle; - status_t err = parcel->writeBuffer(vec, sizeof(*vec), &parentHandle); + jsize length = vec->size(); + jobjectArray objArray = JNativeHandle::AllocJavaNativeHandleObjArray( + env, length); - if (err == OK) { - size_t childHandle; - err = ::android::hardware::writeEmbeddedToParcel( - *vec, - parcel, - parentHandle, - 0 /* parentOffset */, - &childHandle); + for (jsize i = 0; i < length; i++) { + jobject jHandle = JNativeHandle::MakeJavaNativeHandleObj(env, (*vec)[i].getNativeHandle()); - for (size_t i = 0; (err == OK) && (i < vec->size()); ++i) { - err = ::android::hardware::writeEmbeddedToParcel( - (*vec)[i], - parcel, - childHandle, - i * sizeof(hidl_string)); - } + env->SetObjectArrayElement(objArray, i, jHandle); } - signalExceptionForError(env, err); + return objArray; } static jobject JHwParcel_native_readStrongBinder(JNIEnv *env, jobject thiz) { @@ -890,6 +978,9 @@ static JNINativeMethod gMethods[] = { { "writeString", "(Ljava/lang/String;)V", (void *)JHwParcel_native_writeString }, + { "writeNativeHandle", "(L" PACKAGE_PATH "/NativeHandle;)V", + (void *)JHwParcel_native_writeNativeHandle }, + { "writeBoolVector", "([Z)V", (void *)JHwParcel_native_writeBoolVector }, { "writeInt8Vector", "([B)V", (void *)JHwParcel_native_writeInt8Vector }, { "writeInt16Vector", "([S)V", (void *)JHwParcel_native_writeInt16Vector }, @@ -903,6 +994,9 @@ static JNINativeMethod gMethods[] = { { "writeStringVector", "([Ljava/lang/String;)V", (void *)JHwParcel_native_writeStringVector }, + { "writeNativeHandleVector", "([L" PACKAGE_PATH "/NativeHandle;)V", + (void *)JHwParcel_native_writeNativeHandleVector }, + { "writeStrongBinder", "(L" PACKAGE_PATH "/IHwBinder;)V", (void *)JHwParcel_native_writeStrongBinder }, @@ -920,6 +1014,12 @@ static JNINativeMethod gMethods[] = { { "readString", "()Ljava/lang/String;", (void *)JHwParcel_native_readString }, + { "readNativeHandle", "()L" PACKAGE_PATH "/NativeHandle;", + (void *)JHwParcel_native_readNativeHandle }, + + { "readEmbeddedNativeHandle", "(JJ)L" PACKAGE_PATH "/NativeHandle;", + (void *)JHwParcel_native_readEmbeddedNativeHandle }, + { "readBoolVectorAsArray", "()[Z", (void *)JHwParcel_native_readBoolVector }, @@ -944,6 +1044,9 @@ static JNINativeMethod gMethods[] = { { "readStringVectorAsArray", "()[Ljava/lang/String;", (void *)JHwParcel_native_readStringVector }, + { "readNativeHandleAsArray", "()[L" PACKAGE_PATH "/NativeHandle;", + (void *)JHwParcel_native_readNativeHandleVector }, + { "readStrongBinder", "()L" PACKAGE_PATH "/IHwBinder;", (void *)JHwParcel_native_readStrongBinder }, diff --git a/core/jni/android_os_NativeHandle.cpp b/core/jni/android_os_NativeHandle.cpp new file mode 100644 index 000000000000..770fdb0d5d20 --- /dev/null +++ b/core/jni/android_os_NativeHandle.cpp @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2018 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. + */ + +#include "android_os_NativeHandle.h" + +#include <nativehelper/JNIHelp.h> +#include <nativehelper/ScopedLocalRef.h> + +#include "core_jni_helpers.h" + +#define PACKAGE_PATH "android/os" +#define CLASS_NAME "NativeHandle" +#define CLASS_PATH PACKAGE_PATH "/" CLASS_NAME + +namespace android { + +static struct { + jclass clazz; + jmethodID constructID; // NativeHandle(int[] fds, int[] ints, boolean owns) + + jmethodID getFdsID; // int[] NativeHandle.getFds() + jmethodID getIntsID; // int[] NativeHandle.getInts() +} gNativeHandleFields; + +jobject JNativeHandle::MakeJavaNativeHandleObj( + JNIEnv *env, const native_handle_t *handle) { + if (handle == nullptr) { return nullptr; } + + const int numFds = handle->numFds; + ScopedLocalRef<jintArray> fds(env, env->NewIntArray(numFds)); + env->SetIntArrayRegion(fds.get(), 0, numFds, &(handle->data[0])); + + const int numInts = handle->numInts; + ScopedLocalRef<jintArray> ints(env, env->NewIntArray(numInts)); + env->SetIntArrayRegion(ints.get(), 0, numInts, &(handle->data[numFds])); + + return env->NewObject(gNativeHandleFields.clazz, + gNativeHandleFields.constructID, fds.get(), ints.get(), false /*own*/); +} + +native_handle_t *JNativeHandle::MakeCppNativeHandle( + JNIEnv *env, jobject jHandle, EphemeralStorage *storage) { + if (jHandle == nullptr) { return nullptr; } + + if (!env->IsInstanceOf(jHandle, gNativeHandleFields.clazz)) { + jniThrowException(env, "java/lang/ClassCastException", + "jHandle must be an instance of NativeHandle."); + return nullptr; + } + + ScopedLocalRef<jintArray> fds(env, (jintArray) env->CallObjectMethod( + jHandle, gNativeHandleFields.getFdsID)); + + ScopedLocalRef<jintArray> ints(env, (jintArray) env->CallObjectMethod( + jHandle, gNativeHandleFields.getIntsID)); + + const int numFds = (int) env->GetArrayLength(fds.get()); + const int numInts = (int) env->GetArrayLength(ints.get()); + + native_handle_t *handle = (storage == nullptr) + ? native_handle_create(numFds, numInts) + : storage->allocTemporaryNativeHandle(numFds, numInts); + + if (handle != nullptr) { + env->GetIntArrayRegion(fds.get(), 0, numFds, &(handle->data[0])); + env->GetIntArrayRegion(ints.get(), 0, numInts, &(handle->data[numFds])); + } else { + jniThrowException(env, "java/lang/OutOfMemoryError", + "Failed to allocate memory for native_handle_t."); + } + + return handle; +} + +jobjectArray JNativeHandle::AllocJavaNativeHandleObjArray(JNIEnv *env, jsize length) { + return env->NewObjectArray(length, gNativeHandleFields.clazz, nullptr); +} + +int register_android_os_NativeHandle(JNIEnv *env) { + jclass clazz = FindClassOrDie(env, CLASS_PATH); + gNativeHandleFields.clazz = MakeGlobalRefOrDie(env, clazz); + + gNativeHandleFields.constructID = GetMethodIDOrDie(env, clazz, "<init>", "([I[IZ)V"); + gNativeHandleFields.getFdsID = GetMethodIDOrDie(env, clazz, "getFdsAsIntArray", "()[I"); + gNativeHandleFields.getIntsID = GetMethodIDOrDie(env, clazz, "getInts", "()[I"); + + return 0; +} + +} diff --git a/core/jni/android_os_NativeHandle.h b/core/jni/android_os_NativeHandle.h new file mode 100644 index 000000000000..bbe3ebc1dbd0 --- /dev/null +++ b/core/jni/android_os_NativeHandle.h @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2018 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. + */ + +#ifndef ANDROID_OS_NATIVE_HANDLE_H +#define ANDROID_OS_NATIVE_HANDLE_H + +#include "hwbinder/EphemeralStorage.h" + +#include <cutils/native_handle.h> +#include <jni.h> + +namespace android { + +struct JNativeHandle { + + /** + * Returns a Java NativeHandle object representing the parameterized + * native_handle_t instance. + */ + static jobject MakeJavaNativeHandleObj(JNIEnv *env, const native_handle_t *handle); + + /** + * Returns a heap-allocated native_handle_t instance representing the + * parameterized Java object. Note that if no valid EphemeralStorage* + * parameter is supplied (storage is nullptr), the return value must + * be explicitly deallocated (using native_handle_delete). + */ + static native_handle_t* MakeCppNativeHandle(JNIEnv *env, jobject jHandle, + EphemeralStorage *storage); + + /** + * Returns an (uninitialized) array of Java NativeHandle objects. + */ + static jobjectArray AllocJavaNativeHandleObjArray(JNIEnv *env, jsize length); +}; + +} + +#endif // ANDROID_OS_NATIVE_HANDLE_H diff --git a/core/jni/android_os_Parcel.cpp b/core/jni/android_os_Parcel.cpp index bed239f97951..7ef06dc54945 100644 --- a/core/jni/android_os_Parcel.cpp +++ b/core/jni/android_os_Parcel.cpp @@ -336,8 +336,13 @@ static jbyteArray android_os_Parcel_createByteArray(JNIEnv* env, jclass clazz, j jbyte* a2 = (jbyte*)env->GetPrimitiveArrayCritical(ret, 0); if (a2) { const void* data = parcel->readInplace(len); - memcpy(a2, data, len); + if (data) { + memcpy(a2, data, len); + } env->ReleasePrimitiveArrayCritical(ret, a2, 0); + if (!data) { + ret = NULL; + } } } } @@ -360,9 +365,14 @@ static jboolean android_os_Parcel_readByteArray(JNIEnv* env, jclass clazz, jlong jbyte* ar = (jbyte*)env->GetPrimitiveArrayCritical((jarray)dest, 0); if (ar) { const void* data = parcel->readInplace(len); - memcpy(ar, data, len); + if (data) { + memcpy(ar, data, len); + ret = JNI_TRUE; + } else { + ret = JNI_FALSE; + } + env->ReleasePrimitiveArrayCritical((jarray)dest, ar, 0); - ret = JNI_TRUE; } } return ret; diff --git a/core/jni/android_os_VintfObject.cpp b/core/jni/android_os_VintfObject.cpp index 17ab9563d372..e64d2afe7bf3 100644 --- a/core/jni/android_os_VintfObject.cpp +++ b/core/jni/android_os_VintfObject.cpp @@ -96,7 +96,7 @@ static jobjectArray android_os_VintfObject_report(JNIEnv* env, jclass) return toJavaStringArray(env, cStrings); } -static jint verify(JNIEnv* env, jobjectArray packageInfo, android::vintf::DisabledChecks checks) { +static jint verify(JNIEnv* env, jobjectArray packageInfo, android::vintf::CheckFlags::Type checks) { std::vector<std::string> cPackageInfo; if (packageInfo) { size_t count = env->GetArrayLength(packageInfo); @@ -116,11 +116,11 @@ static jint verify(JNIEnv* env, jobjectArray packageInfo, android::vintf::Disabl } static jint android_os_VintfObject_verify(JNIEnv* env, jclass, jobjectArray packageInfo) { - return verify(env, packageInfo, ::android::vintf::ENABLE_ALL_CHECKS); + return verify(env, packageInfo, ::android::vintf::CheckFlags::ENABLE_ALL_CHECKS); } static jint android_os_VintfObject_verifyWithoutAvb(JNIEnv* env, jclass) { - return verify(env, nullptr, ::android::vintf::DISABLE_AVB_CHECK); + return verify(env, nullptr, ::android::vintf::CheckFlags::DISABLE_AVB_CHECK); } static jobjectArray android_os_VintfObject_getHalNamesAndVersions(JNIEnv* env, jclass) { diff --git a/core/jni/android_util_MemoryIntArray.cpp b/core/jni/android_util_MemoryIntArray.cpp index 2dfbe3ecfef6..b68f9eca70cd 100644 --- a/core/jni/android_util_MemoryIntArray.cpp +++ b/core/jni/android_util_MemoryIntArray.cpp @@ -142,8 +142,6 @@ static void android_util_MemoryIntArray_close(JNIEnv* env, jobject clazz, jint f jniThrowException(env, "java/io/IOException", "ashmem unpinning failed"); return; } - - close(fd); } static jint android_util_MemoryIntArray_get(JNIEnv* env, jobject clazz, diff --git a/core/jni/hwbinder/EphemeralStorage.cpp b/core/jni/hwbinder/EphemeralStorage.cpp index 3b18f2b36b9e..95bb42ea57c6 100644 --- a/core/jni/hwbinder/EphemeralStorage.cpp +++ b/core/jni/hwbinder/EphemeralStorage.cpp @@ -71,6 +71,17 @@ const hidl_string *EphemeralStorage::allocTemporaryString( return s; } +native_handle_t *EphemeralStorage::allocTemporaryNativeHandle( + int numFds, int numInts) { + Item item; + item.mType = TYPE_NATIVE_HANDLE; + item.mObj = nullptr; + item.mPtr = native_handle_create(numFds, numInts); + mItems.push_back(item); + + return static_cast<native_handle_t*>(item.mPtr); +} + #define DEFINE_ALLOC_VECTOR_METHODS(Suffix,Type,NewType) \ const hidl_vec<Type> *EphemeralStorage::allocTemporary ## Suffix ## Vector( \ JNIEnv *env, Type ## Array arrayObj) { \ @@ -145,6 +156,13 @@ void EphemeralStorage::release(JNIEnv *env) { DEFINE_RELEASE_ARRAY_CASE(Float,jfloat,Float) DEFINE_RELEASE_ARRAY_CASE(Double,jdouble,Double) + case TYPE_NATIVE_HANDLE: + { + int err = native_handle_delete(static_cast<native_handle_t *>(item.mPtr)); + CHECK(err == 0); + break; + } + default: CHECK(!"Should not be here"); } diff --git a/core/jni/hwbinder/EphemeralStorage.h b/core/jni/hwbinder/EphemeralStorage.h index f07c782bfdf7..55ef74169eb1 100644 --- a/core/jni/hwbinder/EphemeralStorage.h +++ b/core/jni/hwbinder/EphemeralStorage.h @@ -43,6 +43,8 @@ struct EphemeralStorage { const ::android::hardware::hidl_string *allocTemporaryString( JNIEnv *env, jstring stringObj); + native_handle_t *allocTemporaryNativeHandle(int numFds, int numInts); + DECLARE_ALLOC_METHODS(Int8,jbyte) DECLARE_ALLOC_METHODS(Int16,jshort) DECLARE_ALLOC_METHODS(Int32,jint) @@ -61,6 +63,7 @@ private: TYPE_Int64_ARRAY, TYPE_Float_ARRAY, TYPE_Double_ARRAY, + TYPE_NATIVE_HANDLE, }; struct Item { diff --git a/core/res/res/values-mcc214/config.xml b/core/res/res/values-mcc214/config.xml new file mode 100644 index 000000000000..941084865beb --- /dev/null +++ b/core/res/res/values-mcc214/config.xml @@ -0,0 +1,28 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2018, 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 my 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for different hardware and product builds. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + <!-- String array containing numbers that shouldn't be logged + 016 present here for Spain's gender violence number --> + <string-array translatable="false" name="unloggable_phone_numbers"> + <item>016</item> + </string-array> +</resources> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 9d366942aa1b..8be4aa9608cb 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2706,6 +2706,9 @@ empty string is passed in --> <string name="config_ims_package"/> + <!-- String array containing numbers that shouldn't be logged. Country-specific. --> + <string-array name="unloggable_phone_numbers" /> + <!-- Flag specifying whether or not IMS will use the dynamic ImsResolver --> <bool name="config_dynamic_bind_ims">false</bool> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 65606e31387a..2305e317ebc7 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2233,6 +2233,7 @@ <java-symbol type="drawable" name="decor_maximize_button_light" /> <java-symbol type="color" name="decor_button_dark_color" /> <java-symbol type="color" name="decor_button_light_color" /> + <java-symbol type="array" name="unloggable_phone_numbers" /> <!-- From TelephonyProvider --> <java-symbol type="xml" name="apns" /> diff --git a/core/tests/utiltests/jni/android_util_MemoryIntArrayTest.cpp b/core/tests/utiltests/jni/android_util_MemoryIntArrayTest.cpp index 57ee2d5f6cbb..4b14284fdea5 100644 --- a/core/tests/utiltests/jni/android_util_MemoryIntArrayTest.cpp +++ b/core/tests/utiltests/jni/android_util_MemoryIntArrayTest.cpp @@ -21,36 +21,6 @@ #include <sys/ioctl.h> #include <sys/mman.h> -jint android_util_MemoryIntArrayTest_createAshmem(__attribute__((unused)) JNIEnv* env, - __attribute__((unused)) jobject clazz, - jstring name, jint size) -{ - - if (name == NULL) { - return -1; - } - - if (size < 0) { - return -1; - } - - const char* nameStr = env->GetStringUTFChars(name, NULL); - const int ashmemSize = sizeof(std::atomic_int) * size; - int fd = ashmem_create_region(nameStr, ashmemSize); - env->ReleaseStringUTFChars(name, nameStr); - - if (fd < 0) { - return -1; - } - - int setProtResult = ashmem_set_prot_region(fd, PROT_READ | PROT_WRITE); - if (setProtResult < 0) { - return -1; - } - - return fd; -} - void android_util_MemoryIntArrayTest_setAshmemSize(__attribute__((unused)) JNIEnv* env, __attribute__((unused)) jobject clazz, jint fd, jint size) { diff --git a/core/tests/utiltests/jni/registration.cpp b/core/tests/utiltests/jni/registration.cpp index 0c84d98e9de9..d4fc2fbb83fc 100644 --- a/core/tests/utiltests/jni/registration.cpp +++ b/core/tests/utiltests/jni/registration.cpp @@ -16,25 +16,14 @@ #include <jni.h> -extern jint android_util_MemoryIntArrayTest_createAshmem(JNIEnv* env, - jobject clazz, jstring name, jint size); extern void android_util_MemoryIntArrayTest_setAshmemSize(JNIEnv* env, jobject clazz, jint fd, jint size); extern "C" { - JNIEXPORT jint JNICALL Java_android_util_MemoryIntArrayTest_nativeCreateAshmem( - JNIEnv * env, jobject obj, jstring name, jint size); JNIEXPORT void JNICALL Java_android_util_MemoryIntArrayTest_nativeSetAshmemSize( JNIEnv * env, jobject obj, jint fd, jint size); }; -JNIEXPORT jint JNICALL Java_android_util_MemoryIntArrayTest_nativeCreateAshmem( - __attribute__((unused)) JNIEnv * env,__attribute__((unused)) jobject obj, - jstring name, jint size) -{ - return android_util_MemoryIntArrayTest_createAshmem(env, obj, name, size); -} - JNIEXPORT void JNICALL Java_android_util_MemoryIntArrayTest_nativeSetAshmemSize( __attribute__((unused)) JNIEnv * env,__attribute__((unused)) jobject obj, jint fd, jint size) diff --git a/core/tests/utiltests/src/android/util/MemoryIntArrayTest.java b/core/tests/utiltests/src/android/util/MemoryIntArrayTest.java index 85817bbde1bb..24b33effdb71 100644 --- a/core/tests/utiltests/src/android/util/MemoryIntArrayTest.java +++ b/core/tests/utiltests/src/android/util/MemoryIntArrayTest.java @@ -23,6 +23,7 @@ import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import android.os.Parcel; +import android.os.ParcelFileDescriptor; import android.support.test.runner.AndroidJUnit4; import libcore.io.IoUtils; import org.junit.Test; @@ -251,13 +252,11 @@ public class MemoryIntArrayTest { // Create a MemoryIntArray to muck with MemoryIntArray array = new MemoryIntArray(1); - // Create the fd to stuff in the MemoryIntArray - final int fd = nativeCreateAshmem("foo", 1); - - // Replace the fd with our ahsmem region - Field fdFiled = MemoryIntArray.class.getDeclaredField("mFd"); - fdFiled.setAccessible(true); - fdFiled.set(array, fd); + // Grab the internal ashmem fd. + Field fdField = MemoryIntArray.class.getDeclaredField("mFd"); + fdField.setAccessible(true); + int fd = ((ParcelFileDescriptor)fdField.get(array)).getFd(); + assertTrue("fd must be valid", fd != -1); CountDownLatch countDownLatch = new CountDownLatch(2); @@ -292,10 +291,9 @@ public class MemoryIntArrayTest { } if (!success) { - fail("MemoryIntArray should catch ahshmem size changing under it"); + fail("MemoryIntArray should catch ashmem size changing under it"); } } - private native int nativeCreateAshmem(String name, int size); private native void nativeSetAshmemSize(int fd, int size); } diff --git a/location/java/android/location/Country.java b/location/java/android/location/Country.java index 7c1485d88a3e..6f82b7849a82 100644 --- a/location/java/android/location/Country.java +++ b/location/java/android/location/Country.java @@ -16,6 +16,7 @@ package android.location; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; import android.os.SystemClock; @@ -78,6 +79,7 @@ public class Country implements Parcelable { * <li>{@link #COUNTRY_SOURCE_LOCALE}</li> * </ul> */ + @UnsupportedAppUsage public Country(final String countryIso, final int source) { if (countryIso == null || source < COUNTRY_SOURCE_NETWORK || source > COUNTRY_SOURCE_LOCALE) { @@ -107,6 +109,7 @@ public class Country implements Parcelable { /** * @return the ISO 3166-1 two letters country code */ + @UnsupportedAppUsage public final String getCountryIso() { return mCountryIso; } @@ -121,6 +124,7 @@ public class Country implements Parcelable { * <li>{@link #COUNTRY_SOURCE_LOCALE}</li> * </ul> */ + @UnsupportedAppUsage public final int getSource() { return mSource; } diff --git a/location/java/android/location/CountryDetector.java b/location/java/android/location/CountryDetector.java index ec6dfb713b10..119d1e0071e5 100644 --- a/location/java/android/location/CountryDetector.java +++ b/location/java/android/location/CountryDetector.java @@ -19,6 +19,7 @@ package android.location; import java.util.HashMap; import android.annotation.SystemService; +import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.os.Handler; import android.os.Looper; @@ -87,6 +88,7 @@ public class CountryDetector { * create an instance of this class is using the factory * Context.getSystemService. */ + @UnsupportedAppUsage public CountryDetector(ICountryDetector service) { mService = service; mListeners = new HashMap<CountryListener, ListenerTransport>(); @@ -98,6 +100,7 @@ public class CountryDetector { * @return the country if it is available immediately, otherwise null will * be returned. */ + @UnsupportedAppUsage public Country detectCountry() { try { return mService.detectCountry(); @@ -116,6 +119,7 @@ public class CountryDetector { * implement the callback mechanism. If looper is null then the * callbacks will be called on the main thread. */ + @UnsupportedAppUsage public void addCountryListener(CountryListener listener, Looper looper) { synchronized (mListeners) { if (!mListeners.containsKey(listener)) { @@ -133,6 +137,7 @@ public class CountryDetector { /** * Remove the listener */ + @UnsupportedAppUsage public void removeCountryListener(CountryListener listener) { synchronized (mListeners) { ListenerTransport transport = mListeners.get(listener); diff --git a/location/java/android/location/CountryListener.java b/location/java/android/location/CountryListener.java index e36db412eaec..70a83c5acdd9 100644 --- a/location/java/android/location/CountryListener.java +++ b/location/java/android/location/CountryListener.java @@ -16,6 +16,8 @@ package android.location; +import android.annotation.UnsupportedAppUsage; + /** * The listener for receiving the notification when the country is detected or * changed @@ -26,5 +28,6 @@ public interface CountryListener { /** * @param country the changed or detected country. */ + @UnsupportedAppUsage void onCountryDetected(Country country); } diff --git a/location/java/android/location/GeocoderParams.java b/location/java/android/location/GeocoderParams.java index 174fe3e0af2e..d90e4b528f31 100644 --- a/location/java/android/location/GeocoderParams.java +++ b/location/java/android/location/GeocoderParams.java @@ -16,6 +16,7 @@ package android.location; +import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.os.Parcel; import android.os.Parcelable; @@ -53,6 +54,7 @@ public class GeocoderParams implements Parcelable { /** * returns the Geocoder's locale */ + @UnsupportedAppUsage public Locale getLocale() { return mLocale; } @@ -60,6 +62,7 @@ public class GeocoderParams implements Parcelable { /** * returns the package name of the Geocoder's client */ + @UnsupportedAppUsage public String getClientPackage() { return mPackageName; } diff --git a/location/java/android/location/Geofence.java b/location/java/android/location/Geofence.java index 5de779a29cdd..ed2aa64879aa 100644 --- a/location/java/android/location/Geofence.java +++ b/location/java/android/location/Geofence.java @@ -16,6 +16,7 @@ package android.location; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; @@ -98,6 +99,7 @@ public final class Geofence implements Parcelable { } } + @UnsupportedAppUsage public static final Parcelable.Creator<Geofence> CREATOR = new Parcelable.Creator<Geofence>() { @Override public Geofence createFromParcel(Parcel in) { diff --git a/location/java/android/location/GpsStatus.java b/location/java/android/location/GpsStatus.java index b601cde35305..d90a597b1cbb 100644 --- a/location/java/android/location/GpsStatus.java +++ b/location/java/android/location/GpsStatus.java @@ -16,6 +16,7 @@ package android.location; +import android.annotation.UnsupportedAppUsage; import android.util.SparseArray; import java.util.Iterator; @@ -206,6 +207,7 @@ public final class GpsStatus { status.mAzimuths); } + @UnsupportedAppUsage void setTimeToFirstFix(int ttff) { mTimeToFirstFix = ttff; } diff --git a/location/java/android/location/Location.java b/location/java/android/location/Location.java index c9d2f7f8bfd4..682974cc26b0 100644 --- a/location/java/android/location/Location.java +++ b/location/java/android/location/Location.java @@ -17,6 +17,7 @@ package android.location; import android.annotation.SystemApi; +import android.annotation.UnsupportedAppUsage; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; @@ -122,8 +123,10 @@ public class Location implements Parcelable { } }; + @UnsupportedAppUsage private String mProvider; private long mTime = 0; + @UnsupportedAppUsage private long mElapsedRealtimeNanos = 0; private double mLatitude = 0.0; private double mLongitude = 0.0; @@ -1151,6 +1154,7 @@ public class Location implements Parcelable { * @param value the Location to attach * @hide */ + @UnsupportedAppUsage public void setExtraLocation(String key, Location value) { if (mExtras == null) { mExtras = new Bundle(); diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index 6eb3d8d151a6..6c4150c4a8c7 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -30,6 +30,7 @@ import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.annotation.SystemService; import android.annotation.TestApi; +import android.annotation.UnsupportedAppUsage; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; @@ -74,6 +75,7 @@ public class LocationManager { private static final String TAG = "LocationManager"; private final Context mContext; + @UnsupportedAppUsage private final ILocationManager mService; private final GnssMeasurementCallbackTransport mGnssMeasurementCallbackTransport; private final GnssNavigationMessageCallbackTransport mGnssNavigationMessageCallbackTransport; @@ -995,6 +997,7 @@ public class LocationManager { } } + @UnsupportedAppUsage private void requestLocationUpdates(LocationRequest request, LocationListener listener, Looper looper, PendingIntent intent) { @@ -2319,6 +2322,7 @@ public class LocationManager { * * @hide */ + @UnsupportedAppUsage public boolean sendNiResponse(int notifId, int userResponse) { try { return mService.sendNiResponse(notifId, userResponse); diff --git a/location/java/android/location/LocationRequest.java b/location/java/android/location/LocationRequest.java index 96a0817ae561..2d7f7e309004 100644 --- a/location/java/android/location/LocationRequest.java +++ b/location/java/android/location/LocationRequest.java @@ -17,6 +17,7 @@ package android.location; import android.annotation.SystemApi; +import android.annotation.UnsupportedAppUsage; import android.os.Parcel; import android.os.Parcelable; import android.os.SystemClock; @@ -141,16 +142,26 @@ public final class LocationRequest implements Parcelable { */ private static final double FASTEST_INTERVAL_FACTOR = 6.0; // 6x + @UnsupportedAppUsage private int mQuality = POWER_LOW; + @UnsupportedAppUsage private long mInterval = 60 * 60 * 1000; // 60 minutes + @UnsupportedAppUsage private long mFastestInterval = (long) (mInterval / FASTEST_INTERVAL_FACTOR); // 10 minutes + @UnsupportedAppUsage private boolean mExplicitFastestInterval = false; + @UnsupportedAppUsage private long mExpireAt = Long.MAX_VALUE; // no expiry + @UnsupportedAppUsage private int mNumUpdates = Integer.MAX_VALUE; // no expiry + @UnsupportedAppUsage private float mSmallestDisplacement = 0.0f; // meters + @UnsupportedAppUsage private WorkSource mWorkSource = null; + @UnsupportedAppUsage private boolean mHideFromAppOps = false; // True if this request shouldn't be counted by AppOps + @UnsupportedAppUsage private String mProvider = LocationManager.FUSED_PROVIDER; // for deprecated APIs that explicitly request a provider @@ -592,12 +603,14 @@ public final class LocationRequest implements Parcelable { return mHideFromAppOps; } + @UnsupportedAppUsage private static void checkInterval(long millis) { if (millis < 0) { throw new IllegalArgumentException("invalid interval: " + millis); } } + @UnsupportedAppUsage private static void checkQuality(int quality) { switch (quality) { case ACCURACY_FINE: @@ -612,12 +625,14 @@ public final class LocationRequest implements Parcelable { } } + @UnsupportedAppUsage private static void checkDisplacement(float meters) { if (meters < 0.0f) { throw new IllegalArgumentException("invalid displacement: " + meters); } } + @UnsupportedAppUsage private static void checkProvider(String name) { if (name == null) { throw new IllegalArgumentException("invalid provider: " + name); diff --git a/media/java/android/media/MediaHTTPService.java b/media/java/android/media/MediaHTTPService.java index 3a0e58a172fe..98517d1e363d 100644 --- a/media/java/android/media/MediaHTTPService.java +++ b/media/java/android/media/MediaHTTPService.java @@ -16,6 +16,7 @@ package android.media; +import android.annotation.Nullable; import android.os.IBinder; import android.util.Log; @@ -28,10 +29,10 @@ import java.util.List; /** @hide */ public class MediaHTTPService extends IMediaHTTPService.Stub { private static final String TAG = "MediaHTTPService"; - private List<HttpCookie> mCookies; + @Nullable private List<HttpCookie> mCookies; private Boolean mCookieStoreInitialized = new Boolean(false); - public MediaHTTPService(List<HttpCookie> cookies) { + public MediaHTTPService(@Nullable List<HttpCookie> cookies) { mCookies = cookies; Log.v(TAG, "MediaHTTPService(" + this + "): Cookies: " + cookies); } diff --git a/media/java/android/mtp/MtpPropertyList.java b/media/java/android/mtp/MtpPropertyList.java index ede90dac517c..557f099c25c1 100644 --- a/media/java/android/mtp/MtpPropertyList.java +++ b/media/java/android/mtp/MtpPropertyList.java @@ -16,6 +16,7 @@ package android.mtp; +import android.annotation.UnsupportedAppUsage; import java.util.ArrayList; import java.util.List; @@ -49,6 +50,7 @@ class MtpPropertyList { mStringValues = new ArrayList<>(); } + @UnsupportedAppUsage public void append(int handle, int property, int type, long value) { mObjectHandles.add(handle); mPropertyCodes.add(property); @@ -57,6 +59,7 @@ class MtpPropertyList { mStringValues.add(null); } + @UnsupportedAppUsage public void append(int handle, int property, String value) { mObjectHandles.add(handle); mPropertyCodes.add(property); diff --git a/media/java/android/mtp/MtpStorage.java b/media/java/android/mtp/MtpStorage.java index 2625e0cc932c..c714b3cad296 100644 --- a/media/java/android/mtp/MtpStorage.java +++ b/media/java/android/mtp/MtpStorage.java @@ -16,6 +16,7 @@ package android.mtp; +import android.annotation.UnsupportedAppUsage; import android.os.storage.StorageVolume; /** @@ -46,6 +47,7 @@ public class MtpStorage { * * @return the storage ID */ + @UnsupportedAppUsage public final int getStorageId() { return mStorageId; } @@ -55,6 +57,7 @@ public class MtpStorage { * * @return the storage file path */ + @UnsupportedAppUsage public final String getPath() { return mPath; } diff --git a/media/lib/remotedisplay/Android.bp b/media/lib/remotedisplay/Android.bp new file mode 100644 index 000000000000..1e9320d1414d --- /dev/null +++ b/media/lib/remotedisplay/Android.bp @@ -0,0 +1,35 @@ +// +// Copyright (C) 2018 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. +// + +droiddoc { + name: "com.android.media.remotedisplay.stubs-gen-docs", + srcs: [ + "java/**/*.java", + ], + args: " -hide 111 -hide 113 -hide 125 -hide 126 -hide 127 -hide 128 " + + " -stubpackages com.android.media.remotedisplay " + + " -nodocs ", + custom_template: "droiddoc-templates-sdk", + installable: false, +} + +java_library_static { + name: "com.android.media.remotedisplay.stubs", + srcs: [ + ":com.android.media.remotedisplay.stubs-gen-docs", + ], + sdk_version: "current", +} diff --git a/media/lib/remotedisplay/Android.mk b/media/lib/remotedisplay/Android.mk index 63f9f9197529..e88c0f1a8dc8 100644 --- a/media/lib/remotedisplay/Android.mk +++ b/media/lib/remotedisplay/Android.mk @@ -42,24 +42,3 @@ LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions LOCAL_SRC_FILES := $(LOCAL_MODULE) include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) -LOCAL_MODULE := com.android.media.remotedisplay.stubs-gen -LOCAL_MODULE_CLASS := JAVA_LIBRARIES -LOCAL_SRC_FILES := $(call all-java-files-under,java) -LOCAL_DROIDDOC_STUB_OUT_DIR := $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/com.android.media.remotedisplay.stubs_intermediates/src -LOCAL_DROIDDOC_OPTIONS:= \ - -hide 111 -hide 113 -hide 125 -hide 126 -hide 127 -hide 128 \ - -stubpackages com.android.media.remotedisplay \ - -nodocs -LOCAL_UNINSTALLABLE_MODULE := true -include $(BUILD_DROIDDOC) -com_android_media_remotedisplay_gen_stamp := $(full_target) - -include $(CLEAR_VARS) -LOCAL_MODULE := com.android.media.remotedisplay.stubs -LOCAL_SDK_VERSION := current -LOCAL_SOURCE_FILES_ALL_GENERATED := true -LOCAL_ADDITIONAL_DEPENDENCIES := $(com_android_media_remotedisplay_gen_stamp) -com_android_media_remotedisplay_gen_stamp := -include $(BUILD_STATIC_JAVA_LIBRARY) diff --git a/opengl/java/android/opengl/EGL14.java b/opengl/java/android/opengl/EGL14.java index 53ec6c8980ef..728e6e18cc31 100644 --- a/opengl/java/android/opengl/EGL14.java +++ b/opengl/java/android/opengl/EGL14.java @@ -18,6 +18,7 @@ package android.opengl; +import android.annotation.UnsupportedAppUsage; import android.graphics.SurfaceTexture; import android.view.Surface; import android.view.SurfaceView; @@ -163,6 +164,7 @@ public static final int EGL_CORE_NATIVE_ENGINE = 0x305B; /** * {@hide} */ + @UnsupportedAppUsage public static native EGLDisplay eglGetDisplay( long display_id ); diff --git a/opengl/java/android/opengl/GLES20.java b/opengl/java/android/opengl/GLES20.java index 137f2f5c2c5e..d66e7ac84a3b 100644 --- a/opengl/java/android/opengl/GLES20.java +++ b/opengl/java/android/opengl/GLES20.java @@ -19,6 +19,8 @@ package android.opengl; +import android.annotation.UnsupportedAppUsage; + /** OpenGL ES 2.0 */ public class GLES20 { @@ -824,6 +826,7 @@ public class GLES20 { // C function void glGetActiveAttrib ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) /** @hide Method is broken, but used to be public (b/6006380) */ + @UnsupportedAppUsage public static native void glGetActiveAttrib( int program, int index, @@ -872,6 +875,7 @@ public class GLES20 { // C function void glGetActiveUniform ( GLuint program, GLuint index, GLsizei bufsize, GLsizei *length, GLint *size, GLenum *type, char *name ) /** @hide Method is broken, but used to be public (b/6006380) */ + @UnsupportedAppUsage public static native void glGetActiveUniform( int program, int index, diff --git a/opengl/java/android/opengl/GLSurfaceView.java b/opengl/java/android/opengl/GLSurfaceView.java index 0f0a7e9d1314..8a3e6a0b0fd5 100644 --- a/opengl/java/android/opengl/GLSurfaceView.java +++ b/opengl/java/android/opengl/GLSurfaceView.java @@ -16,6 +16,7 @@ package android.opengl; +import android.annotation.UnsupportedAppUsage; import android.content.Context; import android.os.Trace; import android.util.AttributeSet; @@ -1235,6 +1236,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback EGLDisplay mEglDisplay; EGLSurface mEglSurface; EGLConfig mEglConfig; + @UnsupportedAppUsage EGLContext mEglContext; } @@ -1844,6 +1846,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback // End of member variables protected by the sGLThreadManager monitor. + @UnsupportedAppUsage private EglHelper mEglHelper; /** @@ -1919,7 +1922,9 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback private final WeakReference<GLSurfaceView> mThisWeakRef = new WeakReference<GLSurfaceView>(this); + @UnsupportedAppUsage private GLThread mGLThread; + @UnsupportedAppUsage private Renderer mRenderer; private boolean mDetached; private EGLConfigChooser mEGLConfigChooser; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java index f729120f98bc..c984579f5f9a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java @@ -976,7 +976,7 @@ public class NetworkControllerImpl extends BroadcastReceiver private SubscriptionInfo addSignalController(int id, int simSlotIndex) { SubscriptionInfo info = new SubscriptionInfo(id, "", simSlotIndex, "", "", 0, 0, "", 0, - null, null, null, ""); + null, null, null, "", false, null, null); MobileSignalController controller = new MobileSignalController(mContext, mConfig, mHasMobileDataFeature, mPhone, mCallbackHandler, this, info, mSubDefaults, mReceiverHandler.getLooper()); diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java index 1bdb7ad3c3fc..196d9bc32e75 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java @@ -119,7 +119,9 @@ public class TunerServiceImpl extends TunerService { // 3 Removed because of a revert. if (oldVersion < 4) { // Delay this so that we can wait for everything to be registered first. - new Handler(Dependency.get(Dependency.BG_LOOPER)).postDelayed(() -> clearAll(), 5000); + final int user = mCurrentUser; + new Handler(Dependency.get(Dependency.BG_LOOPER)).postDelayed( + () -> clearAllFromUser(user), 5000); } setValue(TUNER_VERSION, newVersion); } @@ -221,6 +223,10 @@ public class TunerServiceImpl extends TunerService { @Override public void clearAll() { + clearAllFromUser(mCurrentUser); + } + + public void clearAllFromUser(int user) { // A couple special cases. Settings.Global.putString(mContentResolver, DemoMode.DEMO_MODE_ALLOWED, null); Intent intent = new Intent(DemoMode.ACTION_DEMO); @@ -231,7 +237,7 @@ public class TunerServiceImpl extends TunerService { if (ArrayUtils.contains(RESET_BLACKLIST, key)) { continue; } - Settings.Secure.putString(mContentResolver, key, null); + Settings.Secure.putStringForUser(mContentResolver, key, null, user); } } diff --git a/packages/WAPPushManager/AndroidManifest.xml b/packages/WAPPushManager/AndroidManifest.xml index 89e9d6ab8685..14e6e91e3a25 100644 --- a/packages/WAPPushManager/AndroidManifest.xml +++ b/packages/WAPPushManager/AndroidManifest.xml @@ -24,7 +24,8 @@ android:protectionLevel="signatureOrSystem" /> <original-package android:name="com.android.smspush" /> - <application> + <application + android:allowClearUserData="false"> <service android:name=".WapPushManager" android:permission="com.android.smspush.WAPPUSH_MANAGER_BIND" android:exported="true"> diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 6b3f8f8eb216..ba5f32308a30 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -2194,8 +2194,7 @@ public class ConnectivityService extends IConnectivityManager.Stub break; } case NetworkAgent.EVENT_NETWORK_SCORE_CHANGED: { - Integer score = (Integer) msg.obj; - if (score != null) updateNetworkScore(nai, score.intValue()); + updateNetworkScore(nai, msg.arg1); break; } case NetworkAgent.EVENT_SET_EXPLICITLY_SELECTED: { @@ -2203,7 +2202,7 @@ public class ConnectivityService extends IConnectivityManager.Stub loge("ERROR: already-connected network explicitly selected."); } nai.networkMisc.explicitlySelected = true; - nai.networkMisc.acceptUnvalidated = (boolean) msg.obj; + nai.networkMisc.acceptUnvalidated = msg.arg1 == 1; break; } case NetworkAgent.EVENT_PACKET_KEEPALIVE: { diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java index 379140258f30..0d60d1d6e6d5 100644 --- a/services/core/java/com/android/server/NetworkManagementService.java +++ b/services/core/java/com/android/server/NetworkManagementService.java @@ -641,12 +641,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub SystemProperties.set(PROP_QTAGUID_ENABLED, mBandwidthControlEnabled ? "1" : "0"); - try { - mConnector.execute("strict", "enable"); - mStrictEnabled = true; - } catch (NativeDaemonConnectorException e) { - Log.wtf(TAG, "Failed strict enable", e); - } + mStrictEnabled = true; setDataSaverModeEnabled(mDataSaverMode); @@ -1804,26 +1799,26 @@ public class NetworkManagementService extends INetworkManagementService.Stub } private void applyUidCleartextNetworkPolicy(int uid, int policy) { - final String policyString; + final int policyValue; switch (policy) { case StrictMode.NETWORK_POLICY_ACCEPT: - policyString = "accept"; + policyValue = INetd.PENALTY_POLICY_ACCEPT; break; case StrictMode.NETWORK_POLICY_LOG: - policyString = "log"; + policyValue = INetd.PENALTY_POLICY_LOG; break; case StrictMode.NETWORK_POLICY_REJECT: - policyString = "reject"; + policyValue = INetd.PENALTY_POLICY_REJECT; break; default: throw new IllegalArgumentException("Unknown policy " + policy); } try { - mConnector.execute("strict", "set_uid_cleartext_policy", uid, policyString); + mNetdService.strictUidCleartextPenalty(uid, policyValue); mUidCleartextPolicy.put(uid, policy); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + } catch (RemoteException | ServiceSpecificException e) { + throw new IllegalStateException(e); } } @@ -1841,6 +1836,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub return; } + // TODO: remove this code after removing prepareNativeDaemon() if (!mStrictEnabled) { // Module isn't enabled yet; stash the requested policy away to // apply later once the daemon is connected. @@ -2307,9 +2303,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { - mConnector.execute("clatd", "start", interfaceName); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mNetdService.clatdStart(interfaceName); + } catch (RemoteException | ServiceSpecificException e) { + throw new IllegalStateException(e); } } @@ -2318,25 +2314,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); try { - mConnector.execute("clatd", "stop", interfaceName); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); - } - } - - @Override - public boolean isClatdStarted(String interfaceName) { - mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - - final NativeDaemonEvent event; - try { - event = mConnector.execute("clatd", "status", interfaceName); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mNetdService.clatdStop(interfaceName); + } catch (RemoteException | ServiceSpecificException e) { + throw new IllegalStateException(e); } - - event.checkCode(ClatdStatusResult); - return event.getMessage().endsWith("started"); } @Override diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java index b0be4a9799bb..cf49d2a55d61 100644 --- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java +++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java @@ -409,7 +409,7 @@ public class PackageDexOptimizer { // TODO(calin): maybe add a separate call. mInstaller.dexopt(path, info.uid, info.packageName, isa, /*dexoptNeeded*/ 0, /*oatDir*/ null, dexoptFlags, - compilerFilter, info.volumeUuid, classLoaderContext, info.seInfoUser, + compilerFilter, info.volumeUuid, classLoaderContext, info.seInfo, options.isDowngrade(), info.targetSdkVersion, /*profileName*/ null, /*dexMetadataPath*/ null, getReasonName(reason)); } diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index 55fb7e3a3961..d7376691dd66 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -200,6 +200,13 @@ public class CarrierConfigManager { public static final String KEY_ALLOW_EMERGENCY_NUMBERS_IN_CALL_LOG_BOOL = "allow_emergency_numbers_in_call_log_bool"; + /** + * A string array containing numbers that shouldn't be included in the call log. + * @hide + */ + public static final String KEY_UNLOGGABLE_NUMBERS_STRING_ARRAY = + "unloggable_numbers_string_array"; + /** If true, removes the Voice Privacy option from Call Settings */ public static final String KEY_VOICE_PRIVACY_DISABLE_UI_BOOL = "voice_privacy_disable_ui_bool"; @@ -2008,6 +2015,7 @@ public class CarrierConfigManager { sDefaults.putBoolean(KEY_AUTO_RETRY_FAILED_WIFI_EMERGENCY_CALL, false); sDefaults.putBoolean(KEY_ADDITIONAL_CALL_SETTING_BOOL, true); sDefaults.putBoolean(KEY_ALLOW_EMERGENCY_NUMBERS_IN_CALL_LOG_BOOL, false); + sDefaults.putStringArray(KEY_UNLOGGABLE_NUMBERS_STRING_ARRAY, null); sDefaults.putBoolean(KEY_ALLOW_LOCAL_DTMF_TONES_BOOL, true); sDefaults.putBoolean(KEY_PLAY_CALL_RECORDING_TONE_BOOL, false); sDefaults.putBoolean(KEY_APN_EXPAND_BOOL, true); diff --git a/telephony/java/android/telephony/CellIdentity.java b/telephony/java/android/telephony/CellIdentity.java index 2a41829dcc2f..c240dbb684e6 100644 --- a/telephony/java/android/telephony/CellIdentity.java +++ b/telephony/java/android/telephony/CellIdentity.java @@ -17,14 +17,11 @@ package android.telephony; import android.annotation.CallSuper; -import android.annotation.IntDef; import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; import java.util.Objects; /** @@ -32,44 +29,6 @@ import java.util.Objects; * CellIdentityXxx which represents cell identity for specific network access technology. */ public abstract class CellIdentity implements Parcelable { - /** - * Cell identity type - * @hide - */ - @Retention(RetentionPolicy.SOURCE) - @IntDef(prefix = "TYPE_", value = {TYPE_GSM, TYPE_CDMA, TYPE_LTE, TYPE_WCDMA, TYPE_TDSCDMA}) - public @interface Type {} - - /** - * Unknown cell identity type - * @hide - */ - public static final int TYPE_UNKNOWN = 0; - /** - * GSM cell identity type - * @hide - */ - public static final int TYPE_GSM = 1; - /** - * CDMA cell identity type - * @hide - */ - public static final int TYPE_CDMA = 2; - /** - * LTE cell identity type - * @hide - */ - public static final int TYPE_LTE = 3; - /** - * WCDMA cell identity type - * @hide - */ - public static final int TYPE_WCDMA = 4; - /** - * TDS-CDMA cell identity type - * @hide - */ - public static final int TYPE_TDSCDMA = 5; /** @hide */ public static final int INVALID_CHANNEL_NUMBER = -1; @@ -138,7 +97,9 @@ public abstract class CellIdentity implements Parcelable { * @hide * @return The type of the cell identity */ - public @Type int getType() { return mType; } + public @CellInfo.Type int getType() { + return mType; + } /** * Returns the channel number of the cell identity. @@ -217,11 +178,12 @@ public abstract class CellIdentity implements Parcelable { public CellIdentity createFromParcel(Parcel in) { int type = in.readInt(); switch (type) { - case TYPE_GSM: return CellIdentityGsm.createFromParcelBody(in); - case TYPE_WCDMA: return CellIdentityWcdma.createFromParcelBody(in); - case TYPE_CDMA: return CellIdentityCdma.createFromParcelBody(in); - case TYPE_LTE: return CellIdentityLte.createFromParcelBody(in); - case TYPE_TDSCDMA: return CellIdentityTdscdma.createFromParcelBody(in); + case CellInfo.TYPE_GSM: return CellIdentityGsm.createFromParcelBody(in); + case CellInfo.TYPE_WCDMA: return CellIdentityWcdma.createFromParcelBody(in); + case CellInfo.TYPE_CDMA: return CellIdentityCdma.createFromParcelBody(in); + case CellInfo.TYPE_LTE: return CellIdentityLte.createFromParcelBody(in); + case CellInfo.TYPE_TDSCDMA: + return CellIdentityTdscdma.createFromParcelBody(in); default: throw new IllegalArgumentException("Bad Cell identity Parcel"); } } diff --git a/telephony/java/android/telephony/CellIdentityCdma.java b/telephony/java/android/telephony/CellIdentityCdma.java index 58a2c455636b..28090666ea68 100644 --- a/telephony/java/android/telephony/CellIdentityCdma.java +++ b/telephony/java/android/telephony/CellIdentityCdma.java @@ -54,7 +54,7 @@ public final class CellIdentityCdma extends CellIdentity { * @hide */ public CellIdentityCdma() { - super(TAG, TYPE_CDMA, null, null, null, null); + super(TAG, CellInfo.TYPE_CDMA, null, null, null, null); mNetworkId = Integer.MAX_VALUE; mSystemId = Integer.MAX_VALUE; mBasestationId = Integer.MAX_VALUE; @@ -94,7 +94,7 @@ public final class CellIdentityCdma extends CellIdentity { */ public CellIdentityCdma(int nid, int sid, int bid, int lon, int lat, String alphal, String alphas) { - super(TAG, TYPE_CDMA, null, null, alphal, alphas); + super(TAG, CellInfo.TYPE_CDMA, null, null, alphal, alphas); mNetworkId = nid; mSystemId = sid; mBasestationId = bid; @@ -213,7 +213,7 @@ public final class CellIdentityCdma extends CellIdentity { @Override public void writeToParcel(Parcel dest, int flags) { if (DBG) log("writeToParcel(Parcel, int): " + toString()); - super.writeToParcel(dest, TYPE_CDMA); + super.writeToParcel(dest, CellInfo.TYPE_CDMA); dest.writeInt(mNetworkId); dest.writeInt(mSystemId); dest.writeInt(mBasestationId); @@ -223,7 +223,7 @@ public final class CellIdentityCdma extends CellIdentity { /** Construct from Parcel, type has already been processed */ private CellIdentityCdma(Parcel in) { - super(TAG, TYPE_CDMA, in); + super(TAG, CellInfo.TYPE_CDMA, in); mNetworkId = in.readInt(); mSystemId = in.readInt(); mBasestationId = in.readInt(); diff --git a/telephony/java/android/telephony/CellIdentityGsm.java b/telephony/java/android/telephony/CellIdentityGsm.java index c697880faced..4031254ab071 100644 --- a/telephony/java/android/telephony/CellIdentityGsm.java +++ b/telephony/java/android/telephony/CellIdentityGsm.java @@ -42,7 +42,7 @@ public final class CellIdentityGsm extends CellIdentity { * @hide */ public CellIdentityGsm() { - super(TAG, TYPE_GSM, null, null, null, null); + super(TAG, CellInfo.TYPE_GSM, null, null, null, null); mLac = Integer.MAX_VALUE; mCid = Integer.MAX_VALUE; mArfcn = Integer.MAX_VALUE; @@ -92,7 +92,7 @@ public final class CellIdentityGsm extends CellIdentity { */ public CellIdentityGsm(int lac, int cid, int arfcn, int bsic, String mccStr, String mncStr, String alphal, String alphas) { - super(TAG, TYPE_GSM, mccStr, mncStr, alphal, alphas); + super(TAG, CellInfo.TYPE_GSM, mccStr, mncStr, alphal, alphas); mLac = lac; mCid = cid; mArfcn = arfcn; @@ -237,7 +237,7 @@ public final class CellIdentityGsm extends CellIdentity { @Override public void writeToParcel(Parcel dest, int flags) { if (DBG) log("writeToParcel(Parcel, int): " + toString()); - super.writeToParcel(dest, TYPE_GSM); + super.writeToParcel(dest, CellInfo.TYPE_GSM); dest.writeInt(mLac); dest.writeInt(mCid); dest.writeInt(mArfcn); @@ -246,7 +246,7 @@ public final class CellIdentityGsm extends CellIdentity { /** Construct from Parcel, type has already been processed */ private CellIdentityGsm(Parcel in) { - super(TAG, TYPE_GSM, in); + super(TAG, CellInfo.TYPE_GSM, in); mLac = in.readInt(); mCid = in.readInt(); mArfcn = in.readInt(); diff --git a/telephony/java/android/telephony/CellIdentityLte.java b/telephony/java/android/telephony/CellIdentityLte.java index 177fcedf8c15..52573727e1c6 100644 --- a/telephony/java/android/telephony/CellIdentityLte.java +++ b/telephony/java/android/telephony/CellIdentityLte.java @@ -44,7 +44,7 @@ public final class CellIdentityLte extends CellIdentity { * @hide */ public CellIdentityLte() { - super(TAG, TYPE_LTE, null, null, null, null); + super(TAG, CellInfo.TYPE_LTE, null, null, null, null); mCi = Integer.MAX_VALUE; mPci = Integer.MAX_VALUE; mTac = Integer.MAX_VALUE; @@ -99,7 +99,7 @@ public final class CellIdentityLte extends CellIdentity { */ public CellIdentityLte(int ci, int pci, int tac, int earfcn, int bandwidth, String mccStr, String mncStr, String alphal, String alphas) { - super(TAG, TYPE_LTE, mccStr, mncStr, alphal, alphas); + super(TAG, CellInfo.TYPE_LTE, mccStr, mncStr, alphal, alphas); mCi = ci; mPci = pci; mTac = tac; @@ -241,7 +241,7 @@ public final class CellIdentityLte extends CellIdentity { @Override public void writeToParcel(Parcel dest, int flags) { if (DBG) log("writeToParcel(Parcel, int): " + toString()); - super.writeToParcel(dest, TYPE_LTE); + super.writeToParcel(dest, CellInfo.TYPE_LTE); dest.writeInt(mCi); dest.writeInt(mPci); dest.writeInt(mTac); @@ -251,7 +251,7 @@ public final class CellIdentityLte extends CellIdentity { /** Construct from Parcel, type has already been processed */ private CellIdentityLte(Parcel in) { - super(TAG, TYPE_LTE, in); + super(TAG, CellInfo.TYPE_LTE, in); mCi = in.readInt(); mPci = in.readInt(); mTac = in.readInt(); diff --git a/telephony/java/android/telephony/CellIdentityTdscdma.java b/telephony/java/android/telephony/CellIdentityTdscdma.java index b99fe466ec46..21b9601bcad9 100644 --- a/telephony/java/android/telephony/CellIdentityTdscdma.java +++ b/telephony/java/android/telephony/CellIdentityTdscdma.java @@ -40,7 +40,7 @@ public final class CellIdentityTdscdma extends CellIdentity { * @hide */ public CellIdentityTdscdma() { - super(TAG, TYPE_TDSCDMA, null, null, null, null); + super(TAG, CellInfo.TYPE_TDSCDMA, null, null, null, null); mLac = Integer.MAX_VALUE; mCid = Integer.MAX_VALUE; mCpid = Integer.MAX_VALUE; @@ -75,7 +75,7 @@ public final class CellIdentityTdscdma extends CellIdentity { */ public CellIdentityTdscdma(String mcc, String mnc, int lac, int cid, int cpid, int uarfcn, String alphal, String alphas) { - super(TAG, TYPE_TDSCDMA, mcc, mnc, alphal, alphas); + super(TAG, CellInfo.TYPE_TDSCDMA, mcc, mnc, alphal, alphas); mLac = lac; mCid = cid; mCpid = cpid; @@ -175,7 +175,7 @@ public final class CellIdentityTdscdma extends CellIdentity { @Override public void writeToParcel(Parcel dest, int flags) { if (DBG) log("writeToParcel(Parcel, int): " + toString()); - super.writeToParcel(dest, TYPE_TDSCDMA); + super.writeToParcel(dest, CellInfo.TYPE_TDSCDMA); dest.writeInt(mLac); dest.writeInt(mCid); dest.writeInt(mCpid); @@ -184,7 +184,7 @@ public final class CellIdentityTdscdma extends CellIdentity { /** Construct from Parcel, type has already been processed */ private CellIdentityTdscdma(Parcel in) { - super(TAG, TYPE_TDSCDMA, in); + super(TAG, CellInfo.TYPE_TDSCDMA, in); mLac = in.readInt(); mCid = in.readInt(); mCpid = in.readInt(); diff --git a/telephony/java/android/telephony/CellIdentityWcdma.java b/telephony/java/android/telephony/CellIdentityWcdma.java index 43f9406be79e..a4ac8e30d02e 100644 --- a/telephony/java/android/telephony/CellIdentityWcdma.java +++ b/telephony/java/android/telephony/CellIdentityWcdma.java @@ -42,7 +42,7 @@ public final class CellIdentityWcdma extends CellIdentity { * @hide */ public CellIdentityWcdma() { - super(TAG, TYPE_TDSCDMA, null, null, null, null); + super(TAG, CellInfo.TYPE_WCDMA, null, null, null, null); mLac = Integer.MAX_VALUE; mCid = Integer.MAX_VALUE; mPsc = Integer.MAX_VALUE; @@ -93,7 +93,7 @@ public final class CellIdentityWcdma extends CellIdentity { */ public CellIdentityWcdma (int lac, int cid, int psc, int uarfcn, String mccStr, String mncStr, String alphal, String alphas) { - super(TAG, TYPE_WCDMA, mccStr, mncStr, alphal, alphas); + super(TAG, CellInfo.TYPE_WCDMA, mccStr, mncStr, alphal, alphas); mLac = lac; mCid = cid; mPsc = psc; @@ -227,7 +227,7 @@ public final class CellIdentityWcdma extends CellIdentity { @Override public void writeToParcel(Parcel dest, int flags) { if (DBG) log("writeToParcel(Parcel, int): " + toString()); - super.writeToParcel(dest, TYPE_WCDMA); + super.writeToParcel(dest, CellInfo.TYPE_WCDMA); dest.writeInt(mLac); dest.writeInt(mCid); dest.writeInt(mPsc); @@ -236,7 +236,7 @@ public final class CellIdentityWcdma extends CellIdentity { /** Construct from Parcel, type has already been processed */ private CellIdentityWcdma(Parcel in) { - super(TAG, TYPE_WCDMA, in); + super(TAG, CellInfo.TYPE_WCDMA, in); mLac = in.readInt(); mCid = in.readInt(); mPsc = in.readInt(); diff --git a/telephony/java/android/telephony/CellInfo.java b/telephony/java/android/telephony/CellInfo.java index bffeb170792e..6b320f4352cc 100644 --- a/telephony/java/android/telephony/CellInfo.java +++ b/telephony/java/android/telephony/CellInfo.java @@ -29,17 +29,43 @@ import java.lang.annotation.RetentionPolicy; */ public abstract class CellInfo implements Parcelable { - // Type fields for parceling - /** @hide */ - protected static final int TYPE_GSM = 1; - /** @hide */ - protected static final int TYPE_CDMA = 2; - /** @hide */ - protected static final int TYPE_LTE = 3; - /** @hide */ - protected static final int TYPE_WCDMA = 4; - /** @hide */ - protected static final int TYPE_TDCDMA = 5; + /** + * Cell identity type + * @hide + */ + @Retention(RetentionPolicy.SOURCE) + @IntDef(prefix = "TYPE_", value = {TYPE_GSM, TYPE_CDMA, TYPE_LTE, TYPE_WCDMA, TYPE_TDSCDMA}) + public @interface Type {} + /** + * Unknown cell identity type + * @hide + */ + public static final int TYPE_UNKNOWN = 0; + /** + * GSM cell identity type + * @hide + */ + public static final int TYPE_GSM = 1; + /** + * CDMA cell identity type + * @hide + */ + public static final int TYPE_CDMA = 2; + /** + * LTE cell identity type + * @hide + */ + public static final int TYPE_LTE = 3; + /** + * WCDMA cell identity type + * @hide + */ + public static final int TYPE_WCDMA = 4; + /** + * TD-SCDMA cell identity type + * @hide + */ + public static final int TYPE_TDSCDMA = 5; // Type to distinguish where time stamp gets recorded. @@ -161,6 +187,7 @@ public abstract class CellInfo implements Parcelable { public int getTimeStampType() { return mTimeStampType; } + /** @hide */ public void setTimeStampType(int timeStampType) { if (timeStampType < TIMESTAMP_TYPE_UNKNOWN || timeStampType > TIMESTAMP_TYPE_JAVA_RIL) { @@ -272,7 +299,7 @@ public abstract class CellInfo implements Parcelable { case TYPE_CDMA: return CellInfoCdma.createFromParcelBody(in); case TYPE_LTE: return CellInfoLte.createFromParcelBody(in); case TYPE_WCDMA: return CellInfoWcdma.createFromParcelBody(in); - case TYPE_TDCDMA: return CellInfoTdscdma.createFromParcelBody(in); + case TYPE_TDSCDMA: return CellInfoTdscdma.createFromParcelBody(in); default: throw new RuntimeException("Bad CellInfo Parcel"); } } diff --git a/telephony/java/android/telephony/CellInfoTdscdma.java b/telephony/java/android/telephony/CellInfoTdscdma.java index 4fb1bce1cb8f..40cadde364dc 100644 --- a/telephony/java/android/telephony/CellInfoTdscdma.java +++ b/telephony/java/android/telephony/CellInfoTdscdma.java @@ -110,7 +110,7 @@ public final class CellInfoTdscdma extends CellInfo implements Parcelable { /** Implement the Parcelable interface */ @Override public void writeToParcel(Parcel dest, int flags) { - super.writeToParcel(dest, flags, TYPE_TDCDMA); + super.writeToParcel(dest, flags, TYPE_TDSCDMA); mCellIdentityTdscdma.writeToParcel(dest, flags); mCellSignalStrengthTdscdma.writeToParcel(dest, flags); } diff --git a/telephony/java/android/telephony/NeighboringCellInfo.java b/telephony/java/android/telephony/NeighboringCellInfo.java index 25851e32f6c6..b7ccee5871d0 100644 --- a/telephony/java/android/telephony/NeighboringCellInfo.java +++ b/telephony/java/android/telephony/NeighboringCellInfo.java @@ -16,16 +16,16 @@ package android.telephony; -import android.os.Parcel; -import android.os.Parcelable; -import static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN; import static android.telephony.TelephonyManager.NETWORK_TYPE_EDGE; import static android.telephony.TelephonyManager.NETWORK_TYPE_GPRS; -import static android.telephony.TelephonyManager.NETWORK_TYPE_UMTS; import static android.telephony.TelephonyManager.NETWORK_TYPE_HSDPA; -import static android.telephony.TelephonyManager.NETWORK_TYPE_HSUPA; import static android.telephony.TelephonyManager.NETWORK_TYPE_HSPA; +import static android.telephony.TelephonyManager.NETWORK_TYPE_HSUPA; +import static android.telephony.TelephonyManager.NETWORK_TYPE_UMTS; +import static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN; +import android.os.Parcel; +import android.os.Parcelable; /** @@ -100,6 +100,39 @@ public class NeighboringCellInfo implements Parcelable mCid = cid; } + /** @hide */ + public NeighboringCellInfo(final CellInfoGsm info) { + mNetworkType = TelephonyManager.NETWORK_TYPE_GPRS; + + mRssi = info.getCellSignalStrength().getAsuLevel(); + if (mRssi == Integer.MAX_VALUE) mRssi = UNKNOWN_RSSI; + + mLac = info.getCellIdentity().getLac(); + if (mLac == Integer.MAX_VALUE) mLac = UNKNOWN_CID; + + mCid = info.getCellIdentity().getCid(); + if (mCid == Integer.MAX_VALUE) mCid = UNKNOWN_CID; + + mPsc = UNKNOWN_CID; + } + + /** @hide */ + public NeighboringCellInfo(final CellInfoWcdma info) { + mNetworkType = TelephonyManager.NETWORK_TYPE_UMTS; + + mRssi = info.getCellSignalStrength().getAsuLevel(); + if (mRssi == Integer.MAX_VALUE) mRssi = UNKNOWN_RSSI; + + mLac = info.getCellIdentity().getLac(); + if (mLac == Integer.MAX_VALUE) mLac = UNKNOWN_CID; + + mCid = info.getCellIdentity().getCid(); + if (mCid == Integer.MAX_VALUE) mCid = UNKNOWN_CID; + + mPsc = info.getCellIdentity().getPsc(); + if (mPsc == Integer.MAX_VALUE) mPsc = UNKNOWN_CID; + } + /** * Initialize the object from rssi, location string, and radioType * radioType is one of following diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java index d76e39b83801..667ad91086b2 100644 --- a/telephony/java/android/telephony/SubscriptionInfo.java +++ b/telephony/java/android/telephony/SubscriptionInfo.java @@ -139,28 +139,6 @@ public class SubscriptionInfo implements Parcelable { */ public SubscriptionInfo(int id, String iccId, int simSlotIndex, CharSequence displayName, CharSequence carrierName, int nameSource, int iconTint, String number, int roaming, - Bitmap icon, String mcc, String mnc, String countryIso) { - this(id, iccId, simSlotIndex, displayName, carrierName, nameSource, iconTint, number, - roaming, icon, mcc, mnc, countryIso, false /* isEmbedded */, - null /* accessRules */, null /* accessRules */); - } - - /** - * @hide - */ - public SubscriptionInfo(int id, String iccId, int simSlotIndex, CharSequence displayName, - CharSequence carrierName, int nameSource, int iconTint, String number, int roaming, - Bitmap icon, String mcc, String mnc, String countryIso, boolean isEmbedded, - @Nullable UiccAccessRule[] accessRules) { - this(id, iccId, simSlotIndex, displayName, carrierName, nameSource, iconTint, number, - roaming, icon, mcc, mnc, countryIso, isEmbedded, accessRules, null /* cardId */); - } - - /** - * @hide - */ - public SubscriptionInfo(int id, String iccId, int simSlotIndex, CharSequence displayName, - CharSequence carrierName, int nameSource, int iconTint, String number, int roaming, Bitmap icon, String mcc, String mnc, String countryIso, boolean isEmbedded, @Nullable UiccAccessRule[] accessRules, String cardId) { this.mId = id; diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 290d838ca9c8..eda6192978a6 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -1528,7 +1528,7 @@ public class TelephonyManager { * @return List of NeighboringCellInfo or null if info unavailable. * * @deprecated Use {@link #getAllCellInfo} which returns a superset of the information - * from NeighboringCellInfo. + * from NeighboringCellInfo, including LTE cell information. */ @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) @@ -6680,14 +6680,12 @@ public class TelephonyManager { @Deprecated public boolean isTtyModeSupported() { try { - ITelephony telephony = getITelephony(); - if (telephony != null) { - return telephony.isTtyModeSupported(); + TelecomManager telecomManager = TelecomManager.from(mContext); + if (telecomManager != null) { + return telecomManager.isTtySupported(); } - } catch (RemoteException e) { - Log.e(TAG, "Error calling ITelephony#isTtyModeSupported", e); } catch (SecurityException e) { - Log.e(TAG, "Permission error calling ITelephony#isTtyModeSupported", e); + Log.e(TAG, "Permission error calling TelecomManager#isTtySupported", e); } return false; } diff --git a/telephony/java/android/telephony/ims/ImsSsInfo.java b/telephony/java/android/telephony/ims/ImsSsInfo.java index c6f8622f3fd9..e924a2521617 100644 --- a/telephony/java/android/telephony/ims/ImsSsInfo.java +++ b/telephony/java/android/telephony/ims/ImsSsInfo.java @@ -16,10 +16,14 @@ package android.telephony.ims; +import android.annotation.IntDef; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + /** * Provides the result to the update operation for the supplementary service configuration. * @@ -34,6 +38,30 @@ public final class ImsSsInfo implements Parcelable { public static final int DISABLED = 0; public static final int ENABLED = 1; + /** + * Provision status of service + */ + /** @hide */ + @IntDef({ + SERVICE_PROVISIONING_UNKNOWN, + SERVICE_NOT_PROVISIONED, + SERVICE_PROVISIONED + }) + @Retention(RetentionPolicy.SOURCE) + public @interface ServiceProvisionStatus {} + /** + * Unknown provision status for the service. + */ + public static final int SERVICE_PROVISIONING_UNKNOWN = (-1); + /** + * Service is not provisioned. + */ + public static final int SERVICE_NOT_PROVISIONED = 0; + /** + * Service is provisioned. + */ + public static final int SERVICE_PROVISIONED = 1; + // 0: disabled, 1: enabled /** @hide */ // TODO: Make private, do not modify this field directly, use getter! @@ -41,6 +69,8 @@ public final class ImsSsInfo implements Parcelable { /** @hide */ // TODO: Make private, do not modify this field directly, use getter! public String mIcbNum; + /** @hide */ + public int mProvisionStatus = SERVICE_PROVISIONING_UNKNOWN; /**@hide*/ // TODO: Remove! Do not use this constructor, instead use public version. @@ -74,16 +104,30 @@ public final class ImsSsInfo implements Parcelable { public void writeToParcel(Parcel out, int flags) { out.writeInt(mStatus); out.writeString(mIcbNum); + out.writeInt(mProvisionStatus); } @Override public String toString() { - return super.toString() + ", Status: " + ((mStatus == 0) ? "disabled" : "enabled"); + return super.toString() + ", Status: " + ((mStatus == 0) ? "disabled" : "enabled") + + ", ProvisionStatus: " + provisionStatusToString(mProvisionStatus); + } + + private static String provisionStatusToString(int pStatus) { + switch (pStatus) { + case SERVICE_NOT_PROVISIONED: + return "Service not provisioned"; + case SERVICE_PROVISIONED: + return "Service provisioned"; + default: + return "Service provisioning unknown"; + } } private void readFromParcel(Parcel in) { mStatus = in.readInt(); mIcbNum = in.readString(); + mProvisionStatus = in.readInt(); } public static final Creator<ImsSsInfo> CREATOR = @@ -112,4 +156,15 @@ public final class ImsSsInfo implements Parcelable { public String getIcbNum() { return mIcbNum; } + + /** + * @return Supplementary Service Provision status. Valid Values are: + * {@link #SERVICE_PROVISIONING_UNKNOWN}, + * {@link #SERVICE_NOT_PROVISIONED}, + * {@link #SERVICE_PROVISIONED} + */ + @ServiceProvisionStatus + public int getProvisionStatus() { + return mProvisionStatus; + } } |