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.adservices.service.measurement; 18 19 import com.android.adservices.service.Flags; 20 21 /** Class for cached Phenotype flags. */ 22 public class CachedFlags { 23 private final boolean mEnableSessionStableKillSwitches; 24 private final boolean mApiRegisterSourceKillSwitch; 25 private final boolean mApiRegisterSourcesKillSwitch; 26 private final boolean mApiRegisterWebSourceKillSwitch; 27 private final boolean mApiRegisterTriggerKillSwitch; 28 private final boolean mApiRegisterWebTriggerKillSwitch; 29 private final boolean mApiDeleteRegistrationsKillSwitch; 30 private final boolean mApiStatusKillSwitch; 31 private final boolean mEnforceForegroundStatusForMeasurementRegisterWebSource; 32 private final boolean mEnforceForegroundStatusForMeasurementRegisterWebTrigger; 33 private final boolean mEnforceForegroundStatusForMeasurementRegisterSource; 34 private final boolean mEnforceForegroundStatusForMeasurementRegisterTrigger; 35 private final boolean mEnforceForegroundStatusForMeasurementRegisterSources; 36 private final boolean mEnforceForegroundStatusForMeasurementDeleteRegistrations; 37 private final boolean mEnforceForegroundStatusForMeasurementStatus; 38 private final boolean mEnableApiStatusAllowListCheck; 39 private final boolean mMeasurementEnablePackageNameUidCheck; 40 private final String mApiAppAllowList; 41 private final String mApiAppBlockList; 42 private final String mWebContextClientAppAllowList; 43 private final boolean mEnableMsmtRegisterSourcePackageDenyList; 44 45 private final Flags mFlags; 46 CachedFlags(Flags flags)47 public CachedFlags(Flags flags) { 48 mFlags = flags; 49 mEnableSessionStableKillSwitches = flags.getMeasurementEnableSessionStableKillSwitches(); 50 mApiRegisterSourceKillSwitch = flags.getMeasurementApiRegisterSourceKillSwitch(); 51 mApiRegisterSourcesKillSwitch = flags.getMeasurementApiRegisterSourcesKillSwitch(); 52 mApiRegisterWebSourceKillSwitch = flags.getMeasurementApiRegisterWebSourceKillSwitch(); 53 mApiRegisterTriggerKillSwitch = flags.getMeasurementApiRegisterTriggerKillSwitch(); 54 mApiRegisterWebTriggerKillSwitch = flags.getMeasurementApiRegisterWebTriggerKillSwitch(); 55 mApiDeleteRegistrationsKillSwitch = flags.getMeasurementApiDeleteRegistrationsKillSwitch(); 56 mApiStatusKillSwitch = flags.getMeasurementApiStatusKillSwitch(); 57 mEnforceForegroundStatusForMeasurementRegisterWebTrigger = 58 flags.getEnforceForegroundStatusForMeasurementRegisterWebTrigger(); 59 mEnforceForegroundStatusForMeasurementRegisterWebSource = 60 flags.getEnforceForegroundStatusForMeasurementRegisterWebSource(); 61 mEnforceForegroundStatusForMeasurementRegisterTrigger = 62 flags.getEnforceForegroundStatusForMeasurementRegisterTrigger(); 63 mEnforceForegroundStatusForMeasurementRegisterSource = 64 flags.getEnforceForegroundStatusForMeasurementRegisterSource(); 65 mEnforceForegroundStatusForMeasurementRegisterSources = 66 flags.getEnforceForegroundStatusForMeasurementRegisterSources(); 67 mEnforceForegroundStatusForMeasurementDeleteRegistrations = 68 flags.getEnforceForegroundStatusForMeasurementDeleteRegistrations(); 69 mEnforceForegroundStatusForMeasurementStatus = 70 flags.getEnforceForegroundStatusForMeasurementStatus(); 71 mApiAppAllowList = flags.getMsmtApiAppAllowList(); 72 mApiAppBlockList = flags.getMsmtApiAppBlockList(); 73 mWebContextClientAppAllowList = flags.getWebContextClientAppAllowList(); 74 mEnableApiStatusAllowListCheck = flags.getMsmtEnableApiStatusAllowListCheck(); 75 mEnableMsmtRegisterSourcePackageDenyList = 76 flags.getEnableMsmtRegisterSourcePackageDenyList(); 77 mMeasurementEnablePackageNameUidCheck = flags.getMeasurementEnablePackageNameUidCheck(); 78 } 79 getMeasurementApiRegisterSourceKillSwitch()80 public boolean getMeasurementApiRegisterSourceKillSwitch() { 81 return mEnableSessionStableKillSwitches 82 ? mApiRegisterSourceKillSwitch 83 : mFlags.getMeasurementApiRegisterSourceKillSwitch(); 84 } 85 getMeasurementApiRegisterSourcesKillSwitch()86 public boolean getMeasurementApiRegisterSourcesKillSwitch() { 87 return mEnableSessionStableKillSwitches 88 ? mApiRegisterSourcesKillSwitch 89 : mFlags.getMeasurementApiRegisterSourcesKillSwitch(); 90 } 91 getMeasurementApiRegisterWebSourceKillSwitch()92 public boolean getMeasurementApiRegisterWebSourceKillSwitch() { 93 return mEnableSessionStableKillSwitches 94 ? mApiRegisterWebSourceKillSwitch 95 : mFlags.getMeasurementApiRegisterWebSourceKillSwitch(); 96 } 97 getMeasurementApiRegisterTriggerKillSwitch()98 public boolean getMeasurementApiRegisterTriggerKillSwitch() { 99 return mEnableSessionStableKillSwitches 100 ? mApiRegisterTriggerKillSwitch 101 : mFlags.getMeasurementApiRegisterTriggerKillSwitch(); 102 } 103 getMeasurementApiRegisterWebTriggerKillSwitch()104 public boolean getMeasurementApiRegisterWebTriggerKillSwitch() { 105 return mEnableSessionStableKillSwitches 106 ? mApiRegisterWebTriggerKillSwitch 107 : mFlags.getMeasurementApiRegisterWebTriggerKillSwitch(); 108 } 109 getMeasurementApiDeleteRegistrationsKillSwitch()110 public boolean getMeasurementApiDeleteRegistrationsKillSwitch() { 111 return mEnableSessionStableKillSwitches 112 ? mApiDeleteRegistrationsKillSwitch 113 : mFlags.getMeasurementApiDeleteRegistrationsKillSwitch(); 114 } 115 getMeasurementApiStatusKillSwitch()116 public boolean getMeasurementApiStatusKillSwitch() { 117 return mEnableSessionStableKillSwitches 118 ? mApiStatusKillSwitch 119 : mFlags.getMeasurementApiStatusKillSwitch(); 120 } 121 getEnforceForegroundStatusForMeasurementRegisterSource()122 public boolean getEnforceForegroundStatusForMeasurementRegisterSource() { 123 return mEnableSessionStableKillSwitches 124 ? mEnforceForegroundStatusForMeasurementRegisterSource 125 : mFlags.getEnforceForegroundStatusForMeasurementRegisterSource(); 126 } 127 getEnforceForegroundStatusForMeasurementRegisterTrigger()128 public boolean getEnforceForegroundStatusForMeasurementRegisterTrigger() { 129 return mEnableSessionStableKillSwitches 130 ? mEnforceForegroundStatusForMeasurementRegisterTrigger 131 : mFlags.getEnforceForegroundStatusForMeasurementRegisterTrigger(); 132 } 133 getEnforceForegroundStatusForMeasurementRegisterSources()134 public boolean getEnforceForegroundStatusForMeasurementRegisterSources() { 135 return mEnableSessionStableKillSwitches 136 ? mEnforceForegroundStatusForMeasurementRegisterSources 137 : mFlags.getEnforceForegroundStatusForMeasurementRegisterSources(); 138 } 139 getEnforceForegroundStatusForMeasurementRegisterWebSource()140 public boolean getEnforceForegroundStatusForMeasurementRegisterWebSource() { 141 return mEnableSessionStableKillSwitches 142 ? mEnforceForegroundStatusForMeasurementRegisterWebSource 143 : mFlags.getEnforceForegroundStatusForMeasurementRegisterWebSource(); 144 } 145 getEnforceForegroundStatusForMeasurementRegisterWebTrigger()146 public boolean getEnforceForegroundStatusForMeasurementRegisterWebTrigger() { 147 return mEnableSessionStableKillSwitches 148 ? mEnforceForegroundStatusForMeasurementRegisterWebTrigger 149 : mFlags.getEnforceForegroundStatusForMeasurementRegisterWebTrigger(); 150 } 151 getEnforceForegroundStatusForMeasurementDeleteRegistrations()152 public boolean getEnforceForegroundStatusForMeasurementDeleteRegistrations() { 153 return mEnableSessionStableKillSwitches 154 ? mEnforceForegroundStatusForMeasurementDeleteRegistrations 155 : mFlags.getEnforceForegroundStatusForMeasurementDeleteRegistrations(); 156 } 157 getMsmtEnableApiStatusAllowListCheck()158 public boolean getMsmtEnableApiStatusAllowListCheck() { 159 return mEnableSessionStableKillSwitches 160 ? mEnableApiStatusAllowListCheck 161 : mFlags.getMsmtEnableApiStatusAllowListCheck(); 162 } 163 getEnforceForegroundStatusForMeasurementStatus()164 public boolean getEnforceForegroundStatusForMeasurementStatus() { 165 return mEnableSessionStableKillSwitches 166 ? mEnforceForegroundStatusForMeasurementStatus 167 : mFlags.getEnforceForegroundStatusForMeasurementStatus(); 168 } 169 getMsmtApiAppAllowList()170 public String getMsmtApiAppAllowList() { 171 return mEnableSessionStableKillSwitches 172 ? mApiAppAllowList 173 : mFlags.getMsmtApiAppAllowList(); 174 } 175 getMsmtApiAppBlockList()176 public String getMsmtApiAppBlockList() { 177 return mEnableSessionStableKillSwitches 178 ? mApiAppBlockList 179 : mFlags.getMsmtApiAppBlockList(); 180 } 181 getWebContextClientAppAllowList()182 public String getWebContextClientAppAllowList() { 183 return mEnableSessionStableKillSwitches 184 ? mWebContextClientAppAllowList 185 : mFlags.getWebContextClientAppAllowList(); 186 } 187 getEnableMsmtRegisterSourcePackageDenyList()188 public boolean getEnableMsmtRegisterSourcePackageDenyList() { 189 return mEnableSessionStableKillSwitches 190 ? mEnableMsmtRegisterSourcePackageDenyList 191 : mFlags.getEnableMsmtRegisterSourcePackageDenyList(); 192 } 193 getMeasurementEnablePackageNameUidCheck()194 public boolean getMeasurementEnablePackageNameUidCheck() { 195 return mEnableSessionStableKillSwitches 196 ? mMeasurementEnablePackageNameUidCheck 197 : mFlags.getMeasurementEnablePackageNameUidCheck(); 198 } 199 } 200