Merge "Update media resourceManagerService with the Application pid" into rvc-dev am: cea1d98cde am: d01cca87de am: 33e9dc6487
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11803042 Change-Id: I7ec854473d4fb1a611565bfb8e3f62555538907d
This commit is contained in:
@@ -338,6 +338,7 @@ filegroup {
|
|||||||
":libcamera_client_aidl",
|
":libcamera_client_aidl",
|
||||||
":libcamera_client_framework_aidl",
|
":libcamera_client_framework_aidl",
|
||||||
":libupdate_engine_aidl",
|
":libupdate_engine_aidl",
|
||||||
|
":resourcemanager_aidl",
|
||||||
":storaged_aidl",
|
":storaged_aidl",
|
||||||
":vold_aidl",
|
":vold_aidl",
|
||||||
|
|
||||||
|
|||||||
@@ -3534,6 +3534,8 @@
|
|||||||
@hide -->
|
@hide -->
|
||||||
<permission android:name="android.permission.MEDIA_RESOURCE_OVERRIDE_PID"
|
<permission android:name="android.permission.MEDIA_RESOURCE_OVERRIDE_PID"
|
||||||
android:protectionLevel="signature" />
|
android:protectionLevel="signature" />
|
||||||
|
<uses-permission android:name="android.permission.MEDIA_RESOURCE_OVERRIDE_PID" />
|
||||||
|
|
||||||
|
|
||||||
<!-- Must be required by a {@link android.media.routing.MediaRouteService}
|
<!-- Must be required by a {@link android.media.routing.MediaRouteService}
|
||||||
to ensure that only the system can interact with it.
|
to ensure that only the system can interact with it.
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import android.annotation.Nullable;
|
|||||||
import android.app.ActivityManager;
|
import android.app.ActivityManager;
|
||||||
import android.app.ActivityManager.RunningAppProcessInfo;
|
import android.app.ActivityManager.RunningAppProcessInfo;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.media.IResourceManagerService;
|
||||||
import android.media.tv.TvInputManager;
|
import android.media.tv.TvInputManager;
|
||||||
import android.media.tv.tunerresourcemanager.CasSessionRequest;
|
import android.media.tv.tunerresourcemanager.CasSessionRequest;
|
||||||
import android.media.tv.tunerresourcemanager.IResourcesReclaimListener;
|
import android.media.tv.tunerresourcemanager.IResourcesReclaimListener;
|
||||||
@@ -53,7 +54,7 @@ import java.util.Set;
|
|||||||
*
|
*
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public class TunerResourceManagerService extends SystemService {
|
public class TunerResourceManagerService extends SystemService implements IBinder.DeathRecipient {
|
||||||
private static final String TAG = "TunerResourceManagerService";
|
private static final String TAG = "TunerResourceManagerService";
|
||||||
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
|
||||||
|
|
||||||
@@ -76,6 +77,7 @@ public class TunerResourceManagerService extends SystemService {
|
|||||||
|
|
||||||
private TvInputManager mTvInputManager;
|
private TvInputManager mTvInputManager;
|
||||||
private ActivityManager mActivityManager;
|
private ActivityManager mActivityManager;
|
||||||
|
private IResourceManagerService mMediaResourceManager;
|
||||||
private UseCasePriorityHints mPriorityCongfig = new UseCasePriorityHints();
|
private UseCasePriorityHints mPriorityCongfig = new UseCasePriorityHints();
|
||||||
|
|
||||||
// An internal resource request count to help generate resource handle.
|
// An internal resource request count to help generate resource handle.
|
||||||
@@ -102,6 +104,22 @@ public class TunerResourceManagerService extends SystemService {
|
|||||||
mActivityManager =
|
mActivityManager =
|
||||||
(ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE);
|
(ActivityManager) getContext().getSystemService(Context.ACTIVITY_SERVICE);
|
||||||
mPriorityCongfig.parse();
|
mPriorityCongfig.parse();
|
||||||
|
|
||||||
|
if (mMediaResourceManager == null) {
|
||||||
|
IBinder mediaResourceManagerBinder = getBinderService("media.resource_manager");
|
||||||
|
if (mediaResourceManagerBinder == null) {
|
||||||
|
Slog.w(TAG, "Resource Manager Service not available.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
mediaResourceManagerBinder.linkToDeath(this, /*flags*/ 0);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Slog.w(TAG, "Could not link to death of native resource manager service.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mMediaResourceManager = IResourceManagerService.Stub.asInterface(
|
||||||
|
mediaResourceManagerBinder);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final class BinderService extends ITunerResourceManager.Stub {
|
private final class BinderService extends ITunerResourceManager.Stub {
|
||||||
@@ -380,6 +398,19 @@ public class TunerResourceManagerService extends SystemService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the death of the native resource manager service
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void binderDied() {
|
||||||
|
if (DEBUG) {
|
||||||
|
Slog.w(TAG, "Native media resource manager service has died");
|
||||||
|
}
|
||||||
|
synchronized (mLock) {
|
||||||
|
mMediaResourceManager = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected void registerClientProfileInternal(ResourceClientProfile profile,
|
protected void registerClientProfileInternal(ResourceClientProfile profile,
|
||||||
IResourcesReclaimListener listener, int[] clientId) {
|
IResourcesReclaimListener listener, int[] clientId) {
|
||||||
@@ -399,6 +430,16 @@ public class TunerResourceManagerService extends SystemService {
|
|||||||
? Binder.getCallingPid() /*callingPid*/
|
? Binder.getCallingPid() /*callingPid*/
|
||||||
: mTvInputManager.getClientPid(profile.getTvInputSessionId()); /*tvAppId*/
|
: mTvInputManager.getClientPid(profile.getTvInputSessionId()); /*tvAppId*/
|
||||||
|
|
||||||
|
// Update Media Resource Manager with the tvAppId
|
||||||
|
if (profile.getTvInputSessionId() != null && mMediaResourceManager != null) {
|
||||||
|
try {
|
||||||
|
mMediaResourceManager.overridePid(Binder.getCallingPid(), pid);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Slog.e(TAG, "Could not overridePid in resourceManagerSercice,"
|
||||||
|
+ " remote exception: " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ClientProfile clientProfile = new ClientProfile.Builder(clientId[0])
|
ClientProfile clientProfile = new ClientProfile.Builder(clientId[0])
|
||||||
.tvInputSessionId(profile.getTvInputSessionId())
|
.tvInputSessionId(profile.getTvInputSessionId())
|
||||||
.useCase(profile.getUseCase())
|
.useCase(profile.getUseCase())
|
||||||
@@ -415,6 +456,15 @@ public class TunerResourceManagerService extends SystemService {
|
|||||||
Slog.d(TAG, "unregisterClientProfile(clientId=" + clientId + ")");
|
Slog.d(TAG, "unregisterClientProfile(clientId=" + clientId + ")");
|
||||||
}
|
}
|
||||||
removeClientProfile(clientId);
|
removeClientProfile(clientId);
|
||||||
|
// Remove the Media Resource Manager callingPid to tvAppId mapping
|
||||||
|
if (mMediaResourceManager != null) {
|
||||||
|
try {
|
||||||
|
mMediaResourceManager.overridePid(Binder.getCallingPid(), -1);
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Slog.e(TAG, "Could not overridePid in resourceManagerSercice when unregister,"
|
||||||
|
+ " remote exception: " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
|||||||
@@ -80,6 +80,7 @@
|
|||||||
<uses-permission android:name="android.permission.WRITE_DREAM_STATE"/>
|
<uses-permission android:name="android.permission.WRITE_DREAM_STATE"/>
|
||||||
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
|
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
|
||||||
<uses-permission android:name="android.permission.MODIFY_DAY_NIGHT_MODE"/>
|
<uses-permission android:name="android.permission.MODIFY_DAY_NIGHT_MODE"/>
|
||||||
|
<uses-permission android:name="android.permission.MEDIA_RESOURCE_OVERRIDE_PID"/>
|
||||||
|
|
||||||
<!-- Uses API introduced in O (26) -->
|
<!-- Uses API introduced in O (26) -->
|
||||||
<uses-sdk android:minSdkVersion="1"
|
<uses-sdk android:minSdkVersion="1"
|
||||||
|
|||||||
Reference in New Issue
Block a user