mobile/android/base/moz.build
author Michael Comella <michael.l.comella@gmail.com>
Mon, 17 Jul 2017 18:10:16 -0700
changeset 419907 e25baed29efd7119609ad7838f46e33ee5ecebf7
parent 419829 21ac985081fd57393b47e57a25bd5824bb918d19
child 420528 371d34adf87a6e9f3ff6f878784a4eafb96b9d7e
permissions -rw-r--r--
Bug 1377287: Add URIUtils.getHostSecondLevelDomain and friends. r=liuche This is used by the iOS implementation of AS to get the highlight titles. MozReview-Commit-ID: 1p5Lf9OBcfD

# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

with Files('**'):
    BUG_COMPONENT = ('Firefox for Android', 'Build Config & IDE Support')

with Files('*.java.*'):
    BUG_COMPONENT = ('Firefox for Android', 'General')

with Files('*Manifest*'):
    BUG_COMPONENT = ('Firefox for Android', 'General')

with Files('adjust-sdk-sandbox.token'):
    BUG_COMPONENT = ('Firefox for Android', 'Build Config & IDE Support')

with Files('android-services.mozbuild'):
    BUG_COMPONENT = ('Android Background Services', 'Android Sync')

with Files('geckoview.ddf'):
    BUG_COMPONENT = ('Firefox for Android', 'GeckoView')

with Files('crashreporter/**'):
    BUG_COMPONENT = ('Firefox for Android', 'General')

with Files('java/**'):
    BUG_COMPONENT = ('Firefox for Android', 'General')

with Files('java/org/mozilla/gecko/activitystream/**'):
    BUG_COMPONENT = ('Firefox for Android', 'Awesomescreen')

with Files('java/org/mozilla/gecko/cleanup/**'):
    BUG_COMPONENT = ('Android Background Services', 'Firefox Health Report Service')

with Files('java/org/mozilla/gecko/distribution/**'):
    BUG_COMPONENT = ('Firefox for Android', 'Distributions')

with Files('java/org/mozilla/gecko/firstrun/**'):
    BUG_COMPONENT = ('Firefox for Android', 'First Run')

with Files('java/org/mozilla/gecko/home/**'):
    BUG_COMPONENT = ('Firefox for Android', 'Awesomescreen')

with Files('java/org/mozilla/gecko/icons/**'):
    BUG_COMPONENT = ('Firefox for Android', 'Favicon Handling')

with Files('java/org/mozilla/gecko/mdns/**'):
    BUG_COMPONENT = ('Firefox for Android', 'General')

with Files('java/org/mozilla/gecko/media/**'):
    BUG_COMPONENT = ('Firefox for Android', 'Audio/Video')

with Files('java/org/mozilla/gecko/mdns/**'):
    BUG_COMPONENT = ('Firefox for Android', 'Settings and Preferences')

with Files('java/org/mozilla/gecko/reader/**'):
    BUG_COMPONENT = ('Firefox for Android', 'Reader View')

with Files('java/org/mozilla/gecko/restrictions/**'):
    BUG_COMPONENT = ('Firefox for Android', 'Family Friendly Browsing')

with Files('java/org/mozilla/gecko/telemetry/**'):
    BUG_COMPONENT = ('Firefox for Android', 'Metrics')

with Files('java/org/mozilla/gecko/text/**'):
    BUG_COMPONENT = ('Firefox for Android', 'General')

with Files('java/org/mozilla/gecko/webapps/**'):
    BUG_COMPONENT = ('Firefox for Android', 'Web Apps')

with Files('java/org/mozilla/gecko/*LocaleManager*'):
    BUG_COMPONENT = ('Firefox for Android', 'Locale switching and selection')

with Files('java/org/mozilla/gecko/*ChromeCast*'):
    BUG_COMPONENT = ('Firefox for Android', 'Screencasting')

with Files('java/org/mozilla/gecko/*DynamicToolbar*'):
    BUG_COMPONENT = ('Firefox for Android', 'Graphics, Panning and Zooming')

with Files('java/org/mozilla/gecko/*Presentation*'):
    BUG_COMPONENT = ('Firefox for Android', 'Screencasting')

with Files('java/org/mozilla/gecko/*GuestSession*'):
    BUG_COMPONENT = ('Firefox for Android', 'Profile Handling')

with Files('locales/**'):
    BUG_COMPONENT = ('Firefox for Android', 'General')

with Files('../app/src/*/res/**'):
    BUG_COMPONENT = ('Firefox for Android', 'General')

with Files('../app/src/*/res/anim/**'):
    BUG_COMPONENT = ('Firefox for Android', 'Overlays')

with Files('../app/src/*/res/raw/*favicon*'):
    BUG_COMPONENT = ('Firefox for Android', 'Favicon Handling')

with Files('../app/src/*/res/xml*/*preference*'):
    BUG_COMPONENT = ('Firefox for Android', 'Settings and Preferences')

with Files('../app/src/*/res/menu/**'):
    BUG_COMPONENT = ('Firefox for Android', 'General')

with Files('../app/src/*/res/menu/*home*'):
    BUG_COMPONENT = ('Firefox for Android', 'Awesomescreen')

with Files('../app/src/*/res/menu/*activitystream*'):
    BUG_COMPONENT = ('Firefox for Android', 'Awesomescreen')

with Files('../app/src/*/res/menu/browsersearch_contextmenu.xml'):
    BUG_COMPONENT = ('Firefox for Android', 'Awesomescreen')

DIRS += ['locales']

GENERATED_FILES += [
    '../geckoview/generated/preprocessed/org/mozilla/geckoview/BuildConfig.java',
    'AndroidManifest.xml',
    'generated/preprocessed/org/mozilla/gecko/AdjustConstants.java',
    'generated/preprocessed/org/mozilla/gecko/AppConstants.java',
    'generated/preprocessed/org/mozilla/gecko/MmaConstants.java',
]
w = GENERATED_FILES['../geckoview/generated/preprocessed/org/mozilla/geckoview/BuildConfig.java']
w.script = 'generate_build_config.py:generate_java'
w.inputs += ['../geckoview/BuildConfig.java.in']
x = GENERATED_FILES['generated/preprocessed/org/mozilla/gecko/AdjustConstants.java']
x.script = 'generate_build_config.py:generate_java'
x.inputs += ['AdjustConstants.java.in']
y = GENERATED_FILES['generated/preprocessed/org/mozilla/gecko/AppConstants.java']
y.script = 'generate_build_config.py:generate_java'
y.inputs += ['AppConstants.java.in']
y = GENERATED_FILES['generated/preprocessed/org/mozilla/gecko/MmaConstants.java']
y.script = 'generate_build_config.py:generate_java'
y.inputs += ['MmaConstants.java.in']
z = GENERATED_FILES['AndroidManifest.xml']
z.script = 'generate_build_config.py:generate_android_manifest'
z.inputs += ['AndroidManifest.xml.in']

include('android-services.mozbuild')

geckoview_source_dir = TOPSRCDIR + '/mobile/android/geckoview/src/main/'
geckoview_thirdparty_source_dir = TOPSRCDIR + '/mobile/android/geckoview/src/thirdparty/'
thirdparty_source_dir = TOPSRCDIR + '/mobile/android/thirdparty/'

constants_jar = add_java_jar('constants')
constants_jar.sources += [geckoview_source_dir + 'java/org/mozilla/gecko/' + x for x in [
    'annotation/JNITarget.java',
    'annotation/ReflectionTarget.java',
    'annotation/RobocopTarget.java',
    'annotation/WebRTCJNITarget.java',
    'annotation/WrapForJNI.java',
    'SysInfo.java',
]]
constants_jar.sources += ['java/org/mozilla/gecko/' + x for x in [
    'adjust/AdjustHelperInterface.java',
    'adjust/AttributionHelperListener.java',
    'db/BrowserContract.java',
    'LocaleManager.java',
    'Locales.java',
    'mma/MmaInterface.java',
]]
constants_jar.generated_sources = [
    '../geckoview/generated/preprocessed/org/mozilla/geckoview/BuildConfig.java',
    'generated/preprocessed/org/mozilla/gecko/AdjustConstants.java',
    'generated/preprocessed/org/mozilla/gecko/AppConstants.java',
    'generated/preprocessed/org/mozilla/gecko/MmaConstants.java',
]
constants_jar.extra_jars = [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
    CONFIG['ANDROID_APPCOMPAT_V7_AAR_LIB'],
]

if CONFIG['MOZ_INSTALL_TRACKING']:
    constants_jar.sources += ['java/org/mozilla/gecko/' + x for x in [
        'adjust/AdjustHelper.java',
    ]]
    constants_jar.extra_jars += [
        'gecko-thirdparty-adjust_sdk.jar',
    ]
else:
    constants_jar.sources += ['java/org/mozilla/gecko/' + x for x in [
        'adjust/StubAdjustHelper.java',
    ]]

if CONFIG['MOZ_ANDROID_MMA']:
    constants_jar.sources += ['java/org/mozilla/gecko/' + x for x in [
        'mma/MmaLeanplumImp.java',
    ]]
    constants_jar.extra_jars += [
        'gecko-thirdparty-leanplum_sdk.jar'
    ]
else:
    constants_jar.sources += ['java/org/mozilla/gecko/' + x for x in [
        'mma/MmaStubImp.java',
    ]]

resjar = add_java_jar('gecko-R')
resjar.sources = []
resjar.generated_sources += [
    'generated/org/mozilla/gecko/R.java',
]

if CONFIG['ANDROID_SUPPORT_V4_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.v4']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_SUPPORT_V4_AAR_RES']]
# (no resources) resjar.generated_sources += ['generated/android/support/v4/R.java']
if CONFIG['ANDROID_APPCOMPAT_V7_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.v7.appcompat']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_APPCOMPAT_V7_AAR_RES']]
    resjar.generated_sources += ['generated/android/support/v7/appcompat/R.java']
if CONFIG['ANDROID_SUPPORT_VECTOR_DRAWABLE_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.graphics.drawable']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_SUPPORT_VECTOR_DRAWABLE_AAR_RES']]
# (no reosurces) resjar.generated_sources += ['generated/android/support/graphics/drawable/R.java']
if CONFIG['ANDROID_ANIMATED_VECTOR_DRAWABLE_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.graphics.drawable.animated']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_ANIMATED_VECTOR_DRAWABLE_AAR_RES']]
# (no resources) resjar.generated_sources += ['generated/android/support/graphics/drawable/animated/R.java']
if CONFIG['ANDROID_CARDVIEW_V7_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.v7.cardview']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_CARDVIEW_V7_AAR_RES']]
    resjar.generated_sources += ['generated/android/support/v7/cardview/R.java']
if CONFIG['ANDROID_DESIGN_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.design']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_DESIGN_AAR_RES']]
    resjar.generated_sources += ['generated/android/support/design/R.java']
if CONFIG['ANDROID_RECYCLERVIEW_V7_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.v7.recyclerview']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_RECYCLERVIEW_V7_AAR_RES']]
    resjar.generated_sources += ['generated/android/support/v7/recyclerview/R.java']
if CONFIG['ANDROID_CUSTOMTABS_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.customtabs']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_CUSTOMTABS_AAR_RES']]
# (no resources) resjar.generated_sources += ['generated/android/support/customtabs/R.java']
if CONFIG['ANDROID_PALETTE_V7_AAR']:
    ANDROID_EXTRA_PACKAGES += ['android.support.v7.palette']
    ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PALETTE_V7_AAR_RES']]
# (no resources) resjar.generated_sources += ['generated/android/support/v7/palette/R.java']

resjar.javac_flags += ['-Xlint:all']

mgjar = add_java_jar('gecko-mozglue')
mgjar.sources += [geckoview_source_dir + 'java/org/mozilla/gecko/' + x for x in [
    'mozglue/ByteBufferInputStream.java',
    'mozglue/DirectBufferAllocator.java',
    'mozglue/GeckoLoader.java',
    'mozglue/JNIObject.java',
    'mozglue/NativeReference.java',
    'mozglue/NativeZip.java',
    'mozglue/SafeIntent.java',
    'mozglue/SharedMemory.java',
]]
mgjar.generated_sources = [] # Keep it this way.
mgjar.extra_jars += [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    'constants.jar',
]
mgjar.javac_flags += ['-Xlint:all']

gujar = add_java_jar('gecko-util')
gujar.sources += [geckoview_source_dir + 'java/org/mozilla/gecko/' + x for x in [
    'util/ActivityResultHandler.java',
    'util/ActivityResultHandlerMap.java',
    'util/ActivityUtils.java',
    'util/BundleEventListener.java',
    'util/ContextUtils.java',
    'util/DateUtil.java',
    'util/EventCallback.java',
    'util/FileUtils.java',
    'util/FloatUtils.java',
    'util/GamepadUtils.java',
    'util/GeckoBackgroundThread.java',
    'util/GeckoBundle.java',
    'util/GeckoJarReader.java',
    'util/HardwareCodecCapabilityUtils.java',
    'util/HardwareUtils.java',
    'util/INIParser.java',
    'util/INISection.java',
    'util/InputOptionsUtils.java',
    'util/IntentUtils.java',
    'util/IOUtils.java',
    'util/JSONUtils.java',
    'util/MenuUtils.java',
    'util/NetworkUtils.java',
    'util/NonEvictingLruCache.java',
    'util/PrefUtils.java',
    'util/ProxySelector.java',
    'util/publicsuffix/PublicSuffix.java',
    'util/publicsuffix/PublicSuffixPatterns.java',
    'util/RawResource.java',
    'util/StringUtils.java',
    'util/ThreadUtils.java',
    'util/UIAsyncTask.java',
    'util/UUIDUtil.java',
    'util/WeakReferenceHandler.java',
    'util/WindowUtils.java',
]]
gujar.extra_jars = [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
    'constants.jar',
    'gecko-mozglue.jar',
]
gujar.javac_flags += ['-Xlint:all,-deprecation']

stjar = add_java_jar('sync-thirdparty')
stjar.sources += [ thirdparty_source_dir + f for f in sync_thirdparty_java_files ]
stjar.javac_flags = ['-Xlint:none']

services_jar = add_java_jar('services')
services_jar.sources += sync_java_files
services_jar.extra_jars = [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
    CONFIG['ANDROID_APPCOMPAT_V7_AAR_LIB'],
    'constants.jar',
    'gecko-R.jar',
    'gecko-mozglue.jar',
    'gecko-thirdparty.jar',
    'gecko-util.jar',
    'sync-thirdparty.jar',
]
services_jar.javac_flags += ['-Xlint:all,-deprecation']

if CONFIG['MOZ_WEBRTC']:
    base_root = TOPSRCDIR + '/media/webrtc/trunk/webrtc/base/java/src/org/webrtc/'
    video_capture_root = TOPSRCDIR + '/media/webrtc/trunk/webrtc/modules/video_capture/android/java/src/org/webrtc/videoengine/'
    audio_root = TOPSRCDIR + '/media/webrtc/trunk/webrtc/modules/audio_device/android/java/src/org/webrtc/voiceengine/'
    wrjar = add_java_jar('webrtc')
    wrjar.sources += [
        base_root + 'Logging.java',
        base_root + 'ThreadUtils.java',
    ]
    wrjar.sources += [
        video_capture_root + 'CaptureCapabilityAndroid.java',
        video_capture_root + 'VideoCaptureAndroid.java',
        video_capture_root + 'VideoCaptureDeviceInfoAndroid.java',
    ]
    wrjar.sources += [
        audio_root + 'BuildInfo.java',
        audio_root + 'WebRtcAudioEffects.java',
        audio_root + 'WebRtcAudioManager.java',
        audio_root + 'WebRtcAudioRecord.java',
        audio_root + 'WebRtcAudioTrack.java',
        audio_root + 'WebRtcAudioUtils.java',
    ]
    wrjar.extra_jars = [
        'constants.jar',
        'gecko-R.jar',
        'gecko-browser.jar',
        'gecko-mozglue.jar',
        'gecko-util.jar',
        'gecko-view.jar',
    ]
    wrjar.javac_flags += ['-Xlint:all,-deprecation,-cast']

gvjar = add_java_jar('gecko-view')

gvjar.sources += [geckoview_source_dir + 'java/org/mozilla/gecko/' + x
                  for x in [
    'AndroidGamepadManager.java',
    'Clipboard.java',
    'CrashHandler.java',
    'EventDispatcher.java',
    'GeckoAccessibility.java',
    'GeckoAppShell.java',
    'GeckoBatteryManager.java',
    'GeckoEditable.java',
    'GeckoEditableChild.java',
    'GeckoEditableClient.java',
    'GeckoEditableListener.java',
    'GeckoHalDefines.java',
    'GeckoInputConnection.java',
    'GeckoNetworkManager.java',
    'GeckoProfile.java',
    'GeckoProfileDirectories.java',
    'GeckoScreenOrientation.java',
    'GeckoSharedPrefs.java',
    'GeckoThread.java',
    'GeckoView.java',
    'GeckoViewHandler.java',
    'GeckoViewSettings.java',
    'gfx/BitmapUtils.java',
    'gfx/BufferedImage.java',
    'gfx/BufferedImageGLInfo.java',
    'gfx/DynamicToolbarAnimator.java',
    'gfx/FloatSize.java',
    'gfx/FullScreenState.java',
    'gfx/GeckoLayerClient.java',
    'gfx/GeckoSurface.java',
    'gfx/GeckoSurfaceTexture.java',
    'gfx/ImmutableViewportMetrics.java',
    'gfx/IntSize.java',
    'gfx/LayerView.java',
    'gfx/NativePanZoomController.java',
    'gfx/Overscroll.java',
    'gfx/OverscrollEdgeEffect.java',
    'gfx/PanningPerfAPI.java',
    'gfx/PanZoomController.java',
    'gfx/PointUtils.java',
    'gfx/RenderTask.java',
    'gfx/StackScroller.java',
    'gfx/SurfaceAllocator.java',
    'gfx/SurfaceAllocatorService.java',
    'gfx/SurfaceTextureListener.java',
    'gfx/ViewTransform.java',
    'gfx/VsyncSource.java',
    'InputConnectionListener.java',
    'InputMethods.java',
    'media/AsyncCodec.java',
    'media/AsyncCodecFactory.java',
    'media/BaseHlsPlayer.java',
    'media/Codec.java',
    'media/CodecProxy.java',
    'media/FormatParam.java',
    'media/GeckoAudioInfo.java',
    'media/GeckoHLSDemuxerWrapper.java',
    'media/GeckoHLSResourceWrapper.java',
    'media/GeckoHLSSample.java',
    'media/GeckoMediaDrm.java',
    'media/GeckoMediaDrmBridgeV21.java',
    'media/GeckoMediaDrmBridgeV23.java',
    'media/GeckoPlayerFactory.java',
    'media/GeckoVideoInfo.java',
    'media/JellyBeanAsyncCodec.java',
    'media/LollipopAsyncCodec.java',
    'media/MediaDrmProxy.java',
    'media/MediaManager.java',
    'media/RemoteManager.java',
    'media/RemoteMediaDrmBridge.java',
    'media/RemoteMediaDrmBridgeStub.java',
    'media/Sample.java',
    'media/SamplePool.java',
    'media/SessionKeyInfo.java',
    'media/SharedMemBuffer.java',
    'NativeQueue.java',
    'NotificationListener.java',
    'NSSBridge.java',
    'permissions/PermissionBlock.java',
    'permissions/Permissions.java',
    'permissions/PermissionsHelper.java',
    'PrefsHelper.java',
    'process/GeckoProcessManager.java',
    'process/GeckoServiceChildProcess.java',
    'ScreenManagerHelper.java',
    'ScreenOrientationDelegate.java',
    'sqlite/ByteBufferInputStream.java',
    'sqlite/MatrixBlobCursor.java',
    'sqlite/SQLiteBridge.java',
    'sqlite/SQLiteBridgeException.java',
    'TouchEventInterceptor.java',
    'WakeLockDelegate.java',
]]

gvjar.sources += [geckoview_thirdparty_source_dir + f for f in [
    'java/com/googlecode/eyesfree/braille/selfbraille/ISelfBrailleService.java',
    'java/com/googlecode/eyesfree/braille/selfbraille/SelfBrailleClient.java',
    'java/com/googlecode/eyesfree/braille/selfbraille/WriteData.java',
]]

if CONFIG['MOZ_ANDROID_HLS_SUPPORT']:
    gvjar.sources += [geckoview_source_dir + 'java/org/mozilla/gecko/' + x for x in [
        'media/GeckoHlsAudioRenderer.java',
        'media/GeckoHlsPlayer.java',
        'media/GeckoHlsRendererBase.java',
        'media/GeckoHlsVideoRenderer.java',
        'media/Utils.java',
    ]]


gvjar.extra_jars += [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
    'constants.jar',
    'gecko-mozglue.jar',
    'gecko-util.jar',
]

gvjar.javac_flags += [
    '-Xlint:all,-deprecation,-fallthrough',
    '-J-Xmx512m',
    '-J-Xms128m'
]


gbjar = add_java_jar('gecko-browser')

gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
    'AboutPages.java',
    'AccountsHelper.java',
    'ActionBarTextSelection.java',
    'ActionModeCompat.java',
    'ActionModeCompatView.java',
    'ActivityHandlerHelper.java',
    'activitystream/ActivityStream.java',
    'activitystream/ActivityStreamPreference.java',
    'activitystream/ActivityStreamTelemetry.java',
    'activitystream/homepanel/ActivityStreamHomeFragment.java',
    'activitystream/homepanel/ActivityStreamHomeScreen.java',
    'activitystream/homepanel/ActivityStreamPanel.java',
    'activitystream/homepanel/HighlightsDividerItemDecoration.java',
    'activitystream/homepanel/HighlightsLoader.java',
    'activitystream/homepanel/menu/ActivityStreamContextMenu.java',
    'activitystream/homepanel/menu/BottomSheetContextMenu.java',
    'activitystream/homepanel/menu/PopupContextMenu.java',
    'activitystream/homepanel/model/Highlight.java',
    'activitystream/homepanel/model/Item.java',
    'activitystream/homepanel/model/Metadata.java',
    'activitystream/homepanel/model/TopSite.java',
    'activitystream/homepanel/stream/HighlightItem.java',
    'activitystream/homepanel/stream/HighlightsTitle.java',
    'activitystream/homepanel/stream/StreamItem.java',
    'activitystream/homepanel/stream/TopPanel.java',
    'activitystream/homepanel/stream/WelcomePanel.java',
    'activitystream/homepanel/StreamItemAnimator.java',
    'activitystream/homepanel/StreamRecyclerAdapter.java',
    'activitystream/homepanel/topsites/TopSitesCard.java',
    'activitystream/homepanel/topsites/TopSitesPage.java',
    'activitystream/homepanel/topsites/TopSitesPageAdapter.java',
    'activitystream/homepanel/topsites/TopSitesPagerAdapter.java',
    'activitystream/ranking/HighlightCandidate.java',
    'activitystream/ranking/HighlightsRanking.java',
    'activitystream/ranking/RankingUtils.java',
    'activitystream/Utils.java',
    'adjust/AdjustBrowserAppDelegate.java',
    'animation/AnimationUtils.java',
    'animation/HeightChangeAnimation.java',
    'animation/PropertyAnimator.java',
    'animation/Rotate3DAnimation.java',
    'animation/ViewHelper.java',
    'ANRReporter.java',
    'bookmarks/BookmarkEditFragment.java',
    'bookmarks/BookmarkUtils.java',
    'bookmarks/CreateFolderCallback.java',
    'bookmarks/CreateFolderFragment.java',
    'bookmarks/EditBookmarkTask.java',
    'bookmarks/SelectFolderCallback.java',
    'bookmarks/SelectFolderFragment.java',
    'BootReceiver.java',
    'BrowserApp.java',
    'BrowserLocaleManager.java',
    'cleanup/FileCleanupController.java',
    'cleanup/FileCleanupService.java',
    'CustomEditText.java',
    'customtabs/ActionBarPresenter.java',
    'customtabs/CustomTabsActivity.java',
    'customtabs/GeckoCustomTabsService.java',
    'customtabs/IntentUtil.java',
    'DataReportingNotification.java',
    'dawn/DawnHelper.java',
    'db/AbstractPerProfileDatabaseProvider.java',
    'db/AbstractTransactionalProvider.java',
    'db/BaseTable.java',
    'db/BrowserDatabaseHelper.java',
    'db/BrowserDB.java',
    'db/BrowserProvider.java',
    'db/DBUtils.java',
    'db/FormHistoryProvider.java',
    'db/HomeProvider.java',
    'db/LocalBrowserDB.java',
    'db/LocalSearches.java',
    'db/LocalTabsAccessor.java',
    'db/LocalUrlAnnotations.java',
    'db/LocalURLMetadata.java',
    'db/LoginsProvider.java',
    'db/PasswordsProvider.java',
    'db/PerProfileDatabaseProvider.java',
    'db/PerProfileDatabases.java',
    'db/RemoteClient.java',
    'db/RemoteTab.java',
    'db/Searches.java',
    'db/SearchHistoryProvider.java',
    'db/SharedBrowserDatabaseProvider.java',
    'db/SQLiteBridgeContentProvider.java',
    'db/SuggestedSites.java',
    'db/Table.java',
    'db/TabsAccessor.java',
    'db/TabsProvider.java',
    'db/UrlAnnotations.java',
    'db/URLImageDataTable.java',
    'db/URLMetadata.java',
    'deeplink/DeepLinkContract.java',
    'delegates/BookmarkStateChangeDelegate.java',
    'delegates/BrowserAppDelegate.java',
    'delegates/BrowserAppDelegateWithReference.java',
    'delegates/OfflineTabStatusDelegate.java',
    'delegates/ScreenshotDelegate.java',
    'delegates/TabsTrayVisibilityAwareDelegate.java',
    'DevToolsAuthHelper.java',
    'distribution/Distribution.java',
    'distribution/DistributionStoreCallback.java',
    'distribution/PartnerBookmarksProviderProxy.java',
    'distribution/PartnerBrowserCustomizationsClient.java',
    'distribution/ReferrerDescriptor.java',
    'distribution/ReferrerReceiver.java',
    'dlc/BaseAction.java',
    'dlc/catalog/DownloadContent.java',
    'dlc/catalog/DownloadContentBootstrap.java',
    'dlc/catalog/DownloadContentBuilder.java',
    'dlc/catalog/DownloadContentCatalog.java',
    'dlc/DownloadAction.java',
    'dlc/DownloadContentService.java',
    'dlc/DownloadContentTelemetry.java',
    'dlc/StudyAction.java',
    'dlc/SyncAction.java',
    'dlc/VerifyAction.java',
    'DoorHangerPopup.java',
    'DownloadsIntegration.java',
    'DynamicToolbar.java',
    'EditBookmarkDialog.java',
    'Experiments.java',
    'feeds/action/CheckForUpdatesAction.java',
    'feeds/action/EnrollSubscriptionsAction.java',
    'feeds/action/FeedAction.java',
    'feeds/action/SetupAlarmsAction.java',
    'feeds/action/SubscribeToFeedAction.java',
    'feeds/action/WithdrawSubscriptionsAction.java',
    'feeds/ContentNotificationsDelegate.java',
    'feeds/FeedAlarmReceiver.java',
    'feeds/FeedFetcher.java',
    'feeds/FeedService.java',
    'feeds/knownsites/KnownSite.java',
    'feeds/knownsites/KnownSiteBlogger.java',
    'feeds/knownsites/KnownSiteMedium.java',
    'feeds/knownsites/KnownSiteTumblr.java',
    'feeds/knownsites/KnownSiteWordpress.java',
    'feeds/parser/Feed.java',
    'feeds/parser/Item.java',
    'feeds/parser/SimpleFeedParser.java',
    'feeds/subscriptions/FeedSubscription.java',
    'FilePicker.java',
    'FilePickerResultHandler.java',
    'FindInPageBar.java',
    'firstrun/DataPanel.java',
    'firstrun/FirstrunAnimationContainer.java',
    'firstrun/FirstrunPager.java',
    'firstrun/FirstrunPagerConfig.java',
    'firstrun/FirstrunPanel.java',
    'firstrun/RestrictedWelcomePanel.java',
    'firstrun/SyncPanel.java',
    'firstrun/TabQueuePanel.java',
    'FormAssistPopup.java',
    'GeckoActivity.java',
    'GeckoActivityMonitor.java',
    'GeckoApp.java',
    'GeckoApplication.java',
    'GeckoFontScaleListener.java',
    'GeckoJavaSampler.java',
    'GeckoMessageReceiver.java',
    'GeckoProfilesProvider.java',
    'GeckoService.java',
    'GeckoUpdateReceiver.java',
    'GlobalHistory.java',
    'GlobalPageMetadata.java',
    'GuestSession.java',
    'health/HealthRecorder.java',
    'health/SessionInformation.java',
    'health/StubbedHealthRecorder.java',
    'home/BookmarkFolderView.java',
    'home/BookmarkScreenshotRow.java',
    'home/BookmarksListAdapter.java',
    'home/BookmarksListView.java',
    'home/BookmarksPanel.java',
    'home/BrowserSearch.java',
    'home/ClientsAdapter.java',
    'home/CombinedHistoryAdapter.java',
    'home/CombinedHistoryItem.java',
    'home/CombinedHistoryPanel.java',
    'home/CombinedHistoryRecyclerView.java',
    'home/DynamicPanel.java',
    'home/FramePanelLayout.java',
    'home/HistorySectionsHelper.java',
    'home/HomeAdapter.java',
    'home/HomeBanner.java',
    'home/HomeConfig.java',
    'home/HomeConfigLoader.java',
    'home/HomeConfigPrefsBackend.java',
    'home/HomeContextMenuInfo.java',
    'home/HomeExpandableListView.java',
    'home/HomeFragment.java',
    'home/HomeListView.java',
    'home/HomePager.java',
    'home/HomePanelsManager.java',
    'home/HomeScreen.java',
    'home/ImageLoader.java',
    'home/MultiTypeCursorAdapter.java',
    'home/PanelAuthCache.java',
    'home/PanelAuthLayout.java',
    'home/PanelBackItemView.java',
    'home/PanelHeaderView.java',
    'home/PanelInfoManager.java',
    'home/PanelItemView.java',
    'home/PanelLayout.java',
    'home/PanelListView.java',
    'home/PanelRecyclerView.java',
    'home/PanelRecyclerViewAdapter.java',
    'home/PanelRefreshLayout.java',
    'home/PanelViewAdapter.java',
    'home/PanelViewItemHandler.java',
    'home/PinSiteDialog.java',
    'home/RecentTabsAdapter.java',
    'home/RemoteTabsExpandableListState.java',
    'home/SearchEngine.java',
    'home/SearchEngineAdapter.java',
    'home/SearchEngineBar.java',
    'home/SearchLoader.java',
    'home/SimpleCursorLoader.java',
    'home/SpacingDecoration.java',
    'home/TabMenuStrip.java',
    'home/TabMenuStripLayout.java',
    'home/TopSitesGridItemView.java',
    'home/TopSitesGridView.java',
    'home/TopSitesPanel.java',
    'home/TopSitesThumbnailView.java',
    'home/TwoLinePageRow.java',
    'icons/decoders/FaviconDecoder.java',
    'icons/decoders/ICODecoder.java',
    'icons/decoders/IconDirectoryEntry.java',
    'icons/decoders/LoadFaviconResult.java',
    'icons/IconCallback.java',
    'icons/IconDescriptor.java',
    'icons/IconDescriptorComparator.java',
    'icons/IconRequest.java',
    'icons/IconRequestBuilder.java',
    'icons/IconRequestExecutor.java',
    'icons/IconResponse.java',
    'icons/Icons.java',
    'icons/IconsHelper.java',
    'icons/IconTask.java',
    'icons/loader/ContentProviderLoader.java',
    'icons/loader/DataUriLoader.java',
    'icons/loader/DiskLoader.java',
    'icons/loader/IconDownloader.java',
    'icons/loader/IconGenerator.java',
    'icons/loader/IconLoader.java',
    'icons/loader/JarLoader.java',
    'icons/loader/LegacyLoader.java',
    'icons/loader/MemoryLoader.java',
    'icons/loader/SuggestedSiteLoader.java',
    'icons/preparation/AboutPagesPreparer.java',
    'icons/preparation/AddDefaultIconUrl.java',
    'icons/preparation/FilterKnownFailureUrls.java',
    'icons/preparation/FilterMimeTypes.java',
    'icons/preparation/FilterPrivilegedUrls.java',
    'icons/preparation/LookupIconUrl.java',
    'icons/preparation/Preparer.java',
    'icons/preparation/SuggestedSitePreparer.java',
    'icons/processing/ColorProcessor.java',
    'icons/processing/DiskProcessor.java',
    'icons/processing/MemoryProcessor.java',
    'icons/processing/Processor.java',
    'icons/processing/ResizingProcessor.java',
    'icons/storage/DiskStorage.java',
    'icons/storage/FailureCache.java',
    'icons/storage/MemoryStorage.java',
    'IntentHelper.java',
    'LauncherActivity.java',
    'lwt/LightweightTheme.java',
    'lwt/LightweightThemeDrawable.java',
    'mdns/MulticastDNSManager.java',
    'media/AudioFocusAgent.java',
    'media/MediaControlService.java',
    'media/VideoPlayer.java',
    'MediaCastingBar.java',
    'MemoryMonitor.java',
    'menu/GeckoMenu.java',
    'menu/GeckoMenuInflater.java',
    'menu/GeckoMenuItem.java',
    'menu/GeckoSubMenu.java',
    'menu/MenuItemActionBar.java',
    'menu/MenuItemDefault.java',
    'menu/MenuItemSwitcherLayout.java',
    'menu/MenuPanel.java',
    'menu/MenuPopup.java',
    'mma/MmaDelegate.java',
    'MotionEventInterceptor.java',
    'notifications/NotificationClient.java',
    'notifications/NotificationHelper.java',
    'notifications/NotificationReceiver.java',
    'notifications/NotificationService.java',
    'notifications/WhatsNewReceiver.java',
    'overlays/OverlayConstants.java',
    'overlays/service/OverlayActionService.java',
    'overlays/service/ShareData.java',
    'overlays/service/sharemethods/AddBookmark.java',
    'overlays/service/sharemethods/SendTab.java',
    'overlays/service/sharemethods/ShareMethod.java',
    'overlays/ui/OverlayDialogButton.java',
    'overlays/ui/SendTabDeviceListArrayAdapter.java',
    'overlays/ui/SendTabList.java',
    'overlays/ui/SendTabTargetSelectedListener.java',
    'overlays/ui/ShareDialog.java',
    'PackageReplacedReceiver.java',
    'preferences/AlignRightLinkPreference.java',
    'preferences/AndroidImport.java',
    'preferences/AndroidImportPreference.java',
    'preferences/AppCompatPreferenceActivity.java',
    'preferences/ClearOnShutdownPref.java',
    'preferences/CustomCheckBoxPreference.java',
    'preferences/CustomListCategory.java',
    'preferences/CustomListPreference.java',
    'preferences/DistroSharedPrefsImport.java',
    'preferences/GeckoPreferenceFragment.java',
    'preferences/GeckoPreferences.java',
    'preferences/LinkPreference.java',
    'preferences/ListCheckboxPreference.java',
    'preferences/LocaleListPreference.java',
    'preferences/ModifiableHintPreference.java',
    'preferences/MultiChoicePreference.java',
    'preferences/MultiPrefMultiChoicePreference.java',
    'preferences/PanelsPreference.java',
    'preferences/PanelsPreferenceCategory.java',
    'preferences/PrivateDataPreference.java',
    'preferences/SearchEnginePreference.java',
    'preferences/SearchPreferenceCategory.java',
    'preferences/SetHomepagePreference.java',
    'preferences/SyncPreference.java',
    'PresentationView.java',
    'PrintHelper.java',
    'PrivateTab.java',
    'promotion/AddToHomeScreenPromotion.java',
    'promotion/HomeScreenPrompt.java',
    'promotion/ReaderViewBookmarkPromotion.java',
    'promotion/SimpleHelperUI.java',
    'prompts/ColorPickerInput.java',
    'prompts/IconGridInput.java',
    'prompts/IntentChooserPrompt.java',
    'prompts/IntentHandler.java',
    'prompts/Prompt.java',
    'prompts/PromptInput.java',
    'prompts/PromptListAdapter.java',
    'prompts/PromptListItem.java',
    'prompts/PromptService.java',
    'prompts/TabInput.java',
    'reader/ReaderModeUtils.java',
    'reader/ReadingListHelper.java',
    'reader/SavedReaderViewHelper.java',
    'RemoteClientsDialogFragment.java',
    'Restarter.java',
    'restrictions/DefaultConfiguration.java',
    'restrictions/GuestProfileConfiguration.java',
    'restrictions/Restrictable.java',
    'restrictions/RestrictedProfileConfiguration.java',
    'restrictions/RestrictionCache.java',
    'restrictions/RestrictionConfiguration.java',
    'restrictions/RestrictionProvider.java',
    'restrictions/Restrictions.java',
    'ScreenshotObserver.java',
    'search/SearchEngine.java',
    'search/SearchEngineManager.java',
    'SessionParser.java',
    'SharedPreferencesHelper.java',
    'SiteIdentity.java',
    'SnackbarBuilder.java',
    'SuggestClient.java',
    'switchboard/AsyncConfigLoader.java',
    'switchboard/DeviceUuidFactory.java',
    'switchboard/Preferences.java',
    'switchboard/Switch.java',
    'switchboard/SwitchBoard.java',
    'Tab.java',
    'tabqueue/TabQueueHelper.java',
    'tabqueue/TabQueuePrompt.java',
    'tabqueue/TabQueueService.java',
    'tabqueue/TabReceivedService.java',
    'Tabs.java',
    'tabs/AutoFitTabsGridLayout.java',
    'tabs/CompactTabsGridLayout.java',
    'tabs/PrivateTabsPanel.java',
    'tabs/TabCurve.java',
    'tabs/TabHistoryController.java',
    'tabs/TabHistoryFragment.java',
    'tabs/TabHistoryItemRow.java',
    'tabs/TabHistoryPage.java',
    'tabs/TabPanelBackButton.java',
    'tabs/TabsGridLayout.java',
    'tabs/TabsGridLayoutAnimator.java',
    'tabs/TabsLayout.java',
    'tabs/TabsLayoutAdapter.java',
    'tabs/TabsLayoutItemView.java',
    'tabs/TabsListLayout.java',
    'tabs/TabsListLayoutAnimator.java',
    'tabs/TabsPanel.java',
    'tabs/TabsPanelThumbnailView.java',
    'tabs/TabsTouchHelperCallback.java',
    'Telemetry.java',
    'telemetry/measurements/CampaignIdMeasurements.java',
    'telemetry/measurements/SearchCountMeasurements.java',
    'telemetry/measurements/SessionMeasurements.java',
    'telemetry/pingbuilders/TelemetryCorePingBuilder.java',
    'telemetry/pingbuilders/TelemetryLocalPingBuilder.java',
    'telemetry/pingbuilders/TelemetryPingBuilder.java',
    'telemetry/pingbuilders/TelemetrySyncEventPingBuilder.java',
    'telemetry/pingbuilders/TelemetrySyncPingBuilder.java',
    'telemetry/pingbuilders/TelemetrySyncPingBundleBuilder.java',
    'telemetry/schedulers/TelemetryUploadAllPingsImmediatelyScheduler.java',
    'telemetry/schedulers/TelemetryUploadScheduler.java',
    'telemetry/stores/TelemetryJSONFilePingStore.java',
    'telemetry/stores/TelemetryPingStore.java',
    'telemetry/TelemetryBackgroundReceiver.java',
    'telemetry/TelemetryConstants.java',
    'telemetry/TelemetryCorePingDelegate.java',
    'telemetry/TelemetryDispatcher.java',
    'telemetry/TelemetryLocalPing.java',
    'telemetry/TelemetryOutgoingPing.java',
    'telemetry/TelemetryPing.java',
    'telemetry/TelemetryPreferences.java',
    'telemetry/TelemetryUploadService.java',
    'TelemetryContract.java',
    'text/FloatingActionModeCallback.java',
    'text/FloatingToolbarTextSelection.java',
    'text/TextAction.java',
    'text/TextSelection.java',
    'ThumbnailHelper.java',
    'toolbar/AutocompleteHandler.java',
    'toolbar/BackButton.java',
    'toolbar/BrowserToolbar.java',
    'toolbar/BrowserToolbarPhone.java',
    'toolbar/BrowserToolbarPhoneBase.java',
    'toolbar/BrowserToolbarTablet.java',
    'toolbar/BrowserToolbarTabletBase.java',
    'toolbar/CanvasDelegate.java',
    'toolbar/ForwardButton.java',
    'toolbar/NavButton.java',
    'toolbar/PageActionLayout.java',
    'toolbar/PhoneTabsButton.java',
    'toolbar/SecurityModeUtil.java',
    'toolbar/ShapedButton.java',
    'toolbar/ShapedButtonFrameLayout.java',
    'toolbar/SiteIdentityPopup.java',
    'toolbar/ToolbarDisplayLayout.java',
    'toolbar/ToolbarEditLayout.java',
    'toolbar/ToolbarEditText.java',
    'toolbar/ToolbarPrefs.java',
    'toolbar/ToolbarProgressView.java',
    'trackingprotection/TrackingProtectionPrompt.java',
    'updater/PostUpdateHandler.java',
    'updater/UpdateService.java',
    'updater/UpdateServiceHelper.java',
    'util/ColorUtil.java',
    'util/DrawableUtil.java',
    'util/JavaUtil.java',
    'util/ResourceDrawableUtils.java',
    'util/TouchTargetUtil.java',
    'util/URIUtils.java',
    'util/ViewUtil.java',
    'webapps/WebAppActivity.java',
    'webapps/WebAppIndexer.java',
    'webapps/WebApps.java',
    'widget/ActionModePresenter.java',
    'widget/ActivityChooserModel.java',
    'widget/AllCapsTextView.java',
    'widget/AnchoredPopup.java',
    'widget/AnimatedHeightLayout.java',
    'widget/BasicColorPicker.java',
    'widget/CheckableLinearLayout.java',
    'widget/ClickableWhenDisabledEditText.java',
    'widget/ContentSecurityDoorHanger.java',
    'widget/CropImageView.java',
    'widget/DateTimePicker.java',
    'widget/DefaultDoorHanger.java',
    'widget/DefaultItemAnimatorBase.java',
    'widget/DoorHanger.java',
    'widget/DoorhangerConfig.java',
    'widget/EllipsisTextView.java',
    'widget/ExternalIntentDuringPrivateBrowsingPromptFragment.java',
    'widget/FadedMultiColorTextView.java',
    'widget/FadedSingleColorTextView.java',
    'widget/FadedTextView.java',
    'widget/FaviconView.java',
    'widget/FilledCardView.java',
    'widget/FlowLayout.java',
    'widget/GeckoActionProvider.java',
    'widget/GeckoPopupMenu.java',
    'widget/GridSpacingDecoration.java',
    'widget/HistoryDividerItemDecoration.java',
    'widget/IconTabWidget.java',
    'widget/LoginDoorHanger.java',
    'widget/RecyclerViewClickSupport.java',
    'widget/ResizablePathDrawable.java',
    'widget/RoundedCornerLayout.java',
    'widget/SiteLogins.java',
    'widget/SplashScreen.java',
    'widget/SquaredImageView.java',
    'widget/SquaredRelativeLayout.java',
    'widget/SwipeDismissListViewTouchListener.java',
    'widget/TabThumbnailWrapper.java',
    'widget/ThumbnailView.java',
    'widget/TouchDelegateWithReset.java',
]]
# The following sources are checked in to version control but
# generated by a script (java/org/mozilla/gecko/widget/themed/generate_themed_views.py).
# If you're editing this list, make sure to edit that script.
gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
    'widget/themed/ThemedEditText.java',
    'widget/themed/ThemedFrameLayout.java',
    'widget/themed/ThemedImageButton.java',
    'widget/themed/ThemedImageView.java',
    'widget/themed/ThemedLinearLayout.java',
    'widget/themed/ThemedListView.java',
    'widget/themed/ThemedRelativeLayout.java',
    'widget/themed/ThemedTextSwitcher.java',
    'widget/themed/ThemedTextView.java',
    'widget/themed/ThemedView.java',
]]
if CONFIG['MOZ_ANDROID_PHOTON']:
    gbjar.sources += ['../app/src/photon/java/org/mozilla/gecko/' + x for x in [
        'home/SearchEngineRow.java',
        'home/SuggestionItem.java',
        'skin/SkinConfig.java',
        'toolbar/TabCounter.java',
    ]]
else:
    gbjar.sources += ['../app/src/australis/java/org/mozilla/gecko/' + x for x in [
        'home/SearchEngineRow.java',
        'skin/SkinConfig.java',
        'toolbar/TabCounter.java',
    ]]

android_package_dir = CONFIG['ANDROID_PACKAGE_NAME'].replace('.', '/')
gbjar.generated_sources = [] # Keep it this way.
gbjar.extra_jars += [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
    'constants.jar',
]
if CONFIG['MOZ_CRASHREPORTER']:
    gbjar.sources += [ 'java/org/mozilla/gecko/CrashReporter.java' ]
    ANDROID_RES_DIRS += [ 'crashreporter/res' ]

if CONFIG['MOZ_ANDROID_GCM']:
    gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
        'gcm/GcmInstanceIDListenerService.java',
        'gcm/GcmMessageListenerService.java',
        'gcm/GcmTokenClient.java',
        'push/Fetched.java',
        'push/PushClient.java',
        'push/PushManager.java',
        'push/PushRegistration.java',
        'push/PushService.java',
        'push/PushState.java',
        'push/PushSubscription.java',
    ]]

if (CONFIG['MOZ_ANDROID_MAX_SDK_VERSION']):
    max_sdk_version = int(CONFIG['MOZ_ANDROID_MAX_SDK_VERSION'])
else:
    max_sdk_version = 999

# Only bother to include new tablet code if we're building for tablet-capable
# OS releases.
if max_sdk_version >= 11:
    gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
        'tabs/TabStrip.java',
        'tabs/TabStripAdapter.java',
        'tabs/TabStripDividerItem.java',
        'tabs/TabStripItemAnimator.java',
        'tabs/TabStripItemView.java',
        'tabs/TabStripView.java'
    ]]

gbjar.extra_jars += [
    'gecko-R.jar',
    'gecko-mozglue.jar',
    'gecko-thirdparty.jar',
    'gecko-util.jar',
    'gecko-view.jar',
    'sync-thirdparty.jar',
    'services.jar',
]

moz_native_devices_jars = [
    CONFIG['ANDROID_MEDIAROUTER_V7_AAR_LIB'],
    CONFIG['ANDROID_MEDIAROUTER_V7_AAR_INTERNAL_LIB'],
    CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR_LIB'],
    CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_LIB'],
    CONFIG['ANDROID_PLAY_SERVICES_CAST_AAR_LIB'],
]
moz_native_devices_sources = ['java/org/mozilla/gecko/' + x for x in [
    'ChromeCastDisplay.java',
    'ChromeCastPlayer.java',
    'GeckoMediaPlayer.java',
    'GeckoPresentationDisplay.java',
    'MediaPlayerManager.java',
    'PresentationMediaPlayerManager.java',
    'RemotePresentationService.java',
]]
if CONFIG['MOZ_NATIVE_DEVICES']:
    gbjar.extra_jars += moz_native_devices_jars
    gbjar.sources += moz_native_devices_sources

    if CONFIG['ANDROID_MEDIAROUTER_V7_AAR']:
        ANDROID_EXTRA_PACKAGES += ['android.support.v7.mediarouter']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_MEDIAROUTER_V7_AAR_RES']]
        resjar.generated_sources += ['generated/android/support/v7/mediarouter/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms.base']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR_RES']]
        resjar.generated_sources += ['generated/com/google/android/gms/base/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_RES']]
        resjar.generated_sources += ['generated/com/google/android/gms/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_CAST_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms.cast']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_CAST_AAR_RES']]
        resjar.generated_sources += ['generated/com/google/android/gms/cast/R.java']

if CONFIG['MOZ_ANDROID_GCM']:
    gbjar.extra_jars += [
        CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR_LIB'],
        CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_LIB'],
        CONFIG['ANDROID_PLAY_SERVICES_GCM_AAR_LIB'],
        CONFIG['ANDROID_PLAY_SERVICES_MEASUREMENT_AAR_LIB'],
    ]

    if CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR_RES']]
        resjar.generated_sources += ['generated/com/google/android/gms/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_RES']]
        resjar.generated_sources += ['generated/com/google/android/gms/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_GCM_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms.gcm']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_GCM_AAR_RES']]
# (no resources) resjar.generated_sources += ['generated/com/google/android/gms/gcm/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_MEASUREMENT_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms.measurement']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_MEASUREMENT_AAR_RES']]
# (no resources) resjar.generated_sources += ['generated/android/support/v7/palette/R.java']

if CONFIG['MOZ_INSTALL_TRACKING']:
    gbjar.extra_jars += [
        CONFIG['ANDROID_PLAY_SERVICES_ADS_AAR_LIB'],
        CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_LIB'],
    ]

    if CONFIG['ANDROID_PLAY_SERVICES_ADS_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms.ads']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_ADS_AAR_RES']]
        resjar.generated_sources += ['generated/com/google/android/gms/ads/R.java']

    if CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR']:
        ANDROID_EXTRA_PACKAGES += ['com.google.android.gms']
        ANDROID_EXTRA_RES_DIRS += ['%' + CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_RES']]
        resjar.generated_sources += ['generated/com/google/android/gms/R.java']

gbjar.extra_jars += [CONFIG['ANDROID_APPCOMPAT_V7_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_SUPPORT_VECTOR_DRAWABLE_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_ANIMATED_VECTOR_DRAWABLE_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_CARDVIEW_V7_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_DESIGN_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_RECYCLERVIEW_V7_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_CUSTOMTABS_AAR_LIB']]
gbjar.extra_jars += [CONFIG['ANDROID_PALETTE_V7_AAR_LIB']]

gbjar.javac_flags += ['-Xlint:all,-deprecation,-fallthrough', '-J-Xmx512m', '-J-Xms128m']

# gecko-thirdparty is a good place to put small independent libraries
gtjar = add_java_jar('gecko-thirdparty')
gtjar.sources += [ thirdparty_source_dir + f for f in [
    'com/booking/rtlviewpager/PagerAdapterWrapper.java',
    'com/booking/rtlviewpager/RtlViewPager.java',
    'com/jakewharton/disklrucache/DiskLruCache.java',
    'com/jakewharton/disklrucache/StrictLineReader.java',
    'com/jakewharton/disklrucache/Util.java',
    'com/squareup/leakcanary/LeakCanary.java',
    'com/squareup/leakcanary/RefWatcher.java',
    'com/squareup/picasso/Action.java',
    'com/squareup/picasso/AssetBitmapHunter.java',
    'com/squareup/picasso/BitmapHunter.java',
    'com/squareup/picasso/Cache.java',
    'com/squareup/picasso/Callback.java',
    'com/squareup/picasso/ContactsPhotoBitmapHunter.java',
    'com/squareup/picasso/ContentStreamBitmapHunter.java',
    'com/squareup/picasso/DeferredRequestCreator.java',
    'com/squareup/picasso/Dispatcher.java',
    'com/squareup/picasso/Downloader.java',
    'com/squareup/picasso/FetchAction.java',
    'com/squareup/picasso/FileBitmapHunter.java',
    'com/squareup/picasso/GetAction.java',
    'com/squareup/picasso/ImageViewAction.java',
    'com/squareup/picasso/LruCache.java',
    'com/squareup/picasso/MarkableInputStream.java',
    'com/squareup/picasso/MediaStoreBitmapHunter.java',
    'com/squareup/picasso/NetworkBitmapHunter.java',
    'com/squareup/picasso/Picasso.java',
    'com/squareup/picasso/PicassoDrawable.java',
    'com/squareup/picasso/PicassoExecutorService.java',
    'com/squareup/picasso/Request.java',
    'com/squareup/picasso/RequestCreator.java',
    'com/squareup/picasso/ResourceBitmapHunter.java',
    'com/squareup/picasso/Stats.java',
    'com/squareup/picasso/StatsSnapshot.java',
    'com/squareup/picasso/Target.java',
    'com/squareup/picasso/TargetAction.java',
    'com/squareup/picasso/Transformation.java',
    'com/squareup/picasso/UrlConnectionDownloader.java',
    'com/squareup/picasso/Utils.java'
] ]
gtjar.extra_jars = [
    CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
    CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
]

if not CONFIG['MOZILLA_OFFICIAL']:
    gtjar.sources += [ thirdparty_source_dir + f for f in [
        'org/lucasr/dspec/DesignSpec.java',
        'org/lucasr/dspec/RawResource.java'
    ] ]

if CONFIG['MOZ_INSTALL_TRACKING']:
    adjustjar = add_java_jar('gecko-thirdparty-adjust_sdk')
    adjustjar.sources += [ thirdparty_source_dir + f for f in [
        'com/adjust/sdk/ActivityHandler.java',
        'com/adjust/sdk/ActivityKind.java',
        'com/adjust/sdk/ActivityPackage.java',
        'com/adjust/sdk/ActivityState.java',
        'com/adjust/sdk/Adjust.java',
        'com/adjust/sdk/AdjustAttribution.java',
        'com/adjust/sdk/AdjustConfig.java',
        'com/adjust/sdk/AdjustEvent.java',
        'com/adjust/sdk/AdjustFactory.java',
        'com/adjust/sdk/AdjustInstance.java',
        'com/adjust/sdk/AdjustReferrerReceiver.java',
        'com/adjust/sdk/AttributionHandler.java',
        'com/adjust/sdk/Constants.java',
        'com/adjust/sdk/DeviceInfo.java',
        'com/adjust/sdk/IActivityHandler.java',
        'com/adjust/sdk/IAttributionHandler.java',
        'com/adjust/sdk/ILogger.java',
        'com/adjust/sdk/IPackageHandler.java',
        'com/adjust/sdk/IRequestHandler.java',
        'com/adjust/sdk/Logger.java',
        'com/adjust/sdk/LogLevel.java',
        'com/adjust/sdk/OnAttributionChangedListener.java',
        'com/adjust/sdk/PackageBuilder.java',
        'com/adjust/sdk/PackageHandler.java',
        'com/adjust/sdk/plugin/AndroidIdUtil.java',
        'com/adjust/sdk/plugin/MacAddressUtil.java',
        'com/adjust/sdk/plugin/Plugin.java',
        'com/adjust/sdk/Reflection.java',
        'com/adjust/sdk/RequestHandler.java',
        'com/adjust/sdk/UnitTestActivity.java',
        'com/adjust/sdk/Util.java'
    ] ]
    adjustjar.extra_jars += [
        'sync-thirdparty.jar',
    ]


if CONFIG['MOZ_ANDROID_MMA']:
    lpjar = add_java_jar('gecko-thirdparty-leanplum_sdk')
    lpjar.sources += [ thirdparty_source_dir + f for f in [
        'com/leanplum/ActionArgs.java',
        'com/leanplum/ActionContext.java',
        'com/leanplum/activities/LeanplumAccountAuthenticatorActivity.java',
        'com/leanplum/activities/LeanplumActionBarActivity.java',
        'com/leanplum/activities/LeanplumActivity.java',
        'com/leanplum/activities/LeanplumActivityGroup.java',
        'com/leanplum/activities/LeanplumAliasActivity.java',
        'com/leanplum/activities/LeanplumAppCompatActivity.java',
        'com/leanplum/activities/LeanplumExpandableListActivity.java',
        'com/leanplum/activities/LeanplumFragmentActivity.java',
        'com/leanplum/activities/LeanplumLauncherActivity.java',
        'com/leanplum/activities/LeanplumListActivity.java',
        'com/leanplum/activities/LeanplumNativeActivity.java',
        'com/leanplum/activities/LeanplumPreferenceActivity.java',
        'com/leanplum/activities/LeanplumTabActivity.java',
        'com/leanplum/annotations/File.java',
        'com/leanplum/annotations/Parser.java',
        'com/leanplum/annotations/Variable.java',
        'com/leanplum/CacheUpdateBlock.java',
        'com/leanplum/callbacks/ActionCallback.java',
        'com/leanplum/callbacks/InboxChangedCallback.java',
        'com/leanplum/callbacks/NewsfeedChangedCallback.java',
        'com/leanplum/callbacks/PostponableAction.java',
        'com/leanplum/callbacks/RegisterDeviceCallback.java',
        'com/leanplum/callbacks/RegisterDeviceFinishedCallback.java',
        'com/leanplum/callbacks/StartCallback.java',
        'com/leanplum/callbacks/VariableCallback.java',
        'com/leanplum/callbacks/VariablesChangedCallback.java',
        'com/leanplum/internal/ActionArg.java',
        'com/leanplum/internal/ActionManager.java',
        'com/leanplum/internal/AESCrypt.java',
        'com/leanplum/internal/BaseActionContext.java',
        'com/leanplum/internal/CollectionUtil.java',
        'com/leanplum/internal/Constants.java',
        'com/leanplum/internal/FileManager.java',
        'com/leanplum/internal/HybiParser.java',
        'com/leanplum/internal/JsonConverter.java',
        'com/leanplum/internal/LeanplumInternal.java',
        'com/leanplum/internal/LeanplumManifestHelper.java',
        'com/leanplum/internal/LeanplumManifestParser.java',
        'com/leanplum/internal/LeanplumMessageMatchFilter.java',
        'com/leanplum/internal/LeanplumUIEditorWrapper.java',
        'com/leanplum/internal/Log.java',
        'com/leanplum/internal/OsHandler.java',
        'com/leanplum/internal/Registration.java',
        'com/leanplum/internal/Request.java',
        'com/leanplum/internal/RequestFactory.java',
        'com/leanplum/internal/ResourceQualifiers.java',
        'com/leanplum/internal/Socket.java',
        'com/leanplum/internal/SocketIOClient.java',
        'com/leanplum/internal/Util.java',
        'com/leanplum/internal/VarCache.java',
        'com/leanplum/internal/WebSocketClient.java',
        'com/leanplum/Leanplum.java',
        'com/leanplum/LeanplumActivityHelper.java',
        'com/leanplum/LeanplumApplication.java',
        'com/leanplum/LeanplumCloudMessagingProvider.java',
        'com/leanplum/LeanplumDeviceIdMode.java',
        'com/leanplum/LeanplumEditorMode.java',
        'com/leanplum/LeanplumException.java',
        'com/leanplum/LeanplumGcmProvider.java',
        'com/leanplum/LeanplumInbox.java',
        'com/leanplum/LeanplumInboxMessage.java',
        'com/leanplum/LeanplumInflater.java',
        'com/leanplum/LeanplumLocalPushListenerService.java',
        'com/leanplum/LeanplumLocationAccuracyType.java',
        'com/leanplum/LeanplumManualProvider.java',
        'com/leanplum/LeanplumPushInstanceIDService.java',
        'com/leanplum/LeanplumPushListenerService.java',
        'com/leanplum/LeanplumPushNotificationCustomizer.java',
        'com/leanplum/LeanplumPushReceiver.java',
        'com/leanplum/LeanplumPushRegistrationService.java',
        'com/leanplum/LeanplumPushService.java',
        'com/leanplum/LeanplumResources.java',
        'com/leanplum/LeanplumUIEditor.java',
        'com/leanplum/LocationManager.java',
        'com/leanplum/messagetemplates/Alert.java',
        'com/leanplum/messagetemplates/BaseMessageDialog.java',
        'com/leanplum/messagetemplates/BaseMessageOptions.java',
        'com/leanplum/messagetemplates/CenterPopup.java',
        'com/leanplum/messagetemplates/CenterPopupOptions.java',
        'com/leanplum/messagetemplates/Confirm.java',
        'com/leanplum/messagetemplates/HTMLOptions.java',
        'com/leanplum/messagetemplates/HTMLTemplate.java',
        'com/leanplum/messagetemplates/Interstitial.java',
        'com/leanplum/messagetemplates/InterstitialOptions.java',
        'com/leanplum/messagetemplates/MessageTemplates.java',
        'com/leanplum/messagetemplates/OpenURL.java',
        'com/leanplum/messagetemplates/WebInterstitial.java',
        'com/leanplum/messagetemplates/WebInterstitialOptions.java',
        'com/leanplum/Newsfeed.java',
        'com/leanplum/NewsfeedMessage.java',
        'com/leanplum/UIEditorBridge.java',
        'com/leanplum/utils/BitmapUtil.java',
        'com/leanplum/utils/SharedPreferencesUtil.java',
        'com/leanplum/utils/SizeUtil.java',
        'com/leanplum/Var.java',
        'com/leanplum/views/BackgroundImageView.java',
        'com/leanplum/views/CloseButton.java',
    ] ]
    lpjar.extra_jars += [
        CONFIG['ANDROID_APPCOMPAT_V7_AAR_LIB'],
        CONFIG['ANDROID_PLAY_SERVICES_ADS_AAR_LIB'],
        CONFIG['ANDROID_PLAY_SERVICES_BASEMENT_AAR_LIB'],
        CONFIG['ANDROID_PLAY_SERVICES_BASE_AAR_LIB'],
        CONFIG['ANDROID_PLAY_SERVICES_GCM_AAR_LIB'],
        CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
        CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
        CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
        'sync-thirdparty.jar',
    ]

# Putting branding earlier allows branders to override default resources.
ANDROID_RES_DIRS += [
    '/' + CONFIG['MOZ_BRANDING_DIRECTORY'] + '/res',
]

if CONFIG['MOZ_ANDROID_PHOTON']:
    ANDROID_RES_DIRS += [
        '/mobile/android/app/src/photon/res',
    ]
else:
    ANDROID_RES_DIRS += [
        '/mobile/android/app/src/australis/res',
    ]

ANDROID_RES_DIRS += [
    '/mobile/android/app/src/main/res',
    '/mobile/android/services/src/main/res',
    '!res',
]

ANDROID_GENERATED_RESFILES += [
    'res/raw/browsersearch.json',
    'res/raw/suggestedsites.json',
    'res/values/strings.xml',
]

ANDROID_ASSETS_DIRS += [
    '/mobile/android/app/assets',
]

if CONFIG['MOZ_ANDROID_DISTRIBUTION_DIRECTORY']:
    # If you change this, also change its equivalent in mobile/android/bouncer.
    if not CONFIG['MOZ_ANDROID_PACKAGE_INSTALL_BOUNCER']:
        # If we are packaging the bouncer, it will have the distribution, so don't put
        # it in the main APK as well.
        ANDROID_ASSETS_DIRS += [
            '%' + CONFIG['MOZ_ANDROID_DISTRIBUTION_DIRECTORY'] + '/assets',
        ]

if CONFIG['MOZ_ANDROID_SEARCH_ACTIVITY']:
    # The Search Activity is mostly independent of Fennec proper, but
    # it does depend on Geckoview.  Therefore, we build it as a jar
    # that depends on the Geckoview jars.
    search_source_dir = SRCDIR + '/../search'
    include('../search/search_activity_sources.mozbuild')

    search_activity = add_java_jar('search-activity')
    search_activity.sources += [search_source_dir + '/' + f for f in search_activity_sources]
    search_activity.javac_flags += ['-Xlint:all']
    search_activity.extra_jars = [
        CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
        CONFIG['ANDROID_SUPPORT_V4_AAR_LIB'],
        CONFIG['ANDROID_SUPPORT_V4_AAR_INTERNAL_LIB'],
        'constants.jar',
        'gecko-R.jar',
        'gecko-browser.jar',
        'gecko-mozglue.jar',
        'gecko-thirdparty.jar',
        'gecko-util.jar',
        'gecko-view.jar',
    ]

DEFINES['ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME']
FINAL_TARGET_PP_FILES += ['package-name.txt.in']

gvjar.sources += ['generated/org/mozilla/gecko/' + x for x in [
    'gfx/ISurfaceAllocator.java',
    'IGeckoEditableChild.java',
    'IGeckoEditableParent.java',
    'media/ICodec.java',
    'media/ICodecCallbacks.java',
    'media/IMediaDrmBridge.java',
    'media/IMediaDrmBridgeCallbacks.java',
    'media/IMediaManager.java',
    'process/IChildProcess.java',
    'process/IProcessManager.java',
]]

if CONFIG['MOZ_ANDROID_HLS_SUPPORT']:
    gvjar.extra_jars += [
        'exoplayer2.jar',
    ]

    exoplayer2_jar = add_java_jar('exoplayer2')

    exoplayer2_jar.javac_flags += [
        '-Xlint:all,-serial,-rawtypes,-unchecked,-fallthrough',
    ]

    exoplayer2_jar.extra_jars += [
        CONFIG['ANDROID_SUPPORT_ANNOTATIONS_JAR_LIB'],
    ]

    exoplayer2_jar.sources += [geckoview_thirdparty_source_dir + 'java/com/google/android/exoplayer2/' + x for x in [
        'audio/Ac3Util.java',
        'audio/AudioCapabilities.java',
        'audio/AudioCapabilitiesReceiver.java',
        'audio/AudioDecoderException.java',
        'audio/AudioProcessor.java',
        'audio/AudioRendererEventListener.java',
        'audio/AudioTrack.java',
        'audio/ChannelMappingAudioProcessor.java',
        'audio/DtsUtil.java',
        'audio/MediaCodecAudioRenderer.java',
        'audio/ResamplingAudioProcessor.java',
        'audio/SimpleDecoderAudioRenderer.java',
        'audio/Sonic.java',
        'audio/SonicAudioProcessor.java',
        'BaseRenderer.java',
        'C.java',
        'decoder/Buffer.java',
        'decoder/CryptoInfo.java',
        'decoder/Decoder.java',
        'decoder/DecoderCounters.java',
        'decoder/DecoderInputBuffer.java',
        'decoder/OutputBuffer.java',
        'decoder/SimpleDecoder.java',
        'decoder/SimpleOutputBuffer.java',
        'DefaultLoadControl.java',
        'DefaultRenderersFactory.java',
        'drm/DecryptionException.java',
        'drm/DefaultDrmSessionManager.java',
        'drm/DrmInitData.java',
        'drm/DrmSession.java',
        'drm/DrmSessionManager.java',
        'drm/ExoMediaCrypto.java',
        'drm/ExoMediaDrm.java',
        'drm/FrameworkMediaCrypto.java',
        'drm/FrameworkMediaDrm.java',
        'drm/HttpMediaDrmCallback.java',
        'drm/KeysExpiredException.java',
        'drm/MediaDrmCallback.java',
        'drm/OfflineLicenseHelper.java',
        'drm/UnsupportedDrmException.java',
        'drm/WidevineUtil.java',
        'ExoPlaybackException.java',
        'ExoPlayer.java',
        'ExoPlayerFactory.java',
        'ExoPlayerImpl.java',
        'ExoPlayerImplInternal.java',
        'ExoPlayerLibraryInfo.java',
        'extractor/ChunkIndex.java',
        'extractor/DefaultExtractorInput.java',
        'extractor/DefaultExtractorsFactory.java',
        'extractor/DefaultTrackOutput.java',
        'extractor/DummyTrackOutput.java',
        'extractor/Extractor.java',
        'extractor/ExtractorInput.java',
        'extractor/ExtractorOutput.java',
        'extractor/ExtractorsFactory.java',
        'extractor/flv/AudioTagPayloadReader.java',
        'extractor/flv/FlvExtractor.java',
        'extractor/flv/ScriptTagPayloadReader.java',
        'extractor/flv/TagPayloadReader.java',
        'extractor/flv/VideoTagPayloadReader.java',
        'extractor/GaplessInfoHolder.java',
        'extractor/mkv/DefaultEbmlReader.java',
        'extractor/mkv/EbmlReader.java',
        'extractor/mkv/EbmlReaderOutput.java',
        'extractor/mkv/MatroskaExtractor.java',
        'extractor/mkv/Sniffer.java',
        'extractor/mkv/VarintReader.java',
        'extractor/mp3/ConstantBitrateSeeker.java',
        'extractor/mp3/Mp3Extractor.java',
        'extractor/mp3/VbriSeeker.java',
        'extractor/mp3/XingSeeker.java',
        'extractor/mp4/Atom.java',
        'extractor/mp4/AtomParsers.java',
        'extractor/mp4/DefaultSampleValues.java',
        'extractor/mp4/FixedSampleSizeRechunker.java',
        'extractor/mp4/FragmentedMp4Extractor.java',
        'extractor/mp4/MetadataUtil.java',
        'extractor/mp4/Mp4Extractor.java',
        'extractor/mp4/PsshAtomUtil.java',
        'extractor/mp4/Sniffer.java',
        'extractor/mp4/Track.java',
        'extractor/mp4/TrackEncryptionBox.java',
        'extractor/mp4/TrackFragment.java',
        'extractor/mp4/TrackSampleTable.java',
        'extractor/MpegAudioHeader.java',
        'extractor/ogg/DefaultOggSeeker.java',
        'extractor/ogg/FlacReader.java',
        'extractor/ogg/OggExtractor.java',
        'extractor/ogg/OggPacket.java',
        'extractor/ogg/OggPageHeader.java',
        'extractor/ogg/OggSeeker.java',
        'extractor/ogg/OpusReader.java',
        'extractor/ogg/StreamReader.java',
        'extractor/ogg/VorbisBitArray.java',
        'extractor/ogg/VorbisReader.java',
        'extractor/ogg/VorbisUtil.java',
        'extractor/PositionHolder.java',
        'extractor/rawcc/RawCcExtractor.java',
        'extractor/SeekMap.java',
        'extractor/TrackOutput.java',
        'extractor/ts/Ac3Extractor.java',
        'extractor/ts/Ac3Reader.java',
        'extractor/ts/AdtsExtractor.java',
        'extractor/ts/AdtsReader.java',
        'extractor/ts/DefaultTsPayloadReaderFactory.java',
        'extractor/ts/DtsReader.java',
        'extractor/ts/DvbSubtitleReader.java',
        'extractor/ts/ElementaryStreamReader.java',
        'extractor/ts/H262Reader.java',
        'extractor/ts/H264Reader.java',
        'extractor/ts/H265Reader.java',
        'extractor/ts/Id3Reader.java',
        'extractor/ts/MpegAudioReader.java',
        'extractor/ts/NalUnitTargetBuffer.java',
        'extractor/ts/PesReader.java',
        'extractor/ts/PsExtractor.java',
        'extractor/ts/SectionPayloadReader.java',
        'extractor/ts/SectionReader.java',
        'extractor/ts/SeiReader.java',
        'extractor/ts/SpliceInfoSectionReader.java',
        'extractor/ts/TsExtractor.java',
        'extractor/ts/TsPayloadReader.java',
        'extractor/wav/WavExtractor.java',
        'extractor/wav/WavHeader.java',
        'extractor/wav/WavHeaderReader.java',
        'Format.java',
        'FormatHolder.java',
        'IllegalSeekPositionException.java',
        'LoadControl.java',
        'mediacodec/MediaCodecInfo.java',
        'mediacodec/MediaCodecRenderer.java',
        'mediacodec/MediaCodecSelector.java',
        'mediacodec/MediaCodecUtil.java',
        'metadata/emsg/EventMessage.java',
        'metadata/emsg/EventMessageDecoder.java',
        'metadata/id3/ApicFrame.java',
        'metadata/id3/BinaryFrame.java',
        'metadata/id3/ChapterFrame.java',
        'metadata/id3/ChapterTocFrame.java',
        'metadata/id3/CommentFrame.java',
        'metadata/id3/GeobFrame.java',
        'metadata/id3/Id3Decoder.java',
        'metadata/id3/Id3Frame.java',
        'metadata/id3/PrivFrame.java',
        'metadata/id3/TextInformationFrame.java',
        'metadata/id3/UrlLinkFrame.java',
        'metadata/Metadata.java',
        'metadata/MetadataDecoder.java',
        'metadata/MetadataDecoderException.java',
        'metadata/MetadataDecoderFactory.java',
        'metadata/MetadataInputBuffer.java',
        'metadata/MetadataRenderer.java',
        'metadata/scte35/PrivateCommand.java',
        'metadata/scte35/SpliceCommand.java',
        'metadata/scte35/SpliceInfoDecoder.java',
        'metadata/scte35/SpliceInsertCommand.java',
        'metadata/scte35/SpliceNullCommand.java',
        'metadata/scte35/SpliceScheduleCommand.java',
        'metadata/scte35/TimeSignalCommand.java',
        'ParserException.java',
        'PlaybackParameters.java',
        'Renderer.java',
        'RendererCapabilities.java',
        'RendererConfiguration.java',
        'RenderersFactory.java',
        'SimpleExoPlayer.java',
        'source/AdaptiveMediaSourceEventListener.java',
        'source/BehindLiveWindowException.java',
        'source/chunk/BaseMediaChunk.java',
        'source/chunk/BaseMediaChunkOutput.java',
        'source/chunk/Chunk.java',
        'source/chunk/ChunkedTrackBlacklistUtil.java',
        'source/chunk/ChunkExtractorWrapper.java',
        'source/chunk/ChunkHolder.java',
        'source/chunk/ChunkSampleStream.java',
        'source/chunk/ChunkSource.java',
        'source/chunk/ContainerMediaChunk.java',
        'source/chunk/DataChunk.java',
        'source/chunk/InitializationChunk.java',
        'source/chunk/MediaChunk.java',
        'source/chunk/SingleSampleMediaChunk.java',
        'source/ClippingMediaPeriod.java',
        'source/ClippingMediaSource.java',
        'source/CompositeSequenceableLoader.java',
        'source/ConcatenatingMediaSource.java',
        'source/EmptySampleStream.java',
        'source/ExtractorMediaPeriod.java',
        'source/ExtractorMediaSource.java',
        'source/hls/Aes128DataSource.java',
        'source/hls/DefaultHlsDataSourceFactory.java',
        'source/hls/HlsChunkSource.java',
        'source/hls/HlsDataSourceFactory.java',
        'source/hls/HlsManifest.java',
        'source/hls/HlsMediaChunk.java',
        'source/hls/HlsMediaPeriod.java',
        'source/hls/HlsMediaSource.java',
        'source/hls/HlsSampleStream.java',
        'source/hls/HlsSampleStreamWrapper.java',
        'source/hls/playlist/HlsMasterPlaylist.java',
        'source/hls/playlist/HlsMediaPlaylist.java',
        'source/hls/playlist/HlsPlaylist.java',
        'source/hls/playlist/HlsPlaylistParser.java',
        'source/hls/playlist/HlsPlaylistTracker.java',
        'source/hls/TimestampAdjusterProvider.java',
        'source/hls/WebvttExtractor.java',
        'source/LoopingMediaSource.java',
        'source/MediaPeriod.java',
        'source/MediaSource.java',
        'source/MergingMediaPeriod.java',
        'source/MergingMediaSource.java',
        'source/SampleStream.java',
        'source/SequenceableLoader.java',
        'source/SinglePeriodTimeline.java',
        'source/SingleSampleMediaPeriod.java',
        'source/SingleSampleMediaSource.java',
        'source/TrackGroup.java',
        'source/TrackGroupArray.java',
        'source/UnrecognizedInputFormatException.java',
        'text/CaptionStyleCompat.java',
        'text/cea/Cea608Decoder.java',
        'text/cea/Cea708Cue.java',
        'text/cea/Cea708Decoder.java',
        'text/cea/CeaDecoder.java',
        'text/cea/CeaOutputBuffer.java',
        'text/cea/CeaSubtitle.java',
        'text/cea/CeaUtil.java',
        'text/Cue.java',
        'text/dvb/DvbDecoder.java',
        'text/dvb/DvbParser.java',
        'text/dvb/DvbSubtitle.java',
        'text/SimpleSubtitleDecoder.java',
        'text/SimpleSubtitleOutputBuffer.java',
        'text/subrip/SubripDecoder.java',
        'text/subrip/SubripSubtitle.java',
        'text/Subtitle.java',
        'text/SubtitleDecoder.java',
        'text/SubtitleDecoderException.java',
        'text/SubtitleDecoderFactory.java',
        'text/SubtitleInputBuffer.java',
        'text/SubtitleOutputBuffer.java',
        'text/TextRenderer.java',
        'text/ttml/TtmlDecoder.java',
        'text/ttml/TtmlNode.java',
        'text/ttml/TtmlRegion.java',
        'text/ttml/TtmlRenderUtil.java',
        'text/ttml/TtmlStyle.java',
        'text/ttml/TtmlSubtitle.java',
        'text/tx3g/Tx3gDecoder.java',
        'text/tx3g/Tx3gSubtitle.java',
        'text/webvtt/CssParser.java',
        'text/webvtt/Mp4WebvttDecoder.java',
        'text/webvtt/Mp4WebvttSubtitle.java',
        'text/webvtt/WebvttCssStyle.java',
        'text/webvtt/WebvttCue.java',
        'text/webvtt/WebvttCueParser.java',
        'text/webvtt/WebvttDecoder.java',
        'text/webvtt/WebvttParserUtil.java',
        'text/webvtt/WebvttSubtitle.java',
        'Timeline.java',
        'trackselection/AdaptiveTrackSelection.java',
        'trackselection/BaseTrackSelection.java',
        'trackselection/DefaultTrackSelector.java',
        'trackselection/FixedTrackSelection.java',
        'trackselection/MappingTrackSelector.java',
        'trackselection/RandomTrackSelection.java',
        'trackselection/TrackSelection.java',
        'trackselection/TrackSelectionArray.java',
        'trackselection/TrackSelector.java',
        'trackselection/TrackSelectorResult.java',
        'upstream/Allocation.java',
        'upstream/Allocator.java',
        'upstream/AssetDataSource.java',
        'upstream/BandwidthMeter.java',
        'upstream/ByteArrayDataSink.java',
        'upstream/ByteArrayDataSource.java',
        'upstream/cache/Cache.java',
        'upstream/cache/CacheDataSink.java',
        'upstream/cache/CacheDataSinkFactory.java',
        'upstream/cache/CacheDataSource.java',
        'upstream/cache/CacheDataSourceFactory.java',
        'upstream/cache/CachedContent.java',
        'upstream/cache/CachedContentIndex.java',
        'upstream/cache/CachedRegionTracker.java',
        'upstream/cache/CacheEvictor.java',
        'upstream/cache/CacheSpan.java',
        'upstream/cache/CacheUtil.java',
        'upstream/cache/LeastRecentlyUsedCacheEvictor.java',
        'upstream/cache/NoOpCacheEvictor.java',
        'upstream/cache/SimpleCache.java',
        'upstream/cache/SimpleCacheSpan.java',
        'upstream/ContentDataSource.java',
        'upstream/crypto/AesCipherDataSink.java',
        'upstream/crypto/AesCipherDataSource.java',
        'upstream/crypto/AesFlushingCipher.java',
        'upstream/crypto/CryptoUtil.java',
        'upstream/DataSink.java',
        'upstream/DataSource.java',
        'upstream/DataSourceException.java',
        'upstream/DataSourceInputStream.java',
        'upstream/DataSpec.java',
        'upstream/DefaultAllocator.java',
        'upstream/DefaultBandwidthMeter.java',
        'upstream/DefaultDataSource.java',
        'upstream/DefaultDataSourceFactory.java',
        'upstream/DefaultHttpDataSource.java',
        'upstream/DefaultHttpDataSourceFactory.java',
        'upstream/DummyDataSource.java',
        'upstream/FileDataSource.java',
        'upstream/FileDataSourceFactory.java',
        'upstream/HttpDataSource.java',
        'upstream/Loader.java',
        'upstream/LoaderErrorThrower.java',
        'upstream/ParsingLoadable.java',
        'upstream/PriorityDataSource.java',
        'upstream/PriorityDataSourceFactory.java',
        'upstream/RawResourceDataSource.java',
        'upstream/TeeDataSource.java',
        'upstream/TransferListener.java',
        'upstream/UdpDataSource.java',
        'util/Assertions.java',
        'util/AtomicFile.java',
        'util/Clock.java',
        'util/CodecSpecificDataUtil.java',
        'util/ColorParser.java',
        'util/ConditionVariable.java',
        'util/FlacStreamInfo.java',
        'util/LibraryLoader.java',
        'util/LongArray.java',
        'util/MediaClock.java',
        'util/MimeTypes.java',
        'util/NalUnitUtil.java',
        'util/ParsableBitArray.java',
        'util/ParsableByteArray.java',
        'util/ParsableNalUnitBitArray.java',
        'util/Predicate.java',
        'util/PriorityTaskManager.java',
        'util/ReusableBufferedOutputStream.java',
        'util/SlidingPercentile.java',
        'util/StandaloneMediaClock.java',
        'util/SystemClock.java',
        'util/TimestampAdjuster.java',
        'util/TraceUtil.java',
        'util/UriUtil.java',
        'util/Util.java',
        'util/XmlPullParserUtil.java',
        'video/AvcConfig.java',
        'video/ColorInfo.java',
        'video/HevcConfig.java',
        'video/MediaCodecVideoRenderer.java',
        'video/VideoFrameReleaseTimeHelper.java',
        'video/VideoRendererEventListener.java',
    ]]