• 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 android.car.extendedapitest;
18 
19 import android.car.Car;
20 import android.car.CarAppFocusManager;
21 import android.car.CarBugreportManager;
22 import android.car.CarInfoManager;
23 import android.car.CarOccupantZoneManager;
24 import android.car.CarProjectionManager;
25 import android.car.CarRemoteDeviceManager;
26 import android.car.admin.CarDevicePolicyManager;
27 import android.car.app.CarActivityManager;
28 import android.car.app.CarDisplayCompatManager;
29 import android.car.cluster.CarInstrumentClusterManager;
30 import android.car.cluster.ClusterHomeManager;
31 import android.car.content.pm.CarPackageManager;
32 import android.car.diagnostic.CarDiagnosticManager;
33 import android.car.drivingstate.CarDrivingStateManager;
34 import android.car.drivingstate.CarUxRestrictionsManager;
35 import android.car.evs.CarEvsManager;
36 import android.car.extendedapitest.testbase.CarLessApiTestBase;
37 import android.car.feature.Flags;
38 import android.car.hardware.CarSensorManager;
39 import android.car.hardware.CarVendorExtensionManager;
40 import android.car.hardware.cabin.CarCabinManager;
41 import android.car.hardware.hvac.CarHvacManager;
42 import android.car.hardware.power.CarPowerManager;
43 import android.car.hardware.property.CarPropertyManager;
44 import android.car.input.CarInputManager;
45 import android.car.media.CarAudioManager;
46 import android.car.media.CarMediaManager;
47 import android.car.navigation.CarNavigationStatusManager;
48 import android.car.occupantawareness.OccupantAwarenessManager;
49 import android.car.occupantconnection.CarOccupantConnectionManager;
50 import android.car.os.CarPerformanceManager;
51 import android.car.storagemonitoring.CarStorageMonitoringManager;
52 import android.car.telemetry.CarTelemetryManager;
53 import android.car.test.CarTestManager;
54 import android.car.user.CarUserManager;
55 import android.car.vms.VmsClientManager;
56 import android.car.vms.VmsSubscriberManager;
57 import android.car.watchdog.CarWatchdogManager;
58 import android.car.wifi.CarWifiManager;
59 
60 import com.android.compatibility.common.util.ApiTest;
61 
62 import org.junit.Test;
63 import org.junit.runner.RunWith;
64 import org.junit.runners.Parameterized;
65 
66 import java.util.ArrayList;
67 import java.util.Arrays;
68 import java.util.List;
69 
70 @RunWith(Parameterized.class)
71 public final class CarGetCarManagerTest extends CarLessApiTestBase {
72 
73     private final Class<?> mCarManagerClass;
74     private final String mCarServiceName;
75 
CarGetCarManagerTest(Class<?> managerClass, String serviceName)76     public CarGetCarManagerTest(Class<?> managerClass, String serviceName) {
77         this.mCarManagerClass = managerClass;
78         this.mCarServiceName = serviceName;
79     }
80 
81     @Parameterized.Parameters
inputParameters()82     public static List<Object[]> inputParameters() {
83         List<Object[]> data = new ArrayList<>(Arrays.asList(new Object[][] {
84             {CarSensorManager.class, Car.SENSOR_SERVICE},
85             {CarInfoManager.class, Car.INFO_SERVICE},
86             {CarAppFocusManager.class, Car.APP_FOCUS_SERVICE},
87             {CarPackageManager.class, Car.PACKAGE_SERVICE},
88             {CarAudioManager.class, Car.AUDIO_SERVICE},
89             {CarNavigationStatusManager.class, Car.CAR_NAVIGATION_SERVICE},
90             {CarOccupantConnectionManager.class, Car.CAR_OCCUPANT_CONNECTION_SERVICE},
91             {CarOccupantZoneManager.class, Car.CAR_OCCUPANT_ZONE_SERVICE},
92             {CarUserManager.class, Car.CAR_USER_SERVICE},
93             {CarRemoteDeviceManager.class, Car.CAR_REMOTE_DEVICE_SERVICE},
94             {CarDevicePolicyManager.class, Car.CAR_DEVICE_POLICY_SERVICE},
95             {CarCabinManager.class, Car.CABIN_SERVICE},
96             {CarDiagnosticManager.class, Car.DIAGNOSTIC_SERVICE},
97             {CarHvacManager.class, Car.HVAC_SERVICE},
98             {CarPowerManager.class, Car.POWER_SERVICE},
99             {CarProjectionManager.class, Car.PROJECTION_SERVICE},
100             {CarPropertyManager.class, Car.PROPERTY_SERVICE},
101             {CarVendorExtensionManager.class, Car.VENDOR_EXTENSION_SERVICE},
102             {VmsClientManager.class, Car.VEHICLE_MAP_SERVICE},
103             {VmsSubscriberManager.class, Car.VMS_SUBSCRIBER_SERVICE},
104             {CarDrivingStateManager.class, Car.CAR_DRIVING_STATE_SERVICE},
105             {CarUxRestrictionsManager.class, Car.CAR_UX_RESTRICTION_SERVICE},
106             {CarMediaManager.class, Car.CAR_MEDIA_SERVICE},
107             {CarBugreportManager.class, Car.CAR_BUGREPORT_SERVICE},
108             {CarStorageMonitoringManager.class, Car.STORAGE_MONITORING_SERVICE},
109             {CarWatchdogManager.class, Car.CAR_WATCHDOG_SERVICE},
110             {CarPerformanceManager.class, Car.CAR_PERFORMANCE_SERVICE},
111             {CarInputManager.class, Car.CAR_INPUT_SERVICE},
112             {ClusterHomeManager.class, Car.CLUSTER_HOME_SERVICE},
113             {CarTestManager.class, Car.TEST_SERVICE},
114             {CarEvsManager.class, Car.CAR_EVS_SERVICE},
115             {CarTelemetryManager.class, Car.CAR_TELEMETRY_SERVICE},
116             {CarInstrumentClusterManager.class, Car.CAR_INSTRUMENT_CLUSTER_SERVICE},
117             {OccupantAwarenessManager.class, Car.OCCUPANT_AWARENESS_SERVICE},
118             {CarActivityManager.class, Car.CAR_ACTIVITY_SERVICE}
119         }));
120 
121         if (Flags.persistApSettings()) {
122             data.add(new Object[]{
123                     CarWifiManager.class, Car.CAR_WIFI_SERVICE
124             });
125         }
126 
127         if (Flags.displayCompatibility()) {
128             data.add(new Object[] {
129                     CarDisplayCompatManager.class, Car.CAR_DISPLAY_COMPAT_SERVICE
130             });
131         }
132 
133         return data;
134     }
135 
136     @Test
137     @ApiTest(apis = {"android.car.Car#getCarManager(String)",
138             "android.car.Car#getCarManager(Class)"})
test_forCarServiceManager()139     public void test_forCarServiceManager() throws Exception {
140         Car car = Car.createCar(mContext);
141 
142         Object carManager = car.getCarManager(mCarServiceName);
143         Object carManager2 = car.getCarManager(mCarServiceName);
144         Object carManagerByClass = car.getCarManager(mCarManagerClass);
145         Object carManagerByClass2 = car.getCarManager(mCarManagerClass);
146 
147         boolean featureEnabled = car.getAllEnabledFeatures().contains(mCarServiceName);
148         if (featureEnabled) {
149             expectWithMessage("first instance by service name: %s", mCarServiceName)
150                     .that(carManager).isNotNull();
151 
152             expectWithMessage("second instance by service name: %s", mCarServiceName)
153                     .that(carManager2).isNotNull();
154             expectWithMessage("second instance by service name: %s", mCarServiceName)
155                     .that(carManager2).isSameInstanceAs(carManager);
156 
157             expectWithMessage("first instance by class: %s", mCarManagerClass.getSimpleName())
158                     .that(carManagerByClass).isNotNull();
159             expectWithMessage("first instance by class: %s", mCarManagerClass.getSimpleName())
160                     .that(carManagerByClass).isSameInstanceAs(carManager);
161 
162             expectWithMessage("second instance by class: %s", mCarManagerClass.getSimpleName())
163                     .that(carManagerByClass2).isNotNull();
164             expectWithMessage("second instance by class: %s", mCarManagerClass.getSimpleName())
165                     .that(carManagerByClass2).isSameInstanceAs(carManager);
166         } else {
167             expectWithMessage("first instance by service name: %s", mCarServiceName)
168                     .that(carManager).isNull();
169             expectWithMessage("second instance by service name: %s", mCarServiceName)
170                     .that(carManager2).isNull();
171 
172             expectWithMessage("first instance by class: %s", mCarManagerClass.getSimpleName())
173                     .that(carManagerByClass).isNull();
174             expectWithMessage("second instance by class: %s", mCarManagerClass.getSimpleName())
175                     .that(carManagerByClass2).isNull();
176         }
177     }
178 }
179