1 <?xml version=
"1.0" encoding=
"utf-8"?>
3 <!-- Copyright 2014 The Chromium Authors. All rights reserved.
5 Use of this source code is governed by a BSD-style license that can be
6 found in the LICENSE file.
9 <manifest xmlns:
android=
"http://schemas.android.com/apk/res/android"
10 package=
"org.chromium.chrome.shell">
12 <uses-sdk android:
minSdkVersion=
"16" android:
targetSdkVersion=
"22" />
13 <uses-permission android:
name=
"android.permission.ACCESS_COARSE_LOCATION"/>
14 <uses-permission android:
name=
"android.permission.ACCESS_FINE_LOCATION"/>
15 <uses-permission android:
name=
"android.permission.ACCESS_NETWORK_STATE"/>
16 <uses-permission android:
name=
"android.permission.BLUETOOTH"/>
17 <uses-permission android:
name=
"android.permission.BLUETOOTH_ADMIN"/>
18 <uses-feature android:
name=
"android.hardware.bluetooth_le" android:
required=
"false"/>
19 <uses-permission android:
name=
"android.permission.CAMERA" />
20 <uses-permission android:
name=
"android.permission.GET_ACCOUNTS"/>
21 <uses-permission android:
name=
"android.permission.INTERNET"/>
22 <uses-permission android:
name=
"android.permission.MODIFY_AUDIO_SETTINGS"/>
23 <uses-permission android:
name=
"android.permission.NFC"/>
24 <uses-permission android:
name=
"android.permission.RECORD_AUDIO"/>
25 <uses-permission android:
name=
"android.permission.VIBRATE"/>
26 <uses-permission android:
name=
"android.permission.WAKE_LOCK"/>
27 <uses-permission android:
name=
"android.permission.READ_SYNC_SETTINGS"/>
28 <uses-permission android:
name=
"android.permission.WRITE_SYNC_SETTINGS" />
29 <uses-permission android:
name=
"android.permission.USE_CREDENTIALS" />
30 <uses-permission android:
name=
"android.permission.WRITE_EXTERNAL_STORAGE"/>
31 <!-- Only Chrome can receive the messages and registration result for GCM -->
32 <permission android:
name=
"org.chromium.chrome.shell.permission.C2D_MESSAGE"
33 android:
protectionLevel=
"signature" />
34 <uses-permission android:
name=
"org.chromium.chrome.shell.permission.C2D_MESSAGE" />
35 <uses-permission android:
name=
"com.google.android.c2dm.permission.RECEIVE" />
37 <permission android:
name=
"org.chromium.chrome.shell.permission.DEBUG"
38 android:
label=
"Debug web pages in Chrome Shell"
39 android:
permissionGroup=
"android.permission-group.DEVELOPMENT_TOOLS"
40 android:
protectionLevel=
"signature" />
42 <application android:
name=
"org.chromium.chrome.shell.ChromeShellApplication"
43 android:
icon=
"@mipmap/app_icon"
44 android:
label=
"@string/app_name"
45 android:
supportsRtl=
"true">
46 <activity android:
name=
"org.chromium.chrome.shell.ChromeShellActivity"
47 android:
launchMode=
"singleTask"
48 android:
theme=
"@style/MainTheme"
49 android:
configChanges=
"orientation|keyboardHidden|keyboard|screenSize"
50 android:
hardwareAccelerated=
"true">
52 <action android:
name=
"android.intent.action.MAIN" />
53 <category android:
name=
"android.intent.category.LAUNCHER" />
54 <category android:
name=
"android.intent.category.NOTIFICATION_PREFERENCES" />
57 <activity android:
name=
"org.chromium.sync.test.util.MockGrantCredentialsPermissionActivity"
58 android:
exported=
"true">
60 <action android:
name=
"android.intent.action.VIEW" />
61 <category android:
name=
"android.intent.category.DEFAULT" />
64 <activity android:
theme=
"@style/PreferencesTheme"
65 android:
name=
"org.chromium.chrome.shell.preferences.ChromeShellPreferences"
66 android:
configChanges=
"orientation|keyboardHidden|keyboard|screenSize"
67 android:
label=
"@string/preferences"
68 android:
exported=
"false">
70 <activity android:
name=
"org.chromium.chrome.browser.sync.ui.PassphraseActivity"
71 android:
theme=
"@style/PreferencesTheme">
74 <!-- The following service entries exist in order to allow us to
75 start more than one sandboxed process. -->
77 <!-- NOTE: If you change the value of "android:process" for the below services,
78 you also need to update kHelperProcessExecutableName in chrome_constants.cc. -->
79 {% set num_sandboxed_services =
20 %}
80 <meta-data android:
name=
"org.chromium.content.browser.NUM_SANDBOXED_SERVICES"
81 android:
value=
"{{ num_sandboxed_services }}"/>
82 {% for i in range(num_sandboxed_services) %}
83 <service android:
name=
"org.chromium.content.app.SandboxedProcessService{{ i }}"
84 android:
process=
":sandboxed_process{{ i }}"
85 android:
isolatedProcess=
"true"
86 android:
exported=
"false" />
89 {% set num_privileged_services =
3 %}
90 <meta-data android:
name=
"org.chromium.content.browser.NUM_PRIVILEGED_SERVICES"
91 android:
value=
"{{ num_privileged_services }}"/>
92 {% for i in range(num_privileged_services) %}
93 <service android:
name=
"org.chromium.content.app.PrivilegedProcessService{{ i }}"
94 android:
process=
":privileged_process{{ i }}"
95 android:
isolatedProcess=
"false"
96 android:
exported=
"false" />
99 <!-- Receiver for GCM messages. Rebroadcasts them locally for sync. -->
100 <receiver android:
exported=
"true"
101 android:
name=
"com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener$GCMReceiver"
102 android:
permission=
"com.google.android.c2dm.permission.SEND">
104 <action android:
name=
"com.google.android.c2dm.intent.RECEIVE" />
105 <action android:
name=
"com.google.android.c2dm.intent.REGISTRATION" />
106 <category android:
name=
"org.chromium.chrome.shell"/>
109 <service android:
exported=
"false"
110 android:
name=
"com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener">
111 <meta-data android:
name=
"sender_ids"
112 android:
value=
"cloudprint.c2dm@gmail.com,ipc.invalidation@gmail.com"/>
115 <!-- Notification service for sync. -->
116 <meta-data android:
name=
"ipc.invalidation.ticl.listener_service_class"
117 android:
value=
"org.chromium.components.invalidation.InvalidationClientService"/>
118 <service android:
name=
"org.chromium.components.invalidation.InvalidationClientService"
119 android:
exported=
"false">
121 <action android:
name=
"com.google.ipc.invalidation.AUTH_TOKEN_REQUEST"/>
124 <service android:
exported=
"false"
125 android:
name=
"com.google.ipc.invalidation.ticl.android2.TiclService"/>
126 <service android:
exported=
"false"
127 android:
name=
"com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"/>
128 <receiver android:
exported=
"false"
129 android:
name=
"com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"/>
130 <receiver android:
exported=
"false"
131 android:
name=
"com.google.ipc.invalidation.external.client.contrib.AndroidListener$AlarmReceiver"/>
133 <!-- Notification service multiplexed GCM receiver -->
134 <service android:
exported=
"false"
135 android:
name=
"com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService"
136 android:
enabled=
"true"/>
137 <receiver android:
exported=
"false"
138 android:
name=
"com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService$Receiver">
140 <action android:
name=
"com.google.ipc.invalidation.gcmmplex.EVENT" />
144 <!-- GCMDriver multiplexed GCM receiver -->
145 <service android:
exported=
"false"
146 android:
name=
"org.chromium.chrome.browser.services.gcm.GCMListener"/>
147 <receiver android:
exported=
"false"
148 android:
name=
"org.chromium.chrome.browser.services.gcm.GCMListener$Receiver">
150 <action android:
name=
"com.google.ipc.invalidation.gcmmplex.EVENT" />
154 <!-- Android Notification service listener -->
155 <service android:
exported=
"false"
156 android:
name=
"org.chromium.chrome.browser.notifications.NotificationService"/>
157 <receiver android:
exported=
"false"
158 android:
name=
"org.chromium.chrome.browser.notifications.NotificationService$Receiver">
160 <action android:
name=
"org.chromium.chrome.browser.notifications.CLICK_NOTIFICATION" />
161 <action android:
name=
"org.chromium.chrome.browser.notifications.CLOSE_NOTIFICATION" />
165 <!-- Service Worker Background Sync service listener -->
166 <service android:
name=
"org.chromium.content.browser.BackgroundSyncLauncherService"
167 android:
exported=
"false" />
168 <receiver android:
name=
"org.chromium.content.browser.BackgroundSyncLauncherService$Receiver">
170 <action android:
name=
"android.net.conn.CONNECTIVITY_CHANGE" />
174 <provider android:
name=
"org.chromium.chrome.browser.ChromeBrowserProvider"
175 android:
authorities=
"org.chromium.chrome.shell"
176 android:
exported=
"true" />
178 <!-- Provider for FileProvider. -->
179 <provider android:
name=
"android.support.v4.content.FileProvider"
180 android:
authorities=
"org.chromium.chrome.shell.FileProvider"
181 android:
exported=
"false"
182 android:
grantUriPermissions=
"true">
183 <meta-data android:
name=
"android.support.FILE_PROVIDER_PATHS"
184 android:
resource=
"@xml/file_paths" />
187 <!-- Sync adapter for browser invalidation. -->
188 <service android:
exported=
"false"
189 android:
name=
"org.chromium.chrome.shell.invalidation.ChromeShellSyncAdapterService">
191 <action android:
name=
"android.content.SyncAdapter" />
193 <meta-data android:
name=
"android.content.SyncAdapter"
194 android:
resource=
"@xml/syncadapter" />
197 <!-- Broadcast receiver that will be notified of account changes. -->
198 <receiver android:
name=
"org.chromium.chrome.shell.signin.AccountsChangedReceiver">
200 <action android:
name=
"android.accounts.LOGIN_ACCOUNTS_CHANGED" />
204 <meta-data android:
name=
"org.chromium.content.browser.SMART_CLIP_PROVIDER"
205 android:
value=
"org.chromium.content.browser.SmartClipProvider" />
206 <meta-data android:
name=
"org.chromium.components.service_tab_launcher.SERVICE_TAB_LAUNCHER"
207 android:
value=
"org.chromium.chrome.shell.ChromeShellServiceTabLauncher" />
209 <!-- Precache service. -->
210 <service android:
name=
"org.chromium.chrome.browser.precache.PrecacheService"
211 android:
exported=
"false" />
212 <receiver android:
name=
"org.chromium.chrome.browser.precache.PrecacheServiceLauncher">
214 <action android:
name=
"android.intent.action.ACTION_POWER_CONNECTED"/>
215 <action android:
name=
"android.intent.action.ACTION_POWER_DISCONNECTED"/>
216 <action android:
name=
"android.net.conn.CONNECTIVITY_CHANGE" />
220 <!-- Service for the media playback control notification -->
221 <service android:
name=
"org.chromium.chrome.browser.media.ui.NotificationMediaPlaybackControl$ListenerService"
222 android:
exported=
"false" />
224 <!-- Activity, service, and meta-data to support casting to Chromecast -->
226 <!-- Expanded controller activity is displayed when the Cast Notification is clicked -->
227 <activity android:
name=
"org.chromium.chrome.browser.media.remote.ExpandedControllerActivity"
228 android:
theme=
"@style/MainTheme"
229 android:
label=
"Chrome.ExpandedControllerActivity"
230 android:
hardwareAccelerated=
"true"
231 android:
launchMode=
"singleTask"
232 android:
noHistory=
"true"
233 android:
configChanges=
"orientation|keyboardHidden|keyboard|screenSize"
234 android:
excludeFromRecents=
"true">
237 <service android:
name=
"org.chromium.chrome.browser.media.remote.NotificationTransportControl$ListenerService" />
239 <!-- Media route controllers to use for remote playback (cast).
240 This is here, rather than in code, since it varies between upstream and downstream,
241 yet we need this list of classes in the notification service, which belongs upstream
242 and doesn't run the downstream Clank startup code. The Cast code will, for each media element,
243 choose the first MediaRouteController that can play it, so the order of the list can be important.
244 The most specific MediaRouteControllers should be listed first, followed by more generic ones -->
245 <meta-data android:
name=
"org.chromium.content.browser.REMOTE_MEDIA_PLAYERS"
246 android:
value=
"org.chromium.chrome.browser.media.remote.DefaultMediaRouteController"/>