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" />
27 Enable Bluetooth permission via uses-permission in tip of tree builds
28 only for ease of development on Android L and earlier. For consumer
29 channels use "runtime permission" uses-permission-sdk-m which provides
30 permission on Android M and later without a prompt.
32 {% if channel in ['default'] %}
33 <uses-permission android:name="android.permission.BLUETOOTH"/>
34 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
36 <uses-permission-sdk-m android:name="android.permission.BLUETOOTH"/>
37 <uses-permission-sdk-m android:name="android.permission.BLUETOOTH_ADMIN"/>
39 <uses-permission android:name="android.permission.CAMERA" />
40 <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
41 <uses-permission android:name="android.permission.INTERNET"/>
42 <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
43 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
44 <uses-permission android:name="android.permission.NFC"/>
45 <uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
46 <uses-permission android:name="android.permission.READ_SYNC_STATS"/>
47 <uses-permission android:name="android.permission.RECORD_AUDIO"/>
48 <uses-permission android:name="android.permission.USE_CREDENTIALS"/>
49 <uses-permission android:name="android.permission.VIBRATE"/>
50 <uses-permission android:name="android.permission.WAKE_LOCK"/>
51 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
52 <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS"/>
54 <permission android:name="{{ manifest_package }}.permission.CHILD_SERVICE" android:protectionLevel="signature" />
55 <permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" android:protectionLevel="signatureOrSystem" />
56 <permission android:name="{{ manifest_package }}.TOS_ACKED" android:protectionLevel="signatureOrSystem" />
57 <!-- Only chrome can receive the messages and registration result -->
58 <permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE"
59 android:protectionLevel="signature" />
60 <permission android:name="{{ manifest_package }}.permission.DEBUG"
61 android:label="Debug web pages"
62 android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
63 android:protectionLevel="signature" />
65 <uses-permission android:name="{{ manifest_package }}.permission.C2D_MESSAGE" />
66 <uses-permission android:name="{{ manifest_package }}.permission.READ_WRITE_BOOKMARK_FOLDERS" />
67 <uses-permission android:name="{{ manifest_package }}.TOS_ACKED" />
69 <uses-permission android:name="com.chrome.permission.DEVICE_EXTRAS" />
70 <uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
71 <uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
72 <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
73 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
75 {% block extra_uses_permissions %}
78 <!-- We may use GPS but it's not required -->
79 <uses-feature android:name="android.hardware.location.gps" android:required="false" />
80 <uses-feature android:name="android.hardware.camera" android:required="false" />
83 android.permission.RECORD_AUDIO makes this implied, however we don't
86 <uses-feature android:name="android.hardware.microphone" android:required="false" />
88 The app is usable with keyboard/mouse. This feature is implicitly true for
89 all applications and needs to be disabled manually.
91 <uses-feature android:name="android.hardware.touchscreen" android:required="false" />
93 <!-- Set android:largeHeap to "true" to allow more than the default
94 Java heap limit (32Mb on Nexus S, 48Mb on Xoom). -->
95 <application android:name="{% block application_name %}org.chromium.chrome.browser.ChromeApplication{% endblock %}"
96 android:icon="@mipmap/app_icon"
97 android:label="@string/app_name"
98 android:largeHeap="false"
99 android:allowBackup="false"
100 android:supportsRtl="true"
101 {% block extra_application_attributes %}{% endblock %}>
103 <!-- Samsung MultiWindow Support -->
104 <meta-data android:name="com.samsung.android.sdk.multiwindow.enable"
105 android:value="true" />
106 <meta-data android:name="com.samsung.android.sdk.multiwindow.multiinstance.enable"
107 android:value="true" />
108 <meta-data android:name="com.samsung.android.sdk.multiwindow.multiinstance.launchmode"
109 android:value="singleTask" />
110 <meta-data android:name="com.samsung.android.sdk.multiwindow.penwindow.enable"
111 android:value="true"/>
113 {% if channel in ['dev', 'canary', 'default'] %}
114 <meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
116 {% if configuration_policy == '1' %}
117 <meta-data android:name="android.content.APP_RESTRICTIONS"
118 android:resource="@xml/app_restrictions"/>
121 <!-- Note: All activities directly or indirectly derived from ChromeActivity
122 must specify android:hardwareAccelerated="false".
124 Since this activity (shown in the launcher) and the application
125 (shown in Android's Settings/Apps list) share the same label, we
126 do not specify one here to allow it to inherit from the app. -->
127 <activity android:name="org.chromium.chrome.browser.document.ChromeLauncherActivity"
128 android:theme="@android:style/Theme.Translucent.NoTitleBar">
130 <activity-alias android:name="com.google.android.apps.chrome.Main"
131 android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity"
132 android:exported="true">
134 <action android:name="android.intent.action.MAIN" />
135 <category android:name="android.intent.category.DEFAULT" />
136 <category android:name="android.intent.category.LAUNCHER" />
137 <category android:name="android.intent.category.BROWSABLE" />
138 <category android:name="android.intent.category.APP_BROWSER" />
139 <category android:name="android.intent.category.NOTIFICATION_PREFERENCES" />
140 {% if channel in ['dev', 'canary', 'default'] %}
141 <category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />
144 <!-- Matches the common case of intents with no MIME type.
145 Make sure to keep in sync with the next filter. -->
147 <action android:name="android.intent.action.VIEW" />
148 <category android:name="android.intent.category.DEFAULT" />
149 <category android:name="android.intent.category.BROWSABLE" />
150 {% if channel in ['stable', 'default'] %}<data android:scheme="googlechrome" />{% endif %}
151 <data android:scheme="http" />
152 <data android:scheme="https" />
153 <data android:scheme="about" />
154 <data android:scheme="javascript" />
156 <!-- Same filter as above but with MIME types. Intents that
157 do not specify a MIME type won't match. -->
159 <action android:name="android.intent.action.VIEW" />
160 <category android:name="android.intent.category.DEFAULT" />
161 <category android:name="android.intent.category.BROWSABLE" />
162 {% if channel in ['stable', 'default'] %}<data android:scheme="googlechrome" />{% endif %}
163 <data android:scheme="http" />
164 <data android:scheme="https" />
165 <data android:scheme="about" />
166 <data android:scheme="content" />
167 <data android:scheme="javascript" />
168 <data android:mimeType="text/html"/>
169 <data android:mimeType="text/plain"/>
170 <data android:mimeType="application/xhtml+xml"/>
172 <!-- MHTML support, used for snapshots -->
174 <action android:name="android.intent.action.VIEW" />
175 <category android:name="android.intent.category.DEFAULT" />
176 <data android:scheme="file" android:mimeType="multipart/related"/>
179 <action android:name="android.intent.action.MEDIA_SEARCH" />
180 <category android:name="android.intent.category.DEFAULT" />
183 <action android:name="android.speech.action.VOICE_SEARCH_RESULTS" />
184 <category android:name="android.intent.category.DEFAULT" />
187 <action android:name="android.nfc.action.NDEF_DISCOVERED" />
188 <category android:name="android.intent.category.DEFAULT" />
189 <data android:scheme="http" />
190 <data android:scheme="https" />
193 <action android:name="android.intent.action.SEARCH" />
196 <action android:name="com.sec.android.airview.HOVER" />
198 <meta-data android:name="android.app.searchable"
199 android:resource="@xml/searchable" />
201 <activity android:name="org.chromium.chrome.browser.document.DocumentActivity"
202 android:exported="false"
203 android:theme="@style/MainTheme"
204 android:windowSoftInputMode="adjustResize"
205 android:taskAffinity=""
206 android:persistableMode="persistAcrossReboots"
207 android:autoRemoveFromRecents="false"
208 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
209 android:hardwareAccelerated="false">
211 <activity-alias android:name="com.google.android.apps.chrome.document.DocumentActivity"
212 android:targetActivity="org.chromium.chrome.browser.document.DocumentActivity"
213 android:exported="false"/>
214 <activity android:name="org.chromium.chrome.browser.document.IncognitoDocumentActivity"
215 android:icon="@mipmap/incognito_app_icon"
216 android:exported="false"
217 android:theme="@style/IncognitoTheme"
218 android:windowSoftInputMode="adjustResize"
219 android:taskAffinity=""
220 android:persistableMode="persistNever"
221 android:autoRemoveFromRecents="false"
222 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
223 android:hardwareAccelerated="false">
225 <activity-alias android:name="com.google.android.apps.chrome.document.IncognitoDocumentActivity"
226 android:targetActivity="org.chromium.chrome.browser.document.IncognitoDocumentActivity"
227 android:exported="false"/>
228 <activity android:name="org.chromium.chrome.browser.customtabs.CustomTabActivity"
229 android:theme="@style/MainTheme"
230 android:exported="false"
231 android:windowSoftInputMode="adjustResize"
232 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
233 android:hardwareAccelerated="false">
235 <activity android:name="org.chromium.chrome.browser.ChromeTabbedActivity"
236 android:theme="@style/MainTheme"
237 android:exported="false"
238 android:windowBackground="@drawable/window_background"
239 android:windowSoftInputMode="adjustResize"
240 android:launchMode="singleTask"
241 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
242 android:hardwareAccelerated="false">
244 <activity android:name="org.chromium.chrome.browser.multiwindow.MultiInstanceChromeTabbedActivity"
245 android:theme="@style/MainTheme"
246 android:exported="false"
247 android:windowBackground="@drawable/window_background"
248 android:windowSoftInputMode="adjustResize"
249 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
250 android:hardwareAccelerated="false">
252 <activity android:name="org.chromium.chrome.browser.sync.ui.PassphraseActivity"
253 android:theme="@style/MainTheme"
254 android:autoRemoveFromRecents="true">
256 <activity android:name="org.chromium.chrome.browser.bookmark.ManageBookmarkActivity"
257 android:theme="@style/DialogWhenLargeHolo"
258 android:label="@string/save_bookmark"
259 android:windowSoftInputMode="stateHidden|adjustPan"
260 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
262 <action android:name="android.intent.action.VIEW" />
263 <category android:name="android.intent.category.DEFAULT" />
264 <category android:name="android.intent.category.BROWSABLE" />
265 <data android:scheme="chrome" android:host="editbookmark" />
268 <!-- This is sent by the BrowserProviderProxy as a result of
269 calls to android.provider.Browser.saveBookmark(). -->
270 <action android:name="{{ manifest_package }}.ADDBOOKMARK" />
271 <category android:name="android.intent.category.DEFAULT" />
274 <activity android:name="org.chromium.chrome.browser.firstrun.FirstRunActivity"
275 android:theme="@style/DialogWhenLarge"
276 android:label="@string/fre_label"
277 android:launchMode="singleTop"
278 android:windowSoftInputMode="stateHidden|adjustPan"
279 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
281 <activity android:name="org.chromium.chrome.browser.preferences.Preferences"
282 android:theme="@style/PreferencesTheme"
283 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
284 android:label="@string/preferences"
285 android:exported="false">
287 <activity android:name="org.chromium.chrome.browser.EmbedContentViewActivity"
288 android:theme="@style/ThemeWithActionBar"
289 android:hardwareAccelerated="false"
290 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
292 <activity android:name="org.chromium.chrome.browser.prerender.PrerenderAPITestActivity"
293 android:theme="@style/MainTheme"
294 android:exported="true">
296 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkActivity"
297 android:theme="@style/EnhancedBookmarkDialog"
298 android:windowSoftInputMode="stateAlwaysHidden"
299 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
301 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkEditActivity"
302 android:theme="@style/EnhancedBookmarkDialogWhite"
303 android:windowSoftInputMode="stateHidden"
304 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
306 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkAddEditFolderActivity"
307 android:theme="@style/EnhancedBookmarkDialogWhite"
308 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
310 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkFolderSelectActivity"
311 android:theme="@style/EnhancedBookmarkDialogWhite"
312 android:windowSoftInputMode="stateAlwaysHidden"
313 android:label="@string/enhanced_bookmark_choose_folder"
314 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
316 <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkSigninActivity"
317 android:theme="@style/EnhancedBookmarkDialogWhite"
318 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
322 Activities for webapps.
323 TODO(dfalcantara): Remove the aliases for the WebappActivities once we're pretty sure
324 that users don't have any instances of the original Activity still
327 <activity android:name="org.chromium.chrome.browser.webapps.WebappLauncherActivity"
328 android:theme="@android:style/Theme.NoDisplay"
329 android:taskAffinity=""
330 android:excludeFromRecents="true">
332 <action android:name="com.google.android.apps.chrome.webapps.WebappManager.ACTION_START_WEBAPP" />
333 <category android:name="android.intent.category.DEFAULT" />
336 <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappManager"
337 android:targetActivity="org.chromium.chrome.browser.webapps.WebappLauncherActivity">
339 <activity android:name="org.chromium.chrome.browser.webapps.WebappActivity"
340 android:theme="@style/WebappTheme"
341 android:label="@string/webapp_activity_title"
342 android:documentLaunchMode="intoExisting"
343 android:windowSoftInputMode="adjustResize"
344 android:persistableMode="persistNever"
345 android:hardwareAccelerated="false"
346 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
348 <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappActivity"
349 android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity"
350 android:label="@string/webapp_activity_title">
352 {% for i in range(10) %}
353 <activity android:name="org.chromium.chrome.browser.webapps.WebappActivity{{ i }}"
354 android:theme="@style/WebappTheme"
355 android:icon="@mipmap/app_shortcut_icon"
356 android:label="@string/webapp_activity_title"
357 android:launchMode="singleTask"
358 android:windowSoftInputMode="adjustResize"
359 android:persistableMode="persistNever"
360 android:hardwareAccelerated="false"
361 android:taskAffinity="{{ manifest_package }}.webapps.WebappActivity{{ i }}"
362 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
364 <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappActivity{{ i }}"
365 android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity{{ i }}"
366 android:icon="@mipmap/app_shortcut_icon"
367 android:label="@string/webapp_activity_title">
371 <activity android:name="org.chromium.chrome.browser.media.remote.ExpandedControllerActivity"
372 android:theme="@style/MainTheme"
373 android:label="Chrome.ExpandedControllerActivity"
374 android:hardwareAccelerated="true"
375 android:launchMode="singleTask"
376 android:noHistory="true"
377 android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
378 android:excludeFromRecents="true">
381 <activity android:name="org.chromium.chrome.browser.childaccounts.ResetDataActivity"
382 android:theme="@android:style/Theme.Translucent.NoTitleBar"
383 android:exported="true"
384 android:excludeFromRecents="true">
387 <!-- This activity is started along with IncognitoDocumentActivity, so it also must
388 disable hardware acceleration. Besides, it doesn't have any UI. -->
389 <activity android:name="org.chromium.chrome.browser.document.CipherKeyActivity"
390 android:launchMode="singleInstance"
391 android:theme="@android:style/Theme.Translucent.NoTitleBar"
392 android:excludeFromRecents="true"
393 android:hardwareAccelerated="false">
396 <!-- This activity is used to restart the main Chrome process. Should never be exported. -->
397 <activity android:name="org.chromium.chrome.browser.BrowserRestartActivity"
398 android:launchMode="singleInstance"
399 android:exported="false"
400 android:theme="@android:style/Theme.NoDisplay"
401 android:excludeFromRecents="true"
402 android:process=":browser_restart_process">
405 <!-- Providers for chrome data. -->
406 <provider android:name="org.chromium.chrome.browser.ChromeBrowserProvider"
407 android:authorities="{{ manifest_package }}.ChromeBrowserProvider;{{ manifest_package }}.browser;{{ manifest_package }}"
408 android:exported="true">
409 <path-permission android:path="/bookmarks/search_suggest_query"
410 android:readPermission="android.permission.GLOBAL_SEARCH" />
413 <!-- Provider for FileProvider. -->
414 <provider android:name="org.chromium.chrome.browser.util.CompatibilityFileProvider"
415 android:authorities="{{ manifest_package }}.FileProvider"
416 android:exported="false"
417 android:grantUriPermissions="true">
418 <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
419 android:resource="@xml/file_paths" />
422 <!-- Sync adapter for browser invalidation. -->
423 <service android:name="org.chromium.chrome.browser.invalidation.ChromeBrowserSyncAdapterService"
424 android:exported="false">
426 <action android:name="android.content.SyncAdapter" />
428 <meta-data android:name="android.content.SyncAdapter"
429 android:resource="@xml/syncadapter" />
432 <!-- Broadcast receiver that will be notified of account changes -->
433 <receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
435 <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" />
439 <!-- Precache service. -->
440 <service android:name="org.chromium.chrome.browser.precache.PrecacheService"
441 android:exported="false" />
442 <receiver android:name="org.chromium.chrome.browser.precache.PrecacheServiceLauncher">
444 <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
445 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
446 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
450 <receiver android:name="org.chromium.chrome.browser.firstrun.ToSAckedReceiver"
451 android:permission="{{ manifest_package }}.TOS_ACKED">
453 <action android:name="{{ manifest_package }}.TOS_ACKED" />
457 <activity android:name="org.chromium.chrome.browser.bookmark.ShortcutActivity"
458 android:enabled="{{ 'true' if channel in ['stable', 'default'] else 'false' }}"
459 android:label="@string/bookmark_shortcut_name"
460 android:icon="@mipmap/bookmark_shortcut_icon"
461 android:theme="@style/ThemeWithActionBar"
462 android:hardwareAccelerated="true">
465 <action android:name="android.intent.action.CREATE_SHORTCUT" />
466 <category android:name="android.intent.category.DEFAULT" />
470 <receiver android:name="com.google.android.apps.chrome.appwidget.bookmarks.BookmarkThumbnailWidgetProvider"
471 android:enabled="{{ 'true' if channel in ['stable', 'default'] else 'false' }}"
472 android:label="@string/bookmarks">
474 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
475 <action android:name=".BOOKMARK_APPWIDGET_UPDATE" />
478 android:name="android.appwidget.provider"
479 android:resource="@xml/bookmark_thumbnail_widget_info" />
481 <service android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkThumbnailWidgetService"
482 android:permission="android.permission.BIND_REMOTEVIEWS"
483 android:exported="false" />
484 <receiver android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProxy"
485 android:exported="false" />
487 <!-- Receiver for GCM messages. -->
488 <receiver android:name="com.google.android.gms.gcm.GcmReceiver"
489 android:exported="true"
490 android:permission="com.google.android.c2dm.permission.SEND">
492 <action android:name="com.google.android.c2dm.intent.RECEIVE" />
493 <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
494 <category android:name="{{ manifest_package }}"/>
497 <!-- GcmTaskService for registration for Invalidations. -->
498 <service android:name="com.google.ipc.invalidation.ticl.android2.channel.GcmRegistrationTaskService"
499 android:exported="true"
500 android:permission="com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE" >
502 <action android:name="com.google.android.gms.gcm.ACTION_TASK_READY"/>
505 <!-- InstanceIDListenerService for token refresh events from GCM. -->
506 <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidInstanceIDListenerService"
507 android:exported="false">
509 <action android:name="com.google.android.gms.iid.InstanceID"/>
512 <!-- GcmListenerService for messages from GCM. -->
513 <service android:name="org.chromium.chrome.browser.services.gcm.ChromeGcmListenerService"
514 android:exported="false" >
516 <action android:name="com.google.android.c2dm.intent.RECEIVE" />
519 <meta-data android:name="ipc.invalidation.ticl.gcm_upstream_service_class"
520 android:value="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender" />
521 <service android:name="org.chromium.chrome.browser.services.gcm.InvalidationGcmUpstreamSender"
522 android:exported="false"/>
524 <!-- Notification service for sync. -->
525 <meta-data android:name="ipc.invalidation.ticl.listener_service_class"
526 android:value="org.chromium.components.invalidation.InvalidationClientService"/>
527 <service android:name="org.chromium.components.invalidation.InvalidationClientService"
528 android:exported="false">
530 <action android:name="com.google.ipc.invalidation.AUTH_TOKEN_REQUEST"/>
533 <service android:name="com.google.ipc.invalidation.ticl.android2.TiclService"
534 android:exported="false"/>
535 <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"
536 android:exported="false"/>
537 <receiver android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"
538 android:exported="false"/>
539 <receiver android:name="com.google.ipc.invalidation.external.client2.contrib.AndroidListener$AlarmReceiver"
540 android:exported="false"/>
542 <!-- Android Notification service listener -->
543 <service android:name="org.chromium.chrome.browser.notifications.NotificationService"
544 android:exported="false"/>
545 <receiver android:name="org.chromium.chrome.browser.notifications.NotificationService$Receiver"
546 android:exported="false">
548 <action android:name="org.chromium.chrome.browser.notifications.CLICK_NOTIFICATION" />
549 <action android:name="org.chromium.chrome.browser.notifications.CLOSE_NOTIFICATION" />
553 <!-- Service Worker Background Sync service listener -->
554 <service android:name="org.chromium.content.browser.BackgroundSyncLauncherService"
555 android:exported="false" />
556 <receiver android:name="org.chromium.content.browser.BackgroundSyncLauncherService$Receiver">
558 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
562 <service android:name="org.chromium.chrome.browser.prerender.ChromePrerenderService"
563 android:exported="true"
564 tools:ignore="ExportedService" />
565 <service android:name="org.chromium.chrome.browser.customtabs.CustomTabsConnectionService"
566 android:exported="true"
567 tools:ignore="ExportedService">
569 <action android:name="android.support.customtabs.action.CustomTabsService" />
572 <service android:name="org.chromium.chrome.browser.crash.LogcatExtractionService"
573 android:exported="false"/>
574 <service android:name="org.chromium.chrome.browser.crash.MinidumpPreparationService"
575 android:exported="false"/>
576 <service android:name="org.chromium.chrome.browser.crash.MinidumpUploadService"
577 android:exported="false"/>
579 <service android:name="org.chromium.chrome.browser.omaha.OmahaClient"
580 android:exported="false"/>
582 <!-- The following service entries exist in order to allow us to
583 start more than one sandboxed process. -->
585 <!-- NOTE: If you change the value of "android:process" for the below services,
586 you also need to update kHelperProcessExecutableName in chrome_constants.cc. -->
587 {% set num_sandboxed_services = 20 %}
588 <meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES"
589 android:value="{{ num_sandboxed_services }}"/>
590 {% for i in range(num_sandboxed_services) %}
591 <service android:name="org.chromium.content.app.SandboxedProcessService{{ i }}"
592 android:process=":sandboxed_process{{ i }}"
593 android:permission="{{ manifest_package }}.permission.CHILD_SERVICE"
594 android:isolatedProcess="true"
595 android:exported="false" />
598 {% set num_privileged_services = 3 %}
599 <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES"
600 android:value="{{ num_privileged_services }}"/>
601 {% for i in range(num_privileged_services) %}
602 <service android:name="org.chromium.content.app.PrivilegedProcessService{{ i }}"
603 android:process=":privileged_process{{ i }}"
604 android:permission="{{ manifest_package }}.permission.CHILD_SERVICE"
605 android:isolatedProcess="false"
606 android:exported="false" />
609 <receiver android:name="org.chromium.chrome.browser.download.OpenDownloadReceiver">
611 <action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED"/>
615 <receiver android:name="org.chromium.base.PowerStatusReceiver">
617 <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
618 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
622 <service android:name="org.chromium.chrome.browser.media.remote.NotificationTransportControl$ListenerService" />
624 <!-- Receiver for lock screen input when casting -->
625 <receiver android:name="org.chromium.chrome.browser.media.remote.LockScreenTransportControl$MediaButtonIntentReceiver"/>
627 <service android:name="org.chromium.chrome.browser.media.MediaCaptureNotificationService"
628 android:exported="false"/>
629 <service android:name="org.chromium.chrome.browser.media.ui.NotificationMediaPlaybackControls$ListenerService"
630 android:exported="false">
632 <action android:name="android.intent.action.MEDIA_BUTTON" />
636 <receiver android:name="org.chromium.chrome.browser.media.ui.MediaButtonReceiver">
638 <action android:name="android.intent.action.MEDIA_BUTTON" />
643 <meta-data android:name="com.google.android.gms.version"
644 android:value="@integer/google_play_services_version" />
646 <meta-data android:name="org.chromium.content.browser.SMART_CLIP_PROVIDER"
647 android:value="org.chromium.content.browser.SmartClipProvider"/>
648 <meta-data android:name="org.chromium.components.service_tab_launcher.SERVICE_TAB_LAUNCHER"
649 android:value="org.chromium.chrome.browser.ChromeServiceTabLauncher" />
651 {% block extra_application_definitions %}
653 <!-- Media route controllers to use for remote playback (cast).
654 This is here, rather than in code, since it varies between upstream and downstream,
655 yet we need this list of classes in the notification service, which belongs upstream
656 and doesn't run the downstream startup code. The Cast code will, for each media element,
657 choose the first MediaRouteController that can play it, so the order of the list can be important.
658 The most specific MediaRouteControllers should be listed first, followed by more generic ones.
659 The downstream manifest replaces this block, and hence replaces the list of media route
660 controllers with its own list. -->
661 <meta-data android:name="org.chromium.content.browser.REMOTE_MEDIA_PLAYERS"
662 android:value="org.chromium.chrome.browser.media.remote.DefaultMediaRouteController"/>