• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5  * except in compliance with the License. You may obtain a copy of the License at
6  *
7  *      http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the
10  * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11  * KIND, either express or implied. See the License for the specific language governing
12  * permissions and limitations under the License.
13  */
14 
15 package com.android.systemui.privacy
16 
17 import android.content.Context
18 import com.android.systemui.R
19 
20 typealias Privacy = PrivacyType
21 
22 enum class PrivacyType(
23     val nameId: Int,
24     val iconId: Int,
25     val permGroupName: String,
26     val logName: String
27 ) {
28     // This uses the icons used by the corresponding permission groups in the AndroidManifest
29     TYPE_CAMERA(
30         R.string.privacy_type_camera,
31         com.android.internal.R.drawable.perm_group_camera,
32         android.Manifest.permission_group.CAMERA,
33         "camera"
34     ),
35     TYPE_MICROPHONE(
36         R.string.privacy_type_microphone,
37         com.android.internal.R.drawable.perm_group_microphone,
38         android.Manifest.permission_group.MICROPHONE,
39         "microphone"
40     ),
41     TYPE_LOCATION(
42         R.string.privacy_type_location,
43         com.android.internal.R.drawable.perm_group_location,
44         android.Manifest.permission_group.LOCATION,
45         "location"
46     );
47 
getNamenull48     fun getName(context: Context) = context.resources.getString(nameId)
49 
50     fun getIcon(context: Context) = context.resources.getDrawable(iconId, context.theme)
51 }
52 
53 private const val UNKNOWN_TIMESTAMP = -1L
54 data class PrivacyItem(
55     val privacyType: PrivacyType,
56     val application: PrivacyApplication,
57     val timeStampElapsed: Long = UNKNOWN_TIMESTAMP,
58     val paused: Boolean = false
59 ) {
60     val log = "(${privacyType.logName}, ${application.packageName}(${application.uid}), " +
61             "$timeStampElapsed, paused=$paused)"
62 }
63 
64 data class PrivacyApplication(val packageName: String, val uid: Int)
65