1 /* 2 * Copyright (C) 2021 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.managedprovisioning.preprovisioning; 18 19 import android.annotation.Nullable; 20 21 import androidx.annotation.VisibleForTesting; 22 23 import com.android.managedprovisioning.R; 24 import com.android.managedprovisioning.common.AccessibilityContextMenuMaker; 25 import com.android.managedprovisioning.common.CarSetupWizardLayoutHelper; 26 import com.android.managedprovisioning.common.RoleHolderProvider; 27 import com.android.managedprovisioning.common.RoleHolderUpdaterProvider; 28 import com.android.managedprovisioning.common.SettingsFacade; 29 import com.android.managedprovisioning.common.ThemeHelper; 30 import com.android.managedprovisioning.common.ThemeHelper.DefaultNightModeChecker; 31 import com.android.managedprovisioning.common.ThemeHelper.DefaultSetupWizardBridge; 32 import com.android.managedprovisioning.common.Utils; 33 import com.android.server.utils.Slogf; 34 35 /** 36 * TODO (b/183510678) A temporary implementation for AAOS to override 37 * {@link PreProvisioningActivity} in ManagedProvisioning using inheritance. The long term 38 * solution will be to use composition. 39 */ 40 public final class CarPreProvisioningActivity extends PreProvisioningActivity { 41 42 private static final String TAG = CarPreProvisioningActivity.class.getSimpleName(); 43 CarPreProvisioningActivity()44 public CarPreProvisioningActivity() { 45 this(activity -> 46 new PreProvisioningActivityController(activity, activity), 47 /* AccessibilityContextMenuMaker= */ null, 48 new Utils(), 49 new SettingsFacade(), 50 new ThemeHelper( 51 new DefaultNightModeChecker(), 52 new DefaultSetupWizardBridge())); 53 } 54 55 @VisibleForTesting CarPreProvisioningActivity( ControllerProvider controllerProvider, AccessibilityContextMenuMaker contextMenuMaker, Utils utils, SettingsFacade settingsFacade, ThemeHelper themeHelper)56 public CarPreProvisioningActivity( 57 ControllerProvider controllerProvider, 58 AccessibilityContextMenuMaker contextMenuMaker, Utils utils, 59 SettingsFacade settingsFacade, ThemeHelper themeHelper) { 60 super(controllerProvider, contextMenuMaker, utils, settingsFacade, themeHelper, 61 RoleHolderProvider.DEFAULT, RoleHolderUpdaterProvider.DEFAULT); 62 } 63 64 @Override createBridge()65 protected PreProvisioningActivityBridge createBridge() { 66 Slogf.d(TAG, "createBridge from CarPreProvisioningActivityBridgeImpl.. "); 67 return new CarPreProvisioningActivityBridgeImpl( 68 /* activity= */ this, 69 mUtils, 70 CarPreProvisioningActivity.this::initializeLayoutParams, 71 createBridgeCallbacks()); 72 } 73 74 /** 75 * Overrides {@code initializeLayoutParams} in SetupGlifLayoutActivity to set layout as 76 * {@code CarSetupWizardLayout}. 77 */ 78 @Override initializeLayoutParams( int layoutResourceId, @Nullable Integer headerResourceId)79 protected void initializeLayoutParams( 80 int layoutResourceId, @Nullable Integer headerResourceId) { 81 CarSetupWizardLayoutHelper layoutHelper = new CarSetupWizardLayoutHelper(this); 82 layoutHelper.setBaseLayout( 83 /* mainLayoutId= */ layoutResourceId, 84 /* subLayoutId= */ R.layout.preprovision_layout, 85 /* isDoubleColumnAllowed= */ true); 86 } 87 } 88