<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2014 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"
xmlns:tools="http://schemas.android.com/tools"
package="org.chromium.chromecast.shell">
<uses-sdk android:minSdkVersion="24"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<!-- Needed because CastWebContentsActivity sets orientation to landscape. -->
<uses-feature android:name="android.hardware.screen.landscape" android:required="false" />
<application android:name="org.chromium.chromecast.shell.CastApplication"
android:icon="@drawable/ic_settings_cast">
<service android:name="org.chromium.chromecast.shell.CastBrowserService"
android:hardwareAccelerated="true"
android:label="Chromecast Web Browser"
android:exported="true"
android:foregroundServiceType="specialUse"
tools:ignore="ExportedService">
<property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="cast" />
<intent-filter>
<action android:name="com.google.cast.action.START_CAST_BROWSER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
<service android:name="org.chromium.chromecast.shell.CastWebContentsService"
android:foregroundServiceType="specialUse">
<property android:name="android.app.PROPERTY_SPECIAL_USE_FGS_SUBTYPE"
android:value="cast" />
</service>
<activity android:name="org.chromium.chromecast.shell.CastWebContentsActivity"
android:theme="@style/CastShellTheme"
android:exported="true"
android:hardwareAccelerated="true"
android:launchMode="singleInstance"
android:screenOrientation="landscape"
android:taskAffinity=".CastWebContentsActivity"
android:supportsPictureInPicture="true"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|screenLayout|smallestScreenSize|uiMode"
android:excludeFromRecents="false"
android:noHistory="false"
android:showWhenLocked="true">
</activity>
<service android:name="org.chromium.chromecast.shell.TaskRemovedMonitorService"
android:exported="false">
</service>
<!-- The following service entries exist in order to allow us to
start more than one sandboxed process. -->
{% 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.content.app.SandboxedProcessService{{ 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.content.app.PrivilegedProcessService{{ i }}"
android:process=":privileged_process{{ i }}"
android:isolatedProcess="false"
android:exported="false" />
{% endfor %}
</application>
</manifest>