From d89c7790e1664c42d5986d4954a113d3fd1b675e Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Tue, 19 Dec 2017 15:11:47 +0000 Subject: [PATCH 1/2] Fix visibility issues with android.test.mock.stubs This ensures that the API definitions for the android.test.mock package matches the definitions in the api/current.txt file. Bug: 30188076 Test: make update-api (cherry-picked from commit bd97e3dd4e5d395f336114016b000ef3cfb26053) Merged-In: Id325b8cf2f189117ac4cfe7634095ab710eee004 Change-Id: Id325b8cf2f189117ac4cfe7634095ab710eee004 --- test-mock/Android.mk | 9 +- test-mock/api/android-test-mock-current.txt | 122 -------------------- test-mock/api/android-test-mock-removed.txt | 1 + 3 files changed, 9 insertions(+), 123 deletions(-) diff --git a/test-mock/Android.mk b/test-mock/Android.mk index d81ca013ec7a7..05794a7615c0d 100644 --- a/test-mock/Android.mk +++ b/test-mock/Android.mk @@ -16,7 +16,12 @@ LOCAL_PATH:= $(call my-dir) -android_test_mock_source_files := $(call all-java-files-under, src/android/test/mock) +# Includes the main framework source to ensure that doclava has access to the +# visibility information for the base classes of the mock classes. Without it +# otherwise hidden methods could be visible. +android_test_mock_source_files := \ + $(call all-java-files-under, src/android/test/mock) \ + $(call all-java-files-under, ../core/java) \ # Generate the stub source files for android.test.mock.stubs # ========================================================== @@ -63,6 +68,8 @@ LOCAL_SOURCE_FILES_ALL_GENERATED := true # Make sure to run droiddoc first to generate the stub source files. LOCAL_ADDITIONAL_DEPENDENCIES := $(android_test_mock_gen_stamp) +LOCAL_SDK_VERSION := current + include $(BUILD_STATIC_JAVA_LIBRARY) # Archive a copy of the classes.jar in SDK build. diff --git a/test-mock/api/android-test-mock-current.txt b/test-mock/api/android-test-mock-current.txt index 10286c297152c..07acfef7ce6cd 100644 --- a/test-mock/api/android-test-mock-current.txt +++ b/test-mock/api/android-test-mock-current.txt @@ -15,7 +15,6 @@ package android.test.mock { method public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList); method public static deprecated void attachInfoForTesting(android.content.ContentProvider, android.content.Context, android.content.pm.ProviderInfo); method public int delete(android.net.Uri, java.lang.String, java.lang.String[]); - method public final android.content.IContentProvider getIContentProvider(); method public java.lang.String getType(android.net.Uri); method public android.net.Uri insert(android.net.Uri, android.content.ContentValues); method public boolean onCreate(); @@ -27,37 +26,26 @@ package android.test.mock { public class MockContentResolver extends android.content.ContentResolver { ctor public MockContentResolver(); ctor public MockContentResolver(android.content.Context); - method protected android.content.IContentProvider acquireProvider(android.content.Context, java.lang.String); - method protected android.content.IContentProvider acquireUnstableProvider(android.content.Context, java.lang.String); method public void addProvider(java.lang.String, android.content.ContentProvider); - method public boolean releaseProvider(android.content.IContentProvider); - method public boolean releaseUnstableProvider(android.content.IContentProvider); - method public void unstableProviderDied(android.content.IContentProvider); } public class MockContext extends android.content.Context { ctor public MockContext(); method public boolean bindService(android.content.Intent, android.content.ServiceConnection, int); - method public boolean canLoadUnsafeResources(); method public int checkCallingOrSelfPermission(java.lang.String); method public int checkCallingOrSelfUriPermission(android.net.Uri, int); method public int checkCallingPermission(java.lang.String); method public int checkCallingUriPermission(android.net.Uri, int); method public int checkPermission(java.lang.String, int, int); - method public int checkPermission(java.lang.String, int, int, android.os.IBinder); method public int checkSelfPermission(java.lang.String); method public int checkUriPermission(android.net.Uri, int, int, int); - method public int checkUriPermission(android.net.Uri, int, int, int, android.os.IBinder); method public int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int); method public void clearWallpaper(); - method public android.content.Context createApplicationContext(android.content.pm.ApplicationInfo, int) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.Context createConfigurationContext(android.content.res.Configuration); method public android.content.Context createContextForSplit(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; - method public android.content.Context createCredentialProtectedStorageContext(); method public android.content.Context createDeviceProtectedStorageContext(); method public android.content.Context createDisplayContext(android.view.Display); method public android.content.Context createPackageContext(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; - method public android.content.Context createPackageContextAsUser(java.lang.String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException; method public java.lang.String[] databaseList(); method public boolean deleteDatabase(java.lang.String); method public boolean deleteFile(java.lang.String); @@ -73,7 +61,6 @@ package android.test.mock { method public android.content.Context getApplicationContext(); method public android.content.pm.ApplicationInfo getApplicationInfo(); method public android.content.res.AssetManager getAssets(); - method public java.lang.String getBasePackageName(); method public java.io.File getCacheDir(); method public java.lang.ClassLoader getClassLoader(); method public java.io.File getCodeCacheDir(); @@ -81,8 +68,6 @@ package android.test.mock { method public java.io.File getDataDir(); method public java.io.File getDatabasePath(java.lang.String); method public java.io.File getDir(java.lang.String, int); - method public android.view.Display getDisplay(); - method public android.view.DisplayAdjustments getDisplayAdjustments(int); method public java.io.File getExternalCacheDir(); method public java.io.File[] getExternalCacheDirs(); method public java.io.File getExternalFilesDir(java.lang.String); @@ -94,25 +79,19 @@ package android.test.mock { method public java.io.File getNoBackupFilesDir(); method public java.io.File getObbDir(); method public java.io.File[] getObbDirs(); - method public java.lang.String getOpPackageName(); method public java.lang.String getPackageCodePath(); method public android.content.pm.PackageManager getPackageManager(); method public java.lang.String getPackageName(); method public java.lang.String getPackageResourcePath(); - method public java.io.File getPreloadsFileCache(); method public android.content.res.Resources getResources(); method public android.content.SharedPreferences getSharedPreferences(java.lang.String, int); - method public android.content.SharedPreferences getSharedPreferences(java.io.File, int); - method public java.io.File getSharedPreferencesPath(java.lang.String); method public java.lang.Object getSystemService(java.lang.String); method public java.lang.String getSystemServiceName(java.lang.Class); method public android.content.res.Resources.Theme getTheme(); - method public int getUserId(); method public android.graphics.drawable.Drawable getWallpaper(); method public int getWallpaperDesiredMinimumHeight(); method public int getWallpaperDesiredMinimumWidth(); method public void grantUriPermission(java.lang.String, android.net.Uri, int); - method public boolean isCredentialProtectedStorage(); method public boolean isDeviceProtectedStorage(); method public boolean moveDatabaseFrom(android.content.Context, java.lang.String); method public boolean moveSharedPreferencesFrom(android.content.Context, java.lang.String); @@ -125,31 +104,19 @@ package android.test.mock { method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, int); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler); method public android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler, int); - method public android.content.Intent registerReceiverAsUser(android.content.BroadcastReceiver, android.os.UserHandle, android.content.IntentFilter, java.lang.String, android.os.Handler); - method public void reloadSharedPreferences(); method public void removeStickyBroadcast(android.content.Intent); method public void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); method public void revokeUriPermission(android.net.Uri, int); method public void revokeUriPermission(java.lang.String, android.net.Uri, int); method public void sendBroadcast(android.content.Intent); method public void sendBroadcast(android.content.Intent, java.lang.String); - method public void sendBroadcast(android.content.Intent, java.lang.String, android.os.Bundle); - method public void sendBroadcast(android.content.Intent, java.lang.String, int); method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle); method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String); - method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.os.Bundle); - method public void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int); - method public void sendBroadcastMultiplePermissions(android.content.Intent, java.lang.String[]); method public void sendOrderedBroadcast(android.content.Intent, java.lang.String); method public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); - method public void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); - method public void sendOrderedBroadcast(android.content.Intent, java.lang.String, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); - method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); - method public void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, int, android.os.Bundle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); method public void sendStickyBroadcast(android.content.Intent); method public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle); - method public void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.os.Bundle); method public void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); method public void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle); method public void setTheme(int); @@ -160,17 +127,13 @@ package android.test.mock { method public void startActivity(android.content.Intent); method public void startActivity(android.content.Intent, android.os.Bundle); method public android.content.ComponentName startForegroundService(android.content.Intent); - method public android.content.ComponentName startForegroundServiceAsUser(android.content.Intent, android.os.UserHandle); method public boolean startInstrumentation(android.content.ComponentName, java.lang.String, android.os.Bundle); method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int) throws android.content.IntentSender.SendIntentException; method public void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle) throws android.content.IntentSender.SendIntentException; method public android.content.ComponentName startService(android.content.Intent); - method public android.content.ComponentName startServiceAsUser(android.content.Intent, android.os.UserHandle); method public boolean stopService(android.content.Intent); - method public boolean stopServiceAsUser(android.content.Intent, android.os.UserHandle); method public void unbindService(android.content.ServiceConnection); method public void unregisterReceiver(android.content.BroadcastReceiver); - method public void updateDisplay(int); } public deprecated class MockCursor implements android.database.Cursor { @@ -226,8 +189,6 @@ package android.test.mock { public deprecated class MockPackageManager extends android.content.pm.PackageManager { ctor public MockPackageManager(); - method public void addCrossProfileIntentFilter(android.content.IntentFilter, int, int, int); - method public void addOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener); method public void addPackageToPreferred(java.lang.String); method public boolean addPermission(android.content.pm.PermissionInfo); method public boolean addPermissionAsync(android.content.pm.PermissionInfo); @@ -237,19 +198,10 @@ package android.test.mock { method public int checkPermission(java.lang.String, java.lang.String); method public int checkSignatures(java.lang.String, java.lang.String); method public int checkSignatures(int, int); - method public void clearApplicationUserData(java.lang.String, android.content.pm.IPackageDataObserver); - method public void clearCrossProfileIntentFilters(int); method public void clearInstantAppCookie(); method public void clearPackagePreferredActivities(java.lang.String); method public java.lang.String[] currentToCanonicalPackageNames(java.lang.String[]); - method public void deleteApplicationCacheFiles(java.lang.String, android.content.pm.IPackageDataObserver); - method public void deleteApplicationCacheFilesAsUser(java.lang.String, int, android.content.pm.IPackageDataObserver); - method public void deletePackage(java.lang.String, android.content.pm.IPackageDeleteObserver, int); - method public void deletePackageAsUser(java.lang.String, android.content.pm.IPackageDeleteObserver, int, int); method public void extendVerificationTimeout(int, int, long); - method public void flushPackageRestrictionsAsUser(int); - method public void freeStorage(java.lang.String, long, android.content.IntentSender); - method public void freeStorageAndNotify(java.lang.String, long, android.content.pm.IPackageDataObserver); method public android.graphics.drawable.Drawable getActivityBanner(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException; method public android.graphics.drawable.Drawable getActivityBanner(android.content.Intent) throws android.content.pm.PackageManager.NameNotFoundException; method public android.graphics.drawable.Drawable getActivityIcon(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException; @@ -262,149 +214,75 @@ package android.test.mock { method public android.graphics.drawable.Drawable getApplicationBanner(android.content.pm.ApplicationInfo); method public android.graphics.drawable.Drawable getApplicationBanner(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; method public int getApplicationEnabledSetting(java.lang.String); - method public boolean getApplicationHiddenSettingAsUser(java.lang.String, android.os.UserHandle); method public android.graphics.drawable.Drawable getApplicationIcon(android.content.pm.ApplicationInfo); method public android.graphics.drawable.Drawable getApplicationIcon(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; - method public android.content.pm.ApplicationInfo getApplicationInfoAsUser(java.lang.String, int, int) throws android.content.pm.PackageManager.NameNotFoundException; method public java.lang.CharSequence getApplicationLabel(android.content.pm.ApplicationInfo); method public android.graphics.drawable.Drawable getApplicationLogo(android.content.pm.ApplicationInfo); method public android.graphics.drawable.Drawable getApplicationLogo(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.ChangedPackages getChangedPackages(int); method public int getComponentEnabledSetting(android.content.ComponentName); method public android.graphics.drawable.Drawable getDefaultActivityIcon(); - method public java.lang.String getDefaultBrowserPackageNameAsUser(int); method public android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo); - method public android.content.ComponentName getHomeActivities(java.util.List); - method public int getInstallReason(java.lang.String, android.os.UserHandle); method public java.util.List getInstalledApplications(int); - method public java.util.List getInstalledApplicationsAsUser(int, int); method public java.util.List getInstalledPackages(int); - method public java.util.List getInstalledPackagesAsUser(int, int); method public java.lang.String getInstallerPackageName(java.lang.String); - method public java.lang.String getInstantAppAndroidId(java.lang.String, android.os.UserHandle); method public byte[] getInstantAppCookie(); method public int getInstantAppCookieMaxBytes(); - method public int getInstantAppCookieMaxSize(); - method public android.graphics.drawable.Drawable getInstantAppIcon(java.lang.String); - method public android.content.ComponentName getInstantAppInstallerComponent(); - method public android.content.ComponentName getInstantAppResolverSettingsComponent(); - method public java.util.List getInstantApps(); method public android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; - method public java.util.List getIntentFilterVerifications(java.lang.String); - method public int getIntentVerificationStatusAsUser(java.lang.String, int); - method public android.content.pm.KeySet getKeySetByAlias(java.lang.String, java.lang.String); method public android.content.Intent getLaunchIntentForPackage(java.lang.String); method public android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String); - method public int getMoveStatus(int); method public java.lang.String getNameForUid(int); - method public java.lang.String[] getNamesForUids(int[]); - method public java.util.List getPackageCandidateVolumes(android.content.pm.ApplicationInfo); - method public android.os.storage.VolumeInfo getPackageCurrentVolume(android.content.pm.ApplicationInfo); method public int[] getPackageGids(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; method public int[] getPackageGids(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.PackageInfo getPackageInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.PackageInfo getPackageInfo(android.content.pm.VersionedPackage, int) throws android.content.pm.PackageManager.NameNotFoundException; - method public android.content.pm.PackageInfo getPackageInfoAsUser(java.lang.String, int, int) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.PackageInstaller getPackageInstaller(); - method public void getPackageSizeInfoAsUser(java.lang.String, int, android.content.pm.IPackageStatsObserver); method public int getPackageUid(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; - method public int getPackageUidAsUser(java.lang.String, int, int) throws android.content.pm.PackageManager.NameNotFoundException; - method public int getPackageUidAsUser(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public java.lang.String[] getPackagesForUid(int); method public java.util.List getPackagesHoldingPermissions(java.lang.String[], int); - method public java.lang.String getPermissionControllerPackageName(); - method public int getPermissionFlags(java.lang.String, java.lang.String, android.os.UserHandle); method public android.content.pm.PermissionGroupInfo getPermissionGroupInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.PermissionInfo getPermissionInfo(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; method public int getPreferredActivities(java.util.List, java.util.List, java.lang.String); method public java.util.List getPreferredPackages(int); - method public java.util.List getPrimaryStorageCandidateVolumes(); - method public android.os.storage.VolumeInfo getPrimaryStorageCurrentVolume(); method public android.content.pm.ProviderInfo getProviderInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.ActivityInfo getReceiverInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.res.Resources getResourcesForActivity(android.content.ComponentName) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.res.Resources getResourcesForApplication(android.content.pm.ApplicationInfo); method public android.content.res.Resources getResourcesForApplication(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; - method public android.content.res.Resources getResourcesForApplicationAsUser(java.lang.String, int); method public android.content.pm.ServiceInfo getServiceInfo(android.content.ComponentName, int) throws android.content.pm.PackageManager.NameNotFoundException; - method public java.lang.String getServicesSystemSharedLibraryPackageName(); method public java.util.List getSharedLibraries(int); - method public java.util.List getSharedLibrariesAsUser(int, int); - method public java.lang.String getSharedSystemSharedLibraryPackageName(); - method public android.content.pm.KeySet getSigningKeySet(java.lang.String); method public android.content.pm.FeatureInfo[] getSystemAvailableFeatures(); method public java.lang.String[] getSystemSharedLibraryNames(); method public java.lang.CharSequence getText(java.lang.String, int, android.content.pm.ApplicationInfo); - method public int getUidForSharedUser(java.lang.String); - method public android.graphics.drawable.Drawable getUserBadgeForDensity(android.os.UserHandle, int); - method public android.graphics.drawable.Drawable getUserBadgeForDensityNoBackground(android.os.UserHandle, int); method public android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int); method public android.graphics.drawable.Drawable getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle); method public java.lang.CharSequence getUserBadgedLabel(java.lang.CharSequence, android.os.UserHandle); - method public android.content.pm.VerifierDeviceIdentity getVerifierDeviceIdentity(); method public android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo); - method public void grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public boolean hasSystemFeature(java.lang.String); method public boolean hasSystemFeature(java.lang.String, int); - method public int installExistingPackage(java.lang.String) throws android.content.pm.PackageManager.NameNotFoundException; - method public int installExistingPackage(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; - method public int installExistingPackageAsUser(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; - method public void installPackage(android.net.Uri, android.content.pm.IPackageInstallObserver, int, java.lang.String); - method public void installPackage(android.net.Uri, android.app.PackageInstallObserver, int, java.lang.String); method public boolean isInstantApp(); method public boolean isInstantApp(java.lang.String); - method public boolean isPackageAvailable(java.lang.String); - method public boolean isPackageSuspendedForUser(java.lang.String, int); - method public boolean isPermissionReviewModeEnabled(); method public boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String); method public boolean isSafeMode(); - method public boolean isSignedBy(java.lang.String, android.content.pm.KeySet); - method public boolean isSignedByExactly(java.lang.String, android.content.pm.KeySet); - method public boolean isUpgrade(); - method public android.graphics.drawable.Drawable loadItemIcon(android.content.pm.PackageItemInfo, android.content.pm.ApplicationInfo); - method public android.graphics.drawable.Drawable loadUnbadgedItemIcon(android.content.pm.PackageItemInfo, android.content.pm.ApplicationInfo); - method public int movePackage(java.lang.String, android.os.storage.VolumeInfo); - method public int movePrimaryStorage(android.os.storage.VolumeInfo); method public java.util.List queryBroadcastReceivers(android.content.Intent, int); - method public java.util.List queryBroadcastReceiversAsUser(android.content.Intent, int, int); method public java.util.List queryContentProviders(java.lang.String, int, int); method public java.util.List queryInstrumentation(java.lang.String, int); method public java.util.List queryIntentActivities(android.content.Intent, int); - method public java.util.List queryIntentActivitiesAsUser(android.content.Intent, int, int); method public java.util.List queryIntentActivityOptions(android.content.ComponentName, android.content.Intent[], android.content.Intent, int); method public java.util.List queryIntentContentProviders(android.content.Intent, int); - method public java.util.List queryIntentContentProvidersAsUser(android.content.Intent, int, int); method public java.util.List queryIntentServices(android.content.Intent, int); - method public java.util.List queryIntentServicesAsUser(android.content.Intent, int, int); method public java.util.List queryPermissionsByGroup(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; - method public void registerDexModule(java.lang.String, android.content.pm.PackageManager.DexModuleRegisterCallback); - method public void registerMoveCallback(android.content.pm.PackageManager.MoveCallback, android.os.Handler); - method public void removeOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener); method public void removePackageFromPreferred(java.lang.String); method public void removePermission(java.lang.String); - method public void replacePreferredActivity(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName); method public android.content.pm.ResolveInfo resolveActivity(android.content.Intent, int); - method public android.content.pm.ResolveInfo resolveActivityAsUser(android.content.Intent, int, int); method public android.content.pm.ProviderInfo resolveContentProvider(java.lang.String, int); - method public android.content.pm.ProviderInfo resolveContentProviderAsUser(java.lang.String, int, int); method public android.content.pm.ResolveInfo resolveService(android.content.Intent, int); - method public void revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public void setApplicationCategoryHint(java.lang.String, int); method public void setApplicationEnabledSetting(java.lang.String, int, int); - method public boolean setApplicationHiddenSettingAsUser(java.lang.String, boolean, android.os.UserHandle); method public void setComponentEnabledSetting(android.content.ComponentName, int, int); - method public boolean setDefaultBrowserPackageNameAsUser(java.lang.String, int); method public void setInstallerPackageName(java.lang.String, java.lang.String); - method public boolean setInstantAppCookie(byte[]); - method public java.lang.String[] setPackagesSuspendedAsUser(java.lang.String[], boolean, int); - method public void setUpdateAvailable(java.lang.String, boolean); - method public boolean shouldShowRequestPermissionRationale(java.lang.String); - method public void unregisterMoveCallback(android.content.pm.PackageManager.MoveCallback); method public void updateInstantAppCookie(byte[]); - method public boolean updateIntentVerificationStatusAsUser(java.lang.String, int, int); - method public void updatePermissionFlags(java.lang.String, java.lang.String, int, int, android.os.UserHandle); - method public void verifyIntentFilter(int, int, java.util.List); method public void verifyPendingInstall(int, int); } diff --git a/test-mock/api/android-test-mock-removed.txt b/test-mock/api/android-test-mock-removed.txt index 5b358cfdbf59c..bd109a8879337 100644 --- a/test-mock/api/android-test-mock-removed.txt +++ b/test-mock/api/android-test-mock-removed.txt @@ -8,6 +8,7 @@ package android.test.mock { public deprecated class MockPackageManager extends android.content.pm.PackageManager { method public deprecated java.lang.String getDefaultBrowserPackageName(int); method public deprecated boolean setDefaultBrowserPackageName(java.lang.String, int); + method public boolean setInstantAppCookie(byte[]); } } From 4cdec67417f977427422b13e8218246a507cb2fc Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Wed, 14 Feb 2018 10:36:16 +0000 Subject: [PATCH 2/2] Build android.test.base/legacy against SDK android.test.legacy is now build against SDK, thus available to apps build with SDK. In doing so, android.test.mock.stubs had to be built with SDK (because it is used by android.test.legacy). However, this wasn't trivial. The problem was that some classes in test-mock implemented abstract methods of platform classes. Even though they are marked as @hide, doclava automatically emit them to the stub file because otherwise the class in the stub file does not implement some abstract methods from its parent class, which in turn makes the stub file non-compilable. This CL solves the problem by introducing an adapter class in between the class in test-mock and the class in the framework. The adapter class implements abstract methods which are @hide and having reference to types that aren't available to SDK. The abstract methods are removed from the original class. Then doclava does not emit the abstract methods. Also by @hide'ing the adapter classes, they are not compiled when building the stub library. Bug: 30188076 Bug: 73339598 Test: m -j android.test.base Test: m -j android.test.legacy Test: m -j android.test.mock.stubs are successful and do not show link-check warning Merged-In: I8e432950e693ee3c6f0240852e62da6133d31571 Change-Id: I8e432950e693ee3c6f0240852e62da6133d31571 --- test-base/Android.bp | 18 ++++-------------- test-base/Android.mk | 5 +---- test-legacy/Android.mk | 30 ++++++++++++++++++++++++++---- test-mock/Android.mk | 6 ++++-- test-runner/Android.bp | 4 ++-- 5 files changed, 37 insertions(+), 26 deletions(-) diff --git a/test-base/Android.bp b/test-base/Android.bp index b65cda9302a7e..c008eca169244 100644 --- a/test-base/Android.bp +++ b/test-base/Android.bp @@ -27,12 +27,8 @@ java_library { // Needs to be consistent with the repackaged version of this make target. java_version: "1.8", - no_framework_libs: true, + sdk_version: "current", hostdex: true, - libs: [ - "framework", - ], - } // Build the legacy-test library @@ -42,12 +38,9 @@ java_library { // Also contains the com.android.internal.util.Predicate[s] classes. java_library { name: "legacy-test", - static_libs: ["android.test.base"], - no_framework_libs: true, - libs: [ - "framework", - ], + sdk_version: "current", + static_libs: ["android.test.base"], } // Build the repackaged.android.test.base library @@ -57,11 +50,8 @@ java_library { java_library_static { name: "repackaged.android.test.base", + sdk_version: "current", static_libs: ["android.test.base"], - no_framework_libs: true, - libs: [ - "framework", - ], jarjar_rules: "jarjar-rules.txt", // Pin java_version until jarjar is certified to support later versions. http://b/72703434 diff --git a/test-base/Android.mk b/test-base/Android.mk index 861385467a0f5..ebb33deb42d37 100644 --- a/test-base/Android.mk +++ b/test-base/Android.mk @@ -26,10 +26,7 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := \ $(call all-java-files-under, src) -LOCAL_JAVA_LIBRARIES := \ - core-oj \ - core-libart \ - framework \ +LOCAL_SDK_VERSION := current LOCAL_MODULE_CLASS := JAVA_LIBRARIES LOCAL_DROIDDOC_SOURCE_PATH := $(LOCAL_PATH)/src diff --git a/test-legacy/Android.mk b/test-legacy/Android.mk index b8c53266b9f81..da47de0a3d353 100644 --- a/test-legacy/Android.mk +++ b/test-legacy/Android.mk @@ -21,16 +21,38 @@ ifeq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK))) # Build the android.test.legacy library # ===================================== +# Built against the SDK so that it can be statically included in APKs +# without breaking link type checks. +# +# This builds directly from the source rather than simply statically +# including the android.test.base-minus-junit and +# android.test.runner-minus-junit libraries because the latter library +# cannot itself be built against the SDK. That is because it uses on +# an internal method (setTestContext) on the AndroidTestCase class. +# That class is provided by both the android.test.base-minus-junit and +# the current SDK and as the latter is first on the classpath its +# version is used. Unfortunately, it does not provide the internal +# method and so compilation fails. +# +# Building from source avoids that because the compiler will use the +# source version of AndroidTestCase instead of the one from the current +# SDK. +# +# The use of the internal method does not prevent this from being +# statically included because the class that provides the method is +# also included in this library. include $(CLEAR_VARS) LOCAL_MODULE := android.test.legacy +LOCAL_SRC_FILES := \ + $(call all-java-files-under, ../test-base/src/android) \ + $(call all-java-files-under, ../test-base/src/com) \ + $(call all-java-files-under, ../test-runner/src/android) \ + LOCAL_SDK_VERSION := current -LOCAL_JAVA_LIBRARIES := junit -LOCAL_STATIC_JAVA_LIBRARIES := \ - android.test.base-minus-junit \ - android.test.runner-minus-junit \ +LOCAL_JAVA_LIBRARIES := junit android.test.mock.stubs include $(BUILD_STATIC_JAVA_LIBRARY) diff --git a/test-mock/Android.mk b/test-mock/Android.mk index 05794a7615c0d..15fa12d1298ee 100644 --- a/test-mock/Android.mk +++ b/test-mock/Android.mk @@ -21,14 +21,14 @@ LOCAL_PATH:= $(call my-dir) # otherwise hidden methods could be visible. android_test_mock_source_files := \ $(call all-java-files-under, src/android/test/mock) \ - $(call all-java-files-under, ../core/java) \ + $(call all-java-files-under, ../core/java/android) # Generate the stub source files for android.test.mock.stubs # ========================================================== include $(CLEAR_VARS) LOCAL_SRC_FILES := $(android_test_mock_source_files) -LOCAL_JAVA_LIBRARIES := core-oj core-libart framework +LOCAL_JAVA_LIBRARIES := core-oj core-libart framework conscrypt okhttp bouncycastle LOCAL_MODULE_CLASS := JAVA_LIBRARIES LOCAL_DROIDDOC_SOURCE_PATH := $(LOCAL_PATH)/src/android/test/mock @@ -39,6 +39,7 @@ ANDROID_TEST_MOCK_API_FILE := $(LOCAL_PATH)/api/android-test-mock-current.txt ANDROID_TEST_MOCK_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-mock-removed.txt LOCAL_DROIDDOC_OPTIONS:= \ + -hide 111 -hide 113 -hide 125 -hide 126 -hide 127 -hide 128 \ -stubpackages android.test.mock \ -stubs $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android.test.mock.stubs_intermediates/src \ -nodocs \ @@ -67,6 +68,7 @@ LOCAL_SOURCE_FILES_ALL_GENERATED := true # Make sure to run droiddoc first to generate the stub source files. LOCAL_ADDITIONAL_DEPENDENCIES := $(android_test_mock_gen_stamp) +android_test_mock_gen_stamp := LOCAL_SDK_VERSION := current diff --git a/test-runner/Android.bp b/test-runner/Android.bp index 66b95271ee066..938bb4efe7ba6 100644 --- a/test-runner/Android.bp +++ b/test-runner/Android.bp @@ -33,8 +33,8 @@ java_library { // Build the android.test.runner-minus-junit library // ================================================= -// This is only intended for inclusion in the android.test.legacy and -// legacy-android-test static libraries and must not be used elsewhere. +// This is only intended for inclusion in the legacy-android-test static +// library and must not be used elsewhere. java_library { name: "android.test.runner-minus-junit",