blob: fe4d991d82dee5f10807c637771e6b65a716a888 [file]
/*
* Copyright 2019, 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 android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.android.internal.annotations.VisibleForTesting;
import com.android.managedprovisioning.ManagedProvisioningScreens;
import com.android.managedprovisioning.common.AccessibilityContextMenuMaker;
import com.android.managedprovisioning.common.SettingsFacade;
import com.android.managedprovisioning.common.SetupGlifLayoutActivity;
import com.android.managedprovisioning.common.ThemeHelper;
import com.android.managedprovisioning.common.ThemeHelper.DefaultNightModeChecker;
import com.android.managedprovisioning.common.ThemeHelper.DefaultSetupWizardBridge;
import com.android.managedprovisioning.common.Utils;
import com.android.managedprovisioning.model.ProvisioningParams;
import com.google.android.setupcompat.util.WizardManagerHelper;
/**
* The first activity shown during provisioning.
*/
public class LandingActivity extends SetupGlifLayoutActivity {
private static final int ADMIN_INTEGRATED_FLOW_PREPARE_REQUEST_CODE = 1;
private final AccessibilityContextMenuMaker mContextMenuMaker;
private LandingActivityBridge mBridge;
private ProvisioningParams mParams;
public LandingActivity() {
this(new Utils(), /* contextMenuMaker */ null, new SettingsFacade(),
new ThemeHelper(new DefaultNightModeChecker(), new DefaultSetupWizardBridge()));
}
@VisibleForTesting
LandingActivity(Utils utils, AccessibilityContextMenuMaker contextMenuMaker,
SettingsFacade settingsFacade, ThemeHelper themeHelper) {
super(utils, settingsFacade, themeHelper);
mContextMenuMaker = contextMenuMaker != null
? contextMenuMaker
: new AccessibilityContextMenuMaker(this);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mParams = getIntent().getParcelableExtra(ProvisioningParams.EXTRA_PROVISIONING_PARAMS);
mBridge = createBridge();
mBridge.initiateUi(this);
}
protected LandingActivityBridge createBridge() {
return LandingActivityBridgeImpl.builder()
.setBridgeCallbacks(createBridgeCallbacks())
.setParams(mParams)
.setInitializeLayoutParamsConsumer(LandingActivity.this::initializeLayoutParams)
.setUtils(mUtils)
.setAccessibilityContextMenuMaker(mContextMenuMaker)
.build();
}
private LandingActivityBridgeCallbacks createBridgeCallbacks() {
return new LandingActivityBridgeCallbacks() {
@Override
public void onNextButtonClicked() {
LandingActivity.this.onNextButtonClicked();
}
@Override
public void onContactYourItAdminClicked(Intent webIntent) {
getTransitionHelper().startActivityWithTransition(
LandingActivity.this, webIntent);
}
};
}
private void onNextButtonClicked() {
if (AdminIntegratedFlowPrepareActivity
.shouldRunPrepareActivity(mUtils, this, mParams)) {
Intent intent = new Intent(this,
getActivityForScreen(ManagedProvisioningScreens.ADMIN_INTEGRATED_PREPARE));
WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent);
intent.putExtra(ProvisioningParams.EXTRA_PROVISIONING_PARAMS, mParams);
getTransitionHelper().startActivityForResultWithTransition(
this, intent, ADMIN_INTEGRATED_FLOW_PREPARE_REQUEST_CODE);
} else {
setResult(Activity.RESULT_OK);
getTransitionHelper().finishActivity(this);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ADMIN_INTEGRATED_FLOW_PREPARE_REQUEST_CODE) {
setResult(resultCode);
getTransitionHelper().finishActivity(this);
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
}