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 com.android.managedprovisioning.networkconnection; 18 19 import static java.util.Objects.requireNonNull; 20 21 import android.content.Context; 22 23 import com.android.managedprovisioning.R; 24 import com.android.managedprovisioning.common.SettingsFacade; 25 import com.android.managedprovisioning.common.Utils; 26 import com.android.managedprovisioning.model.ProvisioningParams; 27 import com.android.managedprovisioning.provisioning.AbstractProvisioningController; 28 import com.android.managedprovisioning.provisioning.ProvisioningControllerCallback; 29 import com.android.managedprovisioning.task.AbstractProvisioningTask; 30 import com.android.managedprovisioning.task.AddWifiNetworkTask; 31 import com.android.managedprovisioning.task.TaskFactory; 32 33 /** 34 * Controller which establishes network connection. 35 */ 36 public final class EstablishNetworkConnectionController extends AbstractProvisioningController { 37 38 private final Utils mUtils; 39 private final SettingsFacade mSettingsFacade; 40 private final TaskFactory mTaskFactory; 41 42 /** 43 * Instantiates a new {@link EstablishNetworkConnectionController} instance and creates the 44 * relevant tasks. 45 * 46 * @return the newly created instance 47 */ createInstance( Context context, ProvisioningParams params, int userId, ProvisioningControllerCallback callback, Utils utils, SettingsFacade settingsFacade, TaskFactory taskFactory)48 public static EstablishNetworkConnectionController createInstance( 49 Context context, 50 ProvisioningParams params, 51 int userId, 52 ProvisioningControllerCallback callback, 53 Utils utils, 54 SettingsFacade settingsFacade, 55 TaskFactory taskFactory) { 56 EstablishNetworkConnectionController controller = 57 new EstablishNetworkConnectionController(context, params, userId, callback, 58 utils, settingsFacade, taskFactory); 59 controller.setUpTasks(); 60 return controller; 61 } 62 EstablishNetworkConnectionController(Context context, ProvisioningParams params, int userId, ProvisioningControllerCallback callback, Utils utils, SettingsFacade settingsFacade, TaskFactory taskFactory)63 private EstablishNetworkConnectionController(Context context, 64 ProvisioningParams params, int userId, 65 ProvisioningControllerCallback callback, 66 Utils utils, 67 SettingsFacade settingsFacade, 68 TaskFactory taskFactory) { 69 super(context, params, userId, callback); 70 mUtils = requireNonNull(utils); 71 mSettingsFacade = requireNonNull(settingsFacade); 72 mTaskFactory = requireNonNull(taskFactory); 73 } 74 75 @Override setUpTasks()76 protected void setUpTasks() { 77 if (mParams.wifiInfo != null) { 78 addTasks(mTaskFactory.createAddWifiNetworkTask(mContext, mParams, this)); 79 } else if (mParams.useMobileData) { 80 addTasks(mTaskFactory.createConnectMobileNetworkTask(mContext, mParams, this)); 81 } 82 } 83 84 @Override getErrorTitle()85 protected int getErrorTitle() { 86 return R.string.cant_set_up_device; 87 } 88 89 @Override getErrorMsgId(AbstractProvisioningTask task, int errorCode)90 protected String getErrorMsgId(AbstractProvisioningTask task, int errorCode) { 91 if (task instanceof AddWifiNetworkTask) { 92 return mContext.getString(R.string.error_wifi); 93 } 94 return mContext.getString(R.string.cant_set_up_device); 95 } 96 97 @Override getRequireFactoryReset(AbstractProvisioningTask task, int errorCode)98 protected boolean getRequireFactoryReset(AbstractProvisioningTask task, int errorCode) { 99 // No irreversible action was done since this controller only handles network connection. 100 // No need to factory reset. 101 return false; 102 } 103 } 104