1 /* 2 * Copyright (C) 2017 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.server.backup.params; 18 19 import android.annotation.Nullable; 20 import android.app.backup.IBackupManagerMonitor; 21 import android.app.backup.IRestoreObserver; 22 import android.content.pm.PackageInfo; 23 24 import com.android.server.backup.internal.OnTaskFinishedListener; 25 import com.android.server.backup.transport.TransportClient; 26 import com.android.server.backup.utils.BackupEligibilityRules; 27 28 import java.util.Map; 29 import java.util.Set; 30 31 public class RestoreParams { 32 public final TransportClient transportClient; 33 public final IRestoreObserver observer; 34 public final IBackupManagerMonitor monitor; 35 public final long token; 36 @Nullable public final PackageInfo packageInfo; 37 public final int pmToken; // in post-install restore, the PM's token for this transaction 38 public final boolean isSystemRestore; 39 @Nullable public final String[] filterSet; 40 public final OnTaskFinishedListener listener; 41 public final BackupEligibilityRules backupEligibilityRules; 42 43 /** 44 * No kill after restore. 45 */ createForSinglePackage( TransportClient transportClient, IRestoreObserver observer, IBackupManagerMonitor monitor, long token, PackageInfo packageInfo, OnTaskFinishedListener listener, BackupEligibilityRules eligibilityRules)46 public static RestoreParams createForSinglePackage( 47 TransportClient transportClient, 48 IRestoreObserver observer, 49 IBackupManagerMonitor monitor, 50 long token, 51 PackageInfo packageInfo, 52 OnTaskFinishedListener listener, 53 BackupEligibilityRules eligibilityRules) { 54 return new RestoreParams( 55 transportClient, 56 observer, 57 monitor, 58 token, 59 packageInfo, 60 /* pmToken */ 0, 61 /* isSystemRestore */ false, 62 /* filterSet */ null, 63 listener, 64 eligibilityRules); 65 } 66 67 /** 68 * Kill after restore. 69 */ createForRestoreAtInstall( TransportClient transportClient, IRestoreObserver observer, IBackupManagerMonitor monitor, long token, String packageName, int pmToken, OnTaskFinishedListener listener, BackupEligibilityRules backupEligibilityRules)70 public static RestoreParams createForRestoreAtInstall( 71 TransportClient transportClient, 72 IRestoreObserver observer, 73 IBackupManagerMonitor monitor, 74 long token, 75 String packageName, 76 int pmToken, 77 OnTaskFinishedListener listener, 78 BackupEligibilityRules backupEligibilityRules) { 79 String[] filterSet = {packageName}; 80 return new RestoreParams( 81 transportClient, 82 observer, 83 monitor, 84 token, 85 /* packageInfo */ null, 86 pmToken, 87 /* isSystemRestore */ false, 88 filterSet, 89 listener, 90 backupEligibilityRules); 91 } 92 93 /** 94 * This is the form that Setup Wizard or similar restore UXes use. 95 */ createForRestoreAll( TransportClient transportClient, IRestoreObserver observer, IBackupManagerMonitor monitor, long token, OnTaskFinishedListener listener, BackupEligibilityRules backupEligibilityRules)96 public static RestoreParams createForRestoreAll( 97 TransportClient transportClient, 98 IRestoreObserver observer, 99 IBackupManagerMonitor monitor, 100 long token, 101 OnTaskFinishedListener listener, 102 BackupEligibilityRules backupEligibilityRules) { 103 return new RestoreParams( 104 transportClient, 105 observer, 106 monitor, 107 token, 108 /* packageInfo */ null, 109 /* pmToken */ 0, 110 /* isSystemRestore */ true, 111 /* filterSet */ null, 112 listener, 113 backupEligibilityRules); 114 } 115 116 /** 117 * Caller specifies whether is considered a system-level restore. 118 */ createForRestorePackages( TransportClient transportClient, IRestoreObserver observer, IBackupManagerMonitor monitor, long token, String[] filterSet, boolean isSystemRestore, OnTaskFinishedListener listener, BackupEligibilityRules backupEligibilityRules)119 public static RestoreParams createForRestorePackages( 120 TransportClient transportClient, 121 IRestoreObserver observer, 122 IBackupManagerMonitor monitor, 123 long token, 124 String[] filterSet, 125 boolean isSystemRestore, 126 OnTaskFinishedListener listener, 127 BackupEligibilityRules backupEligibilityRules) { 128 return new RestoreParams( 129 transportClient, 130 observer, 131 monitor, 132 token, 133 /* packageInfo */ null, 134 /* pmToken */ 0, 135 isSystemRestore, 136 filterSet, 137 listener, 138 backupEligibilityRules); 139 } 140 RestoreParams( TransportClient transportClient, IRestoreObserver observer, IBackupManagerMonitor monitor, long token, @Nullable PackageInfo packageInfo, int pmToken, boolean isSystemRestore, @Nullable String[] filterSet, OnTaskFinishedListener listener, BackupEligibilityRules backupEligibilityRules)141 private RestoreParams( 142 TransportClient transportClient, 143 IRestoreObserver observer, 144 IBackupManagerMonitor monitor, 145 long token, 146 @Nullable PackageInfo packageInfo, 147 int pmToken, 148 boolean isSystemRestore, 149 @Nullable String[] filterSet, 150 OnTaskFinishedListener listener, 151 BackupEligibilityRules backupEligibilityRules) { 152 this.transportClient = transportClient; 153 this.observer = observer; 154 this.monitor = monitor; 155 this.token = token; 156 this.packageInfo = packageInfo; 157 this.pmToken = pmToken; 158 this.isSystemRestore = isSystemRestore; 159 this.filterSet = filterSet; 160 this.listener = listener; 161 this.backupEligibilityRules = backupEligibilityRules; 162 } 163 } 164