1 /* 2 * Copyright 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 androidx.privacysandbox.sdkruntime.core.controller.impl 18 19 import android.os.Bundle 20 import android.os.IBinder 21 import androidx.privacysandbox.sdkruntime.core.AppOwnedSdkSandboxInterfaceCompat 22 import androidx.privacysandbox.sdkruntime.core.SandboxedSdkCompat 23 import androidx.privacysandbox.sdkruntime.core.SdkSandboxClientImportanceListenerCompat 24 import androidx.privacysandbox.sdkruntime.core.activity.SdkSandboxActivityHandlerCompat 25 import androidx.privacysandbox.sdkruntime.core.controller.LoadSdkCallback 26 import androidx.privacysandbox.sdkruntime.core.controller.SdkSandboxControllerCompat 27 import androidx.privacysandbox.sdkruntime.core.internal.ClientFeature 28 import java.util.concurrent.Executor 29 30 /** 31 * Wrapper for client provided implementation of [SdkSandboxControllerCompat]. Checks client version 32 * to determine if method supported. 33 */ 34 internal class LocalImpl( 35 private val implFromClient: SdkSandboxControllerCompat.SandboxControllerImpl, 36 private val clientVersion: Int 37 ) : SdkSandboxControllerCompat.SandboxControllerImpl { 38 loadSdknull39 override fun loadSdk( 40 sdkName: String, 41 params: Bundle, 42 executor: Executor, 43 callback: LoadSdkCallback 44 ) { 45 implFromClient.loadSdk(sdkName, params, executor, callback) 46 } 47 getSandboxedSdksnull48 override fun getSandboxedSdks(): List<SandboxedSdkCompat> { 49 return implFromClient.getSandboxedSdks() 50 } 51 getAppOwnedSdkSandboxInterfacesnull52 override fun getAppOwnedSdkSandboxInterfaces(): List<AppOwnedSdkSandboxInterfaceCompat> { 53 return implFromClient.getAppOwnedSdkSandboxInterfaces() 54 } 55 registerSdkSandboxActivityHandlernull56 override fun registerSdkSandboxActivityHandler( 57 handlerCompat: SdkSandboxActivityHandlerCompat 58 ): IBinder { 59 return implFromClient.registerSdkSandboxActivityHandler(handlerCompat) 60 } 61 unregisterSdkSandboxActivityHandlernull62 override fun unregisterSdkSandboxActivityHandler( 63 handlerCompat: SdkSandboxActivityHandlerCompat 64 ) { 65 implFromClient.unregisterSdkSandboxActivityHandler(handlerCompat) 66 } 67 getClientPackageNamenull68 override fun getClientPackageName(): String { 69 return implFromClient.getClientPackageName() 70 } 71 registerSdkSandboxClientImportanceListenernull72 override fun registerSdkSandboxClientImportanceListener( 73 executor: Executor, 74 listenerCompat: SdkSandboxClientImportanceListenerCompat 75 ) { 76 if (ClientFeature.CLIENT_IMPORTANCE_LISTENER.isAvailable(clientVersion)) { 77 implFromClient.registerSdkSandboxClientImportanceListener(executor, listenerCompat) 78 } 79 } 80 unregisterSdkSandboxClientImportanceListenernull81 override fun unregisterSdkSandboxClientImportanceListener( 82 listenerCompat: SdkSandboxClientImportanceListenerCompat 83 ) { 84 if (ClientFeature.CLIENT_IMPORTANCE_LISTENER.isAvailable(clientVersion)) { 85 implFromClient.unregisterSdkSandboxClientImportanceListener(listenerCompat) 86 } 87 } 88 } 89