<?xml version="1.0" encoding="utf-8"?>
Copyright 2019 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.chromium.weblayer.client">
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH"/>
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30"/>
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_CONNECT"/>
Bluetooth scanning is used to implement the Web Bluetooth API, which is
not intended to allow sites to derive location and so can accept a
filtered view of devices.
-->
<uses-permission-sdk-23 android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<uses-permission android:name="android.permission.NFC"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
A note to clients: for AR to work, there must be manifest entries present for
com.google.ar.core and com.google.ar.core.min_apk_version. These can be merged
from the arcore client library or added manually. If being added manually,
the following is recommended:
<meta-data android:name="com.google.ar.core"
android:value="optional" />
<meta-data android:name="com.google.ar.core.min_apk_version"
android:value="1" />
-->
<queries>
<package android:name="com.google.ar.core" />
</queries>
<application>
start more than one sandboxed process. -->
you also need to update kHelperProcessExecutableName in chrome_constants.cc. -->
{% set num_sandboxed_services = 40 %}
<meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES"
android:value="{{ num_sandboxed_services }}"/>
{% for i in range(num_sandboxed_services) %}
<service android:name="org.chromium.weblayer.ChildProcessService$Sandboxed{{ i }}"
android:process=":sandboxed_process{{ i }}"
android:isolatedProcess="true"
android:exported="false" />
{% endfor %}
{% set num_privileged_services = 5 %}
<meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES"
android:value="{{ num_privileged_services }}"/>
{% for i in range(num_privileged_services) %}
<service android:name="org.chromium.weblayer.ChildProcessService$Privileged{{ i }}"
android:process=":privileged_process{{ i }}"
android:isolatedProcess="false"
android:exported="false" />
{% endfor %}
<provider android:name="org.chromium.weblayer.WebLayerFileProvider"
android:authorities="${applicationId}.org.chromium.weblayer.client.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/weblayer_file_paths" />
</provider>
<activity android:name="org.chromium.weblayer.SettingsActivity"
android:theme="@style/Theme.WebLayer.Settings"
android:exported="false">
</activity>
<activity android:name="org.chromium.weblayer.SiteSettingsActivity"
android:theme="@style/Theme.WebLayer.Settings"
android:exported="false">
</activity>
<receiver android:name="org.chromium.weblayer.BroadcastReceiver"
android:exported="false">
<intent-filter>
<action android:name="org.chromium.weblayer.downloads.OPEN"/>
<action android:name="org.chromium.weblayer.downloads.DELETE"/>
<action android:name="org.chromium.weblayer.downloads.PAUSE"/>
<action android:name="org.chromium.weblayer.downloads.RESUME"/>
<action android:name="org.chromium.weblayer.downloads.CANCEL"/>
<action android:name="org.chromium.weblayer.intent_utils.ACTIVATE_TAB"/>
<action android:name="org.chromium.weblayer.webrtc.ACTIVATE_TAB"/>
</intent-filter>
</receiver>
<service android:name="org.chromium.weblayer.MediaSessionService"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</service>
<service android:name="org.chromium.weblayer.RemoteMediaService"
android:exported="false">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</service>
<service
android:name="org.chromium.weblayer.ImageDecoderService"
android:exported="false"
android:isolatedProcess="true"
android:process=":decoder_service" />
<service
android:name="org.chromium.weblayer.GooglePayDataCallbacksServiceWrapper"
android:permission="com.google.android.gms.permission.BIND_PAYMENTS_CALLBACK_SERVICE"
android:exported="true">
<intent-filter>
<action android:name="com.google.android.gms.wallet.callback.PAYMENT_DATA_CALLBACKS"/>
</intent-filter>
</service>
<meta-data
android:name="com.google.android.gms.wallet.api.enabled"
android:value="true" />
payment method, shipping address, or shipping option. -->
<service
android:name="org.chromium.weblayer.PaymentDetailsUpdateServiceWrapper"
android:exported="true">
<intent-filter>
<action android:name="org.chromium.intent.action.UPDATE_PAYMENT_DETAILS"/>
</intent-filter>
</service>
<meta-data
android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="org.chromium.components.media_router.caf.CastOptionsProvider"/>
</application>
</manifest>