mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-30 13:45:27 +00:00
466 lines
20 KiB
XML
466 lines
20 KiB
XML
#filter substitution
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
package="@ANDROID_PACKAGE_NAME@"
|
|
android:installLocation="auto"
|
|
android:versionCode="@ANDROID_VERSION_CODE@"
|
|
android:versionName="@MOZ_APP_VERSION@"
|
|
#ifdef MOZ_ANDROID_SHARED_ID
|
|
android:sharedUserId="@MOZ_ANDROID_SHARED_ID@"
|
|
#endif
|
|
>
|
|
<uses-sdk android:minSdkVersion="@MOZ_ANDROID_MIN_SDK_VERSION@"
|
|
#ifdef MOZ_ANDROID_MAX_SDK_VERSION
|
|
android:maxSdkVersion="@MOZ_ANDROID_MAX_SDK_VERSION@"
|
|
#endif
|
|
android:targetSdkVersion="23"/>
|
|
|
|
<!-- The bouncer APK and the main APK should define the same set of
|
|
<permission>, <uses-permission>, and <uses-feature> elements. This reduces
|
|
the likelihood of permission-related surprises when installing the main APK
|
|
on top of a pre-installed bouncer APK. Add such shared elements in the
|
|
fileincluded here, so that they can be referenced by both APKs. -->
|
|
#include FennecManifest_permissions.xml.in
|
|
|
|
<application android:label="@string/moz_app_displayname"
|
|
android:icon="@drawable/icon"
|
|
android:logo="@drawable/logo"
|
|
android:name="@MOZ_ANDROID_APPLICATION_CLASS@"
|
|
android:hardwareAccelerated="true"
|
|
android:supportsRtl="true"
|
|
android:allowBackup="false"
|
|
# The preprocessor does not yet support arbitrary parentheses, so this cannot
|
|
# be parenthesized thus to clarify that the logical AND operator has precedence:
|
|
# !defined(MOZILLA_OFFICIAL) || (defined(NIGHTLY_BUILD) && defined(MOZ_DEBUG))
|
|
#if !defined(MOZILLA_OFFICIAL) || defined(NIGHTLY_BUILD) && defined(MOZ_DEBUG)
|
|
android:debuggable="true">
|
|
#else
|
|
android:debuggable="false">
|
|
#endif
|
|
|
|
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true"/>
|
|
|
|
#ifdef MOZ_NATIVE_DEVICES
|
|
<!-- This resources comes from Google Play Services. Required for casting support. -->
|
|
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
|
|
<service android:name="org.mozilla.gecko.RemotePresentationService" android:exported="false"/>
|
|
|
|
#endif
|
|
|
|
<!-- This activity handles all incoming Intents and dispatches them to other activities. -->
|
|
<activity android:name="org.mozilla.gecko.LauncherActivity"
|
|
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
|
android:relinquishTaskIdentity="true"
|
|
android:taskAffinity=""
|
|
android:excludeFromRecents="true" />
|
|
|
|
<!-- Fennec is shipped as the Android package named
|
|
org.mozilla.{fennec,firefox,firefox_beta}. The internal Java
|
|
package hierarchy inside the Android package used to have an
|
|
org.mozilla.{fennec,firefox,firefox_beta} subtree *and* an
|
|
org.mozilla.gecko subtree; it now only has org.mozilla.gecko. -->
|
|
<activity android:name="@MOZ_ANDROID_BROWSER_INTENT_CLASS@"
|
|
android:label="@string/moz_app_displayname"
|
|
android:taskAffinity="@ANDROID_PACKAGE_NAME@.BROWSER"
|
|
android:alwaysRetainTaskState="true"
|
|
android:configChanges="keyboard|keyboardHidden|mcc|mnc|orientation|screenSize|locale|layoutDirection|smallestScreenSize|screenLayout"
|
|
android:windowSoftInputMode="stateUnspecified|adjustResize"
|
|
android:launchMode="singleTask"
|
|
android:exported="true"
|
|
android:theme="@style/Gecko.App" />
|
|
|
|
<!-- Bug 1256615 / Bug 1268455: We published an .App alias and we need to maintain it
|
|
forever. If we don't, home screen shortcuts will disappear because the intent
|
|
filter details change. -->
|
|
<activity-alias android:name=".App"
|
|
android:label="@MOZ_APP_DISPLAYNAME@"
|
|
android:targetActivity="org.mozilla.gecko.LauncherActivity">
|
|
|
|
<!-- android:priority ranges between -1000 and 1000. We never want
|
|
another activity to usurp the MAIN action, so we ratchet our
|
|
priority up. -->
|
|
<intent-filter android:priority="999">
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
<category android:name="android.intent.category.MULTIWINDOW_LAUNCHER"/>
|
|
<category android:name="android.intent.category.APP_BROWSER" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.VIEW" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
<data android:scheme="http" />
|
|
<data android:scheme="https" />
|
|
<data android:scheme="about" />
|
|
<data android:scheme="javascript" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.VIEW" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<data android:scheme="file" />
|
|
<data android:scheme="http" />
|
|
<data android:scheme="https" />
|
|
<data android:mimeType="text/html"/>
|
|
<data android:mimeType="text/plain"/>
|
|
<data android:mimeType="application/xhtml+xml"/>
|
|
</intent-filter>
|
|
|
|
<meta-data android:name="com.sec.minimode.icon.portrait.normal"
|
|
android:resource="@drawable/icon"/>
|
|
|
|
<meta-data android:name="com.sec.minimode.icon.landscape.normal"
|
|
android:resource="@drawable/icon" />
|
|
|
|
<intent-filter>
|
|
<action android:name="org.mozilla.gecko.ACTION_ALERT_CALLBACK" />
|
|
</intent-filter>
|
|
|
|
<intent-filter>
|
|
<action android:name="org.mozilla.gecko.GUEST_SESSION_INPROGRESS" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
|
|
<intent-filter>
|
|
<action android:name="org.mozilla.gecko.UPDATE"/>
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.WEB_SEARCH" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
<data android:scheme="" />
|
|
<data android:scheme="http" />
|
|
<data android:scheme="https" />
|
|
</intent-filter>
|
|
|
|
<!-- For XPI installs from websites and the download manager. -->
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.VIEW" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<data android:scheme="file" />
|
|
<data android:scheme="http" />
|
|
<data android:scheme="https" />
|
|
<data android:mimeType="application/x-xpinstall" />
|
|
</intent-filter>
|
|
|
|
<!-- For XPI installs from file: URLs. -->
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.VIEW" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<data android:host="" />
|
|
<data android:scheme="file" />
|
|
<data android:pathPattern=".*\\.xpi" />
|
|
</intent-filter>
|
|
|
|
#ifdef MOZ_ANDROID_BEAM
|
|
<intent-filter>
|
|
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<data android:scheme="http" />
|
|
<data android:scheme="https" />
|
|
</intent-filter>
|
|
#endif
|
|
|
|
<!-- For debugging -->
|
|
<intent-filter>
|
|
<action android:name="org.mozilla.gecko.DEBUG" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
</activity-alias>
|
|
|
|
<service android:name="org.mozilla.gecko.GeckoService" />
|
|
|
|
<activity android:name="org.mozilla.gecko.trackingprotection.TrackingProtectionPrompt"
|
|
android:launchMode="singleTop"
|
|
android:theme="@style/OverlayActivity" />
|
|
|
|
<activity android:name="org.mozilla.gecko.promotion.SimpleHelperUI"
|
|
android:launchMode="singleTop"
|
|
android:theme="@style/OverlayActivity" />
|
|
|
|
<activity android:name="org.mozilla.gecko.promotion.HomeScreenPrompt"
|
|
android:launchMode="singleTop"
|
|
android:theme="@style/OverlayActivity" />
|
|
|
|
<!-- The main reason for the Tab Queue build flag is to not mess with the VIEW intent filter
|
|
before the rest of the plumbing is in place -->
|
|
|
|
<service android:name="org.mozilla.gecko.tabqueue.TabQueueService" />
|
|
|
|
<activity android:name="org.mozilla.gecko.tabqueue.TabQueuePrompt"
|
|
android:launchMode="singleTop"
|
|
android:theme="@style/OverlayActivity" />
|
|
|
|
<receiver android:name="org.mozilla.gecko.restrictions.RestrictionProvider">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.GET_RESTRICTION_ENTRIES" />
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<!-- Masquerade as the Resolver so that we can be opened from the Marketplace. -->
|
|
<activity-alias
|
|
android:name="com.android.internal.app.ResolverActivity"
|
|
android:targetActivity="@MOZ_ANDROID_BROWSER_INTENT_CLASS@"
|
|
android:exported="true" />
|
|
|
|
<receiver android:name="org.mozilla.gecko.GeckoUpdateReceiver">
|
|
<intent-filter>
|
|
<action android:name="@ANDROID_PACKAGE_NAME@.CHECK_UPDATE_RESULT" />
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<receiver android:name="org.mozilla.gecko.GeckoMessageReceiver"
|
|
android:exported="false">
|
|
</receiver>
|
|
|
|
<!-- Catch install referrer so we can do post-install work. -->
|
|
<receiver android:name="org.mozilla.gecko.distribution.ReferrerReceiver"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="com.android.vending.INSTALL_REFERRER" />
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<service android:name="org.mozilla.gecko.Restarter"
|
|
android:exported="false"
|
|
android:process="@MANGLED_ANDROID_PACKAGE_NAME@.Restarter">
|
|
</service>
|
|
|
|
<service android:name="org.mozilla.gecko.media.MediaControlService"
|
|
android:exported="false">
|
|
</service>
|
|
|
|
<receiver android:name="org.mozilla.gecko.AlarmReceiver" >
|
|
</receiver>
|
|
|
|
<receiver
|
|
android:name="org.mozilla.gecko.notifications.WhatsNewReceiver"
|
|
android:exported="false">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.PACKAGE_REPLACED" />
|
|
<data android:scheme="package" android:path="org.mozilla.gecko" />
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<receiver
|
|
android:name="org.mozilla.gecko.notifications.NotificationReceiver"
|
|
android:exported="false">
|
|
<!-- Notification API V2 -->
|
|
<intent-filter>
|
|
<action android:name="@ANDROID_PACKAGE_NAME@.helperBroadcastAction" />
|
|
<action android:name="@ANDROID_PACKAGE_NAME@.NOTIFICATION_CLICK" />
|
|
<action android:name="@ANDROID_PACKAGE_NAME@.NOTIFICATION_CLOSE" />
|
|
<data android:scheme="moz-notification" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
#include ../services/manifests/FxAccountAndroidManifest_activities.xml.in
|
|
#ifdef MOZ_ANDROID_SEARCH_ACTIVITY
|
|
#include ../search/manifests/SearchAndroidManifest_activities.xml.in
|
|
#endif
|
|
|
|
#if MOZ_CRASHREPORTER
|
|
<activity android:name="org.mozilla.gecko.CrashReporter"
|
|
android:process="@ANDROID_PACKAGE_NAME@.CrashReporter"
|
|
android:label="@string/crash_reporter_title"
|
|
android:icon="@drawable/crash_reporter"
|
|
android:theme="@style/Gecko"
|
|
android:exported="false"
|
|
android:excludeFromRecents="true">
|
|
<intent-filter>
|
|
<action android:name="org.mozilla.gecko.reportCrash" />
|
|
</intent-filter>
|
|
</activity>
|
|
#endif
|
|
|
|
<activity android:name="org.mozilla.gecko.preferences.GeckoPreferences"
|
|
android:theme="@style/Gecko.Preferences"
|
|
android:configChanges="orientation|screenSize|locale|layoutDirection"
|
|
android:excludeFromRecents="true"/>
|
|
|
|
<provider android:name="org.mozilla.gecko.db.BrowserProvider"
|
|
android:authorities="@ANDROID_PACKAGE_NAME@.db.browser"
|
|
android:exported="false"/>
|
|
|
|
<provider android:name="org.mozilla.gecko.distribution.PartnerBookmarksProviderProxy"
|
|
android:authorities="@ANDROID_PACKAGE_NAME@.partnerbookmarks"
|
|
android:exported="false"/>
|
|
|
|
<!-- Share overlay activity
|
|
|
|
Setting launchMode="singleTop" ensures onNewIntent is called when the Activity is
|
|
reused. Ideally we create a new instance but Android L breaks this (bug 1137928). -->
|
|
<activity android:name="org.mozilla.gecko.overlays.ui.ShareDialog"
|
|
android:label="@string/overlay_share_label"
|
|
android:theme="@style/OverlayActivity"
|
|
android:configChanges="keyboard|keyboardHidden|mcc|mnc|locale|layoutDirection"
|
|
android:launchMode="singleTop"
|
|
android:windowSoftInputMode="stateAlwaysHidden|adjustResize">
|
|
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SEND" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<data android:mimeType="text/plain" />
|
|
</intent-filter>
|
|
|
|
</activity>
|
|
|
|
#ifdef MOZ_ANDROID_CUSTOM_TABS
|
|
<activity android:name="org.mozilla.gecko.customtabs.CustomTabsActivity"
|
|
android:theme="@style/Theme.AppCompat.NoActionBar" />
|
|
#endif
|
|
|
|
<!-- Service to handle requests from overlays. -->
|
|
<service android:name="org.mozilla.gecko.overlays.service.OverlayActionService" />
|
|
|
|
<!--
|
|
Ensure that passwords provider runs in its own process. (Bug 718760.)
|
|
Process name is per-application to avoid loading CPs from multiple
|
|
Fennec versions into the same process. (Bug 749727.)
|
|
Process name is a mangled version to avoid a Talos bug. (Bug 750548.)
|
|
-->
|
|
<provider android:name="org.mozilla.gecko.db.PasswordsProvider"
|
|
android:label="@string/sync_configure_engines_title_passwords"
|
|
android:authorities="@ANDROID_PACKAGE_NAME@.db.passwords"
|
|
android:exported="false"
|
|
android:process="@MANGLED_ANDROID_PACKAGE_NAME@.PasswordsProvider"/>
|
|
|
|
<provider android:name="org.mozilla.gecko.db.LoginsProvider"
|
|
android:label="@string/sync_configure_engines_title_passwords"
|
|
android:authorities="@ANDROID_PACKAGE_NAME@.db.logins"
|
|
android:exported="false"/>
|
|
|
|
<provider android:name="org.mozilla.gecko.db.FormHistoryProvider"
|
|
android:label="@string/sync_configure_engines_title_history"
|
|
android:authorities="@ANDROID_PACKAGE_NAME@.db.formhistory"
|
|
android:exported="false"/>
|
|
|
|
<provider android:name="org.mozilla.gecko.GeckoProfilesProvider"
|
|
android:authorities="@ANDROID_PACKAGE_NAME@.profiles"
|
|
android:exported="false"/>
|
|
|
|
<provider android:name="org.mozilla.gecko.db.TabsProvider"
|
|
android:label="@string/sync_configure_engines_title_tabs"
|
|
android:authorities="@ANDROID_PACKAGE_NAME@.db.tabs"
|
|
android:exported="false"/>
|
|
|
|
<provider android:name="org.mozilla.gecko.db.HomeProvider"
|
|
android:authorities="@ANDROID_PACKAGE_NAME@.db.home"
|
|
android:exported="false"/>
|
|
|
|
<provider android:name="org.mozilla.gecko.db.SearchHistoryProvider"
|
|
android:authorities="@ANDROID_PACKAGE_NAME@.db.searchhistory"
|
|
android:exported="false"/>
|
|
|
|
<service
|
|
android:exported="false"
|
|
android:name="org.mozilla.gecko.updater.UpdateService"
|
|
android:process="@MANGLED_ANDROID_PACKAGE_NAME@.UpdateService">
|
|
</service>
|
|
|
|
<service
|
|
android:exported="false"
|
|
android:name="org.mozilla.gecko.notifications.NotificationService">
|
|
</service>
|
|
|
|
<service
|
|
android:exported="false"
|
|
android:name="org.mozilla.gecko.dlc.DownloadContentService">
|
|
</service>
|
|
|
|
<service
|
|
android:exported="false"
|
|
android:name="org.mozilla.gecko.feeds.FeedService">
|
|
</service>
|
|
|
|
<!-- DON'T EXPORT THIS, please! An attacker could delete arbitrary files. -->
|
|
<service
|
|
android:exported="false"
|
|
android:name="org.mozilla.gecko.cleanup.FileCleanupService">
|
|
</service>
|
|
|
|
<receiver
|
|
android:name="org.mozilla.gecko.feeds.FeedAlarmReceiver"
|
|
android:exported="false" />
|
|
|
|
<receiver
|
|
android:name="org.mozilla.gecko.BootReceiver"
|
|
android:exported="false">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<receiver
|
|
android:name="org.mozilla.gecko.PackageReplacedReceiver"
|
|
android:exported="false">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"></action>
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<service
|
|
android:name="org.mozilla.gecko.telemetry.TelemetryUploadService"
|
|
android:exported="false"/>
|
|
|
|
#ifdef MOZ_ANDROID_CUSTOM_TABS
|
|
<service
|
|
android:name="org.mozilla.gecko.customtabs.GeckoCustomTabsService"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="android.support.customtabs.action.CustomTabsService" />
|
|
</intent-filter>
|
|
</service>
|
|
#endif
|
|
|
|
#include ../services/manifests/FxAccountAndroidManifest_services.xml.in
|
|
|
|
<service
|
|
android:name="org.mozilla.gecko.tabqueue.TabReceivedService"
|
|
android:exported="false" />
|
|
|
|
|
|
#ifdef MOZ_ANDROID_SEARCH_ACTIVITY
|
|
#include ../search/manifests/SearchAndroidManifest_services.xml.in
|
|
#endif
|
|
#ifdef MOZ_ANDROID_MLS_STUMBLER
|
|
#include ../stumbler/manifests/StumblerManifest_services.xml.in
|
|
#endif
|
|
|
|
#ifdef MOZ_ANDROID_GCM
|
|
#include GcmAndroidManifest_services.xml.in
|
|
#endif
|
|
|
|
<service
|
|
android:name="org.mozilla.gecko.media.MediaManager"
|
|
android:enabled="true"
|
|
android:exported="false"
|
|
android:process=":media"
|
|
android:isolatedProcess="false">
|
|
</service>
|
|
|
|
<!-- New child services must also be added to the GeckoView AndroidManifest.xml -->
|
|
<service
|
|
android:name="org.mozilla.gecko.process.GeckoServiceChildProcess$geckomediaplugin"
|
|
android:enabled="true"
|
|
android:exported="false"
|
|
android:process=":geckomediaplugin"
|
|
android:isolatedProcess="false">
|
|
</service>
|
|
|
|
<service
|
|
android:name="org.mozilla.gecko.process.GeckoServiceChildProcess$tab"
|
|
android:enabled="true"
|
|
android:exported="false"
|
|
android:process=":tab"
|
|
android:isolatedProcess="false">
|
|
</service>
|
|
|
|
</application>
|
|
</manifest>
|