Loading Android.bp +16 −21 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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", } } Loading Loading @@ -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", } } Loading apex/Android.bp +35 −0 Original line number Original line Diff line number Diff line Loading @@ -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 + Loading Loading @@ -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", Loading @@ -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", Loading @@ -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 Loading @@ -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", Loading @@ -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", Loading @@ -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", }, } } apex/media/framework/api/current.txt +2 −1 Original line number Original line Diff line number Diff line Loading @@ -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); Loading Loading @@ -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"; } } Loading apex/media/framework/java/android/media/MediaParser.java +137 −10 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading @@ -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"; Loading Loading @@ -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. Loading Loading @@ -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; } } Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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(); Loading @@ -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 { Loading apex/permission/framework/Android.bp +4 −0 Original line number Original line Diff line number Diff line Loading @@ -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 Loading
Android.bp +16 −21 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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", } } Loading Loading @@ -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", } } Loading
apex/Android.bp +35 −0 Original line number Original line Diff line number Diff line Loading @@ -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 + Loading Loading @@ -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", Loading @@ -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", Loading @@ -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 Loading @@ -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", Loading @@ -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", Loading @@ -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", }, } }
apex/media/framework/api/current.txt +2 −1 Original line number Original line Diff line number Diff line Loading @@ -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); Loading Loading @@ -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"; } } Loading
apex/media/framework/java/android/media/MediaParser.java +137 −10 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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, Loading @@ -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"; Loading Loading @@ -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. Loading Loading @@ -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; } } Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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(); Loading @@ -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 { Loading
apex/permission/framework/Android.bp +4 −0 Original line number Original line Diff line number Diff line Loading @@ -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