1 <?xml version="1.0" encoding="utf-8"?>
2 <!-- Copyright 2015 The Chromium Authors. All rights reserved.
3 Use of this source code is governed by a BSD-style license that can be
4 found in the LICENSE file. -->
7 Note: This is a jinja2 template, processed at build time into the final manifest.
9 Blocks denoted with { % block some_name % }foo{ % endblock % } can be overridden
10 by a child template that "extends" this file.
13 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
14 xmlns:tools="http://schemas.android.com/tools"
15 package="{{ manifest_package }}"
16 tools:ignore="MissingVersion">
17 <!-- android:versionCode and android:versionName is set through gyp. See build/common.gypi -->
19 <uses-sdk android:minSdkVersion="{{min_sdk_version}}" android:targetSdkVersion="{{target_sdk_version}}" />
20 <uses-feature android:glEsVersion="0x00020000" />
22 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
23 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
24 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
25 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
26 <uses-permission android:name="android.permission.CAMERA" />
27 <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
28 <uses-permission android:name="android.permission.INTERNET"/>
29 <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
30 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
31 <uses-permission android:name="android.permission.NFC"/>
32 <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
33 <uses-permission android:name="android.permission.READ_SYNC_STATS"/>
34 <uses-permission android:name="android.permission.RECORD_AUDIO"/>
35 <uses-permission android:name="android.permission.USE_CREDENTIALS"/>
36 <uses-permission android:name="android.permission.VIBRATE"/>
37 <uses-permission android:name="android.permission.WAKE_LOCK"/>
38 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
39 <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
41 <permission android:name="{{ manifest_package }}.permission.CHILD_SERVICE" android:protectionLevel="signature" />
42 <permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem" />
43 <permission android:name="{{ manifest_package }}.TOS_ACKED" android:protectionLevel="signatureOrSystem" />
44 <!-- Only chrome can receive the messages and registration result -->
45 <permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE"
46 android:protectionLevel="signature" />
47 <permission android:name="{{ manifest_package }}.permission.DEBUG"
48 android:label="Debug web pages"
49 android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
50 android:protectionLevel="signature" />
52 <uses-permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE" />
53 <uses-permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" />
54 <uses-permission android:name="{{ manifest_package }}.TOS_ACKED" />
56 <uses-permission android:name="com.chrome.permission.DEVICE_EXTRAS" />
57 <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
58 <uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
59 <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
60 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
62 {% block extra_uses_permissions %}
65 <!-- We may use GPS but it's not required -->
66 <uses-feature android:name="android.hardware.location.gps" android:required="false" />
67 <uses-feature android:name="android.hardware.camera" android:required="false" />
70 android.permission.RECORD_AUDIO makes this implied, however we don't
73 <uses-feature android:name="android.hardware.microphone" android:required="false" />
75 The app is usable with keyboard/mouse. This feature is implicitly true for
76 all applications and needs to be disabled manually.
78 <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
80 <!-- Set android:largeHeap to "true" to allow more than the default
81 Java heap limit (32Mb on Nexus S, 48Mb on Xoom). -->
82 <application android:name="{% block application_name %}org.chromium.chrome.browser.ChromeApplication{% endblock %}"
83 android:icon="@mipmap/app_icon"
84 android:label="@string/app_name"
85 android:largeHeap="false"
86 android:allowBackup="false"
87 android:supportsRtl="true"
88 {% block extra_application_attributes %}{% endblock %}>
90 <!-- Samsung MultiWindow Support -->
91 <meta-data android:name="com.samsung.android.sdk.multiwindow.enable"
92 android:value="true" />
93 <meta-data android:name="com.samsung.android.sdk.multiwindow.multiinstance.enable"
94 android:value="true" />
95 <meta-data android:name="com.samsung.android.sdk.multiwindow.multiinstance.launchmode"
96 android:value="singleTask" />
97 <meta-data android:name="com.samsung.android.sdk.multiwindow.penwindow.enable"
98 android:value="true"/>
100 {% if channel in ['dev', 'canary', 'default'] %}
101 <meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
103 {% if configuration_policy == '1' %}
104 <meta-data android:name="android.content.APP_RESTRICTIONS"
105 android:resource="@xml/app_restrictions"/>
108 <!-- Note: Set android:hardwareAccelerated to "false" in the ".Main"
109 activity below to go into software, browser tiling mode.
111 Since this activity (shown in the launcher) and the application
112 (shown in Android's Settings/Apps list) share the same label, we
113 do not specify one here to allow it to inherit from the app. -->
114 <activity android:name="org.chromium.chrome.browser.document.ChromeLauncherActivity"
115 android:theme="@android:style/Theme.Translucent.NoTitleBar">
117 <activity-alias android:name="com.google.android.apps.chrome.Main"
118 android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity"
119 android:exported="true">
121 <action android:name="android.intent.action.MAIN" />
122 <category android:name="android.intent.category.DEFAULT" />
123 <category android:name="android.intent.category.LAUNCHER" />
124 <category android:name="android.intent.category.BROWSABLE" />
125 <category android:name="android.intent.category.APP_BROWSER" />
126 <category android:name="android.intent.category.NOTIFICATION_PREFERENCES" />
127 {% if channel in ['dev', 'canary', 'default'] %}
128 <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />
131 <!-- Matches the common case of intents with no MIME type.
132 Make sure to keep in sync with the next filter. -->
134 <action android:name="android.intent.action.VIEW" />
135 <category android:name="android.intent.category.DEFAULT" />
136 <category android:name="android.intent.category.BROWSABLE" />
137 {% if channel in ['stable', 'default'] %}<data android:scheme="googlechrome" />{% endif %}
138 <data android:scheme="http" />
139 <data android:scheme="https" />
140 <data android:scheme="about" />
141 <data android:scheme="javascript" />
143 <!-- Same filter as above but with MIME types. Intents that
144 do not specify a MIME type won't match. -->
146 <action android:name="android.intent.action.VIEW" />
147 <category android:name="android.intent.category.DEFAULT" />
148 <category android:name="android.intent.category.BROWSABLE" />
149 {% if channel in ['stable', 'default'] %}<data android:scheme="googlechrome" />{% endif %}
150 <data android:scheme="http" />
151 <data android:scheme="https" />
152 <data android:scheme="about" />
153 <data android:scheme="content" />
154 <data android:scheme="javascript" />
155 <data android:mimeType="text/html"/>
156 <data android:mimeType="text/plain"/>
157 <data android:mimeType="application/xhtml+xml"/>
159 <!-- MHTML support, used for snapshots -->
161 <action android:name="android.intent.action.VIEW" />
162 <category android:name="android.intent.category.DEFAULT" />
163 <data android:scheme="file" android:mimeType="multipart/related"/>
166 <action android:name="android.intent.action.MEDIA_SEARCH" />
167 <category android:name="android.intent.category.DEFAULT" />
170 <action android:name="android.speech.action.VOICE_SEARCH_RESULTS" />
171 <category android:name="android.intent.category.DEFAULT" />
174 <action android:name="android.nfc.action.NDEF_DISCOVERED" />
175 <category android:name="android.intent.category.DEFAULT" />
176 <data android:scheme="http" />
177 <data android:scheme="https" />
180 <action android:name="android.intent.action.SEARCH" />
183 <action android:name="com.sec.android.airview.HOVER" />
185 <meta-data android:name="android.app.searchable"
186 android:resource="@xml/searchable" />
188 <activity android:name="org.chromium.chrome.browser.document.DocumentActivity"
189 android:exported="false"
190 android:theme="@style/MainTheme"
191 android:windowSoftInputMode="adjustResize"
192 android:taskAffinity=""
193 android:persistableMode="persistAcrossReboots"
194 android:autoRemoveFromRecents="false"
195 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
196 android:hardwareAccelerated="true">
198 <activity android:name="org.chromium.chrome.browser.document.IncognitoDocumentActivity"
199 android:icon="@mipmap/incognito_app_icon"
200 android:exported="false"
201 android:theme="@style/IncognitoTheme"
202 android:windowSoftInputMode="adjustResize"
203 android:taskAffinity=""
204 android:persistableMode="persistNever"
205 android:autoRemoveFromRecents="false"
206 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
207 android:hardwareAccelerated="true">
209 <activity android:name="org.chromium.chrome.browser.customtabs.CustomTabActivity"
210 android:theme="@style/MainTheme"
211 android:exported="false"
212 android:windowSoftInputMode="adjustResize"
213 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
214 android:hardwareAccelerated="true">
216 <activity android:name="org.chromium.chrome.browser.ChromeTabbedActivity"
217 android:theme="@style/MainTheme"
218 android:exported="false"
219 android:windowBackground="@drawable/window_background"
220 android:windowSoftInputMode="adjustResize"
221 android:launchMode="singleTask"
222 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
223 android:hardwareAccelerated="true">
225 <activity android:name="org.chromium.chrome.browser.multiwindow.MultiInstanceChromeTabbedActivity"
226 android:theme="@style/MainTheme"
227 android:exported="false"
228 android:windowBackground="@drawable/window_background"
229 android:windowSoftInputMode="adjustResize"
230 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
231 android:hardwareAccelerated="true">
233 <activity android:name="org.chromium.chrome.browser.sync.ui.PassphraseActivity"
234 android:theme="@style/MainTheme"
235 android:autoRemoveFromRecents="true">
237 <activity android:name="org.chromium.chrome.browser.bookmark.ManageBookmarkActivity"
238 android:theme="@style/DialogWhenLargeHolo"
239 android:label="@string/save_bookmark"
240 android:windowSoftInputMode="stateHidden|adjustPan"
241 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
243 <action android:name="android.intent.action.VIEW" />
244 <category android:name="android.intent.category.DEFAULT" />
245 <category android:name="android.intent.category.BROWSABLE" />
246 <data android:scheme="chrome" android:host="editbookmark" />
249 <!-- This is sent by the BrowserProviderProxy as a result of
250 calls to android.provider.Browser.saveBookmark(). -->
251 <action android:name="{{ manifest_package }}.ADDBOOKMARK" />
252 <category android:name="android.intent.category.DEFAULT" />
255 <activity android:name="org.chromium.chrome.browser.firstrun.FirstRunActivity"
256 android:theme="@style/DialogWhenLarge"
257 android:label="@string/fre_label"
258 android:launchMode="singleTop"
259 android:windowSoftInputMode="stateHidden|adjustPan"
260 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
262 <activity android:name="org.chromium.chrome.browser.preferences.Preferences"
263 android:theme="@style/PreferencesTheme"
264 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
265 android:label="@string/preferences"
266 android:exported="false">
268 <activity android:name="org.chromium.chrome.browser.EmbedContentViewActivity"
269 android:theme="@style/ThemeWithActionBar"
270 android:hardwareAccelerated="true"
271 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
273 <activity android:name="org.chromium.chrome.browser.prerender.PrerenderAPITestActivity"
274 android:theme="@style/MainTheme"
275 android:exported="true">
277 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkActivity"
278 android:theme="@style/EnhancedBookmarkDialog"
279 android:windowSoftInputMode="stateAlwaysHidden"
280 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
282 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkEditActivity"
283 android:theme="@style/EnhancedBookmarkDialogWhite"
284 android:label="@string/edit_bookmark"
285 android:windowSoftInputMode="stateHidden"
286 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
288 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkAddEditFolderActivity"
289 android:theme="@style/EnhancedBookmarkDialogWhite"
290 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
292 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkFolderSelectActivity"
293 android:theme="@style/EnhancedBookmarkDialogWhite"
294 android:windowSoftInputMode="stateAlwaysHidden"
295 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
297 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkSigninActivity"
298 android:theme="@style/EnhancedBookmarkDialogWhite"
299 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
303 Activities for webapps.
304 TODO(dfalcantara): Remove the aliases for the WebappActivities once we're pretty sure
305 that users don't have any instances of the original Activity still
308 <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappManager"
309 android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity">
311 <action android:name="com.google.android.apps.chrome.webapps.WebappManager.ACTION_START_WEBAPP" />
312 <category android:name="android.intent.category.DEFAULT" />
315 <activity android:name="org.chromium.chrome.browser.webapps.WebappActivity"
316 android:theme="@style/MainTheme"
317 android:label="@string/webapp_activity_title"
318 android:documentLaunchMode="intoExisting"
319 android:windowSoftInputMode="adjustResize"
320 android:persistableMode="persistNever"
321 android:hardwareAccelerated="true"
322 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
324 <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappActivity"
325 android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity"
326 android:label="@string/webapp_activity_title">
328 {% for i in range(10) %}
329 <activity android:name="org.chromium.chrome.browser.webapps.WebappActivity{{ i }}"
330 android:theme="@style/MainTheme"
331 android:icon="@mipmap/app_shortcut_icon"
332 android:label="@string/webapp_activity_title"
333 android:launchMode="singleTask"
334 android:windowSoftInputMode="adjustResize"
335 android:persistableMode="persistNever"
336 android:hardwareAccelerated="true"
337 android:taskAffinity="{{ manifest_package }}.webapps.WebappActivity{{ i }}"
338 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
340 <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappActivity{{ i }}"
341 android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity{{ i }}"
342 android:icon="@mipmap/app_shortcut_icon"
343 android:label="@string/webapp_activity_title">
347 <activity android:name="org.chromium.chrome.browser.media.remote.ExpandedControllerActivity"
348 android:theme="@style/MainTheme"
349 android:label="Chrome.ExpandedControllerActivity"
350 android:hardwareAccelerated="true"
351 android:launchMode="singleTask"
352 android:noHistory="true"
353 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
354 android:excludeFromRecents="true">
357 <activity android:name="org.chromium.chrome.browser.childaccounts.ResetDataActivity"
358 android:theme="@android:style/Theme.Translucent.NoTitleBar"
359 android:exported="true"
360 android:excludeFromRecents="true">
363 <activity android:name="org.chromium.chrome.browser.document.CipherKeyActivity"
364 android:launchMode="singleInstance"
365 android:theme="@android:style/Theme.Translucent.NoTitleBar"
366 android:excludeFromRecents="true">
369 <!-- Providers for chrome data. -->
370 <provider android:name="org.chromium.chrome.browser.ChromeBrowserProvider"
371 android:authorities="{{ manifest_package }}.ChromeBrowserProvider;{{ manifest_package }}.browser;{{ manifest_package }}"
372 android:exported="true">
373 <path-permission android:path="/bookmarks/search_suggest_query"
374 android:readPermission="android.permission.GLOBAL_SEARCH" />
377 <!-- Provider for FileProvider. -->
378 <provider android:name="org.chromium.chrome.browser.util.CompatibilityFileProvider"
379 android:authorities="{{ manifest_package }}.FileProvider"
380 android:exported="false"
381 android:grantUriPermissions="true">
382 <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
383 android:resource="@xml/file_paths" />
386 <!-- Sync adapter for browser invalidation. -->
387 <service android:name="org.chromium.chrome.browser.invalidation.ChromeBrowserSyncAdapterService"
388 android:exported="false">
390 <action android:name="android.content.SyncAdapter" />
392 <meta-data android:name="android.content.SyncAdapter"
393 android:resource="@xml/syncadapter" />
396 <!-- Broadcast receiver that will be notified of account changes -->
397 <receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
399 <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" />
403 <!-- Precache service. -->
404 <service android:name="org.chromium.chrome.browser.precache.PrecacheService"
405 android:exported="false" />
406 <receiver android:name="org.chromium.chrome.browser.precache.PrecacheServiceLauncher">
408 <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
409 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
410 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
414 <receiver android:name="org.chromium.chrome.browser.firstrun.ToSAckedReceiver"
415 android:permission="{{ manifest_package }}.TOS_ACKED">
417 <action android:name="{{ manifest_package }}.TOS_ACKED" />
421 <activity android:name="org.chromium.chrome.browser.bookmark.ShortcutActivity"
422 android:enabled="{{ 'true' if channel in ['stable', 'default'] else 'false' }}"
423 android:label="@string/bookmark_shortcut_name"
424 android:icon="@mipmap/bookmark_shortcut_icon"
425 android:theme="@style/ThemeWithActionBar"
426 android:hardwareAccelerated="true">
429 <action android:name="android.intent.action.CREATE_SHORTCUT" />
430 <category android:name="android.intent.category.DEFAULT" />
434 <receiver android:name="com.google.android.apps.chrome.appwidget.bookmarks.BookmarkThumbnailWidgetProvider"
435 android:enabled="{{ 'true' if channel in ['stable', 'default'] else 'false' }}"
436 android:label="@string/bookmarks">
438 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
439 <action android:name=".BOOKMARK_APPWIDGET_UPDATE" />
442 android:name="android.appwidget.provider"
443 android:resource="@xml/bookmark_thumbnail_widget_info" />
445 <service android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkThumbnailWidgetService"
446 android:permission="android.permission.BIND_REMOTEVIEWS"
447 android:exported="false" />
448 <receiver android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProxy"
449 android:exported="false" />
451 <!-- Receiver for GCM messages. Rebroadcasts them locally for sync and cloudprint. -->
452 <receiver android:name="com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener$GCMReceiver"
453 android:exported="true"
454 android:permission="com.google.android.c2dm.permission.SEND">
456 <action android:name="com.google.android.c2dm.intent.RECEIVE" />
457 <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
458 <category android:name="{{ manifest_package }}"/>
461 <service android:name="com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener"
462 android:exported="false">
463 <meta-data android:name="sender_ids"
464 android:value="cloudprint.c2dm@gmail.com,ipc.invalidation@gmail.com"/>
467 <!-- Notification service for sync. -->
468 <meta-data android:name="ipc.invalidation.ticl.listener_service_class"
469 android:value="org.chromium.components.invalidation.InvalidationClientService"/>
470 <service android:name="org.chromium.components.invalidation.InvalidationClientService"
471 android:exported="false">
473 <action android:name="com.google.ipc.invalidation.AUTH_TOKEN_REQUEST"/>
476 <service android:name="com.google.ipc.invalidation.ticl.android2.TiclService"
477 android:exported="false"/>
478 <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"
479 android:exported="false"/>
480 <receiver android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"
481 android:exported="false"/>
482 <receiver android:name="com.google.ipc.invalidation.external.client2.contrib.AndroidListener$AlarmReceiver"
483 android:exported="false"/>
485 <!-- Notification service multiplexed GCM receiver -->
486 <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService"
487 android:exported="false"
488 android:enabled="true"/>
489 <receiver android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService$Receiver"
490 android:exported="false">
492 <action android:name="com.google.ipc.invalidation.gcmmplex.EVENT" />
496 <!-- GCMDriver multiplexed GCM receiver -->
497 <service android:name="org.chromium.chrome.browser.services.gcm.GCMListener"
498 android:exported="false"/>
499 <receiver android:name="org.chromium.chrome.browser.services.gcm.GCMListener$Receiver"
500 android:exported="false">
502 <action android:name="com.google.ipc.invalidation.gcmmplex.EVENT" />
506 <!-- Android Notification service listener -->
507 <service android:name="org.chromium.chrome.browser.notifications.NotificationService"
508 android:exported="false"/>
509 <receiver android:name="org.chromium.chrome.browser.notifications.NotificationService$Receiver"
510 android:exported="false">
512 <action android:name="org.chromium.chrome.browser.notifications.CLICK_NOTIFICATION" />
513 <action android:name="org.chromium.chrome.browser.notifications.CLOSE_NOTIFICATION" />
517 <!-- Service Worker Background Sync service listener -->
518 <service android:name="org.chromium.content.browser.BackgroundSyncLauncherService"
519 android:exported="false" />
520 <receiver android:name="org.chromium.content.browser.BackgroundSyncLauncherService$Receiver">
522 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
526 <service android:name="org.chromium.chrome.browser.prerender.ChromePrerenderService"
527 android:exported="true"
528 tools:ignore="ExportedService" />
529 <service android:name="org.chromium.chrome.browser.customtabs.CustomTabsConnectionService"
530 android:exported="{{ 'true' if channel in ['dev', 'canary', 'default'] else 'false' }}"
531 tools:ignore="ExportedService">
533 <action android:name="android.intent.action.MAIN" />
534 <category android:name="android.intent.category.CUSTOM_TABS" />
537 <service android:name="org.chromium.chrome.browser.crash.MinidumpUploadService"
538 android:exported="false"/>
540 <service android:name="org.chromium.chrome.browser.omaha.OmahaClient"
541 android:exported="false"/>
543 <!-- The following service entries exist in order to allow us to
544 start more than one sandboxed process. -->
546 <!-- NOTE: If you change the value of "android:process" for the below services,
547 you also need to update kHelperProcessExecutableName in chrome_constants.cc. -->
548 {% set num_sandboxed_services = 20 %}
549 <meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES"
550 android:value="{{ num_sandboxed_services }}"/>
551 {% for i in range(num_sandboxed_services) %}
552 <service android:name="org.chromium.content.app.SandboxedProcessService{{ i }}"
553 android:process=":sandboxed_process{{ i }}"
554 android:permission="{{ manifest_package }}.permission.CHILD_SERVICE"
555 android:isolatedProcess="true"
556 android:exported="false" />
559 {% set num_privileged_services = 3 %}
560 <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES"
561 android:value="{{ num_privileged_services }}"/>
562 {% for i in range(num_privileged_services) %}
563 <service android:name="org.chromium.content.app.PrivilegedProcessService{{ i }}"
564 android:process=":privileged_process{{ i }}"
565 android:permission="{{ manifest_package }}.permission.CHILD_SERVICE"
566 android:isolatedProcess="false"
567 android:exported="false" />
570 <receiver android:name="org.chromium.chrome.browser.download.OpenDownloadReceiver">
572 <action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED"/>
576 <receiver android:name="org.chromium.base.PowerStatusReceiver">
578 <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
579 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
583 <service android:name="org.chromium.chrome.browser.media.remote.NotificationTransportControl$ListenerService" />
585 <!-- Receiver for lock screen input when casting -->
586 <receiver android:name="org.chromium.chrome.browser.media.remote.LockScreenTransportControl$MediaButtonIntentReceiver"/>
588 <service android:name="org.chromium.chrome.browser.media.MediaNotificationService"
589 android:exported="false"/>
591 <meta-data android:name="com.google.android.gms.version"
592 android:value="@integer/google_play_services_version" />
594 <meta-data android:name="org.chromium.content.browser.SMART_CLIP_PROVIDER"
595 android:value="org.chromium.content.browser.SmartClipProvider"/>
596 <meta-data android:name="org.chromium.components.service_tab_launcher.SERVICE_TAB_LAUNCHER"
597 android:value="org.chromium.chrome.browser.ChromeServiceTabLauncher" />
599 {% block extra_application_definitions %}
601 <!-- Media route controllers to use for remote playback (cast).
602 This is here, rather than in code, since it varies between upstream and downstream,
603 yet we need this list of classes in the notification service, which belongs upstream
604 and doesn't run the downstream startup code. The Cast code will, for each media element,
605 choose the first MediaRouteController that can play it, so the order of the list can be important.
606 The most specific MediaRouteControllers should be listed first, followed by more generic ones.
607 The downstream manifest replaces this block, and hence replaces the list of media route
608 controllers with its own list. -->
609 <meta-data android:name="org.chromium.content.browser.REMOTE_MEDIA_PLAYERS"
610 android:value="org.chromium.chrome.browser.media.remote.DefaultMediaRouteController"/>