Merge "Add support for TvInputManager.acquireTvInputHardware CTS" into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-05-27 04:39:45 +00:00
committed by Android (Google) Code Review
6 changed files with 84 additions and 0 deletions

View File

@@ -1728,6 +1728,15 @@ package android.media.audiopolicy {
}
package android.media.tv {
public final class TvInputManager {
method public void addHardwareDevice(int);
method public void removeHardwareDevice(int);
}
}
package android.metrics {
public class LogMaker {

View File

@@ -409,6 +409,8 @@ applications that come with the platform
<permission name="android.permission.ACCESS_TV_DESCRAMBLER" />
<permission name="android.permission.ACCESS_TV_TUNER" />
<permission name="android.permission.TUNER_RESOURCE_ACCESS" />
<!-- Permissions required for CTS test - TVInputManagerTest -->
<permission name="android.permission.TV_INPUT_HARDWARE" />
</privapp-permissions>
<privapp-permissions package="com.android.statementservice">

View File

@@ -111,4 +111,8 @@ interface ITvInputManager {
// For preview channels and programs
void sendTvInputNotifyIntent(in Intent intent, int userId);
void requestChannelBrowsable(in Uri channelUri, int userId);
// For CTS purpose only. Add/remove a TvInputHardware device
void addHardwareDevice(in int deviceId);
void removeHardwareDevice(in int deviceId);
}

View File

@@ -23,6 +23,7 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.SystemService;
import android.annotation.TestApi;
import android.content.Context;
import android.content.Intent;
import android.graphics.Rect;
@@ -1801,6 +1802,40 @@ public final class TvInputManager {
executor, callback);
}
/**
* API to add a hardware device in the TvInputHardwareManager for CTS testing
* purpose.
*
* @param deviceId Id of the adding hardware device.
*
* @hide
*/
@TestApi
public void addHardwareDevice(int deviceId) {
try {
mService.addHardwareDevice(deviceId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
/**
* API to remove a hardware device in the TvInputHardwareManager for CTS testing
* purpose.
*
* @param deviceId Id of the removing hardware device.
*
* @hide
*/
@TestApi
public void removeHardwareDevice(int deviceId) {
try {
mService.removeHardwareDevice(deviceId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
}
private Hardware acquireTvInputHardwareInternal(int deviceId, TvInputInfo info,
String tvInputSessionId, int priorityHint,
Executor executor, final HardwareCallback callback) {

View File

@@ -300,6 +300,9 @@
<!-- Permissions needed to test shared libraries -->
<uses-permission android:name="android.permission.ACCESS_SHARED_LIBRARIES" />
<!-- Permissions required for CTS test - TVInputManagerTest -->
<uses-permission android:name="android.permission.TV_INPUT_HARDWARE" />
<application android:label="@string/app_label"
android:theme="@android:style/Theme.DeviceDefault.DayNight"
android:defaultToDeviceProtectedStorage="true"

View File

@@ -16,6 +16,7 @@
package com.android.server.tv;
import static android.media.AudioManager.DEVICE_NONE;
import static android.media.tv.TvInputManager.INPUT_STATE_CONNECTED;
import static android.media.tv.TvInputManager.INPUT_STATE_CONNECTED_STANDBY;
@@ -2047,6 +2048,36 @@ public final class TvInputManagerService extends SystemService {
return clientPid;
}
/**
* Add a hardware device in the TvInputHardwareManager for CTS testing
* purpose.
*
* @param device id of the adding hardware device.
*/
@Override
public void addHardwareDevice(int deviceId) {
TvInputHardwareInfo info = new TvInputHardwareInfo.Builder()
.deviceId(deviceId)
.type(TvInputHardwareInfo.TV_INPUT_TYPE_HDMI)
.audioType(DEVICE_NONE)
.audioAddress("0")
.hdmiPortId(0)
.build();
mTvInputHardwareManager.onDeviceAvailable(info, null);
return;
}
/**
* Remove a hardware device in the TvInputHardwareManager for CTS testing
* purpose.
*
* @param device id of the removing hardware device.
*/
@Override
public void removeHardwareDevice(int deviceId) {
mTvInputHardwareManager.onDeviceUnavailable(deviceId);
}
private int getClientPidLocked(String sessionId)
throws IllegalStateException {
if (mSessionIdToSessionStateMap.get(sessionId) == null) {