chromium/android_webview/test/shell/AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<!-- Copyright 2013 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.android_webview.shell">
  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
  <uses-permission android:name="android.permission.WAKE_LOCK"/>
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <uses-permission android:name="android.permission.RECORD_AUDIO" />
  <uses-permission android:name="android.permission.RECORD_VIDEO" />
  <uses-permission android:name="android.permission.CAMERA" />
  <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

  <!-- Kerberos authentication -->
  <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  <uses-permission android:name="android.permission.USE_CREDENTIALS" />

  <!-- Features related to permissions we request. -->
  <!-- android.permission.CAMERA -->
  <uses-feature android:name="android.hardware.camera" android:required="false" />
  <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
  <!-- android.permission.RECORD_AUDIO -->
  <uses-feature android:name="android.hardware.microphone" android:required="false" />

  <queries>
    <intent>
      <action android:name="org.chromium.net.test.EMBEDDED_TEST_SERVER_SERVICE" />
    </intent>
  </queries>

  <application android:name="org.chromium.android_webview.shell.AwShellApplication"
      android:label="AwShellApplication"
      android:hardwareAccelerated="true"
      android:usesCleartextTraffic="true">
    <activity android:name="org.chromium.android_webview.shell.AwShellActivity"
        android:label="Android WebView Test Shell"
        android:configChanges="orientation|keyboardHidden|keyboard|screenSize"
        android:exported="true">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
      <intent-filter>
          <action android:name="android.intent.action.VIEW" />
          <category android:name="android.intent.category.DEFAULT" />
          <category android:name="android.intent.category.BROWSABLE" />
          <data android:scheme="http" />
          <data android:scheme="https" />
      </intent-filter>
    </activity>
    <activity android:name="org.chromium.android_webview.test.AwTestRunnerActivity"
        android:label="AwTestRunnerActivity"
        android:exported="true">
      <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST" />
      </intent-filter>
    </activity>

    <!-- Digital Asset Links statement list -->
    <meta-data android:name="asset_statements" android:resource="@string/asset_statements" />

    <provider android:name="org.chromium.android_webview.test.TestContentProvider"
        android:authorities="org.chromium.android_webview.test.TestContentProvider" />
    <!-- Some tests require 3 sandboxed services -->
    <meta-data android:name="org.chromium.content.browser.NUM_SANDBOXED_SERVICES"
               android:value="3"/>
    <service android:name="org.chromium.content.app.SandboxedProcessService0"
             android:process=":sandboxed_process0"
             android:isolatedProcess="true"
             android:exported="false" />
    <service android:name="org.chromium.content.app.SandboxedProcessService1"
             android:process=":sandboxed_process1"
             android:isolatedProcess="true"
             android:exported="false" />
    <service android:name="org.chromium.content.app.SandboxedProcessService2"
             android:process=":sandboxed_process2"
             android:isolatedProcess="true"
             android:exported="false" />
    <meta-data android:name="org.chromium.content.browser.NUM_PRIVILEGED_SERVICES"
               android:value="0"/>
    <!-- JS Execution Sandbox -->
    <service android:name="org.chromium.android_webview.js_sandbox.service.JsSandboxService0"
             android:process=":js_sandboxed_process0"
             android:isolatedProcess="true"
             android:exported="false" />
    <!-- See AwSecondBrowserProcessTest -->
    <service android:name="org.chromium.android_webview.test.SecondBrowserProcess"
             android:process=":second_browser_process"
             android:isolatedProcess="false"
             android:exported="false" />
    <!-- If you change the variations services, also see
         android_webview/nonembedded/java/AndroidManifest.xml. -->
    <service android:name="org.chromium.android_webview.services.VariationsSeedServer"
             android:exported="true"
             android:process=":webview_service" />
    <service android:name="org.chromium.android_webview.services.AwNetLogService"
             android:exported="true"
             android:process=":webview_service" />
    <service android:name="org.chromium.android_webview.services.MetricsUploadService"
             android:exported="true"/>
    <service android:name="org.chromium.android_webview.services.MetricsBridgeService"
             android:exported="true"
             android:process=":webview_service" />
    <service android:name="org.chromium.android_webview.test.services.MockMetricsBridgeService"
             android:exported="true" />
    <service android:name="org.chromium.android_webview.test.services.MockVariationsSeedServer"
             android:exported="true" />
    <service android:name="org.chromium.android_webview.services.ComponentsProviderService"
             android:exported="true"
             android:process=":webview_service" />
    <service android:name="org.chromium.android_webview.test.component_updater.MockComponentsProviderService"
             android:process=":webview_service"/>
    <service android:name="org.chromium.android_webview.nonembedded.AwComponentUpdateService"
             android:permission="android.permission.BIND_JOB_SERVICE"
             android:exported="false"
             android:process=":webview_apk"/>
    <service android:name="org.chromium.android_webview.test.services.MockAwComponentUpdateService"
             android:exported="false"/>
    <!-- Components for Developer UI, make sure that any changes in these components reflect
         the corresponding original components in nonembedded/java/AndroidManifest.xml -->
    <activity android:name="org.chromium.android_webview.devui.MainActivity"
              android:theme="@style/Theme.DevUi.DayNight"
              android:launchMode="singleTask"
              android:windowSoftInputMode="adjustPan">
    </activity>
    <provider android:name="androidx.core.content.FileProvider"
              android:exported="false"
              android:authorities="org.chromium.android_webview.shell.net_logs_provider"
              android:grantUriPermissions="true">
              <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
                  android:resource="@xml/provider_paths" />
    </provider>
    <provider android:name="org.chromium.android_webview.services.DeveloperModeContentProvider"
              android:exported="true"
              android:authorities="org.chromium.android_webview.shell.DeveloperModeContentProvider"/>
    <service android:name="org.chromium.android_webview.services.DeveloperUiService"
                         android:exported="true" />
    <activity-alias android:name="org.chromium.android_webview.devui.DeveloperModeState"
                      android:targetActivity="org.chromium.android_webview.shell.AwShellActivity"
                      android:enabled="false" />
    <!-- End of Developer UI related components -->
    <!-- Components for SafeMode, make sure that any changes in these components reflect
         the corresponding original components in nonembedded/java/AndroidManifest.xml -->
    <provider android:name="org.chromium.android_webview.services.SafeModeVariationsSeedContentProvider"
              android:exported="true"
              android:authorities="org.chromium.android_webview.shell.SafeModeVariationsSeedContentProvider"/>
    <provider android:name="org.chromium.android_webview.services.SafeModeContentProvider"
              android:exported="true"
              android:authorities="org.chromium.android_webview.shell.SafeModeContentProvider"/>
    <service android:name="org.chromium.android_webview.services.SafeModeService"
                         android:exported="true" />
    <activity-alias android:name="org.chromium.android_webview.SafeModeState"
                      android:targetActivity="org.chromium.android_webview.shell.AwShellActivity"
                      android:enabled="false" />
    <!-- End of SafeMode related components -->
  </application>
</manifest>