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.sync_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.sync_shell.permission.C2D_MESSAGE"
31 android:
protectionLevel=
"signature" />
32 <uses-permission android:
name=
"org.chromium.chrome.sync_shell.permission.C2D_MESSAGE" />
33 <uses-permission android:
name=
"com.google.android.c2dm.permission.RECEIVE" />
35 <application android:
name=
"org.chromium.chrome.shell.ChromeShellApplication"
36 android:
icon=
"@mipmap/app_icon"
37 android:
label=
"Chrome Sync Shell">
38 <activity android:
name=
"org.chromium.chrome.shell.ChromeShellActivity"
39 android:
launchMode=
"singleTask"
40 android:
theme=
"@style/MainTheme"
41 android:
configChanges=
"orientation|keyboardHidden|keyboard|screenSize"
42 android:
hardwareAccelerated=
"true">
44 <action android:
name=
"android.intent.action.MAIN" />
45 <category android:
name=
"android.intent.category.LAUNCHER" />
48 <activity android:
name=
"org.chromium.sync.test.util.MockGrantCredentialsPermissionActivity"
49 android:
exported=
"true">
51 <action android:
name=
"android.intent.action.VIEW" />
52 <category android:
name=
"android.intent.category.DEFAULT" />
55 <!-- The following service entries exist in order to allow us to
56 start more than one sandboxed process. -->
58 <!-- NOTE: If you change the values of "android:process" for any of the below services,
59 you also need to update kHelperProcessExecutableName in chrome_constants.cc. -->
60 {% set num_sandboxed_services =
20 %}
61 <meta-data android:
name=
"org.chromium.content.browser.NUM_SANDBOXED_SERVICES"
62 android:
value=
"{{ num_sandboxed_services }}"/>
63 {% for i in range(num_sandboxed_services) %}
64 <service android:
name=
"org.chromium.content.app.SandboxedProcessService{{ i }}"
65 android:
process=
":sandboxed_process{{ i }}"
66 android:
isolatedProcess=
"true"
67 android:
exported=
"false" />
70 {% set num_privileged_services =
3 %}
71 <meta-data android:
name=
"org.chromium.content.browser.NUM_PRIVILEGED_SERVICES"
72 android:
value=
"{{ num_privileged_services }}"/>
73 {% for i in range(num_privileged_services) %}
74 <service android:
name=
"org.chromium.content.app.PrivilegedProcessService{{ i }}"
75 android:
process=
":privileged_process{{ i }}"
76 android:
isolatedProcess=
"false"
77 android:
exported=
"false" />
80 <!-- Receiver for GCM messages. Rebroadcasts them locally for sync. -->
81 <receiver android:
exported=
"true"
82 android:
name=
"com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener$GCMReceiver"
83 android:
permission=
"com.google.android.c2dm.permission.SEND">
85 <action android:
name=
"com.google.android.c2dm.intent.RECEIVE" />
86 <action android:
name=
"com.google.android.c2dm.intent.REGISTRATION" />
87 <category android:
name=
"org.chromium.chrome.shell"/>
90 <service android:
exported=
"false"
91 android:
name=
"com.google.ipc.invalidation.external.client.contrib.MultiplexingGcmListener">
92 <meta-data android:
name=
"sender_ids"
93 android:
value=
"cloudprint.c2dm@gmail.com,ipc.invalidation@gmail.com"/>
96 <!-- Notification service for sync. -->
97 <meta-data android:
name=
"ipc.invalidation.ticl.listener_service_class"
98 android:
value=
"org.chromium.components.invalidation.InvalidationClientService"/>
99 <service android:
name=
"org.chromium.components.invalidation.InvalidationClientService"
100 android:
exported=
"false">
102 <action android:
name=
"com.google.ipc.invalidation.AUTH_TOKEN_REQUEST"/>
105 <service android:
exported=
"false"
106 android:
name=
"com.google.ipc.invalidation.ticl.android2.TiclService"/>
107 <service android:
exported=
"false"
108 android:
name=
"com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageSenderService"/>
109 <receiver android:
exported=
"false"
110 android:
name=
"com.google.ipc.invalidation.ticl.android2.AndroidInternalScheduler$AlarmReceiver"/>
111 <receiver android:
exported=
"false"
112 android:
name=
"com.google.ipc.invalidation.external.client.contrib.AndroidListener$AlarmReceiver"/>
114 <!-- Notification service multiplexed GCM receiver -->
115 <service android:
exported=
"false"
116 android:
name=
"com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService"
117 android:
enabled=
"true"/>
118 <receiver android:
exported=
"false"
119 android:
name=
"com.google.ipc.invalidation.ticl.android2.channel.AndroidMessageReceiverService$Receiver">
121 <action android:
name=
"com.google.ipc.invalidation.gcmmplex.EVENT" />
125 <!-- GCMDriver multiplexed GCM receiver -->
126 <service android:
exported=
"false"
127 android:
name=
"org.chromium.chrome.browser.services.gcm.GCMListener"/>
128 <receiver android:
exported=
"false"
129 android:
name=
"org.chromium.chrome.browser.services.gcm.GCMListener$Receiver">
131 <action android:
name=
"com.google.ipc.invalidation.gcmmplex.EVENT" />
135 <provider android:
name=
"org.chromium.chrome.browser.ChromeBrowserProvider"
136 android:
authorities=
"org.chromium.chrome.sync_shell"
137 android:
exported=
"true" />
139 <!-- Sync adapter for browser sync. -->
140 <service android:
exported=
"false"
141 android:
name=
"org.chromium.chrome.shell.sync.ChromeShellSyncAdapterService">
143 <action android:
name=
"android.content.SyncAdapter" />
145 <meta-data android:
name=
"android.content.SyncAdapter"
146 android:
resource=
"@xml/syncadapter" />
149 <!-- Broadcast receiver that will be notified of account changes. -->
150 <receiver android:
name=
"org.chromium.chrome.shell.signin.AccountsChangedReceiver">
152 <action android:
name=
"android.accounts.LOGIN_ACCOUNTS_CHANGED" />
155 <meta-data android:
name=
"org.chromium.content.browser.SMART_CLIP_PROVIDER"
156 android:
value=
"org.chromium.content.browser.SmartClipProvider" />