Start/Finish ap-op when telephony uses mic/camera
Bug: 162547999
Test: Started phone call and looked at app-ops
Change-Id: I4b21b45342ddf0f26cf24e81cb69dd978c4b1d6a
Merged-In: I4b21b45342ddf0f26cf24e81cb69dd978c4b1d6a
(cherry picked from commit a33557d4f3fd729009c5fbc178878a2affcf0822)
diff --git a/src/com/android/server/telecom/InCallController.java b/src/com/android/server/telecom/InCallController.java
index d685a53..982af19 100644
--- a/src/com/android/server/telecom/InCallController.java
+++ b/src/com/android/server/telecom/InCallController.java
@@ -16,8 +16,11 @@
package com.android.server.telecom;
+import static android.os.Process.myUid;
+
import android.Manifest;
import android.annotation.NonNull;
+import android.app.AppOpsManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
@@ -926,6 +929,7 @@
private final CallIdMapper mCallIdMapper = new CallIdMapper(Call::getId);
private final Context mContext;
+ private final AppOpsManager mAppOpsManager;
private final TelecomSystem.SyncRoot mLock;
private final CallsManager mCallsManager;
private final SystemStateHelper mSystemStateHelper;
@@ -954,6 +958,7 @@
EmergencyCallHelper emergencyCallHelper, CarModeTracker carModeTracker,
ClockProxy clockProxy) {
mContext = context;
+ mAppOpsManager = context.getSystemService(AppOpsManager.class);
mLock = lock;
mCallsManager = callsManager;
mSystemStateHelper = systemStateHelper;
diff --git a/tests/src/com/android/server/telecom/tests/InCallControllerTests.java b/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
index 0e5ac27..9edbf05 100644
--- a/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
+++ b/tests/src/com/android/server/telecom/tests/InCallControllerTests.java
@@ -41,6 +41,7 @@
import static org.mockito.Mockito.when;
import android.Manifest;
+import android.app.AppOpsManager;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.UiModeManager;
@@ -61,7 +62,6 @@
import android.os.Looper;
import android.os.UserHandle;
import android.telecom.InCallService;
-import android.telecom.Log;
import android.telecom.ParcelableCall;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
@@ -113,6 +113,7 @@
@Mock PackageManager mMockPackageManager;
@Mock Call mMockCall;
@Mock Resources mMockResources;
+ @Mock AppOpsManager mMockAppOpsManager;
@Mock MockContext mMockContext;
@Mock Timeouts.Adapter mTimeoutsAdapter;
@Mock DefaultDialerCache mDefaultDialerCache;
@@ -158,6 +159,7 @@
MockitoAnnotations.initMocks(this);
when(mMockCall.getAnalytics()).thenReturn(new Analytics.CallInfo());
doReturn(mMockResources).when(mMockContext).getResources();
+ doReturn(mMockAppOpsManager).when(mMockContext).getSystemService(AppOpsManager.class);
doReturn(SYS_PKG).when(mMockResources).getString(
com.android.internal.R.string.config_defaultDialer);
doReturn(SYS_CLASS).when(mMockResources).getString(R.string.incall_default_class);
diff --git a/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java b/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
index 4ea6ccb..226e7ef 100644
--- a/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
+++ b/tests/src/com/android/server/telecom/tests/TelecomSystemTest.java
@@ -38,6 +38,7 @@
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import android.app.AppOpsManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -350,6 +351,8 @@
doReturn(mSpyContext).when(mSpyContext).getApplicationContext();
doNothing().when(mSpyContext).sendBroadcastAsUser(any(), any(), any());
+ doReturn(mock(AppOpsManager.class)).when(mSpyContext).getSystemService(AppOpsManager.class);
+
mHandlerThread = new HandlerThread("TelecomHandlerThread");
mHandlerThread.start();