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.ACCESS_WIFI_STATE"/>
17 <uses-permission android:
name=
"android.permission.CAMERA" />
18 <uses-permission android:
name=
"android.permission.GET_ACCOUNTS"/>
19 <uses-permission android:
name=
"android.permission.INTERNET"/>
20 <uses-permission android:
name=
"android.permission.MODIFY_AUDIO_SETTINGS"/>
21 <uses-permission android:
name=
"android.permission.NFC"/>
22 <uses-permission android:
name=
"android.permission.RECORD_AUDIO"/>
23 <uses-permission android:
name=
"android.permission.VIBRATE"/>
24 <uses-permission android:
name=
"android.permission.WAKE_LOCK"/>
25 <uses-permission android:
name=
"android.permission.READ_SYNC_SETTINGS"/>
26 <uses-permission android:
name=
"android.permission.WRITE_SYNC_SETTINGS" />
27 <uses-permission android:
name=
"android.permission.USE_CREDENTIALS" />
28 <uses-permission android:
name=
"android.permission.WRITE_EXTERNAL_STORAGE"/>
29 <!-- Only Chrome can receive the messages and registration result for GCM -->
30 <permission android:
name=
"org.chromium.chrome.shell.permission.C2D_MESSAGE"
31 android:
protectionLevel=
"signature" />
32 <uses-permission android:
name=
"org.chromium.chrome.shell.permission.C2D_MESSAGE" />
33 <uses-permission android:
name=
"com.google.android.c2dm.permission.RECEIVE" />
35 <permission android:
name=
"org.chromium.chrome.shell.permission.DEBUG"
36 android:
label=
"Debug web pages in Chrome Shell"
37 android:
permissionGroup=
"android.permission-group.DEVELOPMENT_TOOLS"
38 android:
protectionLevel=
"signature" />
40 <application android:
name=
"org.chromium.chrome.shell.ChromeShellApplication"
41 android:
icon=
"@mipmap/app_icon"
42 android:
label=
"@string/app_name"
43 android:
supportsRtl=
"true">
44 <activity android:
name=
"org.chromium.chrome.shell.ChromeShellActivity"
45 android:
launchMode=
"singleTask"
46 android:
theme=
"@style/MainTheme"
47 android:
configChanges=
"orientation|keyboardHidden|keyboard|screenSize"
48 android:
hardwareAccelerated=
"true">
50 <action android:
name=
"android.intent.action.MAIN" />
51 <category android:
name=
"android.intent.category.LAUNCHER" />
52 <category android:
name=
"android.intent.category.NOTIFICATION_PREFERENCES" />
55 <activity android:
name=
"org.chromium.sync.test.util.MockGrantCredentialsPermissionActivity"
56 android:
exported=
"true">
58 <action android:
name=
"android.intent.action.VIEW" />
59 <category android:
name=
"android.intent.category.DEFAULT" />
62 <activity android:
theme=
"@style/PreferencesTheme"
63 android:
name=
"org.chromium.chrome.shell.preferences.ChromeShellPreferences"
64 android:
configChanges=
"orientation|keyboardHidden|keyboard|screenSize"
65 android:
label=
"@string/preferences"
66 android:
exported=
"false">
68 <activity android:
name=
"org.chromium.chrome.browser.sync.ui.PassphraseActivity"
69 android:
theme=
"@style/PreferencesTheme">
72 <!-- The following service entries exist in order to allow us to
73 start more than one sandboxed process. -->
75 <!-- NOTE: If you change the value of "android:process" for the below services,
76 you also need to update kHelperProcessExecutableName in chrome_constants.cc. -->
77 {% set num_sandboxed_services =
20 %}
78 <meta-data android:
name=
"org.chromium.content.browser.NUM_SANDBOXED_SERVICES"
79 android:
value=
"{{ num_sandboxed_services }}"/>
80 {% for i in range(num_sandboxed_services) %}
81 <service android:
name=
"org.chromium.content.app.SandboxedProcessService{{ i }}"
82 android:
process=
":sandboxed_process{{ i }}"
83 android:
isolatedProcess=
"true"
84 android:
exported=
"false" />
87 {% set num_privileged_services =
3 %}
88 <meta-data android:
name=
"org.chromium.content.browser.NUM_PRIVILEGED_SERVICES"
89 android:
value=
"{{ num_privileged_services }}"/>
90 {% for i in range(num_privileged_services) %}
91 <service android:
name=
"org.chromium.content.app.PrivilegedProcessService{{ i }}"
92 android:
process=
":privileged_process{{ i }}"
93 android:
isolatedProcess=
"false"
94 android:
exported=
"false" />
97 <!-- Receiver for GCM messages. Rebroadcasts them locally for sync. -->
98 <receiver android:
exported=
"true"
99 android:
name=
"com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener$GCMReceiver"
100 android:
permission=
"com.google.android.c2dm.permission.SEND">
102 <action android:
name=
"com.google.android.c2dm.intent.RECEIVE" />
103 <action android:
name=
"com.google.android.c2dm.intent.REGISTRATION" />
104 <category android:
name=
"org.chromium.chrome.shell"/>
107 <service android:
exported=
"false"
108 android:
name=
"com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener">
109 <meta-data android:
name=
"sender_ids"
110 android:
value=
"cloudprint.c2dm@gmail.com,ipc.invalidation@gmail.com"/>
113 <!-- Notification service for sync. -->
114 <meta-data android:
name=
"ipc.invalidation.ticl.listener_service_class"
115 android:
value=
"org.chromium.components.invalidation.InvalidationClientService"/>
116 <service android:
name=
"org.chromium.components.invalidation.InvalidationClientService"
117 android:
exported=
"false">
119 <action android:
name=
"com.google.ipc.invalidation.AUTH_TOKEN_REQUEST"/>
122 <service android:
exported=
"false"
123 android:
name=
"com.google.ipc.invalidation.ticl.android2.TiclService"/>
124 <service android:
exported=
"false"
125 android:
name=
"com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"/>
126 <receiver android:
exported=
"false"
127 android:
name=
"com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"/>
128 <receiver android:
exported=
"false"
129 android:
name=
"com.google.ipc.invalidation.external.client.contrib.AndroidListener$AlarmReceiver"/>
131 <!-- Notification service multiplexed GCM receiver -->
132 <service android:
exported=
"false"
133 android:
name=
"com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService"
134 android:
enabled=
"true"/>
135 <receiver android:
exported=
"false"
136 android:
name=
"com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService$Receiver">
138 <action android:
name=
"com.google.ipc.invalidation.gcmmplex.EVENT" />
142 <!-- GCMDriver multiplexed GCM receiver -->
143 <service android:
exported=
"false"
144 android:
name=
"org.chromium.chrome.browser.services.gcm.GCMListener"/>
145 <receiver android:
exported=
"false"
146 android:
name=
"org.chromium.chrome.browser.services.gcm.GCMListener$Receiver">
148 <action android:
name=
"com.google.ipc.invalidation.gcmmplex.EVENT" />
152 <!-- Android Notification service listener -->
153 <service android:
exported=
"false"
154 android:
name=
"org.chromium.chrome.browser.notifications.NotificationService"/>
155 <receiver android:
exported=
"false"
156 android:
name=
"org.chromium.chrome.browser.notifications.NotificationService$Receiver">
158 <action android:
name=
"org.chromium.chrome.browser.notifications.CLICK_NOTIFICATION" />
159 <action android:
name=
"org.chromium.chrome.browser.notifications.CLOSE_NOTIFICATION" />
163 <provider android:
name=
"org.chromium.chrome.browser.ChromeBrowserProvider"
164 android:
authorities=
"org.chromium.chrome.shell"
165 android:
exported=
"true" />
167 <!-- Provider for FileProvider. -->
168 <provider android:
name=
"android.support.v4.content.FileProvider"
169 android:
authorities=
"org.chromium.chrome.shell.FileProvider"
170 android:
exported=
"false"
171 android:
grantUriPermissions=
"true">
172 <meta-data android:
name=
"android.support.FILE_PROVIDER_PATHS"
173 android:
resource=
"@xml/file_paths" />
176 <!-- Sync adapter for browser sync. -->
177 <service android:
exported=
"false"
178 android:
name=
"org.chromium.chrome.shell.sync.ChromeShellSyncAdapterService">
180 <action android:
name=
"android.content.SyncAdapter" />
182 <meta-data android:
name=
"android.content.SyncAdapter"
183 android:
resource=
"@xml/syncadapter" />
186 <!-- Broadcast receiver that will be notified of account changes. -->
187 <receiver android:
name=
"org.chromium.chrome.shell.signin.AccountsChangedReceiver">
189 <action android:
name=
"android.accounts.LOGIN_ACCOUNTS_CHANGED" />
193 <meta-data android:
name=
"org.chromium.content.browser.SMART_CLIP_PROVIDER"
194 android:
value=
"org.chromium.content.browser.SmartClipProvider" />
195 <meta-data android:
name=
"org.chromium.chrome.browser.SERVICE_TAB_LAUNCHER"
196 android:
value=
"org.chromium.chrome.shell.ChromeShellServiceTabLauncher" />
198 <!-- Precache service. -->
199 <service android:
name=
"org.chromium.chrome.browser.precache.PrecacheService"
200 android:
exported=
"false" />
201 <receiver android:
name=
"org.chromium.chrome.browser.precache.PrecacheServiceLauncher">
203 <action android:
name=
"android.intent.action.ACTION_POWER_CONNECTED"/>
204 <action android:
name=
"android.intent.action.ACTION_POWER_DISCONNECTED"/>
205 <action android:
name=
"android.net.conn.CONNECTIVITY_CHANGE" />
209 <!-- Activity, service, and meta-data to support casting to Chromecast -->
211 <!-- Expanded controller activity is displayed when the Cast Notification is clicked -->
212 <activity android:
name=
"org.chromium.chrome.browser.media.remote.ExpandedControllerActivity"
213 android:
theme=
"@style/MainTheme"
214 android:
label=
"Chrome.ExpandedControllerActivity"
215 android:
hardwareAccelerated=
"true"
216 android:
launchMode=
"singleTask"
217 android:
noHistory=
"true"
218 android:
configChanges=
"orientation|keyboardHidden|keyboard|screenSize"
219 android:
excludeFromRecents=
"true">
222 <service android:
name=
"org.chromium.chrome.browser.media.remote.NotificationTransportControl$ListenerService" />
224 <!-- Media route controllers to use for remote playback (cast).
225 This is here, rather than in code, since it varies between upstream and downstream,
226 yet we need this list of classes in the notification service, which belongs upstream
227 and doesn't run the downstream Clank startup code. The Cast code will, for each media element,
228 choose the first MediaRouteController that can play it, so the order of the list can be important.
229 The most specific MediaRouteControllers should be listed first, followed by more generic ones -->
230 <meta-data android:
name=
"org.chromium.content.browser.REMOTE_MEDIA_PLAYERS"
231 android:
value=
"org.chromium.chrome.browser.media.remote.DefaultMediaRouteController"/>