Merge "Guard TIF vendor extension APIs by new permission"
This commit is contained in:
@@ -329,6 +329,7 @@ package android {
|
||||
field public static final String SYSTEM_APPLICATION_OVERLAY = "android.permission.SYSTEM_APPLICATION_OVERLAY";
|
||||
field public static final String SYSTEM_CAMERA = "android.permission.SYSTEM_CAMERA";
|
||||
field public static final String TETHER_PRIVILEGED = "android.permission.TETHER_PRIVILEGED";
|
||||
field public static final String TIS_EXTENSION_INTERFACE = "android.permission.TIS_EXTENSION_INTERFACE";
|
||||
field public static final String TOGGLE_AUTOMOTIVE_PROJECTION = "android.permission.TOGGLE_AUTOMOTIVE_PROJECTION";
|
||||
field public static final String TRIGGER_LOST_MODE = "android.permission.TRIGGER_LOST_MODE";
|
||||
field public static final String TV_INPUT_HARDWARE = "android.permission.TV_INPUT_HARDWARE";
|
||||
@@ -6658,13 +6659,13 @@ package android.media.tv {
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public android.media.tv.TvInputManager.Hardware acquireTvInputHardware(int, @NonNull android.media.tv.TvInputInfo, @Nullable String, int, @NonNull java.util.concurrent.Executor, @NonNull android.media.tv.TvInputManager.HardwareCallback);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void addBlockedRating(@NonNull android.media.tv.TvContentRating);
|
||||
method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean captureFrame(String, android.view.Surface, android.media.tv.TvStreamConfig);
|
||||
method @NonNull public java.util.List<java.lang.String> getAvailableExtensionInterfaceNames(@NonNull String);
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.TIS_EXTENSION_INTERFACE) public java.util.List<java.lang.String> getAvailableExtensionInterfaceNames(@NonNull String);
|
||||
method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public java.util.List<android.media.tv.TvStreamConfig> getAvailableTvStreamConfigList(String);
|
||||
method @RequiresPermission("android.permission.TUNER_RESOURCE_ACCESS") public int getClientPid(@NonNull String);
|
||||
method public int getClientPriority(int, @Nullable String);
|
||||
method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO) public java.util.List<android.media.tv.TunedInfo> getCurrentTunedInfos();
|
||||
method @NonNull @RequiresPermission("android.permission.DVB_DEVICE") public java.util.List<android.media.tv.DvbDeviceInfo> getDvbDeviceList();
|
||||
method @Nullable public android.os.IBinder getExtensionInterface(@NonNull String, @NonNull String);
|
||||
method @Nullable @RequiresPermission(android.Manifest.permission.TIS_EXTENSION_INTERFACE) public android.os.IBinder getExtensionInterface(@NonNull String, @NonNull String);
|
||||
method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public java.util.List<android.media.tv.TvInputHardwareInfo> getHardwareList();
|
||||
method @RequiresPermission(android.Manifest.permission.READ_CONTENT_RATING_SYSTEMS) public java.util.List<android.media.tv.TvContentRatingSystemInfo> getTvContentRatingSystemList();
|
||||
method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean isSingleSessionActive();
|
||||
|
||||
@@ -6349,6 +6349,15 @@
|
||||
<permission android:name="android.permission.SET_UNRESTRICTED_KEEP_CLEAR_AREAS"
|
||||
android:protectionLevel="signature|privileged" />
|
||||
|
||||
<!-- @SystemApi Allows TV input apps and TV apps to use TIS extension interfaces for
|
||||
domain-specific features.
|
||||
<p>Protection level: signature|privileged|vendorPrivileged
|
||||
<p>Not for use by third-party applications.
|
||||
@hide
|
||||
-->
|
||||
<permission android:name="android.permission.TIS_EXTENSION_INTERFACE"
|
||||
android:protectionLevel="signature|privileged|vendorPrivileged" />
|
||||
|
||||
<!-- Attribution for Geofencing service. -->
|
||||
<attribution android:tag="GeofencingService" android:label="@string/geofencing_service"/>
|
||||
<!-- Attribution for Country Detector. -->
|
||||
|
||||
@@ -453,6 +453,7 @@ applications that come with the platform
|
||||
<!-- Permissions required for CTS test - TVInputManagerTest -->
|
||||
<permission name="android.permission.ACCESS_TUNED_INFO" />
|
||||
<permission name="android.permission.TV_INPUT_HARDWARE" />
|
||||
<permission name="android.permission.TIS_EXTENSION_INTERFACE" />
|
||||
<permission name="com.android.providers.tv.permission.ACCESS_WATCHED_PROGRAMS" />
|
||||
<permission name="com.android.providers.tv.permission.WRITE_EPG_DATA"/>
|
||||
<!-- Permission required for CTS test - PrivilegedLocationPermissionTest -->
|
||||
|
||||
@@ -1584,6 +1584,7 @@ public final class TvInputManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.TIS_EXTENSION_INTERFACE)
|
||||
@NonNull
|
||||
public List<String> getAvailableExtensionInterfaceNames(@NonNull String inputId) {
|
||||
Preconditions.checkNotNull(inputId);
|
||||
@@ -1609,6 +1610,7 @@ public final class TvInputManager {
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.TIS_EXTENSION_INTERFACE)
|
||||
@Nullable
|
||||
public IBinder getExtensionInterface(@NonNull String inputId, @NonNull String name) {
|
||||
Preconditions.checkNotNull(inputId);
|
||||
|
||||
@@ -464,6 +464,7 @@
|
||||
<!-- Permissions required for CTS test - TVInputManagerTest -->
|
||||
<uses-permission android:name="android.permission.ACCESS_TUNED_INFO" />
|
||||
<uses-permission android:name="android.permission.TV_INPUT_HARDWARE" />
|
||||
<uses-permission android:name="android.permission.TIS_EXTENSION_INTERFACE" />
|
||||
<uses-permission android:name="com.android.providers.tv.permission.ACCESS_WATCHED_PROGRAMS" />
|
||||
<uses-permission android:name="com.android.providers.tv.permission.WRITE_EPG_DATA"/>
|
||||
|
||||
|
||||
@@ -1183,6 +1183,7 @@ public final class TvInputManagerService extends SystemService {
|
||||
|
||||
@Override
|
||||
public List<String> getAvailableExtensionInterfaceNames(String inputId, int userId) {
|
||||
ensureTisExtensionInterfacePermission();
|
||||
final int callingUid = Binder.getCallingUid();
|
||||
final int callingPid = Binder.getCallingPid();
|
||||
final int resolvedUserId = resolveCallingUserId(callingPid, callingUid,
|
||||
@@ -1228,6 +1229,7 @@ public final class TvInputManagerService extends SystemService {
|
||||
|
||||
@Override
|
||||
public IBinder getExtensionInterface(String inputId, String name, int userId) {
|
||||
ensureTisExtensionInterfacePermission();
|
||||
final int callingUid = Binder.getCallingUid();
|
||||
final int callingPid = Binder.getCallingPid();
|
||||
final int resolvedUserId = resolveCallingUserId(callingPid, callingUid,
|
||||
@@ -2628,6 +2630,14 @@ public final class TvInputManagerService extends SystemService {
|
||||
}
|
||||
}
|
||||
|
||||
private void ensureTisExtensionInterfacePermission() {
|
||||
if (mContext.checkCallingPermission(
|
||||
android.Manifest.permission.TIS_EXTENSION_INTERFACE)
|
||||
!= PackageManager.PERMISSION_GRANTED) {
|
||||
throw new SecurityException("Requires TIS_EXTENSION_INTERFACE permission");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("resource")
|
||||
protected void dump(FileDescriptor fd, final PrintWriter writer, String[] args) {
|
||||
|
||||
Reference in New Issue
Block a user