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

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

Snap for 6344429 from bee13fde to mainline-release

Change-Id: Ic01d8d47e3c4d1cba2cdaa920ee58e3af4896e06
parents 889b7e64 bee13fde
Loading
Loading
Loading
Loading
+16 −21
Original line number Original line Diff line number Diff line
@@ -577,25 +577,6 @@ platform_compat_config {
    src: ":framework-annotation-proc",
    src: ":framework-annotation-proc",
}
}


// A library including just UnsupportedAppUsage.java classes.
//
// Provided for target so that libraries can use it without depending on
// the whole of framework or the core platform API.
//
// Built for host so that the annotation processor can also use this annotation.
java_library {
    name: "unsupportedappusage-annotation",
    host_supported: true,
    srcs: [
        "core/java/android/annotation/IntDef.java",
    ],
    static_libs: [
        "art.module.api.annotations",
    ],

    sdk_version: "core_current",
}

// A temporary build target that is conditionally included on the bootclasspath if
// A temporary build target that is conditionally included on the bootclasspath if
// android.test.base library has been removed and which provides support for
// android.test.base library has been removed and which provides support for
// maintaining backwards compatibility for APKs that target pre-P and depend on
// maintaining backwards compatibility for APKs that target pre-P and depend on
@@ -971,7 +952,6 @@ filegroup {
        "core/java/android/content/pm/InstallationFileLocation.aidl",
        "core/java/android/content/pm/InstallationFileLocation.aidl",
        "core/java/android/content/pm/IDataLoaderStatusListener.aidl",
        "core/java/android/content/pm/IDataLoaderStatusListener.aidl",
        "core/java/android/content/pm/IPackageInstallerSessionFileSystemConnector.aidl",
        "core/java/android/content/pm/IPackageInstallerSessionFileSystemConnector.aidl",
        "core/java/android/content/pm/NamedParcelFileDescriptor.aidl",
    ],
    ],
    path: "core/java",
    path: "core/java",
}
}
@@ -1295,7 +1275,22 @@ droidstubs {
            removed_api_file: "telephony/api/system-removed.txt",
            removed_api_file: "telephony/api/system-removed.txt",
        },
        },
    },
    },
    defaults: ["framework-module-stubs-defaults-systemapi"],
    // TODO: make telephony inherit the shared stubs and remove this
    args: "--show-annotation android.annotation.SystemApi\\(" +
            "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" +
        "\\) " +
        "--error UnhiddenSystemApi " +
        "--hide BroadcastBehavior " +
        "--hide DeprecationMismatch " +
        "--hide HiddenSuperclass " +
        "--hide HiddenTypedefConstant " +
        "--hide HiddenTypeParameter " +
        "--hide MissingPermission " +
        "--hide RequiresPermission " +
        "--hide SdkConstant " +
        "--hide Todo " +
        "--hide Typo " +
        "--hide UnavailableSymbol ",
    filter_packages: ["android.telephony"],
    filter_packages: ["android.telephony"],
    sdk_version: "system_current",
    sdk_version: "system_current",
}
}
+35 −0
Original line number Original line Diff line number Diff line
@@ -26,6 +26,20 @@ mainline_stubs_args =
    "--hide Typo " +
    "--hide Typo " +
    "--hide UnavailableSymbol "
    "--hide UnavailableSymbol "


// TODO: modularize this so not every module has the same whitelist
framework_packages_to_document = [
    "android",
    "dalvik",
    "java",
    "javax",
    "junit",
    "org.apache.http",
    "org.json",
    "org.w3c.dom",
    "org.xml.sax",
    "org.xmlpull",
]

// TODO: remove the hiding when server classes are cleaned up.
// TODO: remove the hiding when server classes are cleaned up.
mainline_framework_stubs_args =
mainline_framework_stubs_args =
    mainline_stubs_args +
    mainline_stubs_args +
@@ -54,6 +68,7 @@ stubs_defaults {
    args: mainline_framework_stubs_args,
    args: mainline_framework_stubs_args,
    installable: false,
    installable: false,
    sdk_version: "current",
    sdk_version: "current",
    filter_packages: framework_packages_to_document,
    check_api: {
    check_api: {
        current: {
        current: {
            api_file: "api/current.txt",
            api_file: "api/current.txt",
@@ -72,6 +87,7 @@ stubs_defaults {
    libs: ["framework-annotations-lib"],
    libs: ["framework-annotations-lib"],
    installable: false,
    installable: false,
    sdk_version: "system_current",
    sdk_version: "system_current",
    filter_packages: framework_packages_to_document,
    check_api: {
    check_api: {
        current: {
        current: {
            api_file: "api/system-current.txt",
            api_file: "api/system-current.txt",
@@ -88,18 +104,30 @@ java_defaults {
    name: "framework-module-stubs-lib-defaults-publicapi",
    name: "framework-module-stubs-lib-defaults-publicapi",
    installable: false,
    installable: false,
    sdk_version: "module_current",
    sdk_version: "module_current",
    dist: {
        targets: ["sdk", "win_sdk"],
        dir: "apistubs/android/public",
    },
}
}


java_defaults {
java_defaults {
    name: "framework-module-stubs-lib-defaults-systemapi",
    name: "framework-module-stubs-lib-defaults-systemapi",
    installable: false,
    installable: false,
    sdk_version: "module_current",
    sdk_version: "module_current",
    dist: {
        targets: ["sdk", "win_sdk"],
        dir: "apistubs/android/system",
    },
}
}


java_defaults {
java_defaults {
    name: "framework-module-stubs-lib-defaults-module_libs_api",
    name: "framework-module-stubs-lib-defaults-module_libs_api",
    installable: false,
    installable: false,
    sdk_version: "module_current",
    sdk_version: "module_current",
    dist: {
        targets: ["sdk", "win_sdk"],
        dir: "apistubs/android/module-lib",
    },
}
}


// The defaults for module_libs comes in two parts - defaults for API checks
// The defaults for module_libs comes in two parts - defaults for API checks
@@ -113,6 +141,7 @@ stubs_defaults {
    libs: ["framework-annotations-lib"],
    libs: ["framework-annotations-lib"],
    installable: false,
    installable: false,
    sdk_version: "module_current",
    sdk_version: "module_current",
    filter_packages: framework_packages_to_document,
    check_api: {
    check_api: {
        current: {
        current: {
            api_file: "api/module-lib-current.txt",
            api_file: "api/module-lib-current.txt",
@@ -131,12 +160,14 @@ stubs_defaults {
    libs: ["framework-annotations-lib"],
    libs: ["framework-annotations-lib"],
    installable: false,
    installable: false,
    sdk_version: "module_current",
    sdk_version: "module_current",
    filter_packages: framework_packages_to_document,
}
}


stubs_defaults {
stubs_defaults {
    name: "service-module-stubs-srcs-defaults",
    name: "service-module-stubs-srcs-defaults",
    args: mainline_service_stubs_args,
    args: mainline_service_stubs_args,
    installable: false,
    installable: false,
    filter_packages: ["com.android."],
    check_api: {
    check_api: {
        current: {
        current: {
            api_file: "api/current.txt",
            api_file: "api/current.txt",
@@ -153,4 +184,8 @@ stubs_defaults {
// module java_library system_server stub libs.
// module java_library system_server stub libs.
java_defaults {
java_defaults {
    name: "service-module-stubs-defaults",
    name: "service-module-stubs-defaults",
    dist: {
        targets: ["sdk", "win_sdk"],
        dir: "apistubs/android/system-server",
    },
}
}
+2 −1
Original line number Original line Diff line number Diff line
@@ -29,7 +29,7 @@ package android.media {
    method public boolean advance(@NonNull android.media.MediaParser.SeekableInputReader) throws java.io.IOException;
    method public boolean advance(@NonNull android.media.MediaParser.SeekableInputReader) throws java.io.IOException;
    method @NonNull public static android.media.MediaParser create(@NonNull android.media.MediaParser.OutputConsumer, @NonNull java.lang.String...);
    method @NonNull public static android.media.MediaParser create(@NonNull android.media.MediaParser.OutputConsumer, @NonNull java.lang.String...);
    method @NonNull public static android.media.MediaParser createByName(@NonNull String, @NonNull android.media.MediaParser.OutputConsumer);
    method @NonNull public static android.media.MediaParser createByName(@NonNull String, @NonNull android.media.MediaParser.OutputConsumer);
    method @Nullable public String getParserName();
    method @NonNull public String getParserName();
    method @NonNull public static java.util.List<java.lang.String> getParserNames(@NonNull android.media.MediaFormat);
    method @NonNull public static java.util.List<java.lang.String> getParserNames(@NonNull android.media.MediaFormat);
    method public void release();
    method public void release();
    method public void seek(@NonNull android.media.MediaParser.SeekPoint);
    method public void seek(@NonNull android.media.MediaParser.SeekPoint);
@@ -65,6 +65,7 @@ package android.media {
    field public static final String PARSER_NAME_OGG = "android.media.mediaparser.OggParser";
    field public static final String PARSER_NAME_OGG = "android.media.mediaparser.OggParser";
    field public static final String PARSER_NAME_PS = "android.media.mediaparser.PsParser";
    field public static final String PARSER_NAME_PS = "android.media.mediaparser.PsParser";
    field public static final String PARSER_NAME_TS = "android.media.mediaparser.TsParser";
    field public static final String PARSER_NAME_TS = "android.media.mediaparser.TsParser";
    field public static final String PARSER_NAME_UNKNOWN = "android.media.mediaparser.UNKNOWN";
    field public static final String PARSER_NAME_WAV = "android.media.mediaparser.WavParser";
    field public static final String PARSER_NAME_WAV = "android.media.mediaparser.WavParser";
  }
  }


+137 −10
Original line number Original line Diff line number Diff line
@@ -45,6 +45,7 @@ import com.google.android.exoplayer2.extractor.ogg.OggExtractor;
import com.google.android.exoplayer2.extractor.ts.Ac3Extractor;
import com.google.android.exoplayer2.extractor.ts.Ac3Extractor;
import com.google.android.exoplayer2.extractor.ts.Ac4Extractor;
import com.google.android.exoplayer2.extractor.ts.Ac4Extractor;
import com.google.android.exoplayer2.extractor.ts.AdtsExtractor;
import com.google.android.exoplayer2.extractor.ts.AdtsExtractor;
import com.google.android.exoplayer2.extractor.ts.DefaultTsPayloadReaderFactory;
import com.google.android.exoplayer2.extractor.ts.PsExtractor;
import com.google.android.exoplayer2.extractor.ts.PsExtractor;
import com.google.android.exoplayer2.extractor.ts.TsExtractor;
import com.google.android.exoplayer2.extractor.ts.TsExtractor;
import com.google.android.exoplayer2.extractor.wav.WavExtractor;
import com.google.android.exoplayer2.extractor.wav.WavExtractor;
@@ -452,6 +453,7 @@ public final class MediaParser {
    @StringDef(
    @StringDef(
            prefix = {"PARSER_NAME_"},
            prefix = {"PARSER_NAME_"},
            value = {
            value = {
                PARSER_NAME_UNKNOWN,
                PARSER_NAME_MATROSKA,
                PARSER_NAME_MATROSKA,
                PARSER_NAME_FMP4,
                PARSER_NAME_FMP4,
                PARSER_NAME_MP4,
                PARSER_NAME_MP4,
@@ -469,6 +471,7 @@ public final class MediaParser {
            })
            })
    public @interface ParserName {}
    public @interface ParserName {}


    public static final String PARSER_NAME_UNKNOWN = "android.media.mediaparser.UNKNOWN";
    public static final String PARSER_NAME_MATROSKA = "android.media.mediaparser.MatroskaParser";
    public static final String PARSER_NAME_MATROSKA = "android.media.mediaparser.MatroskaParser";
    public static final String PARSER_NAME_FMP4 = "android.media.mediaparser.FragmentedMp4Parser";
    public static final String PARSER_NAME_FMP4 = "android.media.mediaparser.FragmentedMp4Parser";
    public static final String PARSER_NAME_MP4 = "android.media.mediaparser.Mp4Parser";
    public static final String PARSER_NAME_MP4 = "android.media.mediaparser.Mp4Parser";
@@ -644,6 +647,9 @@ public final class MediaParser {


    private static final Map<String, ExtractorFactory> EXTRACTOR_FACTORIES_BY_NAME;
    private static final Map<String, ExtractorFactory> EXTRACTOR_FACTORIES_BY_NAME;
    private static final Map<String, Class> EXPECTED_TYPE_BY_PARAMETER_NAME;
    private static final Map<String, Class> EXPECTED_TYPE_BY_PARAMETER_NAME;
    private static final String TS_MODE_SINGLE_PMT = "single_pmt";
    private static final String TS_MODE_MULTI_PMT = "multi_pmt";
    private static final String TS_MODE_HLS = "hls";


    // Instance creation methods.
    // Instance creation methods.


@@ -817,6 +823,12 @@ public final class MediaParser {
                            + value.getClass().getSimpleName()
                            + value.getClass().getSimpleName()
                            + " was passed.");
                            + " was passed.");
        }
        }
        if (PARAMETER_TS_MODE.equals(parameterName)
                && !TS_MODE_SINGLE_PMT.equals(value)
                && !TS_MODE_HLS.equals(value)
                && !TS_MODE_MULTI_PMT.equals(value)) {
            throw new IllegalArgumentException(PARAMETER_TS_MODE + " does not accept: " + value);
        }
        mParserParameters.put(parameterName, value);
        mParserParameters.put(parameterName, value);
        return this;
        return this;
    }
    }
@@ -836,14 +848,14 @@ public final class MediaParser {
     * Returns the name of the backing parser implementation.
     * Returns the name of the backing parser implementation.
     *
     *
     * <p>If this instance was creating using {@link #createByName}, the provided name is returned.
     * <p>If this instance was creating using {@link #createByName}, the provided name is returned.
     * If this instance was created using {@link #create}, this method will return null until the
     * If this instance was created using {@link #create}, this method will return {@link
     * first call to {@link #advance}, after which the name of the backing parser implementation is
     * #PARSER_NAME_UNKNOWN} until the first call to {@link #advance}, after which the name of the
     * returned.
     * backing parser implementation is returned.
     *
     *
     * @return The name of the backing parser implementation, or null if the backing parser
     * @return The name of the backing parser implementation, or null if the backing parser
     *     implementation has not yet been selected.
     *     implementation has not yet been selected.
     */
     */
    @Nullable
    @NonNull
    @ParserName
    @ParserName
    public String getParserName() {
    public String getParserName() {
        return mExtractorName;
        return mExtractorName;
@@ -880,13 +892,12 @@ public final class MediaParser {


        // TODO: Apply parameters when creating extractor instances.
        // TODO: Apply parameters when creating extractor instances.
        if (mExtractor == null) {
        if (mExtractor == null) {
            if (mExtractorName != null) {
            if (!mExtractorName.equals(PARSER_NAME_UNKNOWN)) {
                mExtractor = EXTRACTOR_FACTORIES_BY_NAME.get(mExtractorName).createInstance();
                mExtractor = EXTRACTOR_FACTORIES_BY_NAME.get(mExtractorName).createInstance();
                mExtractor.init(new ExtractorOutputAdapter());
                mExtractor.init(new ExtractorOutputAdapter());
            } else {
            } else {
                for (String parserName : mParserNamesPool) {
                for (String parserName : mParserNamesPool) {
                    Extractor extractor =
                    Extractor extractor = createExtractor(parserName);
                            EXTRACTOR_FACTORIES_BY_NAME.get(parserName).createInstance();
                    try {
                    try {
                        if (extractor.sniff(mExtractorInput)) {
                        if (extractor.sniff(mExtractorInput)) {
                            mExtractorName = parserName;
                            mExtractorName = parserName;
@@ -974,9 +985,7 @@ public final class MediaParser {
        mParserParameters = new HashMap<>();
        mParserParameters = new HashMap<>();
        mOutputConsumer = outputConsumer;
        mOutputConsumer = outputConsumer;
        mParserNamesPool = parserNamesPool;
        mParserNamesPool = parserNamesPool;
        if (!sniff) {
        mExtractorName = sniff ? PARSER_NAME_UNKNOWN : parserNamesPool[0];
            mExtractorName = parserNamesPool[0];
        }
        mPositionHolder = new PositionHolder();
        mPositionHolder = new PositionHolder();
        mDataSource = new InputReadingDataSource();
        mDataSource = new InputReadingDataSource();
        removePendingSeek();
        removePendingSeek();
@@ -993,6 +1002,124 @@ public final class MediaParser {
        mPendingSeekTimeMicros = -1;
        mPendingSeekTimeMicros = -1;
    }
    }


    private Extractor createExtractor(String parserName) {
        int flags = 0;
        switch (parserName) {
            case PARSER_NAME_MATROSKA:
                flags =
                        getBooleanParameter(PARAMETER_MATROSKA_DISABLE_CUES_SEEKING)
                                ? MatroskaExtractor.FLAG_DISABLE_SEEK_FOR_CUES
                                : 0;
                return new MatroskaExtractor(flags);
            case PARSER_NAME_FMP4:
                flags |=
                        getBooleanParameter(PARAMETER_MP4_IGNORE_EDIT_LISTS)
                                ? FragmentedMp4Extractor.FLAG_WORKAROUND_IGNORE_EDIT_LISTS
                                : 0;
                flags |=
                        getBooleanParameter(PARAMETER_MP4_IGNORE_TFDT_BOX)
                                ? FragmentedMp4Extractor.FLAG_WORKAROUND_IGNORE_TFDT_BOX
                                : 0;
                flags |=
                        getBooleanParameter(PARAMETER_MP4_TREAT_VIDEO_FRAMES_AS_KEYFRAMES)
                                ? FragmentedMp4Extractor
                                        .FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME
                                : 0;
                return new FragmentedMp4Extractor(flags);
            case PARSER_NAME_MP4:
                flags |=
                        getBooleanParameter(PARAMETER_MP4_IGNORE_EDIT_LISTS)
                                ? Mp4Extractor.FLAG_WORKAROUND_IGNORE_EDIT_LISTS
                                : 0;
                return new Mp4Extractor();
            case PARSER_NAME_MP3:
                flags |=
                        getBooleanParameter(PARAMETER_MP3_DISABLE_ID3)
                                ? Mp3Extractor.FLAG_DISABLE_ID3_METADATA
                                : 0;
                flags |=
                        getBooleanParameter(PARAMETER_MP3_ENABLE_CBR_SEEKING)
                                ? Mp3Extractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
                                : 0;
                // TODO: Add index seeking once we update the ExoPlayer version.
                return new Mp3Extractor(flags);
            case PARSER_NAME_ADTS:
                flags |=
                        getBooleanParameter(PARAMETER_ADTS_ENABLE_CBR_SEEKING)
                                ? AdtsExtractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
                                : 0;
                return new AdtsExtractor(flags);
            case PARSER_NAME_AC3:
                return new Ac3Extractor();
            case PARSER_NAME_TS:
                flags |=
                        getBooleanParameter(PARAMETER_TS_ALLOW_NON_IDR_AVC_KEYFRAMES)
                                ? DefaultTsPayloadReaderFactory.FLAG_ALLOW_NON_IDR_KEYFRAMES
                                : 0;
                flags |=
                        getBooleanParameter(PARAMETER_TS_DETECT_ACCESS_UNITS)
                                ? DefaultTsPayloadReaderFactory.FLAG_DETECT_ACCESS_UNITS
                                : 0;
                flags |=
                        getBooleanParameter(PARAMETER_TS_ENABLE_HDMV_DTS_AUDIO_STREAMS)
                                ? DefaultTsPayloadReaderFactory.FLAG_ENABLE_HDMV_DTS_AUDIO_STREAMS
                                : 0;
                flags |=
                        getBooleanParameter(PARAMETER_TS_IGNORE_AAC_STREAM)
                                ? DefaultTsPayloadReaderFactory.FLAG_IGNORE_AAC_STREAM
                                : 0;
                flags |=
                        getBooleanParameter(PARAMETER_TS_IGNORE_AVC_STREAM)
                                ? DefaultTsPayloadReaderFactory.FLAG_IGNORE_H264_STREAM
                                : 0;
                flags |=
                        getBooleanParameter(PARAMETER_TS_IGNORE_SPLICE_INFO_STREAM)
                                ? DefaultTsPayloadReaderFactory.FLAG_IGNORE_SPLICE_INFO_STREAM
                                : 0;
                String tsMode = getStringParameter(PARAMETER_TS_MODE, TS_MODE_SINGLE_PMT);
                int hlsMode =
                        TS_MODE_SINGLE_PMT.equals(tsMode)
                                ? TsExtractor.MODE_SINGLE_PMT
                                : TS_MODE_HLS.equals(tsMode)
                                        ? TsExtractor.MODE_HLS
                                        : TsExtractor.MODE_MULTI_PMT;
                return new TsExtractor(hlsMode, flags);
            case PARSER_NAME_FLV:
                return new FlvExtractor();
            case PARSER_NAME_OGG:
                return new OggExtractor();
            case PARSER_NAME_PS:
                return new PsExtractor();
            case PARSER_NAME_WAV:
                return new WavExtractor();
            case PARSER_NAME_AMR:
                flags |=
                        getBooleanParameter(PARAMETER_AMR_ENABLE_CBR_SEEKING)
                                ? AmrExtractor.FLAG_ENABLE_CONSTANT_BITRATE_SEEKING
                                : 0;
                return new AmrExtractor(flags);
            case PARSER_NAME_AC4:
                return new Ac4Extractor();
            case PARSER_NAME_FLAC:
                flags |=
                        getBooleanParameter(PARAMETER_FLAC_DISABLE_ID3)
                                ? FlacExtractor.FLAG_DISABLE_ID3_METADATA
                                : 0;
                return new FlacExtractor(flags);
            default:
                // Should never happen.
                throw new IllegalStateException("Unexpected attempt to create: " + parserName);
        }
    }

    private boolean getBooleanParameter(String name) {
        return (boolean) mParserParameters.getOrDefault(name, false);
    }

    private String getStringParameter(String name, String defaultValue) {
        return (String) mParserParameters.getOrDefault(name, defaultValue);
    }

    // Private classes.
    // Private classes.


    private static final class InputReadingDataSource implements DataSource {
    private static final class InputReadingDataSource implements DataSource {
+4 −0
Original line number Original line Diff line number Diff line
@@ -31,6 +31,10 @@ java_library {
        "com.android.permission",
        "com.android.permission",
        "test_com.android.permission",
        "test_com.android.permission",
    ],
    ],
    permitted_packages: [
        "android.permission",
        "android.app.role",
    ],
    hostdex: true,
    hostdex: true,
    installable: true,
    installable: true,
    visibility: [
    visibility: [
Loading