1 /*
2  * Copyright 2019, 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.provisioning;
18 
19 import android.content.Context;
20 
21 import com.android.managedprovisioning.R;
22 import com.android.managedprovisioning.model.ProvisioningParams;
23 import com.android.managedprovisioning.task.AbstractProvisioningTask;
24 import com.android.managedprovisioning.task.DeviceOwnerInitializeProvisioningTask;
25 import com.android.managedprovisioning.task.DisallowAddUserTask;
26 import com.android.managedprovisioning.task.SetDeviceOwnerPolicyTask;
27 
28 /**
29  * Controller for financed device provisioning.
30  */
31 // TODO(b/178711424): move any business logic from here into the framework.
32 public final class FinancedDeviceProvisioningController extends AbstractProvisioningController  {
33 
34     /**
35      * Instantiates a new {@link FinancedDeviceProvisioningController} instance and creates the
36      * relevant tasks.
37      *
38      * @return the newly created instance
39      */
createInstance( Context context, ProvisioningParams params, int userId, ProvisioningControllerCallback callback)40     static FinancedDeviceProvisioningController createInstance(
41             Context context,
42             ProvisioningParams params,
43             int userId,
44             ProvisioningControllerCallback callback) {
45         FinancedDeviceProvisioningController controller =
46                 new FinancedDeviceProvisioningController(context, params, userId, callback);
47         controller.setUpTasks();
48         return controller;
49     }
50 
FinancedDeviceProvisioningController( Context context, ProvisioningParams params, int userId, ProvisioningControllerCallback callback)51     private FinancedDeviceProvisioningController(
52             Context context,
53             ProvisioningParams params,
54             int userId,
55             ProvisioningControllerCallback callback) {
56         super(context, params, userId, callback);
57     }
58 
59     @Override
setUpTasks()60     protected void setUpTasks() {
61         addTasks(new DeviceOwnerInitializeProvisioningTask(mContext, mParams, this));
62 
63         addDownloadAndInstallDeviceOwnerPackageTasks();
64 
65         addTasks(
66                 new SetDeviceOwnerPolicyTask(mContext, mParams, this),
67                 new DisallowAddUserTask(mContext, mParams, this));
68     }
69 
70     @Override
getErrorTitle()71     protected int getErrorTitle() {
72         return R.string.something_went_wrong;
73     }
74 
75     @Override
getErrorMsgId(AbstractProvisioningTask task, int errorCode)76     protected int getErrorMsgId(AbstractProvisioningTask task, int errorCode) {
77         return R.string.reset_device;
78     }
79 
80     @Override
getRequireFactoryReset(AbstractProvisioningTask task, int errorCode)81     protected boolean getRequireFactoryReset(AbstractProvisioningTask task, int errorCode) {
82         return true;
83     }
84 }
85