• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.permissioncontroller.permissionui.ui.handheld.v31
18 
19 import android.Manifest.permission.CAMERA
20 import android.content.Intent
21 import android.os.Build
22 import android.permission.cts.PermissionUtils.grantPermission
23 import android.permission.cts.PermissionUtils.install
24 import android.permission.cts.PermissionUtils.uninstallApp
25 import androidx.test.ext.junit.runners.AndroidJUnit4
26 import androidx.test.filters.SdkSuppress
27 import androidx.test.uiautomator.By
28 import com.android.compatibility.common.util.SystemUtil.eventually
29 import com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity
30 import com.android.compatibility.common.util.UiAutomatorUtils2.waitFindObject
31 import com.android.permissioncontroller.permissionui.PermissionHub2Test
32 import com.android.permissioncontroller.permissionui.wakeUpScreen
33 import com.android.permissioncontroller.permissionui.pressHome
34 import org.junit.After
35 import org.junit.Before
36 import org.junit.Test
37 import org.junit.runner.RunWith
38 
39 /** Simple tests for {@link PermissionUsageFragment} */
40 @RunWith(AndroidJUnit4::class)
41 @SdkSuppress(minSdkVersion = Build.VERSION_CODES.S)
42 class PermissionUsageFragmentTest : PermissionHub2Test() {
43     private val APK =
44         "/data/local/tmp/permissioncontroller/tests/permissionui" +
45             "/PermissionUiUseCameraPermissionApp.apk"
46     private val APP = "com.android.permissioncontroller.tests.appthatrequestpermission"
47     private val APP_LABEL = "CameraRequestApp"
48     private val CAMERA_PREF_LABEL = "Camera"
49     private val REFRESH = "Refresh"
50 
51     @Before
setupnull52     fun setup() {
53         wakeUpScreen()
54         install(APK)
55         grantPermission(APP, CAMERA)
56     }
57 
58     @Test
cameraAccessShouldBeListednull59     fun cameraAccessShouldBeListed() {
60         accessCamera()
61 
62         runWithShellPermissionIdentity {
63             context.startActivity(
64                 Intent(Intent.ACTION_REVIEW_PERMISSION_USAGE).apply {
65                     addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
66                 })
67         }
68 
69         eventually {
70             try {
71                 waitFindObject(By.res("android:id/title").textContains(CAMERA_PREF_LABEL)).click()
72             } catch (e: Exception) {
73                 waitFindObject(By.textContains(REFRESH)).click()
74                 throw e
75             }
76         }
77 
78         waitFindObject(By.textContains(APP_LABEL))
79     }
80 
81     @After
uninstallTestAppnull82     fun uninstallTestApp() {
83         uninstallApp(APP)
84         pressHome()
85     }
86 }
87