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 package com.android.managedprovisioning.provisioning; 17 18 import android.annotation.Nullable; 19 import android.app.Activity; 20 import android.content.Intent; 21 import android.os.Bundle; 22 23 import com.android.internal.annotations.VisibleForTesting; 24 import com.android.managedprovisioning.R; 25 import com.android.managedprovisioning.common.AccessibilityContextMenuMaker; 26 import com.android.managedprovisioning.common.CarSetupWizardLayoutHelper; 27 import com.android.managedprovisioning.common.SettingsFacade; 28 import com.android.managedprovisioning.common.ThemeHelper; 29 import com.android.managedprovisioning.common.ThemeHelper.DefaultNightModeChecker; 30 import com.android.managedprovisioning.common.ThemeHelper.DefaultSetupWizardBridge; 31 import com.android.managedprovisioning.common.Utils; 32 import com.android.managedprovisioning.model.ProvisioningParams; 33 34 /** 35 * The first activity shown during provisioning. 36 */ 37 public final class CarLandingActivity extends LandingActivity { 38 39 private final AccessibilityContextMenuMaker mContextMenuMaker; 40 private ProvisioningParams mParams; 41 private CarSetupWizardLayoutHelper mLayoutHelper; 42 CarLandingActivity()43 public CarLandingActivity() { 44 this(new Utils(), /* contextMenuMaker= */ null, new SettingsFacade(), 45 new ThemeHelper(new DefaultNightModeChecker(), new DefaultSetupWizardBridge())); 46 } 47 48 @VisibleForTesting CarLandingActivity(Utils utils, AccessibilityContextMenuMaker contextMenuMaker, SettingsFacade settingsFacade, ThemeHelper themeHelper)49 CarLandingActivity(Utils utils, AccessibilityContextMenuMaker contextMenuMaker, 50 SettingsFacade settingsFacade, ThemeHelper themeHelper) { 51 super(utils, contextMenuMaker, settingsFacade, themeHelper); 52 mContextMenuMaker = contextMenuMaker != null 53 ? contextMenuMaker 54 : new AccessibilityContextMenuMaker(this); 55 } 56 57 @Override onCreate(Bundle savedInstanceState)58 protected void onCreate(Bundle savedInstanceState) { 59 mParams = getIntent().getParcelableExtra(ProvisioningParams.EXTRA_PROVISIONING_PARAMS); 60 mLayoutHelper = new CarSetupWizardLayoutHelper(this); 61 super.onCreate(savedInstanceState); 62 } 63 64 @Override createBridge()65 protected LandingActivityBridge createBridge() { 66 return CarLandingActivityBridgeImpl.builder() 67 .setBridgeCallbacks(createBridgeCallbacks()) 68 .setParams(mParams) 69 .setInitializeLayoutParamsConsumer(CarLandingActivity.this::initializeLayoutParams) 70 .setUtils(mUtils) 71 .setLayoutHelper(mLayoutHelper) 72 .setAccessibilityContextMenuMaker(mContextMenuMaker) 73 .build(); 74 } 75 createBridgeCallbacks()76 private LandingActivityBridgeCallbacks createBridgeCallbacks() { 77 return new LandingActivityBridgeCallbacks() { 78 @Override 79 public void onNextButtonClicked() { 80 CarLandingActivity.this.onNextButtonClicked(); 81 } 82 83 @Override 84 public void onContactYourItAdminClicked(Intent webIntent) { 85 getTransitionHelper().startActivityWithTransition( 86 CarLandingActivity.this, webIntent); 87 } 88 }; 89 } 90 91 // For AAOS, admin integrated should be run by default. Therefore, 92 // ADMIN_INTEGRATED_PREPARE screen will be skipped as compared to on mobile. 93 private void onNextButtonClicked() { 94 setResult(Activity.RESULT_OK); 95 getTransitionHelper().finishActivity(this); 96 } 97 98 /** 99 * Overrides {@code initializeLayoutParams} in SetupGlifLayoutActivity to set layout as 100 * {@code CarSetupWizardLayout} 101 */ 102 @Override 103 protected void initializeLayoutParams( 104 int layoutResourceId, @Nullable Integer headerResourceId) { 105 CarSetupWizardLayoutHelper layoutHelper = mLayoutHelper; 106 layoutHelper.setBaseLayout( 107 /* mainLayoutId= */ layoutResourceId, 108 /* subLayoutId= */ R.layout.empty_layout, 109 /* isDoubleColumnAllowed= */ false); 110 } 111 } 112