summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shubang <shubang@google.com> 2017-08-08 20:48:54 -0700
committer Shubang <shubang@google.com> 2017-08-09 14:30:00 -0700
commit60d3925f5b4549135d28f5cb8ea9a08f5dc7e42c (patch)
tree8c4d4026e1d635967d38debdcedc531a3c3713f9
parentbb9e8ccea1577582e8c2879d3ec05f244593b4a3 (diff)
Add permission check before setMain()
Test: make; cts-tradefed; run cts -m CtsTvTestCases; Bug: 64489430 Change-Id: I1365165eb1ba76b3a54a3141cc19e8245c99f279
-rw-r--r--media/java/android/media/tv/TvView.java13
1 files changed, 11 insertions, 2 deletions
diff --git a/media/java/android/media/tv/TvView.java b/media/java/android/media/tv/TvView.java
index 9538e1d5fa74..6b329f8ec694 100644
--- a/media/java/android/media/tv/TvView.java
+++ b/media/java/android/media/tv/TvView.java
@@ -22,6 +22,7 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.content.Context;
+import android.content.pm.PackageManager;
import android.graphics.Canvas;
import android.graphics.PorterDuff;
import android.graphics.Rect;
@@ -680,7 +681,8 @@ public class TvView extends ViewGroup {
// Other app may have shown its own main TvView.
// Set main again to regain main session.
synchronized (sMainTvViewLock) {
- if (hasFocus && this == sMainTvView.get() && mSession != null) {
+ if (hasFocus && this == sMainTvView.get() && mSession != null
+ && checkChangeHdmiCecActiveSourcePermission()) {
mSession.setMain();
}
}
@@ -848,6 +850,12 @@ public class TvView extends ViewGroup {
return frame;
}
+ private boolean checkChangeHdmiCecActiveSourcePermission() {
+ return getContext().checkSelfPermission(
+ android.Manifest.permission.CHANGE_HDMI_CEC_ACTIVE_SOURCE)
+ == PackageManager.PERMISSION_GRANTED;
+ }
+
/**
* Callback used to receive time shift position changes.
*/
@@ -1080,7 +1088,8 @@ public class TvView extends ViewGroup {
mPendingAppPrivateCommands.clear();
synchronized (sMainTvViewLock) {
- if (hasWindowFocus() && TvView.this == sMainTvView.get()) {
+ if (hasWindowFocus() && TvView.this == sMainTvView.get()
+ && checkChangeHdmiCecActiveSourcePermission()) {
mSession.setMain();
}
}