diff options
Diffstat (limited to 'mobile/android/base/AndroidManifest.xml.in')
-rw-r--r-- | mobile/android/base/AndroidManifest.xml.in | 447 |
1 files changed, 447 insertions, 0 deletions
diff --git a/mobile/android/base/AndroidManifest.xml.in b/mobile/android/base/AndroidManifest.xml.in new file mode 100644 index 000000000..2ec98c35a --- /dev/null +++ b/mobile/android/base/AndroidManifest.xml.in @@ -0,0 +1,447 @@ +#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: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> + + </application> +</manifest> |