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.CAMERA" />
26 <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
27 <uses-permission android:name="android.permission.INTERNET"/>
28 <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
29 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
30 <uses-permission android:name="android.permission.NFC"/>
31 <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
32 <uses-permission android:name="android.permission.READ_SYNC_STATS"/>
33 <uses-permission android:name="android.permission.RECORD_AUDIO"/>
34 <uses-permission android:name="android.permission.USE_CREDENTIALS"/>
35 <uses-permission android:name="android.permission.VIBRATE"/>
36 <uses-permission android:name="android.permission.WAKE_LOCK"/>
37 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
38 <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
40 <permission android:name="{{ manifest_package }}.permission.CHILD_SERVICE" android:protectionLevel="signature" />
41 <permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem" />
42 <permission android:name="{{ manifest_package }}.TOS_ACKED" android:protectionLevel="signatureOrSystem" />
43 <!-- Only chrome can receive the messages and registration result -->
44 <permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE"
45 android:protectionLevel="signature" />
46 <permission android:name="{{ manifest_package }}.permission.DEBUG"
47 android:label="Debug web pages"
48 android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
49 android:protectionLevel="signature" />
51 <uses-permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE" />
52 <uses-permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" />
53 <uses-permission android:name="{{ manifest_package }}.TOS_ACKED" />
55 <uses-permission android:name="com.chrome.permission.DEVICE_EXTRAS" />
56 <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
57 <uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
58 <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
59 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
61 {% block extra_uses_permissions %}
64 <!-- We may use GPS but it's not required -->
65 <uses-feature android:name="android.hardware.location.gps" android:required="false" />
66 <uses-feature android:name="android.hardware.camera" android:required="false" />
69 android.permission.RECORD_AUDIO makes this implied, however we don't
72 <uses-feature android:name="android.hardware.microphone" android:required="false" />
74 The app is usable with keyboard/mouse. This feature is implicitly true for
75 all applications and needs to be disabled manually.
77 <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
79 <!-- Set android:largeHeap to "true" to allow more than the default
80 Java heap limit (32Mb on Nexus S, 48Mb on Xoom). -->
81 <application android:name="{% block application_name %}org.chromium.chrome.browser.ChromeApplication{% endblock %}"
82 android:icon="@mipmap/app_icon"
83 android:label="@string/app_name"
84 android:largeHeap="false"
85 android:allowBackup="false"
86 android:supportsRtl="true"
87 {% block extra_application_attributes %}{% endblock %}>
89 <!-- Samsung MultiWindow Support -->
90 <meta-data android:name="com.samsung.android.sdk.multiwindow.enable"
91 android:value="true" />
92 <meta-data android:name="com.samsung.android.sdk.multiwindow.multiinstance.enable"
93 android:value="true" />
94 <meta-data android:name="com.samsung.android.sdk.multiwindow.multiinstance.launchmode"
95 android:value="singleTask" />
96 <meta-data android:name="com.samsung.android.sdk.multiwindow.penwindow.enable"
97 android:value="true"/>
99 {% if channel in ['dev', 'canary', 'default'] %}
100 <meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
102 {% if configuration_policy == '1' %}
103 <meta-data android:name="android.content.APP_RESTRICTIONS"
104 android:resource="@xml/app_restrictions"/>
107 <!-- Note: Set android:hardwareAccelerated to "false" in the ".Main"
108 activity below to go into software, browser tiling mode.
110 Since this activity (shown in the launcher) and the application
111 (shown in Android's Settings/Apps list) share the same label, we
112 do not specify one here to allow it to inherit from the app. -->
113 <activity android:name="org.chromium.chrome.browser.document.ChromeLauncherActivity"
114 android:theme="@android:style/Theme.Translucent.NoTitleBar">
116 <activity-alias android:name="com.google.android.apps.chrome.Main"
117 android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity"
118 android:exported="true">
120 <action android:name="android.intent.action.MAIN" />
121 <category android:name="android.intent.category.DEFAULT" />
122 <category android:name="android.intent.category.LAUNCHER" />
123 <category android:name="android.intent.category.BROWSABLE" />
124 <category android:name="android.intent.category.APP_BROWSER" />
125 <category android:name="android.intent.category.NOTIFICATION_PREFERENCES" />
126 {% if channel in ['dev', 'canary', 'default'] %}
127 <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />
130 <!-- Matches the common case of intents with no MIME type.
131 Make sure to keep in sync with the next filter. -->
133 <action android:name="android.intent.action.VIEW" />
134 <category android:name="android.intent.category.DEFAULT" />
135 <category android:name="android.intent.category.BROWSABLE" />
136 {% if channel in ['stable', 'default'] %}<data android:scheme="googlechrome" />{% endif %}
137 <data android:scheme="http" />
138 <data android:scheme="https" />
139 <data android:scheme="about" />
140 <data android:scheme="javascript" />
142 <!-- Same filter as above but with MIME types. Intents that
143 do not specify a MIME type won't match. -->
145 <action android:name="android.intent.action.VIEW" />
146 <category android:name="android.intent.category.DEFAULT" />
147 <category android:name="android.intent.category.BROWSABLE" />
148 {% if channel in ['stable', 'default'] %}<data android:scheme="googlechrome" />{% endif %}
149 <data android:scheme="http" />
150 <data android:scheme="https" />
151 <data android:scheme="about" />
152 <data android:scheme="content" />
153 <data android:scheme="javascript" />
154 <data android:mimeType="text/html"/>
155 <data android:mimeType="text/plain"/>
156 <data android:mimeType="application/xhtml+xml"/>
158 <!-- MHTML support, used for snapshots -->
160 <action android:name="android.intent.action.VIEW" />
161 <category android:name="android.intent.category.DEFAULT" />
162 <data android:scheme="file" android:mimeType="multipart/related"/>
165 <action android:name="android.intent.action.MEDIA_SEARCH" />
166 <category android:name="android.intent.category.DEFAULT" />
169 <action android:name="android.speech.action.VOICE_SEARCH_RESULTS" />
170 <category android:name="android.intent.category.DEFAULT" />
173 <action android:name="android.nfc.action.NDEF_DISCOVERED" />
174 <category android:name="android.intent.category.DEFAULT" />
175 <data android:scheme="http" />
176 <data android:scheme="https" />
179 <action android:name="android.intent.action.SEARCH" />
182 <action android:name="com.sec.android.airview.HOVER" />
184 <meta-data android:name="android.app.searchable"
185 android:resource="@xml/searchable" />
187 <activity android:name="org.chromium.chrome.browser.document.DocumentActivity"
188 android:exported="false"
189 android:theme="@style/MainTheme"
190 android:windowSoftInputMode="adjustResize"
191 android:taskAffinity=""
192 android:persistableMode="persistAcrossReboots"
193 android:autoRemoveFromRecents="false"
194 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
195 android:hardwareAccelerated="true">
197 <activity-alias android:name="com.google.android.apps.chrome.document.DocumentActivity"
198 android:targetActivity="org.chromium.chrome.browser.document.DocumentActivity"
199 android:exported="false"/>
200 <activity android:name="org.chromium.chrome.browser.document.IncognitoDocumentActivity"
201 android:icon="@mipmap/incognito_app_icon"
202 android:exported="false"
203 android:theme="@style/IncognitoTheme"
204 android:windowSoftInputMode="adjustResize"
205 android:taskAffinity=""
206 android:persistableMode="persistNever"
207 android:autoRemoveFromRecents="false"
208 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
209 android:hardwareAccelerated="true">
211 <activity-alias android:name="com.google.android.apps.chrome.document.IncognitoDocumentActivity"
212 android:targetActivity="org.chromium.chrome.browser.document.IncognitoDocumentActivity"
213 android:exported="false"/>
214 <activity android:name="org.chromium.chrome.browser.customtabs.CustomTabActivity"
215 android:theme="@style/MainTheme"
216 android:exported="false"
217 android:windowSoftInputMode="adjustResize"
218 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
219 android:hardwareAccelerated="true">
221 <activity android:name="org.chromium.chrome.browser.ChromeTabbedActivity"
222 android:theme="@style/MainTheme"
223 android:exported="false"
224 android:windowBackground="@drawable/window_background"
225 android:windowSoftInputMode="adjustResize"
226 android:launchMode="singleTask"
227 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
228 android:hardwareAccelerated="true">
230 <activity android:name="org.chromium.chrome.browser.multiwindow.MultiInstanceChromeTabbedActivity"
231 android:theme="@style/MainTheme"
232 android:exported="false"
233 android:windowBackground="@drawable/window_background"
234 android:windowSoftInputMode="adjustResize"
235 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
236 android:hardwareAccelerated="true">
238 <activity android:name="org.chromium.chrome.browser.sync.ui.PassphraseActivity"
239 android:theme="@style/MainTheme"
240 android:autoRemoveFromRecents="true">
242 <activity android:name="org.chromium.chrome.browser.bookmark.ManageBookmarkActivity"
243 android:theme="@style/DialogWhenLargeHolo"
244 android:label="@string/save_bookmark"
245 android:windowSoftInputMode="stateHidden|adjustPan"
246 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
248 <action android:name="android.intent.action.VIEW" />
249 <category android:name="android.intent.category.DEFAULT" />
250 <category android:name="android.intent.category.BROWSABLE" />
251 <data android:scheme="chrome" android:host="editbookmark" />
254 <!-- This is sent by the BrowserProviderProxy as a result of
255 calls to android.provider.Browser.saveBookmark(). -->
256 <action android:name="{{ manifest_package }}.ADDBOOKMARK" />
257 <category android:name="android.intent.category.DEFAULT" />
260 <activity android:name="org.chromium.chrome.browser.firstrun.FirstRunActivity"
261 android:theme="@style/DialogWhenLarge"
262 android:label="@string/fre_label"
263 android:launchMode="singleTop"
264 android:windowSoftInputMode="stateHidden|adjustPan"
265 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
267 <activity android:name="org.chromium.chrome.browser.preferences.Preferences"
268 android:theme="@style/PreferencesTheme"
269 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
270 android:label="@string/preferences"
271 android:exported="false">
273 <activity android:name="org.chromium.chrome.browser.EmbedContentViewActivity"
274 android:theme="@style/ThemeWithActionBar"
275 android:hardwareAccelerated="true"
276 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
278 <activity android:name="org.chromium.chrome.browser.prerender.PrerenderAPITestActivity"
279 android:theme="@style/MainTheme"
280 android:exported="true">
282 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkActivity"
283 android:theme="@style/EnhancedBookmarkDialog"
284 android:windowSoftInputMode="stateAlwaysHidden"
285 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
287 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkEditActivity"
288 android:theme="@style/EnhancedBookmarkDialogWhite"
289 android:label="@string/edit_bookmark"
290 android:windowSoftInputMode="stateHidden"
291 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
293 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkAddEditFolderActivity"
294 android:theme="@style/EnhancedBookmarkDialogWhite"
295 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
297 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkFolderSelectActivity"
298 android:theme="@style/EnhancedBookmarkDialogWhite"
299 android:windowSoftInputMode="stateAlwaysHidden"
300 android:label="@string/enhanced_bookmark_choose_folder"
301 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
303 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkSigninActivity"
304 android:theme="@style/EnhancedBookmarkDialogWhite"
305 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
309 Activities for webapps.
310 TODO(dfalcantara): Remove the aliases for the WebappActivities once we're pretty sure
311 that users don't have any instances of the original Activity still
314 <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappManager"
315 android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity">
317 <action android:name="com.google.android.apps.chrome.webapps.WebappManager.ACTION_START_WEBAPP" />
318 <category android:name="android.intent.category.DEFAULT" />
321 <activity android:name="org.chromium.chrome.browser.webapps.WebappActivity"
322 android:theme="@style/MainTheme"
323 android:label="@string/webapp_activity_title"
324 android:documentLaunchMode="intoExisting"
325 android:windowSoftInputMode="adjustResize"
326 android:persistableMode="persistNever"
327 android:hardwareAccelerated="true"
328 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
330 <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappActivity"
331 android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity"
332 android:label="@string/webapp_activity_title">
334 {% for i in range(10) %}
335 <activity android:name="org.chromium.chrome.browser.webapps.WebappActivity{{ i }}"
336 android:theme="@style/MainTheme"
337 android:icon="@mipmap/app_shortcut_icon"
338 android:label="@string/webapp_activity_title"
339 android:launchMode="singleTask"
340 android:windowSoftInputMode="adjustResize"
341 android:persistableMode="persistNever"
342 android:hardwareAccelerated="true"
343 android:taskAffinity="{{ manifest_package }}.webapps.WebappActivity{{ i }}"
344 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
346 <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappActivity{{ i }}"
347 android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity{{ i }}"
348 android:icon="@mipmap/app_shortcut_icon"
349 android:label="@string/webapp_activity_title">
353 <activity android:name="org.chromium.chrome.browser.media.remote.ExpandedControllerActivity"
354 android:theme="@style/MainTheme"
355 android:label="Chrome.ExpandedControllerActivity"
356 android:hardwareAccelerated="true"
357 android:launchMode="singleTask"
358 android:noHistory="true"
359 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
360 android:excludeFromRecents="true">
363 <activity android:name="org.chromium.chrome.browser.childaccounts.ResetDataActivity"
364 android:theme="@android:style/Theme.Translucent.NoTitleBar"
365 android:exported="true"
366 android:excludeFromRecents="true">
369 <activity android:name="org.chromium.chrome.browser.document.CipherKeyActivity"
370 android:launchMode="singleInstance"
371 android:theme="@android:style/Theme.Translucent.NoTitleBar"
372 android:excludeFromRecents="true">
375 <!-- Providers for chrome data. -->
376 <provider android:name="org.chromium.chrome.browser.ChromeBrowserProvider"
377 android:authorities="{{ manifest_package }}.ChromeBrowserProvider;{{ manifest_package }}.browser;{{ manifest_package }}"
378 android:exported="true">
379 <path-permission android:path="/bookmarks/search_suggest_query"
380 android:readPermission="android.permission.GLOBAL_SEARCH" />
383 <!-- Provider for FileProvider. -->
384 <provider android:name="org.chromium.chrome.browser.util.CompatibilityFileProvider"
385 android:authorities="{{ manifest_package }}.FileProvider"
386 android:exported="false"
387 android:grantUriPermissions="true">
388 <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
389 android:resource="@xml/file_paths" />
392 <!-- Sync adapter for browser invalidation. -->
393 <service android:name="org.chromium.chrome.browser.invalidation.ChromeBrowserSyncAdapterService"
394 android:exported="false">
396 <action android:name="android.content.SyncAdapter" />
398 <meta-data android:name="android.content.SyncAdapter"
399 android:resource="@xml/syncadapter" />
402 <!-- Broadcast receiver that will be notified of account changes -->
403 <receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
405 <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" />
409 <!-- Precache service. -->
410 <service android:name="org.chromium.chrome.browser.precache.PrecacheService"
411 android:exported="false" />
412 <receiver android:name="org.chromium.chrome.browser.precache.PrecacheServiceLauncher">
414 <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
415 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
416 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
420 <receiver android:name="org.chromium.chrome.browser.firstrun.ToSAckedReceiver"
421 android:permission="{{ manifest_package }}.TOS_ACKED">
423 <action android:name="{{ manifest_package }}.TOS_ACKED" />
427 <activity android:name="org.chromium.chrome.browser.bookmark.ShortcutActivity"
428 android:enabled="{{ 'true' if channel in ['stable', 'default'] else 'false' }}"
429 android:label="@string/bookmark_shortcut_name"
430 android:icon="@mipmap/bookmark_shortcut_icon"
431 android:theme="@style/ThemeWithActionBar"
432 android:hardwareAccelerated="true">
435 <action android:name="android.intent.action.CREATE_SHORTCUT" />
436 <category android:name="android.intent.category.DEFAULT" />
440 <receiver android:name="com.google.android.apps.chrome.appwidget.bookmarks.BookmarkThumbnailWidgetProvider"
441 android:enabled="{{ 'true' if channel in ['stable', 'default'] else 'false' }}"
442 android:label="@string/bookmarks">
444 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
445 <action android:name=".BOOKMARK_APPWIDGET_UPDATE" />
448 android:name="android.appwidget.provider"
449 android:resource="@xml/bookmark_thumbnail_widget_info" />
451 <service android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkThumbnailWidgetService"
452 android:permission="android.permission.BIND_REMOTEVIEWS"
453 android:exported="false" />
454 <receiver android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProxy"
455 android:exported="false" />
457 <!-- Receiver for GCM messages. Rebroadcasts them locally for sync and cloudprint. -->
458 <receiver android:name="com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener$GCMReceiver"
459 android:exported="true"
460 android:permission="com.google.android.c2dm.permission.SEND">
462 <action android:name="com.google.android.c2dm.intent.RECEIVE" />
463 <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
464 <category android:name="{{ manifest_package }}"/>
467 <service android:name="com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener"
468 android:exported="false">
469 <meta-data android:name="sender_ids"
470 android:value="cloudprint.c2dm@gmail.com,ipc.invalidation@gmail.com"/>
473 <!-- Notification service for sync. -->
474 <meta-data android:name="ipc.invalidation.ticl.listener_service_class"
475 android:value="org.chromium.components.invalidation.InvalidationClientService"/>
476 <service android:name="org.chromium.components.invalidation.InvalidationClientService"
477 android:exported="false">
479 <action android:name="com.google.ipc.invalidation.AUTH_TOKEN_REQUEST"/>
482 <service android:name="com.google.ipc.invalidation.ticl.android2.TiclService"
483 android:exported="false"/>
484 <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"
485 android:exported="false"/>
486 <receiver android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"
487 android:exported="false"/>
488 <receiver android:name="com.google.ipc.invalidation.external.client2.contrib.AndroidListener$AlarmReceiver"
489 android:exported="false"/>
491 <!-- Notification service multiplexed GCM receiver -->
492 <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService"
493 android:exported="false"
494 android:enabled="true"/>
495 <receiver android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService$Receiver"
496 android:exported="false">
498 <action android:name="com.google.ipc.invalidation.gcmmplex.EVENT" />
502 <!-- GCMDriver multiplexed GCM receiver -->
503 <service android:name="org.chromium.chrome.browser.services.gcm.GCMListener"
504 android:exported="false"/>
505 <receiver android:name="org.chromium.chrome.browser.services.gcm.GCMListener$Receiver"
506 android:exported="false">
508 <action android:name="com.google.ipc.invalidation.gcmmplex.EVENT" />
512 <!-- Android Notification service listener -->
513 <service android:name="org.chromium.chrome.browser.notifications.NotificationService"
514 android:exported="false"/>
515 <receiver android:name="org.chromium.chrome.browser.notifications.NotificationService$Receiver"
516 android:exported="false">
518 <action android:name="org.chromium.chrome.browser.notifications.CLICK_NOTIFICATION" />
519 <action android:name="org.chromium.chrome.browser.notifications.CLOSE_NOTIFICATION" />
523 <!-- Service Worker Background Sync service listener -->
524 <service android:name="org.chromium.content.browser.BackgroundSyncLauncherService"
525 android:exported="false" />
526 <receiver android:name="org.chromium.content.browser.BackgroundSyncLauncherService$Receiver">
528 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
532 <service android:name="org.chromium.chrome.browser.prerender.ChromePrerenderService"
533 android:exported="true"
534 tools:ignore="ExportedService" />
535 <service android:name="org.chromium.chrome.browser.customtabs.CustomTabsConnectionService"
536 android:exported="{{ 'true' if channel in ['dev', 'canary', 'default'] else 'false' }}"
537 tools:ignore="ExportedService">
539 <action android:name="android.intent.action.MAIN" />
540 <category android:name="android.intent.category.CUSTOM_TABS" />
543 <service android:name="org.chromium.chrome.browser.crash.LogcatExtractionService"
544 android:exported="false"/>
545 <service android:name="org.chromium.chrome.browser.crash.MinidumpPreparationService"
546 android:exported="false"/>
547 <service android:name="org.chromium.chrome.browser.crash.MinidumpUploadService"
548 android:exported="false"/>
550 <service android:name="org.chromium.chrome.browser.omaha.OmahaClient"
551 android:exported="false"/>
553 <!-- The following service entries exist in order to allow us to
554 start more than one sandboxed process. -->
556 <!-- NOTE: If you change the value of "android:process" for the below services,
557 you also need to update kHelperProcessExecutableName in chrome_constants.cc. -->
558 {% set num_sandboxed_services = 20 %}
559 <meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES"
560 android:value="{{ num_sandboxed_services }}"/>
561 {% for i in range(num_sandboxed_services) %}
562 <service android:name="org.chromium.content.app.SandboxedProcessService{{ i }}"
563 android:process=":sandboxed_process{{ i }}"
564 android:permission="{{ manifest_package }}.permission.CHILD_SERVICE"
565 android:isolatedProcess="true"
566 android:exported="false" />
569 {% set num_privileged_services = 3 %}
570 <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES"
571 android:value="{{ num_privileged_services }}"/>
572 {% for i in range(num_privileged_services) %}
573 <service android:name="org.chromium.content.app.PrivilegedProcessService{{ i }}"
574 android:process=":privileged_process{{ i }}"
575 android:permission="{{ manifest_package }}.permission.CHILD_SERVICE"
576 android:isolatedProcess="false"
577 android:exported="false" />
580 <receiver android:name="org.chromium.chrome.browser.download.OpenDownloadReceiver">
582 <action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED"/>
586 <receiver android:name="org.chromium.base.PowerStatusReceiver">
588 <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
589 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
593 <service android:name="org.chromium.chrome.browser.media.remote.NotificationTransportControl$ListenerService" />
595 <!-- Receiver for lock screen input when casting -->
596 <receiver android:name="org.chromium.chrome.browser.media.remote.LockScreenTransportControl$MediaButtonIntentReceiver"/>
598 <service android:name="org.chromium.chrome.browser.media.MediaNotificationService"
599 android:exported="false"/>
600 <service android:name="org.chromium.chrome.browser.media.ui.NotificationMediaPlaybackControls$ListenerService"
601 android:exported="false"/>
603 <meta-data android:name="com.google.android.gms.version"
604 android:value="@integer/google_play_services_version" />
606 <meta-data android:name="org.chromium.content.browser.SMART_CLIP_PROVIDER"
607 android:value="org.chromium.content.browser.SmartClipProvider"/>
608 <meta-data android:name="org.chromium.components.service_tab_launcher.SERVICE_TAB_LAUNCHER"
609 android:value="org.chromium.chrome.browser.ChromeServiceTabLauncher" />
611 {% block extra_application_definitions %}
613 <!-- Media route controllers to use for remote playback (cast).
614 This is here, rather than in code, since it varies between upstream and downstream,
615 yet we need this list of classes in the notification service, which belongs upstream
616 and doesn't run the downstream startup code. The Cast code will, for each media element,
617 choose the first MediaRouteController that can play it, so the order of the list can be important.
618 The most specific MediaRouteControllers should be listed first, followed by more generic ones.
619 The downstream manifest replaces this block, and hence replaces the list of media route
620 controllers with its own list. -->
621 <meta-data android:name="org.chromium.content.browser.REMOTE_MEDIA_PLAYERS"
622 android:value="org.chromium.chrome.browser.media.remote.DefaultMediaRouteController"/>