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

Commit b2b2c0e7 authored by Michael Wright's avatar Michael Wright
Browse files

Add new TestApi annotation.

This allows us to build a special jar with methods exposed strictly
for CTS. An @TestApi should not be a public API or a system
API.

Bug: 25608286

Change-Id: Ifbc64bb6958d2deec5b9cf0b944acfd068f0f051
parent 7ff6e9e7
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -880,6 +880,41 @@ $(full_target): $(framework_built) $(gen)
$(INTERNAL_PLATFORM_SYSTEM_API_FILE): $(full_target)
$(call dist-for-goals,sdk,$(INTERNAL_PLATFORM_SYSTEM_API_FILE))

# ====  the test api stubs ===================================
include $(CLEAR_VARS)

LOCAL_SRC_FILES:=$(framework_docs_LOCAL_API_CHECK_SRC_FILES)
LOCAL_INTERMEDIATE_SOURCES:=$(framework_docs_LOCAL_INTERMEDIATE_SOURCES)
LOCAL_JAVA_LIBRARIES:=$(framework_docs_LOCAL_API_CHECK_JAVA_LIBRARIES)
LOCAL_MODULE_CLASS:=$(framework_docs_LOCAL_MODULE_CLASS)
LOCAL_DROIDDOC_SOURCE_PATH:=$(framework_docs_LOCAL_DROIDDOC_SOURCE_PATH)
LOCAL_DROIDDOC_HTML_DIR:=$(framework_docs_LOCAL_DROIDDOC_HTML_DIR)
LOCAL_ADDITIONAL_JAVA_DIR:=$(framework_docs_LOCAL_API_CHECK_ADDITIONAL_JAVA_DIR)
LOCAL_ADDITIONAL_DEPENDENCIES:=$(framework_docs_LOCAL_ADDITIONAL_DEPENDENCIES)

LOCAL_MODULE := test-api-stubs

LOCAL_DROIDDOC_STUB_OUT_DIR := $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android_test_stubs_current_intermediates/src

LOCAL_DROIDDOC_OPTIONS:=\
               $(framework_docs_LOCAL_DROIDDOC_OPTIONS) \
               -stubs $(TARGET_OUT_COMMON_INTERMEDIATES)/JAVA_LIBRARIES/android_test_stubs_current_intermediates/src \
               -showAnnotation android.annotation.TestApi \
               -api $(INTERNAL_PLATFORM_TEST_API_FILE) \
               -removedApi $(INTERNAL_PLATFORM_TEST_REMOVED_API_FILE) \
               -nodocs

LOCAL_DROIDDOC_CUSTOM_TEMPLATE_DIR:=build/tools/droiddoc/templates-sdk

LOCAL_UNINSTALLABLE_MODULE := true

include $(BUILD_DROIDDOC)

# $(gen), i.e. framework.aidl, is also needed while building against the current stub.
$(full_target): $(framework_built) $(gen)
$(INTERNAL_PLATFORM_TEST_API_FILE): $(full_target)
$(call dist-for-goals,sdk,$(INTERNAL_PLATFORM_TEST_API_FILE))

# ====  check javadoc comments but don't generate docs ========
include $(CLEAR_VARS)

api/test-current.txt

0 → 100644
+64031 −0

File added.

Preview size limit exceeded, changes collapsed.

api/test-removed.txt

0 → 100644
+258 −0
Original line number Diff line number Diff line
package android.app {

  public class Notification implements android.os.Parcelable {
    method public deprecated void setLatestEventInfo(android.content.Context, java.lang.CharSequence, java.lang.CharSequence, android.app.PendingIntent);
  }

}

package android.app.admin {

  public class DevicePolicyManager {
    method public deprecated java.lang.String getDeviceInitializerApp();
    method public deprecated android.content.ComponentName getDeviceInitializerComponent();
  }

}

package android.content.pm {

  public class PackageInfo implements android.os.Parcelable {
    field public static final int REQUESTED_PERMISSION_REQUIRED = 1; // 0x1
  }

}

package android.database {

  public abstract class AbstractCursor implements android.database.CrossProcessCursor {
    field protected java.lang.Long mCurrentRowID;
    field protected int mRowIdColumnIndex;
    field protected java.util.HashMap<java.lang.Long, java.util.Map<java.lang.String, java.lang.Object>> mUpdatedRows;
  }

}

package android.media {

  public class AudioFormat {
    ctor public AudioFormat();
  }

}

package android.net {

  public class SSLCertificateSocketFactory extends javax.net.ssl.SSLSocketFactory {
    method public static deprecated org.apache.http.conn.ssl.SSLSocketFactory getHttpSocketFactory(int, android.net.SSLSessionCache);
  }

}

package android.os {

  public class BatteryManager {
    ctor public BatteryManager();
  }

  public final class PowerManager {
    method public void goToSleep(long);
    method public deprecated void userActivity(long, boolean);
    method public void wakeUp(long);
  }

  public class RecoverySystem {
    ctor public RecoverySystem();
  }

  public class UserManager {
    method public android.graphics.drawable.Drawable getBadgedDrawableForUser(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int);
    method public android.graphics.drawable.Drawable getBadgedIconForUser(android.graphics.drawable.Drawable, android.os.UserHandle);
    method public java.lang.CharSequence getBadgedLabelForUser(java.lang.CharSequence, android.os.UserHandle);
  }

}

package android.provider {

  public class Browser {
    method public static final void addSearchUrl(android.content.ContentResolver, java.lang.String);
    method public static final boolean canClearHistory(android.content.ContentResolver);
    method public static final void clearHistory(android.content.ContentResolver);
    method public static final void clearSearches(android.content.ContentResolver);
    method public static final void deleteFromHistory(android.content.ContentResolver, java.lang.String);
    method public static final void deleteHistoryTimeFrame(android.content.ContentResolver, long, long);
    method public static final android.database.Cursor getAllBookmarks(android.content.ContentResolver) throws java.lang.IllegalStateException;
    method public static final android.database.Cursor getAllVisitedUrls(android.content.ContentResolver) throws java.lang.IllegalStateException;
    method public static final void requestAllIcons(android.content.ContentResolver, java.lang.String, android.webkit.WebIconDatabase.IconListener);
    method public static final void saveBookmark(android.content.Context, java.lang.String, java.lang.String);
    method public static final void truncateHistory(android.content.ContentResolver);
    method public static final void updateVisitedHistory(android.content.ContentResolver, java.lang.String, boolean);
    field public static final android.net.Uri BOOKMARKS_URI;
    field public static final java.lang.String[] HISTORY_PROJECTION;
    field public static final int HISTORY_PROJECTION_BOOKMARK_INDEX = 4; // 0x4
    field public static final int HISTORY_PROJECTION_DATE_INDEX = 3; // 0x3
    field public static final int HISTORY_PROJECTION_FAVICON_INDEX = 6; // 0x6
    field public static final int HISTORY_PROJECTION_ID_INDEX = 0; // 0x0
    field public static final int HISTORY_PROJECTION_TITLE_INDEX = 5; // 0x5
    field public static final int HISTORY_PROJECTION_URL_INDEX = 1; // 0x1
    field public static final int HISTORY_PROJECTION_VISITS_INDEX = 2; // 0x2
    field public static final java.lang.String[] SEARCHES_PROJECTION;
    field public static final int SEARCHES_PROJECTION_DATE_INDEX = 2; // 0x2
    field public static final int SEARCHES_PROJECTION_SEARCH_INDEX = 1; // 0x1
    field public static final android.net.Uri SEARCHES_URI;
    field public static final java.lang.String[] TRUNCATE_HISTORY_PROJECTION;
    field public static final int TRUNCATE_HISTORY_PROJECTION_ID_INDEX = 0; // 0x0
    field public static final int TRUNCATE_N_OLDEST = 5; // 0x5
  }

  public static class Browser.BookmarkColumns implements android.provider.BaseColumns {
    ctor public Browser.BookmarkColumns();
    field public static final java.lang.String BOOKMARK = "bookmark";
    field public static final java.lang.String CREATED = "created";
    field public static final java.lang.String DATE = "date";
    field public static final java.lang.String FAVICON = "favicon";
    field public static final java.lang.String THUMBNAIL = "thumbnail";
    field public static final java.lang.String TITLE = "title";
    field public static final java.lang.String TOUCH_ICON = "touch_icon";
    field public static final java.lang.String URL = "url";
    field public static final java.lang.String USER_ENTERED = "user_entered";
    field public static final java.lang.String VISITS = "visits";
  }

  public static class Browser.SearchColumns implements android.provider.BaseColumns {
    ctor public Browser.SearchColumns();
    field public static final java.lang.String DATE = "date";
    field public static final java.lang.String SEARCH = "search";
    field public static final deprecated java.lang.String URL = "url";
  }

  public static final deprecated class ContactsContract.Contacts.StreamItems {
    field public static final deprecated java.lang.String CONTENT_DIRECTORY = "stream_items";
  }

  public static final deprecated class ContactsContract.RawContacts.StreamItems implements android.provider.BaseColumns {
    field public static final deprecated java.lang.String CONTENT_DIRECTORY = "stream_items";
  }

  public static final deprecated class ContactsContract.StreamItemPhotos implements android.provider.BaseColumns {
    field public static final deprecated java.lang.String PHOTO = "photo";
  }

  protected static abstract deprecated interface ContactsContract.StreamItemPhotosColumns {
    field public static final deprecated java.lang.String PHOTO_FILE_ID = "photo_file_id";
    field public static final deprecated java.lang.String PHOTO_URI = "photo_uri";
    field public static final deprecated java.lang.String SORT_INDEX = "sort_index";
    field public static final deprecated java.lang.String STREAM_ITEM_ID = "stream_item_id";
    field public static final deprecated java.lang.String SYNC1 = "stream_item_photo_sync1";
    field public static final deprecated java.lang.String SYNC2 = "stream_item_photo_sync2";
    field public static final deprecated java.lang.String SYNC3 = "stream_item_photo_sync3";
    field public static final deprecated java.lang.String SYNC4 = "stream_item_photo_sync4";
  }

  public static final deprecated class ContactsContract.StreamItems implements android.provider.BaseColumns {
    field public static final deprecated java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/stream_item";
    field public static final deprecated android.net.Uri CONTENT_LIMIT_URI;
    field public static final deprecated android.net.Uri CONTENT_PHOTO_URI;
    field public static final deprecated java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/stream_item";
    field public static final deprecated android.net.Uri CONTENT_URI;
    field public static final deprecated java.lang.String MAX_ITEMS = "max_items";
  }

  public static final deprecated class ContactsContract.StreamItems.StreamItemPhotos implements android.provider.BaseColumns {
    field public static final deprecated java.lang.String CONTENT_DIRECTORY = "photo";
    field public static final deprecated java.lang.String CONTENT_ITEM_TYPE = "vnd.android.cursor.item/stream_item_photo";
    field public static final deprecated java.lang.String CONTENT_TYPE = "vnd.android.cursor.dir/stream_item_photo";
  }

  protected static abstract deprecated interface ContactsContract.StreamItemsColumns {
    field public static final deprecated java.lang.String ACCOUNT_NAME = "account_name";
    field public static final deprecated java.lang.String ACCOUNT_TYPE = "account_type";
    field public static final deprecated java.lang.String COMMENTS = "comments";
    field public static final deprecated java.lang.String CONTACT_ID = "contact_id";
    field public static final deprecated java.lang.String CONTACT_LOOKUP_KEY = "contact_lookup";
    field public static final deprecated java.lang.String DATA_SET = "data_set";
    field public static final deprecated java.lang.String RAW_CONTACT_ID = "raw_contact_id";
    field public static final deprecated java.lang.String RAW_CONTACT_SOURCE_ID = "raw_contact_source_id";
    field public static final deprecated java.lang.String RES_ICON = "icon";
    field public static final deprecated java.lang.String RES_LABEL = "label";
    field public static final deprecated java.lang.String RES_PACKAGE = "res_package";
    field public static final deprecated java.lang.String SYNC1 = "stream_item_sync1";
    field public static final deprecated java.lang.String SYNC2 = "stream_item_sync2";
    field public static final deprecated java.lang.String SYNC3 = "stream_item_sync3";
    field public static final deprecated java.lang.String SYNC4 = "stream_item_sync4";
    field public static final deprecated java.lang.String TEXT = "text";
    field public static final deprecated java.lang.String TIMESTAMP = "timestamp";
  }

  public static final class Settings.System extends android.provider.Settings.NameValueTable {
    field public static final java.lang.String APPEND_FOR_LAST_AUDIBLE = "_last_audible";
    field public static final java.lang.String VOLUME_ALARM = "volume_alarm";
    field public static final java.lang.String VOLUME_BLUETOOTH_SCO = "volume_bluetooth_sco";
    field public static final java.lang.String VOLUME_MUSIC = "volume_music";
    field public static final java.lang.String VOLUME_NOTIFICATION = "volume_notification";
    field public static final java.lang.String VOLUME_RING = "volume_ring";
    field public static final java.lang.String[] VOLUME_SETTINGS;
    field public static final java.lang.String VOLUME_SYSTEM = "volume_system";
    field public static final java.lang.String VOLUME_VOICE = "volume_voice";
  }

}

package android.text.format {

  public class DateFormat {
    field public static final deprecated char AM_PM = 97; // 0x0061 'a'
    field public static final deprecated char CAPITAL_AM_PM = 65; // 0x0041 'A'
    field public static final deprecated char DATE = 100; // 0x0064 'd'
    field public static final deprecated char DAY = 69; // 0x0045 'E'
    field public static final deprecated char HOUR = 104; // 0x0068 'h'
    field public static final deprecated char HOUR_OF_DAY = 107; // 0x006b 'k'
    field public static final deprecated char MINUTE = 109; // 0x006d 'm'
    field public static final deprecated char MONTH = 77; // 0x004d 'M'
    field public static final deprecated char QUOTE = 39; // 0x0027 '\''
    field public static final deprecated char SECONDS = 115; // 0x0073 's'
    field public static final deprecated char STANDALONE_MONTH = 76; // 0x004c 'L'
    field public static final deprecated char TIME_ZONE = 122; // 0x007a 'z'
    field public static final deprecated char YEAR = 121; // 0x0079 'y'
  }

}

package android.util {

  public deprecated class FloatMath {
    method public static float ceil(float);
    method public static float cos(float);
    method public static float exp(float);
    method public static float floor(float);
    method public static float hypot(float, float);
    method public static float pow(float, float);
    method public static float sin(float);
    method public static float sqrt(float);
  }

}

package android.view {

  public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
    method protected void initializeFadingEdge(android.content.res.TypedArray);
    method protected void initializeScrollbars(android.content.res.TypedArray);
  }

  public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
    field public static final int TYPE_KEYGUARD = 2004; // 0x7d4
  }

}

package android.widget {

  public class TextView extends android.view.View implements android.view.ViewTreeObserver.OnPreDrawListener {
    method public static int getTextColor(android.content.Context, android.content.res.TypedArray, int);
    method public static android.content.res.ColorStateList getTextColors(android.content.Context, android.content.res.TypedArray);
  }

}
+42 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 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.annotation;

import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PACKAGE;
import static java.lang.annotation.ElementType.TYPE;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Indicates an API is exposed for use by CTS.
 * <p>
 * These APIs are not guaranteed to remain consistent release-to-release,
 * and are not for use by apps linking against the Android SDK.
 * </p>
 *
 * @hide
 */
@Target({TYPE, FIELD, METHOD, CONSTRUCTOR, ANNOTATION_TYPE, PACKAGE})
@Retention(RetentionPolicy.SOURCE)
public @interface TestApi {
}