| <?xml version="1.0" encoding="utf-8"?> |
| <!-- Copyright 2015 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. --> |
| |
| <!-- |
| Note: This is a jinja2 template, processed at build time into the final manifest. |
| |
| Blocks denoted with { % block some_name % }foo{ % endblock % } can be overridden |
| by a child template that "extends" this file. |
| --> |
| |
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
| xmlns:tools="http://schemas.android.com/tools" |
| package="{{ manifest_package }}" |
| tools:ignore="MissingVersion"> |
| <!-- android:versionCode and android:versionName is set through gyp. See build/common.gypi --> |
| |
| <uses-sdk android:minSdkVersion="{{min_sdk_version}}" android:targetSdkVersion="{{target_sdk_version}}" /> |
| <uses-feature android:glEsVersion="0x00020000" /> |
| |
| <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> |
| <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> |
| <uses-permission-sdk-23 android:name="android.permission.ACCESS_WIFI_STATE" /> |
| <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
| |
| <!-- |
| Enable runtime permissions as uses-permission in tip of tree builds |
| only for ease of development on Android L and earlier. For consumer |
| channels use "runtime permission" uses-permission-sdk-23 which provides |
| permission on Android M and later without a prompt. |
| --> |
| {% if channel in ['default'] %} |
| <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> |
| {% endif %} |
| <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH"/> |
| <uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN"/> |
| <uses-permission-sdk-23 android:name="android.permission.READ_CONTACTS"/> |
| <uses-permission-sdk-23 android:name="android.permission.REORDER_TASKS"/> |
| <uses-permission-sdk-23 android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> |
| |
| <uses-permission android:name="android.permission.CAMERA" /> |
| <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> |
| {% if target_sdk_version|int > 27 or target_sdk_version == "Q" %} |
| <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> |
| {% endif %} |
| <uses-permission android:name="android.permission.GET_ACCOUNTS"/> |
| <uses-permission android:name="android.permission.INTERNET"/> |
| <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/> |
| <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> |
| {% if target_sdk_version|int > 28 or target_sdk_version == "Q" %} |
| <uses-permission-sdk-23 android:name="android.permission.READ_MEDIA_IMAGES"/> |
| {% endif %} |
| <uses-permission android:name="android.permission.NFC"/> |
| <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> |
| <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/> |
| <uses-permission android:name="android.permission.READ_SYNC_STATS"/> |
| <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> |
| <uses-permission android:name="android.permission.RECORD_AUDIO"/> |
| <uses-permission android:name="android.permission.USE_CREDENTIALS"/> |
| <uses-permission-sdk-23 android:name="android.permission.USE_FINGERPRINT"/> |
| <uses-permission android:name="android.permission.VIBRATE"/> |
| <uses-permission android:name="android.permission.WAKE_LOCK"/> |
| <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> |
| <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/> |
| {% set enable_vr = enable_vr|default(0) %} |
| {% if enable_vr == "true" %} |
| <!-- Indicates use of Android's VR-mode, available only on Android N+. --> |
| <uses-feature android:name="android.software.vr.mode" android:required="false"/> |
| <!-- Indicates use of VR features that are available only on Daydream-ready devices. --> |
| <uses-feature android:name="android.hardware.vr.high_performance" android:required="false"/> |
| <!-- |
| Indicates that we don't need Chrome to be available on devices that only support landscape |
| orientation. This is needed because we have VR specific activities that declare the |
| android:orientation attribute. |
| --> |
| <uses-feature android:name="android.hardware.screen.landscape" android:required="false"/> |
| <!-- Indicates that head tracking should be done in 6DoF, if available --> |
| <uses-feature android:name="android.hardware.vr.headtracking" android:version="1" android:required="false"/> |
| {% endif %} |
| |
| <permission android:name="{{ manifest_package }}.permission.CHILD_SERVICE" android:protectionLevel="signature" /> |
| <permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem" /> |
| <permission android:name="{{ manifest_package }}.TOS_ACKED" android:protectionLevel="signatureOrSystem" /> |
| <!-- Only chrome can receive the messages and registration result --> |
| <permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE" |
| android:protectionLevel="signature" /> |
| <permission android:name="{{ manifest_package }}.permission.DEBUG" |
| android:label="Debug web pages" |
| android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS" |
| android:protectionLevel="signature" /> |
| |
| <uses-permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE" /> |
| <uses-permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" /> |
| <uses-permission android:name="{{ manifest_package }}.TOS_ACKED" /> |
| |
| <uses-permission android:name="com.chrome.permission.DEVICE_EXTRAS" /> |
| <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/> |
| <uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/> |
| <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> |
| <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> |
| |
| <uses-permission android:name="com.google.android.apps.now.CURRENT_ACCOUNT_ACCESS" /> |
| |
| {% block extra_uses_permissions %} |
| {% endblock %} |
| |
| <!-- We may use GPS but it's not required --> |
| <uses-feature android:name="android.hardware.location.gps" android:required="false" /> |
| <uses-feature android:name="android.hardware.camera" android:required="false" /> |
| |
| <!-- |
| android.permission.RECORD_AUDIO makes this implied, however we don't |
| require a microphone. |
| --> |
| <uses-feature android:name="android.hardware.microphone" android:required="false" /> |
| <!-- |
| The app is usable with keyboard/mouse. This feature is implicitly true for |
| all applications and needs to be disabled manually. |
| --> |
| <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> |
| |
| {% block extra_keyset_definitions %} |
| {% endblock %} |
| |
| <!-- Set android:largeHeap to "true" to allow more than the default |
| Java heap limit (32Mb on Nexus S, 48Mb on Xoom). --> |
| <application android:name="{% block application_name %}org.chromium.chrome.browser.ChromeApplication{% endblock %}" |
| android:icon="@drawable/ic_launcher" |
| android:roundIcon="@drawable/ic_launcher_round" |
| android:label="{% block application_label %}@string/app_name{% endblock %}" |
| android:largeHeap="false" |
| android:manageSpaceActivity="@string/manage_space_activity" |
| android:supportsRtl="true" |
| {% if (use_zygote|default(false) == 'true') %} |
| android:zygotePreloadName="org.chromium.content.app.ZygotePreload" |
| {% endif %} |
| {% if backup_key is defined %} |
| android:allowBackup="true" |
| android:backupAgent="org.chromium.chrome.browser.ChromeBackupAgent" |
| android:fullBackupOnly="false" |
| android:restoreAnyVersion="true" |
| {% else %} |
| android:allowBackup="false" |
| {% endif %} |
| android:networkSecurityConfig="@xml/network_security_config" |
| {% block extra_application_attributes %}{% endblock %}> |
| |
| <meta-data android:name="android.allow_multiple_resumed_activities" android:value="true" /> |
| |
| <!-- Samsung MultiWindow Support --> |
| <meta-data android:name="com.samsung.android.sdk.multiwindow.enable" |
| android:value="true" /> |
| |
| {% if min_sdk_version|int < 24 %} |
| <meta-data android:name="com.samsung.android.sdk.multiwindow.multiinstance.enable" |
| android:value="true" /> |
| <meta-data android:name="com.samsung.android.sdk.multiwindow.multiinstance.launchmode" |
| android:value="singleTask" /> |
| {% endif %} |
| |
| <meta-data android:name="com.samsung.android.sdk.multiwindow.penwindow.enable" |
| android:value="true"/> |
| |
| {% if backup_key is defined %} |
| <!-- Backup keys are channel dependent --> |
| <meta-data android:name="com.google.android.backup.api_key" |
| android:value="{{ backup_key }}" /> |
| {% endif %} |
| |
| {% if channel in ['dev', 'canary', 'default'] %} |
| <meta-data android:name="com.sec.android.support.multiwindow" android:value="true" /> |
| {% endif %} |
| <meta-data android:name="android.content.APP_RESTRICTIONS" |
| android:resource="@xml/app_restrictions"/> |
| |
| {% if include_arcore_manifest_flag == 'true' %} |
| <!-- ARCore APK integration --> |
| <!-- This tag indicates that this application optionally uses ARCore. --> |
| <meta-data android:name="com.google.ar.core" android:value="optional" /> |
| <!-- This value must match value present in ARCore SDK's .aar --> |
| <!-- TODO(https://crbug.com/917406): modify build scripts to |
| automatically pull this value in - the problem exists because in |
| bundle mode, the ARCore SDK is packaged into AR module and |
| the module installation will not automatically bring in DFM's |
| manifest entries. --> |
| <meta-data android:name="com.google.ar.core.min_apk_version" |
| android:value="190310000"/> |
| <activity |
| android:name="com.google.ar.core.InstallActivity" |
| android:configChanges="keyboardHidden|orientation|screenSize" |
| android:excludeFromRecents="true" |
| android:exported="false" |
| android:launchMode="singleTop" |
| android:theme="@android:style/Theme.Material.Light.Dialog.Alert" /> |
| {% endif %} |
| |
| <!-- Cast support --> |
| <meta-data |
| android:name= |
| "com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME" |
| android:value="org.chromium.chrome.browser.media.router.caf.CastOptionsProvider"/> |
| |
| <!-- Note: All activities directly or indirectly derived from ChromeActivity |
| must specify android:hardwareAccelerated="false". |
| |
| Since this activity (shown in the launcher) and the application |
| (shown in Android's Settings/Apps list) share the same label, we |
| do not specify one here to allow it to inherit from the app. --> |
| <activity android:name="org.chromium.chrome.browser.document.ChromeLauncherActivity" |
| android:theme="@style/LauncherTheme" |
| android:relinquishTaskIdentity="true" |
| android:taskAffinity="" |
| android:excludeFromRecents="true" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density"> |
| <!-- TODO(mthiesse, b/72214458): This is a duplication of the icon metadata below. |
| Daydream will actually ignore the metadata here, and use the metadata on the |
| activity-alias. However, play store apk validation fails to find the icons on the |
| alias, so we need to include them here to pass validation. --> |
| {% if enable_vr == "true" %} |
| <meta-data android:name="com.google.android.vr.icon" |
| android:resource="@drawable/daydream_icon_foreground" /> |
| <meta-data android:name="com.google.android.vr.icon_background" |
| android:resource="@drawable/daydream_icon_background" /> |
| {% endif %} |
| {{ self.supports_vr() }} |
| </activity> |
| <activity-alias android:name="com.google.android.apps.chrome.IntentDispatcher" |
| android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.intent.action.MAIN" /> |
| <category android:name="android.intent.category.NOTIFICATION_PREFERENCES" /> |
| {% if enable_vr == "true" %} |
| <category android:name="com.google.intent.category.DAYDREAM" /> |
| {% endif %} |
| </intent-filter> |
| <!-- Matches the common case of intents with no MIME type. |
| Make sure to keep in sync with the next filter. --> |
| <intent-filter> |
| {% block common_view_intent_shared_filter_body %} |
| <action android:name="android.intent.action.VIEW" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <category android:name="android.intent.category.BROWSABLE" /> |
| {% if enable_vr == "true" %} |
| <category android:name="com.google.intent.category.DAYDREAM" /> |
| {% endif %} |
| {% if channel in ['stable', 'default'] %}<data android:scheme="googlechrome" />{% endif %} |
| <data android:scheme="http" /> |
| <data android:scheme="https" /> |
| <data android:scheme="about" /> |
| <data android:scheme="javascript" /> |
| {% endblock %} |
| </intent-filter> |
| <!-- Same filter as above but with MIME types. Intents that |
| do not specify a MIME type won't match. --> |
| <intent-filter> |
| {{ self.common_view_intent_shared_filter_body() }} |
| <data android:scheme="content" /> |
| <data android:mimeType="text/html"/> |
| <data android:mimeType="text/plain"/> |
| <data android:mimeType="application/xhtml+xml"/> |
| </intent-filter> |
| <!-- MHTML support, used for snapshots --> |
| <intent-filter> |
| <action android:name="android.intent.action.VIEW" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <data android:scheme="file"/> |
| <data android:scheme="content"/> |
| <data android:mimeType="multipart/related"/> |
| </intent-filter> |
| <intent-filter> |
| <action android:name="android.intent.action.VIEW" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <data android:scheme="file"/> |
| <data android:scheme="content"/> |
| <data android:mimeType="message/rfc822"/> |
| </intent-filter> |
| <intent-filter> |
| {% block mhtml_view_intent_shared_filter_body %} |
| <action android:name="android.intent.action.VIEW" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <category android:name="android.intent.category.BROWSABLE" /> |
| {% if enable_vr == "true" %} |
| <category android:name="com.google.intent.category.DAYDREAM" /> |
| {% endif %} |
| <data android:scheme="file"/> |
| <data android:scheme="content"/> |
| <data android:host="*" /> |
| <data android:pathPattern="/.*\\.mhtml"/> |
| <data android:pathPattern="/.*\\.mht"/> |
| {% endblock %} |
| </intent-filter> |
| <!-- Same filter as above but with mimeType="*/*". Used for |
| handling intent send by ShareIt. --> |
| <intent-filter> |
| {{ self.mhtml_view_intent_shared_filter_body() }} |
| <data android:mimeType="*/*"/> |
| </intent-filter> |
| <intent-filter> |
| <action android:name="android.intent.action.MEDIA_SEARCH" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| </intent-filter> |
| <intent-filter> |
| <action android:name="android.speech.action.VOICE_SEARCH_RESULTS" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| </intent-filter> |
| <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> |
| <intent-filter> |
| <action android:name="android.intent.action.SEARCH" /> |
| </intent-filter> |
| <intent-filter> |
| <action android:name="com.sec.android.airview.HOVER" /> |
| </intent-filter> |
| <meta-data android:name="android.app.searchable" |
| android:resource="@xml/searchable" /> |
| {% if enable_vr == "true" %} |
| <meta-data android:name="com.google.android.vr.icon" |
| android:resource="@drawable/daydream_icon_foreground" /> |
| <meta-data android:name="com.google.android.vr.icon_background" |
| android:resource="@drawable/daydream_icon_background" /> |
| {% endif %} |
| </activity-alias> |
| |
| <activity android:name="org.chromium.chrome.browser.media.MediaLauncherActivity" |
| android:theme="@android:style/Theme.NoDisplay" |
| android:excludeFromRecents="true" |
| android:exported="true" |
| android:enabled="false"><!-- This will be selectively enabled at runtime. --> |
| <intent-filter tools:ignore="AppLinkUrlError"> |
| <action android:name="android.intent.action.VIEW" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <!-- TODO(https://crbug.com/800875): Limit these to supported MIME types. --> |
| <data android:mimeType="audio/*" /> |
| <data android:mimeType="image/*" /> |
| <data android:mimeType="video/*" /> |
| <data android:scheme="file" /> |
| <data android:scheme="content" /> |
| </intent-filter> |
| </activity> |
| |
| {% if notouch_build == "true" %} |
| <activity-alias android:name="org.chromium.chrome.browser.touchless.DinoActivity" |
| android:targetActivity="org.chromium.chrome.browser.touchless.NoTouchActivity" |
| android:icon="@mipmap/dino" |
| ## Proposed brand name, not to be localized. |
| android:label="Dino Run" |
| android:exported="true"> |
| <intent-filter android:priority="-1"> |
| <action android:name="android.intent.action.MAIN" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <category android:name="android.intent.category.LAUNCHER" /> |
| </intent-filter> |
| </activity-alias> |
| {% endif %} |
| <activity android:name="org.chromium.chrome.browser.LauncherShortcutActivity" |
| android:theme="@android:style/Theme.NoDisplay" |
| android:taskAffinity="" |
| android:excludeFromRecents="true" |
| android:exported="false" /> |
| |
| <activity android:name="org.chromium.chrome.browser.incognito.IncognitoTabLauncher" |
| android:theme="@android:style/Theme.NoDisplay" |
| android:taskAffinity="" |
| android:enabled="false" |
| android:excludeFromRecents="true" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="org.chromium.chrome.browser.incognito.OPEN_PRIVATE_TAB" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| </intent-filter> |
| </activity> |
| |
| <!-- Upgrade related --> |
| <activity android:name="org.chromium.chrome.browser.upgrade.UpgradeActivity" |
| android:excludeFromRecents="true" |
| android:theme="@style/Theme.Chromium.Activity" |
| android:windowSoftInputMode="adjustResize" |
| android:taskAffinity="" |
| android:launchMode="singleInstance" |
| android:persistableMode="persistNever" |
| android:autoRemoveFromRecents="false" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" |
| android:hardwareAccelerated="false"> |
| </activity> |
| <service android:name="org.chromium.chrome.browser.upgrade.UpgradeIntentService" |
| android:exported="false"/> |
| <receiver android:name="org.chromium.chrome.browser.upgrade.PackageReplacedBroadcastReceiver" |
| android:exported="false"> |
| <intent-filter> |
| <action android:name="android.intent.action.MY_PACKAGE_REPLACED" /> |
| </intent-filter> |
| </receiver> |
| |
| <!-- Locale related --> |
| <receiver android:name="org.chromium.chrome.browser.locale.LocaleChangedBroadcastReceiver" |
| android:exported="false"> |
| <intent-filter> |
| <action android:name="android.intent.action.LOCALE_CHANGED" /> |
| </intent-filter> |
| </receiver> |
| |
| <!-- Document mode Activities. --> |
| <activity android:name="org.chromium.chrome.browser.document.DocumentActivity" |
| android:exported="false" |
| android:theme="@style/Theme.Chromium.Activity" |
| android:taskAffinity="" |
| android:persistableMode="persistAcrossReboots" |
| android:autoRemoveFromRecents="false" |
| {{ self.chrome_activity_common() }}> |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| <activity-alias android:name="com.google.android.apps.chrome.document.DocumentActivity" |
| android:targetActivity="org.chromium.chrome.browser.document.DocumentActivity" |
| android:exported="false"/> |
| <activity android:name="org.chromium.chrome.browser.document.IncognitoDocumentActivity" |
| android:icon="@mipmap/incognito_app_icon" |
| android:exported="false" |
| android:theme="@style/Theme.Chromium.Incognito" |
| android:taskAffinity="" |
| android:persistableMode="persistNever" |
| android:autoRemoveFromRecents="false" |
| {{ self.chrome_activity_common() }}> |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| <activity-alias android:name="com.google.android.apps.chrome.document.IncognitoDocumentActivity" |
| android:targetActivity="org.chromium.chrome.browser.document.IncognitoDocumentActivity" |
| android:exported="false"/> |
| |
| <!-- Custom Tabs --> |
| <activity android:name="org.chromium.chrome.browser.customtabs.CustomTabActivity" |
| android:theme="@style/Theme.Chromium.Activity" |
| android:exported="false" |
| {{ self.chrome_activity_common() }} |
| {{ self.supports_video_persistence() }} |
| > |
| {{ self.supports_vr() }} |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.customtabs.TranslucentCustomTabActivity" |
| android:theme="@style/Theme.Chromium.Activity.FakeTranslucent" |
| android:exported="false" |
| {{ self.chrome_activity_common() }} |
| {{ self.supports_video_persistence() }} |
| > |
| {{ self.supports_vr() }} |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.customtabs.PaymentHandlerActivity" |
| android:theme="@style/Theme.Chromium.Activity.Translucent" |
| android:exported="false" |
| {{ self.chrome_activity_common() }} |
| {{ self.supports_video_persistence() }} |
| > |
| {{ self.supports_vr() }} |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| <!-- SeparateTaskCustomTabActivity is a wrapper of CustomTabActivity. It provides the |
| general feeling of supporting multi tasks, even for versions that did not fully support |
| it. |
| TODO(arthursonzogni, tedchoc): Enabled this only on Android < 21 after M74. |
| --> |
| <activity android:name="org.chromium.chrome.browser.customtabs.SeparateTaskCustomTabActivity" |
| android:theme="@style/Theme.Chromium.Activity" |
| android:exported="false" |
| android:taskAffinity="" |
| android:persistableMode="persistNever" |
| android:autoRemoveFromRecents="false" |
| {{ self.chrome_activity_common() }} |
| {{ self.supports_video_persistence() }} |
| > |
| {{ self.supports_vr() }} |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| {% if min_sdk_version|int < 21 %} |
| {% for i in range(10) %} |
| <activity android:name="org.chromium.chrome.browser.customtabs.SeparateTaskCustomTabActivity{{ i }}" |
| android:theme="@style/Theme.Chromium.Activity" |
| android:icon="@mipmap/app_single_page_icon" |
| android:exported="false" |
| android:launchMode="singleTask" |
| android:persistableMode="persistNever" |
| android:taskAffinity="" |
| {{ self.chrome_activity_common() }} |
| {{ self.supports_video_persistence() }} |
| > |
| {{ self.supports_vr() }} |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| {% endfor %} |
| {% endif %} |
| |
| <activity android:name="org.chromium.chrome.browser.incognito.IncognitoDisclosureActivity" |
| android:theme="@style/Theme.Chromium.Activity.Fullscreen.Transparent" |
| android:exported="false"> |
| </activity> |
| |
| <!-- ChromeTabbedActivity related --> |
| <activity android:name="org.chromium.chrome.browser.ChromeTabbedActivity" |
| android:theme="@style/Theme.Chromium.TabbedMode" |
| {% set notouch_build = notouch_build|default(0) %} |
| {% if notouch_build == "true" %} |
| android:exported="false" |
| {% else %} |
| android:exported="true" |
| {% endif %} |
| android:launchMode="singleTask" |
| {# We can only use blocks once in Jinja, for future substitutions we use |
| self.supports_video_persistence(). #} |
| {% block supports_video_persistence %} |
| android:supportsPictureInPicture="true" |
| android:resizeableActivity="true" |
| {% endblock %} |
| {% block chrome_activity_common %} |
| android:windowSoftInputMode="adjustResize" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode|density" |
| android:hardwareAccelerated="false" |
| {% endblock %} |
| > |
| <!-- |
| Daydream api categorizes an activity to three categories: Cardboard only, hybrid |
| or Daydream. It does so by testing if intents can be resolved by the activity |
| that requests it. |
| --> |
| {% block supports_vr %} |
| <intent-filter> |
| <action android:name="org.chromium.chrome.browser.dummy.action" /> |
| <category android:name="com.google.intent.category.DAYDREAM" /> |
| <category android:name="com.google.intent.category.CARDBOARD" /> |
| </intent-filter> |
| {% endblock %} |
| |
| {% block extra_web_rendering_activity_definitions %} |
| {% endblock %} |
| </activity> |
| <!-- TODO(crbug.com/780674): retarget .Main back to CTA for non-modern APK --> |
| <activity-alias android:name="com.google.android.apps.chrome.Main" |
| {% if notouch_build == "true" %} |
| android:targetActivity="org.chromium.chrome.browser.touchless.NoTouchActivity" |
| {% elif min_sdk_version|int < 21 %} |
| android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity" |
| {% else %} |
| android:targetActivity="org.chromium.chrome.browser.ChromeTabbedActivity" |
| {% endif %} |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.intent.action.MAIN" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <category android:name="android.intent.category.LAUNCHER" /> |
| <category android:name="android.intent.category.BROWSABLE" /> |
| <category android:name="android.intent.category.APP_BROWSER" /> |
| {% if channel in ['dev', 'canary', 'default'] %} |
| <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" /> |
| {% endif %} |
| </intent-filter> |
| <meta-data android:name="android.app.shortcuts" |
| android:resource="@xml/launchershortcuts" /> |
| {{ self.supports_vr() }} |
| {% if min_sdk_version|int >= 21 %} |
| {{ self.extra_web_rendering_activity_definitions() }} |
| {% endif %} |
| </activity-alias> |
| <activity android:name="org.chromium.chrome.browser.ChromeTabbedActivity2" |
| android:theme="@style/Theme.Chromium.TabbedMode" |
| android:exported="false" |
| android:taskAffinity="{{ manifest_package }}.ChromeTabbedActivity2" |
| android:launchMode="singleTask" |
| {{ self.chrome_activity_common() }} |
| {{ self.supports_video_persistence() }} |
| > |
| {{ self.supports_vr() }} |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.multiwindow.MultiInstanceChromeTabbedActivity" |
| android:theme="@style/Theme.Chromium.TabbedMode" |
| android:exported="false" |
| {{ self.chrome_activity_common() }}> |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| {% if notouch_build == "true" %} |
| <activity android:name="org.chromium.chrome.browser.touchless.NoTouchActivity" |
| android:theme="@style/Theme.Chromium.Activity" |
| android:exported="false" |
| android:launchMode="singleTask" |
| {{ self.chrome_activity_common() }} |
| {{ self.supports_video_persistence() }} > |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| {% endif %} |
| |
| <activity android:name="org.chromium.chrome.browser.sync.ui.PassphraseActivity" |
| android:theme="@style/Theme.Chromium.Activity" |
| android:autoRemoveFromRecents="true"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.firstrun.LightweightFirstRunActivity" |
| android:theme="@style/Theme.Chromium.AlertDialog.NoActionBar" |
| {{ self.first_run_activity_common() }}> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.firstrun.FirstRunActivity" |
| android:theme="@style/Theme.Chromium.DialogWhenLarge" |
| {% block first_run_activity_common %} |
| android:label="@string/fre_activity_label" |
| android:launchMode="singleInstance" |
| android:excludeFromRecents="true" |
| android:autoRemoveFromRecents="true" |
| android:windowSoftInputMode="stateHidden|adjustPan" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" |
| {% endblock %}> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.firstrun.TabbedModeFirstRunActivity" |
| android:theme="@style/Theme.Chromium.TabbedMode" |
| {{ self.first_run_activity_common() }}> |
| </activity> |
| {% if enable_vr == "true" %} |
| <activity android:name="org.chromium.chrome.browser.vr.VrFirstRunActivity" |
| android:exported="false" |
| android:launchMode="singleInstance" |
| android:theme="@style/VrActivityTheme" |
| android:excludeFromRecents="true" |
| android:enableVrMode="@string/gvr_vr_mode_component" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize|uiMode"> |
| {{ self.supports_vr() }} |
| </activity> |
| {% endif %} |
| <activity android:name="org.chromium.chrome.browser.signin.AccountSigninActivity" |
| android:theme="@style/Theme.Chromium.DialogWhenLarge" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.signin.SigninActivity" |
| android:theme="@style/Theme.Chromium.DialogWhenLarge" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" |
| android:exported="false"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.preferences.Preferences" |
| android:theme="@style/Theme.Chromium.Preferences" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" |
| android:label="@string/preferences" |
| android:exported="false"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.preferences.website.ManageSpaceActivity" |
| android:theme="@style/Theme.Chromium.Preferences.ManageSpace" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" |
| android:label="@string/storage_management_activity_label" |
| android:exported="false"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.bookmarks.BookmarkActivity" |
| android:theme="@style/Theme.Chromium.Activity.Fullscreen" |
| android:exported="false" |
| android:windowSoftInputMode="stateAlwaysHidden|adjustResize" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.bookmarks.BookmarkAddActivity" |
| android:theme="@style/Theme.Chromium.DialogWhenLarge" |
| android:windowSoftInputMode="stateHidden" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> |
| <intent-filter> |
| <action android:name="{{ manifest_package }}.ADDBOOKMARK" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| </intent-filter> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.bookmarks.BookmarkEditActivity" |
| android:theme="@style/Theme.Chromium.DialogWhenLarge" |
| android:windowSoftInputMode="stateHidden" |
| android:exported="false" |
| android:label="@string/edit_bookmark" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.bookmarks.BookmarkAddEditFolderActivity" |
| android:theme="@style/Theme.Chromium.DialogWhenLarge" |
| android:exported="false" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.bookmarks.BookmarkFolderSelectActivity" |
| android:theme="@style/Theme.Chromium.DialogWhenLarge" |
| android:windowSoftInputMode="stateAlwaysHidden" |
| android:label="@string/bookmark_choose_folder" |
| android:exported="false" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> |
| </activity> |
| |
| <!-- Activities for downloads. --> |
| <activity android:name="org.chromium.chrome.browser.download.DownloadActivity" |
| android:theme="@style/Theme.Chromium.Activity.Fullscreen" |
| android:windowSoftInputMode="stateAlwaysHidden|adjustResize" |
| android:exported="false" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> |
| </activity> |
| |
| <!-- Activities for history. --> |
| <activity android:name="org.chromium.chrome.browser.history.HistoryActivity" |
| android:theme="@style/Theme.Chromium.Activity.Fullscreen" |
| android:windowSoftInputMode="stateAlwaysHidden|adjustResize" |
| android:exported="false" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> |
| </activity> |
| |
| <!-- |
| Activities for webapps. |
| TODO(dfalcantara): Remove the aliases for the WebappActivities once we're pretty sure |
| that users don't have any instances of the original Activity still |
| running. |
| --> |
| <activity android:name="org.chromium.chrome.browser.webapps.WebappLauncherActivity" |
| android:theme="@android:style/Theme.NoDisplay" |
| android:taskAffinity="" |
| android:excludeFromRecents="true"> |
| <intent-filter> |
| <action android:name="com.google.android.apps.chrome.webapps.WebappManager.ACTION_START_WEBAPP" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| </intent-filter> |
| <intent-filter> |
| <action android:name="org.webapk.ACTION_START_WEBAPK" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| </intent-filter> |
| </activity> |
| <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappManager" |
| android:targetActivity="org.chromium.chrome.browser.webapps.WebappLauncherActivity"> |
| </activity-alias> |
| <activity android:name="org.chromium.chrome.browser.webapps.WebappActivity" |
| android:theme="@style/Theme.Chromium.Webapp" |
| android:label="@string/webapp_activity_title" |
| android:launchMode="singleTop" |
| android:documentLaunchMode="intoExisting" |
| android:exported="false" |
| android:persistableMode="persistNever" |
| {{ self.supports_video_persistence() }} |
| {{ self.chrome_activity_common() }} |
| > |
| {{ self.supports_vr() }} |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappActivity" |
| android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity" |
| android:label="@string/webapp_activity_title" |
| {{ self.supports_video_persistence() }} > |
| </activity-alias> |
| {% for i in range(10) %} |
| <activity android:name="org.chromium.chrome.browser.webapps.WebappActivity{{ i }}" |
| android:theme="@style/Theme.Chromium.Webapp" |
| android:icon="@mipmap/app_shortcut_icon" |
| android:label="@string/webapp_activity_title" |
| android:launchMode="singleTask" |
| android:exported="false" |
| android:persistableMode="persistNever" |
| android:taskAffinity="{{ manifest_package }}.webapps.WebappActivity{{ i }}" |
| {{ self.supports_video_persistence() }} |
| {{ self.chrome_activity_common() }} |
| > |
| {{ self.supports_vr() }} |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappActivity{{ i }}" |
| android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity{{ i }}" |
| android:icon="@mipmap/app_shortcut_icon" |
| android:label="@string/webapp_activity_title"> |
| </activity-alias> |
| {% endfor %} |
| <!-- Activities for WebAPKs. --> |
| <activity android:name="org.chromium.chrome.browser.webapps.SameTaskWebApkActivity" |
| android:theme="@style/Theme.Chromium.Webapp" |
| android:label="@string/webapp_activity_title" |
| android:exported="false" |
| android:persistableMode="persistNever" |
| {{ self.supports_video_persistence() }} |
| {{ self.chrome_activity_common() }} |
| > |
| {{ self.supports_vr() }} |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.webapps.WebApkActivity" |
| android:theme="@style/Theme.Chromium.Webapp" |
| android:label="@string/webapp_activity_title" |
| android:launchMode="singleTop" |
| android:documentLaunchMode="intoExisting" |
| android:exported="false" |
| android:persistableMode="persistNever" |
| {{ self.supports_video_persistence() }} |
| {{ self.chrome_activity_common() }} |
| > |
| {{ self.supports_vr() }} |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| {% for i in range(10) %} |
| <activity android:name="org.chromium.chrome.browser.webapps.WebApkActivity{{ i }}" |
| android:theme="@style/Theme.Chromium.Webapp" |
| android:icon="@mipmap/app_shortcut_icon" |
| android:label="@string/webapp_activity_title" |
| android:launchMode="singleTask" |
| android:exported="false" |
| android:persistableMode="persistNever" |
| android:taskAffinity="{{ manifest_package }}.webapps.WebApkActivity{{ i }}" |
| {{ self.supports_video_persistence() }} |
| {{ self.chrome_activity_common() }} |
| > |
| {{ self.supports_vr() }} |
| {{ self.extra_web_rendering_activity_definitions() }} |
| </activity> |
| {% endfor %} |
| |
| <activity android:name="org.chromium.chrome.browser.webapps.ActivateWebApkActivity" |
| android:theme="@android:style/Theme.NoDisplay" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="org.chromium.chrome.browser.webapps.ActivateWebApkActivity.ACTIVATE" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| </intent-filter> |
| </activity> |
| |
| <activity android:name="org.chromium.chrome.browser.media.router.caf.remoting.CafExpandedControllerActivity" |
| android:theme="@style/Theme.Chromium.Activity" |
| android:label="Chrome.CafExpandedControllerActivity" |
| android:hardwareAccelerated="true" |
| android:launchMode="singleTask" |
| android:noHistory="true" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" |
| android:excludeFromRecents="true"> |
| </activity> |
| |
| <!-- This activity is used to restart the main Chrome process. Should never be exported. --> |
| <activity android:name="org.chromium.chrome.browser.BrowserRestartActivity" |
| android:launchMode="singleInstance" |
| android:exported="false" |
| android:theme="@android:style/Theme.Translucent.NoTitleBar" |
| android:excludeFromRecents="true" |
| android:process=":browser_restart_process"> |
| </activity> |
| |
| <!-- This activity is to expose the print option via the generic Android share action. --> |
| <activity |
| android:name="org.chromium.chrome.browser.printing.PrintShareActivity" |
| android:icon="@drawable/print" |
| android:label="@string/print_share_activity_title" |
| android:enabled="false" |
| android:excludeFromRecents="true" |
| android:exported="true" |
| android:noHistory="true" |
| android:theme="@android:style/Theme.NoDisplay" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" > |
| <intent-filter> |
| <action android:name="android.intent.action.SEND" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <data android:mimeType="text/plain" /> |
| </intent-filter> |
| </activity> |
| |
| <activity |
| android:name="org.chromium.chrome.browser.send_tab_to_self.SendTabToSelfShareActivity" |
| android:icon="@drawable/ic_launcher" |
| android:label="@string/send_tab_to_self_share_activity_title" |
| android:enabled="false" |
| android:excludeFromRecents="true" |
| android:exported="true" |
| android:noHistory="true" |
| android:theme="@android:style/Theme.NoDisplay" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" > |
| <intent-filter> |
| <action android:name="android.intent.action.SEND" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <data android:mimeType="text/plain" /> |
| </intent-filter> |
| </activity> |
| |
| <!-- Activity for dispatching intents to Instant Apps. --> |
| <activity |
| android:name="org.chromium.chrome.browser.instantapps.AuthenticatedProxyActivity" |
| android:exported="false" |
| android:theme="@android:style/Theme.NoDisplay" |
| android:noHistory="true" |
| android:excludeFromRecents="true"> |
| </activity> |
| |
| <activity |
| android:name="org.chromium.chrome.browser.vr.VrCancelAnimationActivity" |
| android:exported="false" |
| android:theme="@android:style/Theme.NoDisplay" |
| android:noHistory="true" |
| android:excludeFromRecents="true" |
| {% if enable_vr == "true" %} |
| android:enableVrMode="@string/gvr_vr_mode_component" |
| {% endif %} |
| > |
| {{ self.supports_vr() }} |
| </activity> |
| |
| <!-- Activities for Browser Actions --> |
| <activity android:name="org.chromium.chrome.browser.browseractions.BrowserActionActivity" |
| android:theme="@style/Theme.Chromium.Activity.Fullscreen.Transparent" |
| android:exported="true" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize"> |
| <intent-filter> |
| <action android:name="androidx.browser.browseractions.browser_action_open" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <data android:scheme="http" /> |
| <data android:scheme="https" /> |
| </intent-filter> |
| </activity> |
| |
| <service android:name="org.chromium.chrome.browser.browseractions.BrowserActionsService" |
| android:exported="false"> |
| </service> |
| |
| <!-- Components for Trusted Web Activities --> |
| <receiver android:name="org.chromium.chrome.browser.browserservices.ClientAppBroadcastReceiver" |
| android:exported="true"> |
| <intent-filter> |
| <data android:scheme="package" /> |
| <action android:name="android.intent.action.PACKAGE_FULLY_REMOVED" /> |
| <action android:name="android.intent.action.PACKAGE_DATA_CLEARED" /> |
| </intent-filter> |
| {% if channel in ['default'] %} |
| <intent-filter> |
| <action android:name="org.chromium.chrome.browser.browserservices.ClientAppBroadcastReceiver.DEBUG" /> |
| </intent-filter> |
| {% endif %} |
| </receiver> |
| |
| <activity android:name="org.chromium.chrome.browser.browserservices.ClearDataDialogActivity" |
| android:theme="@style/Theme.Chromium.ClearDataDialogActivity" |
| android:exported="false"/> |
| |
| <activity |
| android:name="org.chromium.chrome.browser.browserservices.ManageTrustedWebActivityDataActivity" |
| android:theme="@style/Theme.Chromium.Activity.Fullscreen.Transparent" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="android.support.customtabs.action.ACTION_MANAGE_TRUSTED_WEB_ACTIVITY_DATA" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <data android:scheme="https"/> |
| </intent-filter> |
| </activity> |
| |
| <!-- Service for decoding images in a sandboxed process. --> |
| <service |
| android:description="@string/decoder_description" |
| android:name="org.chromium.chrome.browser.photo_picker.DecoderService" |
| android:exported="false" |
| android:isolatedProcess="true" |
| android:process=":decoder_service" /> |
| |
| <!-- Providers for chrome data. --> |
| <provider android:name="org.chromium.chrome.browser.provider.ChromeBrowserProvider" |
| android:authorities="{{ manifest_package }}.ChromeBrowserProvider;{{ manifest_package }}.browser;{{ manifest_package }}" |
| android:exported="true"> |
| <path-permission android:path="/bookmarks/search_suggest_query" |
| android:readPermission="android.permission.GLOBAL_SEARCH" /> |
| </provider> |
| |
| <!-- Provider for FileProvider. --> |
| <provider android:name="org.chromium.chrome.browser.util.ChromeFileProvider" |
| android:authorities="{{ manifest_package }}.FileProvider" |
| android:exported="false" |
| android:grantUriPermissions="true"> |
| <meta-data android:name="android.support.FILE_PROVIDER_PATHS" |
| android:resource="@xml/file_paths" /> |
| </provider> |
| |
| <!-- Sync adapter for browser invalidation. --> |
| <service android:name="org.chromium.chrome.browser.invalidation.ChromeBrowserSyncAdapterService" |
| android:exported="false"> |
| <intent-filter> |
| <action android:name="android.content.SyncAdapter" /> |
| </intent-filter> |
| <meta-data android:name="android.content.SyncAdapter" |
| android:resource="@xml/syncadapter" /> |
| </service> |
| |
| <!-- Broadcast receiver that will be notified of account changes --> |
| <receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver"> |
| <intent-filter> |
| <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" /> |
| </intent-filter> |
| </receiver> |
| |
| <!-- Download foreground service --> |
| <service android:name="org.chromium.chrome.browser.download.DownloadForegroundService" |
| android:exported="false"> |
| </service> |
| |
| <!-- Download broadcast manager service --> |
| <service android:name="org.chromium.chrome.browser.download.DownloadBroadcastManager" |
| android:exported="false"> |
| </service> |
| |
| <!-- Bookmarks widget --> |
| <receiver android:name="com.google.android.apps.chrome.appwidget.bookmarks.BookmarkThumbnailWidgetProvider" |
| android:label="@string/bookmark_widget_title"> |
| <intent-filter> |
| <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> |
| <action android:name=".BOOKMARK_APPWIDGET_UPDATE" /> |
| </intent-filter> |
| <meta-data |
| android:name="android.appwidget.provider" |
| android:resource="@xml/bookmark_widget_info" /> |
| </receiver> |
| <service android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetService" |
| android:permission="android.permission.BIND_REMOTEVIEWS" |
| android:exported="false" /> |
| <receiver android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProxy" |
| android:exported="false" /> |
| |
| <!-- Search widget --> |
| <receiver |
| android:name="org.chromium.chrome.browser.searchwidget.SearchWidgetProvider" |
| android:label="@string/search_widget_title"> |
| <intent-filter> |
| <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> |
| </intent-filter> |
| <intent-filter> |
| <action android:name="org.chromium.chrome.browser.searchwidget.START_TEXT_QUERY" /> |
| </intent-filter> |
| <intent-filter> |
| <action android:name="org.chromium.chrome.browser.searchwidget.START_VOICE_QUERY" /> |
| </intent-filter> |
| <intent-filter> |
| <action android:name="org.chromium.chrome.browser.searchwidget.UPDATE_ALL_WIDGETS" /> |
| </intent-filter> |
| <meta-data |
| android:name="android.appwidget.provider" |
| android:resource="@xml/search_widget_info" /> |
| </receiver> |
| |
| <!-- Search Activity --> |
| <activity android:name="org.chromium.chrome.browser.searchwidget.SearchActivity" |
| android:theme="@style/Theme.Chromium.SearchActivity" |
| android:label="Search" |
| android:exported="false" |
| android:launchMode="singleTask" |
| android:taskAffinity="" |
| android:clearTaskOnLaunch="true" |
| android:excludeFromRecents="true" |
| android:windowSoftInputMode="adjustResize" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc|screenLayout|smallestScreenSize" |
| android:hardwareAccelerated="false" /> |
| |
| <!-- Receiver for GCM messages. --> |
| <receiver android:name="com.google.android.gms.gcm.GcmReceiver" |
| android:exported="true" |
| android:permission="com.google.android.c2dm.permission.SEND"> |
| <intent-filter> |
| <action android:name="com.google.android.c2dm.intent.RECEIVE" /> |
| <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> |
| <category android:name="{{ manifest_package }}"/> |
| </intent-filter> |
| </receiver> |
| <!-- GcmTaskService for registration for Invalidations. --> |
| <service android:name="com.google.ipc.invalidation.ticl.android2.channel.GcmRegistrationTaskService" |
| android:exported="true" |
| android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" > |
| <intent-filter> |
| <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/> |
| </intent-filter> |
| </service> |
| <!-- InstanceIDListenerService for token refresh events from GCM. --> |
| <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidInstanceIDListenerService" |
| android:exported="false"> |
| <intent-filter> |
| <action android:name="com.google.android.gms.iid.InstanceID"/> |
| </intent-filter> |
| </service> |
| <!-- GcmListenerService for messages from GCM. --> |
| <service android:name="org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService" |
| android:exported="false" > |
| <intent-filter> |
| <action android:name="com.google.android.c2dm.intent.RECEIVE" /> |
| </intent-filter> |
| </service> |
| <meta-data android:name="ipc.invalidation.ticl.gcm_upstream_service_class" |
| android:value="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender" /> |
| <service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender" |
| android:exported="false"/> |
| |
| <!-- Notification service for sync. --> |
| <meta-data android:name="ipc.invalidation.ticl.listener_service_class" |
| android:value="org.chromium.chrome.browser.invalidation.ChromeInvalidationClientService"/> |
| <service android:name="org.chromium.chrome.browser.invalidation.ChromeInvalidationClientService" |
| android:exported="false"> |
| <intent-filter> |
| <action android:name="com.google.ipc.invalidation.AUTH_TOKEN_REQUEST"/> |
| </intent-filter> |
| </service> |
| <service android:name="com.google.ipc.invalidation.ticl.android2.TiclService" |
| android:exported="false"/> |
| <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService" |
| android:exported="false"/> |
| <receiver android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver" |
| android:exported="false"/> |
| <receiver android:name="com.google.ipc.invalidation.external.client.contrib.AndroidListener$AlarmReceiver" |
| android:exported="false"/> |
| |
| <!-- Android Notification service listener --> |
| <service android:name="org.chromium.chrome.browser.notifications.NotificationService" |
| android:exported="false"/> |
| <receiver android:name="org.chromium.chrome.browser.notifications.NotificationService$Receiver" |
| android:exported="false"> |
| <intent-filter> |
| <action android:name="org.chromium.chrome.browser.notifications.CLICK_NOTIFICATION" /> |
| <action android:name="org.chromium.chrome.browser.notifications.CLOSE_NOTIFICATION" /> |
| </intent-filter> |
| </receiver> |
| |
| <!-- Android Notification job service --> |
| <service android:name="org.chromium.chrome.browser.notifications.NotificationJobService" |
| android:exported="false" |
| android:permission="android.permission.BIND_JOB_SERVICE"/> |
| |
| <!-- Background Task Scheduler job service --> |
| <service android:name="org.chromium.components.background_task_scheduler.BackgroundTaskJobService" |
| android:exported="false" |
| android:permission="android.permission.BIND_JOB_SERVICE"/> |
| |
| <!-- Background Task Scheduler GCM task service --> |
| <service android:name="org.chromium.components.background_task_scheduler.BackgroundTaskGcmTaskService" |
| android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" /> |
| </intent-filter> |
| </service> |
| |
| <!-- GcmTaskService implementation to wake Chrome on scheduled events --> |
| <service android:name="org.chromium.chrome.browser.ChromeBackgroundService" |
| android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" |
| android:exported="true"> |
| <intent-filter> |
| <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY" /> |
| </intent-filter> |
| </service> |
| |
| <service android:name="org.chromium.chrome.browser.prerender.ChromePrerenderService" |
| android:exported="true" |
| tools:ignore="ExportedService" /> |
| <service android:name="org.chromium.chrome.browser.customtabs.CustomTabsConnectionService" |
| android:exported="true" |
| tools:ignore="ExportedService"> |
| <intent-filter> |
| <action android:name="android.support.customtabs.action.CustomTabsService" /> |
| <category android:name="androidx.browser.trusted.category.TrustedWebActivities"/> |
| <category android:name="androidx.browser.trusted.category.TrustedWebActivitySplashScreensV1"/> |
| </intent-filter> |
| </service> |
| <service android:name="android.support.customtabs.PostMessageService" /> |
| |
| <!-- Crash reporting services. --> |
| <service android:name="org.chromium.chrome.browser.crash.ChromeMinidumpUploadJobService" |
| android:permission="android.permission.BIND_JOB_SERVICE" |
| android:exported="false"/> |
| <service android:name="org.chromium.chrome.browser.crash.MinidumpUploadService" |
| android:exported="false"/> |
| |
| <service android:name="org.chromium.chrome.browser.omaha.OmahaClient" |
| android:exported="false"/> |
| <service android:name="org.chromium.chrome.browser.incognito.IncognitoNotificationService" |
| android:exported="false"/> |
| |
| <!-- The following service entries exist in order to allow us to |
| start more than one sandboxed process. --> |
| |
| <!-- NOTE: If you change the value of "android:process" for the below services, |
| you also need to update kHelperProcessExecutableName in chrome_constants.cc. --> |
| {% set num_sandboxed_services = 40 %} |
| <meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES" |
| android:value="{{ num_sandboxed_services }}"/> |
| |
| {% for i in range(num_sandboxed_services) %} |
| <service android:name="org.chromium.content.app.SandboxedProcessService{{ i }}" |
| android:process=":sandboxed_process{{ i }}" |
| android:permission="{{ manifest_package }}.permission.CHILD_SERVICE" |
| android:isolatedProcess="true" |
| android:exported="{{sandboxed_service_exported|default(false)}}" |
| {% if (use_zygote|default(false) == 'true') %} |
| android:useAppZygote="true" |
| {% endif %} |
| {% if (sandboxed_service_exported|default(false)) == 'true' %} |
| android:externalService="true" |
| tools:ignore="ExportedService" |
| android:visibleToInstantApps="true" |
| {% endif %} /> |
| {% endfor %} |
| |
| {% set num_privileged_services = 5 %} |
| <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES" |
| android:value="{{ num_privileged_services }}"/> |
| |
| {% for i in range(num_privileged_services) %} |
| {% set privileged_process_name = ':privileged_process%d' % i %} |
| <!-- TODO(tedchoc): Omit this for release builds as MultiDex is debug only. --> |
| <meta-data android:name="{{ manifest_package }}{{ privileged_process_name }}.ignore_multidex" |
| android:value="true" /> |
| <service android:name="org.chromium.content.app.PrivilegedProcessService{{ i }}" |
| android:process="{{ privileged_process_name }}" |
| android:permission="{{ manifest_package }}.permission.CHILD_SERVICE" |
| android:isolatedProcess="false" |
| android:exported="false" /> |
| {% endfor %} |
| |
| <receiver android:name="org.chromium.chrome.browser.notifications.NotificationIntentInterceptor$Receiver" |
| android:exported="false"/> |
| |
| <receiver android:name="org.chromium.chrome.browser.ntp.ContentSuggestionsNotifier$OpenUrlReceiver" |
| android:exported="false"/> |
| <receiver android:name="org.chromium.chrome.browser.ntp.ContentSuggestionsNotifier$DeleteReceiver" |
| android:exported="false"/> |
| <receiver android:name="org.chromium.chrome.browser.ntp.ContentSuggestionsNotifier$TimeoutReceiver" |
| android:exported="false"/> |
| |
| <receiver android:name="org.chromium.chrome.browser.send_tab_to_self.NotificationManager$TapReceiver" |
| android:exported="false"/> |
| <receiver android:name="org.chromium.chrome.browser.send_tab_to_self.NotificationManager$DeleteReceiver" |
| android:exported="false"/> |
| <receiver android:name="org.chromium.chrome.browser.send_tab_to_self.NotificationManager$TimeoutReceiver" |
| android:exported="false"/> |
| |
| <receiver android:name="org.chromium.chrome.browser.offlinepages.prefetch.PrefetchedPagesNotifier$ClickReceiver" |
| android:exported="false"/> |
| <receiver android:name="org.chromium.chrome.browser.offlinepages.prefetch.PrefetchedPagesNotifier$SettingsReceiver" |
| android:exported="false"/> |
| |
| <receiver android:name="org.chromium.chrome.browser.offlinepages.AutoFetchNotifier$CompleteNotificationReceiver" |
| android:exported="false"/> |
| <receiver android:name="org.chromium.chrome.browser.offlinepages.AutoFetchNotifier$InProgressCancelReceiver" |
| android:exported="false"/> |
| |
| <service android:name="org.chromium.chrome.browser.media.MediaCaptureNotificationService" |
| android:exported="false"/> |
| <service android:name="org.chromium.chrome.browser.media.ui.MediaNotificationManager$PlaybackListenerService" |
| android:exported="false"> |
| <intent-filter> |
| <action android:name="android.intent.action.MEDIA_BUTTON" /> |
| </intent-filter> |
| </service> |
| <service android:name="org.chromium.chrome.browser.media.ui.MediaNotificationManager$PresentationListenerService" |
| android:exported="false"> |
| <intent-filter> |
| <action android:name="android.intent.action.MEDIA_BUTTON" /> |
| </intent-filter> |
| </service> |
| <service android:name="org.chromium.chrome.browser.media.ui.MediaNotificationManager$CastListenerService" |
| android:exported="false"> |
| <intent-filter> |
| <action android:name="android.intent.action.MEDIA_BUTTON" /> |
| </intent-filter> |
| </service> |
| |
| |
| <receiver android:name="org.chromium.chrome.browser.media.ui.MediaNotificationManager$PlaybackMediaButtonReceiver"> |
| <intent-filter> |
| <action android:name="android.intent.action.MEDIA_BUTTON" /> |
| </intent-filter> |
| </receiver> |
| <receiver android:name="org.chromium.chrome.browser.media.ui.MediaNotificationManager$PresentationMediaButtonReceiver"> |
| <intent-filter> |
| <action android:name="android.intent.action.MEDIA_BUTTON" /> |
| </intent-filter> |
| </receiver> |
| <receiver android:name="org.chromium.chrome.browser.media.ui.MediaNotificationManager$CastMediaButtonReceiver"> |
| <intent-filter> |
| <action android:name="android.intent.action.MEDIA_BUTTON" /> |
| </intent-filter> |
| </receiver> |
| |
| |
| <service android:name="org.chromium.chrome.browser.tracing.TracingNotificationService" |
| android:exported="false"/> |
| |
| |
| <meta-data android:name="org.chromium.content.browser.SMART_CLIP_PROVIDER" |
| android:value="org.chromium.content_public.browser.SmartClipProvider"/> |
| |
| {% block extra_application_definitions %} |
| |
| <!-- Media route controllers to use for remote playback (cast). |
| This is here, rather than in code, since it varies between upstream and downstream, |
| yet we need this list of classes in the notification service, which belongs upstream |
| and doesn't run the downstream startup code. The Cast code will, for each media element, |
| choose the first MediaRouteController that can play it, so the order of the list can be important. |
| The most specific MediaRouteControllers should be listed first, followed by more generic ones. |
| The downstream manifest replaces this block, and hence replaces the list of media route |
| controllers with its own list. --> |
| <meta-data android:name="org.chromium.content.browser.REMOTE_MEDIA_PLAYERS" |
| android:value="org.chromium.chrome.browser.media.remote.DefaultMediaRouteController"/> |
| |
| {% endblock %} |
| {% block extra_application_definitions_for_test %} |
| {% endblock %} |
| </application> |
| {% block extra_root_definitions %} |
| {% endblock %} |
| </manifest> |