| <?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 android:name="android.permission.ACCESS_NETWORK_STATE" /> |
| |
| <!-- |
| Enable Bluetooth permission via 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-m which provides |
| permission on Android M and later without a prompt. |
| --> |
| {% if channel in ['default'] %} |
| <uses-permission android:name="android.permission.BLUETOOTH"/> |
| <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/> |
| {% endif %} |
| <uses-permission-sdk-m android:name="android.permission.BLUETOOTH"/> |
| <uses-permission-sdk-m android:name="android.permission.BLUETOOTH_ADMIN"/> |
| |
| <uses-permission android:name="android.permission.CAMERA" /> |
| <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> |
| <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"/> |
| <uses-permission android:name="android.permission.NFC"/> |
| <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 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"/> |
| |
| <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"/> |
| |
| {% 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" /> |
| |
| <!-- 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="@mipmap/app_icon" |
| android:label="@string/app_name" |
| android:largeHeap="false" |
| android:allowBackup="false" |
| android:supportsRtl="true" |
| {% block extra_application_attributes %}{% endblock %}> |
| |
| <!-- Samsung MultiWindow Support --> |
| <meta-data android:name="com.samsung.android.sdk.multiwindow.enable" |
| android:value="true" /> |
| <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" /> |
| <meta-data android:name="com.samsung.android.sdk.multiwindow.penwindow.enable" |
| android:value="true"/> |
| |
| {% if channel in ['dev', 'canary', 'default'] %} |
| <meta-data android:name="com.sec.android.support.multiwindow" android:value="true" /> |
| {% endif %} |
| {% if configuration_policy == '1' %} |
| <meta-data android:name="android.content.APP_RESTRICTIONS" |
| android:resource="@xml/app_restrictions"/> |
| {% endif %} |
| |
| <!-- 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="@android:style/Theme.Translucent.NoTitleBar"> |
| </activity> |
| <activity-alias android:name="com.google.android.apps.chrome.Main" |
| 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.DEFAULT" /> |
| <category android:name="android.intent.category.LAUNCHER" /> |
| <category android:name="android.intent.category.BROWSABLE" /> |
| <category android:name="android.intent.category.APP_BROWSER" /> |
| <category android:name="android.intent.category.NOTIFICATION_PREFERENCES" /> |
| {% if channel in ['dev', 'canary', 'default'] %} |
| <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" /> |
| {% 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> |
| <action android:name="android.intent.action.VIEW" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <category android:name="android.intent.category.BROWSABLE" /> |
| {% 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" /> |
| </intent-filter> |
| <!-- Same filter as above but with MIME types. Intents that |
| do not specify a MIME type won't match. --> |
| <intent-filter> |
| <action android:name="android.intent.action.VIEW" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| <category android:name="android.intent.category.BROWSABLE" /> |
| {% 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="content" /> |
| <data android:scheme="javascript" /> |
| <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" android:mimeType="multipart/related"/> |
| </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" /> |
| </activity-alias> |
| <activity android:name="org.chromium.chrome.browser.document.DocumentActivity" |
| android:exported="false" |
| android:theme="@style/MainTheme" |
| android:windowSoftInputMode="adjustResize" |
| android:taskAffinity="" |
| android:persistableMode="persistAcrossReboots" |
| android:autoRemoveFromRecents="false" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" |
| android:hardwareAccelerated="false"> |
| </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/IncognitoTheme" |
| android:windowSoftInputMode="adjustResize" |
| android:taskAffinity="" |
| android:persistableMode="persistNever" |
| android:autoRemoveFromRecents="false" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" |
| android:hardwareAccelerated="false"> |
| </activity> |
| <activity-alias android:name="com.google.android.apps.chrome.document.IncognitoDocumentActivity" |
| android:targetActivity="org.chromium.chrome.browser.document.IncognitoDocumentActivity" |
| android:exported="false"/> |
| <activity android:name="org.chromium.chrome.browser.customtabs.CustomTabActivity" |
| android:theme="@style/MainTheme" |
| android:exported="false" |
| android:windowSoftInputMode="adjustResize" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" |
| android:hardwareAccelerated="false"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.ChromeTabbedActivity" |
| android:theme="@style/MainTheme" |
| android:exported="false" |
| android:windowBackground="@drawable/window_background" |
| android:windowSoftInputMode="adjustResize" |
| android:launchMode="singleTask" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" |
| android:hardwareAccelerated="false"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.multiwindow.MultiInstanceChromeTabbedActivity" |
| android:theme="@style/MainTheme" |
| android:exported="false" |
| android:windowBackground="@drawable/window_background" |
| android:windowSoftInputMode="adjustResize" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" |
| android:hardwareAccelerated="false"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.sync.ui.PassphraseActivity" |
| android:theme="@style/MainTheme" |
| android:autoRemoveFromRecents="true"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.bookmark.ManageBookmarkActivity" |
| android:theme="@style/DialogWhenLargeHolo" |
| android:label="@string/save_bookmark" |
| android:windowSoftInputMode="stateHidden|adjustPan" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"> |
| <intent-filter> |
| <!-- This is sent by the BrowserProviderProxy as a result of |
| calls to android.provider.Browser.saveBookmark(). --> |
| <action android:name="{{ manifest_package }}.ADDBOOKMARK" /> |
| <category android:name="android.intent.category.DEFAULT" /> |
| </intent-filter> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.firstrun.FirstRunActivity" |
| android:theme="@style/DialogWhenLarge" |
| android:label="@string/fre_label" |
| android:launchMode="singleTop" |
| android:windowSoftInputMode="stateHidden|adjustPan" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.preferences.Preferences" |
| android:theme="@style/PreferencesTheme" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" |
| android:label="@string/preferences" |
| android:exported="false"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.EmbedContentViewActivity" |
| android:theme="@style/ThemeWithActionBar" |
| android:hardwareAccelerated="false" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.prerender.PrerenderAPITestActivity" |
| android:theme="@style/MainTheme" |
| android:exported="true"> |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkActivity" |
| android:theme="@style/EnhancedBookmarkDialog" |
| android:windowSoftInputMode="stateAlwaysHidden" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" > |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkEditActivity" |
| android:theme="@style/EnhancedBookmarkDialogWhite" |
| android:windowSoftInputMode="stateHidden" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" > |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkAddEditFolderActivity" |
| android:theme="@style/EnhancedBookmarkDialogWhite" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" > |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkFolderSelectActivity" |
| android:theme="@style/EnhancedBookmarkDialogWhite" |
| android:windowSoftInputMode="stateAlwaysHidden" |
| android:label="@string/enhanced_bookmark_choose_folder" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" > |
| </activity> |
| <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkSigninActivity" |
| android:theme="@style/EnhancedBookmarkDialogWhite" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" > |
| </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> |
| </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/WebappTheme" |
| android:label="@string/webapp_activity_title" |
| android:documentLaunchMode="intoExisting" |
| android:windowSoftInputMode="adjustResize" |
| android:persistableMode="persistNever" |
| android:hardwareAccelerated="false" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"> |
| </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"> |
| </activity-alias> |
| {% for i in range(10) %} |
| <activity android:name="org.chromium.chrome.browser.webapps.WebappActivity{{ i }}" |
| android:theme="@style/WebappTheme" |
| android:icon="@mipmap/app_shortcut_icon" |
| android:label="@string/webapp_activity_title" |
| android:launchMode="singleTask" |
| android:windowSoftInputMode="adjustResize" |
| android:persistableMode="persistNever" |
| android:hardwareAccelerated="false" |
| android:taskAffinity="{{ manifest_package }}.webapps.WebappActivity{{ i }}" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"> |
| </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 %} |
| |
| <activity android:name="org.chromium.chrome.browser.media.remote.ExpandedControllerActivity" |
| android:theme="@style/MainTheme" |
| android:label="Chrome.ExpandedControllerActivity" |
| android:hardwareAccelerated="true" |
| android:launchMode="singleTask" |
| android:noHistory="true" |
| android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" |
| android:excludeFromRecents="true"> |
| </activity> |
| |
| <activity android:name="org.chromium.chrome.browser.childaccounts.ResetDataActivity" |
| android:theme="@android:style/Theme.Translucent.NoTitleBar" |
| android:exported="true" |
| android:excludeFromRecents="true"> |
| </activity> |
| |
| <!-- This activity is started along with IncognitoDocumentActivity, so it also must |
| disable hardware acceleration. Besides, it doesn't have any UI. --> |
| <activity android:name="org.chromium.chrome.browser.document.CipherKeyActivity" |
| android:launchMode="singleInstance" |
| android:theme="@android:style/Theme.Translucent.NoTitleBar" |
| android:excludeFromRecents="true" |
| android:hardwareAccelerated="false"> |
| </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> |
| |
| <!-- Activity to list Physical Web Urls --> |
| <activity android:name="org.chromium.chrome.browser.physicalweb.ListUrlsActivity" |
| android:label="@string/physical_web_list_urls_activity_title" |
| android:theme="@style/PhysicalWebNearbyUrlsListStyle" |
| android:exported="false"> |
| </activity> |
| |
| <!-- Providers for chrome data. --> |
| <provider android:name="org.chromium.chrome.browser.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.CompatibilityFileProvider" |
| 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> |
| |
| <!-- Precache service. |
| Not enabled on Stable or Work channels. This is currently an experiment |
| on beta channel (crbug/309216) but the mere existence of these can lead |
| to some process churn, so omit them while not relevant. b/24776372 |
| --> |
| {% if channel in ['default', 'canary', 'dev', 'beta'] %} |
| <service android:name="org.chromium.chrome.browser.precache.PrecacheService" |
| android:exported="false" /> |
| <receiver android:name="org.chromium.chrome.browser.precache.PrecacheServiceLauncher"> |
| <intent-filter> |
| <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/> |
| <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/> |
| <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> |
| </intent-filter> |
| </receiver> |
| {% endif %} |
| |
| <service android:name="org.chromium.components.variations.firstrun.VariationsSeedService" |
| android:exported="false" /> |
| |
| <receiver android:name="org.chromium.components.variations.firstrun.VariationsSeedServiceLauncher" |
| android:permission="{{ manifest_package }}.TOS_ACKED"> |
| <intent-filter> |
| <action android:name="{{ manifest_package }}.TOS_ACKED" /> |
| </intent-filter> |
| </receiver> |
| |
| <receiver android:name="org.chromium.chrome.browser.firstrun.ToSAckedReceiver" |
| android:permission="{{ manifest_package }}.TOS_ACKED"> |
| <intent-filter> |
| <action android:name="{{ manifest_package }}.TOS_ACKED" /> |
| </intent-filter> |
| </receiver> |
| |
| <receiver android:name="com.google.android.apps.chrome.appwidget.bookmarks.BookmarkThumbnailWidgetProvider" |
| android:label="@string/bookmarks"> |
| <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_thumbnail_widget_info" /> |
| </receiver> |
| <service android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkThumbnailWidgetService" |
| android:permission="android.permission.BIND_REMOTEVIEWS" |
| android:exported="false" /> |
| <receiver android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProxy" |
| android:exported="false" /> |
| |
| <!-- Receiver for GCM messages. --> |
| <receiver android:name="org.chromium.chrome.browser.services.gcm.ChromeGcmReceiver" |
| 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.components.invalidation.InvalidationClientService"/> |
| <service android:name="org.chromium.components.invalidation.InvalidationClientService" |
| 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.client2.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> |
| |
| <!-- Service Worker Background Sync GCM scheduler task --> |
| <service android:name="org.chromium.chrome.browser.BackgroundSyncLauncherService" |
| 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" /> |
| </intent-filter> |
| </service> |
| <service android:name="org.chromium.chrome.browser.crash.LogcatExtractionService" |
| android:exported="false"/> |
| <service android:name="org.chromium.chrome.browser.crash.MinidumpPreparationService" |
| 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"/> |
| |
| <!-- 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 = 20 %} |
| <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="false" /> |
| {% endfor %} |
| |
| {% set num_privileged_services = 3 %} |
| <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES" |
| android:value="{{ num_privileged_services }}"/> |
| {% for i in range(num_privileged_services) %} |
| <service android:name="org.chromium.content.app.PrivilegedProcessService{{ i }}" |
| android:process=":privileged_process{{ i }}" |
| android:permission="{{ manifest_package }}.permission.CHILD_SERVICE" |
| android:isolatedProcess="false" |
| android:exported="false" /> |
| {% endfor %} |
| |
| <receiver android:name="org.chromium.chrome.browser.download.OpenDownloadReceiver"> |
| <intent-filter> |
| <action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED"/> |
| </intent-filter> |
| </receiver> |
| |
| <receiver android:name="org.chromium.base.PowerStatusReceiver"> |
| <intent-filter> |
| <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/> |
| <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/> |
| </intent-filter> |
| </receiver> |
| |
| <service android:name="org.chromium.chrome.browser.media.remote.NotificationTransportControl$ListenerService" /> |
| |
| <!-- Receiver for lock screen input when casting --> |
| <receiver android:name="org.chromium.chrome.browser.media.remote.LockScreenTransportControl$MediaButtonIntentReceiver"/> |
| |
| <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> |
| |
| |
| <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> |
| |
| |
| <meta-data android:name="com.google.android.gms.version" |
| android:value="@integer/google_play_services_version" /> |
| |
| <meta-data android:name="org.chromium.content.browser.SMART_CLIP_PROVIDER" |
| android:value="org.chromium.content.browser.SmartClipProvider"/> |
| <meta-data android:name="org.chromium.components.service_tab_launcher.SERVICE_TAB_LAUNCHER" |
| android:value="org.chromium.chrome.browser.ChromeServiceTabLauncher" /> |
| |
| {% 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 %} |
| </application> |
| </manifest> |