/* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.managedprovisioning.provisioning; import static android.app.admin.DevicePolicyManager.FLAG_SUPPORTED_MODES_PERSONALLY_OWNED; import android.app.Activity; import android.content.Context; import android.view.View; import android.widget.TextView; import com.android.managedprovisioning.R; import com.android.managedprovisioning.common.AccessibilityContextMenuMaker; import com.android.managedprovisioning.common.InitializeLayoutConsumerHandler; import com.android.managedprovisioning.common.Utils; import com.android.managedprovisioning.model.CustomizationParams; import com.android.managedprovisioning.model.ProvisioningParams; import com.google.android.setupdesign.GlifLayout; import com.google.auto.value.AutoValue; @AutoValue abstract class LandingActivityBridgeImpl implements LandingActivityBridge { abstract Utils getUtils(); abstract ProvisioningParams getParams(); abstract LandingActivityBridgeCallbacks getBridgeCallbacks(); abstract AccessibilityContextMenuMaker getAccessibilityContextMenuMaker(); abstract InitializeLayoutConsumerHandler getInitializeLayoutParamsConsumer(); @Override public void initiateUi(Activity activity) { int headerResId = R.string.brand_screen_header; int titleResId = R.string.setup_device_progress; if (shouldShowAccountManagementDisclaimer( getParams().initiatorRequestedProvisioningModes, getUtils())) { headerResId = R.string.account_management_disclaimer_header; } CustomizationParams customizationParams = CustomizationParams.createInstance(getParams(), activity, getUtils()); getInitializeLayoutParamsConsumer() .initializeLayoutParams(R.layout.landing_screen, headerResId, customizationParams); activity.setTitle(titleResId); setupSubtitleText(activity, getParams(), customizationParams); GlifLayout layout = activity.findViewById(R.id.setup_wizard_layout); Utils.addNextButton(layout, v -> getBridgeCallbacks().onNextButtonClicked()); } private void setupSubtitleText(Activity activity, ProvisioningParams params, CustomizationParams customizationParams) { TextView info = activity.findViewById(R.id.sud_layout_subtitle); info.setVisibility(View.VISIBLE); if (shouldShowAccountManagementDisclaimer( params.initiatorRequestedProvisioningModes, getUtils())) { info.setText(R.string.account_management_disclaimer_subheader); } else { handleSupportUrl(activity, customizationParams, info, getUtils()); } } private boolean shouldShowAccountManagementDisclaimer(int provisioningModes, Utils utils) { return utils.containsBinaryFlags(provisioningModes, FLAG_SUPPORTED_MODES_PERSONALLY_OWNED); } private void handleSupportUrl( Context context, CustomizationParams customizationParams, TextView info, Utils utils) { String deviceProvider = context.getString(R.string.organization_admin); String contactDeviceProvider = context.getString(R.string.contact_device_provider, deviceProvider); utils.handleSupportUrl( context, customizationParams, getAccessibilityContextMenuMaker(), info, deviceProvider, contactDeviceProvider, intent -> getBridgeCallbacks().onContactYourItAdminClicked(intent)); } static Builder builder() { return new AutoValue_LandingActivityBridgeImpl.Builder(); } @AutoValue.Builder abstract static class Builder { abstract Builder setUtils(Utils utils); abstract Builder setParams(ProvisioningParams params); abstract Builder setInitializeLayoutParamsConsumer( InitializeLayoutConsumerHandler initializeLayoutParamsConsumer); abstract Builder setBridgeCallbacks(LandingActivityBridgeCallbacks callbacks); abstract Builder setAccessibilityContextMenuMaker( AccessibilityContextMenuMaker accessibilityContextMenuMaker); abstract LandingActivityBridgeImpl build(); } }