1 /* 2 * Copyright (C) 2023 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.systemui.statusbar.policy 18 19 import android.content.Context 20 import android.provider.Settings.Secure.DEVICE_STATE_ROTATION_LOCK_IGNORED 21 import android.provider.Settings.Secure.DEVICE_STATE_ROTATION_LOCK_LOCKED 22 import android.provider.Settings.Secure.DEVICE_STATE_ROTATION_LOCK_UNLOCKED 23 import com.android.internal.R 24 import com.android.systemui.log.LogBuffer 25 import com.android.systemui.log.core.LogLevel.VERBOSE 26 import com.android.systemui.log.dagger.DeviceStateAutoRotationLog 27 import javax.inject.Inject 28 29 class DeviceStateRotationLockSettingControllerLogger 30 @Inject 31 constructor(@DeviceStateAutoRotationLog private val logBuffer: LogBuffer, context: Context) { 32 33 private val foldedStates = context.resources.getIntArray(R.array.config_foldedDeviceStates) 34 private val halfFoldedStates = 35 context.resources.getIntArray(R.array.config_halfFoldedDeviceStates) 36 private val unfoldedStates = context.resources.getIntArray(R.array.config_openDeviceStates) 37 private val rearDisplayStates = 38 context.resources.getIntArray(R.array.config_rearDisplayDeviceStates) 39 40 fun logListeningChange(listening: Boolean) { 41 logBuffer.log(TAG, VERBOSE, { bool1 = listening }, { "setListening: $bool1" }) 42 } 43 44 fun logRotationLockStateChanged( 45 state: Int, 46 newRotationLocked: Boolean, 47 currentRotationLocked: Boolean 48 ) { 49 logBuffer.log( 50 TAG, 51 VERBOSE, 52 { 53 int1 = state 54 bool1 = newRotationLocked 55 bool2 = currentRotationLocked 56 }, 57 { 58 "onRotationLockStateChanged: " + 59 "state=$int1 [${int1.toDevicePostureString()}], " + 60 "newRotationLocked=$bool1, " + 61 "currentRotationLocked=$bool2" 62 } 63 ) 64 } 65 66 fun logSaveNewRotationLockSetting(isRotationLocked: Boolean, state: Int) { 67 logBuffer.log( 68 TAG, 69 VERBOSE, 70 { 71 bool1 = isRotationLocked 72 int1 = state 73 }, 74 { "saveNewRotationLockSetting: isRotationLocked=$bool1, state=$int1" } 75 ) 76 } 77 78 fun logUpdateDeviceState(currentState: Int, newState: Int) { 79 logBuffer.log( 80 TAG, 81 VERBOSE, 82 { 83 int1 = currentState 84 int2 = newState 85 }, 86 { 87 "updateDeviceState: " + 88 "current=$int1 [${int1.toDevicePostureString()}], " + 89 "new=$int2 [${int2.toDevicePostureString()}]" 90 } 91 ) 92 } 93 94 fun readPersistedSetting( 95 caller: String, 96 state: Int, 97 rotationLockSetting: Int, 98 shouldBeLocked: Boolean, 99 isLocked: Boolean 100 ) { 101 logBuffer.log( 102 TAG, 103 VERBOSE, 104 { 105 str1 = caller 106 int1 = state 107 int2 = rotationLockSetting 108 bool1 = shouldBeLocked 109 bool2 = isLocked 110 }, 111 { 112 "readPersistedSetting: " + 113 "caller=$str1, " + 114 "state=$int1 [${int1.toDevicePostureString()}], " + 115 "rotationLockSettingForState: ${int2.toRotationLockSettingString()}, " + 116 "shouldBeLocked=$bool1, " + 117 "isLocked=$bool2" 118 } 119 ) 120 } 121 122 private fun Int.toDevicePostureString(): String { 123 return when (this) { 124 in foldedStates -> "Folded" 125 in unfoldedStates -> "Unfolded" 126 in halfFoldedStates -> "Half-Folded" 127 in rearDisplayStates -> "Rear display" 128 -1 -> "Uninitialized" 129 else -> "Unknown" 130 } 131 } 132 } 133 134 private fun Int.toRotationLockSettingString(): String { 135 return when (this) { 136 DEVICE_STATE_ROTATION_LOCK_IGNORED -> "IGNORED" 137 DEVICE_STATE_ROTATION_LOCK_LOCKED -> "LOCKED" 138 DEVICE_STATE_ROTATION_LOCK_UNLOCKED -> "UNLOCKED" 139 else -> "Unknown" 140 } 141 } 142 143 private const val TAG = "DSRotateLockSettingCon" 144