Rename hosted to custom tabs
[chromium-blink-merge.git] / chrome / android / java_staging / AndroidManifest.xml
blob17a0d0a5f8421d57851dfe7cb738cf100e7bf888
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. -->
6 <!--
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.
11 -->
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="22" />
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 %}
63     {% endblock %}
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" />
69     <!--
70       android.permission.RECORD_AUDIO makes this implied, however we don't
71       require a microphone.
72     -->
73     <uses-feature android:name="android.hardware.microphone" android:required="false" />
74     <!--
75       The app is usable with keyboard/mouse. This feature is implicitly true for
76       all applications and needs to be disabled manually.
77     -->
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.ChromeMobileApplication{% 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">
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" />
101         {% endif %}
102         {% if configuration_policy == '1' %}
103         <meta-data android:name="android.content.APP_RESTRICTIONS"
104             android:resource="@xml/app_restrictions"/>
105         {% endif %}
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">
115         </activity>
116         <activity-alias android:name="com.google.android.apps.chrome.Main"
117             android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity"
118             android:exported="true">
119             <intent-filter>
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" />
128                 {% endif %}
129             </intent-filter>
130             <!-- Matches the common case of intents with no MIME type.
131                  Make sure to keep in sync with the next filter.  -->
132             <intent-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" />
141             </intent-filter>
142             <!-- Same filter as above but with MIME types.  Intents that
143                  do not specify a MIME type won't match. -->
144             <intent-filter>
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"/>
157             </intent-filter>
158             <!-- MHTML support, used for snapshots -->
159             <intent-filter>
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"/>
163             </intent-filter>
164             <intent-filter>
165                 <action android:name="android.intent.action.MEDIA_SEARCH" />
166                 <category android:name="android.intent.category.DEFAULT" />
167             </intent-filter>
168             <intent-filter>
169                 <action android:name="android.speech.action.VOICE_SEARCH_RESULTS" />
170                 <category android:name="android.intent.category.DEFAULT" />
171             </intent-filter>
172             <intent-filter>
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" />
177             </intent-filter>
178             <intent-filter>
179                 <action android:name="android.intent.action.SEARCH" />
180             </intent-filter>
181             <intent-filter>
182                 <action android:name="com.sec.android.airview.HOVER" />
183             </intent-filter>
184             <meta-data android:name="android.app.searchable"
185                 android:resource="@xml/searchable" />
186         </activity-alias>
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">
196         </activity>
197         <activity android:name="org.chromium.chrome.browser.document.IncognitoDocumentActivity"
198             android:icon="@mipmap/incognito_app_icon"
199             android:exported="false"
200             android:theme="@style/IncognitoTheme"
201             android:windowSoftInputMode="adjustResize"
202             android:taskAffinity=""
203             android:persistableMode="persistNever"
204             android:autoRemoveFromRecents="false"
205             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
206             android:hardwareAccelerated="true">
207         </activity>
208         <activity android:name="org.chromium.chrome.browser.customtabs.CustomTabActivity"
209             android:theme="@style/MainTheme"
210             android:exported="false"
211             android:windowSoftInputMode="adjustResize"
212             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
213             android:hardwareAccelerated="true">
214         </activity>
215         <activity android:name="org.chromium.chrome.browser.ChromeTabbedActivity"
216              android:theme="@style/MainTheme"
217              android:exported="false"
218              android:windowBackground="@drawable/window_background"
219              android:windowSoftInputMode="adjustResize"
220              android:launchMode="singleTask"
221              android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
222              android:hardwareAccelerated="true">
223         </activity>
224         <activity android:name="org.chromium.chrome.browser.multiwindow.MultiInstanceChromeTabbedActivity"
225             android:theme="@style/MainTheme"
226             android:exported="false"
227             android:windowBackground="@drawable/window_background"
228             android:windowSoftInputMode="adjustResize"
229             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
230             android:hardwareAccelerated="true">
231         </activity>
232         <activity android:name="org.chromium.chrome.browser.sync.ui.PassphraseActivity"
233             android:theme="@style/MainTheme"
234             android:autoRemoveFromRecents="true">
235         </activity>
236         <activity android:name="org.chromium.chrome.browser.bookmark.ManageBookmarkActivity"
237             android:theme="@style/DialogWhenLargeHolo"
238             android:label="@string/save_bookmark"
239             android:windowSoftInputMode="stateHidden|adjustPan"
240             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
241             <intent-filter>
242                 <action android:name="android.intent.action.VIEW" />
243                 <category android:name="android.intent.category.DEFAULT" />
244                 <category android:name="android.intent.category.BROWSABLE" />
245                 <data android:scheme="chrome" android:host="editbookmark" />
246             </intent-filter>
247             <intent-filter>
248                 <!-- This is sent by the BrowserProviderProxy as a result of
249                      calls to android.provider.Browser.saveBookmark(). -->
250                 <action android:name="{{ manifest_package }}.ADDBOOKMARK" />
251                 <category android:name="android.intent.category.DEFAULT" />
252             </intent-filter>
253         </activity>
254         <activity android:name="org.chromium.chrome.browser.firstrun.FirstRunActivityStaging"
255             android:theme="@style/DialogWhenLarge"
256             android:label="@string/fre_label"
257             android:launchMode="singleTop"
258             android:windowSoftInputMode="stateHidden|adjustPan"
259             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
260         </activity>
261         <activity android:name="org.chromium.chrome.browser.preferences.PreferencesStaging"
262             android:theme="@style/PreferencesTheme"
263             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
264             android:label="@string/preferences"
265             android:exported="false">
266         </activity>
267         <activity android:name="org.chromium.chrome.browser.EmbedContentViewActivity"
268             android:theme="@style/ThemeWithActionBar"
269             android:hardwareAccelerated="true"
270             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
271         </activity>
272         <activity android:name="org.chromium.chrome.browser.prerender.PrerenderAPITestActivity"
273             android:theme="@style/MainTheme"
274             android:exported="true">
275         </activity>
276         <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkActivity"
277             android:theme="@style/EnhancedBookmarkDialogWhite"
278             android:windowSoftInputMode="stateHidden"
279             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
280         </activity>
281         <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkDetailActivity"
282             android:theme="@style/EnhancedBookmarkDialogWhite"
283             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
284         </activity>
285         <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkAddEditFolderActivity"
286             android:theme="@style/EnhancedBookmarkDialogWhite"
287             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
288         </activity>
289         <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkFolderSelectActivity"
290             android:theme="@style/EnhancedBookmarkDialogWhite"
291             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
292         </activity>
293         <activity android:name="org.chromium.chrome.browser.enhancedbookmarks.EnhancedBookmarkSigninActivity"
294             android:theme="@style/EnhancedBookmarkDialogWhite"
295             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc" >
296         </activity>
298         <!--
299             Activities for webapps.
300             TODO(dfalcantara): Remove the aliases for the WebappActivities once we're pretty sure
301                                that users don't have any instances of the original Activity still
302                                running.
303         -->
304         <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappManager"
305             android:targetActivity="org.chromium.chrome.browser.document.ChromeLauncherActivity">
306             <intent-filter>
307                 <action android:name="com.google.android.apps.chrome.webapps.WebappManager.ACTION_START_WEBAPP" />
308                 <category android:name="android.intent.category.DEFAULT" />
309             </intent-filter>
310         </activity-alias>
311         <activity android:name="org.chromium.chrome.browser.webapps.WebappActivity"
312             android:theme="@style/MainTheme"
313             android:label="@string/webapp_activity_title"
314             android:documentLaunchMode="intoExisting"
315             android:persistableMode="persistNever"
316             android:hardwareAccelerated="true"
317             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
318         </activity>
319         <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappActivity"
320             android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity"
321             android:label="@string/webapp_activity_title">
322         </activity-alias>
323         {% for i in range(10) %}
324         <activity android:name="org.chromium.chrome.browser.webapps.WebappActivity{{ i }}"
325             android:theme="@style/MainTheme"
326             android:icon="@mipmap/app_shortcut_icon"
327             android:label="@string/webapp_activity_title"
328             android:launchMode="singleTask"
329             android:windowSoftInputMode="adjustResize"
330             android:persistableMode="persistNever"
331             android:hardwareAccelerated="true"
332             android:taskAffinity="{{ manifest_package }}.webapps.WebappActivity{{ i }}"
333             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc">
334         </activity>
335         <activity-alias android:name="com.google.android.apps.chrome.webapps.WebappActivity{{ i }}"
336             android:targetActivity="org.chromium.chrome.browser.webapps.WebappActivity{{ i }}"
337             android:icon="@mipmap/app_shortcut_icon"
338             android:label="@string/webapp_activity_title">
339         </activity-alias>
340         {% endfor %}
342         <activity android:name="org.chromium.chrome.browser.media.remote.ExpandedControllerActivity"
343             android:theme="@style/MainTheme"
344             android:label="Chrome.ExpandedControllerActivity"
345             android:hardwareAccelerated="true"
346             android:launchMode="singleTask"
347             android:noHistory="true"
348             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|mcc|mnc"
349             android:excludeFromRecents="true">
350         </activity>
352         <activity android:name="org.chromium.chrome.browser.document.CipherKeyActivity"
353             android:launchMode="singleInstance"
354             android:theme="@android:style/Theme.Translucent.NoTitleBar"
355             android:excludeFromRecents="true">
356         </activity>
358         <!-- Providers for chrome data. -->
359         <provider android:name="org.chromium.chrome.browser.ChromeBrowserProviderStaging"
360             android:authorities="{{ manifest_package }}.ChromeBrowserProvider;{{ manifest_package }}.browser;{{ manifest_package }}"
361             android:exported="true">
362             <path-permission android:path="/bookmarks/search_suggest_query"
363                     android:readPermission="android.permission.GLOBAL_SEARCH" />
364         </provider>
366         <!-- Provider for FileProvider. -->
367         <provider android:name="org.chromium.chrome.browser.util.CompatibilityFileProvider"
368             android:authorities="{{ manifest_package }}.FileProvider"
369             android:exported="false"
370             android:grantUriPermissions="true">
371             <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
372                 android:resource="@xml/file_paths" />
373         </provider>
375         <!-- Sync adapter for browser sync. -->
376         <service android:name="org.chromium.chrome.browser.sync.ChromeBrowserSyncAdapterService"
377             android:exported="false">
378             <intent-filter>
379                 <action android:name="android.content.SyncAdapter" />
380             </intent-filter>
381             <meta-data android:name="android.content.SyncAdapter"
382                        android:resource="@xml/syncadapter" />
383         </service>
385         <!-- Broadcast receiver that will be notified of account changes -->
386         <receiver android:name="org.chromium.chrome.browser.services.AccountsChangedReceiver">
387             <intent-filter>
388                 <action android:name="android.accounts.LOGIN_ACCOUNTS_CHANGED" />
389             </intent-filter>
390         </receiver>
392         <!-- Precache service. -->
393         <service android:name="org.chromium.chrome.browser.precache.PrecacheService"
394             android:exported="false" />
395         <receiver android:name="org.chromium.chrome.browser.precache.PrecacheServiceLauncher">
396             <intent-filter>
397                 <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
398                 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
399                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
400             </intent-filter>
401         </receiver>
403         <receiver android:name="org.chromium.chrome.browser.firstrun.ToSAckedReceiver"
404             android:permission="{{ manifest_package }}.TOS_ACKED">
405             <intent-filter>
406                 <action android:name="{{ manifest_package }}.TOS_ACKED" />
407             </intent-filter>
408         </receiver>
410         <activity android:name="org.chromium.chrome.browser.bookmark.ShortcutActivity"
411             android:enabled="{{ 'true' if channel in ['stable', 'default'] else 'false' }}"
412             android:label="@string/bookmark_shortcut_name"
413             android:icon="@mipmap/bookmark_shortcut_icon"
414             android:theme="@style/ThemeWithActionBar"
415             android:hardwareAccelerated="true">
417             <intent-filter>
418                 <action android:name="android.intent.action.CREATE_SHORTCUT" />
419                 <category android:name="android.intent.category.DEFAULT" />
420             </intent-filter>
421         </activity>
423         <receiver android:name="com.google.android.apps.chrome.appwidget.bookmarks.BookmarkThumbnailWidgetProvider"
424             android:enabled="{{ 'true' if channel in ['stable', 'default'] else 'false' }}"
425             android:label="@string/bookmarks">
426             <intent-filter>
427                 <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
428                 <action android:name=".BOOKMARK_APPWIDGET_UPDATE" />
429             </intent-filter>
430             <meta-data
431                 android:name="android.appwidget.provider"
432                 android:resource="@xml/bookmark_thumbnail_widget_info" />
433         </receiver>
434         <service android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkThumbnailWidgetService"
435             android:permission="android.permission.BIND_REMOTEVIEWS"
436             android:exported="false" />
437         <receiver android:name="org.chromium.chrome.browser.bookmarkswidget.BookmarkWidgetProxy"
438             android:exported="false" />
440         <!-- Receiver for GCM messages. Rebroadcasts them locally for sync and cloudprint. -->
441         <receiver android:name="com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener$GCMReceiver"
442             android:exported="true"
443             android:permission="com.google.android.c2dm.permission.SEND">
444             <intent-filter>
445                 <action android:name="com.google.android.c2dm.intent.RECEIVE" />
446                 <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
447                <category android:name="{{ manifest_package }}"/>
448             </intent-filter>
449         </receiver>
450         <service android:name="com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener"
451             android:exported="false">
452             <meta-data android:name="sender_ids"
453                 android:value="cloudprint.c2dm@gmail.com,ipc.invalidation@gmail.com"/>
454         </service>
456         <!-- Notification service for sync. -->
457         <meta-data android:name="ipc.invalidation.ticl.listener_service_class"
458             android:value="org.chromium.components.invalidation.InvalidationClientService"/>
459         <service android:name="org.chromium.components.invalidation.InvalidationClientService"
460             android:exported="false">
461             <intent-filter>
462               <action android:name="com.google.ipc.invalidation.AUTH_TOKEN_REQUEST"/>
463             </intent-filter>
464         </service>
465         <service android:name="com.google.ipc.invalidation.ticl.android2.TiclService"
466             android:exported="false"/>
467         <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"
468             android:exported="false"/>
469         <receiver android:name="com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"
470             android:exported="false"/>
471         <receiver android:name="com.google.ipc.invalidation.external.client2.contrib.AndroidListener$AlarmReceiver"
472             android:exported="false"/>
474         <!-- Notification service multiplexed GCM receiver -->
475         <service android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService"
476             android:exported="false"
477             android:enabled="true"/>
478         <receiver android:name="com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService$Receiver"
479             android:exported="false">
480             <intent-filter>
481                 <action android:name="com.google.ipc.invalidation.gcmmplex.EVENT" />
482             </intent-filter>
483         </receiver>
485         <!-- GCMDriver multiplexed GCM receiver -->
486         <service android:name="org.chromium.chrome.browser.services.gcm.GCMListener"
487             android:exported="false"/>
488         <receiver android:name="org.chromium.chrome.browser.services.gcm.GCMListener$Receiver"
489             android:exported="false">
490             <intent-filter>
491                 <action android:name="com.google.ipc.invalidation.gcmmplex.EVENT" />
492             </intent-filter>
493         </receiver>
495         <!-- Android Notification service listener -->
496         <service android:name="org.chromium.chrome.browser.notifications.NotificationService"
497             android:exported="false"/>
498         <receiver android:name="org.chromium.chrome.browser.notifications.NotificationService$Receiver"
499             android:exported="false">
500             <intent-filter>
501                 <action android:name="org.chromium.chrome.browser.notifications.CLICK_NOTIFICATION" />
502                 <action android:name="org.chromium.chrome.browser.notifications.CLOSE_NOTIFICATION" />
503             </intent-filter>
504         </receiver>
506         <!-- Service Worker Background Sync service listener -->
507         <service android:name="org.chromium.content.browser.BackgroundSyncLauncherService"
508             android:exported="false" />
509         <receiver android:name="org.chromium.content.browser.BackgroundSyncLauncherService$Receiver">
510             <intent-filter>
511                 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
512             </intent-filter>
513         </receiver>
515         <service android:name="org.chromium.chrome.browser.prerender.ChromePrerenderService"
516             android:exported="true"
517             tools:ignore="ExportedService" />
518         <service android:name="org.chromium.chrome.browser.customtabs.ChromeConnectionService"
519              android:exported="{{ 'true' if channel in ['dev', 'canary', 'default'] else 'false' }}"
520              tools:ignore="ExportedService">
521             <intent-filter>
522               <action android:name="android.intent.action.MAIN" />
523               <category android:name="android.intent.category.CUSTOM_TABS" />
524             </intent-filter>
525         </service>
526         <service android:name="org.chromium.chrome.browser.crash.MinidumpUploadService"
527             android:exported="false"/>
529         <service android:name="org.chromium.chrome.browser.omaha.OmahaClient"
530             android:exported="false"/>
532         <!-- The following service entries exist in order to allow us to
533              start more than one sandboxed process. -->
535         <!-- NOTE: If you change the value of "android:process" for the below services,
536              you also need to update kHelperProcessExecutableName in chrome_constants.cc. -->
537         {% set num_sandboxed_services = 20 %}
538         <meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES"
539             android:value="{{ num_sandboxed_services }}"/>
540         {% for i in range(num_sandboxed_services) %}
541         <service android:name="org.chromium.content.app.SandboxedProcessService{{ i }}"
542             android:process=":sandboxed_process{{ i }}"
543             android:permission="{{ manifest_package }}.permission.CHILD_SERVICE"
544             android:isolatedProcess="true"
545             android:exported="false" />
546         {% endfor %}
548         {% set num_privileged_services = 3 %}
549         <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES"
550             android:value="{{ num_privileged_services }}"/>
551         {% for i in range(num_privileged_services) %}
552         <service android:name="org.chromium.content.app.PrivilegedProcessService{{ i }}"
553             android:process=":privileged_process{{ i }}"
554             android:permission="{{ manifest_package }}.permission.CHILD_SERVICE"
555             android:isolatedProcess="false"
556             android:exported="false" />
557         {% endfor %}
559         <receiver android:name="org.chromium.chrome.browser.download.OpenDownloadReceiver">
560             <intent-filter>
561                 <action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED"/>
562             </intent-filter>
563         </receiver>
565         <receiver android:name="org.chromium.base.PowerStatusReceiver">
566             <intent-filter>
567                 <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
568                 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
569             </intent-filter>
570         </receiver>
572         <service android:name="org.chromium.chrome.browser.media.remote.NotificationTransportControl$ListenerService" />
574         <!--  Receiver for lock screen input when casting -->
575         <receiver android:name="org.chromium.chrome.browser.media.remote.LockScreenTransportControl$MediaButtonIntentReceiver"/>
577         <service android:name="org.chromium.chrome.browser.media.MediaNotificationService"
578             android:exported="false"/>
580         <meta-data android:name="com.google.android.gms.version"
581             android:value="@integer/google_play_services_version" />
583         <meta-data android:name="org.chromium.content.browser.SMART_CLIP_PROVIDER"
584             android:value="org.chromium.content.browser.SmartClipProvider"/>
585         <meta-data android:name="org.chromium.components.service_tab_launcher.SERVICE_TAB_LAUNCHER"
586                    android:value="org.chromium.chrome.browser.ChromeServiceTabLauncher" />
588         {% block extra_application_definitions %}
589         {% endblock %}
590     </application>
591 </manifest>