blob: c6052874cbc2bd5a6ffa5a383c5cde36d8128c79 [file] [log] [blame]
<!--
/*
* Copyright 2006, The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="{{ manifest_package }}">
<permission android:name="{{ app_package_name }}.permission.PRELOAD"
android:label="@string/permission_preload_label"
android:protectionLevel="signatureOrSystem" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS"/>
<uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS"/>
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
<uses-permission android:name="{{ app_package_name }}.permission.READ_HOMEPAGE" />
<uses-permission android:name="{{ app_package_name }}.permission.WRITE_HOMEPAGE" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!-- Templatize taskAffinity otherwise it will default to 'package'
defined in manifest -->
<application android:name="com.android.browser.Browser"
android:label="{{ apk_label }}"
android:icon="@mipmap/ic_launcher_browser"
android:backupAgent="com.android.browser.BrowserBackupAgent"
android:hardwareAccelerated="true"
android:taskAffinity="{{ apk_task_affinity }}"
android:theme="@style/BrowserBase" >
<uses-library android:name="com.qrd.useragent"
android:required="false" />
<provider android:name="com.android.browser.provider.BrowserProvider2"
android:authorities="{{app_package_name}};{{apk_authorities}};{{app_authorities}}"
android:multiprocess="false"
android:exported="true"
android:readPermission="com.android.browser.permission.READ_HISTORY_BOOKMARKS"
android:writePermission="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS">
<path-permission android:path="/bookmarks/search_suggest_query"
android:readPermission="android.permission.GLOBAL_SEARCH" />
<path-permission android:path="/homepage"
android:readPermission="{{ app_package_name }}.permission.READ_HOMEPAGE"
android:writePermission="{{ app_package_name }}.permission.WRITE_HOMEPAGE" />
</provider>
<activity android:name="com.android.browser.BrowserLauncher"
android:theme="@android:style/Theme.NoDisplay" >
<!-- We are the main entry point of the browser. -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.APP_BROWSER" />
</intent-filter>
</activity>
{% if not app_package_name in ['com.android.browser'] %}
<activity-alias android:name="{{ app_package_name }}.BrowserLauncher"
android:targetActivity="com.android.browser.BrowserLauncher"
android:exported="true">
</activity-alias>
{% endif %}
<activity android:name="com.android.browser.BrowserActivity"
android:label="{{ apk_label }}"
android:launchMode="singleTask"
android:alwaysRetainTaskState="true"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
android:theme="@style/BrowserTheme"
android:windowSoftInputMode="adjustResize" >
<intent-filter>
<action android:name="android.speech.action.VOICE_SEARCH_RESULTS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<!-- For these schemes were not particular MIME type has been
supplied, we are a good candidate. -->
<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" />
<data android:scheme="about" />
<data android:scheme="javascript" />
</intent-filter>
<!-- For these schemes where any of these particular MIME types
have been supplied, we are a good candidate. -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="inline" />
<data android:mimeType="text/html"/>
<data android:mimeType="text/plain"/>
<data android:mimeType="application/xhtml+xml"/>
<data android:mimeType="application/vnd.wap.xhtml+xml"/>
</intent-filter>
<!-- For viewing saved web archives. -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="file" />
<data android:mimeType="application/x-webarchive-xml"/>
</intent-filter>
<!-- Accept inbound NFC URLs -->
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
</intent-filter>
<!-- The maps app is a much better experience, so it's not
worth having this at all... especially for a demo!
<intent-filter android:label="Map In Browser">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.item/postal-address" />
</intent-filter>
-->
<intent-filter>
<action android:name="android.intent.action.WEB_SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
{% if not app_package_name in ['com.android.browser'] %}
<activity-alias android:name="{{ app_package_name }}.BrowserActivity"
android:targetActivity="com.android.browser.BrowserActivity"/>
{% endif %}
<activity android:name="com.android.browser.ShortcutActivity"
android:theme="@style/ShortcutTheme"
android:label="@string/shortcut_bookmark"
android:icon="@mipmap/ic_launcher_shortcut_browser_bookmark">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
{% if not app_package_name in ['com.android.browser'] %}
<activity-alias android:name="{{ app_package_name }}.ShortcutActivity"
android:targetActivity="com.android.browser.ShortcutActivity"
android:exported="false">
</activity-alias>
{% endif %}
<activity android:name="com.android.browser.BrowserPreferencesPage"
android:label="@string/menu_preferences"
android:parentActivityName="com.android.browser.BrowserActivity"
android:theme="@style/SettingsTheme">
<intent-filter>
<action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
{% if not app_package_name in ['com.android.browser'] %}
<activity-alias android:name="{{ app_package_name }}.BrowserPreferencesPage"
android:targetActivity="com.android.browser.BrowserPreferencesPage"
android:exported="false">
</activity-alias>
{% endif %}
<activity android:name="com.android.browser.preferences.LegalPreviewActivity"
android:parentActivityName="com.android.browser.BrowserActivity"
android:theme="@style/SettingsTheme">
</activity>
{% if not app_package_name in ['com.android.browser'] %}
<activity-alias android:name="{{ app_package_name }}.LegalPreviewActivity"
android:targetActivity="com.android.browser.preferences.LegalPreviewActivity"
android:exported="false">
</activity-alias>
{% endif %}
<activity android:name="com.android.browser.BookmarkSearch"
android:label="@string/application_name"
android:stateNotNeeded="true"
android:theme="@android:style/Theme.NoDisplay"
android:excludeFromRecents="true">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/bookmarks_searchable" />
</activity>
{% if not app_package_name in ['com.android.browser'] %}
<activity-alias android:name="{{ app_package_name }}.BookmarkSearch"
android:targetActivity="com.android.browser.BookmarkSearch"
android:exported="false">
</activity-alias>
{% endif %}
<activity android:name="com.android.browser.AddBookmarkPage"
android:label="@string/bookmarks_add_page"
android:theme="@style/MyNavAddStyle"
android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.INSERT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/bookmark"/>
</intent-filter>
</activity>
{% if not app_package_name in ['com.android.browser'] %}
<activity-alias android:name="{{ app_package_name }}.AddBookmarkPage"
android:targetActivity="com.android.browser.AddBookmarkPage"
android:exported="false">
</activity-alias>
{% endif %}
<activity android:name="com.android.browser.DownloadSettings"
android:label="@string/download_settings_title"
android:theme="@style/DialogWhenLarge"
android:launchMode="singleTask"
android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.BROWSERDOWNLOAD" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
{% if not app_package_name in ['com.android.browser'] %}
<activity-alias android:name="{{ app_package_name }}.DownloadSettings"
android:targetActivity="com.android.browser.DownloadSettings"
android:exported="false">
</activity-alias>
{% endif %}
<!-- For creating new folder in bookmarks page -->
<activity android:name="com.android.browser.AddBookmarkFolder"
android:label="@string/new_folder"
android:theme="@style/DialogWhenLarge"
android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="vnd.android.cursor.dir/bookmark"/>
</intent-filter>
</activity>
{% if not app_package_name in ['com.android.browser'] %}
<activity-alias android:name="{{ app_package_name }}.AddBookmarkFolder"
android:targetActivity="com.android.browser.AddBookmarkFolder"
android:exported="false">
</activity-alias>
{% endif %}
<activity android:name="com.android.browser.ComboViewActivity"
android:theme="@style/ComboViewTheme">
</activity>
{% if not app_package_name in ['com.android.browser'] %}
<activity-alias android:name="{{ app_package_name }}.ComboViewActivity"
android:targetActivity="com.android.browser.ComboViewActivity"
android:exported="false">
</activity-alias>
{% endif %}
<!-- Bookmark thumbnail homescreen widget -->
<receiver
android:name="com.android.browser.widget.BookmarkThumbnailWidgetProvider"
android:label="@string/bookmarks">
<intent-filter>
<action
android:name="android.appwidget.action.APPWIDGET_UPDATE" />
<action
android:name="com.android.browser.BOOKMARK_APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/bookmarkthumbnailwidget_info" />
</receiver>
<service
android:name="com.android.browser.widget.BookmarkThumbnailWidgetService"
android:permission="android.permission.BIND_REMOTEVIEWS"
android:exported="false" />
<receiver
android:name="com.android.browser.widget.BookmarkWidgetProxy"
android:exported="false" />
<activity android:name="com.android.browser.widget.BookmarkWidgetConfigure"
android:theme="@style/DialogWhenLarge">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE"/>
</intent-filter>
</activity>
{% if not app_package_name in ['com.android.browser'] %}
<activity-alias android:name="{{ app_package_name }}.widget.BookmarkWidgetConfigure"
android:targetActivity="com.android.browser.widget.BookmarkWidgetConfigure"
android:exported="false">
</activity-alias>
{% endif %}
<!-- add or edit my navigation activity -->
<activity android:name="com.android.browser.mynavigation.AddMyNavigationPage"
android:label="@string/my_navigation_page_title"
android:configChanges="orientation|keyboardHidden"
android:windowSoftInputMode="stateHidden">
</activity>
{% if not app_package_name in ['com.android.browser'] %}
<activity-alias android:name="{{ app_package_name }}.mynavigation.AddMyNavigationPage"
android:targetActivity="com.android.browser.mynavigation.AddMyNavigationPage"
android:exported="false">
</activity-alias>
{% endif %}
<!-- Makes .BrowserActivity the search target for any activity in Browser -->
<meta-data android:name="android.app.default_searchable" android:value="com.android.browser.BrowserActivity" />
<receiver android:name="com.android.browser.OpenDownloadReceiver">
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_NOTIFICATION_CLICKED"/>
</intent-filter>
</receiver>
<!-- For custom home pages (like most visited) -->
<provider
android:name="com.android.browser.homepages.HomeProvider"
android:authorities="{{ app_package_name }}.home;{{app_authorities}}.home"
android:grantUriPermissions="true"
android:readPermission="com.android.browser.permission.READ_HISTORY_BOOKMARKS"
android:exported="false" />
<receiver android:name="com.android.browser.MessagesReceiver">
<intent-filter>
<action android:name="com.android.mms.transaction.MESSAGE_RECEIVED" />
</intent-filter>
</receiver>
<receiver android:name="com.android.browser.PreloadRequestReceiver"
android:permission="{{ app_package_name }}.permission.PRELOAD" >
<intent-filter>
<action android:name="android.intent.action.PRELOAD"/>
<data android:scheme="http" />
</intent-filter>
</receiver>
<provider android:name="com.android.browser.provider.SnapshotProvider"
android:authorities="{{ app_package_name }}.snapshots;{{app_authorities}}.snapshots"
android:exported="false" />
<provider
android:name="com.android.browser.provider.MyNavigationProvider"
android:authorities="{{ app_package_name }}.mynavigation;{{app_authorities}}.mynavigation"
android:exported="false"
android:grantUriPermissions="true"/>
{% set num_sandboxed_services = 20 %}
<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 = 3 %}
<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 %}
<!-- Provider for FileProvider. -->
<provider android:name="android.support.v4.content.FileProvider"
android:authorities="{{ app_package_name }}.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<service
android:name="com.android.browser.UpdateNotificationService"
android:exported="false" >
</service>
<!-- Compiler gcc/llvm -->
<meta-data android:name="Compiler" android:value="{{ apk_compiler }}" />
<!-- Architecture x64/x32 -->
<meta-data android:name="Architecture" android:value="{{ apk_architecture }}" />
</application>
<!-- CM 12.1+ -->
<uses-sdk android:minSdkVersion="22" android:targetSdkVersion="23" />
{{ extra_supports_gl_texture }}
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
</manifest>